22-06-2010 08:51 AM
It appears there are some broken 64-bit single precision routines in the
BLAS shipped with Apple's Accelerate Framework. Of course, it appears R
doesn't use any single precision routines, but I haven't seen this described
in R-devel or r-sig-mac so I figured I would report it in case it ever
becomes an issue.
The problem is that complex single and double precision BLAS routines will
throw a segfault if they are linked from the Accelerate framework in a way
that is not compliant with the old g77 style. With gfortran, this is done
with the -ff2c switch. However, if x86_64 binaries are being produced, the
-ff2c switch causes some single precision real and complex routines to
give erroneous results.
For example, if the level 1 BLAS test routines sblat1 and cblat1 are
downloaded from Netlib as sblat1.f and cblat1.f:
The following command:
gfortran -arch x86_64 -ff2c -o sblat1
sblat1.f -L/Library/Frameworks/R.framework/Resources/lib -lRblas
Will produce a test program, sblat1, that shows failures for the following
level 1 single precision real routines:
gfortran -arch x86_64 -ff2c -o cblat1
cblat1.f -L/Library/Frameworks/R.framework/Resources/lib -lRblas
Will show failures for the following level 1 single precision complex
The failures only appear if 64 bit routines are used.
[[alternative HTML version deleted]]
Posted on the R-SIG-Mac mailing list. Go to https://stat.ethz.ch/mailman/listinfo/r-sig-mac to subscribe.