Beispiel #1
0
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
}
Beispiel #2
0
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
}
Beispiel #3
0
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
}
Beispiel #4
0
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
}
Beispiel #5
0
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
}