numeric-prelude-0.4.3.3: test/Test/MathObj/Gaussian/Polynomial.hs
-- Do not edit! Automatically created with doctest-extract from gaussian/MathObj/Gaussian/Polynomial.hs
{-# LINE 60 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
{-# OPTIONS_GHC -XRebindableSyntax #-}
module Test.MathObj.Gaussian.Polynomial where
import Test.DocTest.Base
import qualified Test.DocTest.Driver as DocTest
{-# LINE 63 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
import qualified MathObj.Gaussian.Polynomial as G
import qualified MathObj.Gaussian.Bell as Bell
import qualified MathObj.Polynomial as Poly
import qualified Algebra.Laws as Laws
import qualified Number.Complex as Complex
import Number.Complex ((+:))
import NumericPrelude.Base as P
import NumericPrelude.Numeric as NP
import qualified Test.QuickCheck as QC
import Data.Function.HT (Id, nest)
import Data.Tuple.HT (mapSnd)
asRational :: Id (G.T Rational)
asRational = id
withRational :: Id (G.T Rational -> a)
withRational = id
mulLinear2i :: Id (G.T Rational)
mulLinear2i x =
x{G.polynomial = Poly.fromCoeffs [0, 0+:2] * G.polynomial x}
rotateQuarter :: Int -> Id (G.T Rational)
rotateQuarter n =
G.scaleComplex (negate Complex.imaginaryUnit ^ fromIntegral n)
test :: DocTest.T ()
test = do
DocTest.printPrefix "MathObj.Gaussian.Polynomial:185: "
{-# LINE 185 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 185 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(QC.forAll (QC.choose (0,3)) $ \n -> G.eigenfunctionDifferential n == asRational (G.eigenfunctionIterative n))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:193: "
{-# LINE 193 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 193 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(G.eigenfunction0 == asRational (G.eigenfunctionDifferential 0))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:198: "
{-# LINE 198 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 198 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(G.eigenfunction1 == asRational (G.eigenfunctionDifferential 1))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:203: "
{-# LINE 203 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 203 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(G.eigenfunction2 == asRational (G.eigenfunctionDifferential 2))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:208: "
{-# LINE 208 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 208 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(G.eigenfunction3 == asRational (G.eigenfunctionDifferential 3))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:215: "
{-# LINE 215 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 215 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(QC.forAll (QC.choose (0,15)) $ \n -> let x = G.eigenfunctionDifferential n in G.fourier x == rotateQuarter n x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:224: "
{-# LINE 224 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 224 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(QC.forAll (QC.choose (0,15)) $ \n -> let x = G.eigenfunctionIterative n in G.fourier x == rotateQuarter n x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:246: "
{-# LINE 246 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 246 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ Laws.identity G.multiply G.constant)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:247: "
{-# LINE 247 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 247 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ Laws.commutative G.multiply)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:248: "
{-# LINE 248 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 248 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ Laws.associative G.multiply)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:258: "
{-# LINE 258 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 258 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ Laws.commutative G.convolve)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:259: "
{-# LINE 259 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 259 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ Laws.associative G.convolve)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:301: "
{-# LINE 301 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 301 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x y -> G.fourier (G.convolve x y) == G.multiply (G.fourier x) (G.fourier y))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:302: "
{-# LINE 302 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 302 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x -> nest 2 G.fourier x == G.reverse x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:303: "
{-# LINE 303 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 303 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x a -> G.fourier (G.translate a x) == G.modulate a (G.fourier x))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:304: "
{-# LINE 304 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 304 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.Positive a) -> G.fourier (G.dilate a x) == G.amplify a (G.shrink a (G.fourier x)))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:305: "
{-# LINE 305 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 305 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x -> G.fourier (G.differentiate x) == mulLinear2i (G.fourier x))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:323: "
{-# LINE 323 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 323 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x y -> G.convolve (G.differentiate x) y == G.convolve x (G.differentiate y))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:348: "
{-# LINE 348 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 348 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x -> G.integrate (G.differentiate x) == (zero, x))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:349: "
{-# LINE 349 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 349 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x@(G.Cons b p) -> let (xoff,xint) = G.integrate x in G.differentiate xint == G.Cons b (p + Poly.const xoff))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:345: "
{-# LINE 345 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.example
{-# LINE 345 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(snd $ G.integrate $ G.differentiate $ G.Cons Bell.unit (Poly.fromCoeffs [7,7,7,7 :: Complex.T Rational]))
[ExpectedLine [LineChunk "Cons {bell = Cons {amp = 1 % 1, c0 = 0 % 1 +: 0 % 1, c1 = 0 % 1 +: 0 % 1, c2 = 1 % 1}, polynomial = Polynomial.fromCoeffs [7 % 1 +: 0 % 1,7 % 1 +: 0 % 1,7 % 1 +: 0 % 1,7 % 1 +: 0 % 1]}"]]
DocTest.printPrefix "MathObj.Gaussian.Polynomial:409: "
{-# LINE 409 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 409 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x a b -> G.translate a (G.translate b x) == G.translate (a+b) x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:416: "
{-# LINE 416 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 416 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x a b -> G.translateComplex a (G.translateComplex b x) == G.translateComplex (a+b) x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:417: "
{-# LINE 417 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 417 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x a -> G.translateComplex (Complex.fromReal a) x == G.translate a x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:426: "
{-# LINE 426 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 426 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x a b -> G.modulate a (G.modulate b x) == G.modulate (a+b) x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:427: "
{-# LINE 427 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 427 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x a b -> G.modulate b (G.translate a x) == G.turn (a*b) (G.translate a (G.modulate b x)))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:442: "
{-# LINE 442 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 442 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x -> nest 2 G.reverse x == x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:451: "
{-# LINE 451 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 451 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.Positive a) (QC.Positive b) -> G.dilate a (G.dilate b x) == G.dilate (a*b) x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:452: "
{-# LINE 452 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 452 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.Positive a) -> G.shrink a x == G.dilate (recip a) x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:461: "
{-# LINE 461 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 461 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.Positive a) -> G.dilate a (G.shrink a x) == x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:462: "
{-# LINE 462 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 462 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.Positive a) -> G.shrink a (G.dilate a x) == x)
DocTest.printPrefix "MathObj.Gaussian.Polynomial:490: "
{-# LINE 490 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 490 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.NonZero unit) d -> G.approximateByBells unit (G.translateComplex d x) == map (mapSnd (Bell.translateComplex d)) (G.approximateByBells unit x))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:491: "
{-# LINE 491 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 491 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.NonZero unit) (QC.NonZero d) -> G.approximateByBells unit (G.dilate d x) == map (mapSnd (Bell.dilate d)) (G.approximateByBells (unit/d) x))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:492: "
{-# LINE 492 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 492 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(withRational $ \x (QC.NonZero unit) (QC.NonZero d) -> G.approximateByBells unit (G.shrink d x) == map (mapSnd (Bell.shrink d)) (G.approximateByBells (unit*d) x))
DocTest.printPrefix "MathObj.Gaussian.Polynomial:512: "
{-# LINE 512 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
DocTest.property
{-# LINE 512 "gaussian/MathObj/Gaussian/Polynomial.hs" #-}
(\(QC.NonZero unit) d s p0 -> let p = Poly.fromCoeffs $ take 10 p0 in G.approximateByBellsAtOnce unit d s p == G.approximateByBellsByTranslation unit d (s::Rational) p)