fmodq_test.zig (2069B) - Raw
1 const std = @import("std"); 2 const fmod = @import("fmod.zig"); 3 const testing = std.testing; 4 5 fn test_fmodq(a: f128, b: f128, exp: f128) !void { 6 const res = fmod.fmodq(a, b); 7 try testing.expect(exp == res); 8 } 9 10 fn test_fmodq_nans() !void { 11 try testing.expect(std.math.isNan(fmod.fmodq(1.0, std.math.nan(f128)))); 12 try testing.expect(std.math.isNan(fmod.fmodq(1.0, -std.math.nan(f128)))); 13 try testing.expect(std.math.isNan(fmod.fmodq(std.math.nan(f128), 1.0))); 14 try testing.expect(std.math.isNan(fmod.fmodq(-std.math.nan(f128), 1.0))); 15 } 16 17 fn test_fmodq_infs() !void { 18 try testing.expect(fmod.fmodq(1.0, std.math.inf(f128)) == 1.0); 19 try testing.expect(fmod.fmodq(1.0, -std.math.inf(f128)) == 1.0); 20 try testing.expect(std.math.isNan(fmod.fmodq(std.math.inf(f128), 1.0))); 21 try testing.expect(std.math.isNan(fmod.fmodq(-std.math.inf(f128), 1.0))); 22 } 23 24 test "fmodq" { 25 try test_fmodq(6.8, 4.0, 2.8); 26 try test_fmodq(6.8, -4.0, 2.8); 27 try test_fmodq(-6.8, 4.0, -2.8); 28 try test_fmodq(-6.8, -4.0, -2.8); 29 try test_fmodq(3.0, 2.0, 1.0); 30 try test_fmodq(-5.0, 3.0, -2.0); 31 try test_fmodq(3.0, 2.0, 1.0); 32 try test_fmodq(1.0, 2.0, 1.0); 33 try test_fmodq(0.0, 1.0, 0.0); 34 try test_fmodq(-0.0, 1.0, -0.0); 35 try test_fmodq(7046119.0, 5558362.0, 1487757.0); 36 try test_fmodq(9010357.0, 1957236.0, 1181413.0); 37 try test_fmodq(5192296858534827628530496329220095, 10.0, 5.0); 38 try test_fmodq(5192296858534827628530496329220095, 922337203681230954775807, 220474884073715748246157); 39 40 // Denormals 41 const a1: f128 = 0xedcb34a235253948765432134674p-16494; 42 const b1: f128 = 0x5d2e38791cfbc0737402da5a9518p-16494; 43 const exp1: f128 = 0x336ec3affb2db8618e4e7d5e1c44p-16494; 44 try test_fmodq(a1, b1, exp1); 45 const a2: f128 = 0x0.7654_3210_fdec_ba98_7654_3210_fdecp-16382; 46 const b2: f128 = 0x0.0012_fdac_bdef_1234_fdec_3222_1111p-16382; 47 const exp2: f128 = 0x0.0001_aecd_9d66_4a6e_67b7_d7d0_a901p-16382; 48 try test_fmodq(a2, b2, exp2); 49 50 try test_fmodq_nans(); 51 try test_fmodq_infs(); 52 }