{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Array.Accelerate.Classes.Bounded (
Bounded,
P.minBound, P.maxBound,
) where
import Data.Array.Accelerate.Array.Sugar
import Data.Array.Accelerate.Smart
import Data.Array.Accelerate.Type
import qualified Prelude as P
type Bounded a = (Elt a, P.Bounded (Exp a))
instance P.Bounded (Exp ()) where
minBound = constant ()
maxBound = constant ()
instance P.Bounded (Exp Int) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Int8) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Int16) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Int32) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Int64) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Word) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Word8) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Word16) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Word32) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Word64) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CShort) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CUShort) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CInt) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CUInt) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CLong) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CULong) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CLLong) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CULLong) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Bool) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp Char) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CChar) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CSChar) where
minBound = mkMinBound
maxBound = mkMaxBound
instance P.Bounded (Exp CUChar) where
minBound = mkMinBound
maxBound = mkMaxBound
instance ( P.Bounded (Exp a), P.Bounded (Exp b)
, Elt a, Elt b
) => P.Bounded (Exp (a,b)) where
minBound = tup2 (P.minBound, P.minBound)
maxBound = tup2 (P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c)
, Elt a, Elt b, Elt c
) => P.Bounded (Exp (a,b,c)) where
minBound = tup3 (P.minBound, P.minBound, P.minBound)
maxBound = tup3 (P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d)
, Elt a, Elt b, Elt c, Elt d
) => P.Bounded (Exp (a,b,c,d)) where
minBound = tup4 (P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup4 (P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e)
, Elt a, Elt b, Elt c, Elt d, Elt e
) => P.Bounded (Exp (a,b,c,d,e)) where
minBound = tup5 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup5 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f
) => P.Bounded (Exp (a,b,c,d,e,f)) where
minBound = tup6 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup6 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g
) => P.Bounded (Exp (a,b,c,d,e,f,g)) where
minBound = tup7 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup7 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h
) => P.Bounded (Exp (a,b,c,d,e,f,g,h)) where
minBound = tup8 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup8 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i)) where
minBound = tup9 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup9 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i), P.Bounded (Exp j)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt j
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i,j)) where
minBound = tup10 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup10 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i), P.Bounded (Exp j), P.Bounded (Exp k)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt j, Elt k
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i,j,k)) where
minBound = tup11 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup11 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i), P.Bounded (Exp j), P.Bounded (Exp k), P.Bounded (Exp l)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt j, Elt k, Elt l
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i,j,k,l)) where
minBound = tup12 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup12 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i), P.Bounded (Exp j), P.Bounded (Exp k), P.Bounded (Exp l), P.Bounded (Exp m)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt j, Elt k, Elt l, Elt m
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i,j,k,l,m)) where
minBound = tup13 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup13 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i), P.Bounded (Exp j), P.Bounded (Exp k), P.Bounded (Exp l), P.Bounded (Exp m), P.Bounded (Exp n)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt j, Elt k, Elt l, Elt m, Elt n
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i,j,k,l,m,n)) where
minBound = tup14 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup14 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)
instance ( P.Bounded (Exp a), P.Bounded (Exp b), P.Bounded (Exp c), P.Bounded (Exp d), P.Bounded (Exp e), P.Bounded (Exp f), P.Bounded (Exp g), P.Bounded (Exp h), P.Bounded (Exp i), P.Bounded (Exp j), P.Bounded (Exp k), P.Bounded (Exp l), P.Bounded (Exp m), P.Bounded (Exp n), P.Bounded (Exp o)
, Elt a, Elt b, Elt c, Elt d, Elt e, Elt f, Elt g, Elt h, Elt i, Elt j, Elt k, Elt l, Elt m, Elt n, Elt o
) => P.Bounded (Exp (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)) where
minBound = tup15 (P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound, P.minBound)
maxBound = tup15 (P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound, P.maxBound)