1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include "DataFormats/Math/interface/FastMath.h"
namespace fastmath_details {
float atanbuf_[257 * 2];
double datanbuf_[513 * 2];
namespace {
// ====================================================================
// arctan initialization
// =====================================================================
struct Initatan {
Initatan() {
unsigned int ind;
for (ind = 0; ind <= 256; ind++) {
double v = ind / 256.0;
double asinv = ::asin(v);
atanbuf_[ind * 2] = ::cos(asinv);
atanbuf_[ind * 2 + 1] = asinv;
}
for (ind = 0; ind <= 512; ind++) {
double v = ind / 512.0;
double asinv = ::asin(v);
datanbuf_[ind * 2] = ::cos(asinv);
datanbuf_[ind * 2 + 1] = asinv;
}
}
};
Initatan initAtan;
} // namespace
} // namespace fastmath_details
|