diff options
| author | gingerBill <bill@gingerbill.org> | 2021-11-16 14:26:04 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-11-16 14:26:04 +0000 |
| commit | 880af47ae72078ee894772b13477902aeb4e132b (patch) | |
| tree | 8563fb78b1e3c8bf66b84ec546cfc3a23b867636 /core/math/math_basic_js.odin | |
| parent | 91949b09929707ee969a5be778973e044d22d85c (diff) | |
Rename math_js.odin to math_basic_js.odin
Diffstat (limited to 'core/math/math_basic_js.odin')
| -rw-r--r-- | core/math/math_basic_js.odin | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/core/math/math_basic_js.odin b/core/math/math_basic_js.odin new file mode 100644 index 000000000..06c8b636d --- /dev/null +++ b/core/math/math_basic_js.odin @@ -0,0 +1,42 @@ +//+build js +package math + +import "core:intrinsics" + +foreign import "odin_env" + +@(default_calling_convention="c") +foreign odin_env { + @(link_name="sin") + sin_f64 :: proc(θ: f64) -> f64 --- + @(link_name="cos") + cos_f64 :: proc(θ: f64) -> f64 --- + @(link_name="pow") + pow_f64 :: proc(x, power: f64) -> f64 --- + @(link_name="fmuladd") + fmuladd_f64 :: proc(a, b, c: f64) -> f64 --- + @(link_name="ln") + ln_f64 :: proc(x: f64) -> f64 --- + @(link_name="exp") + exp_f64 :: proc(x: f64) -> f64 --- +} + +sqrt_f64 :: proc "contextless" (x: f64) -> f64 { + return intrinsics.sqrt(x) +} + +sqrt_f16 :: proc "c" (x: f16) -> f16 { return f16(sqrt_f64(f64(x))) } +sin_f16 :: proc "c" (θ: f16) -> f16 { return f16(sin_f64(f64(θ))) } +cos_f16 :: proc "c" (θ: f16) -> f16 { return f16(cos_f64(f64(θ))) } +pow_f16 :: proc "c" (x, power: f16) -> f16 { return f16(pow_f64(f64(x), f64(power))) } +fmuladd_f16 :: proc "c" (a, b, c: f16) -> f16 { return f16(fmuladd_f64(f64(a), f64(a), f64(c))) } +ln_f16 :: proc "c" (x: f16) -> f16 { return f16(ln_f64(f64(x))) } +exp_f16 :: proc "c" (x: f16) -> f16 { return f16(exp_f64(f64(x))) } + +sqrt_f32 :: proc "c" (x: f32) -> f32 { return f32(sqrt_f64(f64(x))) } +sin_f32 :: proc "c" (θ: f32) -> f32 { return f32(sin_f64(f64(θ))) } +cos_f32 :: proc "c" (θ: f32) -> f32 { return f32(cos_f64(f64(θ))) } +pow_f32 :: proc "c" (x, power: f32) -> f32 { return f32(pow_f64(f64(x), f64(power))) } +fmuladd_f32 :: proc "c" (a, b, c: f32) -> f32 { return f32(fmuladd_f64(f64(a), f64(a), f64(c))) } +ln_f32 :: proc "c" (x: f32) -> f32 { return f32(ln_f64(f64(x))) } +exp_f32 :: proc "c" (x: f32) -> f32 { return f32(exp_f64(f64(x))) }
\ No newline at end of file |