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

Function floatx80_neg

src/softfloat/softfloat.cpp:3310–3337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3308 *----------------------------------------------------------------------------*/
3309
3310floatx80 floatx80_neg(floatx80 a, float_status *status)
3311{
3312 flag aSign;
3313 int32_t aExp;
3314 uint64_t aSig;
3315
3316 aSig = extractFloatx80Frac(a);
3317 aExp = extractFloatx80Exp(a);
3318 aSign = extractFloatx80Sign(a);
3319
3320 if ( aExp == 0x7FFF ) {
3321 if ( (uint64_t) ( aSig<<1 ) )
3322 return propagateFloatx80NaNOneArg( a, status );
3323 if (inf_clear_intbit(status)) aSig = 0;
3324 return packFloatx80(!aSign, aExp, aSig);
3325 }
3326
3327 aSign = !aSign;
3328
3329 if ( aExp == 0 ) {
3330 if ( aSig == 0 ) return packFloatx80( aSign, 0, 0 );
3331 normalizeFloatx80Subnormal( aSig, &aExp, &aSig );
3332 }
3333
3334 return roundAndPackFloatx80(
3335 status->floatx80_rounding_precision, aSign, aExp, aSig, 0, status );
3336
3337}
3338
3339/*----------------------------------------------------------------------------
3340 | Returns the result of comparing the extended double-precision floating-

Callers 1

fp_negFunction · 0.85

Calls 8

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

Tested by

no test coverage detected