It makes no sense at all for sqrt() to break down with change in
precision mode.
If you do an extended-precision (80-bit) sqrt and then round the result
again to a double (64-bit) then those two roundings will increase the
error, sometimes to > 1/2 ulp.
To give current results on a machine I have access to, I ran the tests
there on
vendor_id : AuthenticAMD
cpu family : 15
model : 33
model name : Dual Core AMD Opteron(tm) Processor 875
using
euler-59% gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/pkgs/gcc-4.1.2
Thread model: posix
gcc version 4.1.2
on an up-to-date RHEL 4.0 server (so whatever libm is offered there),
and, indeed, the only differences that it found were in 1/x, sqrt(x),
and Pi*x because of double rounding. In other words, the code that went
through libm gave identical answers whether running on sse, x87
(extended precision), or x87 (double precision).
I don't know whether there are still math libraries for which Gonnet's
2002 results prevail.