Math.hx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * Copyright (c) 2005, The haXe Project Contributors
  3. * All rights reserved.
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are met:
  6. *
  7. * - Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * - Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. *
  13. * THIS SOFTWARE IS PROVIDED BY THE HAXE PROJECT CONTRIBUTORS "AS IS" AND ANY
  14. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  15. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  16. * DISCLAIMED. IN NO EVENT SHALL THE HAXE PROJECT CONTRIBUTORS BE LIABLE FOR
  17. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  18. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  19. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  20. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  21. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  22. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  23. * DAMAGE.
  24. */
  25. /**
  26. This class defines mathematical functions and constants.
  27. **/
  28. extern class Math
  29. {
  30. static var PI(default,null) : Float;
  31. static var NaN(default,null) : Float;
  32. static var NEGATIVE_INFINITY(default,null) : Float;
  33. static var POSITIVE_INFINITY(default,null) : Float;
  34. static function abs(v:Float):Float;
  35. static function min(a:Float,b:Float):Float;
  36. static function max(a:Float,b:Float):Float;
  37. static function sin(v:Float):Float;
  38. static function cos(v:Float):Float;
  39. static function atan2(y:Float,x:Float):Float;
  40. static function tan(v:Float):Float;
  41. static function exp(v:Float):Float;
  42. static function log(v:Float):Float;
  43. static function sqrt(v:Float):Float;
  44. static function round(v:Float):Int;
  45. static function floor(v:Float):Int;
  46. static function ceil(v:Float):Int;
  47. static function atan(v:Float):Float;
  48. static function asin(v:Float):Float;
  49. static function acos(v:Float):Float;
  50. static function pow(v:Float,exp:Float):Float;
  51. static function random() : Float;
  52. static function isFinite( f : Float ) : Bool;
  53. static function isNaN( f : Float ) : Bool;
  54. private static function __init__() : Void untyped {
  55. #if flash9
  56. NaN = __global__["Number"].NaN;
  57. NEGATIVE_INFINITY = __global__["Number"].NEGATIVE_INFINITY;
  58. POSITIVE_INFINITY = __global__["Number"].POSITIVE_INFINITY;
  59. #else
  60. Math.__name__ = ["Math"];
  61. Math.NaN = Number["NaN"];
  62. Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"];
  63. Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"];
  64. #end
  65. #if js
  66. $hxClasses['Math'] = Math;
  67. #end
  68. Math.isFinite = function(i) {
  69. return
  70. #if flash9
  71. __global__["isFinite"](i);
  72. #elseif flash
  73. _global["isFinite"](i);
  74. #elseif js
  75. __js__("isFinite")(i);
  76. #else
  77. false;
  78. #end
  79. };
  80. Math.isNaN = function(i) {
  81. return
  82. #if flash9
  83. __global__["isNaN"](i);
  84. #elseif flash
  85. _global["isNaN"](i);
  86. #elseif js
  87. __js__("isNaN")(i);
  88. #else
  89. false;
  90. #end
  91. };
  92. }
  93. }