Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
sincos.h
Go to the documentation of this file.
1 // This file's extension implies that it's C, but it's really -*- C++ -*-.
2 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
13 #ifndef CXXUTILS_SINCOS_H
14 #define CXXUTILS_SINCOS_H
15 
16 
17 #include <cmath>
18 
19 
20 namespace CxxUtils {
21 
22 
38 struct sincos
39 {
41  sincos (double x)
42 #if defined(__USE_GNU)
43  // Version using the GNU sincos() function.
44  { ::sincos(x, &sn, &cs); }
45 #else
46  // Generic version.
47  : sn (std::sin (x)), cs (std::cos (x)) {}
48 #endif
49 
51  double sn;
52 
54  double cs;
55 
57  double apply (double a, double b) const { return a*sn + b*cs; }
58 
60  double apply2 (double a, double b, double c) const
61  { return a*sn*sn + b*sn*cs + c*cs*cs; }
62 };
63 
64 
65 } // namespace CxxUtils
66 
67 
68 #endif //not CXXUTILS_SINCOS_H
CxxUtils::sincos::apply
double apply(double a, double b) const
Definition: sincos.h:57
CxxUtils::sincos::sincos
sincos(double x)
Calculate sine and cosine of x.
Definition: sincos.h:41
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
x
#define x
CxxUtils::sincos::cs
double cs
Definition: sincos.h:54
CxxUtils
Definition: aligned_vector.h:29
CxxUtils::sincos::apply2
double apply2(double a, double b, double c) const
Definition: sincos.h:60
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CxxUtils::sincos::sn
double sn
Definition: sincos.h:51
a
TList * a
Definition: liststreamerinfos.cxx:10
CxxUtils::sincos
Helper to simultaneously calculate sin and cos of the same angle.
Definition: sincos.h:39
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
python.compressB64.c
def c
Definition: compressB64.py:93