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

Go to the source code of this file.

Functions

bool f128_lt_quiet (float128_t a, float128_t b)
 

Function Documentation

◆ f128_lt_quiet()

bool f128_lt_quiet ( float128_t a,
float128_t b )

Definition at line 44 of file f128_lt_quiet.c.

45{
46 union ui128_f128 uA;
47 uint_fast64_t uiA64, uiA0;
48 union ui128_f128 uB;
49 uint_fast64_t uiB64, uiB0;
50 bool signA, signB;
51
52 uA.f = a;
53 uiA64 = uA.ui.v64;
54 uiA0 = uA.ui.v0;
55 uB.f = b;
56 uiB64 = uB.ui.v64;
57 uiB0 = uB.ui.v0;
58 if ( isNaNF128UI( uiA64, uiA0 ) || isNaNF128UI( uiB64, uiB0 ) ) {
59 if (
60 softfloat_isSigNaNF128UI( uiA64, uiA0 )
61 || softfloat_isSigNaNF128UI( uiB64, uiB0 )
62 ) {
64 }
65 return false;
66 }
67 signA = signF128UI64( uiA64 );
68 signB = signF128UI64( uiB64 );
69 return
70 (signA != signB)
71 ? signA
72 && (((uiA64 | uiB64) & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
73 | 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)
@ 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
uint64_t uint_fast64_t
Definition stdint.h:157
#define UINT64_C(val)
Definition stdint.h:284
Here is the call graph for this function: