linalg_glsl_math.odin 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package math_linalg_glsl
  2. import "core:math"
  3. @(require_results) cos_f32 :: proc "c" (x: f32) -> f32 { return math.cos(x) }
  4. @(require_results) sin_f32 :: proc "c" (x: f32) -> f32 { return math.sin(x) }
  5. @(require_results) tan_f32 :: proc "c" (x: f32) -> f32 { return math.tan(x) }
  6. @(require_results) acos_f32 :: proc "c" (x: f32) -> f32 { return math.acos(x) }
  7. @(require_results) asin_f32 :: proc "c" (x: f32) -> f32 { return math.asin(x) }
  8. @(require_results) atan_f32 :: proc "c" (x: f32) -> f32 { return math.atan(x) }
  9. @(require_results) atan2_f32 :: proc "c" (y, x: f32) -> f32 { return math.atan2(y, x) }
  10. @(require_results) cosh_f32 :: proc "c" (x: f32) -> f32 { return math.cosh(x) }
  11. @(require_results) sinh_f32 :: proc "c" (x: f32) -> f32 { return math.sinh(x) }
  12. @(require_results) tanh_f32 :: proc "c" (x: f32) -> f32 { return math.tanh(x) }
  13. @(require_results) acosh_f32 :: proc "c" (x: f32) -> f32 { return math.acosh(x) }
  14. @(require_results) asinh_f32 :: proc "c" (x: f32) -> f32 { return math.asinh(x) }
  15. @(require_results) atanh_f32 :: proc "c" (x: f32) -> f32 { return math.atanh(x) }
  16. @(require_results) sqrt_f32 :: proc "c" (x: f32) -> f32 { return math.sqrt(x) }
  17. @(require_results) inversesqrt_f32 :: proc "c" (x: f32) -> f32 { return 1.0/math.sqrt(x) }
  18. @(require_results) pow_f32 :: proc "c" (x, y: f32) -> f32 { return math.pow(x, y) }
  19. @(require_results) exp_f32 :: proc "c" (x: f32) -> f32 { return math.exp(x) }
  20. @(require_results) log_f32 :: proc "c" (x: f32) -> f32 { return math.ln(x) }
  21. @(require_results) exp2_f32 :: proc "c" (x: f32) -> f32 { return math.pow(f32(2), x) }
  22. @(require_results) sign_f32 :: proc "c" (x: f32) -> f32 { return math.sign(x) }
  23. @(require_results) floor_f32 :: proc "c" (x: f32) -> f32 { return math.floor(x) }
  24. @(require_results) trunc_f32 :: proc "c" (x: f32) -> f32 { return math.trunc(x) }
  25. @(require_results) round_f32 :: proc "c" (x: f32) -> f32 { return math.round(x) }
  26. @(require_results) ceil_f32 :: proc "c" (x: f32) -> f32 { return math.ceil(x) }
  27. @(require_results) mod_f32 :: proc "c" (x, y: f32) -> f32 { return math.mod(x, y) }
  28. @(require_results)
  29. fract_f32 :: proc "c" (x: f32) -> f32 {
  30. if x >= 0 {
  31. return x - math.trunc(x)
  32. }
  33. return math.trunc(-x) + x
  34. }
  35. @(require_results) cos_f64 :: proc "c" (x: f64) -> f64 { return math.cos(x) }
  36. @(require_results) sin_f64 :: proc "c" (x: f64) -> f64 { return math.sin(x) }
  37. @(require_results) tan_f64 :: proc "c" (x: f64) -> f64 { return math.tan(x) }
  38. @(require_results) acos_f64 :: proc "c" (x: f64) -> f64 { return math.acos(x) }
  39. @(require_results) asin_f64 :: proc "c" (x: f64) -> f64 { return math.asin(x) }
  40. @(require_results) atan_f64 :: proc "c" (x: f64) -> f64 { return math.atan(x) }
  41. @(require_results) atan2_f64 :: proc "c" (y, x: f64) -> f64 { return math.atan2(y, x) }
  42. @(require_results) cosh_f64 :: proc "c" (x: f64) -> f64 { return math.cosh(x) }
  43. @(require_results) sinh_f64 :: proc "c" (x: f64) -> f64 { return math.sinh(x) }
  44. @(require_results) tanh_f64 :: proc "c" (x: f64) -> f64 { return math.tanh(x) }
  45. @(require_results) acosh_f64 :: proc "c" (x: f64) -> f64 { return math.acosh(x) }
  46. @(require_results) asinh_f64 :: proc "c" (x: f64) -> f64 { return math.asinh(x) }
  47. @(require_results) atanh_f64 :: proc "c" (x: f64) -> f64 { return math.atanh(x) }
  48. @(require_results) sqrt_f64 :: proc "c" (x: f64) -> f64 { return math.sqrt(x) }
  49. @(require_results) inversesqrt_f64 :: proc "c" (x: f64) -> f64 { return 1.0/math.sqrt(x) }
  50. @(require_results) pow_f64 :: proc "c" (x, y: f64) -> f64 { return math.pow(x, y) }
  51. @(require_results) exp_f64 :: proc "c" (x: f64) -> f64 { return math.exp(x) }
  52. @(require_results) log_f64 :: proc "c" (x: f64) -> f64 { return math.ln(x) }
  53. @(require_results) exp2_f64 :: proc "c" (x: f64) -> f64 { return math.pow(f64(2), x) }
  54. @(require_results) sign_f64 :: proc "c" (x: f64) -> f64 { return math.sign(x) }
  55. @(require_results) floor_f64 :: proc "c" (x: f64) -> f64 { return math.floor(x) }
  56. @(require_results) trunc_f64 :: proc "c" (x: f64) -> f64 { return math.trunc(x) }
  57. @(require_results) round_f64 :: proc "c" (x: f64) -> f64 { return math.round(x) }
  58. @(require_results) ceil_f64 :: proc "c" (x: f64) -> f64 { return math.ceil(x) }
  59. @(require_results) mod_f64 :: proc "c" (x, y: f64) -> f64 { return math.mod(x, y) }
  60. @(require_results)
  61. fract_f64 :: proc "c" (x: f64) -> f64 {
  62. if x >= 0 {
  63. return x - math.trunc(x)
  64. }
  65. return math.trunc(-x) + x
  66. }