From fa8e4fd879ea09dd093448e664f1c01ce47d5a1a Mon Sep 17 00:00:00 2001 From: Xianyi Zhang Date: Wed, 11 May 2011 01:12:32 +0800 Subject: [PATCH] Fixed #26 the wrong result of rotmg. Used fabs() instead of abs(). --- Changelog.txt | 1 + interface/rotmg.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 0a9f182fa..2035dbce1 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -16,6 +16,7 @@ common: issue #19 on github) * Fixed issue #23. Fixed a bug of f_check script about generating link flags. * Added openblas_set_num_threads for Fortran. + * Fixed #25 a wrong result of rotmg. x86/x86_64: * diff --git a/interface/rotmg.c b/interface/rotmg.c index c37c09914..3db891714 100644 --- a/interface/rotmg.c +++ b/interface/rotmg.c @@ -7,6 +7,12 @@ #define GAMSQ 16777216.e0 #define RGAMSQ 5.9604645e-8 +#ifdef DOUBLE +#define ABS(x) fabs(x) +#else +#define ABS(x) fabsf(x) +#endif + #ifndef CBLAS void NAME(FLOAT *dd1, FLOAT *dd2, FLOAT *dx1, FLOAT *DY1, FLOAT *dparam){ @@ -47,7 +53,7 @@ void CNAME(FLOAT *dd1, FLOAT *dd2, FLOAT *dx1, FLOAT dy1, FLOAT *dparam){ dq2 = dp2 * dy1; dq1 = dp1 * *dx1; - if (! (abs(dq1) > abs(dq2))) goto L40; + if (! (ABS(dq1) > ABS(dq2))) goto L40; dh21 = -(dy1) / *dx1; dh12 = dp2 / dp1; @@ -140,7 +146,7 @@ L150: goto L130; L160: - if (! (abs(*dd2) <= RGAMSQ)) { + if (! (ABS(*dd2) <= RGAMSQ)) { goto L190; } if (*dd2 == ZERO) { @@ -157,7 +163,7 @@ L180: goto L160; L190: - if (! (abs(*dd2) >= GAMSQ)) { + if (! (ABS(*dd2) >= GAMSQ)) { goto L220; } igo = 3;