mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-10 13:48:40 +01:00
core; num; add exp & log2
I've had a couple use cases in time that the code is significantly clearer with these, and makes porting less error prone
This commit is contained in:
@ -96,7 +96,15 @@ Whether the number is [not a number](http://en.wikipedia.org/wiki/NaN). This is
|
||||
|
||||
### **log**
|
||||
|
||||
The natural logarithm of the number.
|
||||
The natural logarithm of the number. Returns `nan` if the base is negative.
|
||||
|
||||
### **log2**
|
||||
|
||||
The binary (base-2) logarithm of the number. Returns `nan` if the base is negative.
|
||||
|
||||
### **exp**
|
||||
|
||||
The exponential `e` (Euler’s number) raised to the number. This: `eⁿ`.
|
||||
|
||||
### **pow**(power)
|
||||
|
||||
|
||||
@ -652,6 +652,8 @@ DEF_NUM_FN(sin, sin)
|
||||
DEF_NUM_FN(sqrt, sqrt)
|
||||
DEF_NUM_FN(tan, tan)
|
||||
DEF_NUM_FN(log, log)
|
||||
DEF_NUM_FN(log2, log2)
|
||||
DEF_NUM_FN(exp, exp)
|
||||
|
||||
DEF_PRIMITIVE(num_mod)
|
||||
{
|
||||
@ -1299,6 +1301,8 @@ void wrenInitializeCore(WrenVM* vm)
|
||||
PRIMITIVE(vm->numClass, "sqrt", num_sqrt);
|
||||
PRIMITIVE(vm->numClass, "tan", num_tan);
|
||||
PRIMITIVE(vm->numClass, "log", num_log);
|
||||
PRIMITIVE(vm->numClass, "log2", num_log2);
|
||||
PRIMITIVE(vm->numClass, "exp", num_exp);
|
||||
PRIMITIVE(vm->numClass, "%(_)", num_mod);
|
||||
PRIMITIVE(vm->numClass, "~", num_bitwiseNot);
|
||||
PRIMITIVE(vm->numClass, "..(_)", num_dotDot);
|
||||
|
||||
3
test/core/number/exp.wren
Normal file
3
test/core/number/exp.wren
Normal file
@ -0,0 +1,3 @@
|
||||
System.print(5.exp) // expect: 148.41315910258
|
||||
System.print(10.exp) // expect: 22026.465794807
|
||||
System.print((-1).exp) // expect: 0.36787944117144
|
||||
4
test/core/number/log2.wren
Normal file
4
test/core/number/log2.wren
Normal file
@ -0,0 +1,4 @@
|
||||
System.print(1024.log2) // expect: 10
|
||||
System.print(2048.log2) // expect: 11
|
||||
System.print(100.log2) // expect: 6.6438561897747
|
||||
System.print((-1).log2) // expect: nan
|
||||
Reference in New Issue
Block a user