{-# OPTIONS_GHC -fno-warn-orphans #-}
-- |This module exports a 'Num' instance for the 'Poly' type.
-- This instance does not implement all operations, because 'abs' and 'signum'
-- are simply not definable, so I have placed it into a separate module so
-- that I can make people read this caveat ;).
--
-- Use at your own risk.
module Math.Polynomial.NumInstance where

import Math.Polynomial

instance (Num a, Eq a) => Num (Poly a) where
    fromInteger i = poly LE [fromInteger i]
    (+) = addPoly
    negate = negatePoly
    (*) = multPoly

    abs     = error    "abs cannot be defined for the Poly type"
    signum  = error "signum cannot be defined for the Poly type"