math¶
In [ ]:
//// test
open testing
math¶
e¶
In [ ]:
inl e () =
exp 1f64
square¶
In [ ]:
inl square x =
x ** 2
In [ ]:
//// test
5f64
|> sqrt
|> square
|> _assert_approx_eq None 5
{ name = __assert_approx_eq; actual = +5.000000; expected = +5.000000 }
In [ ]:
//// test
e () |> square
|> _assert_approx_eq None 7.3890560989306495
{ name = __assert_approx_eq; actual = +7.389056; expected = +7.389056 }
In [ ]:
//// test
2 * 2 / 0.4f64 |> sqrt
|> _assert_approx_eq None 3.1622776601683795
{ name = __assert_approx_eq; actual = +3.162278; expected = +3.162278 }
In [ ]:
//// test
2f64 / 3
|> _assert_approx_eq None 0.6666666666666666
{ name = __assert_approx_eq; actual = +0.666667; expected = +0.666667 }
In [ ]:
//// test
2f64 |> log
|> _assert_approx_eq None 0.6931471805599453
{ name = __assert_approx_eq; actual = +0.693147; expected = +0.693147 }
In [ ]:
//// test
pi
|> _assert_approx_eq None 3.141592653589793f64
{ name = __assert_approx_eq; actual = +3.141593; expected = +3.141593 }
In [ ]:
//// test
pi |> cos
|> _assert_eq -1f64
{ name = __assert_eq; actual = -1.000000; expected = -1.000000 }
In [ ]:
//// test
pi
|> cos
|> fun n => n / 2f64
|> _assert_approx_eq None -0.5
{ name = __assert_approx_eq; actual = -0.500000; expected = -0.500000 }
In [ ]:
//// test
pi / 2 |> cos
|> _assert_approx_eq None 0.00000000000000006123233995736766f64
{ name = __assert_approx_eq; actual = +0.000000; expected = +0.000000 }
fsharp¶
atan2¶
In [ ]:
inl atan2 (y : f64) (x : f64) : f64 =
$'System.Math.Atan2 (!y, !x)'
In [ ]:
//// test
0 |> atan2 1
|> _assert_eq 1.5707963267948966
{ name = __assert_eq; actual = +1.570796; expected = +1.570796 }
floor¶
In [ ]:
inl floor forall t {float}. (n : t) : t =
n |> $'floor'
In [ ]:
//// test
0.6 |> floor
|> _assert_eq 0f64
{ name = __assert_eq; actual = +0.000000; expected = +0.000000 }
ceil¶
In [ ]:
inl ceil forall t {float}. (n : t) : t =
n |> $'ceil'
In [ ]:
//// test
0.6 |> ceil
|> _assert_eq 1f64
{ name = __assert_eq; actual = +1.000000; expected = +1.000000 }
round¶
In [ ]:
inl round forall t {float}. (n : t) : t =
n |> $'round'
In [ ]:
//// test
0.5 |> round
|> _assert_eq 0f64
1.5 |> round
|> _assert_eq 2f64
2.5 |> round
|> _assert_eq 2f64
3.5 |> round
|> _assert_eq 4f64
{ name = __assert_eq; actual = +0.000000; expected = +0.000000 } { name = __assert_eq; actual = +2.000000; expected = +2.000000 } { name = __assert_eq; actual = +2.000000; expected = +2.000000 } { name = __assert_eq; actual = +4.000000; expected = +4.000000 }
log_base¶
In [ ]:
inl log_base (new_base : f64) (a : f64) : f64 =
$'System.Math.Log (!a, !new_base)'
In [ ]:
//// test
100 |> log_base 10
|> _assert_eq 2
{ name = __assert_eq; actual = +2.000000; expected = +2.000000 }
round¶
In [ ]:
inl round forall t {float}. (x : t) : t =
x |> $'round'
In [ ]:
//// test
0.5 |> round
|> _assert_eq 0f64
{ name = __assert_eq; actual = +0.000000; expected = +0.000000 }
In [ ]:
//// test
0.6 |> round
|> _assert_eq 1f64
{ name = __assert_eq; actual = +1.000000; expected = +1.000000 }