feat: add deg, rad, fraction, sign, truncate primitives to num class

Add five new numeric methods to the Wren core library: deg (convert radians to degrees), rad (convert degrees to radians), fraction (extract fractional part), sign (return -1, 0, or 1), and truncate (discard fractional part). Register all new primitives in wrenInitializeCore and include corresponding test files for fraction, sign, and truncate operations.
This commit is contained in:
Bob Nystrom
2015-03-07 06:43:02 +00:00
4 changed files with 84 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
IO.print(123.fraction) // expect: 0
IO.print((-123).fraction) // expect: -0
IO.print(0.fraction) // expect: 0
IO.print((-0).fraction) // expect: -0
IO.print(0.123.fraction) // expect: 0.123
IO.print(12.3.fraction) // expect: 0.3
IO.print((-0.123).fraction) // expect: -0.123
IO.print((-12.3).fraction) // expect: -0.3
// Using 32-bit representation, a longer mantissa will lead to
// approximation.
IO.print((1.23456789012345).fraction) // expect: 0.23456789012345
IO.print((-1.23456789012345).fraction) // expect: -0.23456789012345
IO.print((0.000000000000000000000000000000000000000001).fraction) // expect: 1e-42
IO.print((-0.000000000000000000000000000000000000000001).fraction) // expect: -1e-42
IO.print((1.000000000000000000000000000000000000000001).fraction) // expect: 0
IO.print((-1.000000000000000000000000000000000000000001).fraction) // expect: -0
+6
View File
@@ -0,0 +1,6 @@
IO.print(123.sign) // expect: 1
IO.print((-123).sign) // expect: -1
IO.print(0.sign) // expect: 0
IO.print((-0).sign) // expect: 0
IO.print(0.123.sign) // expect: 1
IO.print((-0.123).sign) // expect: -1
+13
View File
@@ -0,0 +1,13 @@
IO.print(123.truncate) // expect: 123
IO.print((-123).truncate) // expect: -123
IO.print(0.truncate) // expect: 0
IO.print((-0).truncate) // expect: -0
IO.print(0.123.truncate) // expect: 0
IO.print(12.3.truncate) // expect: 12
IO.print((-0.123).truncate) // expect: -0
IO.print((-12.3).truncate) // expect: -12
// Using 32-bit representation, values "beyond" those two will lead to
// approximation.
IO.print((12345678901234.5).truncate) // expect: 12345678901234
IO.print((-12345678901234.5).truncate) // expect: -12345678901234