shithub: MicroHs

Download patch

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))
--