Download Numerical Computation Guide
Transcript
CODE EXAMPLE 4-4
Substituting IEEE Trapped Under/Overflow Handler Results for
SPARC Systems (Continued)
break;
}
/* set up scale factors */
if (sip->si_code == FPE_FLTOVF) {
fscl = scalbnf(1.0f, -96);
dscl = scalbn(1.0, -768);
qscl = scalbnl(1.0, -12288);
} else {
fscl = scalbnf(1.0f, 96);
dscl = scalbn(1.0, 768);
qscl = scalbnl(1.0, 12288);
}
/* disable traps and generate the scaled result */
fpsetmask(0);
switch (opf) {
case 0x41: /* add single */
fd = fscl * (fscl * fs1 + fscl * fs2);
break;
case 0x42: /* add double */
dd = dscl * (dscl * ds1 + dscl * ds2);
break;
case 0x43: /*
qd = qscl
break;
case 0x45: /*
fd = fscl
break;
add quad */
* (qscl * qs1 + qscl * qs2);
subtract single */
* (fscl * fs1 - fscl * fs2);
case 0x46: /* subtract double */
dd = dscl * (dscl * ds1 - dscl * ds2);
break;
case 0x47: /* subtract quad */
qd = qscl * (qscl * qs1 - qscl * qs2);
break;
108
Numerical Computation Guide • May 2003