Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
extF80_le.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.c:

Go to the source code of this file.

Functions

bool extF80_le (extFloat80_t a, extFloat80_t b)
 

Function Documentation

◆ extF80_le()

bool extF80_le ( extFloat80_t a,
extFloat80_t b )

Definition at line 44 of file extF80_le.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 ) ) {
62 return false;
63 }
64 signA = signExtF80UI64( uiA64 );
65 signB = signExtF80UI64( uiB64 );
66 return
67 (signA != signB)
68 ? signA || ! (((uiA64 | uiB64) & 0x7FFF) | uiA0 | uiB0)
69 : ((uiA64 == uiB64) && (uiA0 == uiB0))
70 || (signA ^ softfloat_lt128( uiA64, uiA0, uiB64, uiB0 ));
71
72}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1181
void softfloat_raiseFlags(uint_fast8_t flags)
#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: