From 7a7fee132e1d21e7acacc50c9ea6fc76564111a6 Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Fri, 2 Jul 2004 04:05:25 +0000 Subject: [PATCH] re-order math to make overflow less likely git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@10132 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/engine/Scrub2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/engine/Scrub2.c b/src/engine/Scrub2.c index e887e973ac..e65bd7278f 100644 --- a/src/engine/Scrub2.c +++ b/src/engine/Scrub2.c @@ -248,7 +248,7 @@ xaccScrubSubSplitPrice (Split *split, int maxmult, int maxamtscu) Split *s = node->data; Transaction *txn = s->parent; gnc_numeric dst_amt, dst_val, target_val; - gnc_numeric delta; + gnc_numeric frac, delta; int scu; /* Skip the reference split */ @@ -258,9 +258,9 @@ xaccScrubSubSplitPrice (Split *split, int maxmult, int maxamtscu) dst_amt = xaccSplitGetAmount (s); dst_val = xaccSplitGetValue (s); - target_val = gnc_numeric_mul (dst_amt, src_val, + frac = gnc_numeric_div (dst_amt, src_amt, GNC_DENOM_AUTO, GNC_HOW_DENOM_REDUCE); - target_val = gnc_numeric_div (target_val, src_amt, + target_val = gnc_numeric_mul (frac, src_val, scu, GNC_HOW_DENOM_EXACT|GNC_HOW_RND_ROUND); if (gnc_numeric_check (target_val)) {