      real function r1mach (i)
c
c  single-precision machine constants
c
c  r1mach(1) = b**(emin-1), the smallest positive magnitude.
c  r1mach(2) = b**emax*(1 - b**(-t)), the largest magnitude.
c  r1mach(3) = b**(-t), the smallest relative spacing.
c  r1mach(4) = b**(1-t), the largest relative spacing.
c  r1mach(5) = log10(b)
c  r1mach(6) = 'nan', not a number.  a bit pattern not in the
c              legal number range to be used when an answer
c              or part of an answer is undefined.  this constant
c              is analogous to the ieee standard nan and to
c              cdc's indefinite.
c
c  to alter this function for a particular environment,
c  the desired set of data statements should be activated by
c  removing the c from column 1.
c
      real rmach(6)
c
c     machine constants for the burroughs 1700 system.
c
c     data rmach (1) / 4.31908e-78 /
c     data rmach (2) / 5.78827e76 /
c     data rmach (3) / 5.96046e-8 /
c     data rmach (4) / 1.19209e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 5.78854e76 /
c
c     machine constants for the burroughs 5700 system.
c
c     data rmach (1) / 8.76013e-47 /
c     data rmach (2) / 4.31260e68 /
c     data rmach (3) / 1.81899e-12 /
c     data rmach (4) / 1.45519e-11 /
c     data rmach (5) / .9030899869 91943585e0 /
c     data rmach (6) / 4.31280e68 /
c
c     machine constants for the burroughs 6700/7700 systems.
c
c     data rmach (1) / 8.76013e-47 /
c     data rmach (2) / 4.31260e68 /
c     data rmach (3) / 1.81899e-12 /
c     data rmach (4) / 1.45519e-11 /
c     data rmach (5) / .9030899869 91943585e0 /
c     data rmach (6) / 4.31280e68 /
c
c     machine constants for the cdc 6000/7000 series.
c
c     data rmach (1) / 3.13223e-294 /
c     data rmach (2) / 1.26472e322 /
c     data rmach (3) / 3.55271e-15 /
c     data rmach (4) / 7.10543e-15 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.26478e322 /
c
c     machine constants for the cray 1
c
c     data rmach (1) / 4.58507e-2467 /
c     data rmach (2) / 5.45249e2465 /
c     data rmach (3) / 7.10543e-15 /
c     data rmach (4) / 1.42109e-14 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 5.45274e2465 /
c
c     machine constants for the harris 220
c
c     data rmach (1) / 2.93941e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 1.19209e-7 /
c     data rmach (4) / 2.38419e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for the honeywell 600/6000 series.
c
c     data rmach (1) / 2.93941e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 7.45058e-9 /
c     data rmach (4) / 1.49012e-8 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for the data general eclipse s/200
c
      data rmach(1) / 5.39885e-79 /
      data rmach(2) / 7.23534e75 /
      data rmach(3) / 5.96046e-8 /
      data rmach(4) / 9.53674e-7 /
      data rmach(5) / 1.2041199826 5592478e0 /
      data rmach(6) / 7.23567e75 /
c
c     machine constants for the ibm 360/370 series,
c     the xerox sigma 5/7/9, the sel systems 85/86,
c     the perkin elmer (interdata) 7/32, and the data general
c     eclipse mv/8000 and mv/10000 systems.
c
c     data rmach (1) / 5.39885e-79 /
c     data rmach (2) / 7.23534e75 /
c     data rmach (3) / 5.96046e-8 /
c     data rmach (4) / 9.53674e-7 /
c     data rmach (5) / 1.2041199826 5592478e0 /
c     data rmach (6) / 7.23567e75 /
c
c     machine constants for the pdp-10 (ka processor).
c
c     data rmach (1) / 1.46971e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 7.45058e-9 /
c     data rmach (4) / 1.49012e-8 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for the pdp-10 (ki processor).
c
c     data rmach (1) / 1.46971e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 7.45058e-9 /
c     data rmach (4) / 1.49012e-8 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for pdp-11 (and vax-11) fortran's supporting
c     32-bit integer arithmetic.
c
c     data rmach (1) / 2.93941e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 5.96046e-8 /
c     data rmach (4) / 1.19209e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for pdp-11 fortran's supporting
c     16-bit integer arithmetic.
c
c     data rmach (1) / 2.93941e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 5.96046e-8 /
c     data rmach (4) / 1.19209e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for the univac 1100 series.
c
c     note that the punch unit, i1mach(3), has been set to 7
c     which is appropriate for the univac-for system.
c     if you have the univac-ftn system, set it to 1.
c
c     data rmach (1) / 1.46971e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 7.45058e-9 /
c     data rmach (4) / 1.49012e-8 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for the ieee standard (intel 8087 and
c     intel 8086 emulator)
c
c     data rmach (1) / 1.17577e-38 /
c     data rmach (2) / 3.40204e38 /
c     data rmach (3) / 5.96046e-8 /
c     data rmach (4) / 1.19209e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 3.40220e38 /
c
c     machine constants for the hp 2100
c     3 word double precision option with ftn4
c
c     data rmach (1) / 1.46971e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 1.19209e-7 /
c     data rmach (4) / 2.38419e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
c     machine constants for the hp 2100
c     4 word double precision option with ftn4
c
c     data rmach (1) / 1.46971e-39 /
c     data rmach (2) / 1.70102e38 /
c     data rmach (3) / 1.19209e-7 /
c     data rmach (4) / 2.38419e-7 /
c     data rmach (5) / .3010299956 63981195e0 /
c     data rmach (6) / 1.70110e38 /
c
      if (i.lt.1 .or. i.gt.6) call seterr (23hr1mach  i out of bounds,
     1  23, 1, 2)
c
      r1mach = rmach(i)
      return
c
      end