From 0fc324f138f84f702c95a397a97dbbcd6ac8ea5e Mon Sep 17 00:00:00 2001 From: Roman Korostinskiy <70313618+c71n93@users.noreply.github.com> Date: Mon, 23 Oct 2023 16:59:37 +0300 Subject: [PATCH 1/2] #146 fix is-int and is-float; add tests --- src/main/eo/org/eolang/math/number.eo | 29 ++++++- src/test/eo/org/eolang/math/number-tests.eo | 96 +++++++++++++++++++++ 2 files changed, 121 insertions(+), 4 deletions(-) diff --git a/src/main/eo/org/eolang/math/number.eo b/src/main/eo/org/eolang/math/number.eo index 7b94361..d4fe0b8 100644 --- a/src/main/eo/org/eolang/math/number.eo +++ b/src/main/eo/org/eolang/math/number.eo @@ -39,10 +39,10 @@ [] > is-int ^.n > value! if. > @ - value.eq 0 + ^.is-int-zero TRUE if. - value.eq 0.0 + ^.is-float-zero FALSE eq. div. @@ -55,10 +55,10 @@ [] > is-float ^.n > value! if. > @ - value.eq 0.0 + ^.is-float-zero TRUE if. - value.eq 0 + ^.is-int-zero FALSE eq. div. @@ -66,6 +66,27 @@ value 1.0 + # Checking if number is integer 0 + [] > is-int-zero + ^.n > value! + eq. > @ + value.as-bytes + value.neg.as-bytes + + # Checking if number is floatint point 0.0 or -0.0 + [] > is-float-zero + ^.n > value! + if. > @ + eq. + value.as-bytes + 0.0.as-bytes + eq. + value.neg.as-bytes + -0.0.as-bytes + eq. + value.neg.as-bytes + 0.0.as-bytes + # Checking if number is NaN [] > is-nan not. > @ diff --git a/src/test/eo/org/eolang/math/number-tests.eo b/src/test/eo/org/eolang/math/number-tests.eo index ad3a184..9ba28cf 100644 --- a/src/test/eo/org/eolang/math/number-tests.eo +++ b/src/test/eo/org/eolang/math/number-tests.eo @@ -57,6 +57,90 @@ $.equal-to FALSE "check is nan of not nan" +[] > check-is-float-zero-of-float-zero + assert-that > @ + (number 0.0).is-float-zero + $.equal-to TRUE + "check is float zero of float zero" + +[] > check-is-float-zero-of-float-neg-zero + assert-that > @ + (number -0.0).is-float-zero + $.equal-to TRUE + "check is float zero of float negative zero" + +[] > check-is-float-zero-of-positive-float + assert-that > @ + (number 4.26).is-float-zero + $.equal-to FALSE + "check is float zero of positive float" + +[] > check-is-float-zero-of-negative-float + assert-that > @ + (number -2.07).is-float-zero + $.equal-to FALSE + "check is float zero of negative float" + +[] > check-is-float-zero-of-int-zero + assert-that > @ + (number 0).is-float-zero + $.equal-to FALSE + "check is float zero of int zero" + +[] > check-is-float-zero-of-positive-int + assert-that > @ + (number 414).is-float-zero + $.equal-to FALSE + "check is float zero of positive int" + +[] > check-is-float-zero-of-negative-int + assert-that > @ + (number -201).is-float-zero + $.equal-to FALSE + "check is float zero of negative int" + +[] > check-is-int-zero-of-float-zero + assert-that > @ + (number 0.0).is-int-zero + $.equal-to FALSE + "check is int zero of float zero" + +[] > check-is-int-zero-of-float-neg-zero + assert-that > @ + (number -0.0).is-int-zero + $.equal-to FALSE + "check is int zero of float negative zero" + +[] > check-is-int-zero-of-positive-float + assert-that > @ + (number 4.26).is-int-zero + $.equal-to FALSE + "check is int zero of positive float" + +[] > check-is-int-zero-of-negative-float + assert-that > @ + (number -2.07).is-int-zero + $.equal-to FALSE + "check is int zero of negative float" + +[] > check-is-int-zero-of-int-zero + assert-that > @ + (number 0).is-int-zero + $.equal-to TRUE + "check is int zero of int zero" + +[] > check-is-int-zero-of-positive-int + assert-that > @ + (number 414).is-int-zero + $.equal-to FALSE + "check is int zero of positive int" + +[] > check-is-int-zero-of-negative-int + assert-that > @ + (number -201).is-int-zero + $.equal-to FALSE + "check is int zero of negative int" + [] > check-is-int-of-int-zero assert-that > @ (number 0).is-int @@ -81,6 +165,18 @@ $.equal-to TRUE "check is-float of float zero" +[] > check-is-float-of-float-neg-zero + assert-that > @ + (number -0.0).is-float + $.equal-to TRUE + "check is-float of float negative zero" + +[] > check-is-int-of-float-neg-zero + assert-that > @ + (number -0.0).is-int + $.equal-to FALSE + "check is-int of float negative zero" + [] > check-is-int-positive-float assert-that > @ (number 123.35).is-int From ca3d830e9194e11cd69394ecc8033217ef88bbf3 Mon Sep 17 00:00:00 2001 From: Roman Korostinskiy <70313618+c71n93@users.noreply.github.com> Date: Mon, 23 Oct 2023 17:27:18 +0300 Subject: [PATCH 2/2] #146 cache calculations --- src/main/eo/org/eolang/math/number.eo | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/eo/org/eolang/math/number.eo b/src/main/eo/org/eolang/math/number.eo index d4fe0b8..befd49b 100644 --- a/src/main/eo/org/eolang/math/number.eo +++ b/src/main/eo/org/eolang/math/number.eo @@ -76,16 +76,18 @@ # Checking if number is floatint point 0.0 or -0.0 [] > is-float-zero ^.n > value! + 0.0.as-bytes > pos-zero-as-bytes! + -0.0.as-bytes > neg-zero-as-bytes! if. > @ eq. value.as-bytes - 0.0.as-bytes + pos-zero-as-bytes eq. value.neg.as-bytes - -0.0.as-bytes + neg-zero-as-bytes eq. value.neg.as-bytes - 0.0.as-bytes + pos-zero-as-bytes # Checking if number is NaN [] > is-nan