| 3277 | *----------------------------------------------------------------------------*/ |
| 3278 | |
| 3279 | floatx80 floatx80_abs(floatx80 a, float_status *status) |
| 3280 | { |
| 3281 | int32_t aExp; |
| 3282 | uint64_t aSig; |
| 3283 | |
| 3284 | aSig = extractFloatx80Frac(a); |
| 3285 | aExp = extractFloatx80Exp(a); |
| 3286 | |
| 3287 | if ( aExp == 0x7FFF ) { |
| 3288 | if ( (uint64_t) ( aSig<<1 ) ) |
| 3289 | return propagateFloatx80NaNOneArg( a, status ); |
| 3290 | if (inf_clear_intbit(status)) aSig = 0; |
| 3291 | return packFloatx80(0, aExp, aSig); |
| 3292 | } |
| 3293 | |
| 3294 | if ( aExp == 0 ) { |
| 3295 | if ( aSig == 0 ) return packFloatx80( 0, 0, 0 ); |
| 3296 | normalizeFloatx80Subnormal( aSig, &aExp, &aSig ); |
| 3297 | } |
| 3298 | |
| 3299 | return roundAndPackFloatx80( |
| 3300 | status->floatx80_rounding_precision, 0, aExp, aSig, 0, status ); |
| 3301 | |
| 3302 | } |
| 3303 | |
| 3304 | /*----------------------------------------------------------------------------- |
| 3305 | | Changes the sign of the extended double-precision floating-point value 'a'. |
no test coverage detected