std::decimal(3cxx)
๐ std::decimal ๐
ok so real talk, this is std::decimal from the 3cxx manual โ the whole ISO/IEC TR 24733 Decimal floating-point arithmetic situation. yes, it's a mouthful. no, you don't have to memorise it. it's giving "spec document energy" and honestly? we respect it. ๐
โจ SYNOPSIS โจ
๐ฆ Classes
like, this is the whole cast of characters, bestie โ three of them, all decimal, all floating-point, all iconic in their own way:
class decimal128โ that's3.2.4 Class decimal128, the one with the big-girl digits ๐class decimal32โ3.2.2 Class decimal32, the smol one, cute, compact โจclass decimal64โ3.2.3 Class decimal64, the middle child, and honestly? she's serving ๐ซถ
and yes, the numbers are literally3.2.4,3.2.2,3.2.3in that order up there โ not me re-sorting them, that's just how the page said it. we keep it exactly as it comes, fr fr ๐
๐ ๏ธ Functions
okay bestie, this is the part where the page goes absolutely feral with overloads โ but honestly? iconic behaviour. Every one of these lives in the std::decimal namespace and slays in its own little way. Buckle up, we're going through them in order. ๐
double decimal128_to_double (decimal128 __d)โ takes yourdecimal128and hands you back a plaindouble.float decimal128_to_float (decimal128 __d)โ same deal, but the result is afloat.long double decimal128_to_long_double (decimal128 __d)โ yup,decimal128โlong double.long long decimal128_to_long_long (decimal128 __d)โdecimal128in,long longout.double decimal32_to_double (decimal32 __d)โdecimal32โdouble, no notes.float decimal32_to_float (decimal32 __d)โdecimal32โfloat.long double decimal32_to_long_double (decimal32 __d)โdecimal32โlong double.long long decimal32_to_long_long (decimal32 __d)โdecimal32โlong long. ๐ซถ
"Non-conforming extension: Conversion to integral type." โ that's a direct quote from the page, so likeโฆ it exists, it works, but it's not conforming. Don't act surprised when someone side-eyes you for using it. ๐
double decimal64_to_double (decimal64 __d)โdecimal64โdouble.float decimal64_to_float (decimal64 __d)โdecimal64โfloat.long double decimal64_to_long_double (decimal64 __d)โdecimal64โlong double.long long decimal64_to_long_long (decimal64 __d)โdecimal64โlong long.
then we get the โจgeneric-flavouredโจ names, which are just the same three source types over and over and I'm obsessed with the consistency:
double decimal_to_double (decimal128 __d)โdecimal128โdouble.double decimal_to_double (decimal32 __d)โdecimal32โdouble.double decimal_to_double (decimal64 __d)โdecimal64โdouble.float decimal_to_float (decimal128 __d)โdecimal128โfloat.float decimal_to_float (decimal32 __d)โdecimal32โfloat.float decimal_to_float (decimal64 __d)โdecimal64โfloat.long double decimal_to_long_double (decimal128 __d)โdecimal128โlong double.long double decimal_to_long_double (decimal32 __d)โdecimal32โlong double.long double decimal_to_long_double (decimal64 __d)โdecimal64โlong double.long long decimal_to_long_long (decimal128 __d)โdecimal128โlong long.long long decimal_to_long_long (decimal32 __d)โdecimal32โlong long.long long decimal_to_long_long (decimal64 __d)โdecimal64โlong long.
๐ธ the make_* girlies (they're static, very exclusive)
static decimal128 make_decimal128 (long long __coeff, int __exp)โ builds adecimal128out of along longcoefficient plus anintexponent.static decimal128 make_decimal128 (unsigned long long __coeff, int __exp)โ same, but the coefficient isunsigned long long.static decimal32 make_decimal32 (long long __coeff, int __exp)โdecimal32from along longcoefficient and anintexponent.static decimal32 make_decimal32 (unsigned long long __coeff, int __exp)โ unsigned coefficient edition.static decimal64 make_decimal64 (long long __coeff, int __exp)โdecimal64fromlong longcoefficient +intexponent.static decimal64 make_decimal64 (unsigned long long __coeff, int __exp)โ and theunsigned long longtwin. ๐
๐ operator!= โ the not-equal squad (there are SO many)
every single one of these returns bool, and every single one is a vibe check on "are these two not the same". starting with decimal128 on the left:
bool operator!= (decimal128 __lhs, decimal128 __rhs)โdecimal128vsdecimal128.bool operator!= (decimal128 __lhs, decimal32 __rhs)โdecimal128vsdecimal32.bool operator!= (decimal128 __lhs, decimal64 __rhs)โdecimal128vsdecimal64.bool operator!= (decimal128 __lhs, int __rhs)โdecimal128vsint.bool operator!= (decimal128 __lhs, long __rhs)โdecimal128vslong.bool operator!= (decimal128 __lhs, long long __rhs)โdecimal128vslong long.bool operator!= (decimal128 __lhs, unsigned int __rhs)โdecimal128vsunsigned int.bool operator!= (decimal128 __lhs, unsigned long __rhs)โdecimal128vsunsigned long.bool operator!= (decimal128 __lhs, unsigned long long __rhs)โdecimal128vsunsigned long long.
same energy, decimal32 on the left this time:
bool operator!= (decimal32 __lhs, decimal128 __rhs)โdecimal32vsdecimal128.bool operator!= (decimal32 __lhs, decimal32 __rhs)โdecimal32vsdecimal32.bool operator!= (decimal32 __lhs, decimal64 __rhs)โdecimal32vsdecimal64.bool operator!= (decimal32 __lhs, int __rhs)โdecimal32vsint.bool operator!= (decimal32 __lhs, long __rhs)โdecimal32vslong.bool operator!= (decimal32 __lhs, long long __rhs)โdecimal32vslong long.bool operator!= (decimal32 __lhs, unsigned int __rhs)โdecimal32vsunsigned int.bool operator!= (decimal32 __lhs, unsigned long __rhs)โdecimal32vsunsigned long.bool operator!= (decimal32 __lhs, unsigned long long __rhs)โdecimal32vsunsigned long long.
and now decimal64 takes the wheel:
bool operator!= (decimal64 __lhs, decimal128 __rhs)โdecimal64vsdecimal128.bool operator!= (decimal64 __lhs, decimal32 __rhs)โdecimal64vsdecimal32.bool operator!= (decimal64 __lhs, decimal64 __rhs)โdecimal64vsdecimal64.bool operator!= (decimal64 __lhs, int __rhs)โdecimal64vsint.bool operator!= (decimal64 __lhs, long __rhs)โdecimal64vslong.bool operator!= (decimal64 __lhs, long long __rhs)โdecimal64vslong long.bool operator!= (decimal64 __lhs, unsigned int __rhs)โdecimal64vsunsigned int.bool operator!= (decimal64 __lhs, unsigned long __rhs)โdecimal64vsunsigned long.bool operator!= (decimal64 __lhs, unsigned long long __rhs)โdecimal64vsunsigned long long.
flip it! integral type on the left, decimal on the right:
bool operator!= (int __lhs, decimal128 __rhs)โintvsdecimal128.bool operator!= (int __lhs, decimal32 __rhs)โintvsdecimal32.bool operator!= (int __lhs, decimal64 __rhs)โintvsdecimal64.bool operator!= (long __lhs, decimal128 __rhs)โlongvsdecimal128.bool operator!= (long __lhs, decimal32 __rhs)โlongvsdecimal32.bool operator!= (long __lhs, decimal64 __rhs)โlongvsdecimal64.bool operator!= (long long __lhs, decimal128 __rhs)โlong longvsdecimal128.bool operator!= (long long __lhs, decimal32 __rhs)โlong longvsdecimal32.bool operator!= (long long __lhs, decimal64 __rhs)โlong longvsdecimal64.bool operator!= (unsigned int __lhs, decimal128 __rhs)โunsigned intvsdecimal128.bool operator!= (unsigned int __lhs, decimal32 __rhs)โunsigned intvsdecimal32.bool operator!= (unsigned int __lhs, decimal64 __rhs)โunsigned intvsdecimal64.bool operator!= (unsigned long __lhs, decimal128 __rhs)โunsigned longvsdecimal128.bool operator!= (unsigned long __lhs, decimal32 __rhs)โunsigned longvsdecimal32.bool operator!= (unsigned long __lhs, decimal64 __rhs)โunsigned longvsdecimal64.bool operator!= (unsigned long long __lhs, decimal128 __rhs)โunsigned long longvsdecimal128.bool operator!= (unsigned long long __lhs, decimal32 __rhs)โunsigned long longvsdecimal32.bool operator!= (unsigned long long __lhs, decimal64 __rhs)โunsigned long longvsdecimal64. done. that's all of them. breathe. ๐ฎโ๐จ
๐ฅ operator* โ multiply era
heads up: the return type is not always the biggest type. read the signature, bestie, it's right there. ๐
decimal128 operator* (decimal128 __lhs, decimal128 __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, decimal32 __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, decimal64 __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, int __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, long __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, long long __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, unsigned int __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, unsigned long __rhs)โdecimal128decimal128 operator* (decimal128 __lhs, unsigned long long __rhs)โdecimal128decimal128 operator* (decimal32 __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (decimal32 __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (decimal32 __lhs, decimal64 __rhs)โdecimal64decimal32 operator* (decimal32 __lhs, int __rhs)โdecimal32decimal32 operator* (decimal32 __lhs, long __rhs)โdecimal32decimal32 operator* (decimal32 __lhs, long long __rhs)โdecimal32decimal32 operator* (decimal32 __lhs, unsigned int __rhs)โdecimal32decimal32 operator* (decimal32 __lhs, unsigned long __rhs)โdecimal32decimal32 operator* (decimal32 __lhs, unsigned long long __rhs)โdecimal32decimal128 operator* (decimal64 __lhs, decimal128 __rhs)โdecimal128decimal64 operator* (decimal64 __lhs, decimal32 __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, decimal64 __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, int __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, long __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, long long __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, unsigned int __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, unsigned long __rhs)โdecimal64decimal64 operator* (decimal64 __lhs, unsigned long long __rhs)โdecimal64decimal128 operator* (int __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (int __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (int __lhs, decimal64 __rhs)โdecimal64decimal128 operator* (long __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (long __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (long __lhs, decimal64 __rhs)โdecimal64decimal128 operator* (long long __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (long long __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (long long __lhs, decimal64 __rhs)โdecimal64decimal128 operator* (unsigned int __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (unsigned int __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (unsigned int __lhs, decimal64 __rhs)โdecimal64decimal128 operator* (unsigned long __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (unsigned long __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (unsigned long __lhs, decimal64 __rhs)โdecimal64decimal128 operator* (unsigned long long __lhs, decimal128 __rhs)โdecimal128decimal32 operator* (unsigned long long __lhs, decimal32 __rhs)โdecimal32decimal64 operator* (unsigned long long __lhs, decimal64 __rhs)โdecimal64
โจ operator+ โ add era (now with unary!!)
decimal128 operator+ (decimal128 __lhs, decimal128 __rhs)decimal128 operator+ (decimal128 __lhs, decimal32 __rhs)decimal128 operator+ (decimal128 __lhs, decimal64 __rhs)decimal128 operator+ (decimal128 __lhs, int __rhs)decimal128 operator+ (decimal128 __lhs, long __rhs)decimal128 operator+ (decimal128 __lhs, long long __rhs)decimal128 operator+ (decimal128 __lhs, unsigned int __rhs)decimal128 operator+ (decimal128 __lhs, unsigned long __rhs)decimal128 operator+ (decimal128 __lhs, unsigned long long __rhs)decimal128 operator+ (decimal128 __rhs)โ โ ๏ธ look, only one argument: this is the unary plus, and it returnsdecimal128.decimal128 operator+ (decimal32 __lhs, decimal128 __rhs)decimal32 operator+ (decimal32 __lhs, decimal32 __rhs)decimal64 operator+ (decimal32 __lhs, decimal64 __rhs)decimal32 operator+ (decimal32 __lhs, int __rhs)decimal32 operator+ (decimal32 __lhs, long __rhs)decimal32 operator+ (decimal32 __lhs, long long __rhs)decimal32 operator+ (decimal32 __lhs, unsigned int __rhs)decimal32 operator+ (decimal32 __lhs, unsigned long __rhs)decimal32 operator+ (decimal32 __lhs, unsigned long long __rhs)decimal32 operator+ (decimal32 __rhs)โ unary plus again, this timedecimal32.decimal128 operator+ (decimal64 __lhs, decimal128 __rhs)decimal64 operator+ (decimal64 __lhs, decimal32 __rhs)decimal64 operator+ (decimal64 __lhs, decimal64 __rhs)decimal64 operator+ (decimal64 __lhs, int __rhs)decimal64 operator+ (decimal64 __lhs, long __rhs)decimal64 operator+ (decimal64 __lhs, long long __rhs)decimal64 operator+ (decimal64 __lhs, unsigned int __rhs)decimal64 operator+ (decimal64 __lhs, unsigned long __rhs)decimal64 operator+ (decimal64 __lhs, unsigned long long __rhs)decimal64 operator+ (decimal64 __rhs)โ third unary plus,decimal64flavoured.decimal128 operator+ (int __lhs, decimal128 __rhs)decimal32 operator+ (int __lhs, decimal32 __rhs)decimal64 operator+ (int __lhs, decimal64 __rhs)decimal128 operator+ (long __lhs, decimal128 __rhs)decimal32 operator+ (long __lhs, decimal32 __rhs)decimal64 operator+ (long __lhs, decimal64 __rhs)decimal128 operator+ (long long __lhs, decimal128 __rhs)decimal32 operator+ (long long __lhs, decimal32 __rhs)decimal64 operator+ (long long __lhs, decimal64 __rhs)decimal128 operator+ (unsigned int __lhs, decimal128 __rhs)decimal32 operator+ (unsigned int __lhs, decimal32 __rhs)decimal64 operator+ (unsigned int __lhs, decimal64 __rhs)decimal128 operator+ (unsigned long __lhs, decimal128 __rhs)decimal32 operator+ (unsigned long __lhs, decimal32 __rhs)decimal64 operator+ (unsigned long __lhs, decimal64 __rhs)decimal128 operator+ (unsigned long long __lhs, decimal128 __rhs)decimal32 operator+ (unsigned long long __lhs, decimal32 __rhs)decimal64 operator+ (unsigned long long __lhs, decimal64 __rhs)
๐ operator- โ subtraction era (unary minus said hi too)
decimal128 operator- (decimal128 __lhs, decimal128 __rhs)decimal128 operator- (decimal128 __lhs, decimal32 __rhs)decimal128 operator- (decimal128 __lhs, decimal64 __rhs)decimal128 operator- (decimal128 __lhs, int __rhs)decimal128 operator- (decimal128 __lhs, long __rhs)decimal128 operator- (decimal128 __lhs, long long __rhs)decimal128 operator- (decimal128 __lhs, unsigned int __rhs)decimal128 operator- (decimal128 __lhs, unsigned long __rhs)decimal128 operator- (decimal128 __lhs, unsigned long long __rhs)decimal128 operator- (decimal128 __rhs)โ unary minus, single arg, returnsdecimal128. negation slay.decimal128 operator- (decimal32 __lhs, decimal128 __rhs)decimal32 operator- (decimal32 __lhs, decimal32 __rhs)decimal64 operator- (decimal32 __lhs, decimal64 __rhs)decimal32 operator- (decimal32 __lhs, int __rhs)decimal32 operator- (decimal32 __lhs, long __rhs)decimal32 operator- (decimal32 __lhs, long long __rhs)decimal32 operator- (decimal32 __lhs, unsigned int __rhs)decimal32 operator- (decimal32 __lhs, unsigned long __rhs)decimal32 operator- (decimal32 __lhs, unsigned long long __rhs)decimal32 operator- (decimal32 __rhs)โ unary minus fordecimal32.decimal128 operator- (decimal64 __lhs, decimal128 __rhs)decimal64 operator- (decimal64 __lhs, decimal32 __rhs)decimal64 operator- (decimal64 __lhs, decimal64 __rhs)decimal64 operator- (decimal64 __lhs, int __rhs)decimal64 operator- (decimal64 __lhs, long __rhs)decimal64 operator- (decimal64 __lhs, long long __rhs)decimal64 operator- (decimal64 __lhs, unsigned int __rhs)
okay so we're picking up mid-roster on operator- โ the minus squad continues, and yes every single one of these bad boys gets its own line ๐
decimal64 operator- (decimal64 __lhs, unsigned long __rhs)
decimal64 operator- (decimal64 __lhs, unsigned long long __rhs)
decimal64 operator- (decimal64 __rhs)
decimal128 operator- (int __lhs, decimal128 __rhs)
decimal32 operator- (int __lhs, decimal32 __rhs)
decimal64 operator- (int __lhs, decimal64 __rhs)
decimal128 operator- (long __lhs, decimal128 __rhs)
decimal32 operator- (long __lhs, decimal32 __rhs)
decimal64 operator- (long __lhs, decimal64 __rhs)
decimal128 operator- (long long __lhs, decimal128 __rhs)
decimal32 operator- (long long __lhs, decimal32 __rhs)
decimal64 operator- (long long __lhs, decimal64 __rhs)
decimal128 operator- (unsigned int __lhs, decimal128 __rhs)
decimal32 operator- (unsigned int __lhs, decimal32 __rhs)
decimal64 operator- (unsigned int __lhs, decimal64 __rhs)
decimal128 operator- (unsigned long __lhs, decimal128 __rhs)
decimal32 operator- (unsigned long __lhs, decimal32 __rhs)
decimal64 operator- (unsigned long __lhs, decimal64 __rhs)
decimal128 operator- (unsigned long long __lhs, decimal128 __rhs)
decimal32 operator- (unsigned long long __lhs, decimal32 __rhs)
decimal64 operator- (unsigned long long __lhs, decimal64 __rhs)
spotted the icon: decimal64 operator- (decimal64 __rhs) is the unary one โ single argument, no __lhs, she's out here doing straight-up negation all by herself ๐ซถ
and that's the whole minus family, wrapped and done. periodt.
next up: division โจ the operator/ set is thicc โ big main character energy, nine whole lines just for decimal128 on the left alone. here she is ๐
decimal128 operator/ (decimal128 __lhs, decimal128 __rhs)
decimal128 operator/ (decimal128 __lhs, decimal32 __rhs)
decimal128 operator/ (decimal128 __lhs, decimal64 __rhs)
decimal128 operator/ (decimal128 __lhs, int __rhs)
decimal128 operator/ (decimal128 __lhs, long __rhs)
decimal128 operator/ (decimal128 __lhs, long long __rhs)
decimal128 operator/ (decimal128 __lhs, unsigned int __rhs)
decimal128 operator/ (decimal128 __lhs, unsigned long __rhs)
decimal128 operator/ (decimal128 __lhs, unsigned long long __rhs)
decimal128 operator/ (decimal32 __lhs, decimal128 __rhs)
decimal32 operator/ (decimal32 __lhs, decimal32 __rhs)
decimal64 operator/ (decimal32 __lhs, decimal64 __rhs)
decimal32 operator/ (decimal32 __lhs, int __rhs)
decimal32 operator/ (decimal32 __lhs, long __rhs)
decimal32 operator/ (decimal32 __lhs, long long __rhs)
decimal32 operator/ (decimal32 __lhs, unsigned int __rhs)
decimal32 operator/ (decimal32 __lhs, unsigned long __rhs)
decimal32 operator/ (decimal32 __lhs, unsigned long long __rhs)
decimal128 operator/ (decimal64 __lhs, decimal128 __rhs)
decimal64 operator/ (decimal64 __lhs, decimal32 __rhs)
decimal64 operator/ (decimal64 __lhs, decimal64 __rhs)
decimal64 operator/ (decimal64 __lhs, int __rhs)
decimal64 operator/ (decimal64 __lhs, long __rhs)
decimal64 operator/ (decimal64 __lhs, long long __rhs)
decimal64 operator/ (decimal64 __lhs, unsigned int __rhs)
decimal64 operator/ (decimal64 __lhs, unsigned long __rhs)
decimal64 operator/ (decimal64 __lhs, unsigned long long __rhs)
decimal128 operator/ (int __lhs, decimal128 __rhs)
decimal32 operator/ (int __lhs, decimal32 __rhs)
decimal64 operator/ (int __lhs, decimal64 __rhs)
decimal128 operator/ (long __lhs, decimal128 __rhs)
decimal32 operator/ (long __lhs, decimal32 __rhs)
decimal64 operator/ (long __lhs, decimal64 __rhs)
decimal128 operator/ (long long __lhs, decimal128 __rhs)
decimal32 operator/ (long long __lhs, decimal32 __rhs)
decimal64 operator/ (long long __lhs, decimal64 __rhs)
decimal128 operator/ (unsigned int __lhs, decimal128 __rhs)
decimal32 operator/ (unsigned int __lhs, decimal32 __rhs)
decimal64 operator/ (unsigned int __lhs, decimal64 __rhs)
decimal128 operator/ (unsigned long __lhs, decimal128 __rhs)
decimal32 operator/ (unsigned long __lhs, decimal32 __rhs)
decimal64 operator/ (unsigned long __lhs, decimal64 __rhs)
decimal128 operator/ (unsigned long long __lhs, decimal128 __rhs)
decimal32 operator/ (unsigned long long __lhs, decimal32 __rhs)
decimal64 operator/ (unsigned long long __lhs, decimal64 __rhs)
ngl bestie, look at that return-type glow-up: when the two sides don't match, the answer levels up to the bigger of the two โ decimal32 รท decimal64 gives you a decimal64, decimal32 รท decimal128 gives you a decimal128, decimal64 รท decimal128 gives you a decimal128. and when both sides are the same type? you get that type right back. the way it just scales ๐ญ๐
comparison time babes ๐ operator< returns a good ol' bool โ no decimal nonsense, just yes-or-no, true-or-false, ate-or-didn't ๐
bool operator< (decimal128 __lhs, decimal128 __rhs)
bool operator< (decimal128 __lhs, decimal32 __rhs)
bool operator< (decimal128 __lhs, decimal64 __rhs)
bool operator< (decimal128 __lhs, int __rhs)
bool operator< (decimal128 __lhs, long __rhs)
bool operator< (decimal128 __lhs, long long __rhs)
bool operator< (decimal128 __lhs, unsigned int __rhs)
bool operator< (decimal128 __lhs, unsigned long __rhs)
bool operator< (decimal128 __lhs, unsigned long long __rhs)
bool operator< (decimal32 __lhs, decimal128 __rhs)
bool operator< (decimal32 __lhs, decimal32 __rhs)
bool operator< (decimal32 __lhs, decimal64 __rhs)
bool operator< (decimal32 __lhs, int __rhs)
bool operator< (decimal32 __lhs, long __rhs)
bool operator< (decimal32 __lhs, long long __rhs)
bool operator< (decimal32 __lhs, unsigned int __rhs)
bool operator< (decimal32 __lhs, unsigned long __rhs)
bool operator< (decimal32 __lhs, unsigned long long __rhs)
bool operator< (decimal64 __lhs, decimal128 __rhs)
bool operator< (decimal64 __lhs, decimal32 __rhs)
bool operator< (decimal64 __lhs, decimal64 __rhs)
bool operator< (decimal64 __lhs, int __rhs)
bool operator< (decimal64 __lhs, long __rhs)
bool operator< (decimal64 __lhs, long long __rhs)
bool operator< (decimal64 __lhs, unsigned int __rhs)
bool operator< (decimal64 __lhs, unsigned long __rhs)
bool operator< (decimal64 __lhs, unsigned long long __rhs)
bool operator< (int __lhs, decimal128 __rhs)
bool operator< (int __lhs, decimal32 __rhs)
bool operator< (int __lhs, decimal64 __rhs)
bool operator< (long __lhs, decimal128 __rhs)
bool operator< (long __lhs, decimal32 __rhs)
bool operator< (long __lhs, decimal64 __rhs)
bool operator< (long long __lhs, decimal128 __rhs)
bool operator< (long long __lhs, decimal32 __rhs)
bool operator< (long long __lhs, decimal64 __rhs)
bool operator< (unsigned int __lhs, decimal128 __rhs)
bool operator< (unsigned int __lhs, decimal32 __rhs)
bool operator< (unsigned int __lhs, decimal64 __rhs)
bool operator< (unsigned long __lhs, decimal128 __rhs)
bool operator< (unsigned long __lhs, decimal32 __rhs)
bool operator< (unsigned long __lhs, decimal64 __rhs)
bool operator< (unsigned long long __lhs, decimal128 __rhs)
bool operator< (unsigned long long __lhs, decimal32 __rhs)
bool operator< (unsigned long long __lhs, decimal64 __rhs)
notice it goes both directions โ int on the left with a decimal on the right and decimal on the left with int on the right, because the compiler doesn't know which one you meant and honestly? she's just being polite ๐
and now the equality girlies ๐ operator==, same bool return, same exhaustive energy, same 45 lines of "what if it's this type tho":
bool operator== (decimal128 __lhs, decimal128 __rhs)
bool operator== (decimal128 __lhs, decimal32 __rhs)
bool operator== (decimal128 __lhs, decimal64 __rhs)
bool operator== (decimal128 __lhs, int __rhs)
bool operator== (decimal128 __lhs, long __rhs)
bool operator== (decimal128 __lhs, long long __rhs)
bool operator== (decimal128 __lhs, unsigned int __rhs)
bool operator== (decimal128 __lhs, unsigned long __rhs)
bool operator== (decimal128 __lhs, unsigned long long __rhs)
bool operator== (decimal32 __lhs, decimal128 __rhs)
bool operator== (decimal32 __lhs, decimal32 __rhs)
bool operator== (decimal32 __lhs, decimal64 __rhs)
bool operator== (decimal32 __lhs, int __rhs)
bool operator== (decimal32 __lhs, long __rhs)
bool operator== (decimal32 __lhs, long long __rhs)
bool operator== (decimal32 __lhs, unsigned int __rhs)
bool operator== (decimal32 __lhs, unsigned long __rhs)
bool operator== (decimal32 __lhs, unsigned long long __rhs)
bool operator== (decimal64 __lhs, decimal128 __rhs)
bool operator== (decimal64 __lhs, decimal32 __rhs)
bool operator== (decimal64 __lhs, decimal64 __rhs)
bool operator== (decimal64 __lhs, int __rhs)
bool operator== (decimal64 __lhs, long __rhs)
bool operator== (decimal64 __lhs, long long __rhs)
bool operator== (decimal64 __lhs, unsigned int __rhs)
bool operator== (decimal64 __lhs, unsigned long __rhs)
bool operator== (decimal64 __lhs, unsigned long long __rhs)
bool operator== (int __lhs, decimal128 __rhs)
bool operator== (int __lhs, decimal32 __rhs)
bool operator== (int __lhs, decimal64 __rhs)
bool operator== (long __lhs, decimal128 __rhs)
bool operator== (long __lhs, decimal32 __rhs)
bool operator== (long __lhs, decimal64 __rhs)
bool operator== (long long __lhs, decimal128 __rhs)
bool operator== (long long __lhs, decimal32 __rhs)
bool operator== (long long __lhs, decimal64 __rhs)
bool operator== (unsigned int __lhs, decimal128 __rhs)
bool operator== (unsigned int __lhs, decimal32 __rhs)
bool operator== (unsigned int __lhs, decimal64 __rhs)
bool operator== (unsigned long __lhs, decimal128 __rhs)
bool operator== (unsigned long __lhs, decimal32 __rhs)
bool operator== (unsigned long __lhs, decimal64 __rhs)
bool operator== (unsigned long long __lhs, decimal128 __rhs)
bool operator== (unsigned long long __lhs, decimal32 __rhs)
bool operator== (unsigned long long __lhs, decimal64 __rhs)
and we're ending this part on operator> โญ โ the "greater than" crew, doing the exact same dance as < except the other way around. she's mid-roll call so don't go anywhere ๐
bool operator> (decimal128 __lhs, decimal128 __rhs)
bool operator> (decimal128 __lhs, decimal32 __rhs)
bool operator> (decimal128 __lhs, decimal64 __rhs)
bool operator> (decimal128 __lhs, int __rhs)
bool operator> (decimal128 __lhs, long __rhs)
bool operator> (decimal128 __lhs, long long __rhs)
bool operator> (decimal128 __lhs, unsigned int __rhs)
bool operator> (decimal128 __lhs, unsigned long __rhs)
bool operator> (decimal128 __lhs, unsigned long long __rhs)
bool operator> (decimal32 __lhs, decimal128 __rhs)
bool operator> (decimal32 __lhs, decimal32 __rhs)
bool operator> (decimal32 __lhs, decimal64 __rhs)
bool operator> (decimal32 __lhs, int __rhs)
bool operator> (decimal32 __lhs, long __rhs)
bool operator> (decimal32 __lhs, long long __rhs)
bool operator> (decimal32 __lhs, unsigned int __rhs)
bool operator> (decimal32 __lhs, unsigned long __rhs)
bool operator> (decimal32 __lhs, unsigned long long __rhs)
bool operator> (decimal64 __lhs, decimal128 __rhs)
bool operator> (decimal64 __lhs, decimal32 __rhs)
bool operator> (decimal64 __lhs, decimal64 __rhs)
bool operator> (decimal64 __lhs, int __rhs)
bool operator> (decimal64 __lhs, long __rhs)
bool operator> (decimal64 __lhs, long long __rhs)
bool operator> (decimal64 __lhs, unsigned int __rhs)
bool operator> (decimal64 __lhs, unsigned long __rhs)
bool operator> (decimal64 __lhs, unsigned long long __rhs)
bool operator> (int __lhs, decimal128 __rhs)
bool operator> (int __lhs, decimal32 __rhs)
bool operator> (int __lhs, decimal64 __rhs)
bool operator> (long __lhs, decimal128 __rhs)
bool operator> (long __lhs, decimal32 __rhs)
bool operator> (long __lhs, decimal64 __rhs)
bool operator> (long long __lhs, decimal128 __rhs)
bool operator> (long long __lhs, decimal32 __rhs)
bool operator> (long long __lhs, decimal64 __rhs)
bool operator> (unsigned int __lhs, decimal128 __rhs)
bool operator> (unsigned int __lhs, decimal32 __rhs)
bool operator> (unsigned int __lhs, decimal64 __rhs)
bool operator> (unsigned long __lhs, decimal128 __rhs)
bool operator> (unsigned long __lhs, decimal32 __rhs)
bool operator> (unsigned long __lhs, decimal64 __rhs)
bool operator> (unsigned long long __lhs, decimal128 __rhs)
bool operator> (unsigned long long __lhs, decimal32 __rhs)
still rolling, bestie โ more coming ๐
...and bestie, we are SO close to the end of this operator wall. Like, we've been scrolling for hours and my thumbs hurt, but the >= squad deserves its moment too, okay? One straggler > first (fashionably late, honestly iconic of it), then every single >= pairing in existence. No cap, they really did type out all of them:
bool operator> (unsigned long long __lhs, decimal64 __rhs)
bool operator>= (decimal128 __lhs, decimal128 __rhs)
bool operator>= (decimal128 __lhs, decimal32 __rhs)
bool operator>= (decimal128 __lhs, decimal64 __rhs)
bool operator>= (decimal128 __lhs, int __rhs)
bool operator>= (decimal128 __lhs, long __rhs)
bool operator>= (decimal128 __lhs, long long __rhs)
bool operator>= (decimal128 __lhs, unsigned int __rhs)
bool operator>= (decimal128 __lhs, unsigned long __rhs)
bool operator>= (decimal128 __lhs, unsigned long long __rhs)
bool operator>= (decimal32 __lhs, decimal128 __rhs)
bool operator>= (decimal32 __lhs, decimal32 __rhs)
bool operator>= (decimal32 __lhs, decimal64 __rhs)
bool operator>= (decimal32 __lhs, int __rhs)
bool operator>= (decimal32 __lhs, long __rhs)
bool operator>= (decimal32 __lhs, long long __rhs)
bool operator>= (decimal32 __lhs, unsigned int __rhs)
bool operator>= (decimal32 __lhs, unsigned long __rhs)
bool operator>= (decimal32 __lhs, unsigned long long __rhs)
bool operator>= (decimal64 __lhs, decimal128 __rhs)
bool operator>= (decimal64 __lhs, decimal32 __rhs)
bool operator>= (decimal64 __lhs, decimal64 __rhs)
bool operator>= (decimal64 __lhs, int __rhs)
bool operator>= (decimal64 __lhs, long __rhs)
bool operator>= (decimal64 __lhs, long long __rhs)
bool operator>= (decimal64 __lhs, unsigned int __rhs)
bool operator>= (decimal64 __lhs, unsigned long __rhs)
bool operator>= (decimal64 __lhs, unsigned long long __rhs)
bool operator>= (int __lhs, decimal128 __rhs)
bool operator>= (int __lhs, decimal32 __rhs)
bool operator>= (int __lhs, decimal64 __rhs)
bool operator>= (long __lhs, decimal128 __rhs)
bool operator>= (long __lhs, decimal32 __rhs)
bool operator>= (long __lhs, decimal64 __rhs)
bool operator>= (long long __lhs, decimal128 __rhs)
bool operator>= (long long __lhs, decimal32 __rhs)
bool operator>= (long long __lhs, decimal64 __rhs)
bool operator>= (unsigned int __lhs, decimal128 __rhs)
bool operator>= (unsigned int __lhs, decimal32 __rhs)
bool operator>= (unsigned int __lhs, decimal64 __rhs)
bool operator>= (unsigned long __lhs, decimal128 __rhs)
bool operator>= (unsigned long __lhs, decimal32 __rhs)
bool operator>= (unsigned long __lhs, decimal64 __rhs)
bool operator>= (unsigned long long __lhs, decimal128 __rhs)
bool operator>= (unsigned long long __lhs, decimal32 __rhs)
bool operator>= (unsigned long long __lhs, decimal64 __rhs)
Right?? Every decimal32 / decimal64 / decimal128 combo with each other, and with int, long, long long, unsigned int, unsigned long, unsigned long long โ both directions, __lhs and __rhs โ and every single one hands you back a bool. It's giving "we will not let you write a comparison that doesn't compile." Obsessed. ๐ฅ
๐ฆ DETAILED DESCRIPTION ๐ฆ
ISO/IEC TR 24733 Decimal floating-point arithmetic.
That's the whole vibe, bestie โ this whole header is the implementation of that ISO/IEC TR 24733 decimal floating-point arithmetic spec. That's the standard, that's the assignment, that's the moment. โจ
๐ FUNCTION DOCUMENTATION ๐
๐ long long std::decimal::decimal32_to_long_long (decimal32 __d)
K so this one is a non-conforming extension โ meaning it's a little bonus the library hands you that's not part of the conforming spec. Read that again, because I need you to know it before you build your whole personality on it: non-conforming extension. It does a conversion to integral type.
References: std::operator+(), and std::operator-(). Those are the two it name-drops, so write them down in your notes app alongside your crush's birthday. ๐๐
๐ AUTHOR ๐
Generated automatically by Doxygen for libstdc++ from the source code.
I know. Nobody hand-wrote this masterpiece โ the robot did it, and honestly? Slay, little Doxygen. ๐
And that's a wrap on std::decimal(3cxx), bestie!! Courtesy of libstdc++ and its humble servant Doxygen, filed under section 3cxx in your friendly neighborhood man pages. Go forth and compare decimals responsibly. ๐ซถ๐๐
๐ฆ where this page comes from
- ubuntu noble: libstdc++-14-doc 14-20240412-0ubuntu1
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms