Lines Matching refs:dn
318 decNumberToString (const decNumber * dn, char *string) in decNumberToString() argument
320 decToString (dn, string, 0); in decNumberToString()
325 decNumberToEngString (const decNumber * dn, char *string) in decNumberToEngString() argument
327 decToString (dn, string, 1); in decNumberToEngString()
352 decNumberFromString (decNumber * dn, const char chars[], decContext * set) in decNumberFromString() argument
375 return decNumberZero (dn); in decNumberFromString()
422 decNumberZero (dn); /* be optimistic */ in decNumberFromString()
425 dn->bits = bits | DECINF; in decNumberFromString()
432 dn->bits = bits | DECNAN; /* assume simple NaN */ in decNumberFromString()
436 dn->bits = bits | DECSNAN; in decNumberFromString()
469 bits = dn->bits; /* for copy-back */ in decNumberFromString()
550 decNumberZero (dn); /* clean result */ in decNumberFromString()
558 res = dn->lsu; /* fits into given decNumber */ in decNumberFromString()
613 dn->bits = bits; in decNumberFromString()
614 dn->exponent = exponent; in decNumberFromString()
615 dn->digits = d; in decNumberFromString()
619 decSetCoeff (dn, set, res, d, &residue, &status); in decNumberFromString()
622 decFinalize (dn, set, &residue, &status); in decNumberFromString()
630 decStatus (dn, status, set); in decNumberFromString()
631 return dn; in decNumberFromString()
1827 decNumber dn; in decNumberToIntegralValue() local
1855 decNumberZero (&dn); /* make a number with exponent 0 */ in decNumberToIntegralValue()
1856 return decNumberQuantize (res, rhs, &dn, &workset); in decNumberToIntegralValue()
1918 decNumberTrim (decNumber * dn) in decNumberTrim() argument
1921 return decTrim (dn, 0, &dropped); in decNumberTrim()
1945 decNumberZero (decNumber * dn) in decNumberZero() argument
1949 if (decCheckOperands (dn, DECUNUSED, DECUNUSED, DECUNUSED)) in decNumberZero()
1950 return dn; in decNumberZero()
1953 dn->bits = 0; in decNumberZero()
1954 dn->exponent = 0; in decNumberZero()
1955 dn->digits = 1; in decNumberZero()
1956 dn->lsu[0] = 0; in decNumberZero()
1957 return dn; in decNumberZero()
2003 decToString (const decNumber * dn, char *string, Flag eng) in decToString() argument
2005 Int exp = dn->exponent; /* local copy */ in decToString()
2010 const Unit *up = dn->lsu + D2U (dn->digits) - 1; /* -> msu [input pointer] */ in decToString()
2014 if (decCheckOperands (DECUNUSED, dn, DECUNUSED, DECUNUSED)) in decToString()
2021 if (decNumberIsNegative (dn)) in decToString()
2026 if (dn->bits & DECSPECIAL) in decToString()
2028 if (decNumberIsInfinite (dn)) in decToString()
2034 if (dn->bits & DECSNAN) in decToString()
2043 if (exp != 0 || (*dn->lsu == 0 && dn->digits == 1)) in decToString()
2049 cut = dn->digits % DECDPUN; in decToString()
2057 for (; up >= dn->lsu; up--) in decToString()
2069 pre = dn->digits + exp; /* digits before '.' */ in decToString()
2073 e = exp + dn->digits - 1; /* calculate E value */ in decToString()
2094 if (!ISZERO (dn)) in decToString()
2115 if (up == dn->lsu) in decToString()
2123 if (up > dn->lsu || (up == dn->lsu && cut >= 0)) in decToString()
2131 if (up == dn->lsu) in decToString()
2156 if (up == dn->lsu) in decToString()
4369 decTrim (decNumber * dn, Flag all, Int * dropped) in decTrim() argument
4376 if (decCheckOperands (dn, DECUNUSED, DECUNUSED, DECUNUSED)) in decTrim()
4377 return dn; in decTrim()
4381 if ((dn->bits & DECSPECIAL) /* fast exit if special .. */ in decTrim()
4382 || (*dn->lsu & 0x01)) in decTrim()
4383 return dn; /* .. or odd */ in decTrim()
4384 if (ISZERO (dn)) in decTrim()
4386 dn->exponent = 0; /* (sign is preserved) */ in decTrim()
4387 return dn; in decTrim()
4391 exp = dn->exponent; in decTrim()
4393 up = dn->lsu; /* -> current Unit */ in decTrim()
4394 for (d = 0; d < dn->digits - 1; d++) in decTrim()
4424 return dn; /* none dropped */ in decTrim()
4427 decShiftToLeast (dn->lsu, D2U (dn->digits), d); in decTrim()
4428 dn->exponent += d; /* maintain numerical value */ in decTrim()
4429 dn->digits -= d; /* new length */ in decTrim()
4431 return dn; in decTrim()
4575 decRoundOperand (const decNumber * dn, decContext * set, uInt * status) in decRoundOperand() argument
4590 decCopyFit (res, dn, set, &residue, &newstatus); in decRoundOperand()
4662 decSetCoeff (decNumber * dn, decContext * set, const Unit * lsu, in decSetCoeff() argument
4679 if (dn->lsu != lsu) in decSetCoeff()
4683 for (target = dn->lsu; target < dn->lsu + D2U (len); target++, up++) in decSetCoeff()
4687 dn->digits = len; /* set the new length */ in decSetCoeff()
4715 *dn->lsu = 0; /* coefficient will now be 0 */ in decSetCoeff()
4716 dn->digits = 1; /* .. */ in decSetCoeff()
4717 dn->exponent += discard; /* maintain numerical value */ in decSetCoeff()
4792 *dn->lsu = 0; /* .. result is 0 */ in decSetCoeff()
4793 dn->digits = 1; /* .. */ in decSetCoeff()
4798 dn->digits = count; /* set the new length */ in decSetCoeff()
4802 for (target = dn->lsu; target < dn->lsu + D2U (count); in decSetCoeff()
4809 for (target = dn->lsu;; target++) in decSetCoeff()
4830 dn->exponent += discard; /* maintain numerical value */ in decSetCoeff()
4872 decApplyRound (decNumber * dn, decContext * set, Int residue, uInt * status) in decApplyRound() argument
4907 if (*dn->lsu & 0x01) in decApplyRound()
4931 if (decNumberIsNegative (dn)) in decApplyRound()
4948 if (!decNumberIsNegative (dn)) in decApplyRound()
4982 uInt count = dn->digits; /* digits to be checked */ in decApplyRound()
4983 for (up = dn->lsu;; up++) in decApplyRound()
4992 for (up = up - 1; up >= dn->lsu; up--) in decApplyRound()
4994 dn->exponent++; /* and bump exponent */ in decApplyRound()
4996 if ((dn->exponent + dn->digits) > set->emax + 1) in decApplyRound()
4998 decSetOverflow (dn, set, status); in decApplyRound()
5013 uInt count = dn->digits; /* digits to be checked */ in decApplyRound()
5014 for (up = dn->lsu;; up++) in decApplyRound()
5025 for (up = up - 1; up >= dn->lsu; up--) in decApplyRound()
5027 dn->exponent--; /* and bump exponent */ in decApplyRound()
5034 if (dn->exponent + 1 == set->emin - set->digits + 1) in decApplyRound()
5036 if (count == 1 && dn->digits == 1) in decApplyRound()
5041 dn->digits--; in decApplyRound()
5043 dn->exponent++; in decApplyRound()
5059 decUnitAddSub (dn->lsu, D2U (dn->digits), one, 1, 0, dn->lsu, bump); in decApplyRound()
5080 decFinish (decNumber * dn, decContext * set, Int * residue, uInt * status) in decFinish() argument
5085 (dn) in decFinish()
5087 dn->exponent = 0; /* clean exponent .. */ in decFinish()
5088 dn->bits = 0; /* .. and sign */ in decFinish()
5091 if (dn->exponent >= 0) in decFinish()
5094 if (set->digits >= (dn->exponent + dn->digits)) in decFinish()
5096 dn->digits = decShiftToMost (dn->lsu, dn->digits, dn->exponent); in decFinish()
5097 dn->exponent = 0; in decFinish()
5102 decFinalize (dn, set, residue, status); in decFinish()
5121 decFinalize (decNumber * dn, decContext * set, Int * residue, uInt * status) in decFinalize() argument
5131 if (dn->exponent < 0 /* negative exponent */ in decFinalize()
5132 && (dn->exponent < set->emin - dn->digits + 1)) in decFinalize()
5135 decSetSubnormal (dn, set, residue, status); in decFinalize()
5141 decApplyRound (dn, set, *residue, status); in decFinalize()
5144 if (dn->exponent <= set->emax - set->digits + 1) in decFinalize()
5148 if (dn->exponent > set->emax - dn->digits + 1) in decFinalize()
5150 decSetOverflow (dn, set, status); in decFinalize()
5158 shift = dn->exponent - (set->emax - set->digits + 1); in decFinalize()
5161 if (!ISZERO (dn)) in decFinalize()
5163 dn->digits = decShiftToMost (dn->lsu, dn->digits, shift); in decFinalize()
5165 dn->exponent -= shift; /* adjust the exponent to match */ in decFinalize()
5182 decSetOverflow (decNumber * dn, decContext * set, uInt * status) in decSetOverflow() argument
5185 uByte sign = dn->bits & DECNEG; /* clean and save sign bit */ in decSetOverflow()
5187 if (ISZERO (dn)) in decSetOverflow()
5192 if (dn->exponent > emax) in decSetOverflow()
5194 dn->exponent = emax; in decSetOverflow()
5200 decNumberZero (dn); in decSetOverflow()
5227 dn->digits = count; in decSetOverflow()
5229 for (up = dn->lsu;; up++) in decSetOverflow()
5240 dn->bits = sign; /* sign */ in decSetOverflow()
5241 dn->exponent = set->emax - set->digits + 1; in decSetOverflow()
5244 dn->bits = sign | DECINF; /* Value is +/-Infinity */ in decSetOverflow()
5266 decSetSubnormal (decNumber * dn, decContext * set, in decSetSubnormal() argument
5276 decNumberZero (dn); in decSetSubnormal()
5288 (dn) in decSetSubnormal()
5298 if (dn->exponent < etiny) in decSetSubnormal()
5300 dn->exponent = etiny; in decSetSubnormal()
5308 adjust = etiny - dn->exponent; /* calculate digits to remove */ in decSetSubnormal()
5328 workset.digits = dn->digits - adjust; /* set requested length */ in decSetSubnormal()
5331 decSetCoeff (dn, &workset, dn->lsu, dn->digits, residue, status); in decSetSubnormal()
5332 decApplyRound (dn, &workset, *residue, status); in decSetSubnormal()
5341 if (dn->exponent > etiny) in decSetSubnormal()
5343 dn->digits = decShiftToMost (dn->lsu, dn->digits, 1); in decSetSubnormal()
5344 dn->exponent--; /* (re)adjust the exponent. */ in decSetSubnormal()
5362 decGetInt (const decNumber * dn, decContext * set) argument
5366 decGetInt (const decNumber * dn)
5372 Int ilength = dn->digits + dn->exponent; /* integral length */
5382 if (ISZERO (dn))
5391 up = dn->lsu; /* ready for lsu */
5393 if (dn->exponent >= 0)
5396 got = dn->exponent;
5400 Int count = -dn->exponent; /* digits to discard */
5440 if (decNumberIsNegative (dn))
5532 decStatus (decNumber * dn, uInt status, decContext * set) argument
5541 decNumberZero (dn); /* other error: clean throughout */
5542 dn->bits = DECNAN; /* and make a quiet NaN */
5604 decNumberShow (const decNumber * dn) argument
5610 if (dn == NULL)
5615 if (decNumberIsNegative (dn))
5618 if (dn->bits & DECSPECIAL)
5620 if (decNumberIsInfinite (dn))
5624 if (dn->bits & DECSNAN)
5630 if (dn->exponent == 0 && dn->digits == 1 && *dn->lsu == 0)
5640 up = dn->lsu + D2U (dn->digits) - 1; /* msu */
5642 for (up = up - 1; up >= dn->lsu; up--)
5653 if (dn->exponent != 0)
5656 if (dn->exponent < 0)
5658 printf (" E%c%d", esign, abs (dn->exponent));
5660 printf (" [%d]\n", dn->digits);
5766 decCheckNumber (const decNumber * dn, decContext * set) argument
5773 if (dn == NULL)
5782 if (dn->bits & DECSPECIAL)
5784 if (dn->exponent != 0)
5787 printf ("Exponent %d (not 0) for a special value.\n", dn->exponent);
5793 if (decNumberIsInfinite (dn))
5795 if (dn->digits != 1)
5798 printf ("Digits %d (not 1) for an infinity.\n", dn->digits);
5802 if (*dn->lsu != 0)
5805 printf ("LSU %d (not 0) for an infinity.\n", *dn->lsu);
5823 if (dn->digits < 1 || dn->digits > DECNUMMAXP)
5826 printf ("Digits %d in number.\n", dn->digits);
5831 d = dn->digits;
5833 for (up = dn->lsu; d > 0; up++)
5840 if (dn->digits > 1 && *up < powers[d - 1])
5844 decNumberShow (dn);
5853 *up, up - dn->lsu, maxuint);
5863 ae = dn->exponent + dn->digits - 1; /* adjusted exponent */
5871 decNumberShow (dn);
5879 decNumberShow (dn);