long double __qdim( double uhi, double ulo, double vhi, double vlo ) { ldquad result; #include "msg.h" if ( uhi != uhi ) { result.q.hi = uhi; result.q.lo = ulo; return ( result.ld ); } if ( vhi != vhi ) { result.q.hi = vhi; result.q.lo = vlo; return ( result.ld ); } if ( uhi > vhi ) result.ld = __q_sub(uhi, ulo, vhi, vlo); else if ( (uhi == vhi) && (ulo > vlo) ) result.ld = ulo - vlo; else result.ld = 0.0L; return ( result.ld ); }
long double __qnint(double uhi,double ulo ) { ldquad result, y; if ( uhi != uhi ) { result.q.hi = uhi; result.q.lo = ulo; return ( result.ld ); } if ( uhi >= 0.0 ) { y.ld = __q_add(uhi, ulo, 0.5, 0.0); /* y = arg + 0.5 */ } else { y.ld = __q_sub(uhi, ulo, 0.5, 0.0); /* y = arg - 0.5 */ } result.ld = __qint(y.q.hi, y.q.lo); return (result.ld); }