Decimal128 DecimalUtil::fma(Decimal128 x, Decimal128 y, Decimal128 z) { #if BDLDFP_DECIMALPLATFORM_C99_TR return fmad128(x.value(), y.value(), z.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER Decimal128 rv; decQuadFMA(rv.data(), x.data(), y.data(), z.data(), getContext()); return rv; #endif }
int DecimalUtil::classify(Decimal128 x) { #if BDLDFP_DECIMALPLATFORM_C99_TR return fpclassify(x.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER enum decClass cl = decQuadClass(x.data()); return deClass2FP_(cl); #endif }
Decimal128 DecimalUtil::fabs(Decimal128 value) { #if BDLDFP_DECIMALPLATFORM_C99_TR return fabsd128(value.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER Decimal128 rv; decQuadAbs(rv.data(), value.data(), getContext()); return rv; #endif }
Decimal128 DecimalUtil::round(Decimal128 x) { #if BDLDFP_DECIMALPLATFORM_C99_TR return roundd128(x.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER Decimal128 rv; decQuadToIntegralValue(rv.data(), x.data(), getContext(), DEC_ROUND_HALF_UP); return rv; #endif }
Decimal128 DecimalUtil::ceil(Decimal128 x) { #if BDLDFP_DECIMALPLATFORM_C99_TR return ceild128(x.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER Decimal128 rv; decQuadToIntegralValue(rv.data(), x.data(), getContext(), DEC_ROUND_CEILING); return rv; #endif }