CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Functions | Variables
sicif.h File Reference
#include "vdt/vdtMath.h"

Go to the source code of this file.

Functions

float p1evlf (float xx, const float *coef, int N)
 
float polevlf (float xx, const float *coef, int N)
 
int sicif (float xx, float &si, float &ci)
 

Variables

static const float CD []
 
static const float CN []
 
static const float FD4 []
 
static const float FD8 []
 
static const float FN4 []
 
static const float FN8 []
 
static const float GD4 []
 
static const float GD8 []
 
static const float GN4 []
 
static const float GN8 []
 
static const float SD []
 
static const float SN []
 

Function Documentation

float p1evlf ( float  xx,
const float *  coef,
int  N 
)
inline

Definition at line 202 of file sicif.h.

References mps_fire::i, AlCaHLTBitMon_ParallelJobs::p, and x.

Referenced by sicif().

202  {
203  float ans, x;
204  const float *p;
205  int i;
206 
207  x = xx;
208  p = coef;
209  ans = x + *p++;
210  i = N - 1;
211 
212  do
213  ans = ans * x + *p++;
214  while (--i);
215 
216  return (ans);
217 }
#define N
Definition: blowfish.cc:9
float x
float polevlf ( float  xx,
const float *  coef,
int  N 
)
inline

Definition at line 180 of file sicif.h.

References mps_fire::i, N, AlCaHLTBitMon_ParallelJobs::p, and x.

Referenced by sicif().

180  {
181  float ans, x;
182  const float *p;
183  int i;
184 
185  x = xx;
186  p = coef;
187  ans = *p++;
188 
189  i = N;
190  do
191  ans = ans * x + *p++;
192  while (--i);
193 
194  return (ans);
195 }
#define N
Definition: blowfish.cc:9
float x
int sicif ( float  xx,
float &  si,
float &  ci 
)
inline

Definition at line 219 of file sicif.h.

References c, CD, CN, validate-o2o-wbm::f, myMath::fast_logf(), FD4, FD8, FN4, FN8, g, GD4, GD8, GN4, GN8, p1evlf(), polevlf(), alignCSCRings::s, SD, jetcorrextractor::sign(), SN, x, and detailsBasic3DVector::z.

Referenced by VVIObjFDetails::sincosint().

219  {
220  const float MAXNUMF = 1.7014117331926442990585209174225846272e38;
221  const float PIO2F = 1.5707963267948966192;
222  // const float MACHEPF = 5.9604644775390625E-8;
223  const float EUL = 0.57721566490153286061;
224 
225  float x, z, c, s, f, g;
226  int sign;
227 
228  x = xx;
229  if (x < 0.0f) {
230  sign = -1;
231  x = -x;
232  } else
233  sign = 0;
234 
235  if (x == 0.0f) {
236  si = 0.0;
237  ci = -MAXNUMF;
238  return (0);
239  }
240 
241  if (x > 1.0e9f) {
242  float su, cu;
243  vdt::fast_sincosf(x, su, cu);
244  si = PIO2F - cu / x;
245  ci = su / x;
246  return (0);
247  }
248 
249  if (x > 4.0f)
250  goto asympt;
251 
252  z = x * x;
253  s = x * polevlf(z, SN, 5) / polevlf(z, SD, 5);
254  c = z * polevlf(z, CN, 5) / polevlf(z, CD, 5);
255 
256  if (sign)
257  s = -s;
258  si = s;
259  ci = EUL + vdt::fast_logf(x) + c; /* real part if x < 0 */
260  return (0);
261 
262  /* The auxiliary functions are:
263  *
264  *
265  * *si = *si - PIO2;
266  * c = cos(x);
267  * s = sin(x);
268  *
269  * t = *ci * s - *si * c;
270  * a = *ci * c + *si * s;
271  *
272  * *si = t;
273  * *ci = -a;
274  */
275 
276 asympt:
277  vdt::fast_sincosf(x, s, c);
278  z = 1.0f / (x * x);
279  if (x < 8.0f) {
280  f = polevlf(z, FN4, 6) / (x * p1evlf(z, FD4, 7));
281  g = z * polevlf(z, GN4, 7) / p1evlf(z, GD4, 7);
282  } else {
283  f = polevlf(z, FN8, 8) / (x * p1evlf(z, FD8, 8));
284  g = z * polevlf(z, GN8, 8) / p1evlf(z, GD8, 9);
285  }
286  si = PIO2F - f * c - g * s;
287  if (sign)
288  si = -(si);
289  ci = f * s - g * c;
290 
291  return (0);
292 }
const edm::EventSetup & c
double sign(double x)
static const float FN8[]
Definition: sicif.h:112
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
float float float z
static const float GD8[]
Definition: sicif.h:167
static const float SN[]
Definition: sicif.h:58
static const float SD[]
Definition: sicif.h:66
static const float FN4[]
Definition: sicif.h:92
float polevlf(float xx, const float *coef, int N)
Definition: sicif.h:180
static const float CD[]
Definition: sicif.h:83
static const float GD4[]
Definition: sicif.h:145
static const float GN8[]
Definition: sicif.h:156
static const float CN[]
Definition: sicif.h:75
static const float FD4[]
Definition: sicif.h:101
float x
static const float GN4[]
Definition: sicif.h:135
float fast_logf(float x)
float p1evlf(float xx, const float *coef, int N)
Definition: sicif.h:202
static const float FD8[]
Definition: sicif.h:123

Variable Documentation

const float CD[]
static
Initial value:
= {
4.07746040061880559506E-12,
3.06780997581887812692E-9,
1.23210355685883423679E-6,
3.17442024775032769882E-4,
5.10028056236446052392E-2,
4.00000000000000000080E0,
}

Definition at line 83 of file sicif.h.

Referenced by sicif().

const float CN[]
static
Initial value:
= {
2.02524002389102268789E-11,
-1.35249504915790756375E-8,
3.59325051419993077021E-6,
-4.74007206873407909465E-4,
2.89159652607555242092E-2,
-1.00000000000000000080E0,
}

Definition at line 75 of file sicif.h.

Referenced by EcalLaserAnalyzerYousi::analyze(), and sicif().

const float FD4[]
static
Initial value:
= {
8.16496634205391016773E0,
7.30828822505564552187E0,
1.86792257950184183883E0,
1.78792052963149907262E-1,
7.01710668322789753610E-3,
1.10034357153915731354E-4,
5.48900252756255700982E-7,
}

Definition at line 101 of file sicif.h.

Referenced by sicif().

const float FD8[]
static
Initial value:
= {
9.17463611873684053703E-1,
1.78685545332074536321E-1,
1.22253594771971293032E-2,
3.58696481881851580297E-4,
4.92435064317881464393E-6,
3.21956939101046018377E-8,
9.43720590350276732376E-11,
9.70507110881952025725E-14,
}

Definition at line 123 of file sicif.h.

Referenced by sicif().

const float FN4[]
static
Initial value:
= {
4.23612862892216586994E0,
5.45937717161812843388E0,
1.62083287701538329132E0,
1.67006611831323023771E-1,
6.81020132472518137426E-3,
1.08936580650328664411E-4,
5.48900223421373614008E-7,
}

Definition at line 92 of file sicif.h.

Referenced by sicif().

const float FN8[]
static
Initial value:
= {
4.55880873470465315206E-1,
7.13715274100146711374E-1,
1.60300158222319456320E-1,
1.16064229408124407915E-2,
3.49556442447859055605E-4,
4.86215430826454749482E-6,
3.20092790091004902806E-8,
9.41779576128512936592E-11,
9.70507110881952024631E-14,
}

Definition at line 112 of file sicif.h.

Referenced by sicif().

const float GD4[]
static
Initial value:
= {
1.64402202413355338886E0,
6.66296701268987968381E-1,
9.88771761277688796203E-2,
6.22396345441768420760E-3,
1.73221081474177119497E-4,
2.02659182086343991969E-6,
7.82579218933534490868E-9,
}

Definition at line 145 of file sicif.h.

Referenced by sicif().

const float GD8[]
static
Initial value:
= {
1.68548898811011640017E0,
4.87852258695304967486E-1,
4.67913194259625806320E-2,
1.90284426674399523638E-3,
3.68475504442561108162E-5,
3.57043223443740838771E-7,
1.72693748966316146736E-9,
3.87830166023954706752E-12,
3.14040098946363335242E-15,
}

Definition at line 167 of file sicif.h.

Referenced by sicif().

const float GN4[]
static
Initial value:
= {
8.71001698973114191777E-2,
6.11379109952219284151E-1,
3.97180296392337498885E-1,
7.48527737628469092119E-2,
5.38868681462177273157E-3,
1.61999794598934024525E-4,
1.97963874140963632189E-6,
7.82579040744090311069E-9,
}

Definition at line 135 of file sicif.h.

Referenced by sicif().

const float GN8[]
static
Initial value:
= {
6.97359953443276214934E-1,
3.30410979305632063225E-1,
3.84878767649974295920E-2,
1.71718239052347903558E-3,
3.48941165502279436777E-5,
3.47131167084116673800E-7,
1.70404452782044526189E-9,
3.85945925430276600453E-12,
3.14040098946363334640E-15,
}

Definition at line 156 of file sicif.h.

Referenced by sicif().

const float SD[]
static
Initial value:
= {
2.03269266195951942049E-12,
1.27997891179943299903E-9,
4.41827842801218905784E-7,
9.96412122043875552487E-5,
1.42085239326149893930E-2,
9.99999999999999996984E-1,
}

Definition at line 66 of file sicif.h.

Referenced by sicif().

const float SN[]
static
Initial value:
= {
-8.39167827910303881427E-11,
4.62591714427012837309E-8,
-9.75759303843632795789E-6,
9.76945438170435310816E-4,
-4.13470316229406538752E-2,
1.00000000000000000302E0,
}

Definition at line 58 of file sicif.h.

Referenced by sicif().