ARPACK compiled with CVF

ARPACK compiled with CVF

I compiled and linked the large symmetric matrix eigensolver routine ARPACK (see using CVF. The only tricks I remember were increasing the stack size to 2MB or so, replacing the ETIME routine with one that used the DATE_AND_TIME intrinsic subroutine, and replacing the DLAMCH routine for determining machine precision parameters with one that used the "Numerical Recipes, The Art of Scientic Computing" (by W. T. Vetterling et al, second edition) MACHAR subroutine. MACHAR and DLAMCH equivalencies were:
floating point precision: DLAMCH( 'E' ) = 10th argument of MACHAR.
smallest number representable at full precision: DLAMCH( 'S' ) = 12th argument of MACHAR.
base: DLAMCH( 'B' ) = 2.D0
I guess I could also have used the CVF intrinsic routines EPSILON and TINY in place of DLAMCH( 'E' ) and DLAMCH( 'S' ) respectively.

Does anybody know where I could find some matrix/eigenvalue/eigenvector test sets to see how well this works?

Harry Bell

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Upon further examination I discovered that the reason DLAMCH was not working properly was due to the CVF switch /fltconsistency not being set ("Enable Floating Point Consistency" from the Project, Settings, Fortran Tab, category Floating Point). Once I set this switch the subroutine returned DLAMCH ('S') identical to the TINY intrinsic CVF subroutine. Interestingly, it gave an epsilon value DLAMCH('E') equal to half the EPSILON intrinsic CVF subroutine. Might the intrinsic subroutine EPSILON be incorrect?

No, CVF is fine - but these routines that try to compute at run-time the various characteristics of the floating point type fall over on the X86 architecture. You can try compiling them without optimization and sometimes they'll return the right values, but I suggest you look here instead.


Retired 12/31/2016

Leave a Comment

Please sign in to add a comment. Not a member? Join today