二楼上库函数说明的一个示例
USE EVESF_INT
USE EPISF_INT
USE UMACH_INT
USE WRRRN_INT
IMPLICIT NONE
! Declare variables
INTEGER LDA, LDEVEC, N
PARAMETER (N=4, LDA=N, LDEVEC=N)
!
INTEGER NEVEC, NOUT
REAL A(LDA,N), EVAL(N), EVEC(LDEVEC,N), PI
LOGICAL SMALL
!
! Set values of A
!
! A = ( 5.0 4.0 1.0 1.0)
! ( 4.0 5.0 1.0 1.0)
! ( 1.0 1.0 4.0 2.0)
! ( 1.0 1.0 2.0 4.0)
!
IMSL MATH LIBRARY Chapter 2: Eigensystem Analysis 573
DATA A/5.0, 4.0, 1.0, 1.0, 4.0, 5.0, 1.0, 1.0, 1.0, 1.0, 4.0, &
2.0, 1.0, 1.0, 2.0, 4.0/
!
! Find eigenvalues and vectors of A
NEVEC = 2
SMALL = .FALSE.
CALL EVESF (NEVEC, A, SMALL, EVAL, EVEC)
! Compute performance index
PI = EPISF(NEVEC,A,EVAL,EVEC)
! Print results
CALL UMACH (2, NOUT)
CALL WRRRN ('EVAL', EVAL, 1, NEVEC, 1)
CALL WRRRN ('EVEC', EVEC, N, NEVEC, LDEVEC)
WRITE (NOUT,'(/,A,F6.3)') ' Performance index = ', PI
END
个人猜测umach是为了定义write函数里面的标号而使用的,不过为啥非要用umach函数来生成,直接一个数字不是就可以了么,即使是非要用变量——防止某些编译器程序不支持在函数调用中直接以数字代替哑元——也可以直接定义变量的值啊,没必要非得用umach啊
求高手指教
USE EVESF_INT
USE EPISF_INT
USE UMACH_INT
USE WRRRN_INT
IMPLICIT NONE
! Declare variables
INTEGER LDA, LDEVEC, N
PARAMETER (N=4, LDA=N, LDEVEC=N)
!
INTEGER NEVEC, NOUT
REAL A(LDA,N), EVAL(N), EVEC(LDEVEC,N), PI
LOGICAL SMALL
!
! Set values of A
!
! A = ( 5.0 4.0 1.0 1.0)
! ( 4.0 5.0 1.0 1.0)
! ( 1.0 1.0 4.0 2.0)
! ( 1.0 1.0 2.0 4.0)
!
IMSL MATH LIBRARY Chapter 2: Eigensystem Analysis 573
DATA A/5.0, 4.0, 1.0, 1.0, 4.0, 5.0, 1.0, 1.0, 1.0, 1.0, 4.0, &
2.0, 1.0, 1.0, 2.0, 4.0/
!
! Find eigenvalues and vectors of A
NEVEC = 2
SMALL = .FALSE.
CALL EVESF (NEVEC, A, SMALL, EVAL, EVEC)
! Compute performance index
PI = EPISF(NEVEC,A,EVAL,EVEC)
! Print results
CALL UMACH (2, NOUT)
CALL WRRRN ('EVAL', EVAL, 1, NEVEC, 1)
CALL WRRRN ('EVEC', EVEC, N, NEVEC, LDEVEC)
WRITE (NOUT,'(/,A,F6.3)') ' Performance index = ', PI
END
个人猜测umach是为了定义write函数里面的标号而使用的,不过为啥非要用umach函数来生成,直接一个数字不是就可以了么,即使是非要用变量——防止某些编译器程序不支持在函数调用中直接以数字代替哑元——也可以直接定义变量的值啊,没必要非得用umach啊
求高手指教