# FixedPointNumbers Tag v0.4.4

fixed point types for julia

MIT

# FixedPointNumbers

This library exports fixed-point number types. A fixed-point number represents a fractional, or non-integral, number. In contrast with the more widely known floating-point numbers, fixed-point numbers have a fixed number of digits (bits) after the decimal (radix) point. They are effectively integers scaled by a constant factor.

Fixed-point numbers can be used to perform arithmetic. Another practical application is to implicitly rescale integers without modifying the underlying representation.

This library exports two categories of fixed-point types. Fixed-point types are used like any other number: they can be added, multiplied, raised to a power, etc. In many cases these operations result in conversion to floating-point types.

# Type hierarchy

This library defines an abstract type `FixedPoint{T <: Integer, f}` as a subtype of `Real`. The parameter `T` is the underlying representation and `f` is the number of fraction bits.

For signed integers, there is a fixed-point type `Fixed{T, f}` and for unsigned integers, there is the `UFixed{T, f}` type.

These types, built with `f` fraction bits, map the closed interval [0.0,1.0] to the span of numbers with `f` bits. For example, the `UFixed8` type is represented internally by a `UInt8`, and makes `0x00` equivalent to `0.0` and `0xff` to `1.0`. The types `UFixed10`, `UFixed12`, `UFixed14`, and `UFixed16` are all based on `UInt16` and reach the value `1.0` at 10, 12, 14, and 16 bits, respectively (`0x03ff`, `0x0fff`, `0x3fff`, and `0xffff`).

To construct such a number, use `convert(UFixed12, 1.3)`, `ufixed12(1.3)`, or the literal syntax `0x14ccuf12`. The latter syntax means to construct a `UFixed12` (it ends in `uf12`) from the `UInt16` value `0x14cc`.

There currently is no literal syntax for signed `Fixed` numbers.