1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package math_linalg_hlsl
- import "core:math"
- cos_float :: proc "c" (x: float) -> float { return math.cos(x) }
- sin_float :: proc "c" (x: float) -> float { return math.sin(x) }
- tan_float :: proc "c" (x: float) -> float { return math.tan(x) }
- acos_float :: proc "c" (x: float) -> float { return math.acos(x) }
- asin_float :: proc "c" (x: float) -> float { return math.asin(x) }
- atan_float :: proc "c" (x: float) -> float { return math.atan(x) }
- atan2_float :: proc "c" (y, x: float) -> float { return math.atan2(y, x) }
- cosh_float :: proc "c" (x: float) -> float { return math.cosh(x) }
- sinh_float :: proc "c" (x: float) -> float { return math.sinh(x) }
- tanh_float :: proc "c" (x: float) -> float { return math.tanh(x) }
- acosh_float :: proc "c" (x: float) -> float { return math.acosh(x) }
- asinh_float :: proc "c" (x: float) -> float { return math.asinh(x) }
- atanh_float :: proc "c" (x: float) -> float { return math.atanh(x) }
- sqrt_float :: proc "c" (x: float) -> float { return math.sqrt(x) }
- rsqrt_float :: proc "c" (x: float) -> float { return 1.0/math.sqrt(x) }
- rcp_float :: proc "c" (x: float) -> float { return 1.0/x }
- pow_float :: proc "c" (x, y: float) -> float { return math.pow(x, y) }
- exp_float :: proc "c" (x: float) -> float { return math.exp(x) }
- log_float :: proc "c" (x: float) -> float { return math.ln(x) }
- log2_float :: proc "c" (x: float) -> float { return math.log(x, 2) }
- log10_float :: proc "c" (x: float) -> float { return math.log(x, 10) }
- exp2_float :: proc "c" (x: float) -> float { return math.pow(float(2), x) }
- sign_float :: proc "c" (x: float) -> float { return math.sign(x) }
- floor_float :: proc "c" (x: float) -> float { return math.floor(x) }
- round_float :: proc "c" (x: float) -> float { return math.round(x) }
- ceil_float :: proc "c" (x: float) -> float { return math.ceil(x) }
- isnan_float :: proc "c" (x: float) -> bool { return math.classify(x) == .NaN}
- fmod_float :: proc "c" (x, y: float) -> float { return math.mod(x, y) }
- frac_float :: proc "c" (x: float) -> float {
- if x >= 0 {
- return x - math.trunc(x)
- }
- return math.trunc(-x) + x
- }
- cos_double :: proc "c" (x: double) -> double { return math.cos(x) }
- sin_double :: proc "c" (x: double) -> double { return math.sin(x) }
- tan_double :: proc "c" (x: double) -> double { return math.tan(x) }
- acos_double :: proc "c" (x: double) -> double { return math.acos(x) }
- asin_double :: proc "c" (x: double) -> double { return math.asin(x) }
- atan_double :: proc "c" (x: double) -> double { return math.atan(x) }
- atan2_double :: proc "c" (y, x: double) -> double { return math.atan2(y, x) }
- cosh_double :: proc "c" (x: double) -> double { return math.cosh(x) }
- sinh_double :: proc "c" (x: double) -> double { return math.sinh(x) }
- tanh_double :: proc "c" (x: double) -> double { return math.tanh(x) }
- acosh_double :: proc "c" (x: double) -> double { return math.acosh(x) }
- asinh_double :: proc "c" (x: double) -> double { return math.asinh(x) }
- atanh_double :: proc "c" (x: double) -> double { return math.atanh(x) }
- sqrt_double :: proc "c" (x: double) -> double { return math.sqrt(x) }
- rsqrt_double :: proc "c" (x: double) -> double { return 1.0/math.sqrt(x) }
- rcp_double :: proc "c" (x: double) -> double { return 1.0/x }
- pow_double :: proc "c" (x, y: double) -> double { return math.pow(x, y) }
- exp_double :: proc "c" (x: double) -> double { return math.exp(x) }
- log_double :: proc "c" (x: double) -> double { return math.ln(x) }
- log2_double :: proc "c" (x: double) -> double { return math.log(x, 2) }
- log10_double :: proc "c" (x: double) -> double { return math.log(x, 10) }
- exp2_double :: proc "c" (x: double) -> double { return math.pow(double(2), x) }
- sign_double :: proc "c" (x: double) -> double { return math.sign(x) }
- floor_double :: proc "c" (x: double) -> double { return math.floor(x) }
- round_double :: proc "c" (x: double) -> double { return math.round(x) }
- ceil_double :: proc "c" (x: double) -> double { return math.ceil(x) }
- isnan_double :: proc "c" (x: double) -> bool { return math.classify(x) == .NaN}
- fmod_double :: proc "c" (x, y: double) -> double { return math.mod(x, y) }
- frac_double :: proc "c" (x: double) -> double {
- if x >= 0 {
- return x - math.trunc(x)
- }
- return math.trunc(-x) + x
- }
|