packages feed

numeric-prelude-0.4.3.3: test/Test/MathObj/PowerSeries/Core.hs

-- Do not edit! Automatically created with doctest-extract from src/MathObj/PowerSeries/Core.hs
{-# LINE 23 "src/MathObj/PowerSeries/Core.hs" #-}

module Test.MathObj.PowerSeries.Core where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 24 "src/MathObj/PowerSeries/Core.hs" #-}
import     qualified MathObj.PowerSeries.Core as PS
import     qualified MathObj.PowerSeries.Example as PSE
import     Test.NumericPrelude.Utility (equalTrunc, (/\))
import     qualified Test.QuickCheck as QC
import     NumericPrelude.Numeric as NP
import     NumericPrelude.Base as P
import     Prelude ()
import     Control.Applicative (liftA3)

checkHoles     ::
       Int -> ([Rational] -> [Rational]) ->
       Rational -> [Rational] -> QC.Property
checkHoles     trunc f x xs =
       QC.choose (1,10) /\ \expon ->
       equalTrunc trunc
          (f (PS.insertHoles expon (x:xs)) ++ repeat zero)
          (PS.insertHoles expon (f (x:xs)) ++ repeat zero)

genInvertible     :: QC.Gen [Rational]
genInvertible     =
       liftA3 (\x0 x1 xs -> x0:x1:xs)
          QC.arbitrary (fmap QC.getNonZero QC.arbitrary) QC.arbitrary

test :: DocTest.T ()
test = do
 DocTest.printPrefix "MathObj.PowerSeries.Core:108: "
{-# LINE 108 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 108 "src/MathObj/PowerSeries/Core.hs" #-}
     (QC.choose (1,10) /\ \m -> QC.choose (1,10) /\ \n xs -> equalTrunc 100 (PS.insertHoles m $ PS.insertHoles n xs) (PS.insertHoles (m*n) xs))
 DocTest.printPrefix "MathObj.PowerSeries.Core:190: "
{-# LINE 190 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 190 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 PSE.sqrtExpl (PS.sqrt (\1 -> 1) [1,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:191: "
{-# LINE 191 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 191 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 500 (1:1:repeat 0) (PS.sqrt (\1 -> 1) (PS.mul [1,1] [1,1])))
 DocTest.printPrefix "MathObj.PowerSeries.Core:192: "
{-# LINE 192 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 192 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 50 (PS.sqrt (\1 -> 1)) 1)
 DocTest.printPrefix "MathObj.PowerSeries.Core:217: "
{-# LINE 217 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 217 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 100 (PSE.powExpl (-1/3)) (PS.pow (\1 -> 1) (-1/3) [1,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:218: "
{-# LINE 218 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 218 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 (PSE.powExpl (-1/3)) (PS.exp (\0 -> 1) (PS.scale (-1/3) PSE.log)))
 DocTest.printPrefix "MathObj.PowerSeries.Core:219: "
{-# LINE 219 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 219 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 30 (PS.pow (\1 -> 1) (1/3)) 1)
 DocTest.printPrefix "MathObj.PowerSeries.Core:220: "
{-# LINE 220 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 220 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 30 (PS.pow (\1 -> 1) (2/5)) 1)
 DocTest.printPrefix "MathObj.PowerSeries.Core:237: "
{-# LINE 237 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 237 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 500 PSE.expExpl (PS.exp (\0 -> 1) [0,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:238: "
{-# LINE 238 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 238 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 100 (1:1:repeat 0) (PS.exp (\0 -> 1) PSE.log))
 DocTest.printPrefix "MathObj.PowerSeries.Core:239: "
{-# LINE 239 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 239 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 30 (PS.exp (\0 -> 1)) 0)
 DocTest.printPrefix "MathObj.PowerSeries.Core:259: "
{-# LINE 259 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 259 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 500 PSE.sinExpl (PS.sin (\0 -> (0,1)) [0,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:260: "
{-# LINE 260 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 260 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 (0:1:repeat 0) (PS.sin (\0 -> (0,1)) PSE.asin))
 DocTest.printPrefix "MathObj.PowerSeries.Core:261: "
{-# LINE 261 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 261 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 20 (PS.sin (\0 -> (0,1))) 0)
 DocTest.printPrefix "MathObj.PowerSeries.Core:266: "
{-# LINE 266 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 266 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 500 PSE.cosExpl (PS.cos (\0 -> (0,1)) [0,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:267: "
{-# LINE 267 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 267 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 20 (PS.cos (\0 -> (0,1))) 0)
 DocTest.printPrefix "MathObj.PowerSeries.Core:273: "
{-# LINE 273 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 273 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 PSE.tanExpl (PS.tan (\0 -> (0,1)) [0,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:274: "
{-# LINE 274 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 274 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 (0:1:repeat 0) (PS.tan (\0 -> (0,1)) PSE.atan))
 DocTest.printPrefix "MathObj.PowerSeries.Core:275: "
{-# LINE 275 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 275 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 20 (PS.tan (\0 -> (0,1))) 0)
 DocTest.printPrefix "MathObj.PowerSeries.Core:289: "
{-# LINE 289 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 289 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 500 PSE.logExpl (PS.log (\1 -> 0) [1,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:290: "
{-# LINE 290 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 290 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 100 (0:1:repeat 0) (PS.log (\1 -> 0) PSE.exp))
 DocTest.printPrefix "MathObj.PowerSeries.Core:291: "
{-# LINE 291 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 291 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 30 (PS.log (\1 -> 0)) 1)
 DocTest.printPrefix "MathObj.PowerSeries.Core:303: "
{-# LINE 303 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 303 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 500 PSE.atan (PS.atan (\0 -> 0) [0,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:304: "
{-# LINE 304 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 304 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 (0:1:repeat 0) (PS.atan (\0 -> 0) PSE.tan))
 DocTest.printPrefix "MathObj.PowerSeries.Core:305: "
{-# LINE 305 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 305 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 20 (PS.atan (\0 -> 0)) 0)
 DocTest.printPrefix "MathObj.PowerSeries.Core:313: "
{-# LINE 313 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 313 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 100 (0:1:repeat 0) (PS.asin (\1 -> 1) (\0 -> 0) PSE.sin))
 DocTest.printPrefix "MathObj.PowerSeries.Core:314: "
{-# LINE 314 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 314 "src/MathObj/PowerSeries/Core.hs" #-}
     (equalTrunc 50 PSE.asin (PS.asin (\1 -> 1) (\0 -> 0) [0,1]))
 DocTest.printPrefix "MathObj.PowerSeries.Core:315: "
{-# LINE 315 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 315 "src/MathObj/PowerSeries/Core.hs" #-}
     (checkHoles 30 (PS.asin (\1 -> 1) (\0 -> 0)) 0)
 DocTest.printPrefix "MathObj.PowerSeries.Core:383: "
{-# LINE 383 "src/MathObj/PowerSeries/Core.hs" #-}
 DocTest.property
{-# LINE 383 "src/MathObj/PowerSeries/Core.hs" #-}
     (genInvertible /\ \xs -> let (y,ys) = PS.inv xs; (z,zs) = PS.invDiff xs in y==z && equalTrunc 15 ys zs)