packages feed

weierstrass-functions-0.1.2.0: tests/Approx.hs

module Approx (assertApproxEqual) where
import           Data.Complex     ( imagPart, realPart, Complex(..) )
import           Test.Tasty.HUnit ( Assertion, assertEqual )

-- round x to n digits
approx0 :: Int -> Double -> Double
approx0 n x = fromInteger (round $ x * (10^n)) / (10.0^^n)

-- round z to n digits
approx :: Int -> Complex Double -> Complex Double
approx n z = approx0 n (realPart z) :+ approx0 n (imagPart z)

assertApproxEqual :: String -> Int -> Complex Double -> Complex Double -> Assertion
assertApproxEqual prefix n z1 z2 = 
  assertEqual prefix (approx n z1) (approx n z2)