1 #include "crlibm.h"
2 #include "crlibm_private.h"
3 #include "atan_fast.h"
4 
5 /*File generated by maple/atan.mpl */
6 static const scs constant_poly [10]=
7 /* ~-5.26315789473684210526315789473684210526315789473684e-02 */
8 {{{0x035e50d7, 0x250d7943, 0x179435e5, 0x035e50d7,
9 0x250d7943, 0x179435e5, 0x035e50d7, 0x250d7943},
10 DB_ONE,  -1,  -1 }
11 ,
12 /* ~5.88235294117647058823529411764705882352941176470588e-02 */
13 {{0x03c3c3c3, 0x30f0f0f0, 0x3c3c3c3c, 0x0f0f0f0f,
14 0x03c3c3c3, 0x30f0f0f0, 0x3c3c3c3c, 0x0f0f0f0f},
15 DB_ONE,  -1,   1 }
16 ,
17 /* ~-6.66666666666666666666666666666666666666666666666667e-02 */
18 {{0x04444444, 0x11111111, 0x04444444, 0x11111111,
19 0x04444444, 0x11111111, 0x04444444, 0x11111111},
20 DB_ONE,  -1,  -1 }
21 ,
22 /* ~7.69230769230769230769230769230769230769230769230769e-02 */
23 {{0x04ec4ec4, 0x3b13b13b, 0x04ec4ec4, 0x3b13b13b,
24 0x04ec4ec4, 0x3b13b13b, 0x04ec4ec4, 0x3b13b13b},
25 DB_ONE,  -1,   1 }
26 ,
27 /* ~-9.09090909090909090909090909090909090909090909090909e-02 */
28 {{0x05d1745d, 0x05d1745d, 0x05d1745d, 0x05d1745d,
29 0x05d1745d, 0x05d1745d, 0x05d1745d, 0x05d1745d},
30 DB_ONE,  -1,  -1 }
31 ,
32 /* ~1.11111111111111111111111111111111111111111111111111e-01 */
33 {{0x071c71c7, 0x071c71c7, 0x071c71c7, 0x071c71c7,
34 0x071c71c7, 0x071c71c7, 0x071c71c7, 0x071c71c7},
35 DB_ONE,  -1,   1 }
36 ,
37 /* ~-1.42857142857142857142857142857142857142857142857143e-01 */
38 {{0x09249249, 0x09249249, 0x09249249, 0x09249249,
39 0x09249249, 0x09249249, 0x09249249, 0x09249249},
40 DB_ONE,  -1,  -1 }
41 ,
42 /* ~2.00000000000000000000000000000000000000000000000000e-01 */
43 {{0x0ccccccc, 0x33333333, 0x0ccccccc, 0x33333333,
44 0x0ccccccc, 0x33333333, 0x0ccccccc, 0x33333333},
45 DB_ONE,  -1,   1 }
46 ,
47 /* ~-3.33333333333333333333333333333333333333333333333333e-01 */
48 {{0x15555555, 0x15555555, 0x15555555, 0x15555555,
49 0x15555555, 0x15555555, 0x15555555, 0x15555555},
50 DB_ONE,  -1,  -1 }
51 ,
52 /* ~1.00000000000000000000000000000000000000000000000000e+00 */
53 {{0x00000001, 0x00000000, 0x00000000, 0x00000000,
54 0x00000000, 0x00000000, 0x00000000, 0x00000000},
55 DB_ONE,   0,   1 }
56 };
57 #define constant_poly_ptr (scs_ptr)&constant_poly
58 static const scs InvPiSCS=
59 {{0x145f306d, 0x327220a9, 0x13f84eaf, 0x28fa9a6e,
60 0x381b6c52, 0x2cc9e21c, 0x2083fca2, 0x31d5ef5d},
61 DB_ONE,  -1,   1 }
62 ;
63 #define InvPiSCS_ptr  (scs_ptr)(& InvPiSCS)
64 
65 #ifdef WORDS_BIGENDIAN
66 
67 static const db_number atan_blolo[62] = {
68 /* 0 */  {{0xB8D1C5F3,0xA947CCE9}} /* -5.3484426395e-35 */,
69 /* 1 */  {{0xB8B05943,0x3C749846}} /* -1.2299381479e-35 */,
70 /* 2 */  {{0x38FC2F2A,0x267751FB}} /* +3.3925541143e-34 */,
71 /* 3 */  {{0x38D44E61,0xDDA4249D}} /* +6.1106690132e-35 */,
72 /* 4 */  {{0xB906FBFA,0xA5B245C8}} /* -5.5332673453e-34 */,
73 /* 5 */  {{0xB8DE1E98,0x67CABE65}} /* -9.0637612563e-35 */,
74 /* 6 */  {{0x38BD7B8F,0x45D13048}} /* +2.2180284354e-35 */,
75 /* 7 */  {{0xB9049436,0x23AD369B}} /* -4.9542022687e-34 */,
76 /* 8 */  {{0xB8F98586,0xF6BB1DB7}} /* -3.0720497269e-34 */,
77 /* 9 */  {{0xB89BC985,0xCB4D6219}} /* -5.2261910438e-36 */,
78 /* 10 */  {{0xB8C4002C,0x9C3884F4}} /* -3.0093679582e-35 */,
79 /* 11 */  {{0x3910CBC4,0x893058D9}} /* +8.0869642604e-34 */,
80 /* 12 */  {{0xB8F5408B,0xFF010BB5}} /* -2.5581328396e-34 */,
81 /* 13 */  {{0xB908570F,0xB5813578}} /* -5.8596619457e-34 */,
82 /* 14 */  {{0x39155B89,0x7E967248}} /* +1.0283294335e-33 */,
83 /* 15 */  {{0xB8CD159A,0x2031F115}} /* -4.3761315763e-35 */,
84 /* 16 */  {{0xB8E8D9C6,0x0FC3C81C}} /* -1.4956458040e-34 */,
85 /* 17 */  {{0x38C0AC30,0x8219F20D}} /* +2.5086163140e-35 */,
86 /* 18 */  {{0x38B36506,0x32EDCB95}} /* +1.4590894790e-35 */,
87 /* 19 */  {{0xB8FD57B0,0x5932E7C2}} /* -3.5319791285e-34 */,
88 /* 20 */  {{0x38C73827,0x91A2D916}} /* +3.4936600564e-35 */,
89 /* 21 */  {{0xB92FE60D,0x9EC5116C}} /* -3.0717278111e-33 */,
90 /* 22 */  {{0x3903AADF,0x6A3B8AE2}} /* +4.7347715466e-34 */,
91 /* 23 */  {{0xB88D6A01,0x71B87C3C}} /* -2.7660872166e-36 */,
92 /* 24 */  {{0xB8E17427,0xEA5AC8E8}} /* -1.0504584084e-34 */,
93 /* 25 */  {{0x38F4ED52,0xF776B005}} /* +2.5190016806e-34 */,
94 /* 26 */  {{0xB9265B23,0x75D2B05C}} /* -2.1528054385e-33 */,
95 /* 27 */  {{0xB8DA45DA,0xAFEAB282}} /* -7.9062036715e-35 */,
96 /* 28 */  {{0x3912EF75,0xBD16D3D4}} /* +9.1170587963e-34 */,
97 /* 29 */  {{0x390AB3D7,0xE904B022}} /* +6.4283962392e-34 */,
98 /* 30 */  {{0xB8EE688B,0x3F9F468B}} /* -1.8301374849e-34 */,
99 /* 31 */  {{0xB9225DF6,0x71A98823}} /* -1.7686817787e-33 */,
100 /* 32 */  {{0xB8CC82B0,0x522BE0F8}} /* -4.2897836993e-35 */,
101 /* 33 */  {{0xB912AFE0,0x88BB6A0B}} /* -8.9974727841e-34 */,
102 /* 34 */  {{0x38D4DC99,0x8640FAE5}} /* +6.2778447830e-35 */,
103 /* 35 */  {{0xB9016FC6,0x406A343B}} /* -4.1977132916e-34 */,
104 /* 36 */  {{0x3909804C,0x126FC74C}} /* +6.1391811422e-34 */,
105 /* 37 */  {{0x39051033,0xE5B0956F}} /* +5.0708030720e-34 */,
106 /* 38 */  {{0xB910CADC,0x203B114C}} /* -8.0852567814e-34 */,
107 /* 39 */  {{0x38EFCAC7,0xF97ED36B}} /* +1.9134182531e-34 */,
108 /* 40 */  {{0xB92464C0,0xB51D77B4}} /* -1.9638289218e-33 */,
109 /* 41 */  {{0x391157F3,0x2D4A03DE}} /* +8.3506176591e-34 */,
110 /* 42 */  {{0xB92BD929,0x136A8DDE}} /* -2.6816921082e-33 */,
111 /* 43 */  {{0x390F1514,0x035DF6B3}} /* +7.4828003563e-34 */,
112 /* 44 */  {{0xB92606EC,0x19DB7E3B}} /* -2.1211268072e-33 */,
113 /* 45 */  {{0x393B104B,0xCDA1B51D}} /* +5.2122706777e-33 */,
114 /* 46 */  {{0x3935FB01,0xF88A520C}} /* +4.2332900876e-33 */,
115 /* 47 */  {{0xB9189ED1,0x1940944D}} /* -1.1854280852e-33 */,
116 /* 48 */  {{0xB914E8F2,0x38D4794B}} /* -1.0067772791e-33 */,
117 /* 49 */  {{0xB93DF07A,0x73581CF5}} /* -5.7661126209e-33 */,
118 /* 50 */  {{0xB939C22F,0x727CE10C}} /* -4.9609136744e-33 */,
119 /* 51 */  {{0xB8EF37D2,0x26E1A810}} /* -1.8788680655e-34 */,
120 /* 52 */  {{0x391A4251,0x45155DAA}} /* +1.2643273919e-33 */,
121 /* 53 */  {{0xB9126D2F,0xA42D0A9A}} /* -8.8720409776e-34 */,
122 /* 54 */  {{0xB93CAF8B,0x3DFAFFA5}} /* -5.5246684074e-33 */,
123 /* 55 */  {{0x3919C170,0xA9A35831}} /* +1.2400882522e-33 */,
124 /* 56 */  {{0xB924C2B3,0xAE51E4B3}} /* -1.9991686511e-33 */,
125 /* 57 */  {{0xB8DEFB7D,0x0DE98917}} /* -9.3234199178e-35 */,
126 /* 58 */  {{0xB916EC39,0x1ABE373B}} /* -1.1036900898e-33 */,
127 /* 59 */  {{0x391C5BA4,0x4135ADBE}} /* +1.3653868341e-33 */,
128 /* 60 */  {{0xB9112692,0xD7179E60}} /* -8.2577511316e-34 */,
129 /* 61 */  {{0x392F96B5,0xBCC93753}} /* +3.0418821818e-33 */,
130 };
131 
132 #else
133 static const db_number atan_blolo[62] = {
134 /* 0 */  {{0xA947CCE9,0xB8D1C5F3}} /* -5.3484426395e-35 */,
135 /* 1 */  {{0x3C749846,0xB8B05943}} /* -1.2299381479e-35 */,
136 /* 2 */  {{0x267751FB,0x38FC2F2A}} /* +3.3925541143e-34 */,
137 /* 3 */  {{0xDDA4249D,0x38D44E61}} /* +6.1106690132e-35 */,
138 /* 4 */  {{0xA5B245C8,0xB906FBFA}} /* -5.5332673453e-34 */,
139 /* 5 */  {{0x67CABE65,0xB8DE1E98}} /* -9.0637612563e-35 */,
140 /* 6 */  {{0x45D13048,0x38BD7B8F}} /* +2.2180284354e-35 */,
141 /* 7 */  {{0x23AD369B,0xB9049436}} /* -4.9542022687e-34 */,
142 /* 8 */  {{0xF6BB1DB7,0xB8F98586}} /* -3.0720497269e-34 */,
143 /* 9 */  {{0xCB4D6219,0xB89BC985}} /* -5.2261910438e-36 */,
144 /* 10 */  {{0x9C3884F4,0xB8C4002C}} /* -3.0093679582e-35 */,
145 /* 11 */  {{0x893058D9,0x3910CBC4}} /* +8.0869642604e-34 */,
146 /* 12 */  {{0xFF010BB5,0xB8F5408B}} /* -2.5581328396e-34 */,
147 /* 13 */  {{0xB5813578,0xB908570F}} /* -5.8596619457e-34 */,
148 /* 14 */  {{0x7E967248,0x39155B89}} /* +1.0283294335e-33 */,
149 /* 15 */  {{0x2031F115,0xB8CD159A}} /* -4.3761315763e-35 */,
150 /* 16 */  {{0x0FC3C81C,0xB8E8D9C6}} /* -1.4956458040e-34 */,
151 /* 17 */  {{0x8219F20D,0x38C0AC30}} /* +2.5086163140e-35 */,
152 /* 18 */  {{0x32EDCB95,0x38B36506}} /* +1.4590894790e-35 */,
153 /* 19 */  {{0x5932E7C2,0xB8FD57B0}} /* -3.5319791285e-34 */,
154 /* 20 */  {{0x91A2D916,0x38C73827}} /* +3.4936600564e-35 */,
155 /* 21 */  {{0x9EC5116C,0xB92FE60D}} /* -3.0717278111e-33 */,
156 /* 22 */  {{0x6A3B8AE2,0x3903AADF}} /* +4.7347715466e-34 */,
157 /* 23 */  {{0x71B87C3C,0xB88D6A01}} /* -2.7660872166e-36 */,
158 /* 24 */  {{0xEA5AC8E8,0xB8E17427}} /* -1.0504584084e-34 */,
159 /* 25 */  {{0xF776B005,0x38F4ED52}} /* +2.5190016806e-34 */,
160 /* 26 */  {{0x75D2B05C,0xB9265B23}} /* -2.1528054385e-33 */,
161 /* 27 */  {{0xAFEAB282,0xB8DA45DA}} /* -7.9062036715e-35 */,
162 /* 28 */  {{0xBD16D3D4,0x3912EF75}} /* +9.1170587963e-34 */,
163 /* 29 */  {{0xE904B022,0x390AB3D7}} /* +6.4283962392e-34 */,
164 /* 30 */  {{0x3F9F468B,0xB8EE688B}} /* -1.8301374849e-34 */,
165 /* 31 */  {{0x71A98823,0xB9225DF6}} /* -1.7686817787e-33 */,
166 /* 32 */  {{0x522BE0F8,0xB8CC82B0}} /* -4.2897836993e-35 */,
167 /* 33 */  {{0x88BB6A0B,0xB912AFE0}} /* -8.9974727841e-34 */,
168 /* 34 */  {{0x8640FAE5,0x38D4DC99}} /* +6.2778447830e-35 */,
169 /* 35 */  {{0x406A343B,0xB9016FC6}} /* -4.1977132916e-34 */,
170 /* 36 */  {{0x126FC74C,0x3909804C}} /* +6.1391811422e-34 */,
171 /* 37 */  {{0xE5B0956F,0x39051033}} /* +5.0708030720e-34 */,
172 /* 38 */  {{0x203B114C,0xB910CADC}} /* -8.0852567814e-34 */,
173 /* 39 */  {{0xF97ED36B,0x38EFCAC7}} /* +1.9134182531e-34 */,
174 /* 40 */  {{0xB51D77B4,0xB92464C0}} /* -1.9638289218e-33 */,
175 /* 41 */  {{0x2D4A03DE,0x391157F3}} /* +8.3506176591e-34 */,
176 /* 42 */  {{0x136A8DDE,0xB92BD929}} /* -2.6816921082e-33 */,
177 /* 43 */  {{0x035DF6B3,0x390F1514}} /* +7.4828003563e-34 */,
178 /* 44 */  {{0x19DB7E3B,0xB92606EC}} /* -2.1211268072e-33 */,
179 /* 45 */  {{0xCDA1B51D,0x393B104B}} /* +5.2122706777e-33 */,
180 /* 46 */  {{0xF88A520C,0x3935FB01}} /* +4.2332900876e-33 */,
181 /* 47 */  {{0x1940944D,0xB9189ED1}} /* -1.1854280852e-33 */,
182 /* 48 */  {{0x38D4794B,0xB914E8F2}} /* -1.0067772791e-33 */,
183 /* 49 */  {{0x73581CF5,0xB93DF07A}} /* -5.7661126209e-33 */,
184 /* 50 */  {{0x727CE10C,0xB939C22F}} /* -4.9609136744e-33 */,
185 /* 51 */  {{0x26E1A810,0xB8EF37D2}} /* -1.8788680655e-34 */,
186 /* 52 */  {{0x45155DAA,0x391A4251}} /* +1.2643273919e-33 */,
187 /* 53 */  {{0xA42D0A9A,0xB9126D2F}} /* -8.8720409776e-34 */,
188 /* 54 */  {{0x3DFAFFA5,0xB93CAF8B}} /* -5.5246684074e-33 */,
189 /* 55 */  {{0xA9A35831,0x3919C170}} /* +1.2400882522e-33 */,
190 /* 56 */  {{0xAE51E4B3,0xB924C2B3}} /* -1.9991686511e-33 */,
191 /* 57 */  {{0x0DE98917,0xB8DEFB7D}} /* -9.3234199178e-35 */,
192 /* 58 */  {{0x1ABE373B,0xB916EC39}} /* -1.1036900898e-33 */,
193 /* 59 */  {{0x4135ADBE,0x391C5BA4}} /* +1.3653868341e-33 */,
194 /* 60 */  {{0xD7179E60,0xB9112692}} /* -8.2577511316e-34 */,
195 /* 61 */  {{0xBCC93753,0x392F96B5}} /* +3.0418821818e-33 */,
196 };
197 
198 #endif  /* WORDS_BIGENDIAN */
199