-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Description
I noticed that, like other languages, the only floating-point types built-in are f32
and f64
. However, I often have limitations with just these. I propose the following: fsize
, freal
, and f128
fsize
would be like isize
but for floats. Basically, use the version that's most efficient for your processor. On modern 64-bit processors with wide FPUs and/or 256-bit SIMD this would become f64
.
Sometimes I want to be able to have a variable for real numbers, but I don't know what precision I want yet. In C++ I can do the following to have an abstract precision that I control via compiler flags:
#ifdef REAL_T_IS_DOUBLE
typedef double real_t;
#else
typedef float real_t;
#endif
I propose something similar in Rust, where you can just write freal
or something and be able to change the precision later with compiler flags. The default would probably be f32
.
Finally, it would be nice to have 128-bit floats (f128
) in the language. These are not normally needed, but there are use cases for them, and it'd be nice to have it as a language built-in type. Some newer processors have 512-bit SIMD chipsets that can process these efficiently, though most don't.
If you only implement some of these proposals, that's fine too.