feat: add trigonometric methods and Num.pi constant to core library
Add acos, asin, atan, atan2, tan methods to Num class and expose Num.pi constant with value π. Include corresponding C primitives in wren_core.c and test files for each new method.
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
IO.print(0.acos) // expect: 1.5707963267949
|
||||
IO.print(1.acos) // expect: 0
|
||||
IO.print((-1).acos) // expect: 3.1415926535898
|
||||
@@ -0,0 +1,3 @@
|
||||
IO.print(0.asin) // expect: 0
|
||||
IO.print(1.asin) // expect: 1.5707963267949
|
||||
IO.print((-1).asin) // expect: -1.5707963267949
|
||||
@@ -0,0 +1,2 @@
|
||||
IO.print(0.atan) // expect: 0
|
||||
IO.print(1.atan) // expect: 0.78539816339745
|
||||
@@ -0,0 +1,4 @@
|
||||
IO.print(0.atan(0)) // expect: 0
|
||||
IO.print(0.atan(1)) // expect: 0
|
||||
|
||||
IO.print(1.atan(0)) // expect: 1.5707963267949
|
||||
@@ -0,0 +1,6 @@
|
||||
IO.print(0.cos) // expect: 1
|
||||
IO.print(Num.pi.cos) // expect: -1
|
||||
IO.print((2 * Num.pi).cos) // expect: 1
|
||||
|
||||
// this should of course be 0, but it's not that precise
|
||||
IO.print((Num.pi / 2).cos) // expect: 6.1232339957368e-17
|
||||
@@ -0,0 +1,6 @@
|
||||
IO.print(0.sin) // expect: 0
|
||||
IO.print((Num.pi / 2).sin) // expect: 1
|
||||
|
||||
// these should of course be 0, but it's not that precise
|
||||
IO.print(Num.pi.sin) // expect: 1.2246467991474e-16
|
||||
IO.print((2 * Num.pi).sin) // expect: -2.4492935982947e-16
|
||||
@@ -0,0 +1,3 @@
|
||||
IO.print(0.tan) // expect: 0
|
||||
IO.print((Num.pi / 4).tan) // expect: 1
|
||||
IO.print((-Num.pi / 4).tan) // expect: -1
|
||||
Reference in New Issue
Block a user