rowlesmr
If I start a refinement with the same parameters, will I always get to the same result?
Will floating point precision affect the results?
I'm doing some work where I'm getting (v. slightly) different results with the same starting values.
Matthew
alancoelho
Hi Matthew
Refinements are not deterministic. This is an involved topic and I will only give a brief answer.
During floating point operations the co-processor stack is used and it is 80 bits. Floating point numbers in memory is 64 bits (53 bit mantissa). Thus round off is dependent on when a number is stored into memory and when is it retrieved from memory for further processing. There is a switch in some compilers to force writing back to memory each floating point operation; this slows down processing. Thus the deterministic approach will be more wrong than the non-deterministic approach but it will be consistently wrong. GCC a few years ago always used the stack; this is how it should be in my opinion and this is how TOPAS works.
None of the above considers the precision written to the OUT file. If there are more decimal places written then more accuracy. A 53 bit mantissa corresponds to around 17 decimal places (something like that).
Note of the above considers the placement of parameters in the A matrix. Placement in the A matrix means different summation paths in the solution of the A matrix; hence more round off errors.