      REAL FUNCTION R7MDC(K)
C
C  ***  RETURN MACHINE DEPENDENT CONSTANTS USED BY NL2SOL  ***
C
      INTEGER K
C
C  ***  THE CONSTANT RETURNED DEPENDS ON K...
C
C  ***        K = 1... SMALLEST POS. ETA SUCH THAT -ETA EXISTS.
C  ***        K = 2... SQUARE ROOT OF ETA.
C  ***        K = 3... UNIT ROUNDOFF = SMALLEST POS. NO. MACHEP SUCH
C  ***                 THAT 1 + MACHEP .GT. 1 .AND. 1 - MACHEP .LT. 1.
C  ***        K = 4... SQUARE ROOT OF MACHEP.
C  ***        K = 5... SQUARE ROOT OF BIG (SEE K = 6).
C  ***        K = 6... LARGEST MACHINE NO. BIG SUCH THAT -BIG EXISTS.
C
      REAL BIG, ETA, MACHEP, ZERO
      INTEGER BIGI, ETAI, MACHEI
      EQUIVALENCE (BIG,BIGI), (ETA,ETAI), (MACHEP,MACHEI)
      PARAMETER (ZERO=0.E+0)
C
C     +++  IEEE ARITHMETIC MACHINES  +++
C
C      DATA BIGI   /  2139095039 /
C      DATA ETAI   /     8388608 /
C      DATA MACHEI /   864026624 /
C
C  +++  IBM, AMDAHL, OR XEROX MAINFRAME  +++
C
C      DATA ETAI   /    1048576 /
C      DATA BIGI   / 2147483647 /
C      DATA MACHEI / 1007681536 /
C
C  +++  VAX  +++
C
C      DATA ETAI   /       128 /
C      DATA BIGI   /    -32769 /
C      DATA MACHEI /     13440 /
C
C  +++  CRAY  +++
C
C      DATA BIGI   / 6917247552664371198 /
C      DATA ETAI   / 2306828171632181248 /
C      DATA MACHEI / 4599160381963763712 /
C
C  +++  PORT LIBRARY -- REQUIRES MORE THAN JUST A DATA STATEMENT, +++
C  +++                  BUT HAS CONSTANTS FOR MANY MORE MACHINES. +++
C
C  To get the current R1MACH, which has constants for many more
C  machines, ask netlib@research.att.com to
C                    send r1mach from cor
C  For machines with rounded arithmetic (e.g., IEEE or VAX arithmetic),
C  use MACHEP = 0.5 * R1MACH(3) below.
C
C     REAL R1MACH
C     EXTERNAL R1MACH
C     DATA BIG/0.E+0/, ETA/0.E+0/, MACHEP/0.E+0/, ZERO/0.E+0/
C     IF (BIG .GT. ZERO) GO TO 1
C        BIG = R1MACH(2)
C        ETA = R1MACH(1)
C        MACHEP = R1MACH(4)
C1    CONTINUE
C
C  +++ END OF PORT +++
C
C-------------------------------  BODY  --------------------------------
C
C
      IF (MACHEP .LE. ZERO) THEN
         WRITE(*,*) 'Edit R7MDC to activate the appropriate statements'
         STOP 987
         ENDIF
      GO TO (10, 20, 30, 40, 50, 60), K
C
 10   R7MDC = ETA
      GO TO 999
C
 20   R7MDC = SQRT(256.E+0*ETA)/16.E+0
      GO TO 999
C
 30   R7MDC = MACHEP
      GO TO 999
C
 40   R7MDC = SQRT(MACHEP)
      GO TO 999
C
 50   R7MDC = SQRT(BIG/256.E+0)*16.E+0
      GO TO 999
C
 60   R7MDC = BIG
C
 999  RETURN
C  ***  LAST LINE OF R7MDC FOLLOWS  ***
      END
      INTEGER FUNCTION I7MDCN(K)
C
      INTEGER K
C
C  ***  RETURN INTEGER MACHINE-DEPENDENT CONSTANTS  ***
C
C     ***  K = 1 MEANS RETURN STANDARD OUTPUT UNIT NUMBER.   ***
C     ***  K = 2 MEANS RETURN ALTERNATE OUTPUT UNIT NUMBER.  ***
C     ***  K = 3 MEANS RETURN  INPUT UNIT NUMBER.            ***
C          (NOTE -- K = 2, 3 ARE USED ONLY BY TEST PROGRAMS.)
C
C  +++  PORT VERSION FOLLOWS...
C      INTEGER I1MACH
C      EXTERNAL I1MACH
C      INTEGER MDPERM(3)
C      DATA MDPERM(1)/2/, MDPERM(2)/4/, MDPERM(3)/1/
C      I7MDCN = I1MACH(MDPERM(K))
C  +++  END OF PORT VERSION  +++
C
C  +++  NON-PORT VERSION FOLLOWS...
      INTEGER MDCON(3)
      DATA MDCON(1)/6/, MDCON(2)/8/, MDCON(3)/5/
      I7MDCN = MDCON(K)
C  +++  END OF NON-PORT VERSION  +++
C
 999  RETURN
C  ***  LAST LINE OF I7MDCN FOLLOWS  ***
      END
