Lines Matching refs:denominator

56 // and denominator.
61 Bignum* denominator,
64 // Multiplies numerator/denominator so that its values lies in the range 1-10.
66 // v = numerator'/denominator' * 10^(decimal_point-1)
67 // where numerator' and denominator' are the values of numerator and
68 // denominator after the call to this function.
71 Bignum* numerator, Bignum* denominator,
75 static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
81 Bignum* numerator, Bignum* denominator,
83 // Generates 'count' digits of numerator/denominator.
88 Bignum* numerator, Bignum* denominator,
118 Bignum denominator;
122 // 4e-324. In this case the denominator needs fewer than 324*4 binary digits.
128 &numerator, &denominator,
130 // We now have v = (numerator / denominator) * 10^estimated_power.
132 &numerator, &denominator,
134 // We now have v = (numerator / denominator) * 10^(decimal_point-1), and
135 // 1 <= (numerator + delta_plus) / denominator < 10
138 GenerateShortestDigits(&numerator, &denominator,
144 &numerator, &denominator,
149 &numerator, &denominator,
166 // m- := (numerator - delta_minus) / denominator
167 // m+ := (numerator + delta_plus) / denominator
169 // Precondition: 0 <= (numerator+delta_plus) / denominator < 10.
170 // If 1 <= (numerator+delta_plus) / denominator < 10 then no leading 0 digit
172 static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
184 digit = numerator->DivideModuloIntBignum(*denominator);
186 // digit = numerator / denominator (integer division).
187 // numerator = numerator % denominator.
204 Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0;
207 Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0;
220 // Let's see if 2*numerator < denominator.
222 int compare = Bignum::PlusCompare(*numerator, *numerator, *denominator);
226 // Remaining digits are more than .5 of denominator. -> Round up.
264 // Let v = numerator / denominator < 10.
271 Bignum* numerator, Bignum* denominator,
276 digit = numerator->DivideModuloIntBignum(*denominator);
278 // digit = numerator / denominator (integer division).
279 // numerator = numerator % denominator.
286 digit = numerator->DivideModuloIntBignum(*denominator);
287 if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
311 // Input verifies: 1 <= (numerator + delta) / denominator < 10.
313 Bignum* numerator, Bignum* denominator,
331 // Initially the fraction lies in range (1, 10]. Multiply the denominator
333 denominator->Times10();
334 if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
350 numerator, denominator,
405 Bignum* numerator, Bignum* denominator,
409 // Since the estimated_power is positive we simply multiply the denominator
415 // denominator = 10^estimated_power.
416 denominator->AssignPowerUInt16(10, estimated_power);
419 // Introduce a common denominator so that the deltas to the boundaries are
421 denominator->ShiftLeft(1);
424 // denominator (of 2) delta_plus equals 2^e.
439 // Increase the common denominator and adapt all but the delta_minus.
440 denominator->ShiftLeft(1); // *2
451 Bignum* numerator, Bignum* denominator,
463 // denominator = 10^estimated_power * 2^-exponent (with exponent < 0)
464 denominator->AssignPowerUInt16(10, estimated_power);
465 denominator->ShiftLeft(-exponent);
468 // Introduce a common denominator so that the deltas to the boundaries are
470 denominator->ShiftLeft(1);
473 // denominator (of 2) delta_plus equals 2^e.
474 // Given that the denominator already includes v's exponent the distance
489 // Increase the denominator and adapt all but the delta_minus.
490 denominator->ShiftLeft(1); // *2
501 Bignum* numerator, Bignum* denominator,
507 // Instead of multiplying the denominator with 10^estimated_power we
530 // denominator = 2 * 2^-exponent with exponent < 0.
531 denominator->AssignUInt16(1);
532 denominator->ShiftLeft(-exponent);
535 // Introduce a common denominator so that the deltas to the boundaries are
538 denominator->ShiftLeft(1);
552 denominator->ShiftLeft(1); // *2
561 // and denominator. The functions GenerateShortestDigits and
569 // - a scaled numerator: s.t. numerator/denominator == v / 10^estimated_power.
570 // - a scaled (common) denominator.
576 // v, m+, m-, and therefore v - m- and m+ - v all share the same denominator.
579 // v / 10^ep = numerator / denominator.
581 // m- / 10^ep == v / 10^ep - delta_minus / denominator
582 // m+ / 10^ep == v / 10^ep + delta_plus / denominator
584 // m- == v - delta_minus * 10^ep / denominator;
585 // m+ == v + delta_plus * 10^ep / denominator;
589 // we then have 0.1 <= numerator/denominator < 1
590 // or 1 <= numerator/denominator < 10
599 Bignum* denominator,
605 numerator, denominator, delta_minus, delta_plus);
609 numerator, denominator, delta_minus, delta_plus);
613 numerator, denominator, delta_minus, delta_plus);
618 // This routine multiplies numerator/denominator so that its values lies in the
620 // 1 <= (numerator + delta_plus) /denominator < 10.
623 // numerator / denominator * 10^estimated_power ==
624 // numerator' / denominator' * 10^(decimal_point - 1)
627 // estimated_power) but do not touch the numerator or denominator.
631 Bignum* numerator, Bignum* denominator,
637 in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0;
639 in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0;
642 // Since numerator + delta_plus >= denominator we already have
643 // 1 <= numerator/denominator < 10. Simply update the estimated_power.