Skip to content

Commit

Permalink
chore(stdlib): Switch Float64 to operators
Browse files Browse the repository at this point in the history
  • Loading branch information
spotandjake committed Jan 2, 2024
1 parent 3c0ea18 commit 2995a9d
Show file tree
Hide file tree
Showing 4 changed files with 142 additions and 89 deletions.
21 changes: 11 additions & 10 deletions compiler/test/stdlib/float64.test.gr
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ from Float64 use *

// Constants Tests
// smoke test:
assert gt(infinity, 100000000.0d)
assert infinity > 100000000.0d
// test infinity-specific semantics:
assert toNumber(infinity) == toNumber(infinity) - 1
from Pervasives use { (-) as numberSub }
assert toNumber(infinity) == numberSub(toNumber(infinity), 1)
assert nan != nan

assert pi == 3.141592653589793d
Expand All @@ -24,11 +25,11 @@ assert fromNumber(0) == 0.0d
assert toNumber(555.0d) == 555
assert toNumber(0.0d) == 0

assert gt(5.0d, 4.0d)
assert gte(5.0d, 5.0d)
assert lt(5.0d, 17.0d)
assert lte(5.0d, 5.0d)
assert !gt(5.0d, 5.0d)
assert !gte(5.0d, 22.0d)
assert !lt(5.0d, -17.0d)
assert !lte(5.0d, 4.0d)
assert 5.0d > 4.0d
assert 5.0d >= 5.0d
assert 5.0d < 17.0d
assert 5.0d <= 5.0d
assert !(5.0d > 5.0d)
assert !(5.0d >= 22.0d)
assert !(5.0d < -17.0d)
assert !(5.0d <= 4.0d)
18 changes: 3 additions & 15 deletions compiler/test/suites/strings.re
Original file line number Diff line number Diff line change
Expand Up @@ -280,21 +280,9 @@ bar", 1))|},
{|include "float32"; from Float32 use *; print(div(-1.0f, 0.0f))|},
"-Infinity\n",
);
assertRun(
"string_float4",
{|include "float64"; from Float64 use *; print(div(0.0d, 0.0d))|},
"NaN\n",
);
assertRun(
"string_float5",
{|include "float64"; from Float64 use *; print(div(1.0d, 0.0d))|},
"Infinity\n",
);
assertRun(
"string_float6",
{|include "float64"; from Float64 use *; print(div(-1.0d, 0.0d))|},
"-Infinity\n",
);
assertRun("string_float4", {|print(NaNd)|}, "NaN\n");
assertRun("string_float5", {|print(Infinityd)|}, "Infinity\n");
assertRun("string_float6", {|print(-Infinityd)|}, "-Infinity\n");

// Bytes literals
assertRun("bytes_literal", {|print(b"abc")|}, "<bytes: 61 62 63>\n");
Expand Down
40 changes: 24 additions & 16 deletions stdlib/float64.gr
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,11 @@ provide { fromNumber, toNumber }
* @param y: The second operand
* @returns The sum of the two operands
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `add`
*/
@unsafe
provide let add = (x: Float64, y: Float64) => {
provide let (+) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
let ptr = newFloat64(xv + yv)
Expand All @@ -97,10 +98,11 @@ provide let add = (x: Float64, y: Float64) => {
* @param y: The second operand
* @returns The difference of the two operands
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `sub`
*/
@unsafe
provide let sub = (x: Float64, y: Float64) => {
provide let (-) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
let ptr = newFloat64(xv - yv)
Expand All @@ -114,10 +116,11 @@ provide let sub = (x: Float64, y: Float64) => {
* @param y: The second operand
* @returns The product of the two operands
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `mul`
*/
@unsafe
provide let mul = (x: Float64, y: Float64) => {
provide let (*) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
let ptr = newFloat64(xv * yv)
Expand All @@ -131,10 +134,11 @@ provide let mul = (x: Float64, y: Float64) => {
* @param y: The second operand
* @returns The quotient of the two operands
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `div`
*/
@unsafe
provide let div = (x: Float64, y: Float64) => {
provide let (/) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
let ptr = newFloat64(xv / yv)
Expand All @@ -148,10 +152,11 @@ provide let div = (x: Float64, y: Float64) => {
* @param y: The second value
* @returns `true` if the first value is less than the second value or `false` otherwise
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `lt`
*/
@unsafe
provide let lt = (x: Float64, y: Float64) => {
provide let (<) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
xv < yv
Expand All @@ -164,10 +169,11 @@ provide let lt = (x: Float64, y: Float64) => {
* @param y: The second value
* @returns `true` if the first value is greater than the second value or `false` otherwise
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `gt`
*/
@unsafe
provide let gt = (x: Float64, y: Float64) => {
provide let (>) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
xv > yv
Expand All @@ -180,10 +186,11 @@ provide let gt = (x: Float64, y: Float64) => {
* @param y: The second value
* @returns `true` if the first value is less than or equal to the second value or `false` otherwise
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `lte`
*/
@unsafe
provide let lte = (x: Float64, y: Float64) => {
provide let (<=) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
xv <= yv
Expand All @@ -196,10 +203,11 @@ provide let lte = (x: Float64, y: Float64) => {
* @param y: The second value
* @returns `true` if the first value is greater than or equal to the second value or `false` otherwise
*
* @since v0.2.0
* @since v0.6.0
* @history v0.2.0: Originally named `gte`
*/
@unsafe
provide let gte = (x: Float64, y: Float64) => {
provide let (>=) = (x: Float64, y: Float64) => {
let xv = WasmF64.load(WasmI32.fromGrain(x), 8n)
let yv = WasmF64.load(WasmI32.fromGrain(y), 8n)
xv >= yv
Expand Down
Loading

0 comments on commit 2995a9d

Please sign in to comment.