Home | History | Annotate | Download | only in src

Lines Matching refs:denominator

31 // and denominator.
36 Bignum* denominator,
39 // Multiplies numerator/denominator so that its values lies in the range 1-10.
41 // v = numerator'/denominator' * 10^(decimal_point-1)
42 // where numerator' and denominator' are the values of numerator and
43 // denominator after the call to this function.
46 Bignum* numerator, Bignum* denominator,
50 static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
56 Bignum* numerator, Bignum* denominator,
58 // Generates 'count' digits of numerator/denominator.
63 Bignum* numerator, Bignum* denominator,
93 Bignum denominator;
97 // 4e-324. In this case the denominator needs fewer than 324*4 binary digits.
103 &numerator, &denominator,
105 // We now have v = (numerator / denominator) * 10^estimated_power.
107 &numerator, &denominator,
109 // We now have v = (numerator / denominator) * 10^(decimal_point-1), and
110 // 1 <= (numerator + delta_plus) / denominator < 10
113 GenerateShortestDigits(&numerator, &denominator,
119 &numerator, &denominator,
124 &numerator, &denominator,
141 // m- := (numerator - delta_minus) / denominator
142 // m+ := (numerator + delta_plus) / denominator
144 // Precondition: 0 <= (numerator+delta_plus) / denominator < 10.
145 // If 1 <= (numerator+delta_plus) / denominator < 10 then no leading 0 digit
147 static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
159 digit = numerator->DivideModuloIntBignum(*denominator);
161 // digit = numerator / denominator (integer division).
162 // numerator = numerator % denominator.
179 Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0;
182 Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0;
195 // Let's see if 2*numerator < denominator.
197 int compare = Bignum::PlusCompare(*numerator, *numerator, *denominator);
201 // Remaining digits are more than .5 of denominator. -> Round up.
239 // Let v = numerator / denominator < 10.
246 Bignum* numerator, Bignum* denominator,
251 digit = numerator->DivideModuloIntBignum(*denominator);
253 // digit = numerator / denominator (integer division).
254 // numerator = numerator % denominator.
261 digit = numerator->DivideModuloIntBignum(*denominator);
262 if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
286 // Input verifies: 1 <= (numerator + delta) / denominator < 10.
288 Bignum* numerator, Bignum* denominator,
306 // Initially the fraction lies in range (1, 10]. Multiply the denominator
308 denominator->Times10();
309 if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
325 numerator, denominator,
381 Bignum* numerator, Bignum* denominator,
385 // Since the estimated_power is positive we simply multiply the denominator
391 // denominator = 10^estimated_power.
392 denominator
395 // Introduce a common denominator so that the deltas to the boundaries are
397 denominator->ShiftLeft(1);
400 // denominator (of 2) delta_plus equals 2^e.
415 // Increase the common denominator and adapt all but the delta_minus.
416 denominator->ShiftLeft(1); // *2
427 Bignum* numerator, Bignum* denominator,
439 // denominator = 10^estimated_power * 2^-exponent (with exponent < 0)
440 denominator->AssignPowerUInt16(10, estimated_power);
441 denominator->ShiftLeft(-exponent);
444 // Introduce a common denominator so that the deltas to the boundaries are
446 denominator->ShiftLeft(1);
449 // denominator (of 2) delta_plus equals 2^e.
450 // Given that the denominator already includes v's exponent the distance
465 // Increase the denominator and adapt all but the delta_minus.
466 denominator->ShiftLeft(1); // *2
477 Bignum* numerator, Bignum* denominator,
483 // Instead of multiplying the denominator with 10^estimated_power we
506 // denominator = 2 * 2^-exponent with exponent < 0.
507 denominator->AssignUInt16(1);
508 denominator->ShiftLeft(-exponent);
511 // Introduce a common denominator so that the deltas to the boundaries are
514 denominator->ShiftLeft(1);
528 denominator->ShiftLeft(1); // *2
537 // and denominator. The functions GenerateShortestDigits and
545 // - a scaled numerator: s.t. numerator/denominator == v / 10^estimated_power.
546 // - a scaled (common) denominator.
552 // v, m+, m-, and therefore v - m- and m+ - v all share the same denominator.
555 // v / 10^ep = numerator / denominator.
557 // m- / 10^ep == v / 10^ep - delta_minus / denominator
558 // m+ / 10^ep == v / 10^ep + delta_plus / denominator
560 // m- == v - delta_minus * 10^ep / denominator;
561 // m+ == v + delta_plus * 10^ep / denominator;
565 // we then have 0.1 <= numerator/denominator < 1
566 // or 1 <= numerator/denominator < 10
575 Bignum* denominator,
581 numerator, denominator, delta_minus, delta_plus);
585 numerator, denominator, delta_minus, delta_plus);
589 numerator, denominator, delta_minus, delta_plus);
594 // This routine multiplies numerator/denominator so that its values lies in the
596 // 1 <= (numerator + delta_plus) /denominator < 10.
599 // numerator / denominator * 10^estimated_power ==
600 // numerator' / denominator' * 10^(decimal_point - 1)
603 // estimated_power) but do not touch the numerator or denominator.
607 Bignum* numerator, Bignum* denominator,
613 in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0;
615 in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0;
618 // Since numerator + delta_plus >= denominator we already have
619 // 1 <= numerator/denominator < 10. Simply update the estimated_power.