\a b -> b == zero || b * (a `div` b) + (a `mod` b) == a
>>> 3 `divMod` 2 (1,1)
>>> (-3) `divMod` 2 (-2,1)
>>> (-3) `quotRem` 2 (-1,-1)
integral (Range.constantFrom 2000 1970 2100) :: Gen IntSome sample outputs from this generator might look like:
=== Outcome === 1973 === Shrinks === 2000 1987 1980 1976 1974
=== Outcome === 2061 === Shrinks === 2000 2031 2046 2054 2058 2060
>>> integral (3 * X^2 + 3) :: UPoly Double 1.0 * X^3 + 0.0 * X^2 + 3.0 * X + 0.0
>>> :set -XDataKinds >>> integral 0 (3 * X^2 + 2 * Y) :: UMultiPoly 2 Double 1.0 * X^3 + 2.0 * X * Y >>> integral 1 (3 * X^2 + 2 * Y) :: UMultiPoly 2 Double 3.0 * X^2 * Y + 1.0 * Y^2
>>> :set -XDataKinds >>> integral 0 (3 * X^2 + 2 * Y) :: UMultiPoly 2 Double 1.0 * X^3 + 2.0 * X * Y >>> integral 1 (3 * X^2 + 2 * Y) :: UMultiPoly 2 Double 3.0 * X^2 * Y + 1.0 * Y^2
>>> integral (3 * X^2 + 3) :: UPoly Double 1.0 * X^3 + 0.0 * X^2 + 3.0 * X + 0.0
>>> integral (3 * X^2 + 3) :: UPoly Double 1.0 * X^3 + 3.0 * X
>>> integral (3 * X^2 + 3) :: UPoly Double 1.0 * X^3 + 3.0 * X
>>> parse (equivalentPositions integral) "" "x+1,y+2,z+3" Right [[1,0,0,1],[0,1,0,2],[0,0,1,3]]