PROGRAM TESTM ! David M. Smith 3-23-97 ! Test program using the FM Fortran-90 module for doing ! arithmetic using the FM, IM, and ZM derived types. ! Any errors will be noted in file Test90.LOG. ! After a successful run of this program, there should be ! one line in Test90.LOG: ! 603 cases tested. No errors were found. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM2,MZM3,MZM4 CALL ZMSET(50) KDEBUG = 1 KWARN = 2 ! Write output to the standard FM output (unit KW, defined ! in subroutine FMSET), and also to the file Test90.LOG. KLOG = 11 OPEN (KLOG,FILE='Test90.LOG') ! NERROR is the number of errors found. ! NCASE is the number of cases tested. NERROR = 0 NCASE = 0 I1 = 131 R1 = 241.21 D1 = 391.61D0 Z1 = ( 411.11D0 , 421.21D0 ) C1 = ( 431.11D0 , 441.21D0 ) CALL FM_ST2M('581.21',MFM1) CALL FM_ST2M('-572.42',MFM2) CALL IM_ST2M('661',MIM1) CALL IM_ST2M('-602',MIM2) CALL ZM_ST2M('731.51 + 711.41 i',MZM1) CALL ZM_ST2M('-762.12 - 792.42 i',MZM2) ! Test the '=' assignment operator. CALL TEST1(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '.EQ.' logical operator. CALL TEST2(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2,MZM1,MZM2, & NERROR,NCASE,KLOG) ! Test the '.NE.' logical operator. CALL TEST3(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2,MZM1,MZM2, & NERROR,NCASE,KLOG) ! Test the '.GT.' logical operator. CALL TEST4(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.GE.' logical operator. CALL TEST5(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.LT.' logical operator. CALL TEST6(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.LE.' logical operator. CALL TEST7(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '+' arithmetic operator. CALL TEST8(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '-' arithmetic operator. CALL TEST9(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '*' arithmetic operator. CALL TEST10(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '/' arithmetic operator. CALL TEST11(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '**' arithmetic operator. CALL TEST12(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions ABS, ..., CEILING. CALL TEST13(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions CMPLX, ..., EXPONENT. CALL TEST14(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions FLOOR, ..., MIN. CALL TEST15(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions MINEXPONENT, ..., RRSPACING. CALL TEST16(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions SCALE, ..., TINY. CALL TEST17(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions TO_FM, ..., TO_ZM. CALL TEST18(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test derived-type interface routines. CALL TEST19(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) IF (NERROR.EQ.0) THEN WRITE (KW,*) NCASE,' cases tested. No errors were found. ' WRITE (KLOG,*) NCASE,' cases tested. No errors were found. ' ELSE WRITE (KW,*) NCASE,' cases tested. ',NERROR, & ' error(s) found. ' WRITE (KLOG,*) NCASE,' cases tested. ',NERROR, & ' error(s) found. ' ENDIF END SUBROUTINE TEST1(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '=' assignment operator. USE FMZM IMPLICIT NONE INTEGER I1,I3,KLOG,NERROR,NCASE REAL R1,R3,RSMALL DOUBLE PRECISION D1,D3,DSMALL COMPLEX Z1,Z3 COMPLEX (KIND(0.0D0)) :: C1,C3 TYPE ( FM ) MFM1,MFM3,MFM4,MSMALL TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM3,MZM4 RSMALL = EPSILON(1.0)*100.0 DSMALL = EPSILON(1.0D0)*100.0 MSMALL = EPSILON(TO_FM(1))*10000.0 NCASE = 1 I3 = MFM1 IF (I3.NE.581) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 2 I3 = MIM1 IF (I3.NE.661) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 3 I3 = MZM1 IF (I3.NE.731) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 4 R3 = MFM1 IF (ABS((R3-581.21)/581.21).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 5 R3 = MIM1 IF (ABS((R3-661.0)/661.0).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 6 R3 = MZM1 IF (ABS((R3-731.51)/731.51).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 7 D3 = MFM1 IF (ABS((D3-581.21D0)/581.21D0).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 8 D3 = MIM1 IF (ABS((D3-661.0D0)/661.0D0).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 9 D3 = MZM1 IF (ABS((D3-731.51D0)/731.51D0).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 10 Z3 = MFM1 IF (ABS((Z3-581.21)/581.21).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 11 Z3 = MIM1 IF (ABS((Z3-661.0)/661.0).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 12 Z3 = MZM1 IF (ABS((Z3-(731.51,711.41))/(731.51,711.41)).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 13 C3 = MFM1 IF (ABS((C3-581.21D0)/581.21D0).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 14 C3 = MIM1 IF (ABS((C3-661.0D0)/661.0D0).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 15 C3 = MZM1 IF (ABS((C3-(731.51D0,711.41D0))/(731.51D0,711.41D0)).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 16 MFM3 = I1 CALL FM_I2M(131,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_ABS(MFM4,MFM4) CALL FM_ST2M('0',MFM3) IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 17 MFM3 = R1 CALL FM_ST2M('241.21',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) MFM3 = RSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 18 MFM3 = D1 CALL FM_ST2M('391.61',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) MFM3 = DSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 19 MFM3 = Z1 CALL FM_ST2M('411.11',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) MFM3 = RSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 20 MFM3 = C1 CALL FM_ST2M('431.11',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) MFM3 = DSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 21 MFM3 = MFM1 CALL FM_ST2M('581.21',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) CALL FM_EQ(MSMALL,MFM3) IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 22 MFM3 = MIM1 CALL FM_ST2M('661',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_ABS(MFM4,MFM4) CALL FM_ST2M('0',MFM3) IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 23 MFM3 = MZM1 CALL FM_ST2M('731.51',MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) MFM3 = MSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 24 MIM3 = I1 CALL IM_I2M(131,MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 25 MIM3 = R1 CALL IM_ST2M('241',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 26 MIM3 = D1 CALL IM_ST2M('391',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 27 MIM3 = Z1 CALL IM_ST2M('411',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 28 MIM3 = C1 CALL IM_ST2M('431',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 29 MIM3 = MFM1 CALL IM_ST2M('581',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 30 MIM3 = MIM1 CALL IM_ST2M('661',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 31 MIM3 = MZM1 CALL IM_ST2M('731',MIM4) CALL IM_SUB(MIM3,MIM4,MIM4) CALL IM_ST2M('0',MIM3) IF (IM_COMP(MIM4,'GT',MIM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 32 MZM3 = I1 CALL ZM_I2M(131,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_ABS(MZM4,MFM4) CALL FM_ST2M('0',MFM3) IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 33 MZM3 = R1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) MFM3 = RSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 34 MZM3 = D1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) MFM3 = DSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 35 MZM3 = Z1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) MFM3 = RSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 36 MZM3 = C1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) MFM3 = DSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 37 MZM3 = MFM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) MFM3 = MSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 38 MZM3 = MIM1 CALL ZM_ST2M('661',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_ABS(MZM4,MFM4) CALL FM_ST2M('0',MFM3) IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 39 MZM3 = MZM1 CALL ZM_ST2M('731.51 + 711.41 i',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) MFM3 = MSMALL IF (FM_COMP(MFM4,'GT',MFM3)) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST2(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2,MZM1,MZM2, & NERROR,NCASE,KLOG) ! Test the '.EQ.' logical operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2 TYPE ( IM ) MIM1,MIM2 TYPE ( ZM ) MZM1,MZM2 NCASE = 40 IF (I1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 41 IF (I1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 42 IF (I1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 43 IF (R1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 44 IF (R1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 45 IF (R1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 46 IF (D1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 47 IF (D1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 48 IF (D1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 49 IF (Z1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 50 IF (Z1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 51 IF (Z1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 52 IF (C1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 53 IF (C1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 54 IF (C1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 55 IF (MFM1.EQ.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 56 IF (MFM1.EQ.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 57 IF (MFM1.EQ.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 58 IF (MFM1.EQ.Z1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 59 IF (MFM1.EQ.C1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 60 IF (MFM1.EQ.MFM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 61 IF (MFM1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 62 IF (MFM1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 63 IF (MIM1.EQ.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 64 IF (MIM1.EQ.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 65 IF (MIM1.EQ.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 66 IF (MIM1.EQ.Z1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 67 IF (MIM1.EQ.C1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 68 IF (MIM1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 69 IF (MIM1.EQ.MIM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 70 IF (MIM1.EQ.MZM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 71 IF (MZM1.EQ.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 72 IF (MZM1.EQ.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 73 IF (MZM1.EQ.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 74 IF (MZM1.EQ.Z1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 75 IF (MZM1.EQ.C1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 76 IF (MZM1.EQ.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 77 IF (MZM1.EQ.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 78 IF (MZM1.EQ.MZM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST3(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2,MZM1,MZM2, & NERROR,NCASE,KLOG) ! Test the '.NE.' logical operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2 TYPE ( IM ) MIM1,MIM2 TYPE ( ZM ) MZM1,MZM2 NCASE = 79 IF (.NOT.(I1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 80 IF (.NOT.(I1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 81 IF (.NOT.(I1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 82 IF (.NOT.(R1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 83 IF (.NOT.(R1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 84 IF (.NOT.(R1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 85 IF (.NOT.(D1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 86 IF (.NOT.(D1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 87 IF (.NOT.(D1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 88 IF (.NOT.(Z1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 89 IF (.NOT.(Z1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 90 IF (.NOT.(Z1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 91 IF (.NOT.(C1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 92 IF (.NOT.(C1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 93 IF (.NOT.(C1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 94 IF (.NOT.(MFM1.NE.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 95 IF (.NOT.(MFM1.NE.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 96 IF (.NOT.(MFM1.NE.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 97 IF (.NOT.(MFM1.NE.Z1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 98 IF (.NOT.(MFM1.NE.C1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 99 IF (.NOT.(MFM1.NE.MFM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 100 IF (.NOT.(MFM1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 101 IF (.NOT.(MFM1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 102 IF (.NOT.(MIM1.NE.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 103 IF (.NOT.(MIM1.NE.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 104 IF (.NOT.(MIM1.NE.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 105 IF (.NOT.(MIM1.NE.Z1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 106 IF (.NOT.(MIM1.NE.C1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 107 IF (.NOT.(MIM1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 108 IF (.NOT.(MIM1.NE.MIM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 109 IF (.NOT.(MIM1.NE.MZM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 110 IF (.NOT.(MZM1.NE.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 111 IF (.NOT.(MZM1.NE.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 112 IF (.NOT.(MZM1.NE.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 113 IF (.NOT.(MZM1.NE.Z1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 114 IF (.NOT.(MZM1.NE.C1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 115 IF (.NOT.(MZM1.NE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 116 IF (.NOT.(MZM1.NE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 117 IF (.NOT.(MZM1.NE.MZM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST4(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.GT.' logical operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2 TYPE ( IM ) MIM1,MIM2 NCASE = 118 IF (I1.GT.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 119 IF (I1.GT.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 120 IF (R1.GT.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 121 IF (R1.GT.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 122 IF (D1.GT.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 123 IF (D1.GT.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 124 IF (.NOT.(MFM1.GT.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 125 IF (.NOT.(MFM1.GT.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 126 IF (.NOT.(MFM1.GT.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 127 IF (.NOT.(MFM1.GT.MFM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 128 IF (MFM1.GT.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 129 IF (.NOT.(MIM1.GT.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 130 IF (.NOT.(MIM1.GT.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 131 IF (.NOT.(MIM1.GT.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 132 IF (.NOT.(MIM1.GT.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 133 IF (.NOT.(MIM1.GT.MIM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST5(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.GE.' logical operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2 TYPE ( IM ) MIM1,MIM2 NCASE = 134 IF (I1.GE.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 135 IF (I1.GE.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 136 IF (R1.GE.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 137 IF (R1.GE.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 138 IF (D1.GE.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 139 IF (D1.GE.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 140 IF (.NOT.(MFM1.GE.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 141 IF (.NOT.(MFM1.GE.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 142 IF (.NOT.(MFM1.GE.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 143 IF (.NOT.(MFM1.GE.MFM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 144 IF (MFM1.GE.MIM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 145 IF (.NOT.(MIM1.GE.I1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 146 IF (.NOT.(MIM1.GE.R1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 147 IF (.NOT.(MIM1.GE.D1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 148 IF (.NOT.(MIM1.GE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 149 IF (.NOT.(MIM1.GE.MIM2)) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST6(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.LT.' logical operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2 TYPE ( IM ) MIM1,MIM2 NCASE = 150 IF (.NOT.(I1.LT.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 151 IF (.NOT.(I1.LT.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 152 IF (.NOT.(R1.LT.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 153 IF (.NOT.(R1.LT.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 154 IF (.NOT.(D1.LT.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 155 IF (.NOT.(D1.LT.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 156 IF (MFM1.LT.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 157 IF (MFM1.LT.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 158 IF (MFM1.LT.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 159 IF (MFM1.LT.MFM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 160 IF (.NOT.(MFM1.LT.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 161 IF (MIM1.LT.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 162 IF (MIM1.LT.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 163 IF (MIM1.LT.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 164 IF (MIM1.LT.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 165 IF (MIM1.LT.MIM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST7(I1,R1,D1,Z1,C1,MFM1,MFM2, & MIM1,MIM2, & NERROR,NCASE,KLOG) ! Test the '.LE.' logical operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2 TYPE ( IM ) MIM1,MIM2 NCASE = 166 IF (.NOT.(I1.LE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 167 IF (.NOT.(I1.LE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 168 IF (.NOT.(R1.LE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 169 IF (.NOT.(R1.LE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 170 IF (.NOT.(D1.LE.MFM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 171 IF (.NOT.(D1.LE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 172 IF (MFM1.LE.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 173 IF (MFM1.LE.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 174 IF (MFM1.LE.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 175 IF (MFM1.LE.MFM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 176 IF (.NOT.(MFM1.LE.MIM1)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 177 IF (MIM1.LE.I1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 178 IF (MIM1.LE.R1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 179 IF (MIM1.LE.D1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 180 IF (MIM1.LE.MFM1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 181 IF (MIM1.LE.MIM2) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST8(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '+' arithmetic operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1,RSMALL DOUBLE PRECISION D1,DSMALL COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM2,MZM3,MZM4 RSMALL = EPSILON(1.0)*100.0 DSMALL = EPSILON(1.0D0)*100.0 NCASE = 182 MFM3 = I1 + MFM1 CALL FM_ST2M('131',MFM4) CALL FM_ADD(MFM4,MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 183 MIM3 = I1 + MIM1 CALL IM_ST2M('131',MIM4) CALL IM_ADD(MIM4,MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 184 MZM3 = I1 + MZM1 CALL ZM_ST2M('131',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 185 MFM3 = R1 + MFM1 CALL FM_ST2M('241.21',MFM4) CALL FM_ADD(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 186 CALL FM_ST2M('241.21',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_ADD(MFM4,MFM3,MFM4) MFM3 = R1 + MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 187 MZM3 = R1 + MZM1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 188 MFM3 = D1 + MFM1 CALL FM_ST2M('391.61',MFM4) CALL FM_ADD(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 189 CALL FM_ST2M('391.61',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_ADD(MFM4,MFM3,MFM4) MFM3 = D1 + MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 190 MZM3 = D1 + MZM1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 191 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = Z1 + MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 192 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = Z1 + MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 193 MZM3 = Z1 + MZM1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 194 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = C1 + MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 195 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = C1 + MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 196 MZM3 = C1 + MZM1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 197 MFM3 = MFM1 + I1 CALL FM_ST2M('131',MFM4) CALL FM_ADD(MFM1,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 198 MFM3 = MFM1 + R1 CALL FM_ST2M('241.21',MFM4) CALL FM_ADD(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 199 MFM3 = MFM1 + D1 CALL FM_ST2M('391.61',MFM4) CALL FM_ADD(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 200 CALL ZM_ST2M('581.21',MZM3) CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ADD(MZM3,MZM4,MZM4) MZM3 = MFM1 + Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 201 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('581.21',MZM4) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = MFM1 + C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 202 MFM3 = MFM1 + MFM2 CALL FM_ADD(MFM1,MFM2,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 203 MFM3 = MFM1 + MIM1 CALL FM_ST2M('661',MFM4) CALL FM_ADD(MFM1,MFM4,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 204 MZM3 = MFM1 + MZM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 205 MIM3 = MIM1 + I1 CALL IM_ST2M('131',MIM4) CALL IM_ADD(MIM1,MIM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 206 CALL FM_ST2M('241.21',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_ADD(MFM4,MFM3,MFM4) MFM3 = MIM1 + R1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 207 CALL FM_ST2M('391.61',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_ADD(MFM4,MFM3,MFM4) MFM3 = MIM1 + D1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 208 CALL ZM_ST2M('411.11 + 421.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = MIM1 + Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 209 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_ADD(MZM4,MZM3,MZM4) MZM3 = MIM1 + C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 210 MFM3 = MIM1 + MFM1 CALL FM_ST2M('661',MFM4) CALL FM_ADD(MFM4,MFM1,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 211 MIM3 = MIM1 + MIM2 CALL IM_ADD(MIM1,MIM2,MIM4) IF (MIM4.NE.MIM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 212 MZM3 = MIM1 + MZM1 CALL ZM_ST2M('661',MZM4) CALL ZM_ADD(MZM4,MZM1,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 213 MZM3 = MZM1 + I1 CALL ZM_ST2M('131',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 214 MZM3 = MZM1 + R1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 215 MZM3 = MZM1 + D1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 216 MZM3 = MZM1 + Z1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 217 MZM3 = MZM1 + C1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 218 MZM3 = MZM1 + MFM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 219 MZM3 = MZM1 + MIM1 CALL ZM_ST2M('661',MZM4) CALL ZM_ADD(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 220 MZM3 = MZM1 + MZM2 CALL ZM_ADD(MZM1,MZM2,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 221 MFM3 = +MFM1 CALL FM_EQ(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 222 MIM3 = +MIM1 CALL IM_EQ(MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 223 MZM3 = +MZM1 CALL ZM_EQ(MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST9(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '-' arithmetic operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1,RSMALL DOUBLE PRECISION D1,DSMALL COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM2,MZM3,MZM4 RSMALL = EPSILON(1.0)*100.0 DSMALL = EPSILON(1.0D0)*100.0 NCASE = 224 MFM3 = I1 - MFM1 CALL FM_ST2M('131',MFM4) CALL FM_SUB(MFM4,MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 225 MIM3 = I1 - MIM1 CALL IM_ST2M('131',MIM4) CALL IM_SUB(MIM4,MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 226 MZM3 = I1 - MZM1 CALL ZM_ST2M('131',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 227 MFM3 = R1 - MFM1 CALL FM_ST2M('241.21',MFM4) CALL FM_SUB(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 228 CALL FM_ST2M('241.21',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_SUB(MFM4,MFM3,MFM4) MFM3 = R1 - MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 229 MZM3 = R1 - MZM1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 230 MFM3 = D1 - MFM1 CALL FM_ST2M('391.61',MFM4) CALL FM_SUB(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 231 CALL FM_ST2M('391.61',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_SUB(MFM4,MFM3,MFM4) MFM3 = D1 - MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 232 MZM3 = D1 - MZM1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 233 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = Z1 - MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 234 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = Z1 - MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 235 MZM3 = Z1 - MZM1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 236 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = C1 - MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 237 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = C1 - MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 238 MZM3 = C1 - MZM1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 239 MFM3 = MFM1 - I1 CALL FM_ST2M('131',MFM4) CALL FM_SUB(MFM1,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 240 MFM3 = MFM1 - R1 CALL FM_ST2M('241.21',MFM4) CALL FM_SUB(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 241 MFM3 = MFM1 - D1 CALL FM_ST2M('391.61',MFM4) CALL FM_SUB(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 242 CALL ZM_ST2M('581.21',MZM3) CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) MZM3 = MFM1 - Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 243 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('581.21',MZM4) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = MFM1 - C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 244 MFM3 = MFM1 - MFM2 CALL FM_SUB(MFM1,MFM2,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 245 MFM3 = MFM1 - MIM1 CALL FM_ST2M('661',MFM4) CALL FM_SUB(MFM1,MFM4,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 246 MZM3 = MFM1 - MZM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 247 MIM3 = MIM1 - I1 CALL IM_ST2M('131',MIM4) CALL IM_SUB(MIM1,MIM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 248 CALL FM_ST2M('241.21',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_SUB(MFM4,MFM3,MFM4) MFM3 = MIM1 - R1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 249 CALL FM_ST2M('391.61',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_SUB(MFM4,MFM3,MFM4) MFM3 = MIM1 - D1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 250 CALL ZM_ST2M('411.11 + 421.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = MIM1 - Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 251 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_SUB(MZM4,MZM3,MZM4) MZM3 = MIM1 - C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 252 MFM3 = MIM1 - MFM1 CALL FM_ST2M('661',MFM4) CALL FM_SUB(MFM4,MFM1,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 253 MIM3 = MIM1 - MIM2 CALL IM_SUB(MIM1,MIM2,MIM4) IF (MIM4.NE.MIM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 254 MZM3 = MIM1 - MZM1 CALL ZM_ST2M('661',MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 255 MZM3 = MZM1 - I1 CALL ZM_ST2M('131',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 256 MZM3 = MZM1 - R1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 257 MZM3 = MZM1 - D1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 258 MZM3 = MZM1 - Z1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 259 MZM3 = MZM1 - C1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 260 MZM3 = MZM1 - MFM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 261 MZM3 = MZM1 - MIM1 CALL ZM_ST2M('661',MZM4) CALL ZM_SUB(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 262 MZM3 = MZM1 - MZM2 CALL ZM_SUB(MZM1,MZM2,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 263 MFM3 = -MFM1 CALL FM_I2M(0,MFM4) CALL FM_SUB(MFM4,MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 264 MIM3 = -MIM1 CALL IM_I2M(0,MIM4) CALL IM_SUB(MIM4,MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 265 MZM3 = -MZM1 CALL ZM_I2M(0,MZM4) CALL ZM_SUB(MZM4,MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST10(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3, & MZM4,NERROR,NCASE,KLOG) ! Test the '*' arithmetic operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1,RSMALL DOUBLE PRECISION D1,DSMALL COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM2,MZM3,MZM4 RSMALL = EPSILON(1.0)*100.0 DSMALL = EPSILON(1.0D0)*100.0 NCASE = 266 MFM3 = I1 * MFM1 CALL FM_ST2M('131',MFM4) CALL FM_MPY(MFM4,MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 267 MIM3 = I1 * MIM1 CALL IM_ST2M('131',MIM4) CALL IM_MPY(MIM4,MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 268 MZM3 = I1 * MZM1 CALL ZM_ST2M('131',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 269 MFM3 = R1 * MFM1 CALL FM_ST2M('241.21',MFM4) CALL FM_MPY(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 270 CALL FM_ST2M('241.21',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_MPY(MFM4,MFM3,MFM4) MFM3 = R1 * MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 271 MZM3 = R1 * MZM1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 272 MFM3 = D1 * MFM1 CALL FM_ST2M('391.61',MFM4) CALL FM_MPY(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 273 CALL FM_ST2M('391.61',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_MPY(MFM4,MFM3,MFM4) MFM3 = D1 * MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 274 MZM3 = D1 * MZM1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 275 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = Z1 * MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 276 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = Z1 * MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 277 MZM3 = Z1 * MZM1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 278 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = C1 * MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 279 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = C1 * MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 280 MZM3 = C1 * MZM1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 281 MFM3 = MFM1 * I1 CALL FM_ST2M('131',MFM4) CALL FM_MPY(MFM1,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 282 MFM3 = MFM1 * R1 CALL FM_ST2M('241.21',MFM4) CALL FM_MPY(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 283 MFM3 = MFM1 * D1 CALL FM_ST2M('391.61',MFM4) CALL FM_MPY(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 284 CALL ZM_ST2M('581.21',MZM3) CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_MPY(MZM3,MZM4,MZM4) MZM3 = MFM1 * Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 285 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('581.21',MZM4) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = MFM1 * C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 286 MFM3 = MFM1 * MFM2 CALL FM_MPY(MFM1,MFM2,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 287 MFM3 = MFM1 * MIM1 CALL FM_ST2M('661',MFM4) CALL FM_MPY(MFM1,MFM4,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 288 MZM3 = MFM1 * MZM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 289 MIM3 = MIM1 * I1 CALL IM_ST2M('131',MIM4) CALL IM_MPY(MIM1,MIM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 290 CALL FM_ST2M('241.21',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_MPY(MFM4,MFM3,MFM4) MFM3 = MIM1 * R1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 291 CALL FM_ST2M('391.61',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_MPY(MFM4,MFM3,MFM4) MFM3 = MIM1 * D1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 292 CALL ZM_ST2M('411.11 + 421.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = MIM1 * Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 293 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_MPY(MZM4,MZM3,MZM4) MZM3 = MIM1 * C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 294 MFM3 = MIM1 * MFM1 CALL FM_ST2M('661',MFM4) CALL FM_MPY(MFM4,MFM1,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 295 MIM3 = MIM1 * MIM2 CALL IM_MPY(MIM1,MIM2,MIM4) IF (MIM4.NE.MIM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 296 MZM3 = MIM1 * MZM1 CALL ZM_ST2M('661',MZM4) CALL ZM_MPY(MZM4,MZM1,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 297 MZM3 = MZM1 * I1 CALL ZM_ST2M('131',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 298 MZM3 = MZM1 * R1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 299 MZM3 = MZM1 * D1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 300 MZM3 = MZM1 * Z1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 301 MZM3 = MZM1 * C1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 302 MZM3 = MZM1 * MFM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 303 MZM3 = MZM1 * MIM1 CALL ZM_ST2M('661',MZM4) CALL ZM_MPY(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 304 MZM3 = MZM1 * MZM2 CALL ZM_MPY(MZM1,MZM2,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST11(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '/' arithmetic operator. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1,RSMALL DOUBLE PRECISION D1,DSMALL COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM2,MZM3,MZM4 RSMALL = EPSILON(1.0)*100.0 DSMALL = EPSILON(1.0D0)*100.0 NCASE = 305 MFM3 = I1 / MFM1 CALL FM_ST2M('131',MFM4) CALL FM_DIV(MFM4,MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 306 MIM3 = I1 / MIM1 CALL IM_ST2M('131',MIM4) CALL IM_DIV(MIM4,MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 307 MZM3 = I1 / MZM1 CALL ZM_ST2M('131',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 308 MFM3 = R1 / MFM1 CALL FM_ST2M('241.21',MFM4) CALL FM_DIV(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 309 CALL FM_ST2M('241.21',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_DIV(MFM4,MFM3,MFM4) MFM3 = R1 / MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 310 MZM3 = R1 / MZM1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 311 MFM3 = D1 / MFM1 CALL FM_ST2M('391.61',MFM4) CALL FM_DIV(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 312 CALL FM_ST2M('391.61',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_DIV(MFM4,MFM3,MFM4) MFM3 = D1 / MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 313 MZM3 = D1 / MZM1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 314 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = Z1 / MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 315 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = Z1 / MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 316 MZM3 = Z1 / MZM1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 317 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = C1 / MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 318 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = C1 / MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 319 MZM3 = C1 / MZM1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 320 MFM3 = MFM1 / I1 CALL FM_ST2M('131',MFM4) CALL FM_DIV(MFM1,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 321 MFM3 = MFM1 / R1 CALL FM_ST2M('241.21',MFM4) CALL FM_DIV(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 322 MFM3 = MFM1 / D1 CALL FM_ST2M('391.61',MFM4) CALL FM_DIV(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 323 CALL ZM_ST2M('581.21',MZM3) CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_DIV(MZM3,MZM4,MZM4) MZM3 = MFM1 / Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 324 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('581.21',MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = MFM1 / C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 325 MFM3 = MFM1 / MFM2 CALL FM_DIV(MFM1,MFM2,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 326 MFM3 = MFM1 / MIM1 CALL FM_ST2M('661',MFM4) CALL FM_DIV(MFM1,MFM4,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 327 MZM3 = MFM1 / MZM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 328 MIM3 = MIM1 / I1 CALL IM_ST2M('131',MIM4) CALL IM_DIV(MIM1,MIM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 329 CALL FM_ST2M('241.21',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) MFM3 = MIM1 / R1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 330 CALL FM_ST2M('391.61',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) MFM3 = MIM1 / D1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 331 CALL ZM_ST2M('411.11 + 421.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = MIM1 / Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 332 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) MZM3 = MIM1 / C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 333 MFM3 = MIM1 / MFM1 CALL FM_ST2M('661',MFM4) CALL FM_DIV(MFM4,MFM1,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 334 MIM3 = MIM1 / MIM2 CALL IM_DIV(MIM1,MIM2,MIM4) IF (MIM4.NE.MIM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 335 MZM3 = MIM1 / MZM1 CALL ZM_ST2M('661',MZM4) CALL ZM_DIV(MZM4,MZM1,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 336 MZM3 = MZM1 / I1 CALL ZM_ST2M('131',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 337 MZM3 = MZM1 / R1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 338 MZM3 = MZM1 / D1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 339 MZM3 = MZM1 / Z1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 340 MZM3 = MZM1 / C1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 341 MZM3 = MZM1 / MFM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 342 MZM3 = MZM1 / MIM1 CALL ZM_ST2M('661',MZM4) CALL ZM_DIV(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 343 MZM3 = MZM1 / MZM2 CALL ZM_DIV(MZM1,MZM2,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST12(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM2,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the '**' arithmetic operator. USE FMZM IMPLICIT NONE INTEGER I1,I3,KLOG,NERROR,NCASE REAL R1,RSMALL DOUBLE PRECISION D1,DSMALL COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM2,MZM3,MZM4 ! Use a larger error tolerance for large exponents. RSMALL = EPSILON(1.0)*10000.0 DSMALL = EPSILON(1.0D0)*10000.0 NCASE = 344 MFM3 = I1 ** MFM1 CALL FM_ST2M('131',MFM4) CALL FM_PWR(MFM4,MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 345 I3 = 13 MIM3 = I3 ** MIM1 CALL IM_ST2M('13',MIM4) CALL IM_PWR(MIM4,MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 346 MZM3 = I1 ** MZM1 CALL ZM_ST2M('131',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 347 MFM3 = R1 ** MFM1 CALL FM_ST2M('241.21',MFM4) CALL FM_PWR(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 348 CALL FM_ST2M('241.21',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_PWR(MFM4,MFM3,MFM4) MFM3 = R1 ** MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 349 MZM3 = R1 ** MZM1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 350 MFM3 = D1 ** MFM1 CALL FM_ST2M('391.61',MFM4) CALL FM_PWR(MFM4,MFM1,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 351 CALL FM_ST2M('391.61',MFM4) CALL FM_ST2M('661',MFM3) CALL FM_PWR(MFM4,MFM3,MFM4) MFM3 = D1 ** MIM1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 352 MZM3 = D1 ** MZM1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 353 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = Z1 ** MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 354 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = Z1 ** MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 355 MZM3 = Z1 ** MZM1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 356 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('581.21',MZM3) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = C1 ** MFM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 357 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_ST2M('661',MZM3) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = C1 ** MIM1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 358 MZM3 = C1 ** MZM1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 359 MFM3 = MFM1 ** I1 CALL FM_ST2M('131',MFM4) CALL FM_PWR(MFM1,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 360 MFM3 = MFM1 ** R1 CALL FM_ST2M('241.21',MFM4) CALL FM_PWR(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 361 MFM3 = MFM1 ** D1 CALL FM_ST2M('391.61',MFM4) CALL FM_PWR(MFM1,MFM4,MFM4) CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 362 CALL ZM_ST2M('581.21',MZM3) CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_PWR(MZM3,MZM4,MZM4) MZM3 = MFM1 ** Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 363 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('581.21',MZM4) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = MFM1 ** C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 364 MFM3 = MFM1 ** MFM2 CALL FM_PWR(MFM1,MFM2,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 365 MFM3 = MFM1 ** MIM1 CALL FM_ST2M('661',MFM4) CALL FM_PWR(MFM1,MFM4,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 366 MZM3 = MFM1 ** MZM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 367 I3 = 17 MIM3 = MIM1 ** I3 CALL IM_ST2M('17',MIM4) CALL IM_PWR(MIM1,MIM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 368 CALL FM_ST2M('241.21',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_PWR(MFM4,MFM3,MFM4) MFM3 = MIM1 ** R1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 369 CALL FM_ST2M('391.61',MFM3) CALL FM_ST2M('661',MFM4) CALL FM_PWR(MFM4,MFM3,MFM4) MFM3 = MIM1 ** D1 CALL FM_SUB(MFM3,MFM4,MFM4) CALL FM_DIV(MFM4,MFM3,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 370 CALL ZM_ST2M('411.11 + 421.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = MIM1 ** Z1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 371 CALL ZM_ST2M('431.11 + 441.21 i',MZM3) CALL ZM_ST2M('661',MZM4) CALL ZM_PWR(MZM4,MZM3,MZM4) MZM3 = MIM1 ** C1 CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 372 MFM3 = MIM1 ** MFM1 CALL FM_ST2M('661',MFM4) CALL FM_PWR(MFM4,MFM1,MFM4) IF (MFM4.NE.MFM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 373 MIM4 = 19 MIM3 = MIM1 ** MIM4 CALL IM_PWR(MIM1,MIM4,MIM4) IF (MIM4.NE.MIM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 374 MZM3 = MIM1 ** MZM1 CALL ZM_ST2M('661',MZM4) CALL ZM_PWR(MZM4,MZM1,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 375 MZM3 = MZM1 ** I1 CALL ZM_ST2M('131',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 376 MZM3 = MZM1 ** R1 CALL ZM_ST2M('241.21',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 377 MZM3 = MZM1 ** D1 CALL ZM_ST2M('391.61',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 378 MZM3 = MZM1 ** Z1 CALL ZM_ST2M('411.11 + 421.21 i',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.RSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 379 MZM3 = MZM1 ** C1 CALL ZM_ST2M('431.11 + 441.21 i',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) CALL ZM_SUB(MZM3,MZM4,MZM4) CALL ZM_DIV(MZM4,MZM3,MZM4) CALL ZM_ABS(MZM4,MFM4) IF (MFM4.GT.DSMALL) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 380 MZM3 = MZM1 ** MFM1 CALL ZM_ST2M('581.21',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 381 MZM3 = MZM1 ** MIM1 CALL ZM_ST2M('661',MZM4) CALL ZM_PWR(MZM1,MZM4,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 382 MZM3 = MZM1 ** MZM2 CALL ZM_PWR(MZM1,MZM2,MZM4) IF (MZM4.NE.MZM3) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST13(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions ABS, ..., CEILING. USE FMZM IMPLICIT NONE INTEGER I1,J,JERR,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM3,MZM4 NCASE = 383 MFM3 = ABS(MFM1) CALL FM_ABS(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 384 MIM3 = ABS(MIM1) CALL IM_ABS(MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 385 MFM3 = ABS(MZM1) CALL ZM_ABS(MZM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 386 CALL FM_ST2M('0.7654',MFM4) MFM3 = ACOS(MFM4) CALL FM_ACOS(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 387 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = ACOS(MZM4) CALL ZM_ACOS(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 388 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MFM3 = AIMAG(MZM4) CALL ZM_IMAG(MZM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 389 MFM3 = AINT(MFM1) CALL FM_INT(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 390 MZM3 = AINT(MZM1) CALL ZM_INT(MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 391 MFM3 = ANINT(MFM1) CALL FM_NINT(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 392 MZM3 = ANINT(MZM1) CALL ZM_NINT(MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 393 CALL FM_ST2M('0.7654',MFM4) MFM3 = ASIN(MFM4) CALL FM_ASIN(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 394 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = ASIN(MZM4) CALL ZM_ASIN(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 395 CALL FM_ST2M('0.7654',MFM4) MFM3 = ATAN(MFM4) CALL FM_ATAN(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 396 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = ATAN(MZM4) CALL ZM_ATAN(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 397 MFM3 = ATAN2(MFM1,MFM2) CALL FM_ATN2(MFM1,MFM2,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 398 JERR = -1 DO J = 0, 10 IF (BTEST(661,J)) THEN IF (.NOT.BTEST(MIM1,J)) JERR = J ELSE IF (BTEST(MIM1,J)) JERR = J ENDIF ENDDO IF (JERR.GE.0) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 399 CALL FM_ST2M('12.37654',MFM4) MFM3 = CEILING(MFM4) CALL FM_ST2M('13',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 400 CALL FM_ST2M('-12.7654',MFM4) MFM3 = CEILING(MFM4) CALL FM_ST2M('-12',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 401 CALL ZM_ST2M('12.37654 - 22.54 i',MZM4) MZM3 = CEILING(MZM4) CALL ZM_ST2M('13 - 22 i',MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 402 CALL ZM_ST2M('-12.7654 + 22.31 i',MZM4) MZM3 = CEILING(MZM4) CALL ZM_ST2M('-12 + 23 i',MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST14(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions CMPLX, ..., EXPONENT. USE FMZM IMPLICIT NONE INTEGER I1,J,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4,MFMV1(3),MFMV2(3) TYPE ( IM ) MIM1,MIM2,MIM3,MIM4,MIMV1(3),MIMV2(3) TYPE ( ZM ) MZM1,MZM3,MZM4,MZMV1(3),MZMV2(3) NCASE = 403 MZM3 = CMPLX(MFM1,MFM2) CALL ZM_CMPX(MFM1,MFM2,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 404 MZM3 = CMPLX(MIM1,MIM2) CALL IM_I2FM(MIM1,MFM3) CALL IM_I2FM(MIM2,MFM4) CALL ZM_CMPX(MFM3,MFM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 405 MZM3 = CMPLX(MFM1) CALL FM_I2M(0,MFM4) CALL ZM_CMPX(MFM1,MFM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 406 MZM3 = CMPLX(MIM1) CALL IM_I2FM(MIM1,MFM3) CALL FM_I2M(0,MFM4) CALL ZM_CMPX(MFM3,MFM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 407 MZM3 = CONJG(MZM1) CALL ZM_CONJ(MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 408 CALL FM_ST2M('0.7654',MFM4) MFM3 = COS(MFM4) CALL FM_COS(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 409 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = COS(MZM4) CALL ZM_COS(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 410 CALL FM_ST2M('0.7654',MFM4) MFM3 = COSH(MFM4) CALL FM_COSH(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 411 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = COSH(MZM4) CALL ZM_COSH(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 412 MFM3 = DBLE(MFM1) CALL FM_EQ(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 413 MFM3 = DBLE(MIM1) CALL IM_I2FM(MIM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 414 MFM3 = DBLE(MZM1) CALL ZM_REAL(MZM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 415 J = DIGITS(MFM1) IF (J.NE.NDIG) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 416 J = DIGITS(MIM1) IF (J.NE.NDIGMX) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 417 J = DIGITS(MZM1) IF (J.NE.NDIG) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 418 MFM3 = DIM(MFM1,MFM2) CALL FM_DIM(MFM1,MFM2,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 419 MIM3 = DIM(MIM1,MIM2) CALL IM_DIM(MIM1,MIM2,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 420 MFM3 = DINT(MFM1) CALL FM_INT(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 421 MZM3 = DINT(MZM1) CALL ZM_INT(MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 422 CALL FM_ST2M('1.23',MFMV1(1)) CALL FM_ST2M('2.23',MFMV1(2)) CALL FM_ST2M('3.23',MFMV1(3)) CALL FM_ST2M('4.23',MFMV2(1)) CALL FM_ST2M('5.23',MFMV2(2)) CALL FM_ST2M('6.23',MFMV2(3)) MFM3 = DOTPRODUCT(MFMV1,MFMV2) MFM4 = 0 DO J = 1, 3 MFM4 = MFM4 + MFMV1(J)*MFMV2(J) ENDDO IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 423 CALL IM_ST2M('12',MIMV1(1)) CALL IM_ST2M('23',MIMV1(2)) CALL IM_ST2M('34',MIMV1(3)) CALL IM_ST2M('-14',MIMV2(1)) CALL IM_ST2M('-5',MIMV2(2)) CALL IM_ST2M('16',MIMV2(3)) MIM3 = DOTPRODUCT(MIMV1,MIMV2) MIM4 = 0 DO J = 1, 3 MIM4 = MIM4 + MIMV1(J)*MIMV2(J) ENDDO IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 424 CALL ZM_ST2M('1.23 + 1.67 i',MZMV1(1)) CALL ZM_ST2M('2.23 - 2.56 i',MZMV1(2)) CALL ZM_ST2M('3.23 + 3.45 i',MZMV1(3)) CALL ZM_ST2M('4.23 - 4.34 i',MZMV2(1)) CALL ZM_ST2M('5.23 + 5.23 i',MZMV2(2)) CALL ZM_ST2M('6.23 - 6.12 i',MZMV2(3)) MZM3 = DOTPRODUCT(MZMV1,MZMV2) MZM4 = 0 DO J = 1, 3 MZM4 = MZM4 + MZMV1(J)*MZMV2(J) ENDDO IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 425 MFM3 = EPSILON(MFM1) CALL FM_I2M(1,MFM4) CALL FM_ULP(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 426 CALL FM_ST2M('0.7654',MFM4) MFM3 = EXP(MFM4) CALL FM_EXP(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 427 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = EXP(MZM4) CALL ZM_EXP(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 428 J = EXPONENT(MFM1) IF (J.NE.INT(MFM1%MFM(1))) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST15(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions FLOOR, ..., MIN. USE FMZM IMPLICIT NONE INTEGER I,I1,J,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4,MFMA(3,3),MFMB(3,3),MFMC(3,3) TYPE ( IM ) MIM1,MIM2,MIM3,MIM4,MIMA(2,2),MIMB(2,2),MIMC(2,2) TYPE ( ZM ) MZM1,MZM3,MZM4,MZMA(2,3),MZMB(3,4),MZMC(2,4) NCASE = 429 CALL FM_ST2M('12.37654',MFM4) MFM3 = FLOOR(MFM4) CALL FM_ST2M('12',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 430 CALL FM_ST2M('-12.7654',MFM4) MFM3 = FLOOR(MFM4) CALL FM_ST2M('-13',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 431 CALL IM_ST2M('12',MIM4) MIM3 = FLOOR(MIM4) CALL IM_ST2M('12',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 432 CALL IM_ST2M('-123',MIM4) MIM3 = FLOOR(MIM4) CALL IM_ST2M('-123',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 433 CALL ZM_ST2M('12.37654 - 22.54 i',MZM4) MZM3 = FLOOR(MZM4) CALL ZM_ST2M('12 - 23 i',MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 434 CALL ZM_ST2M('-12.7654 + 22.31 i',MZM4) MZM3 = FLOOR(MZM4) CALL ZM_ST2M('-13 + 22 i',MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 435 CALL FM_ST2M('12.37654',MFM4) MFM3 = FRACTION(MFM4) MFM4%MFM(1) = 0 IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 436 CALL ZM_ST2M('12.37654 - 22.54',MZM4) MZM3 = FRACTION(MZM4) MZM4%MZM(1) = 0 MZM4%MZM(KPTIMU+1) = 0 IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 437 MFM3 = HUGE(MFM1) CALL FM_BIG(MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 438 MIM3 = HUGE(MIM1) CALL IM_BIG(MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 439 MZM3 = HUGE(MZM1) CALL FM_BIG(MFM4) CALL ZM_CMPX(MFM4,MFM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 440 MIM3 = INT(MFM1) CALL FM_INT(MFM1,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 441 MIM3 = INT(MIM1) CALL IM_EQ(MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 442 MIM3 = INT(MZM1) CALL ZM_INT(MZM1,MZM4) CALL ZM_REAL(MZM4,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 443 CALL FM_ST2M('0.7654',MFM4) MFM3 = LOG(MFM4) CALL FM_LN(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 444 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = LOG(MZM4) CALL ZM_LN(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 445 CALL FM_ST2M('0.7654',MFM4) MFM3 = LOG10(MFM4) CALL FM_LG10(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 446 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = LOG10(MZM4) CALL ZM_LG10(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 447 DO I = 1, 3 DO J = 1, 3 MFMA(I,J) = 3*(J-1) + I MFMB(I,J) = 3*(I-1) + J + 10 ENDDO ENDDO MFMC = MATMUL(MFMA,MFMB) MFM3 = ABS(MFMC(1,1)-186)+ABS(MFMC(1,2)-198)+ABS(MFMC(1,3)-210)+ & ABS(MFMC(2,1)-228)+ABS(MFMC(2,2)-243)+ABS(MFMC(2,3)-258)+ & ABS(MFMC(3,1)-270)+ABS(MFMC(3,2)-288)+ABS(MFMC(3,3)-306) IF (MFM3.NE.0) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 448 DO I = 1, 2 DO J = 1, 2 MIMA(I,J) = 2*(J-1) + I + 20 MIMB(I,J) = 2*(I-1) + J + 30 ENDDO ENDDO MIMC = MATMUL(MIMA,MIMB) MIM3 = ABS(MIMC(1,1)-1410) + ABS(MIMC(1,2)-1454) + & ABS(MIMC(2,1)-1474) + ABS(MIMC(2,2)-1520) IF (MIM3.NE.0) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 449 DO I = 1, 2 DO J = 1, 3 MZMA(I,J) = CMPLX(TO_FM(2*(J-1)+I+10),TO_FM(2*(J-1)+I+20)) ENDDO ENDDO DO I = 1, 3 DO J = 1, 4 MZMB(I,J) = CMPLX(TO_FM(4*(I-1)+J+50),TO_FM(4*(I-1)+J+30)) ENDDO ENDDO MZMC = MATMUL(MZMA,MZMB) MFM3 = ABS(MZMC(1,1)-TO_ZM('-270 + 5192 i')) + & ABS(MZMC(1,2)-TO_ZM('-300 + 5300 i')) + & ABS(MZMC(1,3)-TO_ZM('-330 + 5408 i')) + & ABS(MZMC(1,4)-TO_ZM('-360 + 5516 i')) + & ABS(MZMC(2,1)-TO_ZM('-210 + 5462 i')) + & ABS(MZMC(2,2)-TO_ZM('-240 + 5576 i')) + & ABS(MZMC(2,3)-TO_ZM('-270 + 5690 i')) + & ABS(MZMC(2,4)-TO_ZM('-300 + 5804 i')) IF (MFM3.NE.0) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 450 MFM3 = MAX(MFM1,MFM2) CALL FM_MAX(MFM1,MFM2,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 451 CALL FM_ST2M('0.7654',MFM4) MFM3 = MAX(MFM2,MFM1,MFM4) CALL FM_MAX(MFM1,MFM4,MFM4) CALL FM_MAX(MFM2,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 452 MIM3 = MAX(MIM1,MIM2) CALL IM_MAX(MIM1,MIM2,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 453 CALL IM_ST2M('7654',MIM4) CALL IM_ST2M('-1654',MIM3) MIM3 = MAX(MIM2,MIM1,MIM3,MIM4) CALL IM_ST2M('7654',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 454 J = MAXEXPONENT(MFM1) IF (J.NE.INT(MXEXP)+1) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 455 MFM3 = MIN(MFM1,MFM2) CALL FM_MIN(MFM1,MFM2,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 456 CALL FM_ST2M('0.7654',MFM4) MFM3 = MIN(MFM2,MFM1,MFM4) CALL FM_MIN(MFM1,MFM4,MFM4) CALL FM_MIN(MFM2,MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 457 MIM3 = MIN(MIM1,MIM2) CALL IM_MIN(MIM1,MIM2,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 458 CALL IM_ST2M('7654',MIM4) CALL IM_ST2M('-1654',MIM3) MIM3 = MIN(MIM2,MIM1,MIM3,MIM4) CALL IM_ST2M('-1654',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST16(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions MINEXPONENT, ..., RRSPACING. USE FMZM IMPLICIT NONE INTEGER I1,J,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM3,MFM4,MFM5 TYPE ( IM ) MIM1,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM3,MZM4 NCASE = 459 J = MINEXPONENT(MFM1) IF (J.NE.-INT(MXEXP)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 460 CALL FM_ST2M('8',MFM3) CALL FM_ST2M('5',MFM4) MFM3 = MOD(MFM3,MFM4) CALL FM_ST2M('3',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 461 CALL FM_ST2M('-8',MFM3) CALL FM_ST2M('5',MFM4) MFM3 = MOD(MFM3,MFM4) CALL FM_ST2M('-3',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 462 CALL FM_ST2M('8',MFM3) CALL FM_ST2M('-5',MFM4) MFM3 = MOD(MFM3,MFM4) CALL FM_ST2M('3',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 463 CALL FM_ST2M('-8',MFM3) CALL FM_ST2M('-5',MFM4) MFM3 = MOD(MFM3,MFM4) CALL FM_ST2M('-3',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 464 CALL IM_ST2M('8',MIM3) CALL IM_ST2M('5',MIM4) MIM3 = MOD(MIM3,MIM4) CALL IM_ST2M('3',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 465 CALL IM_ST2M('-8',MIM3) CALL IM_ST2M('5',MIM4) MIM3 = MOD(MIM3,MIM4) CALL IM_ST2M('-3',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 466 CALL IM_ST2M('8',MIM3) CALL IM_ST2M('-5',MIM4) MIM3 = MOD(MIM3,MIM4) CALL IM_ST2M('3',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 467 CALL IM_ST2M('-8',MIM3) CALL IM_ST2M('-5',MIM4) MIM3 = MOD(MIM3,MIM4) CALL IM_ST2M('-3',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 468 CALL FM_ST2M('8',MFM3) CALL FM_ST2M('5',MFM4) MFM3 = MODULO(MFM3,MFM4) CALL FM_ST2M('3',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 469 CALL FM_ST2M('-8',MFM3) CALL FM_ST2M('5',MFM4) MFM3 = MODULO(MFM3,MFM4) CALL FM_ST2M('2',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 470 CALL FM_ST2M('8',MFM3) CALL FM_ST2M('-5',MFM4) MFM3 = MODULO(MFM3,MFM4) CALL FM_ST2M('-2',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 471 CALL FM_ST2M('-8',MFM3) CALL FM_ST2M('-5',MFM4) MFM3 = MODULO(MFM3,MFM4) CALL FM_ST2M('-3',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 472 CALL IM_ST2M('8',MIM3) CALL IM_ST2M('5',MIM4) MIM3 = MODULO(MIM3,MIM4) CALL IM_ST2M('3',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 473 CALL IM_ST2M('-8',MIM3) CALL IM_ST2M('5',MIM4) MIM3 = MODULO(MIM3,MIM4) CALL IM_ST2M('2',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 474 CALL IM_ST2M('8',MIM3) CALL IM_ST2M('-5',MIM4) MIM3 = MODULO(MIM3,MIM4) CALL IM_ST2M('-2',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 475 CALL IM_ST2M('-8',MIM3) CALL IM_ST2M('-5',MIM4) MIM3 = MODULO(MIM3,MIM4) CALL IM_ST2M('-3',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 476 CALL FM_ST2M('0',MFM4) CALL FM_ST2M('1',MFM3) CALL FM_BIG(MFM5) CALL FM_DIV(MFM3,MFM5,MFM5) MFM3 = NEAREST(MFM4,MFM3) IF (MFM3.NE.MFM5) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 477 CALL FM_ST2M('0',MFM4) CALL FM_ST2M('-1',MFM3) CALL FM_BIG(MFM5) CALL FM_DIV(MFM3,MFM5,MFM5) MFM3 = NEAREST(MFM4,MFM3) IF (MFM3.NE.MFM5) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 478 CALL FM_ST2M('2.345',MFM4) CALL FM_ST2M('1',MFM3) MFM3 = NEAREST(MFM4,MFM3) CALL FM_ULP(MFM4,MFM5) CALL FM_ADD(MFM4,MFM5,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 479 CALL FM_ST2M('2.345',MFM4) CALL FM_ST2M('-1',MFM3) MFM3 = NEAREST(MFM4,MFM3) CALL FM_ULP(MFM4,MFM5) CALL FM_SUB(MFM4,MFM5,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 480 CALL FM_ST2M('1',MFM4) CALL FM_ST2M('-1',MFM3) MFM3 = NEAREST(MFM4,MFM3) CALL FM_ST2M('0.99',MFM5) CALL FM_ULP(MFM5,MFM5) CALL FM_SUB(MFM4,MFM5,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 481 CALL FM_ST2M('-1',MFM4) CALL FM_ST2M('12',MFM3) MFM3 = NEAREST(MFM4,MFM3) CALL FM_ST2M('-0.99',MFM5) CALL FM_ULP(MFM5,MFM5) CALL FM_SUB(MFM4,MFM5,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 482 MIM3 = NINT(MFM1) CALL FM_NINT(MFM1,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 483 MIM3 = NINT(MIM1) CALL IM_EQ(MIM1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 484 MIM3 = NINT(MZM1) CALL ZM_NINT(MZM1,MZM4) CALL ZM_REAL(MZM4,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 485 J = PRECISION(MFM1) IF (J.NE.INT(LOG10(REAL(MBASE))*(NDIG-1) + 1)) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 486 J = PRECISION(MZM1) IF (J.NE.INT(LOG10(REAL(MBASE))*(NDIG-1) + 1)) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 487 J = RADIX(MFM1) IF (J.NE.INT(MBASE)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 488 J = RADIX(MIM1) IF (J.NE.INT(MBASE)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 489 J = RADIX(MZM1) IF (J.NE.INT(MBASE)) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 490 J = RANGE(MFM1) IF (J.NE.INT(MXEXP*LOG10(MBASE))) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 491 J = RANGE(MIM1) IF (J.NE.INT(NDIGMX*LOG10(MBASE))) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 492 J = RANGE(MZM1) IF (J.NE.INT(MXEXP*LOG10(MBASE))) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 493 MFM3 = REAL(MFM1) CALL FM_EQ(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 494 MFM3 = REAL(MIM1) CALL IM_I2FM(MIM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 495 MFM3 = REAL(MZM1) CALL ZM_REAL(MZM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 496 MFM3 = RRSPACING(MFM1) CALL FM_ABS(MFM1,MFM4) MFM4%MFM(1) = NDIG IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST17(I1,R1,D1,Z1,C1,MFM1,MFM2,MFM3,MFM4, & MIM1,MIM2,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions SCALE, ..., TINY. USE FMZM IMPLICIT NONE INTEGER I1,KLOG,NERROR,NCASE REAL R1 DOUBLE PRECISION D1 COMPLEX Z1 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM2,MFM3,MFM4 TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM3,MZM4 NCASE = 497 CALL FM_ST2M('0.7654',MFM4) MFM3 = SCALE(MFM4,1) CALL FM_MPYI(MFM4,INT(MBASE),MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 498 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = SCALE(MZM4,-2) CALL ZM_DIVI(MZM4,INT(MBASE),MZM4) CALL ZM_DIVI(MZM4,INT(MBASE),MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 499 CALL FM_ST2M('0.7654',MFM4) MFM3 = SETEXPONENT(MFM4,1) CALL FM_MPYI(MFM4,INT(MBASE),MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 500 CALL FM_ST2M('0.7654',MFM4) MFM3 = SIGN(MFM4,MFM2) CALL FM_SIGN(MFM4,MFM2,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 501 CALL IM_ST2M('231',MIM4) MIM3 = SIGN(MIM4,MIM2) CALL IM_SIGN(MIM4,MIM2,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 502 CALL FM_ST2M('0.7654',MFM4) MFM3 = SIN(MFM4) CALL FM_SIN(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 503 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = SIN(MZM4) CALL ZM_SIN(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 504 CALL FM_ST2M('0.7654',MFM4) MFM3 = SINH(MFM4) CALL FM_SINH(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 505 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = SINH(MZM4) CALL ZM_SINH(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 506 CALL FM_ST2M('-0.7654',MFM4) MFM3 = SPACING(MFM4) CALL FM_ULP(MFM4,MFM4) CALL FM_ABS(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 507 CALL FM_ST2M('0.7654',MFM4) MFM3 = SQRT(MFM4) CALL FM_SQRT(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 508 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = SQRT(MZM4) CALL ZM_SQRT(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 509 CALL FM_ST2M('0.7654',MFM4) MFM3 = TAN(MFM4) CALL FM_TAN(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 510 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = TAN(MZM4) CALL ZM_TAN(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 511 CALL FM_ST2M('0.7654',MFM4) MFM3 = TANH(MFM4) CALL FM_TANH(MFM4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 512 CALL ZM_ST2M('0.7654 - 0.3456 i',MZM4) MZM3 = TANH(MZM4) CALL ZM_TANH(MZM4,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 513 CALL FM_BIG(MFM4) CALL FM_I2M(1,MFM3) CALL FM_DIV(MFM3,MFM4,MFM4) MFM3 = TINY(MFM1) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 514 MIM3 = TINY(MIM1) CALL IM_I2M(1,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 515 CALL FM_BIG(MFM4) CALL FM_I2M(1,MFM3) CALL FM_DIV(MFM3,MFM4,MFM4) CALL ZM_CMPX(MFM4,MFM4,MZM4) MZM3 = TINY(MZM1) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST18(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test functions TO_FM, TO_IM, TO_ZM, ..., TO_DPZ. USE FMZM IMPLICIT NONE INTEGER I1,I2,KLOG,NERROR,NCASE REAL R1,R2 DOUBLE PRECISION D1,D2,D3 COMPLEX Z1,Z2 COMPLEX (KIND(0.0D0)) :: C1,C2 TYPE ( FM ) MFM1,MFM3,MFM4,MFM5 TYPE ( IM ) MIM1,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM3,MZM4 NCASE = 516 MFM3 = TO_FM(123) CALL FM_I2M(123,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 517 MFM3 = TO_FM(123.4) CALL FM_SP2M(123.4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 518 MFM3 = TO_FM(123.45D0) CALL FM_DP2M(123.45D0,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 519 MFM3 = TO_FM(CMPLX(123.4,567.8)) CALL FM_SP2M(123.4,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 520 MFM3 = TO_FM(CMPLX(123.4D0,567.8D0,KIND(1.0D0))) CALL FM_DP2M(123.4D0,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 521 MFM3 = TO_FM(MFM1) CALL FM_EQ(MFM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 522 MFM3 = TO_FM(MIM1) CALL IM_I2FM(MIM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 523 MFM3 = TO_FM(MZM1) CALL ZM_REAL(MZM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 524 MFM3 = TO_FM('-123.654') CALL FM_ST2M('-123.654',MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 525 MIM3 = TO_IM(123) CALL IM_I2M(123,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 526 MIM3 = TO_IM(123.4) CALL FM_SP2M(123.4,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 527 MIM3 = TO_IM(123.45D0) CALL FM_DP2M(123.45D0,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 528 MIM3 = TO_IM(CMPLX(123.4,567.8)) CALL FM_SP2M(123.4,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 529 MIM3 = TO_IM(CMPLX(123.4D0,567.8D0,KIND(1.0D0))) CALL FM_DP2M(123.4D0,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 530 MIM3 = TO_IM(MFM1) CALL FM_EQ(MFM1,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 531 MIM3 = TO_IM(MIM1) CALL IM_I2FM(MIM1,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 532 MIM3 = TO_IM(MZM1) CALL ZM_REAL(MZM1,MFM4) CALL IM_FM2I(MFM4,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 533 MIM3 = TO_IM('-123654') CALL IM_ST2M('-123654',MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 534 MZM3 = TO_ZM(123) CALL ZM_I2M(123,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 535 MZM3 = TO_ZM(123.4) CALL FM_SP2M(123.4,MFM4) CALL FM_I2M(0,MFM5) CALL ZM_CMPX(MFM4,MFM5,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 536 MZM3 = TO_ZM(123.45D0) CALL FM_DP2M(123.45D0,MFM4) CALL FM_I2M(0,MFM5) CALL ZM_CMPX(MFM4,MFM5,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 537 MZM3 = TO_ZM(CMPLX(123.4,567.8)) CALL FM_SP2M(123.4,MFM4) CALL FM_SP2M(567.8,MFM5) CALL ZM_CMPX(MFM4,MFM5,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 538 MZM3 = TO_ZM(CMPLX(123.4D0,567.8D0,KIND(1.0D0))) CALL FM_DP2M(123.4D0,MFM4) CALL FM_DP2M(567.8D0,MFM5) CALL ZM_CMPX(MFM4,MFM5,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 539 MZM3 = TO_ZM(MFM1) CALL FM_EQ(MFM1,MFM4) CALL FM_I2M(0,MFM5) CALL ZM_CMPX(MFM4,MFM5,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 540 MZM3 = TO_ZM(MIM1) CALL IM_I2FM(MIM1,MFM4) CALL FM_I2M(0,MFM5) CALL ZM_CMPX(MFM4,MFM5,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 541 MZM3 = TO_ZM(MZM1) CALL ZM_EQ(MZM1,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 542 MZM3 = TO_ZM('-123.654 + 98.7 i') CALL ZM_ST2M('-123.654 + 98.7 i',MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 543 CALL FM_M2I(MFM1,I2) IF (TO_INT(MFM1).NE.I2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 544 CALL IM_M2I(MIM1,I2) IF (TO_INT(MIM1).NE.I2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 545 CALL ZM_M2I(MZM1,I2) IF (TO_INT(MZM1).NE.I2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 546 CALL FM_M2SP(MFM1,R2) IF (TO_SP(MFM1).NE.R2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 547 CALL IM_M2DP(MIM1,D2) R2 = D2 IF (TO_SP(MIM1).NE.R2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 548 CALL ZM_REAL(MZM1,MFM4) CALL FM_M2SP(MFM4,R2) IF (TO_SP(MZM1).NE.R2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 549 CALL FM_M2DP(MFM1,D2) IF (TO_DP(MFM1).NE.D2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 550 CALL IM_M2DP(MIM1,D2) IF (TO_DP(MIM1).NE.D2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 551 CALL ZM_REAL(MZM1,MFM4) CALL FM_M2DP(MFM4,D2) IF (TO_DP(MZM1).NE.D2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 552 CALL FM_M2SP(MFM1,R2) Z2 = R2 IF (TO_SPZ(MFM1).NE.Z2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 553 CALL IM_M2DP(MIM1,D2) Z2 = D2 IF (TO_SPZ(MIM1).NE.Z2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 554 CALL ZM_M2Z(MZM1,Z2) IF (TO_SPZ(MZM1).NE.Z2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 555 CALL FM_M2DP(MFM1,D2) C2 = D2 IF (TO_DPZ(MFM1).NE.C2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 556 CALL IM_M2DP(MIM1,D2) C2 = D2 IF (TO_DPZ(MIM1).NE.C2) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 557 CALL ZM_REAL(MZM1,MFM4) CALL FM_M2DP(MFM4,D2) CALL ZM_IMAG(MZM1,MFM4) CALL FM_M2DP(MFM4,D3) C2 = CMPLX( D2 , D3 , KIND(0.0D0) ) IF (TO_DPZ(MZM1).NE.C2) CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE TEST19(I1,R1,D1,Z1,C1,MFM1,MFM3,MFM4, & MIM1,MIM3,MIM4,MZM1,MZM3,MZM4, & NERROR,NCASE,KLOG) ! Test the derived-type interface routines that are not ! used elsewhere in this program. USE FMZM IMPLICIT NONE CHARACTER *80 STRING INTEGER I1,I3,I4,KLOG,NERROR,NCASE REAL R1,R3,R4,RSMALL DOUBLE PRECISION D1,D3,D4,DSMALL COMPLEX Z1,Z3,Z4 COMPLEX (KIND(0.0D0)) :: C1 TYPE ( FM ) MFM1,MFM3,MFM4,MFM5,MSMALL TYPE ( IM ) MIM1,MIM2,MIM3,MIM4 TYPE ( ZM ) MZM1,MZM3,MZM4 RSMALL = EPSILON(1.0)*100.0 DSMALL = EPSILON(1.0D0)*100.0 MSMALL = EPSILON(TO_FM(1))*10000.0 NCASE = 558 MFM3 = MFM1 + 123 MFM4 = MFM1 CALL FM_ADDI(MFM4,123) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 559 CALL FM_CHSH(MFM1,MFM4,MFM3) MFM3 = COSH(MFM1) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 560 CALL FM_CHSH(MFM1,MFM3,MFM4) MFM3 = SINH(MFM1) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 561 CALL FM_CSSN(MFM1,MFM4,MFM3) MFM3 = COS(MFM1) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 562 CALL FM_CSSN(MFM1,MFM3,MFM4) MFM3 = SIN(MFM1) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 563 MFM3 = MFM1 / 123 CALL FM_DIVI(MFM1,123,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 564 MFM3 = 123.45D0 CALL FM_DPM(123.45D0,MFM4) IF (ABS((MFM3-MFM4)/MFM4).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 565 CALL FM_FORM('F70.56',MFM1,STRING) CALL FM_ST2M(STRING(1:70),MFM4) IF (ABS((MFM1-MFM4)/MFM4).GT.MSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 566 MFM3 = MFM1 ** 123 CALL FM_IPWR(MFM1,123,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 567 MFM3 = LOG(TO_FM(123)) CALL FM_LNI(123,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 568 D3 = MFM1 CALL FM_M2DP(MFM1,D4) IF (ABS((D3-D4)/D3).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 569 I3 = MFM1 CALL FM_M2I(MFM1,I4) IF (I3.NE.I4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 570 R3 = MFM1 CALL FM_M2SP(MFM1,R4) IF (ABS((R3-R4)/R3).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 571 MFM3 = 2.67 CALL FM_MOD(MFM1,MFM3,MFM4) MFM3 = MOD(MFM1,MFM3) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 572 CALL FM_PI(MFM4) MFM3 = 4*ATAN(TO_FM(1)) IF (ABS((MFM3-MFM4)/MFM4).GT.MSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 573 MFM3 = MFM1 ** (TO_FM(1)/TO_FM(3)) CALL FM_RPWR(MFM1,1,3,MFM4) IF (ABS((MFM3-MFM4)/MFM4).GT.MSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 574 CALL FM_SQR(MFM1,MFM4) MFM3 = MFM1*MFM1 IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 575 MIM3 = MIM1 / 13 CALL IM_DIVI(MIM1,13,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 576 MIM3 = 13 CALL IM_DIVR(MIM1,MIM3,MIM3,MIM4) MIM3 = MOD(MIM1,MIM3) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 577 MIM3 = 13 CALL IM_DIVR(MIM1,MIM3,MIM3,MIM4) MIM4 = MIM1 / 13 IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 578 MIM3 = MIM1 / 13 CALL IM_DVIR(MIM1,13,MIM4,I4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 579 I3 = MOD(MIM1,TO_IM(13)) CALL IM_DVIR(MIM1,13,MIM4,I4) IF (I3.NE.I4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 580 CALL IM_FORM('I70',MIM1,STRING) CALL IM_ST2M(STRING(1:70),MIM4) IF (MIM1.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 581 MIM3 = 40833 MIM4 = 16042 CALL IM_GCD(MIM3,MIM4,MIM4) IF (MIM4.NE.13) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 582 D3 = MIM1 CALL IM_M2DP(MIM1,D4) IF (ABS((D3-D4)/D3).GT.DSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 583 I3 = MIM1 CALL IM_M2I(MIM1,I4) IF (I3.NE.I4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 584 MIM3 = 6 CALL IM_MOD(MIM1,MIM3,MIM4) MIM3 = MOD(MIM1,MIM3) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 585 MIM3 = MIM1 * 123 CALL IM_MPYI(MIM1,123,MIM4) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 586 MIM2 = 3141 MIM3 = 133 CALL IM_MPYM(MIM1,MIM2,MIM3,MIM4) MIM3 = MOD(MIM1*MIM2,MIM3) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 587 MIM2 = 31 MIM3 = 147 CALL IM_PMOD(MIM1,MIM2,MIM3,MIM4) MIM3 = MOD(MIM1**MIM2,MIM3) IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 588 CALL IM_SQR(MIM1,MIM4) MIM3 = MIM1*MIM1 IF (MIM3.NE.MIM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 589 MZM3 = MZM1 + 123 MZM4 = MZM1 CALL ZM_ADDI(MZM4,123) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 590 MFM3 = ATAN2(AIMAG(MZM1),REAL(MZM1)) CALL ZM_ARG(MZM1,MFM4) IF (MFM3.NE.MFM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 591 CALL ZM_CHSH(MZM1,MZM4,MZM3) MZM3 = COSH(MZM1) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 592 CALL ZM_CHSH(MZM1,MZM3,MZM4) MZM3 = SINH(MZM1) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 593 CALL ZM_CSSN(MZM1,MZM4,MZM3) MZM3 = COS(MZM1) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 594 CALL ZM_CSSN(MZM1,MZM3,MZM4) MZM3 = SIN(MZM1) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 595 CALL ZM_FORM('F35.26','F35.26',MZM1,STRING) CALL ZM_ST2M(STRING(1:75),MZM4) IF (ABS((MZM1-MZM4)/MZM4).GT.MSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 596 MZM3 = TO_ZM('123-456i') CALL ZM_2I2M(123,-456,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 597 MZM3 = MZM1 ** 123 CALL ZM_IPWR(MZM1,123,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 598 I3 = MZM1 CALL ZM_M2I(MZM1,I4) IF (I3.NE.I4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 599 Z3 = MZM1 CALL ZM_M2Z(MZM1,Z4) IF (ABS((Z3-Z4)/Z3).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 600 MZM3 = MZM1 * 123 CALL ZM_MPYI(MZM1,123,MZM4) IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 601 MZM3 = MZM1 ** (TO_ZM(1)/TO_ZM(3)) CALL ZM_RPWR(MZM1,1,3,MZM4) IF (ABS((MZM3-MZM4)/MZM4).GT.MSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 602 CALL ZM_SQR(MZM1,MZM4) MZM3 = MZM1*MZM1 IF (MZM3.NE.MZM4) CALL PRTERR(KW,KLOG,NCASE,NERROR) NCASE = 603 MZM3 = Z1 CALL ZM_Z2M(Z1,MZM4) IF (ABS((MZM3-MZM4)/MZM3).GT.RSMALL) & CALL PRTERR(KW,KLOG,NCASE,NERROR) END SUBROUTINE SUBROUTINE PRTERR(KW,KLOG,NCASE,NERROR) IMPLICIT NONE INTEGER KW,KLOG,NCASE,NERROR WRITE (KW,*) ' Error in case ',NCASE WRITE (KLOG,*) ' Error in case ',NCASE NERROR = NERROR + 1 END SUBROUTINE