summaryrefslogtreecommitdiffhomepage
path: root/eigen/blas/testing/cblat1.f
diff options
context:
space:
mode:
Diffstat (limited to 'eigen/blas/testing/cblat1.f')
-rw-r--r--eigen/blas/testing/cblat1.f724
1 files changed, 0 insertions, 724 deletions
diff --git a/eigen/blas/testing/cblat1.f b/eigen/blas/testing/cblat1.f
deleted file mode 100644
index 8ca67fb..0000000
--- a/eigen/blas/testing/cblat1.f
+++ /dev/null
@@ -1,724 +0,0 @@
-*> \brief \b CBLAT1
-*
-* =========== DOCUMENTATION ===========
-*
-* Online html documentation available at
-* http://www.netlib.org/lapack/explore-html/
-*
-* Definition:
-* ===========
-*
-* PROGRAM CBLAT1
-*
-*
-*> \par Purpose:
-* =============
-*>
-*> \verbatim
-*>
-*> Test program for the COMPLEX Level 1 BLAS.
-*> Based upon the original BLAS test routine together with:
-*>
-*> F06GAF Example Program Text
-*> \endverbatim
-*
-* Authors:
-* ========
-*
-*> \author Univ. of Tennessee
-*> \author Univ. of California Berkeley
-*> \author Univ. of Colorado Denver
-*> \author NAG Ltd.
-*
-*> \date April 2012
-*
-*> \ingroup complex_blas_testing
-*
-* =====================================================================
- PROGRAM CBLAT1
-*
-* -- Reference BLAS test routine (version 3.4.1) --
-* -- Reference BLAS is a software package provided by Univ. of Tennessee, --
-* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
-* April 2012
-*
-* =====================================================================
-*
-* .. Parameters ..
- INTEGER NOUT
- PARAMETER (NOUT=6)
-* .. Scalars in Common ..
- INTEGER ICASE, INCX, INCY, MODE, N
- LOGICAL PASS
-* .. Local Scalars ..
- REAL SFAC
- INTEGER IC
-* .. External Subroutines ..
- EXTERNAL CHECK1, CHECK2, HEADER
-* .. Common blocks ..
- COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
-* .. Data statements ..
- DATA SFAC/9.765625E-4/
-* .. Executable Statements ..
- WRITE (NOUT,99999)
- DO 20 IC = 1, 10
- ICASE = IC
- CALL HEADER
-*
-* Initialize PASS, INCX, INCY, and MODE for a new case.
-* The value 9999 for INCX, INCY or MODE will appear in the
-* detailed output, if any, for cases that do not involve
-* these parameters.
-*
- PASS = .TRUE.
- INCX = 9999
- INCY = 9999
- MODE = 9999
- IF (ICASE.LE.5) THEN
- CALL CHECK2(SFAC)
- ELSE IF (ICASE.GE.6) THEN
- CALL CHECK1(SFAC)
- END IF
-* -- Print
- IF (PASS) WRITE (NOUT,99998)
- 20 CONTINUE
- STOP
-*
-99999 FORMAT (' Complex BLAS Test Program Results',/1X)
-99998 FORMAT (' ----- PASS -----')
- END
- SUBROUTINE HEADER
-* .. Parameters ..
- INTEGER NOUT
- PARAMETER (NOUT=6)
-* .. Scalars in Common ..
- INTEGER ICASE, INCX, INCY, MODE, N
- LOGICAL PASS
-* .. Local Arrays ..
- CHARACTER*6 L(10)
-* .. Common blocks ..
- COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
-* .. Data statements ..
- DATA L(1)/'CDOTC '/
- DATA L(2)/'CDOTU '/
- DATA L(3)/'CAXPY '/
- DATA L(4)/'CCOPY '/
- DATA L(5)/'CSWAP '/
- DATA L(6)/'SCNRM2'/
- DATA L(7)/'SCASUM'/
- DATA L(8)/'CSCAL '/
- DATA L(9)/'CSSCAL'/
- DATA L(10)/'ICAMAX'/
-* .. Executable Statements ..
- WRITE (NOUT,99999) ICASE, L(ICASE)
- RETURN
-*
-99999 FORMAT (/' Test of subprogram number',I3,12X,A6)
- END
- SUBROUTINE CHECK1(SFAC)
-* .. Parameters ..
- INTEGER NOUT
- PARAMETER (NOUT=6)
-* .. Scalar Arguments ..
- REAL SFAC
-* .. Scalars in Common ..
- INTEGER ICASE, INCX, INCY, MODE, N
- LOGICAL PASS
-* .. Local Scalars ..
- COMPLEX CA
- REAL SA
- INTEGER I, J, LEN, NP1
-* .. Local Arrays ..
- COMPLEX CTRUE5(8,5,2), CTRUE6(8,5,2), CV(8,5,2), CX(8),
- + MWPCS(5), MWPCT(5)
- REAL STRUE2(5), STRUE4(5)
- INTEGER ITRUE3(5)
-* .. External Functions ..
- REAL SCASUM, SCNRM2
- INTEGER ICAMAX
- EXTERNAL SCASUM, SCNRM2, ICAMAX
-* .. External Subroutines ..
- EXTERNAL CSCAL, CSSCAL, CTEST, ITEST1, STEST1
-* .. Intrinsic Functions ..
- INTRINSIC MAX
-* .. Common blocks ..
- COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
-* .. Data statements ..
- DATA SA, CA/0.3E0, (0.4E0,-0.7E0)/
- DATA ((CV(I,J,1),I=1,8),J=1,5)/(0.1E0,0.1E0),
- + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
- + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
- + (1.0E0,2.0E0), (0.3E0,-0.4E0), (3.0E0,4.0E0),
- + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
- + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
- + (0.1E0,-0.3E0), (0.5E0,-0.1E0), (5.0E0,6.0E0),
- + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
- + (5.0E0,6.0E0), (5.0E0,6.0E0), (0.1E0,0.1E0),
- + (-0.6E0,0.1E0), (0.1E0,-0.3E0), (7.0E0,8.0E0),
- + (7.0E0,8.0E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
- + (7.0E0,8.0E0), (0.3E0,0.1E0), (0.5E0,0.0E0),
- + (0.0E0,0.5E0), (0.0E0,0.2E0), (2.0E0,3.0E0),
- + (2.0E0,3.0E0), (2.0E0,3.0E0), (2.0E0,3.0E0)/
- DATA ((CV(I,J,2),I=1,8),J=1,5)/(0.1E0,0.1E0),
- + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
- + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
- + (4.0E0,5.0E0), (0.3E0,-0.4E0), (6.0E0,7.0E0),
- + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
- + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
- + (0.1E0,-0.3E0), (8.0E0,9.0E0), (0.5E0,-0.1E0),
- + (2.0E0,5.0E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
- + (2.0E0,5.0E0), (2.0E0,5.0E0), (0.1E0,0.1E0),
- + (3.0E0,6.0E0), (-0.6E0,0.1E0), (4.0E0,7.0E0),
- + (0.1E0,-0.3E0), (7.0E0,2.0E0), (7.0E0,2.0E0),
- + (7.0E0,2.0E0), (0.3E0,0.1E0), (5.0E0,8.0E0),
- + (0.5E0,0.0E0), (6.0E0,9.0E0), (0.0E0,0.5E0),
- + (8.0E0,3.0E0), (0.0E0,0.2E0), (9.0E0,4.0E0)/
- DATA STRUE2/0.0E0, 0.5E0, 0.6E0, 0.7E0, 0.8E0/
- DATA STRUE4/0.0E0, 0.7E0, 1.0E0, 1.3E0, 1.6E0/
- DATA ((CTRUE5(I,J,1),I=1,8),J=1,5)/(0.1E0,0.1E0),
- + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
- + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
- + (1.0E0,2.0E0), (-0.16E0,-0.37E0), (3.0E0,4.0E0),
- + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
- + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
- + (-0.17E0,-0.19E0), (0.13E0,-0.39E0),
- + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
- + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
- + (0.11E0,-0.03E0), (-0.17E0,0.46E0),
- + (-0.17E0,-0.19E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
- + (7.0E0,8.0E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
- + (0.19E0,-0.17E0), (0.20E0,-0.35E0),
- + (0.35E0,0.20E0), (0.14E0,0.08E0),
- + (2.0E0,3.0E0), (2.0E0,3.0E0), (2.0E0,3.0E0),
- + (2.0E0,3.0E0)/
- DATA ((CTRUE5(I,J,2),I=1,8),J=1,5)/(0.1E0,0.1E0),
- + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
- + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
- + (4.0E0,5.0E0), (-0.16E0,-0.37E0), (6.0E0,7.0E0),
- + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
- + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
- + (-0.17E0,-0.19E0), (8.0E0,9.0E0),
- + (0.13E0,-0.39E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
- + (2.0E0,5.0E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
- + (0.11E0,-0.03E0), (3.0E0,6.0E0),
- + (-0.17E0,0.46E0), (4.0E0,7.0E0),
- + (-0.17E0,-0.19E0), (7.0E0,2.0E0), (7.0E0,2.0E0),
- + (7.0E0,2.0E0), (0.19E0,-0.17E0), (5.0E0,8.0E0),
- + (0.20E0,-0.35E0), (6.0E0,9.0E0),
- + (0.35E0,0.20E0), (8.0E0,3.0E0),
- + (0.14E0,0.08E0), (9.0E0,4.0E0)/
- DATA ((CTRUE6(I,J,1),I=1,8),J=1,5)/(0.1E0,0.1E0),
- + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
- + (1.0E0,2.0E0), (1.0E0,2.0E0), (1.0E0,2.0E0),
- + (1.0E0,2.0E0), (0.09E0,-0.12E0), (3.0E0,4.0E0),
- + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
- + (3.0E0,4.0E0), (3.0E0,4.0E0), (3.0E0,4.0E0),
- + (0.03E0,-0.09E0), (0.15E0,-0.03E0),
- + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
- + (5.0E0,6.0E0), (5.0E0,6.0E0), (5.0E0,6.0E0),
- + (0.03E0,0.03E0), (-0.18E0,0.03E0),
- + (0.03E0,-0.09E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
- + (7.0E0,8.0E0), (7.0E0,8.0E0), (7.0E0,8.0E0),
- + (0.09E0,0.03E0), (0.15E0,0.00E0),
- + (0.00E0,0.15E0), (0.00E0,0.06E0), (2.0E0,3.0E0),
- + (2.0E0,3.0E0), (2.0E0,3.0E0), (2.0E0,3.0E0)/
- DATA ((CTRUE6(I,J,2),I=1,8),J=1,5)/(0.1E0,0.1E0),
- + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
- + (4.0E0,5.0E0), (4.0E0,5.0E0), (4.0E0,5.0E0),
- + (4.0E0,5.0E0), (0.09E0,-0.12E0), (6.0E0,7.0E0),
- + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
- + (6.0E0,7.0E0), (6.0E0,7.0E0), (6.0E0,7.0E0),
- + (0.03E0,-0.09E0), (8.0E0,9.0E0),
- + (0.15E0,-0.03E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
- + (2.0E0,5.0E0), (2.0E0,5.0E0), (2.0E0,5.0E0),
- + (0.03E0,0.03E0), (3.0E0,6.0E0),
- + (-0.18E0,0.03E0), (4.0E0,7.0E0),
- + (0.03E0,-0.09E0), (7.0E0,2.0E0), (7.0E0,2.0E0),
- + (7.0E0,2.0E0), (0.09E0,0.03E0), (5.0E0,8.0E0),
- + (0.15E0,0.00E0), (6.0E0,9.0E0), (0.00E0,0.15E0),
- + (8.0E0,3.0E0), (0.00E0,0.06E0), (9.0E0,4.0E0)/
- DATA ITRUE3/0, 1, 2, 2, 2/
-* .. Executable Statements ..
- DO 60 INCX = 1, 2
- DO 40 NP1 = 1, 5
- N = NP1 - 1
- LEN = 2*MAX(N,1)
-* .. Set vector arguments ..
- DO 20 I = 1, LEN
- CX(I) = CV(I,NP1,INCX)
- 20 CONTINUE
- IF (ICASE.EQ.6) THEN
-* .. SCNRM2 ..
- CALL STEST1(SCNRM2(N,CX,INCX),STRUE2(NP1),STRUE2(NP1),
- + SFAC)
- ELSE IF (ICASE.EQ.7) THEN
-* .. SCASUM ..
- CALL STEST1(SCASUM(N,CX,INCX),STRUE4(NP1),STRUE4(NP1),
- + SFAC)
- ELSE IF (ICASE.EQ.8) THEN
-* .. CSCAL ..
- CALL CSCAL(N,CA,CX,INCX)
- CALL CTEST(LEN,CX,CTRUE5(1,NP1,INCX),CTRUE5(1,NP1,INCX),
- + SFAC)
- ELSE IF (ICASE.EQ.9) THEN
-* .. CSSCAL ..
- CALL CSSCAL(N,SA,CX,INCX)
- CALL CTEST(LEN,CX,CTRUE6(1,NP1,INCX),CTRUE6(1,NP1,INCX),
- + SFAC)
- ELSE IF (ICASE.EQ.10) THEN
-* .. ICAMAX ..
- CALL ITEST1(ICAMAX(N,CX,INCX),ITRUE3(NP1))
- ELSE
- WRITE (NOUT,*) ' Shouldn''t be here in CHECK1'
- STOP
- END IF
-*
- 40 CONTINUE
- 60 CONTINUE
-*
- INCX = 1
- IF (ICASE.EQ.8) THEN
-* CSCAL
-* Add a test for alpha equal to zero.
- CA = (0.0E0,0.0E0)
- DO 80 I = 1, 5
- MWPCT(I) = (0.0E0,0.0E0)
- MWPCS(I) = (1.0E0,1.0E0)
- 80 CONTINUE
- CALL CSCAL(5,CA,CX,INCX)
- CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
- ELSE IF (ICASE.EQ.9) THEN
-* CSSCAL
-* Add a test for alpha equal to zero.
- SA = 0.0E0
- DO 100 I = 1, 5
- MWPCT(I) = (0.0E0,0.0E0)
- MWPCS(I) = (1.0E0,1.0E0)
- 100 CONTINUE
- CALL CSSCAL(5,SA,CX,INCX)
- CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
-* Add a test for alpha equal to one.
- SA = 1.0E0
- DO 120 I = 1, 5
- MWPCT(I) = CX(I)
- MWPCS(I) = CX(I)
- 120 CONTINUE
- CALL CSSCAL(5,SA,CX,INCX)
- CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
-* Add a test for alpha equal to minus one.
- SA = -1.0E0
- DO 140 I = 1, 5
- MWPCT(I) = -CX(I)
- MWPCS(I) = -CX(I)
- 140 CONTINUE
- CALL CSSCAL(5,SA,CX,INCX)
- CALL CTEST(5,CX,MWPCT,MWPCS,SFAC)
- END IF
- RETURN
- END
- SUBROUTINE CHECK2(SFAC)
-* .. Parameters ..
- INTEGER NOUT
- PARAMETER (NOUT=6)
-* .. Scalar Arguments ..
- REAL SFAC
-* .. Scalars in Common ..
- INTEGER ICASE, INCX, INCY, MODE, N
- LOGICAL PASS
-* .. Local Scalars ..
- COMPLEX CA
- INTEGER I, J, KI, KN, KSIZE, LENX, LENY, MX, MY
-* .. Local Arrays ..
- COMPLEX CDOT(1), CSIZE1(4), CSIZE2(7,2), CSIZE3(14),
- + CT10X(7,4,4), CT10Y(7,4,4), CT6(4,4), CT7(4,4),
- + CT8(7,4,4), CX(7), CX1(7), CY(7), CY1(7)
- INTEGER INCXS(4), INCYS(4), LENS(4,2), NS(4)
-* .. External Functions ..
- COMPLEX CDOTC, CDOTU
- EXTERNAL CDOTC, CDOTU
-* .. External Subroutines ..
- EXTERNAL CAXPY, CCOPY, CSWAP, CTEST
-* .. Intrinsic Functions ..
- INTRINSIC ABS, MIN
-* .. Common blocks ..
- COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
-* .. Data statements ..
- DATA CA/(0.4E0,-0.7E0)/
- DATA INCXS/1, 2, -2, -1/
- DATA INCYS/1, -2, 1, -2/
- DATA LENS/1, 1, 2, 4, 1, 1, 3, 7/
- DATA NS/0, 1, 2, 4/
- DATA CX1/(0.7E0,-0.8E0), (-0.4E0,-0.7E0),
- + (-0.1E0,-0.9E0), (0.2E0,-0.8E0),
- + (-0.9E0,-0.4E0), (0.1E0,0.4E0), (-0.6E0,0.6E0)/
- DATA CY1/(0.6E0,-0.6E0), (-0.9E0,0.5E0),
- + (0.7E0,-0.6E0), (0.1E0,-0.5E0), (-0.1E0,-0.2E0),
- + (-0.5E0,-0.3E0), (0.8E0,-0.7E0)/
- DATA ((CT8(I,J,1),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.32E0,-1.41E0),
- + (-1.55E0,0.5E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.32E0,-1.41E0), (-1.55E0,0.5E0),
- + (0.03E0,-0.89E0), (-0.38E0,-0.96E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
- DATA ((CT8(I,J,2),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (-0.07E0,-0.89E0),
- + (-0.9E0,0.5E0), (0.42E0,-1.41E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.78E0,0.06E0), (-0.9E0,0.5E0),
- + (0.06E0,-0.13E0), (0.1E0,-0.5E0),
- + (-0.77E0,-0.49E0), (-0.5E0,-0.3E0),
- + (0.52E0,-1.51E0)/
- DATA ((CT8(I,J,3),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (-0.07E0,-0.89E0),
- + (-1.18E0,-0.31E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.78E0,0.06E0), (-1.54E0,0.97E0),
- + (0.03E0,-0.89E0), (-0.18E0,-1.31E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
- DATA ((CT8(I,J,4),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.32E0,-1.41E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.32E0,-1.41E0), (-0.9E0,0.5E0),
- + (0.05E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.32E0,-1.41E0),
- + (-0.9E0,0.5E0), (0.05E0,-0.6E0), (0.1E0,-0.5E0),
- + (-0.77E0,-0.49E0), (-0.5E0,-0.3E0),
- + (0.32E0,-1.16E0)/
- DATA CT7/(0.0E0,0.0E0), (-0.06E0,-0.90E0),
- + (0.65E0,-0.47E0), (-0.34E0,-1.22E0),
- + (0.0E0,0.0E0), (-0.06E0,-0.90E0),
- + (-0.59E0,-1.46E0), (-1.04E0,-0.04E0),
- + (0.0E0,0.0E0), (-0.06E0,-0.90E0),
- + (-0.83E0,0.59E0), (0.07E0,-0.37E0),
- + (0.0E0,0.0E0), (-0.06E0,-0.90E0),
- + (-0.76E0,-1.15E0), (-1.33E0,-1.82E0)/
- DATA CT6/(0.0E0,0.0E0), (0.90E0,0.06E0),
- + (0.91E0,-0.77E0), (1.80E0,-0.10E0),
- + (0.0E0,0.0E0), (0.90E0,0.06E0), (1.45E0,0.74E0),
- + (0.20E0,0.90E0), (0.0E0,0.0E0), (0.90E0,0.06E0),
- + (-0.55E0,0.23E0), (0.83E0,-0.39E0),
- + (0.0E0,0.0E0), (0.90E0,0.06E0), (1.04E0,0.79E0),
- + (1.95E0,1.22E0)/
- DATA ((CT10X(I,J,1),I=1,7),J=1,4)/(0.7E0,-0.8E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.6E0,-0.6E0), (-0.9E0,0.5E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.6E0,-0.6E0),
- + (-0.9E0,0.5E0), (0.7E0,-0.6E0), (0.1E0,-0.5E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
- DATA ((CT10X(I,J,2),I=1,7),J=1,4)/(0.7E0,-0.8E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.7E0,-0.6E0), (-0.4E0,-0.7E0),
- + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.8E0,-0.7E0),
- + (-0.4E0,-0.7E0), (-0.1E0,-0.2E0),
- + (0.2E0,-0.8E0), (0.7E0,-0.6E0), (0.1E0,0.4E0),
- + (0.6E0,-0.6E0)/
- DATA ((CT10X(I,J,3),I=1,7),J=1,4)/(0.7E0,-0.8E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (-0.9E0,0.5E0), (-0.4E0,-0.7E0),
- + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.1E0,-0.5E0),
- + (-0.4E0,-0.7E0), (0.7E0,-0.6E0), (0.2E0,-0.8E0),
- + (-0.9E0,0.5E0), (0.1E0,0.4E0), (0.6E0,-0.6E0)/
- DATA ((CT10X(I,J,4),I=1,7),J=1,4)/(0.7E0,-0.8E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.6E0,-0.6E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.6E0,-0.6E0), (0.7E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.6E0,-0.6E0),
- + (0.7E0,-0.6E0), (-0.1E0,-0.2E0), (0.8E0,-0.7E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0)/
- DATA ((CT10Y(I,J,1),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.7E0,-0.8E0), (-0.4E0,-0.7E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.7E0,-0.8E0),
- + (-0.4E0,-0.7E0), (-0.1E0,-0.9E0),
- + (0.2E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0)/
- DATA ((CT10Y(I,J,2),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (-0.1E0,-0.9E0), (-0.9E0,0.5E0),
- + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (-0.6E0,0.6E0),
- + (-0.9E0,0.5E0), (-0.9E0,-0.4E0), (0.1E0,-0.5E0),
- + (-0.1E0,-0.9E0), (-0.5E0,-0.3E0),
- + (0.7E0,-0.8E0)/
- DATA ((CT10Y(I,J,3),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (-0.1E0,-0.9E0), (0.7E0,-0.8E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (-0.6E0,0.6E0),
- + (-0.9E0,-0.4E0), (-0.1E0,-0.9E0),
- + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0)/
- DATA ((CT10Y(I,J,4),I=1,7),J=1,4)/(0.6E0,-0.6E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.7E0,-0.8E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.7E0,-0.8E0), (-0.9E0,0.5E0),
- + (-0.4E0,-0.7E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.7E0,-0.8E0),
- + (-0.9E0,0.5E0), (-0.4E0,-0.7E0), (0.1E0,-0.5E0),
- + (-0.1E0,-0.9E0), (-0.5E0,-0.3E0),
- + (0.2E0,-0.8E0)/
- DATA CSIZE1/(0.0E0,0.0E0), (0.9E0,0.9E0),
- + (1.63E0,1.73E0), (2.90E0,2.78E0)/
- DATA CSIZE3/(0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (1.17E0,1.17E0),
- + (1.17E0,1.17E0), (1.17E0,1.17E0),
- + (1.17E0,1.17E0), (1.17E0,1.17E0),
- + (1.17E0,1.17E0), (1.17E0,1.17E0)/
- DATA CSIZE2/(0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (0.0E0,0.0E0),
- + (0.0E0,0.0E0), (0.0E0,0.0E0), (1.54E0,1.54E0),
- + (1.54E0,1.54E0), (1.54E0,1.54E0),
- + (1.54E0,1.54E0), (1.54E0,1.54E0),
- + (1.54E0,1.54E0), (1.54E0,1.54E0)/
-* .. Executable Statements ..
- DO 60 KI = 1, 4
- INCX = INCXS(KI)
- INCY = INCYS(KI)
- MX = ABS(INCX)
- MY = ABS(INCY)
-*
- DO 40 KN = 1, 4
- N = NS(KN)
- KSIZE = MIN(2,KN)
- LENX = LENS(KN,MX)
- LENY = LENS(KN,MY)
-* .. initialize all argument arrays ..
- DO 20 I = 1, 7
- CX(I) = CX1(I)
- CY(I) = CY1(I)
- 20 CONTINUE
- IF (ICASE.EQ.1) THEN
-* .. CDOTC ..
- CDOT(1) = CDOTC(N,CX,INCX,CY,INCY)
- CALL CTEST(1,CDOT,CT6(KN,KI),CSIZE1(KN),SFAC)
- ELSE IF (ICASE.EQ.2) THEN
-* .. CDOTU ..
- CDOT(1) = CDOTU(N,CX,INCX,CY,INCY)
- CALL CTEST(1,CDOT,CT7(KN,KI),CSIZE1(KN),SFAC)
- ELSE IF (ICASE.EQ.3) THEN
-* .. CAXPY ..
- CALL CAXPY(N,CA,CX,INCX,CY,INCY)
- CALL CTEST(LENY,CY,CT8(1,KN,KI),CSIZE2(1,KSIZE),SFAC)
- ELSE IF (ICASE.EQ.4) THEN
-* .. CCOPY ..
- CALL CCOPY(N,CX,INCX,CY,INCY)
- CALL CTEST(LENY,CY,CT10Y(1,KN,KI),CSIZE3,1.0E0)
- ELSE IF (ICASE.EQ.5) THEN
-* .. CSWAP ..
- CALL CSWAP(N,CX,INCX,CY,INCY)
- CALL CTEST(LENX,CX,CT10X(1,KN,KI),CSIZE3,1.0E0)
- CALL CTEST(LENY,CY,CT10Y(1,KN,KI),CSIZE3,1.0E0)
- ELSE
- WRITE (NOUT,*) ' Shouldn''t be here in CHECK2'
- STOP
- END IF
-*
- 40 CONTINUE
- 60 CONTINUE
- RETURN
- END
- SUBROUTINE STEST(LEN,SCOMP,STRUE,SSIZE,SFAC)
-* ********************************* STEST **************************
-*
-* THIS SUBR COMPARES ARRAYS SCOMP() AND STRUE() OF LENGTH LEN TO
-* SEE IF THE TERM BY TERM DIFFERENCES, MULTIPLIED BY SFAC, ARE
-* NEGLIGIBLE.
-*
-* C. L. LAWSON, JPL, 1974 DEC 10
-*
-* .. Parameters ..
- INTEGER NOUT
- REAL ZERO
- PARAMETER (NOUT=6, ZERO=0.0E0)
-* .. Scalar Arguments ..
- REAL SFAC
- INTEGER LEN
-* .. Array Arguments ..
- REAL SCOMP(LEN), SSIZE(LEN), STRUE(LEN)
-* .. Scalars in Common ..
- INTEGER ICASE, INCX, INCY, MODE, N
- LOGICAL PASS
-* .. Local Scalars ..
- REAL SD
- INTEGER I
-* .. External Functions ..
- REAL SDIFF
- EXTERNAL SDIFF
-* .. Intrinsic Functions ..
- INTRINSIC ABS
-* .. Common blocks ..
- COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
-* .. Executable Statements ..
-*
- DO 40 I = 1, LEN
- SD = SCOMP(I) - STRUE(I)
- IF (ABS(SFAC*SD) .LE. ABS(SSIZE(I))*EPSILON(ZERO))
- + GO TO 40
-*
-* HERE SCOMP(I) IS NOT CLOSE TO STRUE(I).
-*
- IF ( .NOT. PASS) GO TO 20
-* PRINT FAIL MESSAGE AND HEADER.
- PASS = .FALSE.
- WRITE (NOUT,99999)
- WRITE (NOUT,99998)
- 20 WRITE (NOUT,99997) ICASE, N, INCX, INCY, MODE, I, SCOMP(I),
- + STRUE(I), SD, SSIZE(I)
- 40 CONTINUE
- RETURN
-*
-99999 FORMAT (' FAIL')
-99998 FORMAT (/' CASE N INCX INCY MODE I ',
- + ' COMP(I) TRUE(I) DIFFERENCE',
- + ' SIZE(I)',/1X)
-99997 FORMAT (1X,I4,I3,3I5,I3,2E36.8,2E12.4)
- END
- SUBROUTINE STEST1(SCOMP1,STRUE1,SSIZE,SFAC)
-* ************************* STEST1 *****************************
-*
-* THIS IS AN INTERFACE SUBROUTINE TO ACCOMODATE THE FORTRAN
-* REQUIREMENT THAT WHEN A DUMMY ARGUMENT IS AN ARRAY, THE
-* ACTUAL ARGUMENT MUST ALSO BE AN ARRAY OR AN ARRAY ELEMENT.
-*
-* C.L. LAWSON, JPL, 1978 DEC 6
-*
-* .. Scalar Arguments ..
- REAL SCOMP1, SFAC, STRUE1
-* .. Array Arguments ..
- REAL SSIZE(*)
-* .. Local Arrays ..
- REAL SCOMP(1), STRUE(1)
-* .. External Subroutines ..
- EXTERNAL STEST
-* .. Executable Statements ..
-*
- SCOMP(1) = SCOMP1
- STRUE(1) = STRUE1
- CALL STEST(1,SCOMP,STRUE,SSIZE,SFAC)
-*
- RETURN
- END
- REAL FUNCTION SDIFF(SA,SB)
-* ********************************* SDIFF **************************
-* COMPUTES DIFFERENCE OF TWO NUMBERS. C. L. LAWSON, JPL 1974 FEB 15
-*
-* .. Scalar Arguments ..
- REAL SA, SB
-* .. Executable Statements ..
- SDIFF = SA - SB
- RETURN
- END
- SUBROUTINE CTEST(LEN,CCOMP,CTRUE,CSIZE,SFAC)
-* **************************** CTEST *****************************
-*
-* C.L. LAWSON, JPL, 1978 DEC 6
-*
-* .. Scalar Arguments ..
- REAL SFAC
- INTEGER LEN
-* .. Array Arguments ..
- COMPLEX CCOMP(LEN), CSIZE(LEN), CTRUE(LEN)
-* .. Local Scalars ..
- INTEGER I
-* .. Local Arrays ..
- REAL SCOMP(20), SSIZE(20), STRUE(20)
-* .. External Subroutines ..
- EXTERNAL STEST
-* .. Intrinsic Functions ..
- INTRINSIC AIMAG, REAL
-* .. Executable Statements ..
- DO 20 I = 1, LEN
- SCOMP(2*I-1) = REAL(CCOMP(I))
- SCOMP(2*I) = AIMAG(CCOMP(I))
- STRUE(2*I-1) = REAL(CTRUE(I))
- STRUE(2*I) = AIMAG(CTRUE(I))
- SSIZE(2*I-1) = REAL(CSIZE(I))
- SSIZE(2*I) = AIMAG(CSIZE(I))
- 20 CONTINUE
-*
- CALL STEST(2*LEN,SCOMP,STRUE,SSIZE,SFAC)
- RETURN
- END
- SUBROUTINE ITEST1(ICOMP,ITRUE)
-* ********************************* ITEST1 *************************
-*
-* THIS SUBROUTINE COMPARES THE VARIABLES ICOMP AND ITRUE FOR
-* EQUALITY.
-* C. L. LAWSON, JPL, 1974 DEC 10
-*
-* .. Parameters ..
- INTEGER NOUT
- PARAMETER (NOUT=6)
-* .. Scalar Arguments ..
- INTEGER ICOMP, ITRUE
-* .. Scalars in Common ..
- INTEGER ICASE, INCX, INCY, MODE, N
- LOGICAL PASS
-* .. Local Scalars ..
- INTEGER ID
-* .. Common blocks ..
- COMMON /COMBLA/ICASE, N, INCX, INCY, MODE, PASS
-* .. Executable Statements ..
- IF (ICOMP.EQ.ITRUE) GO TO 40
-*
-* HERE ICOMP IS NOT EQUAL TO ITRUE.
-*
- IF ( .NOT. PASS) GO TO 20
-* PRINT FAIL MESSAGE AND HEADER.
- PASS = .FALSE.
- WRITE (NOUT,99999)
- WRITE (NOUT,99998)
- 20 ID = ICOMP - ITRUE
- WRITE (NOUT,99997) ICASE, N, INCX, INCY, MODE, ICOMP, ITRUE, ID
- 40 CONTINUE
- RETURN
-*
-99999 FORMAT (' FAIL')
-99998 FORMAT (/' CASE N INCX INCY MODE ',
- + ' COMP TRUE DIFFERENCE',
- + /1X)
-99997 FORMAT (1X,I4,I3,3I5,2I36,I12)
- END