Go to the documentation of this file.00001 INTEGER FUNCTION IEEECK( ISPEC, ZERO, ONE )
00002
00003
00004
00005
00006
00007
00008
00009 INTEGER ISPEC
00010 REAL ONE, ZERO
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 REAL NAN1, NAN2, NAN3, NAN4, NAN5, NAN6, NEGINF,
00044 $ NEGZRO, NEWZRO, POSINF
00045
00046
00047 IEEECK = 1
00048
00049 POSINF = ONE / ZERO
00050 IF( POSINF.LE.ONE ) THEN
00051 IEEECK = 0
00052 RETURN
00053 END IF
00054
00055 NEGINF = -ONE / ZERO
00056 IF( NEGINF.GE.ZERO ) THEN
00057 IEEECK = 0
00058 RETURN
00059 END IF
00060
00061 NEGZRO = ONE / ( NEGINF+ONE )
00062 IF( NEGZRO.NE.ZERO ) THEN
00063 IEEECK = 0
00064 RETURN
00065 END IF
00066
00067 NEGINF = ONE / NEGZRO
00068 IF( NEGINF.GE.ZERO ) THEN
00069 IEEECK = 0
00070 RETURN
00071 END IF
00072
00073 NEWZRO = NEGZRO + ZERO
00074 IF( NEWZRO.NE.ZERO ) THEN
00075 IEEECK = 0
00076 RETURN
00077 END IF
00078
00079 POSINF = ONE / NEWZRO
00080 IF( POSINF.LE.ONE ) THEN
00081 IEEECK = 0
00082 RETURN
00083 END IF
00084
00085 NEGINF = NEGINF*POSINF
00086 IF( NEGINF.GE.ZERO ) THEN
00087 IEEECK = 0
00088 RETURN
00089 END IF
00090
00091 POSINF = POSINF*POSINF
00092 IF( POSINF.LE.ONE ) THEN
00093 IEEECK = 0
00094 RETURN
00095 END IF
00096
00097
00098
00099
00100
00101
00102 IF( ISPEC.EQ.0 )
00103 $ RETURN
00104
00105 NAN1 = POSINF + NEGINF
00106
00107 NAN2 = POSINF / NEGINF
00108
00109 NAN3 = POSINF / POSINF
00110
00111 NAN4 = POSINF*ZERO
00112
00113 NAN5 = NEGINF*NEGZRO
00114
00115 NAN6 = NAN5*ZERO
00116
00117 IF( NAN1.EQ.NAN1 ) THEN
00118 IEEECK = 0
00119 RETURN
00120 END IF
00121
00122 IF( NAN2.EQ.NAN2 ) THEN
00123 IEEECK = 0
00124 RETURN
00125 END IF
00126
00127 IF( NAN3.EQ.NAN3 ) THEN
00128 IEEECK = 0
00129 RETURN
00130 END IF
00131
00132 IF( NAN4.EQ.NAN4 ) THEN
00133 IEEECK = 0
00134 RETURN
00135 END IF
00136
00137 IF( NAN5.EQ.NAN5 ) THEN
00138 IEEECK = 0
00139 RETURN
00140 END IF
00141
00142 IF( NAN6.EQ.NAN6 ) THEN
00143 IEEECK = 0
00144 RETURN
00145 END IF
00146
00147 RETURN
00148 END