An MT-friendly version of RTIMING would be extremely handy - I know you have a lot of time on your hands
Not 100% sure about this but it seems that casting from Value to double was another big bottleneck - does that make any sense?
Depends, while O(1) in principle, I would not use Value e.g. to represents matrix cells for Gauss elimination method
Also, one possible issue is that even if there is 'int' in Value, it is automatically converted to 'double'. 'int' -> 'double' conversions can take quite a long time on many CPUs, because int and fp pipelines are usually running independent and this conversion therefore has to stall the whole pipeline.