Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
extF80_le_quiet.c File Reference
#include <stdbool.h>
#include <stdint.h>
#include "platform.h"
#include "internals.h"
#include "specialize.h"
#include "softfloat.h"
Include dependency graph for extF80_le_quiet.c:

Go to the source code of this file.

Functions

bool extF80_le_quiet (extFloat80_t a, extFloat80_t b)
 

Function Documentation

◆ extF80_le_quiet()

bool extF80_le_quiet ( extFloat80_t a,
extFloat80_t b )

Definition at line 44 of file extF80_le_quiet.c.

45{
46 union { struct extFloat80M s; extFloat80_t f; } uA;
47 uint_fast16_t uiA64;
48 uint_fast64_t uiA0;
49 union { struct extFloat80M s; extFloat80_t f; } uB;
50 uint_fast16_t uiB64;
51 uint_fast64_t uiB0;
52 bool signA, signB;
53
54 uA.f = a;
55 uiA64 = uA.s.signExp;
56 uiA0 = uA.s.signif;
57 uB.f = b;
58 uiB64 = uB.s.signExp;
59 uiB0 = uB.s.signif;
60 if ( isNaNExtF80UI( uiA64, uiA0 ) || isNaNExtF80UI( uiB64, uiB0 ) ) {
61 if (
62 softfloat_isSigNaNExtF80UI( uiA64, uiA0 )
63 || softfloat_isSigNaNExtF80UI( uiB64, uiB0 )
64 ) {
66 }
67 return false;
68 }
69 signA = signExtF80UI64( uiA64 );
70 signB = signExtF80UI64( uiB64 );
71 return
72 (signA != signB)
73 ? signA || ! (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
74 : ((uiA64 == uiB64) && (uiA0 == uiB0))
75 || (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
76
77}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1181
void softfloat_raiseFlags(uint_fast8_t flags)
#define softfloat_isSigNaNExtF80UI(uiA64, uiA0)
Definition specialize.h:202
#define isNaNExtF80UI(a64, a0)
Definition internals.h:150
#define signExtF80UI64(a64)
Definition internals.h:146
@ softfloat_flag_invalid
Definition softfloat.h:89
bool softfloat_lt128(uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0)
Definition s_lt128.c:43
uint16_t uint_fast16_t
Definition stdint.h:155
uint64_t uint_fast64_t
Definition stdint.h:157
uint16_t signExp
char * s
Here is the call graph for this function: