Patrick Durusau <> wrote on 01/15/2009 05:50:21 PM:
>
> I suppose what triggered my original interest was why we would be
> describing anything as it "appears to the end-user." ?
>
There is probably a better way to restate the idea rather than "appears to
the end user".
The main idea is that we describe a deterministic method of evaluating
expressions. A conforming implementation may use other methods of
evaluating expressions, but they shall yield the same results as the
method described.
We make this allowance for sake of differing computational models. For
example a spreadsheet running on a multi-processor machine might use
different algorithms for calculating some functions than a
single-processor machine might, although they will give the same answer.
Similarly, a smart implementation might parse an expression and decide to
shortcut the evaluation. So an implementation could conceivably evaluate
"sin(.1)*cos(.5)*0.0" to 0.0 without actually calculating each part of the
expression. We don't care what actually goes on inside, so long as it
gives the same answer as the method OpenFormula describes. In other
words, we specify constraints on the output, not on the implementation.
For example, ISO C++ puts it like this:
"This International Standard places no requirement on the structure of
conforming implementations. In particular, they need
not copy or emulate the structure of the abstract machine. Rather,
conforming implementations are required to emulate
(only) the observable behavior of the abstract machine as explained
below".
Maybe that language could be adopted?