{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Array.Accelerate.Numeric.Sum.Arithmetic (
fadd, fsub, fmul,
) where
import Data.Array.Accelerate
import qualified Data.Array.Accelerate.Numeric.Sum.LLVM.Native as Native
import qualified Data.Array.Accelerate.Numeric.Sum.LLVM.PTX as PTX
infixl 6 `fadd`
fadd :: (Num a, IsFloating a) => Exp a -> Exp a -> Exp a
fadd = Native.fadd $ PTX.fadd (+)
infixl 6 `fsub`
fsub :: (Num a, IsFloating a) => Exp a -> Exp a -> Exp a
fsub = Native.fsub $ PTX.fsub (-)
infixl 7 `fmul`
fmul :: (Num a, IsFloating a) => Exp a -> Exp a -> Exp a
fmul = Native.fmul $ PTX.fmul (*)