View source code
Display the source code in std/numeric.d from which this page was generated on
github.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
std.numeric.custom_float
- multiple declarations
- Struct CustomFloat
- Alias CustomFloat
Struct CustomFloat
Allows user code to define custom floating-point formats. These formats are
for storage only; all operations on them are performed by first implicitly
extracting them to real
first. After the operation is completed the
result can be stored in a custom floating-point value via assignment.
Properties
Name | Type | Description |
---|---|---|
dig
[get]
|
size_t |
|
epsilon
[get]
|
CustomFloat |
|
im
[get]
|
CustomFloat |
|
max
[get]
|
CustomFloat |
|
max_10_exp
[get]
|
int |
|
min_10_exp
[get]
|
int |
|
min_normal
[get]
|
CustomFloat |
|
re
[get]
|
CustomFloat |
Templates
Name | Description |
---|---|
get
|
Fetches the stored value either as a float , double or real .
|
opAssign
|
Self assignment |
opAssign
|
Assigns from any real compatible type.
|
opBinary
|
Convert the CustomFloat to a real and perform the relavent operator on the result
|
opBinaryRight
|
Convert the CustomFloat to a real and perform the relavent operator on the result
|
opCast
|
Fetches the stored value either as a float , double or real .
|
opCmp
|
Convert the CustomFloat to a real and perform the relavent operator on the result
|
opOpAssign
|
Convert the CustomFloat to a real and perform the relavent operator on the result
|
opUnary
|
Convert the CustomFloat to a real and perform the relavent operator on the result
|
this
|
Initialize from any real compatible type.
|
toString
|
Convert the CustomFloat to a real and perform the relavent operator on the result
|
Example
// Define a 16-bit floating point values CustomFloat!16 x; // Using the number of bits CustomFloat!(10, 5) y; // Using the precision and exponent width CustomFloat!(10, 5,CustomFloatFlags.ieee) z; // Using the precision, exponent width and format flags CustomFloat!(10, 5,CustomFloatFlags.ieee, 15) w; // Using the precision, exponent width, format flags and exponent offset bias // Use the 16-bit floats mostly like normal numbers w = x*y - 1; // Functions calls require conversion z = sin(+x) + cos(+y); // Use unary plus to concisely convert to a real z = sin(x.get!float) + cos(y.get!float); // Or use get!T z = sin(cast(float)x) + cos(cast(float)y); // Or use cast(T) to explicitly convert // Define a 8-bit custom float for storing probabilities alias Probability = CustomFloat!(4, 4, CustomFloatFlags.ieee^CustomFloatFlags.probability^CustomFloatFlags.signed ); auto p = Probability(0.5);
Alias CustomFloat
Allows user code to define custom floating-point formats. These formats are
for storage only; all operations on them are performed by first implicitly
extracting them to real
first. After the operation is completed the
result can be stored in a custom floating-point value via assignment.
Declaration
alias CustomFloat(uint bits) = CustomFloat!(CustomFloatParams!bits)
;
Example
// Define a 16-bit floating point values CustomFloat!16 x; // Using the number of bits CustomFloat!(10, 5) y; // Using the precision and exponent width CustomFloat!(10, 5,CustomFloatFlags.ieee) z; // Using the precision, exponent width and format flags CustomFloat!(10, 5,CustomFloatFlags.ieee, 15) w; // Using the precision, exponent width, format flags and exponent offset bias // Use the 16-bit floats mostly like normal numbers w = x*y - 1; // Functions calls require conversion z = sin(+x) + cos(+y); // Use unary plus to concisely convert to a real z = sin(x.get!float) + cos(y.get!float); // Or use get!T z = sin(cast(float)x) + cos(cast(float)y); // Or use cast(T) to explicitly convert // Define a 8-bit custom float for storing probabilities alias Probability = CustomFloat!(4, 4, CustomFloatFlags.ieee^CustomFloatFlags.probability^CustomFloatFlags.signed ); auto p = Probability(0.5);
Authors
Andrei Alexandrescu, Don Clugston, Robert Jacques