85 if ( sigA || ((expB == 0x1F) && sigB) )
goto propagateNaN_ABC;
86 magBits = expB | sigB;
90 if ( sigB )
goto propagateNaN_ABC;
91 magBits = expA | sigA;
105 if ( ! sigA )
goto zeroProd;
107 expA = normExpSig.
exp;
108 sigA = normExpSig.
sig;
111 if ( ! sigB )
goto zeroProd;
113 expB = normExpSig.
exp;
114 sigB = normExpSig.
sig;
118 expProd = expA + expB - 0xE;
119 sigA = (sigA | 0x0400)<<4;
120 sigB = (sigB | 0x0400)<<4;
122 if ( sigProd < 0x20000000 ) {
130 sigZ = sigProd>>15 | ((sigProd & 0x7FFF) != 0);
134 expC = normExpSig.
exp;
135 sigC = normExpSig.
sig;
137 sigC = (sigC | 0x0400)<<3;
140 expDiff = expProd - expC;
141 if ( signProd == signC ) {
144 if ( expDiff <= 0 ) {
153 sigZ = sig32Z>>16 | ((sig32Z & 0xFFFF) != 0 );
155 if ( sigZ < 0x4000 ) {
167 }
else if ( ! expDiff ) {
169 sig32Z = sigProd - sig32C;
170 if ( ! sig32Z )
goto completeCancellation;
171 if ( sig32Z & 0x80000000 ) {
182 if ( shiftDist < 0 ) {
185 | ((
uint32_t) (sig32Z<<(shiftDist & 31)) != 0);
196 goto propagateNaN_ZC;
202 if ( expC != 0x1F )
goto uiZ;
203 if ( sigC )
goto propagateNaN_ZC;
204 if ( signProd == signC )
goto uiZ;
215 if ( ! (expC | sigC) && (signProd != signC) ) {
216 completeCancellation: