Decimal64 DecimalUtil::fabs(Decimal64 value) { #if BDLDFP_DECIMALPLATFORM_C99_TR return fabsd64(value.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER Decimal64 rv; decDoubleAbs(rv.data(), value.data(), getContext()); return rv; #endif }
Datum decimal64_abs(PG_FUNCTION_ARGS) { PGDecimal64 a = PG_GETARG_DECIMAL64(0); PGDecimal64 ret; DECLARE_DEC_CTXT(DEC_INIT_DECIMAL64); decDoubleAbs(&ret, &a, &dc); DEC_CHK_STATUS(dc, DEC_STATUS_OFUF, "decimal64 overflow"); PG_RETURN_DECIMAL64(ret); }
Decimal32 DecimalUtil::fabs(Decimal32 value) { #if BDLDFP_DECIMALPLATFORM_C99_TR return fabsd32(value.value()); #elif BDLDFP_DECIMALPLATFORM_DECNUMBER // TODO TBD Just flip the sign bit, but beware of endianness Decimal64 in(value); Decimal64 out; decDoubleAbs(out.data(), in.data(), getContext()); return Decimal32(out); #endif }