| 1 | import math |
| 2 | |
| 3 | fn abc() { |
| 4 | test_cases_f32 := [ |
| 5 | f32_from_bits1(0x0000_0000), // +0 |
| 6 | f32_from_bits1(0x8000_0000), // -0 |
| 7 | f32_from_bits1(0xFFC0_0001), // sNan |
| 8 | f32_from_bits1(0xFF80_0001), // qNan |
| 9 | f32_from_bits1(0x7F80_0000), // +inf |
| 10 | f32_from_bits1(0xFF80_0000), // -inf |
| 11 | 1, |
| 12 | -1, |
| 13 | 10, |
| 14 | -10, |
| 15 | 0.3, |
| 16 | -0.3, |
| 17 | 1000000, |
| 18 | 123456.7, |
| 19 | 123e35, |
| 20 | -123.45, |
| 21 | 1e23, |
| 22 | f32_from_bits1(0x0080_0000), // smallest float32 |
| 23 | math.max_f32, |
| 24 | 383260575764816448.0, |
| 25 | ] |
| 26 | |
| 27 | exp_result_f32 := [ |
| 28 | '0e+00', |
| 29 | '-0e+00', |
| 30 | 'nan', |
| 31 | 'nan', |
| 32 | '+inf', |
| 33 | '-inf', |
| 34 | '1.e+00', |
| 35 | '-1.e+00', |
| 36 | '1.e+01', |
| 37 | '-1.e+01', |
| 38 | '3.e-01', |
| 39 | '-3.e-01', |
| 40 | '1.e+06', |
| 41 | '1.234567e+05', |
| 42 | '1.23e+37', |
| 43 | '-1.2345e+02', |
| 44 | '1.e+23', |
| 45 | '1.1754944e-38', // aprox from 1.1754943508 × 10−38, |
| 46 | '3.4028235e+38', |
| 47 | '3.8326058e+17', |
| 48 | ] |
| 49 | |
| 50 | test_cases_f64 := [ |
| 51 | f64_from_bits1(0x0000_0000_0000_0000), // +0 |
| 52 | f64_from_bits1(0x8000_0000_0000_0000), // -0 |
| 53 | f64_from_bits1(0x7FF0_0000_0000_0001), // sNan |
| 54 | f64_from_bits1(0x7FF8_0000_0000_0001), // qNan |
| 55 | f64_from_bits1(0x7FF0_0000_0000_0000), // +inf |
| 56 | f64_from_bits1(0xFFF0_0000_0000_0000), // -inf |
| 57 | 1, |
| 58 | -1, |
| 59 | 10, |
| 60 | -10, |
| 61 | 0.3, |
| 62 | -0.3, |
| 63 | 1000000, |
| 64 | 123456.7, |
| 65 | 123e45, |
| 66 | -123.45, |
| 67 | 1e23, |
| 68 | f64_from_bits1(0x0010_0000_0000_0000), // smallest float64 |
| 69 | math.max_f32, |
| 70 | 383260575764816448, |
| 71 | 383260575764816448, |
| 72 | // C failing cases |
| 73 | 123e300, |
| 74 | 123e-300, |
| 75 | 5.e-324, |
| 76 | -5.e-324, |
| 77 | ] |
| 78 | |
| 79 | exp_result_f64 := [ |
| 80 | '0e+00', |
| 81 | '-0e+00', |
| 82 | 'nan', |
| 83 | 'nan', |
| 84 | '+inf', |
| 85 | '-inf', |
| 86 | '1.e+00', |
| 87 | '-1.e+00', |
| 88 | '1.e+01', |
| 89 | '-1.e+01', |
| 90 | '3.e-01', |
| 91 | '-3.e-01', |
| 92 | '1.e+06', |
| 93 | '1.234567e+05', |
| 94 | '1.23e+47', |
| 95 | '-1.2345e+02', |
| 96 | '1.e+23', |
| 97 | '2.2250738585072014e-308', |
| 98 | '3.4028234663852886e+38', |
| 99 | '3.8326057576481645e+17', |
| 100 | '3.8326057576481645e+17', |
| 101 | '1.23e+302', // this test is failed from C sprintf!! |
| 102 | '1.23e-298', |
| 103 | '5.e-324', |
| 104 | '-5.e-324', |
| 105 | ] |
| 106 | } |
| 107 | |