Add polynomials
From HaskellWiki
(Difference between revisions)
m (Remove the incomplete multiply function) |
|||
| (4 intermediate revisions not shown.) | |||
| Line 26: | Line 26: | ||
addManyPolys :: [Poly] -> Poly | addManyPolys :: [Poly] -> Poly | ||
addManyPolys ps = foldl 0 addPoly ps | addManyPolys ps = foldl 0 addPoly ps | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
main = do | main = do | ||
| - | |||
putStr $ show $ addPoly [(0,1),(2,1)] [(0,1)] | putStr $ show $ addPoly [(0,1),(2,1)] [(0,1)] | ||
</haskell> | </haskell> | ||
| + | ==See also== | ||
| + | |||
| + | * [[Numeric Prelude]] [http://darcs.haskell.org/numericprelude/src/MathObj/Polynomial.hs] | ||
| + | * HTam [http://darcs.haskell.org/htam/src/Polynomial.hs] | ||
| + | |||
| + | [[Category:Mathematics]] | ||
[[Category:Code]] | [[Category:Code]] | ||
Current revision
Polynomial Algebra
#!/usr/local/bin/runhugs module Main where type Poly = [(Int,Int)] -- assume sorted by increasing exponent. -- data Rational = (Poly, Poly) -- an interesting thing to observe: -- when adding, the null polynomial is zero. -- when multiplying it is one. This concept emerges implicitly -- in these definitions. addPoly :: Poly -> Poly -> Poly addPoly [] ys = ys addPoly xs [] = xs addPoly ((a,b):xs) ((c,d):ys) | a == c = ((a,b+d):(addPoly xs ys)) | a < c = ((a,b):(addPoly xs ((c,d):ys))) | a > c = ((c,d):(addPoly ((a,b):xs) ys)) addManyPolys :: [Poly] -> Poly addManyPolys ps = foldl 0 addPoly ps main = do putStr $ show $ addPoly [(0,1),(2,1)] [(0,1)]
See also
- Numeric Prelude [1]
- HTam [2]
