|
2 | 2 | -- | See [Math Reference at MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math).
|
3 | 3 | module Math where
|
4 | 4 |
|
| 5 | +import Prelude |
| 6 | + |
5 | 7 | -- | An alias to make types in this module more explicit.
|
6 | 8 | type Radians = Number
|
7 | 9 |
|
8 | 10 | -- | Returns the absolute value of the argument.
|
9 |
| -foreign import abs "var abs = Math.abs;" :: Number -> Number |
| 11 | +foreign import abs :: Number -> Number |
10 | 12 |
|
11 | 13 | -- | Returns the inverse cosine of the argument.
|
12 |
| -foreign import acos "var acos = Math.acos;" :: Number -> Radians |
| 14 | +foreign import acos :: Number -> Radians |
13 | 15 |
|
14 | 16 | -- | Returns the inverse sine of the argument.
|
15 |
| -foreign import asin "var asin = Math.asin;" :: Number -> Radians |
| 17 | +foreign import asin :: Number -> Radians |
16 | 18 |
|
17 | 19 | -- | Returns the inverse tangent of the argument.
|
18 |
| -foreign import atan "var atan = Math.atan;" :: Number -> Radians |
| 20 | +foreign import atan :: Number -> Radians |
19 | 21 |
|
20 | 22 | -- | Four-quadrant tangent inverse. Given the arguments `y` and `x`, returns
|
21 | 23 | -- | the inverse tangent of `y / x`, where the signs of both arguments are used
|
22 | 24 | -- | to determine the sign of the result.
|
23 | 25 | -- | If the first argument is negative, the result will be negative.
|
24 | 26 | -- | The result is the angle between the positive x axis and a point `(x, y)`.
|
25 |
| -foreign import atan2 |
26 |
| - """ |
27 |
| - function atan2(y){ |
28 |
| - return function (x) { |
29 |
| - return Math.atan2(y, x); |
30 |
| - }; |
31 |
| - } |
32 |
| - """ :: Number -> Number -> Radians |
| 27 | +foreign import atan2 :: Number -> Number -> Radians |
33 | 28 |
|
34 | 29 | -- | Returns the smallest integer not smaller than the argument.
|
35 |
| -foreign import ceil "var ceil = Math.ceil;" :: Number -> Number |
| 30 | +foreign import ceil :: Number -> Number |
36 | 31 |
|
37 | 32 | -- | Returns the cosine of the argument.
|
38 |
| -foreign import cos "var cos = Math.cos;" :: Radians -> Number |
| 33 | +foreign import cos :: Radians -> Number |
39 | 34 |
|
40 | 35 | -- | Returns `e` exponentiated to the power of the argument.
|
41 |
| -foreign import exp "var exp = Math.exp;" :: Number -> Number |
| 36 | +foreign import exp :: Number -> Number |
42 | 37 |
|
43 | 38 | -- | Returns the largest integer not larger than the argument.
|
44 |
| -foreign import floor "var floor = Math.floor;" :: Number -> Number |
| 39 | +foreign import floor :: Number -> Number |
45 | 40 |
|
46 | 41 | -- | Returns the natural logarithm of a number.
|
47 |
| -foreign import log "var log = Math.log;" :: Number -> Number |
| 42 | +foreign import log :: Number -> Number |
48 | 43 |
|
49 | 44 | -- | Returns the largest of two numbers.
|
50 |
| -foreign import max |
51 |
| - """ |
52 |
| - function max(n1){ |
53 |
| - return function(n2) { |
54 |
| - return Math.max(n1, n2); |
55 |
| - }; |
56 |
| - } |
57 |
| - """ :: Number -> Number -> Number |
| 45 | +foreign import max :: Number -> Number -> Number |
58 | 46 |
|
59 | 47 | -- | Returns the smallest of two numbers.
|
60 |
| -foreign import min |
61 |
| - """ |
62 |
| - function min(n1){ |
63 |
| - return function(n2) { |
64 |
| - return Math.min(n1, n2); |
65 |
| - }; |
66 |
| - } |
67 |
| - """ :: Number -> Number -> Number |
| 48 | +foreign import min :: Number -> Number -> Number |
68 | 49 |
|
69 | 50 | -- | Return the first argument exponentiated to the power of the second argument.
|
70 |
| -foreign import pow |
71 |
| - """ |
72 |
| - function pow(n){ |
73 |
| - return function(p) { |
74 |
| - return Math.pow(n, p); |
75 |
| - }; |
76 |
| - } |
77 |
| - """ :: Number -> Number -> Number |
| 51 | +foreign import pow :: Number -> Number -> Number |
78 | 52 |
|
79 | 53 | -- | Returns the integer closest to the argument.
|
80 |
| -foreign import round "var round = Math.round;" :: Number -> Number |
| 54 | +foreign import round :: Number -> Number |
81 | 55 |
|
82 | 56 | -- | Returns the sine of the argument.
|
83 |
| -foreign import sin "var sin = Math.sin;" :: Radians -> Number |
| 57 | +foreign import sin :: Radians -> Number |
84 | 58 |
|
85 | 59 | -- | Returns the square root of the argument.
|
86 |
| -foreign import sqrt "var sqrt = Math.sqrt;" :: Number -> Number |
| 60 | +foreign import sqrt :: Number -> Number |
87 | 61 |
|
88 | 62 | -- | Returns the tangent of the argument.
|
89 |
| -foreign import tan "var tan = Math.tan;" :: Radians -> Number |
| 63 | +foreign import tan :: Radians -> Number |
90 | 64 |
|
91 | 65 | -- | The base of natural logarithms, *e*, around 2.71828.
|
92 |
| -foreign import e "var e = Math.E;" :: Number |
| 66 | +foreign import e :: Number |
93 | 67 |
|
94 | 68 | -- | The natural logarithm of 2, around 0.6931.
|
95 |
| -foreign import ln2 "var ln2 = Math.LN2;" :: Number |
| 69 | +foreign import ln2 :: Number |
96 | 70 |
|
97 | 71 | -- | The natural logarithm of 10, around 2.3025.
|
98 |
| -foreign import ln10 "var ln10 = Math.LN10;" :: Number |
| 72 | +foreign import ln10 :: Number |
99 | 73 |
|
100 | 74 | -- | The base 2 logarithm of `e`, around 1.4426.
|
101 |
| -foreign import log2e "var log2e = Math.LOG2E;" :: Number |
| 75 | +foreign import log2e :: Number |
102 | 76 |
|
103 | 77 | -- | Base 10 logarithm of `e`, around 0.43429.
|
104 |
| -foreign import log10e "var log10e = Math.LOG10E;" :: Number |
| 78 | +foreign import log10e :: Number |
105 | 79 |
|
106 | 80 | -- | The ratio of the circumference of a circle to its diameter, around 3.14159.
|
107 |
| -foreign import pi "var pi = Math.PI;" :: Number |
| 81 | +foreign import pi :: Number |
108 | 82 |
|
109 | 83 | -- | The Square root of one half, around 0.707107.
|
110 |
| -foreign import sqrt1_2 "var sqrt1_2 = Math.SQRT1_2;" :: Number |
| 84 | +foreign import sqrt1_2 :: Number |
111 | 85 |
|
112 | 86 | -- | The square root of two, around 1.41421.
|
113 |
| -foreign import sqrt2 "var sqrt2 = Math.SQRT2;" :: Number |
| 87 | +foreign import sqrt2 :: Number |
0 commit comments