packages feed

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

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

module Test.MathObj.Polynomial.Core where

import qualified Test.DocTest.Driver as DocTest

{-# LINE 48 "src/MathObj/Polynomial/Core.hs" #-}
import     qualified MathObj.Polynomial.Core as PolyCore
import     qualified MathObj.Polynomial as Poly
import     qualified Data.List as List
import     qualified Test.QuickCheck as QC
import     Test.QuickCheck ((==>))
import     Data.Tuple.HT (mapPair, mapSnd)
import     NumericPrelude.Numeric
import     NumericPrelude.Base
import     Prelude ()

intPoly     :: [Integer] -> [Integer]
intPoly     = id

ratioPoly     :: [Rational] -> [Rational]
ratioPoly     = id

test :: DocTest.T ()
test = do
 DocTest.printPrefix "MathObj.Polynomial.Core:136: "
{-# LINE 136 "src/MathObj/Polynomial/Core.hs" #-}
 DocTest.property
{-# LINE 136 "src/MathObj/Polynomial/Core.hs" #-}
     (\(QC.NonEmpty xs) (QC.NonEmpty ys) -> PolyCore.tensorProduct xs ys == List.transpose (PolyCore.tensorProduct ys (intPoly xs)))
 DocTest.printPrefix "MathObj.Polynomial.Core:161: "
{-# LINE 161 "src/MathObj/Polynomial/Core.hs" #-}
 DocTest.property
{-# LINE 161 "src/MathObj/Polynomial/Core.hs" #-}
     (\xs ys  ->  PolyCore.equal (intPoly $ PolyCore.mul xs ys) (PolyCore.mulShear xs ys))
 DocTest.printPrefix "MathObj.Polynomial.Core:173: "
{-# LINE 173 "src/MathObj/Polynomial/Core.hs" #-}
 DocTest.property
{-# LINE 173 "src/MathObj/Polynomial/Core.hs" #-}
     (\x y -> case (PolyCore.normalize x, PolyCore.normalize y) of (nx, ny) -> not (null (ratioPoly ny)) ==> mapSnd PolyCore.normalize (PolyCore.divMod nx ny) == mapPair (PolyCore.normalize, PolyCore.normalize) (PolyCore.divMod x y))
 DocTest.printPrefix "MathObj.Polynomial.Core:174: "
{-# LINE 174 "src/MathObj/Polynomial/Core.hs" #-}
 DocTest.property
{-# LINE 174 "src/MathObj/Polynomial/Core.hs" #-}
     (\x y -> not (isZero (ratioPoly y)) ==> let z = fst $ PolyCore.divMod (Poly.coeffs x) y in  PolyCore.normalize z == z)
 DocTest.printPrefix "MathObj.Polynomial.Core:175: "
{-# LINE 175 "src/MathObj/Polynomial/Core.hs" #-}
 DocTest.property
{-# LINE 175 "src/MathObj/Polynomial/Core.hs" #-}
     (\x y -> case PolyCore.normalize $ ratioPoly y of ny -> not (null ny) ==> List.length (snd $ PolyCore.divMod x y) < List.length ny)