Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion dprint.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@
"exts": ["vi"]
}]
},
"excludes": ["tests/programs/fail", "tests/programs/repl", "tests/programs/fmt", "tests/snaps"],
"excludes": [
"tests/programs/fail",
"tests/programs/repl",
"tests/programs/fmt",
"tests/snaps",
"tests/programs/floats.vi"
],
"plugins": [
"https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm",
"https://plugins.dprint.dev/json-0.19.3.wasm",
Expand Down
1 change: 1 addition & 0 deletions ivy/src/host/ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ impl<'ivm> Host<'ivm> {
"f32_mul" => |a, b| new_f32(as_f32(a).mul(as_f32(b))),
"f32_div" => |a, b| new_f32(as_f32(a).div(as_f32(b))),
"f32_rem" => |a, b| new_f32(as_f32(a).rem_euclid(as_f32(b))),
"f32_sqrt" => |a, _b| new_f32(as_f32(a).sqrt()),

"f32_eq" => |a, b| new_bool(as_f32(a) == as_f32(b)),
"f32_ne" => |a, b| new_bool(as_f32(a) != as_f32(b)),
Expand Down
46 changes: 46 additions & 0 deletions tests/programs/floats.vi
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// FIX(#110): formatting is currently disabled in dprint.json to keep the comments in this file.
// Enable formatting again once #110 is fixed.
pub fn main(&io: &IO) {
let interesting_floats = [
// 1) Specials / domain errors
+0.0,
-0.0,
-42.0,
F32::inf,
F32::neg_inf,
F32::nan,
F32::from_bits(0x7FC0_0001), // quiet NaN w/ payload
// 2) Subnormals & very small positives
F32::from_bits(0x0000_0001), // smallest subnormal
F32::from_bits(0x0000_0002),
F32::from_bits(0x0040_0000),
F32::from_bits(0x007F_FFFF), // largest subnormal
F32::from_bits(0x0080_0000), // FLT_MIN (smallest normal)
// 3) Around 1.0 (cancellation-sensitive)
1.0,
F32::from_bits(0x3F7F_FFFF),
F32::from_bits(0x3F80_0001),
F32::from_bits(0x3F7F_FFFE), // cspell:disable-line
F32::from_bits(0x3F80_0002),
// 4) Nice reference values
0.5,
2.0,
2.7182817, // e (rounded in F32)
3.1415927, // π (rounded in F32)
// 5) Range extremes & powers of two
F32::from_bits(0x3080_0000), // 2^-30
F32::from_bits(0x4E80_0000), // 2^30
F32::from_bits(0x0100_0000), // FLT_MIN * 2
F32::from_bits(0x7EFF_FFFF), // FLT_MAX / 2
F32::from_bits(0x7F7F_FFFF), // FLT_MAX
1.0e-10,
1.0e10,
];

for f in interesting_floats.into_iter() {
io.println("f = {f}");
io.println("ln(f) = {f.ln()}");
io.println("sqrt(f) = {f.sqrt()}");
io.println("");
}
}
33 changes: 0 additions & 33 deletions tests/programs/repl/f32_misc.vi

This file was deleted.

12 changes: 0 additions & 12 deletions tests/programs/repl/f32_to_string.vi

This file was deleted.

112 changes: 112 additions & 0 deletions tests/snaps/vine/floats/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
f = +0.0
ln(f) = -inf
sqrt(f) = +0.0

f = -0.0
ln(f) = -inf
sqrt(f) = -0.0

f = -42.00000
ln(f) = NaN
sqrt(f) = NaN

f = +inf
ln(f) = +inf
sqrt(f) = +inf

f = -inf
ln(f) = NaN
sqrt(f) = NaN

f = NaN
ln(f) = NaN
sqrt(f) = NaN

f = NaN
ln(f) = NaN
sqrt(f) = NaN

f = +1.40129e-45
ln(f) = -103.27893
sqrt(f) = +3.74339e-23

f = +2.80259e-45
ln(f) = -102.58578
sqrt(f) = +5.29395e-23

f = +5.87747e-39
ln(f) = -88.02969
sqrt(f) = +7.66646e-20

f = +1.17549e-38
ln(f) = -87.33654
sqrt(f) = +1.08420e-19

f = +1.17549e-38
ln(f) = -87.33654
sqrt(f) = +1.08420e-19

f = +1.00000
ln(f) = +0.0
sqrt(f) = +1.00000

f = +0.00000
ln(f) = -5.96046e-8
sqrt(f) = +0.00000

f = +1.00000
ln(f) = +1.19209e-7
sqrt(f) = +1.00000

f = +0.99999
ln(f) = -1.19209e-7
sqrt(f) = +0.00000

f = +1.00000
ln(f) = +2.38418e-7
sqrt(f) = +1.00000

f = +0.50000
ln(f) = -0.69314
sqrt(f) = +0.70710

f = +2.00000
ln(f) = +0.69314
sqrt(f) = +1.41421

f = +2.71828
ln(f) = +1.00000
sqrt(f) = +1.64872

f = +3.14159
ln(f) = +1.14472
sqrt(f) = +1.77245

f = +9.31322e-10
ln(f) = -20.79441
sqrt(f) = +0.00003

f = +1.07374e+9
ln(f) = +20.79441
sqrt(f) = +32768.00000

f = +2.35098e-38
ln(f) = -86.64339
sqrt(f) = +1.53329e-19

f = +1.70141e+38
ln(f) = +88.02969
sqrt(f) = +1.30438e+19

f = +3.40282e+38
ln(f) = +88.72283
sqrt(f) = +1.84467e+19

f = +9.99999e-11
ln(f) = -23.02585
sqrt(f) = +0.00001

f = +1.00000e+10
ln(f) = +23.02585
sqrt(f) = +100000.00000

17 changes: 17 additions & 0 deletions tests/snaps/vine/floats/stats.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

Interactions
Total 44_162
Depth 1_878
Breadth 23
Annihilate 17_194
Commute 0
Copy 4_690
Erase 4_270
Expand 3_627
Call 10_865
Branch 3_516

Memory
Heap 52_944 B
Allocated 861_872 B
Freed 861_872 B
129 changes: 0 additions & 129 deletions tests/snaps/vine/repl/f32_misc.repl.vi

This file was deleted.

Loading