Re: circular references in Gnumeric?



On Fri, May 28, 2004 at 03:05:22PM +0200, Karin Hodnigg wrote:
Hi,

I am working on general evaluation concepts in spreadsheets at the moment
and I am wondering how circular references are treated in Gnumeric.
Gnumeric includes circular references into its concept - that means no
warning or indication is given to the user, so I suppose that Gnumeric
_does_ consider circular referencing cells being "normal cells" with a kind
of two-staged evaluation.

An experiment given here shows the behaviour I am interested in: A1 holds a
constant value (1); A2 builds the sum of A1 and itself (=A1+A2). With the
input of the formula, Gnumeric processes 2 in A2. If the value in A1 is
changed to 4, A2 becomes 10; if then subsequently A1 is changed to 1 again,
A2 becomes 12. So we have the ?previous? value, that is displayed and the
?new? value that is assigned to the cell, which corresponds to the new value
in A1 building up the sum: (12 = 1+1+10, 10 = 4+4+2, 2 = 1+1+0). Aggregation
functions such as average() and sum() provide more or less (similar)
reasonable results. Trying to incorporate subtraction in A2 (=A1-A2) leads,
unexpectedly, to 0 with no re-evaluation (?) taking place though.

odd. It's been a while since we implemented this.  Please bugzilla
an example of anything you think looks suspicious.  If you have time
I'd appreciate a test workbook.  It would be nice to have some
regression testing in this area.

To me, this seems rather dangerous. So I wonder why this works, or if there
are any reasons for including circular references seamlessly into the
gnumeric  re-evaluation concept?

Gnumeric implements XLish semantics for iterative evaluation and
provides the standard two control mechanisms
    - limit the number of iterations
    - a specifiable epsilon to stop iteration when things don't
      change much

There is afair amount of utility in supporting these sorts of
calculations.  They are common in tax calculations and other areas.
I'm not averse to providing an optional warning/error when a user
enters something circular.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]