| author | |
| committer | |
| log | cc71a1af48aeaea4502aaa0592c413e4b964faba |
| tree | d52285b0742c53b52a48bababeaf0a6e2b575a86 |
| parent | 88fb44e1fe6175526f3571dbe3b370f09489ccdb |
2 files changed, 14 insertions(+), 2 deletions(-)
lib/compiler_rt/log.zig+7-1| ... | ... | @@ -448,7 +448,7 @@ pub fn __logx(a: f80) callconv(.c) f80 { |
| 448 | 448 | /// <= 0.5 ulp: 99.99%, worst case <= 0.530 ulp |
| 449 | 449 | /// |
| 450 | 450 | /// Accuracy on 10 million random numbers near x = 1 (testing the proc2 case): |
| 451 | /// <= 0.5 ulp: 99.85%, worst case <= 0.532 ulp | |
| 451 | /// <= 0.5 ulp: 99.96%, worst case <= 0.528 ulp | |
| 452 | 452 | pub fn logq(x: f128) callconv(.c) f128 { |
| 453 | 453 | const bitsize = 7; |
| 454 | 454 | const size = 1 << bitsize; |
| ... | ... | @@ -806,4 +806,10 @@ test "logq() sanity" { |
| 806 | 806 | try expectEqual(logq(1.200355637363589375e14), 3.2418809179272977400408325788186897e1); |
| 807 | 807 | try expectEqual(logq(6.6145398293682003021240234375e9), 2.261253606737223221601998075023261e1); |
| 808 | 808 | try expectEqual(logq(5.16179116383965741056e20), 4.7692985503915646405875629300054525e1); |
| 809 | // testing near 1 | |
| 810 | try expectEqual(logq(1.026586845186097528392910049888087e0), 2.6239557099466251374193777672800004e-2); | |
| 811 | try expectEqual(logq(9.878220373715243107115568932385941e-1), -1.2252721576456821219120474521538944e-2); | |
| 812 | try expectEqual(logq(9.417921077517196685541245315675951e-1), -5.997072116986790367958922503195352e-2); | |
| 813 | try expectEqual(logq(1.043095786320424537962914257605007e0), 4.219300911769055080390811808602425e-2); | |
| 814 | try expectEqual(logq(1.019043049323190694932517175175235e0), 1.8863999985309781522599012445793722e-2); | |
| 809 | 815 | } |
lib/compiler_rt/log2.zig+7-1| ... | ... | @@ -174,7 +174,7 @@ pub fn __log2x(a: f80) callconv(.c) f80 { |
| 174 | 174 | /// <= 0.5 ulp: 99.99%, worst case <= 0.594 ulp |
| 175 | 175 | /// |
| 176 | 176 | /// Accuracy on 10 million random numbers near x = 1 (testing the proc2 case): |
| 177 | /// <= 0.5 ulp: 99.79%, worst case <= 0.605 ulp | |
| 177 | /// <= 0.5 ulp: 99.86%, worst case <= 0.546 ulp | |
| 178 | 178 | pub fn log2q(x: f128) callconv(.c) f128 { |
| 179 | 179 | const bitsize = 7; |
| 180 | 180 | const size = 1 << bitsize; |
| ... | ... | @@ -509,4 +509,10 @@ test "log2q() sanity" { |
| 509 | 509 | try expectEqual(log2q(1.9179565888043380306021427656243352e-24), -7.878670421065570557450089031998522e1); |
| 510 | 510 | try expectEqual(log2q(2.5260048200126556877075044745936796e-25), -8.17113449801679676275805009400338e1); |
| 511 | 511 | try expectEqual(log2q(3.1170134002568967640399932861328125e7), 2.489366102143423848582774267206741e1); |
| 512 | // test near 1 | |
| 513 | try expectEqual(log2q(1.026586845186097528392910049888087e0), 3.7855678902522753591699367969189364e-2); | |
| 514 | try expectEqual(log2q(1.0005582850578053877743656130405725e0), 8.052103367568488432896147152682078e-4); | |
| 515 | try expectEqual(log2q(1.0370174103591254835765589348284266e0), 5.244011558596899945639244281954306e-2); | |
| 516 | try expectEqual(log2q(1.0429996503525671713075162472250667e0), 6.073867421942172944687194557176633e-2); | |
| 517 | try expectEqual(log2q(1.0383384027961064621892184334228659e0), 5.4276706191956281784022630732940314e-2); | |
| 512 | 518 | } |