- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I compiled and linked the large symmetric matrix eigensolver routine ARPACK (see http://www.caam.rice.edu/software/ARPACK/) 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
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
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Steve
Steve
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page