Home | History | Annotate | Download | only in src

Lines Matching refs:denominator

33 // and denominator.
38 Bignum* denominator,
41 // Multiplies numerator/denominator so that its values lies in the range 1-10.
43 // v = numerator'/denominator' * 10^(decimal_point-1)
44 // where numerator' and denominator' are the values of numerator and
45 // denominator after the call to this function.
48 Bignum* numerator, Bignum* denominator,
52 static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
58 Bignum* numerator, Bignum* denominator,
60 // Generates 'count' digits of numerator/denominator.
65 Bignum* numerator, Bignum* denominator,
95 Bignum denominator;
99 // 4e-324. In this case the denominator needs fewer than 324*4 binary digits.
105 &numerator, &denominator,
107 // We now have v = (numerator / denominator) * 10^estimated_power.
109 &numerator, &denominator,
111 // We now have v = (numerator / denominator) * 10^(decimal_point-1), and
112 // 1 <= (numerator + delta_plus) / denominator < 10
115 GenerateShortestDigits(&numerator, &denominator,
121 &numerator, &denominator,
126 &numerator, &denominator,
143 // m- := (numerator - delta_minus) / denominator
144 // m+ := (numerator + delta_plus) / denominator
146 // Precondition: 0 <= (numerator+delta_plus) / denominator < 10.
147 // If 1 <= (numerator+delta_plus) / denominator < 10 then no leading 0 digit
149 static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
161 digit = numerator->DivideModuloIntBignum(*denominator);
163 // digit = numerator / denominator (integer division).
164 // numerator = numerator % denominator.
181 Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0;
184 Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0;
197 // Let's see if 2*numerator < denominator.
199 int compare = Bignum::PlusCompare(*numerator, *numerator, *denominator);
203 // Remaining digits are more than .5 of denominator. -> Round up.
241 // Let v = numerator / denominator < 10.
248 Bignum* numerator, Bignum* denominator,
253 digit = numerator->DivideModuloIntBignum(*denominator);
255 // digit = numerator / denominator (integer division).
256 // numerator = numerator % denominator.
263 digit = numerator->DivideModuloIntBignum(*denominator);
264 if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
288 // Input verifies: 1 <= (numerator + delta) / denominator < 10.
290 Bignum* numerator, Bignum* denominator,
308 // Initially the fraction lies in range (1, 10]. Multiply the denominator
310 denominator->Times10();
311 if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
327 numerator, denominator,
383 Bignum* numerator, Bignum* denominator,
387 // Since the estimated_power is positive we simply multiply the denominator
393 // denominator = 10^estimated_power.
394 denominator
397 // Introduce a common denominator so that the deltas to the boundaries are
399 denominator->ShiftLeft(1);
402 // denominator (of 2) delta_plus equals 2^e.
417 // Increase the common denominator and adapt all but the delta_minus.
418 denominator->ShiftLeft(1); // *2
429 Bignum* numerator, Bignum* denominator,
441 // denominator = 10^estimated_power * 2^-exponent (with exponent < 0)
442 denominator->AssignPowerUInt16(10, estimated_power);
443 denominator->ShiftLeft(-exponent);
446 // Introduce a common denominator so that the deltas to the boundaries are
448 denominator->ShiftLeft(1);
451 // denominator (of 2) delta_plus equals 2^e.
452 // Given that the denominator already includes v's exponent the distance
467 // Increase the denominator and adapt all but the delta_minus.
468 denominator->ShiftLeft(1); // *2
479 Bignum* numerator, Bignum* denominator,
485 // Instead of multiplying the denominator with 10^estimated_power we
508 // denominator = 2 * 2^-exponent with exponent < 0.
509 denominator->AssignUInt16(1);
510 denominator->ShiftLeft(-exponent);
513 // Introduce a common denominator so that the deltas to the boundaries are
516 denominator->ShiftLeft(1);
530 denominator->ShiftLeft(1); // *2
539 // and denominator. The functions GenerateShortestDigits and
547 // - a scaled numerator: s.t. numerator/denominator == v / 10^estimated_power.
548 // - a scaled (common) denominator.
554 // v, m+, m-, and therefore v - m- and m+ - v all share the same denominator.
557 // v / 10^ep = numerator / denominator.
559 // m- / 10^ep == v / 10^ep - delta_minus / denominator
560 // m+ / 10^ep == v / 10^ep + delta_plus / denominator
562 // m- == v - delta_minus * 10^ep / denominator;
563 // m+ == v + delta_plus * 10^ep / denominator;
567 // we then have 0.1 <= numerator/denominator < 1
568 // or 1 <= numerator/denominator < 10
577 Bignum* denominator,
583 numerator, denominator, delta_minus, delta_plus);
587 numerator, denominator, delta_minus, delta_plus);
591 numerator, denominator, delta_minus, delta_plus);
596 // This routine multiplies numerator/denominator so that its values lies in the
598 // 1 <= (numerator + delta_plus) /denominator < 10.
601 // numerator / denominator * 10^estimated_power ==
602 // numerator' / denominator' * 10^(decimal_point - 1)
605 // estimated_power) but do not touch the numerator or denominator.
609 Bignum* numerator, Bignum* denominator,
615 in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) >= 0;
617 in_range = Bignum::PlusCompare(*numerator, *delta_plus, *denominator) > 0;
620 // Since numerator + delta_plus >= denominator we already have
621 // 1 <= numerator/denominator < 10. Simply update the estimated_power.