MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / floatx80_abs

Function floatx80_abs

src/softfloat/softfloat.cpp:3279–3302  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3277 *----------------------------------------------------------------------------*/
3278
3279floatx80 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'.

Callers 2

fp_absFunction · 0.85
floatx80_sinhFunction · 0.85

Calls 7

extractFloatx80FracFunction · 0.85
extractFloatx80ExpFunction · 0.85
inf_clear_intbitFunction · 0.85
packFloatx80Function · 0.85
roundAndPackFloatx80Function · 0.85

Tested by

no test coverage detected