|
|
Am 14.02.2012 20:49, schrieb Jos leys:
> I'm working on a large animation project.
> One of the scenes has a large number of spheres that move and collide.
> The positions and velocity vectors are written to a file in each frame to be
> read by the next frame.
>
> The same file produces a different constellation of the spheres after a few
> hundred frames in Linux as compared to the same under Windows.
>
> Is there a logical explanation? If one of the two uses one decimal more for
> storing the intermediate situations, then I can well believe that the situations
> become very different.
A 32-bit non-SSE2 version of POV-Ray might produce different results as
a 32-bit SSE2 or 64-bit version; the latter two use the true "double
precision" (64 bit) floating point arithmetics of the SSE2 instructions,
while the former uses the older x87 instructions, wich have a slightly
higher internal precision (72 bit IIRC). There are mechanisms available
to automatically trim x87 interim results to double precision, but those
might be disabled; the compiler probably has a say in this.
Another difference might arise if the two platforms use different
default rounding modes for floating point operations (which might also
differ between compilers); AFAIK POV-Ray doesn't explicitly specify a
rounding mode to use.
Darren already mentioned the possible implementation differences in the
internal function used to convert floating point numbers to text
strings; as this is a runtime library function, i.e. one that is
supplied by the compiler, its implementation details are beyond
POV-Ray's control.
Post a reply to this message
|
|