# Add polynomials

### From HaskellWiki

(Difference between revisions)

m (Remove the incomplete multiply function) |
|||

(4 intermediate revisions by 3 users not shown) | |||

Line 26: | Line 26: | ||

addManyPolys :: [Poly] -> Poly |
addManyPolys :: [Poly] -> Poly |
||

addManyPolys ps = foldl 0 addPoly ps |
addManyPolys ps = foldl 0 addPoly ps |
||

− | |||

− | multiply :: [Int] -> [Int] -> [Int] |
||

− | --multiply polynomials together. |
||

− | multiply [] ys = ys |
||

− | multiply xs [] = xs |
||

− | multiply ((a,b):xs) ((c,d):ys) |
||

− | |||

main = do |
main = do |
||

− | putStr "Enter a person's name: " |
||

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]] |

## Latest revision as of 05:07, 3 May 2009

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)]

## [edit] See also

- Numeric Prelude [1]
- HTam [2]