Lines Matching full:dn
75 /* dn is the source number (assumed valid) */
88 decimal64 * decimal64FromNumber(decimal64 *d64, const decNumber *dn, in decimal64FromNumber() argument
105 ae=dn->exponent+dn->digits-1; /* [0 if special] */ in decimal64FromNumber()
106 if (dn->digits>DECIMAL64_Pmax /* too many digits */ in decimal64FromNumber()
111 decNumberPlus(&dw, dn, &dc); /* (round and check) */ in decimal64FromNumber()
113 dw.bits|=dn->bits&DECNEG; in decimal64FromNumber()
115 dn=&dw; /* use the work number */ in decimal64FromNumber()
118 if (dn->bits&DECSPECIAL) { /* a special value */ in decimal64FromNumber()
119 if (dn->bits&DECINF) targhi=DECIMAL_Inf<<24; in decimal64FromNumber()
121 if ((*dn->lsu!=0 || dn->digits>1) /* non-zero coefficient */ in decimal64FromNumber()
122 && (dn->digits<DECIMAL64_Pmax)) { /* coefficient fits */ in decimal64FromNumber()
123 decDigitsToDPD(dn, targar, 0); in decimal64FromNumber()
125 if (dn->bits&DECNAN) targhi|=DECIMAL_NaN<<24; in decimal64FromNumber()
131 if (decNumberIsZero(dn)) { /* is a zero */ in decimal64FromNumber()
133 if (dn->exponent<-DECIMAL64_Bias) { in decimal64FromNumber()
138 exp=dn->exponent+DECIMAL64_Bias; /* bias exponent */ in decimal64FromNumber()
150 /* the dn is known to fit, but it may need to be padded */ in decimal64FromNumber()
151 exp=(uInt)(dn->exponent+DECIMAL64_Bias); /* bias exponent */ in decimal64FromNumber()
162 Int d=dn->digits; in decimal64FromNumber()
163 for (i=0; d>0; i++, d-=3) dpd[i]=BIN2DPD[dn->lsu[i]]; in decimal64FromNumber()
167 if (dn->digits>6) { in decimal64FromNumber()
175 decDigitsToDPD(dn, targar, pad); in decimal64FromNumber()
189 if (dn->bits&DECNEG) targhi|=0x80000000; /* add sign bit */ in decimal64FromNumber()
210 /* dn is the target number, with appropriate space */
213 decNumber * decimal64ToNumber(const decimal64 *d64, decNumber *dn) { in decimal64ToNumber() argument
236 decNumberZero(dn); /* clean number */ in decimal64ToNumber()
237 if (sourhi&0x80000000) dn->bits=DECNEG; /* set sign if negative */ in decimal64ToNumber()
244 dn->bits|=DECINF; in decimal64ToNumber()
245 return dn; /* no coefficient needed */ in decimal64ToNumber()
247 else if (sourhi&0x02000000) dn->bits|=DECSNAN; in decimal64ToNumber()
248 else dn->bits|=DECNAN; in decimal64ToNumber()
252 dn->exponent=(exp<<8)+((sourhi>>18)&0xff)-DECIMAL64_Bias; /* unbiased */ in decimal64ToNumber()
263 if (!sourlo) return dn; /* easy: coefficient is 0 */ in decimal64ToNumber()
274 decDigitsFromDPD(dn, sourar, need); /* process declets */ in decimal64ToNumber()
275 return dn; in decimal64ToNumber()
294 decNumber dn; /* work */ in decimal64ToEngString() local
295 decimal64ToNumber(d64, &dn); in decimal64ToEngString()
296 decNumberToEngString(&dn, string); in decimal64ToEngString()
451 decNumber dn; /* .. */ in decimal64FromString() local
456 decNumberFromString(&dn, string, &dc); /* will round if needed */ in decimal64FromString()
458 decimal64FromNumber(result, &dn, &dc); in decimal64FromString()
472 decNumber dn; /* work */ in decimal64IsCanonical() local
476 decimal64ToNumber(d64, &dn); in decimal64IsCanonical()
477 decimal64FromNumber(&canon, &dn, &dc);/* canon will now be canonical */ in decimal64IsCanonical()
489 decNumber dn; /* work */ in decimal64Canonical() local
492 decimal64ToNumber(d64, &dn); in decimal64Canonical()
493 decimal64FromNumber(result, &dn, &dc);/* result will now be canonical */ in decimal64Canonical()
590 /* dn is the source number (assumed valid, max DECMAX754 digits) */
617 void decDigitsToDPD(const decNumber *dn, uInt *targ, Int shift) { in decDigitsToDPD() argument
619 Int digits=dn->digits; /* digit countdown */ in decDigitsToDPD()
624 const Unit *inu=dn->lsu; /* -> current input unit */ in decDigitsToDPD()
638 source=dn->lsu+D2U(digits)-1; /* where msu comes from */ in decDigitsToDPD()
642 for (; source>=dn->lsu; source--, target--) *target=*source; in decDigitsToDPD()
646 for (; source>=dn->lsu; source--, target--) { in decDigitsToDPD()
722 /* dn is the target number, with 7, 16, or 34-digit space. */
739 /* dn->digits is set, but not the sign or exponent. */
742 void decDigitsFromDPD(decNumber *dn, const uInt *sour, Int declets) { in decDigitsFromDPD() argument
746 Unit *uout=dn->lsu; /* -> current output unit */ in decDigitsFromDPD()
829 dn->digits=(last-dn->lsu)*DECDPUN+1; /* floor of digits, plus */
833 dn->digits++; /* must be 2 at least */
836 dn->digits++; /* must be 3 at least */
839 dn->digits++; /* must be 4 at least */
841 for (pow=&DECPOWERS[4]; *last>=*pow; pow++) dn->digits++;