EPS equals 0 problem for single precision

Posted:
Tue Sep 24, 2013 12:06 am
by alanwilliams1
Hi there,
When I run the tests and examples for single precision, they all fail because EPS is evaluated to zero. I've changed the code manually so that EPS = 5E-8 and it runs correctly.
The double precision tests and examples run fine.
Does anyone know why EPS might be evaluating to zero in the single precision case?
Thanks!
Alan
Re: EPS equals 0 problem for single precision

Posted:
Tue Nov 26, 2013 3:45 pm
by alanwilliams1
oops. My system is OSX Mavericks, accelerate framework, gcc 4.8 and now 4.9. I think it's something to do with the accelerate framework as I don't have this problem on fedora 19/gcc 4.8 / openblas?
Re: EPS equals 0 problem for single precision

Posted:
Tue Nov 26, 2013 3:59 pm
by Julien Langou
The main difference with veclib is that (as far as I know) veclib is based of CLAPACK, while most others LAPACK library are based of netlib fortran LAPACK.
There is a MAJOR difference between LAPACK and CLAPACK. For FUNCTION returning a REAL in LAPACK, CLAPACK will always return a DOUBLE PRECISION. (Same for COMPLEX, veclib and CLAPACK will return DOUBLE COMPLEX.)
In FORTAN, if you call CDOT( ) and you use CLAPACK (or veclib) the return value will be a DOUBLE PRECISION. (The standard interface would be REAL.) In C, if you call cdot( ) and you use CLAPACK (or veclib) the return value will be a double. (The standard interface would be float.)
Bottom line if you call SLAMCH(), I think you should expect the return value to DOUBLE PRECISION.
That might be your problem.
This is really a pain, we sent a few emails to Apple so that they address this, and they do not seem interested in fixing this problem.
Julien.