Lines Matching refs:dfl

177 static decFloat * decDivide(decFloat *result, const decFloat *dfl,  in decDivide()  argument
201 num.sign=(DFWORD(dfl, 0)^DFWORD(dfr, 0)) & DECFLOAT_Sign; in decDivide()
203 if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr)) { /* either is special? */ in decDivide()
205 if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decDivide()
207 if (DFISINF(dfl)) { in decDivide()
215 if (op&(REMAINDER|REMNEAR)) return decCanonical(result, dfl); in decDivide()
225 if (DFISZERO(dfl)) { /* 0/0 is undefined */ in decDivide()
236 num.exponent=GETEXPUN(dfl)-GETEXPUN(dfr); /* ideal exponent */ in decDivide()
237 if (DFISZERO(dfl)) { /* 0/x (x!=0) */ in decDivide()
247 num.exponent=MINI(GETEXPUN(dfl), GETEXPUN(dfr)); in decDivide()
249 num.sign=DFWORD(dfl, 0)&DECFLOAT_Sign; in decDivide()
266 GETCOEFFBILL(dfl, acc+DIVACCLEN-DIVOPLEN); in decDivide()
667 sign=DFWORD(dfl, 0); /* save sign of dfl */ in decDivide()
668 decFloatFMA(result, &quotient, dfr, dfl, set); in decDivide()
719 const decFloat *dfl, const decFloat *dfr) { in decFiniteMultiply() argument
737 num->sign=(DFWORD(dfl, 0)^DFWORD(dfr, 0)) & DECFLOAT_Sign; in decFiniteMultiply()
738 num->exponent=GETEXPUN(dfl)+GETEXPUN(dfr); /* [see assertion above] */ in decFiniteMultiply()
744 GETCOEFFBILL(dfl, bufl); in decFiniteMultiply()
1059 decFloatShow(dfl, "dfl"); in decFiniteMultiply()
1113 const decFloat *dfl, const decFloat *dfr, in decFloatAdd() argument
1151 sourhil=DFWORD(dfl, 0); /* LHS top word */ in decFloatAdd()
1154 bexpr+=GETECON(dfl); /* .. + continuation */ in decFloatAdd()
1178 if (summ<-64) return decNaNs(result, dfl, dfr, set); /* one or two NaNs */ in decFloatAdd()
1181 if (DFISINF(dfl)) return decInfinity(result, dfl); /* LHS is infinite */ in decFloatAdd()
1191 GETCOEFFTHOU(dfl, tac); /* least-significant goes to [0] */ in decFloatAdd()
1250 const decFloat *dfswap=dfl; in decFloatAdd()
1251 dfl=dfr; in decFloatAdd()
1261 if (DFISZERO(dfl)) { in decFloatAdd()
1301 GETCOEFF(dfl, acc+COFF); /* decode from decFloat */ in decFloatAdd()
1310 tum.sign=DFWORD(dfl, 0) & DECFLOAT_Sign; in decFloatAdd()
1482 num.sign=DFWORD(dfl, 0) & DECFLOAT_Sign; in decFloatAdd()
1559 num.sign=DFWORD(dfl, 0)&DECFLOAT_Sign; in decFloatAdd()
1573 decFloatShow(dfl, "dfl"); in decFloatAdd()
1593 const decFloat *dfl, const decFloat *dfr, in decFloatAnd() argument
1595 if (!DFISUINT01(dfl) || !DFISUINT01(dfr) in decFloatAnd()
1596 || !DFISCC01(dfl) || !DFISCC01(dfr)) return decInvalid(result, set); in decFloatAnd()
1600 |((DFWORD(dfl, 0) & DFWORD(dfr, 0))&0x04009124); in decFloatAnd()
1601 DFWORD(result, 1)=(DFWORD(dfl, 1) & DFWORD(dfr, 1))&0x49124491; in decFloatAnd()
1604 |((DFWORD(dfl, 0) & DFWORD(dfr, 0))&0x04000912); in decFloatAnd()
1605 DFWORD(result, 1)=(DFWORD(dfl, 1) & DFWORD(dfr, 1))&0x44912449; in decFloatAnd()
1606 DFWORD(result, 2)=(DFWORD(dfl, 2) & DFWORD(dfr, 2))&0x12449124; in decFloatAnd()
1607 DFWORD(result, 3)=(DFWORD(dfl, 3) & DFWORD(dfr, 3))&0x49124491; in decFloatAnd()
1688 const decFloat *dfl, const decFloat *dfr, in decFloatCompare() argument
1692 if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatCompare()
1694 comp=decNumCompare(dfl, dfr, 0); in decFloatCompare()
1712 const decFloat *dfl, const decFloat *dfr, in decFloatCompareSignal() argument
1716 if (DFISNAN(dfl) || DFISNAN(dfr)) { in decFloatCompareSignal()
1718 return decNaNs(result, dfl, dfr, set); in decFloatCompareSignal()
1721 comp=decNumCompare(dfl, dfr, 0); in decFloatCompareSignal()
1738 const decFloat *dfl, const decFloat *dfr) { in decFloatCompareTotal() argument
1744 if (DFISNAN(dfl) || DFISNAN(dfr)) { in decFloatCompareTotal()
1747 nanl=DFISSNAN(dfl)+DFISQNAN(dfl)*2; /* quiet > signalling */ in decFloatCompareTotal()
1748 if (DFISSIGNED(dfl)) nanl=-nanl; in decFloatCompareTotal()
1759 sigl=(DFISSIGNED(dfl) ? -1 : +1); in decFloatCompareTotal()
1767 GETCOEFF(dfl, bufl+QUAD*2); /* decode from decFloat */ in decFloatCompareTotal()
1786 comp=decNumCompare(dfl, dfr, 1); /* total ordering */ in decFloatCompareTotal()
1804 const decFloat *dfl, const decFloat *dfr) { in decFloatCompareTotalMag() argument
1807 if (DFISSIGNED(dfl)) { in decFloatCompareTotalMag()
1808 decFloatCopyAbs(&a, dfl); in decFloatCompareTotalMag()
1809 dfl=&a; in decFloatCompareTotalMag()
1815 return decFloatCompareTotal(result, dfl, dfr); in decFloatCompareTotalMag()
1827 decFloat * decFloatCopy(decFloat *result, const decFloat *dfl) { in decFloatCopy() argument
1828 if (dfl!=result) *result=*dfl; /* copy needed */ in decFloatCopy()
1841 decFloat * decFloatCopyAbs(decFloat *result, const decFloat *dfl) { in decFloatCopyAbs() argument
1842 if (dfl!=result) *result=*dfl; /* copy needed */ in decFloatCopyAbs()
1856 decFloat * decFloatCopyNegate(decFloat *result, const decFloat *dfl) { in decFloatCopyNegate() argument
1857 if (dfl!=result) *result=*dfl; /* copy needed */ in decFloatCopyNegate()
1873 const decFloat *dfl, const decFloat *dfr) { in decFloatCopySign() argument
1875 if (dfl!=result) *result=*dfl; /* copy needed */ in decFloatCopySign()
1974 const decFloat *dfl, const decFloat *dfr, in decFloatDivide() argument
1976 return decDivide(result, dfl, dfr, set, DIVIDE); in decFloatDivide()
1990 const decFloat *dfl, const decFloat *dfr, in decFloatDivideInteger() argument
1992 return decDivide(result, dfl, dfr, set, DIVIDEINT); in decFloatDivideInteger()
2006 decFloat * decFloatFMA(decFloat *result, const decFloat *dfl, in decFloatFMA() argument
2029 if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr) || DFISSPECIAL(dff)) { in decFloatFMA()
2032 if (DFISSNAN(dfl) || DFISSNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatFMA()
2034 if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatFMA()
2039 if (DFISINF(dfl)) { in decFloatFMA()
2044 if (DFISZERO(dfl)) return decInvalid(result, set); in decFloatFMA()
2048 DFWORD(&proxy, 0)|=(DFWORD(dfl, 0)^DFWORD(dfr, 0))&DECFLOAT_Sign; in decFloatFMA()
2061 decFiniteMultiply(&mul, acc+1, dfl, dfr); in decFloatFMA()
2521 const decFloat *dfl, const decFloat *dfr, in decFloatMax() argument
2524 if (DFISNAN(dfl)) { in decFloatMax()
2526 if (DFISNAN(dfr) || DFISSNAN(dfl)) return decNaNs(result, dfl, dfr, set); in decFloatMax()
2531 if (DFISSNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatMax()
2532 return decCanonical(result, dfl); /* LHS is numeric */ in decFloatMax()
2536 comp=decNumCompare(dfl, dfr, 1); in decFloatMax()
2537 if (comp>=0) return decCanonical(result, dfl); in decFloatMax()
2554 const decFloat *dfl, const decFloat *dfr, in decFloatMaxMag() argument
2558 if (DFISNAN(dfl) || DFISNAN(dfr)) return decFloatMax(result, dfl, dfr, set); in decFloatMaxMag()
2560 decFloatCopyAbs(&absl, dfl); in decFloatMaxMag()
2563 if (comp>0) return decCanonical(result, dfl); in decFloatMaxMag()
2565 return decFloatMax(result, dfl, dfr, set); in decFloatMaxMag()
2580 const decFloat *dfl, const decFloat *dfr, in decFloatMin() argument
2583 if (DFISNAN(dfl)) { in decFloatMin()
2585 if (DFISNAN(dfr) || DFISSNAN(dfl)) return decNaNs(result, dfl, dfr, set); in decFloatMin()
2590 if (DFISSNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatMin()
2591 return decCanonical(result, dfl); /* LHS is numeric */ in decFloatMin()
2595 comp=decNumCompare(dfl, dfr, 1); in decFloatMin()
2596 if (comp<=0) return decCanonical(result, dfl); in decFloatMin()
2613 const decFloat *dfl, const decFloat *dfr, in decFloatMinMag() argument
2617 if (DFISNAN(dfl) || DFISNAN(dfr)) return decFloatMin(result, dfl, dfr, set); in decFloatMinMag()
2619 decFloatCopyAbs(&absl, dfl); in decFloatMinMag()
2622 if (comp<0) return decCanonical(result, dfl); in decFloatMinMag()
2624 return decFloatMin(result, dfl, dfr, set); in decFloatMinMag()
2661 const decFloat *dfl, const decFloat *dfr, in decFloatMultiply() argument
2666 if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr)) { /* either is special? */ in decFloatMultiply()
2668 if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatMultiply()
2670 if (DFISINF(dfl) && DFISZERO(dfr)) return decInvalid(result, set); in decFloatMultiply()
2671 if (DFISINF(dfr) && DFISZERO(dfl)) return decInvalid(result, set); in decFloatMultiply()
2673 DFWORD(result, 0)=DFWORD(dfl, 0)^DFWORD(dfr, 0); /* compute sign */ in decFloatMultiply()
2678 decFiniteMultiply(&num, bcdacc, dfl, dfr); in decFloatMultiply()
2693 decFloat * decFloatNextMinus(decFloat *result, const decFloat *dfl, in decFloatNextMinus() argument
2700 if (DFISINF(dfl) && !DFISSIGNED(dfl)) { in decFloatNextMinus()
2716 decFloatAdd(result, dfl, &delta, set); in decFloatNextMinus()
2736 decFloat * decFloatNextPlus(decFloat *result, const decFloat *dfl, in decFloatNextPlus() argument
2743 if (DFISINF(dfl) && DFISSIGNED(dfl)) { in decFloatNextPlus()
2760 decFloatAdd(result, dfl, &delta, set); in decFloatNextPlus()
2783 const decFloat *dfl, const decFloat *dfr, in decFloatNextToward() argument
2792 if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatNextToward()
2794 comp=decNumCompare(dfl, dfr, 0); in decFloatNextToward()
2795 if (comp==0) return decFloatCopySign(result, dfl, dfr); /* equal */ in decFloatNextToward()
2799 if (DFISINF(dfl) && DFISSIGNED(dfl)) { /* -Infinity special case */ in decFloatNextToward()
2809 if (DFISINF(dfl) && !DFISSIGNED(dfl)) { /* +Infinity special case */ in decFloatNextToward()
2826 decFloatFMA(result, &delta, &pointone, dfl, set); in decFloatNextToward()
2847 const decFloat *dfl, const decFloat *dfr, in decFloatOr() argument
2849 if (!DFISUINT01(dfl) || !DFISUINT01(dfr) in decFloatOr()
2850 || !DFISCC01(dfl) || !DFISCC01(dfr)) return decInvalid(result, set); in decFloatOr()
2854 |((DFWORD(dfl, 0) | DFWORD(dfr, 0))&0x04009124); in decFloatOr()
2855 DFWORD(result, 1)=(DFWORD(dfl, 1) | DFWORD(dfr, 1))&0x49124491; in decFloatOr()
2858 |((DFWORD(dfl, 0) | DFWORD(dfr, 0))&0x04000912); in decFloatOr()
2859 DFWORD(result, 1)=(DFWORD(dfl, 1) | DFWORD(dfr, 1))&0x44912449; in decFloatOr()
2860 DFWORD(result, 2)=(DFWORD(dfl, 2) | DFWORD(dfr, 2))&0x12449124; in decFloatOr()
2861 DFWORD(result, 3)=(DFWORD(dfl, 3) | DFWORD(dfr, 3))&0x49124491; in decFloatOr()
2901 const decFloat *dfl, const decFloat *dfr, in decFloatQuantize() argument
2921 sourhil=DFWORD(dfl, 0); /* LHS top word */ in decFloatQuantize()
2928 if (DFISNAN(dfl) || DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatQuantize()
2930 if (DFISINF(dfl)!=DFISINF(dfr)) return decInvalid(result, set); in decFloatQuantize()
2932 return decInfinity(result, dfl); in decFloatQuantize()
2937 explb+=GETECON(dfl); /* + continuation */ in decFloatQuantize()
2942 if (drop==0) return decCanonical(result, dfl); /* return canonical */ in decFloatQuantize()
2949 GETCOEFF(dfl, BUFOFF); /* decode from decFloat */ in decFloatQuantize()
3228 const decFloat *dfl, const decFloat *dfr, in decFloatRemainder() argument
3230 return decDivide(result, dfl, dfr, set, REMAINDER); in decFloatRemainder()
3245 const decFloat *dfl, const decFloat *dfr, in decFloatRemainderNear() argument
3247 return decDivide(result, dfl, dfr, set, REMNEAR); in decFloatRemainderNear()
3270 const decFloat *dfl, const decFloat *dfr, in decFloatRotate() argument
3278 if (DFISNAN(dfl)||DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatRotate()
3285 if (DFISINF(dfl)) return decInfinity(result, dfl); /* canonical */ in decFloatRotate()
3287 if (rotate==0 || rotate==DECPMAX) return decCanonical(result, dfl); in decFloatRotate()
3300 GETCOEFF(dfl, ub); in decFloatRotate()
3312 num.sign=DFWORD(dfl, 0)&DECFLOAT_Sign; in decFloatRotate()
3313 num.exponent=GETEXPUN(dfl); in decFloatRotate()
3329 uInt decFloatSameQuantum(const decFloat *dfl, const decFloat *dfr) { in decFloatSameQuantum() argument
3330 if (DFISSPECIAL(dfl) || DFISSPECIAL(dfr)) { in decFloatSameQuantum()
3331 if (DFISNAN(dfl) && DFISNAN(dfr)) return 1; in decFloatSameQuantum()
3332 if (DFISINF(dfl) && DFISINF(dfr)) return 1; in decFloatSameQuantum()
3335 if (GETEXP(dfl)==GETEXP(dfr)) return 1; /* biased exponents match */ in decFloatSameQuantum()
3355 const decFloat *dfl, const decFloat *dfr, in decFloatScaleB() argument
3360 if (DFISNAN(dfl)||DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatScaleB()
3374 if (DFISINF(dfl)) return decInfinity(result, dfl); /* canonical */ in decFloatScaleB()
3377 *result=*dfl; /* copy to target */ in decFloatScaleB()
3400 const decFloat *dfl, const decFloat *dfr, in decFloatShift() argument
3408 if (DFISNAN(dfl)||DFISNAN(dfr)) return decNaNs(result, dfl, dfr, set); in decFloatShift()
3416 if (DFISINF(dfl)) return decInfinity(result, dfl); /* canonical */ in decFloatShift()
3418 if (shift==0) return decCanonical(result, dfl); in decFloatShift()
3420 uByte sign=(uByte)(DFBYTE(dfl, 0)&0x80); /* save sign bit */ in decFloatShift()
3427 num.sign=DFWORD(dfl, 0)&DECFLOAT_Sign; in decFloatShift()
3428 num.exponent=GETEXPUN(dfl); in decFloatShift()
3430 GETCOEFF(dfl, buf); in decFloatShift()
3459 const decFloat *dfl, const decFloat *dfr, in decFloatSubtract() argument
3463 if (DFISNAN(dfr)) return decFloatAdd(result, dfl, dfr, set); in decFloatSubtract()
3466 return decFloatAdd(result, dfl, &temp, set); /* and add to the lhs */ in decFloatSubtract()
3530 const decFloat *dfl, const decFloat *dfr, in decFloatXor() argument
3532 if (!DFISUINT01(dfl) || !DFISUINT01(dfr) in decFloatXor()
3533 || !DFISCC01(dfl) || !DFISCC01(dfr)) return decInvalid(result, set); in decFloatXor()
3537 |((DFWORD(dfl, 0) ^ DFWORD(dfr, 0))&0x04009124); in decFloatXor()
3538 DFWORD(result, 1)=(DFWORD(dfl, 1) ^ DFWORD(dfr, 1))&0x49124491; in decFloatXor()
3541 |((DFWORD(dfl, 0) ^ DFWORD(dfr, 0))&0x04000912); in decFloatXor()
3542 DFWORD(result, 1)=(DFWORD(dfl, 1) ^ DFWORD(dfr, 1))&0x44912449; in decFloatXor()
3543 DFWORD(result, 2)=(DFWORD(dfl, 2) ^ DFWORD(dfr, 2))&0x12449124; in decFloatXor()
3544 DFWORD(result, 3)=(DFWORD(dfl, 3) ^ DFWORD(dfr, 3))&0x49124491; in decFloatXor()
3597 const decFloat *dfl, const decFloat *dfr, in decNaNs() argument
3600 if (dfr!=NULL && DFISSNAN(dfr) && !DFISSNAN(dfl)) dfl=dfr; /* use RHS */ in decNaNs()
3601 if (DFISSNAN(dfl)) { in decNaNs()
3602 decCanonical(result, dfl); /* propagate canonical sNaN */ in decNaNs()
3608 if (!DFISNAN(dfl)) dfl=dfr; /* RHS must be NaN, use it */ in decNaNs()
3609 return decCanonical(result, dfl); /* propagate canonical qNaN */ in decNaNs()
3622 static Int decNumCompare(const decFloat *dfl, const decFloat *dfr, Flag tot) { in decNumCompare() argument
3632 if (DFISSIGNED(dfl)) { in decNumCompare()
3634 if (DFISZERO(dfl) && DFISZERO(dfr) && !tot) return 0; in decNumCompare()
3640 if (!DFISSIGNED(dfl)) { /* +LHS -RHS */ in decNumCompare()
3641 if (DFISZERO(dfl) && DFISZERO(dfr) && !tot) return 0; in decNumCompare()
3649 if (DFISINF(dfl)) { in decNumCompare()
3656 shift=GETEXP(dfl)-GETEXP(dfr); /* [0 means aligned] */ in decNumCompare()
3659 if (DFISZERO(dfl)) { in decNumCompare()
3685 GETCOEFF(dfl, bufl+QUAD*2); /* decode from decFloat */ in decNumCompare()