feldspar-language-0.3.3: A functional embedded language for DSP and parallelism

Feldspar.Range

Description

Ranged values

Synopsis

Documentation

data Ord a => Range a Source

Constructors

Range 

Fields

lowerBound :: Maybe a
 
upperBound :: Maybe a
 

Instances

Ord a => Eq (Range a) 
(Ord a, Num a) => Num (Range a) 
(Ord a, Show a) => Show (Range a) 
(Arbitrary a, Ord a, Num a) => Arbitrary (Range a) 
(Ord a, Num a) => Monoid (Range a) 
Ord a => Set (Range a) 

rangeOp :: Ord a => (Range a -> Range a) -> Range a -> Range aSource

rangeOp2 :: Ord a => (Range a -> Range a -> Range a) -> Range a -> Range a -> Range aSource

mapMonotonic :: (Ord a, Ord b) => (a -> b) -> Range a -> Range bSource

rangeMul :: (Ord a, Num a) => Range a -> Range a -> Range aSource

emptyRange :: (Ord a, Num a) => Range aSource

range :: Ord a => a -> a -> Range aSource

rangeByRange :: Ord a => Range a -> Range a -> Range aSource

rangeSize :: (Ord a, Num a) => Range a -> Maybe aSource

isFull :: Ord a => Range a -> BoolSource

isNatural :: (Ord a, Num a) => Range a -> BoolSource

Checks whether a range is a sub-range of the natural numbers.

isNegative :: (Ord a, Num a) => Range a -> BoolSource

Checks whether a range is a sub-range of the negative numbers.

inRange :: Ord a => a -> Range a -> BoolSource

rangeGap :: (Ord a, Num a) => Range a -> Range a -> Range aSource

(\/) :: Ord a => Range a -> Range a -> Range aSource

liftMaybe2 :: (a -> a -> a) -> Maybe a -> Maybe a -> Maybe aSource

(/\) :: Ord a => Range a -> Range a -> Range aSource

disjoint :: (Ord a, Num a) => Range a -> Range a -> BoolSource

rangeLess :: Ord a => Range a -> Range a -> BoolSource

r1 `rangeLess` r2:

Checks if all elements of r1 are less than all elements of r2.

rangeLessEq :: Ord a => Range a -> Range a -> BoolSource

r1 `rangeLessEq` r2:

Checks if all elements of r1 are less than or equal to all elements of r2.

rangeAddUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource

rangeAddUnsigned correctly and accurately propagates range information through an unsigned addition. Code is borrowed from Hacker's Delight.

rangeAddSigned :: (Ord a, Num a, Bounded a, Bits a) => Range a -> Range a -> Range aSource

rangeAddSigned correctly and accurately propagates range information through a signed addition. Code is borrowed from Hacker's Delight.

rangeSubUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource

rangeSubUnsigned propagates range information through unsigned subtraction. Code is borrowed from Hacker's Delight

rangeNegUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range aSource

Propagates range information through unsigned negation. Code from Hacker's Delight

rangeNegSigned :: (Ord a, Num a, Bounded a) => Range a -> Range aSource

Propagates range information through signed negation. Code from Hacker's Delight.

rangeOrUnsignedCheap :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource

Cheap and inaccurate range propagation for .|. on unsigned numbers. Code from Hacker's Delight

minOrUnsigned :: (Ord a, Num a, Bits a) => a -> a -> a -> a -> aSource

Accurate lower bound for .|. on unsigned numbers.

maxOrUnsigned :: (Ord a, Num a, Bits a) => a -> a -> a -> a -> aSource

Accurate upper bound for .|. on unsigned numbers.

rangeAndUnsignedCheap :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource

Cheap and inaccurate range propagation for .&. on unsigned numbers. Code from Hacker's Delight

rangeXorUnsigned :: (Ord a, Num a, Bounded a) => Range a -> Range a -> Range aSource

Range propagation for xor on unsigned numbers. Code from Hacker's Delight

rangeProp1 :: (Ord a, Bounded a) => (a -> a -> Range a) -> Range a -> Range aSource

Auxiliary function for writing range propagation functions. Especially suitable for the code borrowed from Hacker's Delight.

rangeProp2 :: (Ord a, Bounded a) => (a -> a -> a -> a -> Range a) -> Range a -> Range a -> Range aSource

Auxiliary function for writing range propagation functions for two argument functions. Especially suitable for the code borrowed from Hacker's Delight.

rangeMax :: Ord a => Range a -> Range a -> Range aSource

Propagates range information through max.

rangeMin :: Ord a => Range a -> Range a -> Range aSource

Analogous to rangeMax

rangeMod :: (Num a, Ord a, Enum a) => Range a -> Range a -> Range aSource

Propagates range information through mod. Note that we assume Haskell semantics for mod.

rangeRem :: (Num a, Ord a, Enum a) => Range a -> Range a -> Range aSource

Propagates range information through rem. Note that we assume Haskell semantics for rem.

showRange :: (Show a, Ord a) => Range a -> StringSource

prop_arith1 :: (forall a. Num a => a -> a) -> Range Int -> PropertySource

prop_arith2 :: (forall a. Num a => a -> a -> a) -> Range Int -> Range Int -> PropertySource

rangePropagationSafetyPre :: (Random a, Ord a, Show a, Bounded a, Random b, Ord b, Show b, Bounded b, Ord c) => (a -> b -> c) -> (Range a -> Range b -> Range c) -> (a -> b -> Bool) -> Range a -> Range b -> PropertySource

rangePropSafety1 :: (Ord a, Show a, Random a, Bounded a, Ord b) => (a -> b) -> (Range a -> Range b) -> Range a -> PropertySource

uppBound :: (Bounded a, Ord a) => Range a -> aSource

lowBound :: (Bounded a, Ord a) => Range a -> aSource

fromRange :: (Random a, Bounded a, Ord a) => Range a -> Gen aSource