View source code
Display the source code in std/numeric.d from which thispage was generated on github.
Report a bug
If you spot a problem with this page, click here to create aBugzilla issue.
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 usinglocal clone.
Alias std.numeric.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.
alias CustomFloat(uint precision, uint exponentWidth, CustomFloatFlags flags = CustomFloatFlags .ieee) = CustomFloat!(CustomFloatParams!(precision,exponentWidth,flags));
struct CustomFloat(uint precision, uint exponentWidth, CustomFloatFlags flags, uint bias)
if (isCorrectCustomFloat(precision, exponentWidth, flags));
Alias CustomFloat
Alias CustomFloat
Struct CustomFloat
Constructors
Name | Description |
---|---|
this
(input)
|
Initialize from any real compatible type.
|
Properties
Name | Type | Description |
---|---|---|
dig [get]
|
size_t | |
epsilon [get]
|
CustomFloat | |
get [get]
|
F | Fetches the stored value either as a float , double or real .
|
im [get]
|
CustomFloat | |
infinity [get]
|
CustomFloat | |
max [get]
|
CustomFloat | |
max_10_exp [get]
|
int | |
min_10_exp [get]
|
int | |
min_normal [get]
|
CustomFloat | |
nan [get]
|
CustomFloat | |
re [get]
|
CustomFloat |
Methods
Name | Description |
---|---|
opAssign
(input)
|
Self assignment |
opAssign
(input)
|
Assigns from any real compatible type.
|
opBinary
(b)
|
Convert the CustomFloat to a real and perform the relevant operator on the result |
opBinaryRight
(a)
|
Convert the CustomFloat to a real and perform the relevant operator on the result |
opCmp
(b)
|
Convert the CustomFloat to a real and perform the relevant operator on the result |
opOpAssign
(b)
|
Convert the CustomFloat to a real and perform the relevant operator on the result |
opUnary
()
|
Convert the CustomFloat to a real and perform the relevant operator on the result |
Aliases
Name | Description |
---|---|
opCast
|
Fetches the stored value either as a float , double or real .
|
Templates
Name | Description |
---|---|
toString
|
Convert the CustomFloat to a real and perform the relevant operator on the result |
Example
import std .math .trigonometry : sin, cos;
// 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, Ilya Yaroshenko
License
Copyright © 1999-2025 by the D Language Foundation | Page generated by ddox.