MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / extF80_div

Function extF80_div

lib/softfloat/source/extF80_div.c:44–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42#include "softfloat.h"
43
44extFloat80_t extF80_div( extFloat80_t a, extFloat80_t b )
45{
46 union { struct extFloat80M s; extFloat80_t f; } uA;
47 uint_fast16_t uiA64;
48 uint_fast64_t uiA0;
49 bool signA;
50 int_fast32_t expA;
51 uint_fast64_t sigA;
52 union { struct extFloat80M s; extFloat80_t f; } uB;
53 uint_fast16_t uiB64;
54 uint_fast64_t uiB0;
55 bool signB;
56 int_fast32_t expB;
57 uint_fast64_t sigB;
58 bool signZ;
59 struct exp32_sig64 normExpSig;
60 int_fast32_t expZ;
61 struct uint128 rem;
62 uint_fast32_t recip32;
63 uint_fast64_t sigZ;
64 int ix;
65 uint_fast64_t q64;
66 uint_fast32_t q;
67 struct uint128 term;
68 uint_fast64_t sigZExtra;
69 struct uint128 uiZ;
70 uint_fast16_t uiZ64;
71 uint_fast64_t uiZ0;
72 union { struct extFloat80M s; extFloat80_t f; } uZ;
73
74 /*------------------------------------------------------------------------
75 *------------------------------------------------------------------------*/
76 uA.f = a;
77 uiA64 = uA.s.signExp;
78 uiA0 = uA.s.signif;
79 signA = signExtF80UI64( uiA64 );
80 expA = expExtF80UI64( uiA64 );
81 sigA = uiA0;
82 uB.f = b;
83 uiB64 = uB.s.signExp;
84 uiB0 = uB.s.signif;
85 signB = signExtF80UI64( uiB64 );
86 expB = expExtF80UI64( uiB64 );
87 sigB = uiB0;
88 signZ = signA ^ signB;
89 /*------------------------------------------------------------------------
90 *------------------------------------------------------------------------*/
91 if ( expA == 0x7FFF ) {
92 if ( sigA & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
93 if ( expB == 0x7FFF ) {
94 if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
95 goto invalid;
96 }
97 goto infinity;
98 }
99 if ( expB == 0x7FFF ) {
100 if ( sigB & UINT64_C( 0x7FFFFFFFFFFFFFFF ) ) goto propagateNaN;
101 goto zero;

Callers 3

FDIVMethod · 0.85
FDIVRMethod · 0.85
FPREMMethod · 0.85

Calls 10

softfloat_sub128Function · 0.70
softfloat_add128Function · 0.70
softfloat_le128Function · 0.70
softfloat_raiseFlagsFunction · 0.50

Tested by

no test coverage detected