132
  133
  134
  135
  136
  137
  138
  139      LOGICAL            IEEE1, RND
  140      INTEGER            BETA, T
  141
  142
  143
  144
  145
  146
  147
  148
  149
  150
  151
  152
  153
  154
  155
  156
  157
  158
  159
  160
  161
  162
  163
  164
  165
  166
  167
  168
  169
  170
  171
  172
  173
  174
  175
  176
  177
  178
  179
  180
  181
  182
  183
  184      LOGICAL            FIRST, LIEEE1, LRND
  185      INTEGER            LBETA, LT
  186      REAL               A, B, C, F, ONE, QTR, SAVEC, T1, T2
  187
  188
  189      REAL               SLAMC3
  191
  192
  193      SAVE               first, lieee1, lbeta, lrnd, lt
  194
  195
  196      DATA               first / .true. /
  197
  198
  199
  200      IF( first ) THEN
  201         first = .false.
  202         one = 1
  203
  204
  205
  206
  207
  208
  209
  210
  211
  212
  213
  214
  215
  216         a = 1
  217         c = 1
  218
  219
  220   10    CONTINUE
  221         IF( c.EQ.one ) THEN
  222            a = 2*a
  225            GO TO 10
  226         END IF
  227
  228
  229
  230
  231
  232
  233
  234         b = 1
  236
  237
  238   20    CONTINUE
  239         IF( c.EQ.a ) THEN
  240            b = 2*b
  242            GO TO 20
  243         END IF
  244
  245
  246
  247
  248
  249
  250
  251         qtr = one / 4
  252         savec = c
  254         lbeta = c + qtr
  255
  256
  257
  258
  259         b = lbeta
  260         f = 
slamc3( b / 2, -b / 100 )
 
  262         IF( c.EQ.a ) THEN
  263            lrnd = .true.
  264         ELSE
  265            lrnd = .false.
  266         END IF
  267         f = 
slamc3( b / 2, b / 100 )
 
  269         IF( ( lrnd ) .AND. ( c.EQ.a ) )
  270     $      lrnd = .false.
  271
  272
  273
  274
  275
  276
  277
  279         t2 = 
slamc3( b / 2, savec )
 
  280         lieee1 = ( t1.EQ.a ) .AND. ( t2.GT.savec ) .AND. lrnd
  281
  282
  283
  284
  285
  286
  287
  288
  289         lt = 0
  290         a = 1
  291         c = 1
  292
  293
  294   30    CONTINUE
  295         IF( c.EQ.one ) THEN
  296            lt = lt + 1
  297            a = a*lbeta
  300            GO TO 30
  301         END IF
  302
  303
  304      END IF
  305
  306      beta = lbeta
  307      t = lt
  308      rnd = lrnd
  309      ieee1 = lieee1
  310      RETURN
  311
  312
  313