r16633 - gnucash/trunk - reintroduce some rounding into basis calculations to prevent overflow on particularly large accounts.
Andrew Sackville-West
andrewsw at cvs.gnucash.org
Mon Dec 10 15:53:42 EST 2007
Author: andrewsw
Date: 2007-12-10 15:53:42 -0500 (Mon, 10 Dec 2007)
New Revision: 16633
Trac: http://svn.gnucash.org/trac/changeset/16633
Modified:
gnucash/trunk/
gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm
Log:
reintroduce some rounding into basis calculations to prevent overflow on particularly large accounts.
Property changes on: gnucash/trunk
___________________________________________________________________
Name: svk:merge
- 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1037
57a11ea4-9604-0410-9ed3-97b8803252fd:/gnucash/branches/gobject-engine-dev-warlord:15827
95e783b2-15b2-415a-8f58-462a736813e0:/gnucash/advport:14
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord:14369
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord1:14446
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:14601
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:15116
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk3:15249
+ 3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/branches/swig-redo:802
3889ce50-311e-0410-a464-f059747ec5d1:/local/gnucash/trunk:1037
57a11ea4-9604-0410-9ed3-97b8803252fd:/gnucash/branches/gobject-engine-dev-warlord:15827
95e783b2-15b2-415a-8f58-462a736813e0:/gnucash/advport:16
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord:14369
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/branches/gobject-engine-dev-warlord1:14446
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:14601
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk2:15116
d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk3:15249
Modified: gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm
===================================================================
--- gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm 2007-12-10 19:01:53 UTC (rev 16632)
+++ gnucash/trunk/src/report/standard-reports/advanced-portfolio.scm 2007-12-10 20:53:42 UTC (rev 16633)
@@ -225,24 +225,22 @@
((average-basis)
(if (not (eqv? b-list '()))
(list (cons (gnc-numeric-add b-units
- (caar b-list) GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ (caar b-list) 10000 GNC-RND-ROUND)
(gnc-numeric-div
(gnc-numeric-add b-value
(gnc-numeric-mul (caar b-list)
(cdar b-list)
- GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
- GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ 10000 GNC-RND-ROUND)
+ 10000 GNC-RND-ROUND)
(gnc-numeric-add b-units
- (caar b-list) GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
- GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))))
+ (caar b-list) 10000 GNC-RND-ROUND)
+ 10000 GNC-RND-ROUND)))
(append b-list
(list (cons b-units (gnc-numeric-div
- b-value b-units GNC-DENOM-AUTO
- (logior GNC-DENOM-REDUCE GNC-RND-NEVER)))))))
+ b-value b-units 10000 GNC-RND-ROUND))))))
(else (append b-list
(list (cons b-units (gnc-numeric-div
- b-value b-units GNC-DENOM-AUTO
- (logior GNC-DENOM-REDUCE GNC-RND-NEVER)))))))
+ b-value b-units 10000 GNC-RND-ROUND))))))
(if (not (eqv? b-list '()))
(case b-method
((fifo-basis)
@@ -250,11 +248,11 @@
(gnc-numeric-abs b-units) (caar b-list))))
(basis-builder (cdr b-list) (gnc-numeric-add
b-units
- (caar b-list) GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ (caar b-list) 10000 GNC-RND-ROUND)
b-value b-method)
(append (list (cons (gnc-numeric-add
b-units
- (caar b-list) GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ (caar b-list) 10000 GNC-RND-ROUND)
(cdar b-list))) (cdr b-list))))
((filo-basis)
(if (not (= -1 (gnc-numeric-compare
@@ -263,16 +261,16 @@
(gnc-numeric-add
b-units
(caar (reverse b-list))
- GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ 10000 GNC-RND-ROUND)
b-value b-method)
(append (cdr (reverse b-list))
(list (cons (gnc-numeric-add
b-units
- (caar (reverse b-list)) GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ (caar (reverse b-list)) 10000 GNC-RND-ROUND)
(cdar (reverse b-list)))))))
((average-basis)
(list (cons (gnc-numeric-add
- (caar b-list) b-units GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
+ (caar b-list) b-units 10000 GNC-RND-ROUND)
(cdar b-list)))))
'()
)
@@ -280,13 +278,13 @@
;; this is a split/merge...
(let* ((current-units (units-basis b-list))
(units-ratio (gnc-numeric-div current-units
- (gnc-numeric-add b-units current-units GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
- GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))))
+ (gnc-numeric-add b-units current-units 10000 GNC-RND-ROUND)
+ 10000 GNC-RND-ROUND)))
(define (apply-ratio blist ratio)
(if (not (eqv? blist '()))
- (cons (cons (gnc-numeric-div (caar blist) ratio GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER))
- (gnc-numeric-mul ratio (cdar blist) GNC-DENOM-AUTO (logior GNC-DENOM-REDUCE GNC-RND-NEVER)))
+ (cons (cons (gnc-numeric-div (caar blist) ratio 10000 GNC-RND-ROUND)
+ (gnc-numeric-mul ratio (cdar blist) 10000 GNC-RND-ROUND))
(apply-ratio (cdr blist) ratio ))
'()
)
More information about the gnucash-changes
mailing list