Files
petzval/lib/Petzval/Types.hs
2022-10-12 15:56:48 +02:00

17 lines
501 B
Haskell

{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
module Petzval.Types(Calcuable) where
import Numeric.AD.Mode
import Numeric.AD.Mode.Reverse.Double
import Numeric.AD.Internal.Reverse.Double
import Data.Reflection (Reifies)
import Linear(Epsilon(..))
class (RealFloat n, Scalar n ~ Double, Epsilon n, Mode n) => Calcuable n
instance (RealFloat n, Scalar n ~ Double, Epsilon n, Mode n) => Calcuable n
instance Reifies s Tape => Epsilon (ReverseDouble s) where
nearZero s = abs s <= 1e-12