17 lines
519 B
Haskell
17 lines
519 B
Haskell
{-# LANGUAGE FlexibleInstances, UndecidableInstances, FlexibleContexts #-}
|
|
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
|