ref: c8a135ea3235767a41c8639352525364dd1553d3
parent: 255edbba41f792c9920278dd222fe821098b1eb1
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Fri Nov 3 20:26:49 EDT 2023
Add Floating class
--- /dev/null
+++ b/lib/Data/Floating.hs
@@ -1,0 +1,43 @@
+module Data.Floating(module Data.Floating) where
+import Primitives
+import Data.Fractional
+import Data.Num
+
+class (Fractional a) => Floating a where
+ pi :: a
+ exp :: a -> a
+ log :: a -> a
+ sqrt :: a -> a
+ (**) :: a -> a -> a
+ logBase :: a -> a -> a
+ sin :: a -> a
+ cos :: a -> a
+ tan :: a -> a
+ asin :: a -> a
+ acos :: a -> a
+ atan :: a -> a
+ sinh :: a -> a
+ cosh :: a -> a
+ tanh :: a -> a
+ asinh :: a -> a
+ acosh :: a -> a
+ atanh :: a -> a
+ log1p :: a -> a
+ expm1 :: a -> a
+ log1pexp :: a -> a
+ log1mexp :: a -> a
+
+ x ** y = exp (log x * y)
+ logBase x y = log y / log x
+ sqrt x = x ** (1/2)
+ tan x = sin x / cos x
+ sinh x = (exp x - exp (negate x)) / 2
+ cosh x = (exp x + exp (negate x)) / 2
+ tanh x = sinh x / cosh x
+ asinh x = log (x + sqrt (x*x + 1))
+ acosh x = log (x + sqrt (x*x - 1))
+ atanh x = log ((x + 1) / (x - 1)) / 2
+ log1p x = log (1 + x)
+ expm1 x = exp x - 1
+ log1pexp x = log1p (exp x)
+ log1mexp x = log1p (negate (exp x))
--
⑨