Modulenumeric-prelude-0.4.4Haskell98
MathObj.RefinementMask2
- 1 type
- 8 values
- Packagenumeric-prelude-0.4.4
- Exports9
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceRefinementMask2.hs
Determine mask by Gauss elimination.
R - alternating binomial coefficients L - differences of translated polynomials in columns
p2 = L * R^(-1) * m
R * L^(-1) * p2 = m
genAdmissibleMask /\ \(mask,poly) -> hasMultipleZero (fromMaybe 0 $ Poly.degree poly) 1 (polyFromMask (Mask.fromPolynomial poly) - polyFromMask mask)genShortPolynomial 5 /\ \poly -> maybe False (Poly.collinear poly) $ Mask.toPolynomial $ Mask.fromPolynomial polyIf the mask does not sum up to a power of 1/2
then the function returns Nothing.
fmap ((6::Rational) *>) $ Mask.toPolynomial (Mask.fromCoeffs [0.1, 0.02, 0.005::Rational])Just (Polynomial.fromCoeffs [-12732 % 109375,272 % 625,-18 % 25,1 % 1])
genShortPolynomial 5 /\ \poly -> poly == Mask.refinePolynomial (Mask.fromPolynomial poly) polyfmap (round :: Double -> Integer) $ fmap (1000000*) $ nest 50 (Mask.refinePolynomial (Mask.fromCoeffs [0.1, 0.02, 0.005])) (Poly.fromCoeffs [0,0,0,1])Polynomial.fromCoeffs [-116407,435200,-720000,1000000]
Convolve polynomials via refinement mask.
(mask x + ux*(-1,1)^degree x) * (mask y + uy*(-1,1)^degree y)