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