diff options
author | Eduardo Julian | 2019-07-24 23:23:13 -0400 |
---|---|---|
committer | Eduardo Julian | 2019-07-24 23:23:13 -0400 |
commit | 30c19b40f5fd583d19aa7cf495a19c1b91f86320 (patch) | |
tree | 77cda2c601e7975b665a358b96b7ae00882d3ed9 /stdlib/source/test | |
parent | 68b37de7281d31470263d0e06bc72b1c5b6c2e32 (diff) |
No more "f/"-prefixed functions.
+ No more "m/"-prefixed functions.
Diffstat (limited to 'stdlib/source/test')
-rw-r--r-- | stdlib/source/test/lux.lux | 36 | ||||
-rw-r--r-- | stdlib/source/test/lux/data/color.lux | 45 | ||||
-rw-r--r-- | stdlib/source/test/lux/data/number/complex.lux | 69 | ||||
-rw-r--r-- | stdlib/source/test/lux/data/number/frac.lux | 13 | ||||
-rw-r--r-- | stdlib/source/test/lux/macro/code.lux | 11 | ||||
-rw-r--r-- | stdlib/source/test/lux/math.lux | 29 | ||||
-rw-r--r-- | stdlib/source/test/lux/math/infix.lux | 6 | ||||
-rw-r--r-- | stdlib/source/test/lux/math/modular.lux | 44 |
8 files changed, 134 insertions, 119 deletions
diff --git a/stdlib/source/test/lux.lux b/stdlib/source/test/lux.lux index 945fd9c54..e1039d506 100644 --- a/stdlib/source/test/lux.lux +++ b/stdlib/source/test/lux.lux @@ -1,10 +1,10 @@ (.with-expansions [<host-modules> (.as-is [runtime (#+)] [primitive (#+)] [structure (#+)] + [function (#+)] [reference (#+)] [case (#+)] [loop (#+)] - [function (#+)] [extension (#+)])] (.module: ["/" lux #* @@ -19,7 +19,10 @@ [data ["." name] [number - ["." i64]]] + ["." i64] + ["." int] + ["." rev] + ["f" frac]]] ["." math] ["_" test (#+ Test)] ## These modules do not need to be tested. @@ -35,7 +38,7 @@ [format [css (#+)] [markdown (#+)]]] - [target + ["@" target [js (#+)] [python (#+)] [lua (#+)] @@ -47,6 +50,8 @@ [compiler [phase [generation + [jvm (#+) + <host-modules>] [js (#+) <host-modules>] [python (#+) @@ -291,9 +296,10 @@ on-default))) (_.test "Can pick code depending on the host/platform being targeted." (n/= on-valid-host - (for {"JVM" on-valid-host - "JS" on-valid-host} - on-default)))))) + (`` (for {(~~ (static @.old)) on-valid-host + (~~ (static @.jvm)) on-valid-host + (~~ (static @.js)) on-valid-host} + on-default))))))) (def: test (<| (_.context (name.module (name-of /._))) @@ -314,10 +320,10 @@ [(<| (_.context <context>) (..minimum-and-maximum <gen> <=> [<lt> <min>] [<gt> <max>]))] - [i/= i/< i/min i/> i/max r.int "Integers."] - [n/= n/< n/min n/> n/max r.nat "Natural numbers."] - [r/= r/< r/min r/> r/max r.rev "Revolutions."] - [f/= f/< f/min f/> f/max r.frac "Fractions."] + [i/= i/< i/min i/> i/max r.int "Integers."] + [n/= n/< n/min n/> n/max r.nat "Natural numbers."] + [r/= r/< r/min r/> r/max r.rev "Revolutions."] + [f.= f.< f.min f.> f.max r.safe-frac "Fractions."] ))))) (<| (_.context "Conversion.") (`` ($_ _.and @@ -326,11 +332,11 @@ " " (%.name (name-of <backward>)))) (..conversion <gen> <forward> <backward> <=>))] - [i/= .nat .int (r@map (i/% +1,000,000) r.int)] - [n/= .int .nat (r@map (n/% 1,000,000) r.nat)] - [i/= .int-to-frac .frac-to-int (r@map (i/% +1,000,000) r.int)] - [f/= .frac-to-int .int-to-frac (r@map (|>> (i/% +1,000,000) .int-to-frac) r.int)] - [r/= .rev-to-frac .frac-to-rev frac-rev] + [i/= .nat .int (r@map (i/% +1,000,000) r.int)] + [n/= .int .nat (r@map (n/% 1,000,000) r.nat)] + [i/= int.frac f.int (r@map (i/% +1,000,000) r.int)] + [f.= f.int int.frac (r@map (|>> (i/% +1,000,000) int.frac) r.int)] + [r/= rev.frac f.rev frac-rev] ))))) (<| (_.context "Prelude macros.") ..prelude-macros) diff --git a/stdlib/source/test/lux/data/color.lux b/stdlib/source/test/lux/data/color.lux index ee3bdffb1..79e771ce9 100644 --- a/stdlib/source/test/lux/data/color.lux +++ b/stdlib/source/test/lux/data/color.lux @@ -9,7 +9,8 @@ [data ["%" text/format (#+ format)] [number - ["." frac]]] + ["." int] + ["f" frac]]] ["." math ["r" random (#+ Random)]]] {1 @@ -22,7 +23,7 @@ (def: scale (-> Nat Frac) - (|>> .int int-to-frac)) + (|>> .int int.frac)) (def: square (-> Frac Frac) (math.pow +2.0)) @@ -30,10 +31,10 @@ (-> Color Color Frac) (let [[fr fg fb] (/.to-rgb from) [tr tg tb] (/.to-rgb to)] - (math.pow +0.5 ($_ f/+ - (|> (scale tr) (f/- (scale fr)) square) - (|> (scale tg) (f/- (scale fg)) square) - (|> (scale tb) (f/- (scale fb)) square))))) + (math.pow +0.5 ($_ f.+ + (|> (scale tr) (f.- (scale fr)) square) + (|> (scale tg) (f.- (scale fg)) square) + (|> (scale tb) (f.- (scale fb)) square))))) (def: error-margin Frac +1.8) @@ -56,32 +57,32 @@ (do r.monad [any ..color colorful (|> color - (r.filter (function (_ color) (|> (distance color black) (f/>= +100.0)))) - (r.filter (function (_ color) (|> (distance color white) (f/>= +100.0))))) + (r.filter (function (_ color) (|> (distance color black) (f.>= +100.0)))) + (r.filter (function (_ color) (|> (distance color white) (f.>= +100.0))))) mediocre (|> color (r.filter (|>> saturation ((function (_ saturation) - (and (f/>= +0.25 saturation) - (f/<= +0.75 saturation))))))) - ratio (|> r.safe-frac (r.filter (f/>= +0.5)))] + (and (f.>= +0.25 saturation) + (f.<= +0.75 saturation))))))) + ratio (|> r.safe-frac (r.filter (f.>= +0.5)))] ($_ _.and ($equivalence.spec /.equivalence ..color) (_.test "Can convert to/from HSL." (|> any /.to-hsl /.from-hsl (distance any) - (f/<= error-margin))) + (f.<= error-margin))) (_.test "Can convert to/from HSB." (|> any /.to-hsb /.from-hsb (distance any) - (f/<= error-margin))) + (f.<= error-margin))) (_.test "Can convert to/from CMYK." (|> any /.to-cmyk /.from-cmyk (distance any) - (f/<= error-margin))) + (f.<= error-margin))) (_.test "Can interpolate between 2 colors." - (and (f/<= (distance colorful black) + (and (f.<= (distance colorful black) (distance (/.darker ratio colorful) black)) - (f/<= (distance colorful white) + (f.<= (distance colorful white) (distance (/.brighter ratio colorful) white)))) (_.test "Can calculate complement." (let [~any (/.complement any) @@ -89,17 +90,17 @@ (and (not (/@= any ~any)) (/@= any (/.complement ~any))))) (_.test "Can saturate color." - (f/> (saturation mediocre) + (f.> (saturation mediocre) (saturation (/.saturate ratio mediocre)))) (_.test "Can de-saturate color." - (f/< (saturation mediocre) + (f.< (saturation mediocre) (saturation (/.de-saturate ratio mediocre)))) (_.test "Can gray-scale color." (let [gray'ed (/.gray-scale mediocre)] - (and (f/= +0.0 + (and (f.= +0.0 (saturation gray'ed)) (|> (luminance gray'ed) - (f/- (luminance mediocre)) - frac.abs - (f/<= error-margin))))) + (f.- (luminance mediocre)) + f.abs + (f.<= error-margin))))) )))) diff --git a/stdlib/source/test/lux/data/number/complex.lux b/stdlib/source/test/lux/data/number/complex.lux index 52e43a77e..1aa14e5be 100644 --- a/stdlib/source/test/lux/data/number/complex.lux +++ b/stdlib/source/test/lux/data/number/complex.lux @@ -11,7 +11,8 @@ ["$." codec]]}] [data [number - ["." frac]] + ["." int] + ["f" frac]] [collection ["." list ("#@." functor)]]] ["." math @@ -23,19 +24,19 @@ (def: (within? margin standard value) (-> Frac Complex Complex Bit) - (let [real-dist (frac.abs (f/- (get@ #/.real standard) - (get@ #/.real value))) - imgn-dist (frac.abs (f/- (get@ #/.imaginary standard) - (get@ #/.imaginary value)))] - (and (f/< margin real-dist) - (f/< margin imgn-dist)))) + (let [real-dist (f.abs (f.- (get@ #/.real standard) + (get@ #/.real value))) + imgn-dist (f.abs (f.- (get@ #/.imaginary standard) + (get@ #/.imaginary value)))] + (and (f.< margin real-dist) + (f.< margin imgn-dist)))) (def: dimension (Random Frac) (do r.monad [factor (|> r.nat (:: @ map (|>> (n/% 1000) (n/max 1)))) - measure (|> r.safe-frac (r.filter (f/> +0.0)))] - (wrap (f/* (|> factor .int int-to-frac) + measure (|> r.safe-frac (r.filter (f.> +0.0)))] + (wrap (f.* (|> factor .int int.frac) measure)))) (def: #export complex @@ -53,11 +54,11 @@ ($_ _.and (_.test "Can build and tear apart complex numbers" (let [r+i (/.complex real imaginary)] - (and (f/= real (get@ #/.real r+i)) - (f/= imaginary (get@ #/.imaginary r+i))))) + (and (f.= real (get@ #/.real r+i)) + (f.= imaginary (get@ #/.imaginary r+i))))) (_.test "If either the real part or the imaginary part is NaN, the composite is NaN." - (and (/.not-a-number? (/.complex frac.not-a-number imaginary)) - (/.not-a-number? (/.complex real frac.not-a-number)))) + (and (/.not-a-number? (/.complex f.not-a-number imaginary)) + (/.not-a-number? (/.complex real f.not-a-number)))) ))) (def: absolute-value @@ -69,16 +70,16 @@ (_.test "Absolute value of complex >= absolute value of any of the parts." (let [r+i (/.complex real imaginary) abs (get@ #/.real (/.abs r+i))] - (and (f/>= (frac.abs real) abs) - (f/>= (frac.abs imaginary) abs)))) + (and (f.>= (f.abs real) abs) + (f.>= (f.abs imaginary) abs)))) (_.test "The absolute value of a complex number involving a NaN on either dimension, results in a NaN value." - (and (frac.not-a-number? (get@ #/.real (/.abs (/.complex frac.not-a-number imaginary)))) - (frac.not-a-number? (get@ #/.real (/.abs (/.complex real frac.not-a-number)))))) + (and (f.not-a-number? (get@ #/.real (/.abs (/.complex f.not-a-number imaginary)))) + (f.not-a-number? (get@ #/.real (/.abs (/.complex real f.not-a-number)))))) (_.test "The absolute value of a complex number involving an infinity on either dimension, results in an infinite value." - (and (f/= frac.positive-infinity (get@ #/.real (/.abs (/.complex frac.positive-infinity imaginary)))) - (f/= frac.positive-infinity (get@ #/.real (/.abs (/.complex real frac.positive-infinity)))) - (f/= frac.positive-infinity (get@ #/.real (/.abs (/.complex frac.negative-infinity imaginary)))) - (f/= frac.positive-infinity (get@ #/.real (/.abs (/.complex real frac.negative-infinity)))))) + (and (f.= f.positive-infinity (get@ #/.real (/.abs (/.complex f.positive-infinity imaginary)))) + (f.= f.positive-infinity (get@ #/.real (/.abs (/.complex real f.positive-infinity)))) + (f.= f.positive-infinity (get@ #/.real (/.abs (/.complex f.negative-infinity imaginary)))) + (f.= f.positive-infinity (get@ #/.real (/.abs (/.complex real f.negative-infinity)))))) ))) (def: number @@ -91,16 +92,16 @@ (_.test "Adding 2 complex numbers is the same as adding their parts." (let [z (/.+ y x)] (and (/.= z - (/.complex (f/+ (get@ #/.real y) + (/.complex (f.+ (get@ #/.real y) (get@ #/.real x)) - (f/+ (get@ #/.imaginary y) + (f.+ (get@ #/.imaginary y) (get@ #/.imaginary x))))))) (_.test "Subtracting 2 complex numbers is the same as adding their parts." (let [z (/.- y x)] (and (/.= z - (/.complex (f/- (get@ #/.real y) + (/.complex (f.- (get@ #/.real y) (get@ #/.real x)) - (f/- (get@ #/.imaginary y) + (f.- (get@ #/.imaginary y) (get@ #/.imaginary x))))))) (_.test "Subtraction is the inverse of addition." (and (|> x (/.+ y) (/.- y) (within? margin-of-error x)) @@ -127,9 +128,9 @@ ($_ _.and (_.test "Conjugate has same real part as original, and opposite of imaginary part." (let [cx (/.conjugate x)] - (and (f/= (get@ #/.real x) + (and (f.= (get@ #/.real x) (get@ #/.real cx)) - (f/= (frac.negate (get@ #/.imaginary x)) + (f.= (f.negate (get@ #/.imaginary x)) (get@ #/.imaginary cx))))) (_.test "The reciprocal functions is its own inverse." (|> x /.reciprocal /.reciprocal (within? margin-of-error x))) @@ -137,16 +138,16 @@ (|> x (/.* (/.reciprocal x)) (within? margin-of-error /.one))) (_.test "Absolute value of signum is always root2(2), 1 or 0." (let [signum-abs (|> x /.signum /.abs (get@ #/.real))] - (or (f/= +0.0 signum-abs) - (f/= +1.0 signum-abs) - (f/= (math.pow +0.5 +2.0) signum-abs)))) + (or (f.= +0.0 signum-abs) + (f.= +1.0 signum-abs) + (f.= (math.pow +0.5 +2.0) signum-abs)))) (_.test "Negation is its own inverse." (let [there (/.negate x) back-again (/.negate there)] (and (not (/.= there x)) (/.= back-again x)))) (_.test "Negation doesn't change the absolute value." - (f/= (get@ #/.real (/.abs x)) + (f.= (get@ #/.real (/.abs x)) (get@ #/.real (/.abs (/.negate x))))) ))) @@ -158,8 +159,8 @@ (def: trigonometry Test (do r.monad - [angle (|> ..complex (:: @ map (|>> (update@ #/.real (f/% +1.0)) - (update@ #/.imaginary (f/% +1.0)))))] + [angle (|> ..complex (:: @ map (|>> (update@ #/.real (f.% +1.0)) + (update@ #/.imaginary (f.% +1.0)))))] ($_ _.and (_.test "Arc-sine is the inverse of sine." (trigonometric-symmetry /.sin /.asin angle)) @@ -187,7 +188,7 @@ (_.test "Can calculate the N roots for any complex number." (|> sample (/.roots degree) - (list@map (/.pow' (|> degree .int int-to-frac))) + (list@map (/.pow' (|> degree .int int.frac))) (list.every? (within? margin-of-error sample)))))) (def: #export test diff --git a/stdlib/source/test/lux/data/number/frac.lux b/stdlib/source/test/lux/data/number/frac.lux index 736f82457..257d4c049 100644 --- a/stdlib/source/test/lux/data/number/frac.lux +++ b/stdlib/source/test/lux/data/number/frac.lux @@ -14,11 +14,12 @@ ["r" random]]] {1 ["." / - //]}) + [// #* + ["." int]]]}) (def: #export test Test - (let [gen-frac (:: r.monad map (|>> (i/% +100) .int-to-frac) r.int)] + (let [gen-frac (:: r.monad map (|>> (i/% +100) int.frac) r.int)] (<| (_.context (%.name (name-of /._))) (`` ($_ _.and ($equivalence.spec /.equivalence gen-frac) @@ -38,15 +39,15 @@ ## )) (_.test "Alternate notations." - (and (f/= (bin "+1100.1001") + (and (/.= (bin "+1100.1001") (bin "+11,00.10,01")) - (f/= (oct "-6152.43") + (/.= (oct "-6152.43") (oct "-615,2.43")) - (f/= (hex "+deadBE.EF") + (/.= (hex "+deadBE.EF") (hex "+dead,BE.EF")))) (do r.monad [sample gen-frac] (_.test (format (%.name (name-of /.to-bits)) " & " (%.name (name-of /.from-bits))) - (|> sample /.to-bits /.from-bits (f/= sample)))) + (|> sample /.to-bits /.from-bits (/.= sample)))) ))))) diff --git a/stdlib/source/test/lux/macro/code.lux b/stdlib/source/test/lux/macro/code.lux index f395c5509..e0bcd9df4 100644 --- a/stdlib/source/test/lux/macro/code.lux +++ b/stdlib/source/test/lux/macro/code.lux @@ -5,7 +5,10 @@ ["r" math/random (#+ Random)] ["_" test (#+ Test)] [data - ["." text ("#@." equivalence)]]] + ["." text ("#@." equivalence)] + [number + ["." int] + ["f" frac]]]] {1 ["." /]}) @@ -21,9 +24,9 @@ below (:: @ map (i/% +100) r.int) #let [frac (|> below (i// +100) - .int-to-frac - (f/+ (.int-to-frac above)) - (f/* -1.0))] + int.frac + (f.+ (int.frac above)) + (f.* -1.0))] text (r.ascii 10) short (r.ascii/alpha 10) module (r.ascii/alpha 10) diff --git a/stdlib/source/test/lux/math.lux b/stdlib/source/test/lux/math.lux index 46b5171ee..ffe990c50 100644 --- a/stdlib/source/test/lux/math.lux +++ b/stdlib/source/test/lux/math.lux @@ -7,7 +7,8 @@ [data ["." bit ("#@." equivalence)] [number - ["." frac]]]] + ["." int] + ["f" frac]]]] {1 ["." /]} ["." / #_ @@ -19,8 +20,8 @@ (def: (within? margin-of-error standard value) (-> Frac Frac Frac Bit) - (f/< margin-of-error - (frac.abs (f/- standard value)))) + (f.< margin-of-error + (f.abs (f.- standard value)))) (def: margin Frac +0.0000001) @@ -35,7 +36,7 @@ ($_ _.and (<| (_.context "Trigonometry") (do r.monad - [angle (|> r.safe-frac (:: @ map (f/* /.tau)))] + [angle (|> r.safe-frac (:: @ map (f.* /.tau)))] ($_ _.and (_.test "Sine and arc-sine are inverse functions." (trigonometric-symmetry /.sin /.asin angle)) @@ -46,26 +47,26 @@ ))) (<| (_.context "Rounding") (do r.monad - [sample (|> r.safe-frac (:: @ map (f/* +1000.0)))] + [sample (|> r.safe-frac (:: @ map (f.* +1000.0)))] ($_ _.and (_.test "The ceiling will be an integer value, and will be >= the original." (let [ceil'd (/.ceil sample)] - (and (|> ceil'd frac-to-int int-to-frac (f/= ceil'd)) - (f/>= sample ceil'd) - (f/<= +1.0 (f/- sample ceil'd))))) + (and (|> ceil'd f.int int.frac (f.= ceil'd)) + (f.>= sample ceil'd) + (f.<= +1.0 (f.- sample ceil'd))))) (_.test "The floor will be an integer value, and will be <= the original." (let [floor'd (/.floor sample)] - (and (|> floor'd frac-to-int int-to-frac (f/= floor'd)) - (f/<= sample floor'd) - (f/<= +1.0 (f/- floor'd sample))))) + (and (|> floor'd f.int int.frac (f.= floor'd)) + (f.<= sample floor'd) + (f.<= +1.0 (f.- floor'd sample))))) (_.test "The round will be an integer value, and will be < or > or = the original." (let [round'd (/.round sample)] - (and (|> round'd frac-to-int int-to-frac (f/= round'd)) - (f/<= +1.0 (frac.abs (f/- sample round'd)))))) + (and (|> round'd f.int int.frac (f.= round'd)) + (f.<= +1.0 (f.abs (f.- sample round'd)))))) ))) (<| (_.context "Exponentials and logarithms") (do r.monad - [sample (|> r.safe-frac (:: @ map (f/* +10.0)))] + [sample (|> r.safe-frac (:: @ map (f.* +10.0)))] (_.test "Logarithm is the inverse of exponential." (|> sample /.exp /.log (within? +0.000000000000001 sample))))) (<| (_.context "Greatest-Common-Divisor and Least-Common-Multiple") diff --git a/stdlib/source/test/lux/math/infix.lux b/stdlib/source/test/lux/math/infix.lux index bbad48621..e2850f549 100644 --- a/stdlib/source/test/lux/math/infix.lux +++ b/stdlib/source/test/lux/math/infix.lux @@ -5,7 +5,9 @@ ["r" math/random] ["_" test (#+ Test)] [data - ["." bit ("#@." equivalence)]]] + ["." bit ("#@." equivalence)] + [number + ["f" frac]]]] {1 ["." / ["." //]]}) @@ -26,7 +28,7 @@ (n/= (//.n/gcd parameter subject) (/.infix [subject //.n/gcd parameter]))) (_.test "Can call unary functions." - (f/= (//.sin angle) + (f.= (//.sin angle) (/.infix [//.sin angle]))) (_.test "Can use regular syntax in the middle of infix code." (n/= (//.n/gcd extra (n/* parameter subject)) diff --git a/stdlib/source/test/lux/math/modular.lux b/stdlib/source/test/lux/math/modular.lux index a600acfab..8a2ba754d 100644 --- a/stdlib/source/test/lux/math/modular.lux +++ b/stdlib/source/test/lux/math/modular.lux @@ -56,7 +56,7 @@ (|> (i/! (value param) (value subject)) (/.mod modulus) - (/.m/= (m/! param subject))))) + (/.= (m/! param subject))))) (def: #export test Test @@ -81,30 +81,30 @@ (i/= _normalM (/.to-int normalM))) (_.test "Can compare mod'ed values." - (and (/.m/= subject subject) - ((comparison /.m/= i/=) param subject) - ((comparison /.m/< i/<) param subject) - ((comparison /.m/<= i/<=) param subject) - ((comparison /.m/> i/>) param subject) - ((comparison /.m/>= i/>=) param subject))) + (and (/.= subject subject) + ((comparison /.= i/=) param subject) + ((comparison /.< i/<) param subject) + ((comparison /.<= i/<=) param subject) + ((comparison /.> i/>) param subject) + ((comparison /.>= i/>=) param subject))) (_.test "Mod'ed values are ordered." - (and (bit@= (/.m/< param subject) - (not (/.m/>= param subject))) - (bit@= (/.m/> param subject) - (not (/.m/<= param subject))) - (bit@= (/.m/= param subject) - (not (or (/.m/< param subject) - (/.m/> param subject)))))) + (and (bit@= (/.< param subject) + (not (/.>= param subject))) + (bit@= (/.> param subject) + (not (/.<= param subject))) + (bit@= (/.= param subject) + (not (or (/.< param subject) + (/.> param subject)))))) (_.test "Can do arithmetic." - (and ((arithmetic normalM /.m/+ i/+) param subject) - ((arithmetic normalM /.m/- i/-) param subject) - ((arithmetic normalM /.m/* i/*) param subject))) + (and ((arithmetic normalM /.+ i/+) param subject) + ((arithmetic normalM /.- i/-) param subject) + ((arithmetic normalM /.* i/*) param subject))) (_.test "Can sometimes find multiplicative inverse." (case (/.inverse subject) (#.Some subject^-1) (|> subject - (/.m/* subject^-1) - (/.m/= (/.mod normalM +1))) + (/.* subject^-1) + (/.= (/.mod normalM +1))) #.None true)) @@ -112,7 +112,7 @@ (let [(^open "mod/.") (/.codec normalM)] (case (|> subject mod/encode mod/decode) (#try.Success output) - (/.m/= subject output) + (/.= subject output) (#try.Failure error) false))) @@ -120,7 +120,7 @@ (case (/.equalize (/.mod normalM _subject) (/.mod copyM _param)) (#try.Success paramC) - (/.m/= param paramC) + (/.= param paramC) (#try.Failure error) false)) @@ -136,5 +136,5 @@ (/.congruent? normalM _subject _subject)) (_.test "If 2 numbers are congruent under a modulus, then they must also be equal under the same modulus." (bit@= (/.congruent? normalM _param _subject) - (/.m/= param subject))) + (/.= param subject))) )))) |