Cookbook/Numbers
From HaskellWiki
(Difference between revisions)
(smaller headlines) |
(→Complex numbers) |
||
| Line 66: | Line 66: | ||
</haskell> | </haskell> | ||
| - | == | + | == Using complex numbers == |
{| class="wikitable" | {| class="wikitable" | ||
Revision as of 14:23, 4 August 2009
Numbers in Haskell can be of the typeInt, Integer, Float, Double, or Rational
Contents |
1 Rounding numbers
| Problem | Solution | Examples |
|---|---|---|
| rounding | round | round 3.4 --> 3 round 3.5 --> 4 |
finding the nearest integer greater than or equal to x
| ceiling | ceiling 3.0 --> 3 ceiling 3.1 --> 4 |
finding the nearest integer less than or equal to x
| floor | floor 3.0 --> 3 floor 3.9 --> 3 |
2 Taking logarithms
log 2.718281828459045 --> 1.0 logBase 10 10000 --> 4.0
3 Generating random numbers
import System.Random main = do gen <- getStdGen let ns = randoms gen :: [Int] print $ take 10 ns
4 Binary representation of numbers
import Data.Bits import Data.List (foldl') -- Extract a range of bits, most-significant first bitRange :: Bits a => a -> Int -> Int -> [Bool] bitRange n lo hi = foldl' (\l -> \x -> testBit n x : l) [] [lo..hi] -- Extract all bits, most-significant first bits :: Bits a => a -> [Bool] bits n = bitRange n 0 (bitSize n - 1) -- Display a number in binary, including leading zeroes. -- c.f. Numeric.showHex showBits :: Bits a => a -> ShowS showBits = showString . map (\b -> if b then '1' else '0') . bits
5 Using complex numbers
| Problem | Solution | Examples |
|---|---|---|
| creating a complex number from real and imaginary rectangular components | (:+) | import Complex 1.0 :+ 0.0 --> 1.0 :+ 0.0 |
| creating a complex number from polar components | mkPolar | import Complex mkPolar 1.0 pi --> (-1.0) :+ 1.2246063538223773e-16 |
