Math.hx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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(value:Float):Float;
  35. static function min(value1:Float,value2:Float):Float;
  36. static function max(value1:Float,value2:Float):Float;
  37. static function sin(value:Float):Float;
  38. static function cos(value:Float):Float;
  39. static function atan2(value1:Float,value2:Float):Float;
  40. static function tan(value:Float):Float;
  41. static function exp(value:Float):Float;
  42. static function log(value:Float):Float;
  43. static function sqrt(value:Float):Float;
  44. static function round(value:Float):Int;
  45. static function floor(value:Float):Int;
  46. static function ceil(value:Float):Int;
  47. static function atan(value:Float):Float;
  48. static function asin(value:Float):Float;
  49. static function acos(value:Float):Float;
  50. static function pow(value1:Float,value2:Float):Float;
  51. static function random() : Float;
  52. static function isFinite( f : Float ) : Bool;
  53. static function isNaN( f : Float ) : Bool;
  54. #if !php
  55. private static function __init__() : Void untyped {
  56. #if neko
  57. Math = neko.NekoMath__;
  58. neko.Boot.__classes.Math = Math;
  59. #else
  60. #if flash9
  61. NaN = __global__["Number"].NaN;
  62. NEGATIVE_INFINITY = __global__["Number"].NEGATIVE_INFINITY;
  63. POSITIVE_INFINITY = __global__["Number"].POSITIVE_INFINITY;
  64. #else
  65. Math.NaN = Number["NaN"];
  66. Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"];
  67. Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"];
  68. #end
  69. Math.isFinite = function(i) {
  70. return
  71. #if flash9
  72. __global__["isFinite"](i);
  73. #elseif flash
  74. _global["isFinite"](i);
  75. #elseif js
  76. __js__("isFinite")(i);
  77. #else
  78. false;
  79. #end
  80. };
  81. Math.isNaN = function(i) {
  82. return
  83. #if flash9
  84. __global__["isNaN"](i);
  85. #elseif flash
  86. _global["isNaN"](i);
  87. #elseif js
  88. __js__("isNaN")(i);
  89. #else
  90. false;
  91. #end
  92. };
  93. #end
  94. #if flash9
  95. #else
  96. Math.__name__ = ["Math"];
  97. #end
  98. }
  99. #end
  100. }