@@ -43,44 +43,44 @@ var THREE_PIO2_1T = 3.0 * PIO2_1T;
43
43
var FOUR_PIO2_1T = 4.0 * PIO2_1T ;
44
44
45
45
// Absolute value mask: 0x7fffffff = 2147483647 => 01111111111111111111111111111111
46
- var ABS_MASK = 0x7fffffff ;
46
+ var ABS_MASK = 0x7fffffff | 0 ; // asm type annotation
47
47
48
48
// Exponent mask: 0x7ff00000 = 2146435072 => 01111111111100000000000000000000
49
- var EXPONENT_MASK = 0x7ff00000 ;
49
+ var EXPONENT_MASK = 0x7ff00000 | 0 ; // asm type annotation
50
50
51
51
// High word significand mask: 0xfffff = 1048575 => 00000000000011111111111111111111
52
- var SIGNIFICAND_MASK = 0xfffff ;
52
+ var SIGNIFICAND_MASK = 0xfffff | 0 ; // asm type annotation
53
53
54
54
// High word significand for π and π/2: 0x921fb = 598523 => 00000000000010010010000111111011
55
- var PI_HIGH_WORD_SIGNIFICAND = 0x921fb ;
55
+ var PI_HIGH_WORD_SIGNIFICAND = 0x921fb | 0 ; // asm type annotation
56
56
57
57
// High word for π/4: 0x3fe921fb = 1072243195 => 00111111111010010010000111111011
58
- var PIO4_HIGH_WORD = 0x3fe921fb ;
58
+ var PIO4_HIGH_WORD = 0x3fe921fb | 0 ; // asm type annotation
59
59
60
60
// High word for 3π/4: 0x4002d97c = 1073928572 => 01000000000000101101100101111100
61
- var THREE_PIO4_HIGH_WORD = 0x4002d97c ;
61
+ var THREE_PIO4_HIGH_WORD = 0x4002d97c | 0 ; // asm type annotation
62
62
63
63
// High word for 5π/4: 0x400f6a7a = 1074752122 => 01000000000011110110101001111010
64
- var FIVE_PIO4_HIGH_WORD = 0x400f6a7a ;
64
+ var FIVE_PIO4_HIGH_WORD = 0x400f6a7a | 0 ; // asm type annotation
65
65
66
66
// High word for 6π/4: 0x4012d97c = 1074977148 => 01000000000100101101100101111100
67
- var THREE_PIO2_HIGH_WORD = 0x4012d97c ;
67
+ var THREE_PIO2_HIGH_WORD = 0x4012d97c | 0 ; // asm type annotation
68
68
69
69
// High word for 7π/4: 0x4015fdbc = 1075183036 => 01000000000101011111110110111100
70
- var SEVEN_PIO4_HIGH_WORD = 0x4015fdbc ;
70
+ var SEVEN_PIO4_HIGH_WORD = 0x4015fdbc | 0 ; // asm type annotation
71
71
72
72
// High word for 8π/4: 0x401921fb = 1075388923 => 01000000000110010010000111111011
73
- var TWO_PI_HIGH_WORD = 0x401921fb ;
73
+ var TWO_PI_HIGH_WORD = 0x401921fb | 0 ; // asm type annotation
74
74
75
75
// High word for 9π/4: 0x401c463b = 1075594811 => 01000000000111000100011000111011
76
- var NINE_PIO4_HIGH_WORD = 0x401c463b ;
76
+ var NINE_PIO4_HIGH_WORD = 0x401c463b | 0 ; // asm type annotation
77
77
78
78
// 2^20*π/2 = 1647099.3291652855 => 0100000100111001001000011111101101010100010001000010110100011000 => high word => 0x413921fb = 1094263291 => 01000001001110010010000111111011
79
- var MEDIUM = 0x413921fb ;
79
+ var MEDIUM = 0x413921fb | 0 ; // asm type annotation
80
80
81
- // Arrays for storing temporary values (note that, in C, this would not be thread-safe) :
82
- var TX = new Array ( 3 ) ;
83
- var TY = new Array ( 2 ) ;
81
+ // Arrays for storing temporary values:
82
+ var TX = new Array ( 3 ) ; // WARNING: not thread safe
83
+ var TY = new Array ( 2 ) ; // WARNING: not thread safe
84
84
85
85
86
86
// MAIN //
@@ -90,7 +90,7 @@ var TY = new Array( 2 );
90
90
*
91
91
* ## Notes
92
92
*
93
- * * Returns `n` and stores the remainder `r` as two numbers `y[0]` and `y[1]`, such that `y[0]+y[1] = r`.
93
+ * - Returns `n` and stores the remainder `r` as two numbers `y[0]` and `y[1]`, such that `y[0]+y[1] = r`.
94
94
*
95
95
*
96
96
* @param {number } x - input value
@@ -130,7 +130,7 @@ function rempio2( x, y ) {
130
130
var z ;
131
131
132
132
hx = getHighWord ( x ) ;
133
- ix = hx & ABS_MASK ;
133
+ ix = ( hx & ABS_MASK ) | 0 ; // asm type annotation
134
134
135
135
// Case: |x| ~<= π/4 (no need for reduction)
136
136
if ( ix <= PIO4_HIGH_WORD ) {
0 commit comments