int32_t aExp, shiftCount;
uint64_t aSig;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return 1 << 31;
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
uint64_t aSig, savedASig;
int32_t z;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return 1 << 31;
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
int32_t aExp, shiftCount;
uint64_t aSig, aSigExtra;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return 1ULL << 63;
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
uint64_t aSig;
int64_t z;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return 1ULL << 63;
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
int32_t aExp;
uint64_t aSig;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return float32_default_nan(status);
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
int32_t aExp;
uint64_t aSig, zSig;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return float64_default_nan(status);
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
int aExp;
uint64_t aSig, zSig0, zSig1;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return float128_default_nan(status);
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
uint64_t lastBitMask, roundBitsMask;
floatx80 z;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aExp = extractFloatx80Exp( a );
if ( 0x403E <= aExp ) {
if ( ( aExp == 0x7FFF ) && (uint64_t) ( extractFloatx80Frac( a )<<1 ) ) {
{
flag aSign, bSign;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSign = extractFloatx80Sign( a );
bSign = extractFloatx80Sign( b );
if ( aSign == bSign ) {
{
flag aSign, bSign;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSign = extractFloatx80Sign( a );
bSign = extractFloatx80Sign( b );
if ( aSign == bSign ) {
int32_t aExp, bExp, zExp;
uint64_t aSig, bSig, zSig0, zSig1;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
uint64_t aSig, bSig, zSig0, zSig1;
uint64_t rem0, rem1, rem2, term0, term1, term2;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
uint64_t aSig0, aSig1, bSig;
uint64_t q, term0, term1, alternateASig0, alternateASig1;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSig0 = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
uint64_t aSig0, aSig1, zSig0, zSig1, doubleZSig0;
uint64_t rem0, rem1, rem2, rem3, term0, term1, term2, term3;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSig0 = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );
int floatx80_eq(floatx80 a, floatx80 b, float_status *status)
{
- if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
- || ( ( extractFloatx80Exp( b ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( b )<<1 ) )
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)
+ || (extractFloatx80Exp(a) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(a) << 1))
+ || (extractFloatx80Exp(b) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(b) << 1))
) {
float_raise(float_flag_invalid, status);
return 0;
{
flag aSign, bSign;
- if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
- || ( ( extractFloatx80Exp( b ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( b )<<1 ) )
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)
+ || (extractFloatx80Exp(a) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(a) << 1))
+ || (extractFloatx80Exp(b) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(b) << 1))
) {
float_raise(float_flag_invalid, status);
return 0;
{
flag aSign, bSign;
- if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
- || ( ( extractFloatx80Exp( b ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( b )<<1 ) )
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)
+ || (extractFloatx80Exp(a) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(a) << 1))
+ || (extractFloatx80Exp(b) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(b) << 1))
) {
float_raise(float_flag_invalid, status);
return 0;
*----------------------------------------------------------------------------*/
int floatx80_unordered(floatx80 a, floatx80 b, float_status *status)
{
- if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
- || ( ( extractFloatx80Exp( b ) == 0x7FFF )
- && (uint64_t) ( extractFloatx80Frac( b )<<1 ) )
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)
+ || (extractFloatx80Exp(a) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(a) << 1))
+ || (extractFloatx80Exp(b) == 0x7FFF
+ && (uint64_t) (extractFloatx80Frac(b) << 1))
) {
float_raise(float_flag_invalid, status);
return 1;
int floatx80_eq_quiet(floatx80 a, floatx80 b, float_status *status)
{
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return 0;
+ }
if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
&& (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
{
flag aSign, bSign;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return 0;
+ }
if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
&& (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
{
flag aSign, bSign;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return 0;
+ }
if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
&& (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
*----------------------------------------------------------------------------*/
int floatx80_unordered_quiet(floatx80 a, floatx80 b, float_status *status)
{
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return 1;
+ }
if ( ( ( extractFloatx80Exp( a ) == 0x7FFF )
&& (uint64_t) ( extractFloatx80Frac( a )<<1 ) )
|| ( ( extractFloatx80Exp( b ) == 0x7FFF )
{
flag aSign, bSign;
+ if (floatx80_invalid_encoding(a) || floatx80_invalid_encoding(b)) {
+ float_raise(float_flag_invalid, status);
+ return float_relation_unordered;
+ }
if (( ( extractFloatx80Exp( a ) == 0x7fff ) &&
( extractFloatx80Frac( a )<<1 ) ) ||
( ( extractFloatx80Exp( b ) == 0x7fff ) &&
int32_t aExp;
uint64_t aSig;
+ if (floatx80_invalid_encoding(a)) {
+ float_raise(float_flag_invalid, status);
+ return floatx80_default_nan(status);
+ }
aSig = extractFloatx80Frac( a );
aExp = extractFloatx80Exp( a );
aSign = extractFloatx80Sign( a );