blob: 5cfe6ee8dd1403797c6e1c3407f91419223ed9a1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
const value = @import("../value.zig");
const Value = value.Value;
// Zig API
/// Checks for a Zisp double (double, +inf, -inf, or canonical NaN).
pub fn check(v: Value) bool {
return v.isDouble();
}
/// Asserts check().
pub fn assert(v: Value) void {
if (!check(v)) {
v.dump();
@panic("not double");
}
}
pub fn pack(d: f64) Value {
return .{ .double = d };
}
pub fn unpack(v: Value) f64 {
assert(v);
return v.double;
}
// Zisp API
pub fn pred(v: Value) Value {
return value.boole.pack(check(v));
}
pub fn add(v1: Value, v2: Value) Value {
const d1 = unpack(v1);
const d2 = unpack(v2);
return pack(d1 + d2);
}
|