Lines Matching refs:dn

89 decimal64 * decimal64FromNumber(decimal64 *d64, const decNumber *dn,  in decimal64FromNumber()  argument
106 ae=dn->exponent+dn->digits-1; /* [0 if special] */ in decimal64FromNumber()
107 if (dn->digits>DECIMAL64_Pmax /* too many digits */ in decimal64FromNumber()
112 decNumberPlus(&dw, dn, &dc); /* (round and check) */ in decimal64FromNumber()
114 dw.bits|=dn->bits&DECNEG; in decimal64FromNumber()
116 dn=&dw; /* use the work number */ in decimal64FromNumber()
119 if (dn->bits&DECSPECIAL) { /* a special value */ in decimal64FromNumber()
120 if (dn->bits&DECINF) targhi=DECIMAL_Inf<<24; in decimal64FromNumber()
122 if ((*dn->lsu!=0 || dn->digits>1) /* non-zero coefficient */ in decimal64FromNumber()
123 && (dn->digits<DECIMAL64_Pmax)) { /* coefficient fits */ in decimal64FromNumber()
124 decDigitsToDPD(dn, targar, 0); in decimal64FromNumber()
126 if (dn->bits&DECNAN) targhi|=DECIMAL_NaN<<24; in decimal64FromNumber()
132 if (decNumberIsZero(dn)) { /* is a zero */ in decimal64FromNumber()
134 if (dn->exponent<-DECIMAL64_Bias) { in decimal64FromNumber()
139 exp=dn->exponent+DECIMAL64_Bias; /* bias exponent */ in decimal64FromNumber()
152 exp=(uInt)(dn->exponent+DECIMAL64_Bias); /* bias exponent */ in decimal64FromNumber()
163 Int d=dn->digits; in decimal64FromNumber()
164 for (i=0; d>0; i++, d-=3) dpd[i]=BIN2DPD[dn->lsu[i]]; in decimal64FromNumber()
168 if (dn->digits>6) { in decimal64FromNumber()
176 decDigitsToDPD(dn, targar, pad); in decimal64FromNumber()
190 if (dn->bits&DECNEG) targhi|=0x80000000; /* add sign bit */ in decimal64FromNumber()
214 decNumber * decimal64ToNumber(const decimal64 *d64, decNumber *dn) { in decimal64ToNumber() argument
237 decNumberZero(dn); /* clean number */ in decimal64ToNumber()
238 if (sourhi&0x80000000) dn->bits=DECNEG; /* set sign if negative */ in decimal64ToNumber()
245 dn->bits|=DECINF; in decimal64ToNumber()
246 return dn; /* no coefficient needed */ in decimal64ToNumber()
248 else if (sourhi&0x02000000) dn->bits|=DECSNAN; in decimal64ToNumber()
249 else dn->bits|=DECNAN; in decimal64ToNumber()
253 dn->exponent=(exp<<8)+((sourhi>>18)&0xff)-DECIMAL64_Bias; /* unbiased */ in decimal64ToNumber()
264 if (!sourlo) return dn; /* easy: coefficient is 0 */ in decimal64ToNumber()
275 decDigitsFromDPD(dn, sourar, need); /* process declets */ in decimal64ToNumber()
276 return dn; in decimal64ToNumber()
295 decNumber dn; /* work */ in decimal64ToEngString() local
296 decimal64ToNumber(d64, &dn); in decimal64ToEngString()
297 decNumberToEngString(&dn, string); in decimal64ToEngString()
452 decNumber dn; /* .. */ in decimal64FromString() local
457 decNumberFromString(&dn, string, &dc); /* will round if needed */ in decimal64FromString()
459 decimal64FromNumber(result, &dn, &dc); in decimal64FromString()
473 decNumber dn; /* work */ in decimal64IsCanonical() local
477 decimal64ToNumber(d64, &dn); in decimal64IsCanonical()
478 decimal64FromNumber(&canon, &dn, &dc);/* canon will now be canonical */ in decimal64IsCanonical()
490 decNumber dn; /* work */ in decimal64Canonical() local
493 decimal64ToNumber(d64, &dn); in decimal64Canonical()
494 decimal64FromNumber(result, &dn, &dc);/* result will now be canonical */ in decimal64Canonical()
618 void decDigitsToDPD(const decNumber *dn, uInt *targ, Int shift) { in decDigitsToDPD() argument
620 Int digits=dn->digits; /* digit countdown */ in decDigitsToDPD()
625 const Unit *inu=dn->lsu; /* -> current input unit */ in decDigitsToDPD()
639 source=dn->lsu+D2U(digits)-1; /* where msu comes from */ in decDigitsToDPD()
643 for (; source>=dn->lsu; source--, target--) *target=*source; in decDigitsToDPD()
647 for (; source>=dn->lsu; source--, target--) { in decDigitsToDPD()
743 void decDigitsFromDPD(decNumber *dn, const uInt *sour, Int declets) { in decDigitsFromDPD() argument
747 Unit *uout=dn->lsu; /* -> current output unit */ in decDigitsFromDPD()
830 dn->digits=(last-dn->lsu)*DECDPUN+1; /* floor of digits, plus */
834 dn->digits++; /* must be 2 at least */
837 dn->digits++; /* must be 3 at least */
840 dn->digits++; /* must be 4 at least */
842 for (pow=&DECPOWERS[4]; *last>=*pow; pow++) dn->digits++;