numeric-prelude-0.4.3: An experimental alternative hierarchy of numeric type classes

Safe HaskellSafe
LanguageHaskell98

Algebra.RealIntegral

Description

Generally before using quot and rem, think twice. In most cases divMod and friends are the right choice, because they fulfill more of the wanted properties. On some systems quot and rem are more efficient and if you only use positive numbers, you may be happy with them. But we cannot warrant the efficiency advantage.

See also: Daan Leijen: Division and Modulus for Computer Scientists http://www.cs.uu.nl/%7Edaan/download/papers/divmodnote-letter.pdf, http://www.haskell.org/pipermail/haskell-cafe/2007-August/030394.html

Synopsis

Documentation

class (C a, C a, Ord a, C a) => C a where Source #

Remember that divMod does not specify exactly what a quot b should be, mainly because there is no sensible way to define it in general. For an instance of Algebra.RealIntegral.C a, it is expected that a quot b will round towards 0 and a div b will round towards minus infinity.

Minimal definition: nothing required

Methods

quot, rem :: a -> a -> a infixl 7 `quot`, `rem` Source #

quotRem :: a -> a -> (a, a) Source #

Instances

C Int Source # 

Methods

quot :: Int -> Int -> Int Source #

rem :: Int -> Int -> Int Source #

quotRem :: Int -> Int -> (Int, Int) Source #

C Int8 Source # 

Methods

quot :: Int8 -> Int8 -> Int8 Source #

rem :: Int8 -> Int8 -> Int8 Source #

quotRem :: Int8 -> Int8 -> (Int8, Int8) Source #

C Int16 Source # 
C Int32 Source # 
C Int64 Source # 
C Integer Source # 
C Word Source # 

Methods

quot :: Word -> Word -> Word Source #

rem :: Word -> Word -> Word Source #

quotRem :: Word -> Word -> (Word, Word) Source #

C Word8 Source # 
C Word16 Source # 
C Word32 Source # 
C Word64 Source # 
C T Source # 

Methods

quot :: T -> T -> T Source #

rem :: T -> T -> T Source #

quotRem :: T -> T -> (T, T) Source #

Integral a => C (T a) Source # 

Methods

quot :: T a -> T a -> T a Source #

rem :: T a -> T a -> T a Source #

quotRem :: T a -> T a -> (T a, T a) Source #

(C a, C a) => C (T a) Source # 

Methods

quot :: T a -> T a -> T a Source #

rem :: T a -> T a -> T a Source #

quotRem :: T a -> T a -> (T a, T a) Source #

C a => C (T a) Source # 

Methods

quot :: T a -> T a -> T a Source #

rem :: T a -> T a -> T a Source #

quotRem :: T a -> T a -> (T a, T a) Source #