NAME vdsinqi - initialize the array xWSAVE, which is used in both xSINQF and xSINQB. SYNOPSIS SUBROUTINE SINQI (N, RWSAVE) SUBROUTINE DSINQI (N, DWSAVE) SUBROUTINE VSINQI (N, RWSAVE) SUBROUTINE VDSINQI (N, DWSAVE) #include <sunperf.h> void sinqi (int n, float *rwsave) ; void dsinqi (int n, double *dwsave) ; void vsinqi (int n, float *rwsave) ; void vdsinqi (int n, float *dwsave) ; ARGUMENTS N Length of the sequence to be transformed. The method is most efficient when N is a product of small primes. xWSAVE On entry, an array with a dimension of at least (3 * N + 15) for scalar subroutines or (2 * N + 15) for vector subroutines. The same work array can be used for both xSINQF and xSINQB as long as N remains unchanged. Different xWSAVE arrays are required for different values of N. This initial- ization does not have to be repeated between calls to xCSINF or xCSINB as long as N and xWSAVE remain unchanged, thus subsequent transforms can be obtained faster than the first. SAMPLE PROGRAM PROGRAM TEST IMPLICIT NONE C INTEGER N PARAMETER (N = 6) C INTEGER I REAL PI, WSAVE(3 * N + 15), X(N) C EXTERNAL SINQB, SINQF, SINQI INTRINSIC ACOS, SIN C C Initialize array X to a real odd quarter-wave sequence, C that is,it can be expanded in terms of a sine series with C only odd wave number. C PI = ACOS (-1.0) DO 100, I=1, N X(I) = 40.0 * SIN (I * PI / (2.0 * N)) 100 CONTINUE C PRINT 1000 PRINT 1010, (X(I), I = 1, N) CALL SINQI (N, WSAVE) CALL SINQF (N, X, WSAVE) PRINT 1020 PRINT 1010, (X(I), I = 1, N) CALL SINQB(N, X, WSAVE) PRINT 1030 PRINT 1010, (X(I), I = 1, N) C 1000 FORMAT (1X, 'Original Sequence: ') 1010 FORMAT (1X, 100(F5.1, 1X)) 1020 FORMAT (1X, 'Transformed Sequence: ') 1030 FORMAT (1X, 'Recovered Sequence: ') C END SAMPLE OUTPUT Original Sequence: 10.4 20.0 28.3 34.6 38.6 40.0 Transformed Sequence: 240.0 0.0 0.0 0.0 0.0 0.0 Recovered Sequence: 248.5 480.0 678.8 831.4 927.3 960.0
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |