Feu una funció mult :: [Double] -> [Double] -> [Double] que, donats dos polinomis, en calculi el seu producte. Els polinomis es representen a través de llistes que corresponen als seus coeficients. Per exemple, la llista [3.5,−2,6,1] representa el polinomi 3.5−2x+6x2+x3.
Els dos polinomis a multiplicar sempre tindràn el mateix nombre de coeficients, diguem-ne n. Aquest n serà sempre una potència de dos. El resultat ha de ser un nou polinomi amb 2n coeficients.
Per tal d’evitar problemes de precisió, els jocs de proves arrodoneixen els valors reals a k decimals amb la funció myRound k.
Puntuació
Input
let myRound k f = (fromInteger $ round $ f * (10^k)) / (10.0^^k) map (myRound 2) $ mult [2,1] [3,-2] map (myRound 2) $ mult [2,1,0,0] [3,-2,0,0] map (myRound 2) $ mult [3.5,-2,6,1] [3.5,-2,6,1] map (myRound 2) $ mult [1,2,3,4,5,6,7,8] [0,0,0,0,1,0,0,0]
Output
[6.0,-1.0,-2.0,0.0] [6.0,-1.0,-2.0,0.0,0.0,0.0,0.0,0.0] [12.25,-14.0,46.0,-17.0,32.0,12.0,1.0,0.0] [0.0,0.0,0.0,0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,0.0,0.0,0.0,0.0]