OLD | NEW |
1 // The following is adapted from fdlibm (http://www.netlib.org/fdlibm). | 1 // The following is adapted from fdlibm (http://www.netlib.org/fdlibm). |
2 // | 2 // |
3 // ==================================================== | 3 // ==================================================== |
4 // Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. | 4 // Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. |
5 // | 5 // |
6 // Developed at SunSoft, a Sun Microsystems, Inc. business. | 6 // Developed at SunSoft, a Sun Microsystems, Inc. business. |
7 // Permission to use, copy, modify, and distribute this | 7 // Permission to use, copy, modify, and distribute this |
8 // software is freely granted, provided that this notice | 8 // software is freely granted, provided that this notice |
9 // is preserved. | 9 // is preserved. |
10 // ==================================================== | 10 // ==================================================== |
11 // | 11 // |
12 // The original source code covered by the above license above has been | 12 // The original source code covered by the above license above has been |
13 // modified significantly by Google Inc. | 13 // modified significantly by Google Inc. |
14 // Copyright 2014 the V8 project authors. All rights reserved. | 14 // Copyright 2014 the V8 project authors. All rights reserved. |
15 | 15 |
16 #include "src/v8.h" | 16 #include "src/v8.h" |
17 | 17 |
18 #include "src/double.h" | 18 #include "src/double.h" |
19 #include "third_party/fdlibm/fdlibm.h" | 19 #include "third_party/fdlibm/fdlibm.h" |
20 | 20 |
21 | 21 |
22 namespace v8 { | 22 namespace v8 { |
23 namespace fdlibm { | 23 namespace fdlibm { |
24 | 24 |
25 #ifdef _MSC_VER | 25 #ifdef _MSC_VER |
26 inline double scalbn(double x, int y) { return _scalb(x, y); } | 26 inline double scalbn(double x, int y) { return _scalb(x, y); } |
27 #endif // _MSC_VER | 27 #endif // _MSC_VER |
28 | 28 |
29 const double TrigonometricConstants::constants[] = { | 29 const double MathConstants::constants[] = { |
30 6.36619772367581382433e-01, // invpio2 0 | 30 6.36619772367581382433e-01, // invpio2 0 |
31 1.57079632673412561417e+00, // pio2_1 1 | 31 1.57079632673412561417e+00, // pio2_1 1 |
32 6.07710050650619224932e-11, // pio2_1t 2 | 32 6.07710050650619224932e-11, // pio2_1t 2 |
33 6.07710050630396597660e-11, // pio2_2 3 | 33 6.07710050630396597660e-11, // pio2_2 3 |
34 2.02226624879595063154e-21, // pio2_2t 4 | 34 2.02226624879595063154e-21, // pio2_2t 4 |
35 2.02226624871116645580e-21, // pio2_3 5 | 35 2.02226624871116645580e-21, // pio2_3 5 |
36 8.47842766036889956997e-32, // pio2_3t 6 | 36 8.47842766036889956997e-32, // pio2_3t 6 |
37 -1.66666666666666324348e-01, // S1 7 | 37 -1.66666666666666324348e-01, // S1 7 |
38 8.33333333332248946124e-03, // 8 | 38 8.33333333332248946124e-03, // 8 |
39 -1.98412698298579493134e-04, // 9 | 39 -1.98412698298579493134e-04, // 9 |
(...skipping 14 matching lines...) Expand all Loading... |
54 3.59207910759131235356e-03, // 24 | 54 3.59207910759131235356e-03, // 24 |
55 1.45620945432529025516e-03, // 25 | 55 1.45620945432529025516e-03, // 25 |
56 5.88041240820264096874e-04, // 26 | 56 5.88041240820264096874e-04, // 26 |
57 2.46463134818469906812e-04, // 27 | 57 2.46463134818469906812e-04, // 27 |
58 7.81794442939557092300e-05, // 28 | 58 7.81794442939557092300e-05, // 28 |
59 7.14072491382608190305e-05, // 29 | 59 7.14072491382608190305e-05, // 29 |
60 -1.85586374855275456654e-05, // 30 | 60 -1.85586374855275456654e-05, // 30 |
61 2.59073051863633712884e-05, // T12 31 | 61 2.59073051863633712884e-05, // T12 31 |
62 7.85398163397448278999e-01, // pio4 32 | 62 7.85398163397448278999e-01, // pio4 32 |
63 3.06161699786838301793e-17, // pio4lo 33 | 63 3.06161699786838301793e-17, // pio4lo 33 |
| 64 6.93147180369123816490e-01, // ln2_hi 34 |
| 65 1.90821492927058770002e-10, // ln2_lo 35 |
| 66 1.80143985094819840000e+16, // 2^54 36 |
| 67 6.666666666666666666e-01, // 2/3 37 |
| 68 6.666666666666735130e-01, // LP1 38 |
| 69 3.999999999940941908e-01, // 39 |
| 70 2.857142874366239149e-01, // 40 |
| 71 2.222219843214978396e-01, // 41 |
| 72 1.818357216161805012e-01, // 42 |
| 73 1.531383769920937332e-01, // 43 |
| 74 1.479819860511658591e-01, // LP7 44 |
64 }; | 75 }; |
65 | 76 |
66 | 77 |
67 // Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi | 78 // Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi |
68 static const int two_over_pi[] = { | 79 static const int two_over_pi[] = { |
69 0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C, | 80 0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C, |
70 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A, 0x424DD2, 0xE00649, | 81 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A, 0x424DD2, 0xE00649, |
71 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, 0xA73EE8, 0x8235F5, 0x2EBB44, | 82 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, 0xA73EE8, 0x8235F5, 0x2EBB44, |
72 0x84E99C, 0x7026B4, 0x5F7E41, 0x3991D6, 0x398353, 0x39F49C, 0x845F8B, | 83 0x84E99C, 0x7026B4, 0x5F7E41, 0x3991D6, 0x398353, 0x39F49C, 0x845F8B, |
73 0xBDF928, 0x3B1FF8, 0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, | 84 0xBDF928, 0x3B1FF8, 0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 int n = __kernel_rem_pio2(tx, y, e0, nx); | 264 int n = __kernel_rem_pio2(tx, y, e0, nx); |
254 if (hx < 0) { | 265 if (hx < 0) { |
255 y[0] = -y[0]; | 266 y[0] = -y[0]; |
256 y[1] = -y[1]; | 267 y[1] = -y[1]; |
257 return -n; | 268 return -n; |
258 } | 269 } |
259 return n; | 270 return n; |
260 } | 271 } |
261 } | 272 } |
262 } // namespace v8::internal | 273 } // namespace v8::internal |
OLD | NEW |