]> granicus.if.org Git - python/commitdiff
Pad the result with zeros just before the final rounding.
authorStefan Krah <skrah@bytereef.org>
Thu, 31 May 2012 14:00:21 +0000 (16:00 +0200)
committerStefan Krah <skrah@bytereef.org>
Thu, 31 May 2012 14:00:21 +0000 (16:00 +0200)
Modules/_decimal/libmpdec/mpdecimal.c

index 3f43db43674d8813a9c09d364b9329a7880a7cfd..17fcf25a1a81be8b2a275096acba28e19aa64e7b 100644 (file)
@@ -3903,7 +3903,6 @@ _mpd_qexp_check_one(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx,
     /* abs(a) <= 9 * 10**(-prec-1) */
     if (_mpd_cmp(&aa, &lim) <= 0) {
         _settriple(result, 0, 1, 0);
-        _mpd_zeropad(result, ctx, status);
         *status |= MPD_Rounded|MPD_Inexact;
         return 1;
     }
@@ -4074,8 +4073,6 @@ _mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx,
     }
 #endif
 
-    _mpd_zeropad(result, ctx, status);
-
     mpd_del(&tmp);
     mpd_del(&sum);
     *status |= (workctx.status&MPD_Errors);
@@ -4148,6 +4145,7 @@ mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx,
             if (mpd_isspecial(result) || mpd_iszerocoeff(result) ||
                 mpd_qcmp(&t1, &t2, status) == 0) {
                 workctx.clamp = ctx->clamp;
+                _mpd_zeropad(result, ctx, status);
                 mpd_check_underflow(result, &workctx, status);
                 mpd_qfinalize(result, &workctx, status);
                 break;