{-# LANGUAGE FlexibleInstances #-} ----------------------------------------------------------------------------- -- | -- Module : Foreign.VMath.VFractional -- Copyright : Copyright (c) 2010, Patrick Perry -- License : BSD3 -- Maintainer : Patrick Perry -- Stability : experimental -- -- Vector Fractional operations. -- module Foreign.VMath.VFractional where import Foreign( Ptr ) import Data.Complex( Complex(..) ) import Foreign.VMath.VNum import Foreign.VMath.Double import Foreign.VMath.Zomplex -- | Types with vectorized 'Fractional' operations. class (VNum a, Fractional a) => VFractional a where vInv :: Int -> Ptr a -> Ptr a -> IO () vDiv :: Int -> Ptr a -> Ptr a -> Ptr a -> IO () instance VFractional Double where vInv = vdInv {-# INLINE vInv #-} vDiv = vdDiv {-# INLINE vDiv #-} instance VFractional (Complex Double) where vInv = vzInv {-# INLINE vInv #-} vDiv = vzDiv {-# INLINE vDiv #-}