      subroutine mccopy (x, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
c                     multiple precision
      integer x(2), z(2)
c               ===== translated program =====
      call mcopy (x(1),z(1))
      call mcopy (x(2),z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcalc (ix)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      integer ix(2)
c               ===== translated program =====
      call malc (ix(1))
      call malc (ix(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcdalc (ix)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      integer ix(2)
c               ===== translated program =====
      call mdalc (ix(2))
      call mdalc (ix(1))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcadd (x, y, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
c                     multiple precision
      integer x(2), y(2), z(2)
c               ===== translated program =====
      call madd (x(1),y(1),z(1))
      call madd (x(2),y(2),z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcsub (x, y, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
c                     multiple precision
      integer x(2), y(2), z(2)
c               ===== translated program =====
      call msub (x(1),y(1),z(1))
      call msub (x(2),y(2),z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcmul1 (intger, y, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      integer intger
c                     multiple precision
      integer y(2), z(2)
c               ===== translated program =====
      call mmul1 (intger,y(1),z(1))
      call mmul1 (intger,y(2),z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcmul2 (x, intger, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      integer intger
c                     multiple precision
      integer x(2), z(2)
c               ===== translated program =====
      call mmul1 (intger,x(1),z(1))
      call mmul1 (intger,x(2),z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcmul (x, y, z)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple precision
      integer tmp
c               ----- global variables -----
c                     multiple precision
      integer x(2), y(2), z(2)
c               ===== translated program =====
c               ----- begin initialization -----
      do 30001  o0i1 = 1, 2
30001 call malc (mtmp(o0i1))
      call malc (tmp)
c               ----- end initialization -----
      call mmul (x(1),y(1),mtmp(1))
      call mmul (x(2),y(2),mtmp(2))
      call msub (mtmp(1),mtmp(2),tmp)
      call mmul (x(1),y(2),mtmp(1))
      call mmul (x(2),y(1),mtmp(2))
      call madd (mtmp(1),mtmp(2),z(2))
      call mcopy (tmp,z(1))
      go to 30000
c               ----- return code -----
30000 continue
c               ----- begin erasure -----
      do 30002  o0i1 = 1, 2
30002 call mdalc (mtmp(o0i1))
      call mdalc (tmp)
c               ----- end erasure -----
      return
      end
      subroutine mcdiv (x, y, z)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple precision
      integer tmp1, tmp2
c               ----- global variables -----
c                     multiple precision
      integer x(2), y(2), z(2)
c               ----- functions -----
      real rec
c               ===== translated program =====
c               ----- begin initialization -----
      do 30001  o0i1 = 1, 2
30001 call malc (mtmp(o0i1))
      call malc (tmp1)
      call malc (tmp2)
c               ----- end initialization -----
      call mmul (y(1),y(1),mtmp(1))
      call mmul (y(2),y(2),mtmp(2))
      call madd (mtmp(1),mtmp(2),mtmp(2))
      call metom (rec (mtmp(2)),tmp1)
      call mmul (x(1),y(1),mtmp(1))
      call mmul (x(2),y(2),mtmp(2))
      call madd (mtmp(1),mtmp(2),mtmp(2))
      call mmul (mtmp(2),tmp1,tmp2)
      call mmul (x(1),y(2),mtmp(1))
      call mneg (mtmp(1),mtmp(1))
      call mmul (x(2),y(1),mtmp(2))
      call madd (mtmp(1),mtmp(2),mtmp(2))
      call mmul (mtmp(2),tmp1,z(2))
      call mcopy (tmp2,z(1))
      go to 30000
c               ----- return code -----
30000 continue
c               ----- begin erasure -----
      do 30002  o0i1 = 1, 2
30002 call mdalc (mtmp(o0i1))
      call mdalc (tmp1)
      call mdalc (tmp2)
c               ----- end erasure -----
      return
      end
      subroutine mcdivi (x, intger, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      integer intger
c                     multiple precision
      integer x(2), z(2)
c               ===== translated program =====
      call mdivi (x(1),intger,z(1))
      call mdivi (x(2),intger,z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mccexi (x,n, mcrlt)
c               ===== processed by augment, version 4n =====
c               ----- temporary storage locations -----
c                     multiple complex
      integer mctmp(2,1)
c               ----- local variables -----
      integer n2, ns
c                     multiple complex
      integer sq(2), mcres(2)
c               ----- global variables -----
      integer n
c                     multiple complex
      integer x(2), mcrlt(2)
c               ----- supporting package functions -----
      logical mcne
c               ===== translated program =====
c
c               ----- begin initialization -----
      call mcalc (mcres)
      call mcalc (mctmp(1,1))
      call mcalc (sq)
c               ----- end initialization -----
      n2 = n
      if (n2) 20, 10, 40
c
 10   call mcitoc (1,mcres)
      go to 30000
c
 20   n2 = -n2
c ===== mixed mode operands accepted =====
      call mcitoc (0,mctmp(1,1))
      if (mcne (x,mctmp(1,1)))  go to 60
      call seterr (30hmccexi  zero to negative power, 30, 1, 2)
      stop
c
c ===== mixed mode operands accepted =====
 40   call mcitoc (0,mctmp(1,1))
      if (mcne (x,mctmp(1,1)))  go to 60
      call mcitoc (0,mcres)
      go to 30000
c
 60   call mccopy (x,sq)
c ===== mixed mode operands accepted =====
      if (.not. (n.lt.0)) go to 30001
      call mcitoc (1,mctmp(1,1))
      call mcdiv (mctmp(1,1),sq,sq)
30001 continue
      call mcitoc (1,mcres)
c
 70   ns = n2
      n2 = n2/2
      if (2*n2.ne.ns) call mcmul (sq,mcres,mcres)
      if (n2.le.0) go to 30000
      call mcmul (sq,sq,sq)
      go to 70
c
c               ----- return code -----
30000 continue
      call mccopy (mcres,mcrlt)
c               ----- begin erasure -----
      call mcdalc (mcres)
      call mcdalc (mctmp(1,1))
      call mcdalc (sq)
c               ----- end erasure -----
      return
      end
      subroutine mccexc (x,y, mcrlt)
c               ===== processed by augment, version 4n =====
c               ----- temporary storage locations -----
c                     multiple complex
      integer mctmp(2,1)
c               ----- local variables -----
c                     multiple complex
      integer mcres(2)
c               ----- global variables -----
c                     multiple complex
      integer x(2), y(2), mcrlt(2)
c               ----- supporting package functions -----
      logical mcne
c               ===== translated program =====
c
c               ----- begin initialization -----
      call mcalc (mcres)
      call mcalc (mctmp(1,1))
c               ----- end initialization -----
c ===== mixed mode operands accepted =====
      call mcetoc (0.,mctmp(1,1))
      if (mcne (y,mctmp(1,1)))  go to 10
      call mcitoc (1,mcres)
      go to 30000
c
c ===== mixed mode operands accepted =====
 10   call mcetoc (0.,mctmp(1,1))
      if (mcne (x,mctmp(1,1)))  go to 20
      call mcitoc (0,mcres)
      go to 30000
c
 20   call mclog (x,mctmp(1,1))
      call mcmul (y,mctmp(1,1),mctmp(1,1))
      call mcexp (mctmp(1,1),mcres)
      go to 30000
c
c               ----- return code -----
30000 continue
      call mccopy (mcres,mcrlt)
c               ----- begin erasure -----
      call mcdalc (mcres)
      call mcdalc (mctmp(1,1))
c               ----- end erasure -----
      return
      end
      subroutine mcitoc (intger, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      integer intger
c                     multiple precision
      integer z(2)
c               ===== translated program =====
      call mitom (intger,z(1))
      call mitom (0,z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcetoc (r, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      real r
c                     multiple precision
      integer z(2)
c               ===== translated program =====
      call metom (r,z(1))
      call mitom (0,z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcdtoc (d, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      double precision d
c                     multiple precision
      integer z(2)
c               ===== translated program =====
      call mdtom (d,z(1))
      call mitom (0,z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcctoc (c, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
      complex c
c                     multiple precision
      integer z(1)
c               ===== translated program =====
      call metom (real (c),z(1))
      call metom (aimag (c),z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      logical function mceq (x,y)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
c                     multiple precision
      integer x(2), y(2)
c               ----- functions -----
      logical mne
c               ===== translated program =====
c
      mceq = .false.
      if (mne(x(1),y(1))) go to 30000
      if (mne(x(2),y(2))) go to 30000
      mceq = .true.
c
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      logical function mcne (x,y)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
c                     multiple precision
      integer x(2), y(2)
c               ----- functions -----
      logical meq
c               ===== translated program =====
c
      mcne = .false.
      if (meq(x(1),y(1))) go to 30000
      if (meq(x(2),y(2))) go to 30000
      mcne = .true.
c
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcreal (z, mrlt)
c               ===== processed by augment, version 4n =====
c               ----- local variables -----
c                     multiple precision
      integer mres
c               ----- global variables -----
c                     multiple precision
      integer z(2), mrlt
c               ===== translated program =====
c               ----- begin initialization -----
      call malc (mres)
c               ----- end initialization -----
      call mcopy (z(1),mres)
      go to 30000
c               ----- return code -----
30000 continue
      call mcopy (mres,mrlt)
c               ----- begin erasure -----
      call mdalc (mres)
c               ----- end erasure -----
      return
      end
      subroutine mcimag (z, mrlt)
c               ===== processed by augment, version 4n =====
c               ----- local variables -----
c                     multiple precision
      integer mres
c               ----- global variables -----
c                     multiple precision
      integer z(2), mrlt
c               ===== translated program =====
c               ----- begin initialization -----
      call malc (mres)
c               ----- end initialization -----
      call mcopy (z(2),mres)
      go to 30000
c               ----- return code -----
30000 continue
      call mcopy (mres,mrlt)
c               ----- begin erasure -----
      call mdalc (mres)
c               ----- end erasure -----
      return
      end
      subroutine mccmpl (x, y, z)
c               ===== processed by augment, version 4n =====
c               ----- global variables -----
c                     multiple precision
      integer x, y, z(2)
c               ===== translated program =====
      call mcopy (x,z(1))
      call mcopy (y,z(2))
      go to 30000
c               ----- return code -----
30000 continue
      return
      end
      subroutine mcexp (z, mcrlt)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple precision
      integer r, y
c                     multiple complex
      integer mcres(2)
c               ----- global variables -----
c                     multiple complex
      integer z(2), mcrlt(2)
c               ----- supporting package functions -----
      logical meq
c               ===== translated program =====
c
c               ----- begin initialization -----
      call mcalc (mcres)
      do 30001  o0i1 = 1, 2
30001 call malc (mtmp(o0i1))
      call malc (r)
      call malc (y)
c               ----- end initialization -----
      call mcreal (z,mtmp(1))
      call mexp (mtmp(1),r)
c ===== mixed mode operands accepted =====
      call mitom (0,mtmp(1))
      if (meq (r,mtmp(1)))  go to 10
c
      call mcimag (z,y)
      call mcos (y,mtmp(1))
      call mmul (r,mtmp(1),mtmp(1))
      call msin (y,mtmp(2))
      call mmul (r,mtmp(2),mtmp(2))
      call mccmpl (mtmp(1),mtmp(2),mcres)
      go to 30000
c
 10   call mcitoc (0,mcres)
      go to 30000
c
c               ----- return code -----
30000 continue
      call mccopy (mcres,mcrlt)
c               ----- begin erasure -----
      call mcdalc (mcres)
      do 30002  o0i1 = 1, 2
30002 call mdalc (mtmp(o0i1))
      call mdalc (r)
      call mdalc (y)
c               ----- end erasure -----
      return
      end
      subroutine mclog (z, mcrlt)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple complex
      integer mcres(2)
c               ----- global variables -----
c                     multiple complex
      integer z(2), mcrlt(2)
c               ===== translated program =====
c
c               ----- begin initialization -----
      call mcalc (mcres)
      do 30001  o0i1 = 1, 2
30001 call malc (mtmp(o0i1))
c               ----- end initialization -----
      call mcabs (z,mtmp(1))
      call mlog (mtmp(1),mtmp(1))
      call mcarg (z,mtmp(2))
      call mccmpl (mtmp(1),mtmp(2),mcres)
c
      go to 30000
c               ----- return code -----
30000 continue
      call mccopy (mcres,mcrlt)
c               ----- begin erasure -----
      call mcdalc (mcres)
      do 30002  o0i1 = 1, 2
30002 call mdalc (mtmp(o0i1))
c               ----- end erasure -----
      return
      end
      subroutine mcabs (z, mrlt)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple precision
      integer r1, r2, x, y, mres
c               ----- global variables -----
c                     multiple precision
      integer mrlt
c                     multiple complex
      integer z(2)
c               ----- supporting package functions -----
      logical mne
c               ===== translated program =====
c
c               ----- begin initialization -----
      call malc (mres)
      do 30002  o0i1 = 1, 2
30002 call malc (mtmp(o0i1))
      call malc (r1)
      call malc (r2)
      call malc (x)
      call malc (y)
c               ----- end initialization -----
      call mcreal (z,mtmp(1))
      call mabs (mtmp(1),x)
      call mcimag (z,mtmp(1))
      call mabs (mtmp(1),y)
      call mmin1 (x,y,r1)
      call mmax1 (x,y,r2)
c
      call mcopy (r2,mres)
c ===== mixed mode operands accepted =====
c ===== mixed mode operands accepted =====
      call mdtom (0.d0,mtmp(1))
      if (.not. (mne (r1,mtmp(1)))) go to 30001
      call mdiv (r1,r2,mtmp(1))
      call mmexi (mtmp(1),2,mtmp(1))
      call mdtom (1.d0,mtmp(2))
      call madd (mtmp(2),mtmp(1),mtmp(1))
      call msqrt (mtmp(1),mtmp(1))
      call mmul (r2,mtmp(1),mres)
30001 continue
c
      go to 30000
c               ----- return code -----
30000 continue
      call mcopy (mres,mrlt)
c               ----- begin erasure -----
      call mdalc (mres)
      do 30003  o0i1 = 1, 2
30003 call mdalc (mtmp(o0i1))
      call mdalc (r1)
      call mdalc (r2)
      call mdalc (x)
      call mdalc (y)
c               ----- end erasure -----
      return
      end
      subroutine mcarg (z, mrlt)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple precision
      integer mres
c               ----- global variables -----
c                     multiple precision
      integer mrlt
c                     multiple complex
      integer z(2)
c               ----- supporting package functions -----
      logical meq, mne
c               ===== translated program =====
c
c               ----- begin initialization -----
      call malc (mres)
      do 30001  o0i1 = 1, 2
30001 call malc (mtmp(o0i1))
c               ----- end initialization -----
      call mitom (0,mres)
c ===== mixed mode operands accepted =====
      call mcreal (z,mtmp(1))
      call mitom (0,mtmp(2))
      if (mne (mtmp(1),mtmp(2)))  go to 10
c ===== mixed mode operands accepted =====
      call mcimag (z,mtmp(1))
      call mitom (0,mtmp(2))
      if (meq (mtmp(1),mtmp(2))) go to 30000
c
 10   call mcimag (z,mtmp(1))
      call mcreal (z,mtmp(2))
      call matan2 (mtmp(1),mtmp(2),mres)
c
      go to 30000
c               ----- return code -----
30000 continue
      call mcopy (mres,mrlt)
c               ----- begin erasure -----
      call mdalc (mres)
      do 30002  o0i1 = 1, 2
30002 call mdalc (mtmp(o0i1))
c               ----- end erasure -----
      return
      end
      subroutine mcsqrt (z, mcrlt)
c               ===== processed by augment, version 4n =====
c               ----- initialize/erase indexes -----
      integer o0i1
c               ----- temporary storage locations -----
c                     multiple precision
      integer mtmp(2)
c               ----- local variables -----
c                     multiple precision
      integer r, x, xtmp, y, ytmp
c                     multiple complex
      integer mcres(2)
c               ----- global variables -----
c                     multiple complex
      integer z(2), mcrlt(2)
c               ----- supporting package functions -----
      logical mlt, meq, mge, mne
c               ===== translated program =====
c
c               ----- begin initialization -----
      call mcalc (mcres)
      do 30002  o0i1 = 1, 2
30002 call malc (mtmp(o0i1))
      call malc (r)
      call malc (x)
      call malc (xtmp)
      call malc (y)
      call malc (ytmp)
c               ----- end initialization -----
      call mcreal (z,x)
      call mcimag (z,y)
      call mcabs (z,r)
c
c ===== mixed mode operands accepted =====
      call mitom (0,mtmp(1))
      if (mne (r,mtmp(1)))  go to 10
      call mcitoc (0,mcres)
      go to 30000
c
 10   call mabs (x,mtmp(1))
      call madd (r,mtmp(1),mtmp(1))
      call mdivi (mtmp(1),2,mtmp(1))
      call msqrt (mtmp(1),xtmp)
      call mmul1 (2,xtmp,mtmp(1))
      call mdiv (y,mtmp(1),ytmp)
c
c ===== mixed mode operands accepted =====
      call mitom (0,mtmp(1))
      if (mge (x,mtmp(1))) call mccmpl (xtmp,ytmp,mcres)
c ===== mixed mode operands accepted =====
      call mitom (0,mtmp(1))
      if (meq (y,mtmp(1))) call mitom (1,y)
c ===== mixed mode operands accepted =====
      call mitom (0,mtmp(1))
      if (.not. (mlt (x,mtmp(1)))) go to 30001
      call mabs (ytmp,mtmp(1))
      call msign (xtmp,y,mtmp(2))
      call mccmpl (mtmp(1),mtmp(2),mcres)
30001 continue
c
      go to 30000
c               ----- return code -----
30000 continue
      call mccopy (mcres,mcrlt)
c               ----- begin erasure -----
      call mcdalc (mcres)
      do 30003  o0i1 = 1, 2
30003 call mdalc (mtmp(o0i1))
      call mdalc (r)
      call mdalc (x)
      call mdalc (xtmp)
      call mdalc (y)
      call mdalc (ytmp)
c               ----- end erasure -----
      return
      end
