      subroutine M$AOP_ADD_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)+V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)+V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)+V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)+V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)+V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)+V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_ADD_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)+V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)+V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)+V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)+V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)+V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)+V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_CSCL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(2,*), T1X,T1Y
      integer*4 V2(*), T2(1)
      integer*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_CSCX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(2,*), T1X,T1Y
      integer*8 V2(*), T2(1)
      integer*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_ADD_CSCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_CSCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_CCCL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(2,*), T1X,T1Y
      integer*4 V2(2,*), T2X,T2Y
      integer*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_CCCX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(2,*), T1X,T1Y
      integer*8 V2(2,*), T2X,T2Y
      integer*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_ADD_CCCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_CCCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_VVVL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(3,*), T1X,T1Y,T1Z
      integer*4 V2(3,*), T2X,T2Y,T2Z
      integer*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
      V3(3,I) = V1(3,I)+V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
      V3(3,I) = V1(3,I)+V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
      V3(3,I3) = V1(3,I1)+V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_VVVX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(3,*), T1X,T1Y,T1Z
      integer*8 V2(3,*), T2X,T2Y,T2Z
      integer*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
      V3(3,I) = V1(3,I)+V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
      V3(3,I) = V1(3,I)+V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
      V3(3,I3) = V1(3,I1)+V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_ADD_VVVF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
      V3(3,I) = V1(3,I)+V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
      V3(3,I) = V1(3,I)+V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
      V3(3,I3) = V1(3,I1)+V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ADD_VVVD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,I)
      V3(2,I) = V1(2,I)+V2(2,I)
      V3(3,I) = V1(3,I)+V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)+V2(1,1)
      V3(2,I) = V1(2,I)+V2(2,1)
      V3(3,I) = V1(3,I)+V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)+V2(1,I2)
      V3(2,I3) = V1(2,I1)+V2(2,I2)
      V3(3,I3) = V1(3,I1)+V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)-V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)-V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)-V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)-V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)-V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)-V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SUB_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)-V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)-V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)-V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)-V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)-V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)-V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_CSCL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(2,*), T1X,T1Y
      integer*4 V2(*), T2(1)
      integer*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_CSCX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(2,*), T1X,T1Y
      integer*8 V2(*), T2(1)
      integer*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SUB_CSCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_CSCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(I)
      V3(2,I) = V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1)
      V3(2,I) = V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(I2)
      V3(2,I3) = V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_CCCL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(2,*), T1X,T1Y
      integer*4 V2(2,*), T2X,T2Y
      integer*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_CCCX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(2,*), T1X,T1Y
      integer*8 V2(2,*), T2X,T2Y
      integer*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SUB_CCCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_CCCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_VVVL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(3,*), T1X,T1Y,T1Z
      integer*4 V2(3,*), T2X,T2Y,T2Z
      integer*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
      V3(3,I) = V1(3,I)-V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
      V3(3,I) = V1(3,I)-V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
      V3(3,I3) = V1(3,I1)-V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_VVVX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(3,*), T1X,T1Y,T1Z
      integer*8 V2(3,*), T2X,T2Y,T2Z
      integer*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
      V3(3,I) = V1(3,I)-V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
      V3(3,I) = V1(3,I)-V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
      V3(3,I3) = V1(3,I1)-V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SUB_VVVF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
      V3(3,I) = V1(3,I)-V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
      V3(3,I) = V1(3,I)-V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
      V3(3,I3) = V1(3,I1)-V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUB_VVVD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,I)
      V3(2,I) = V1(2,I)-V2(2,I)
      V3(3,I) = V1(3,I)-V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)-V2(1,1)
      V3(2,I) = V1(2,I)-V2(2,1)
      V3(3,I) = V1(3,I)-V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)-V2(1,I2)
      V3(2,I3) = V1(2,I1)-V2(2,I2)
      V3(3,I3) = V1(3,I1)-V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MUL_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_CSCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(I)
      V3(2,I) = V1(2,I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(1)
      V3(2,I) = V1(2,I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)*V2(I2)
      V3(2,I3) = V1(2,I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_CSCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(I)
      V3(2,I) = V1(2,I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(1)
      V3(2,I) = V1(2,I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)*V2(I2)
      V3(2,I3) = V1(2,I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_CCCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V3(1,I) = T1X*V2(1,I) - T1Y*V2(2,I)
      V3(2,I) = T1X*V2(2,I) + T1Y*V2(1,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V3(1,I) = T1X*V2(1,1) - T1Y*V2(2,1)
      V3(2,I) = T1X*V2(2,1) + T1Y*V2(1,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = V1(2,I1)
      V3(1,I3) = T1X*V2(1,I2) - T1Y*V2(2,I2)
      V3(2,I3) = T1X*V2(2,I2) + T1Y*V2(1,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_CCCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V3(1,I) = T1X*V2(1,I) - T1Y*V2(2,I)
      V3(2,I) = T1X*V2(2,I) + T1Y*V2(1,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V3(1,I) = T1X*V2(1,1) - T1Y*V2(2,1)
      V3(2,I) = T1X*V2(2,1) + T1Y*V2(1,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = V1(2,I1)
      V3(1,I3) = T1X*V2(1,I2) - T1Y*V2(2,I2)
      V3(2,I3) = T1X*V2(2,I2) + T1Y*V2(1,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_VSVF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(*), T2(1)
      real*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(I)
      V3(2,I) = V1(2,I)*V2(I)
      V3(3,I) = V1(3,I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(1)
      V3(2,I) = V1(2,I)*V2(1)
      V3(3,I) = V1(3,I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)*V2(I2)
      V3(2,I3) = V1(2,I1)*V2(I2)
      V3(3,I3) = V1(3,I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_VSVD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(*), T2(1)
      real*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(I)
      V3(2,I) = V1(2,I)*V2(I)
      V3(3,I) = V1(3,I)*V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(1,I)*V2(1)
      V3(2,I) = V1(2,I)*V2(1)
      V3(3,I) = V1(3,I)*V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(1,I1)*V2(I2)
      V3(2,I3) = V1(2,I1)*V2(I2)
      V3(3,I3) = V1(3,I1)*V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_VVVF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(2,I)*V2(3,I) - V2(2,I)*V1(3,I)
      V3(2,I) = V1(3,I)*V2(1,I) - V2(3,I)*V1(1,I)
      V3(3,I) = V1(1,I)*V2(2,I) - V2(1,I)*V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(2,I)*V2(3,1) - V2(2,I)*V1(3,1)
      V3(2,I) = V1(3,I)*V2(1,1) - V2(3,I)*V1(1,1)
      V3(3,I) = V1(1,I)*V2(2,1) - V2(1,I)*V1(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(2,I1)*V2(3,I2) - V2(2,I1)*V1(3,I2)
      V3(2,I3) = V1(3,I1)*V2(1,I2) - V2(3,I1)*V1(1,I2)
      V3(3,I3) = V1(1,I1)*V2(2,I2) - V2(1,I1)*V1(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUL_VVVD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(2,I)*V2(3,I) - V2(2,I)*V1(3,I)
      V3(2,I) = V1(3,I)*V2(1,I) - V2(3,I)*V1(1,I)
      V3(3,I) = V1(1,I)*V2(2,I) - V2(1,I)*V1(2,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(2,I)*V2(3,1) - V2(2,I)*V1(3,1)
      V3(2,I) = V1(3,I)*V2(1,1) - V2(3,I)*V1(1,1)
      V3(3,I) = V1(1,I)*V2(2,1) - V2(1,I)*V1(2,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(2,I1)*V2(3,I2) - V2(2,I1)*V1(3,I2)
      V3(2,I3) = V1(3,I1)*V2(1,I2) - V2(3,I1)*V1(1,I2)
      V3(3,I3) = V1(1,I1)*V2(2,I2) - V2(1,I1)*V1(2,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DOT_VVSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(1,I)*V2(1,I)+V1(2,I)*V2(2,I)+V1(3,I)*V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(1,I)*V2(1,1)+V1(2,I)*V2(2,1)+V1(3,I)*V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(1,I1)*V2(1,I2)+V1(2,I1)*V2(2,I2)+V1(3,I1)*V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DOT_VVSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(1,I)*V2(1,I)+V1(2,I)*V2(2,I)+V1(3,I)*V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(1,I)*V2(1,1)+V1(2,I)*V2(2,1)+V1(3,I)*V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(1,I1)*V2(1,I2)+V1(2,I1)*V2(2,I2)+V1(3,I1)*V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MULADD_SSSSL (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      integer*4 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V4
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)*V2(I)+V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)*V2(1)+V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)*V2(I2)+V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_MULADD_SSSSX (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      integer*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)*V2(I)+V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)*V2(1)+V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)*V2(I2)+V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MULADD_SSSSF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      real*4 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)*V2(I)+V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)*V2(1)+V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)*V2(I2)+V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_MULADD_SSSSD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      real*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)*V2(I)+V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)*V2(1)+V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)*V2(I2)+V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_MULADD_CCCCF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      complex*8 V3(*), T3(1)
      complex*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)*V2(I)+V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)*V2(1)+V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)*V2(I2)+V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_MULADD_CCCCD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      complex*16 V3(*), T3(1)
      complex*16 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)*V2(I)+V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)*V2(1)+V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)*V2(I2)+V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_DIV_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_CSCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      complex*8 V1(*), T1(1)
      real*4 V2(*), T2(1)
      complex*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_CSCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      complex*16 V1(*), T1(1)
      real*8 V2(*), T2(1)
      complex*16 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_CCCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      complex*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DIV_CCCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      complex*16 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I).ne.0) then
        V3(I) = V1(I)/V2(I)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1).ne.0) then
        V3(I) = V1(I)/V2(1)
      else
        V3(I) = 0
        errno = -1
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2).ne.0) then
        V3(I3) = V1(I1)/V2(I2)
      else
        V3(I3) = 0
        errno = -1
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ABS_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ABS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ABS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ABS_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ABS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ABS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ABS_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ABS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ABS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ABS_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ABS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ABS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_CONJ_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1,I) = V1(1,I)
      V2(2,I) = -V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1,I2) = V1(1,I1)
      V2(2,I2) = -V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_CONJ_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1,I) = V1(1,I)
      V2(2,I) = -V1(2,I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1,I2) = V1(1,I1)
      V2(2,I2) = -V1(2,I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_CMUL_CCCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = -V1(2,I)
      V3(1,I) = T1X*V2(1,I) - T1Y*V2(2,I)
      V3(2,I) = T1X*V2(2,I) + T1Y*V2(1,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = -V1(2,I)
      V3(1,I) = T1X*V2(1,1) - T1Y*V2(2,1)
      V3(2,I) = T1X*V2(2,1) + T1Y*V2(1,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = -V1(2,I1)
      V3(1,I3) = T1X*V2(1,I2) - T1Y*V2(2,I2)
      V3(2,I3) = T1X*V2(2,I2) + T1Y*V2(1,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_CMUL_CCCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = -V1(2,I)
      V3(1,I) = T1X*V2(1,I) - T1Y*V2(2,I)
      V3(2,I) = T1X*V2(2,I) + T1Y*V2(1,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = -V1(2,I)
      V3(1,I) = T1X*V2(1,1) - T1Y*V2(2,1)
      V3(2,I) = T1X*V2(2,1) + T1Y*V2(1,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = -V1(2,I1)
      V3(1,I3) = T1X*V2(1,I2) - T1Y*V2(2,I2)
      V3(2,I3) = T1X*V2(2,I2) + T1Y*V2(1,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUX_SSCL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(I1)
      V3(2,I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUX_SSCX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(I1)
      V3(2,I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MUX_SSCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(I1)
      V3(2,I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MUX_SSCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(2,*), T3X,T3Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(1,I) = V1(I)
      V3(2,I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(1,I3) = V1(I1)
      V3(2,I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_VMUX_SSSVL (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      integer*4 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V4
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(I)
      V4(3,I) = V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(1)
      V4(3,I) = V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(1,I4) = V1(I1)
      V4(2,I4) = V2(I2)
      V4(3,I4) = V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_VMUX_SSSVX (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      integer*8 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(I)
      V4(3,I) = V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(1)
      V4(3,I) = V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(1,I4) = V1(I1)
      V4(2,I4) = V2(I2)
      V4(3,I4) = V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_VMUX_SSSVF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      real*4 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(I)
      V4(3,I) = V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(1)
      V4(3,I) = V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(1,I4) = V1(I1)
      V4(2,I4) = V2(I2)
      V4(3,I4) = V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_VMUX_SSSVD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      real*8 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(I)
      V4(3,I) = V3(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(1,I) = V1(I)
      V4(2,I) = V2(1)
      V4(3,I) = V3(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(1,I4) = V1(I1)
      V4(2,I4) = V2(I2)
      V4(3,I4) = V3(I3)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_MAG_CSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SQRT( V1(1,I)*V1(1,I) + V1(2,I)*V1(2,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SQRT( V1(1,I1)*V1(1,I1) + V1(2,I1)*V1(2,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MAG_CSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SQRT( V1(1,I)*V1(1,I) + V1(2,I)*V1(2,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SQRT( V1(1,I1)*V1(1,I1) + V1(2,I1)*V1(2,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MAG_VSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SQRT( V1(1,I)*V1(1,I) + V1(2,I)*V1(2,I) +
     & V1(3,I)*V1(3,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SQRT( V1(1,I1)*V1(1,I1) + V1(2,I1)*V1(2,I1) +
     & V1(3,I1)*V1(3,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MAG_VSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SQRT( V1(1,I)*V1(1,I) + V1(2,I)*V1(2,I) +
     & V1(3,I)*V1(3,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SQRT( V1(1,I1)*V1(1,I1) + V1(2,I1)*V1(2,I1) +
     & V1(3,I1)*V1(3,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MAG2_CSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(1,I)*V1(1,I) + V1(2,I)*V1(2,I) 
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(1,I1)*V1(1,I1) + V1(2,I1)*V1(2,I1) 
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MAG2_CSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(1,I)*V1(1,I) + V1(2,I)*V1(2,I) 
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(1,I1)*V1(1,I1) + V1(2,I1)*V1(2,I1) 
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_PHASE_CSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAN2( V1(2,I), V1(1,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAN2( V1(2,I1), V1(1,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_PHASE_CSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAN2( V1(2,I), V1(1,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAN2( V1(2,I1), V1(1,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_PHASED_CSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAN2D( V1(2,I), V1(1,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAN2D( V1(2,I1), V1(1,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_PHASED_CSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAN2D( V1(2,I), V1(1,I) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAN2D( V1(2,I1), V1(1,I1) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_POLAR_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V2(1,I) = SQRT( T1X*T1X + T1Y*T1Y )
      V2(2,I) = ATAN2( T1Y, T1X )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = V1(2,I1)
      V2(1,I2) = SQRT( T1X*T1X + T1Y*T1Y )
      V2(2,I2) = ATAN2( T1Y, T1X )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_POLAR_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V2(1,I) = SQRT( T1X*T1X + T1Y*T1Y )
      V2(2,I) = ATAN2( T1Y, T1X )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = V1(2,I1)
      V2(1,I2) = SQRT( T1X*T1X + T1Y*T1Y )
      V2(2,I2) = ATAN2( T1Y, T1X )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_RECT_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(2,*), T1X,T1Y
      real*4 V2(2,*), T2X,T2Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V2(1,I) = T1X*(COS(T1Y))
      V2(2,I) = T1X*(SIN(T1Y))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = V1(2,I1)
      V2(1,I2) = T1X*(COS(T1Y))
      V2(2,I2) = T1X*(SIN(T1Y))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_RECT_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(2,*), T1X,T1Y
      real*8 V2(2,*), T2X,T2Y
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      T1X = V1(1,I)
      T1Y = V1(2,I)
      V2(1,I) = T1X*(COS(T1Y))
      V2(2,I) = T1X*(SIN(T1Y))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      T1X = V1(1,I1)
      T1Y = V1(2,I1)
      V2(1,I2) = T1X*(COS(T1Y))
      V2(2,I2) = T1X*(SIN(T1Y))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_LN_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0) then
        V2(I) = LOG(V1(I))
      else
        V2(I) = 0
        errno = -2
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if (V1(I2).gt.0) then
        V2(I2) = LOG(V1(I1))
      else
        V2(I2) = 0
        errno = -2
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_LN_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0) then
        V2(I) = LOG(V1(I))
      else
        V2(I) = 0
        errno = -2
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if (V1(I2).gt.0) then
        V2(I2) = LOG(V1(I1))
      else
        V2(I2) = 0
        errno = -2
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_LOG_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0) then
        V2(I) = LOG10(V1(I))
      else
        V2(I) = 0
        errno = -2
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if (V1(I2).gt.0) then
        V2(I2) = LOG10(V1(I1))
      else
        V2(I2) = 0
        errno = -2
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_LOG_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0) then
        V2(I) = LOG10(V1(I))
      else
        V2(I) = 0
        errno = -2
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if (V1(I2).gt.0) then
        V2(I2) = LOG10(V1(I1))
      else
        V2(I2) = 0
        errno = -2
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_EXP_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = EXP(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = EXP(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_EXP_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = EXP(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = EXP(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_POW_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if ((N.eq.1.or.K2.eq.0) .and. NINT(V2(1)).eq.V2(1) ) then
        call M$AOP_NPOW_SSSF (N, V1,K1, V2,K2, V3,K3)
        return
      endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = ABS(V1(I))**V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = ABS(V1(I))**V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = ABS(V1(I1))**V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_POW_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if ((N.eq.1.or.K2.eq.0) .and. NINT(V2(1)).eq.V2(1) ) then
        call M$AOP_NPOW_SSSD (N, V1,K1, V2,K2, V3,K3)
        return
      endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = ABS(V1(I))**V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = ABS(V1(I))**V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = ABS(V1(I1))**V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_NPOW_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      integer*4 NPOWER
      NPOWER = NINT(V2(1))
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)**NPOWER
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)**NPOWER
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)**NPOWER
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_NPOW_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      integer*4 NPOWER
      NPOWER = NINT(V2(1))
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I)**NPOWER
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I)**NPOWER
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1)**NPOWER
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SQRT_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SQRT(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SQRT(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SQRT_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SQRT(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SQRT(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_COS_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = COS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = COS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_COS_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = COS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = COS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SIN_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SIN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SIN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SIN_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SIN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SIN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_TAN_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = TAN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = TAN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_TAN_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = TAN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = TAN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ASIN_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ASIN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ASIN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ASIN_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ASIN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ASIN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ACOS_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ACOS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ACOS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ACOS_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ACOS(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ACOS(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAN_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAN_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAN(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAN(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAN2_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = ATAN2(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = ATAN2(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = ATAN2(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAN2_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = ATAN2(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = ATAN2(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = ATAN2(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_COSD_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = COSD(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = COSD(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_COSD_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = COSD(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = COSD(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SIND_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SIND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SIND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SIND_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = SIND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = SIND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_TAND_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = TAND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = TAND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_TAND_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = TAND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = TAND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ASIND_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ASIND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ASIND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ASIND_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ASIND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ASIND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ACOSD_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ACOSD(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ACOSD(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ACOSD_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ACOSD(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ACOSD(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAND_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAND_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ATAND(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ATAND(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAN2D_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = ATAN2D(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = ATAN2D(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = ATAN2D(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_ATAN2D_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = ATAN2D(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = ATAN2D(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = ATAN2D(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MOV_SSL (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V2
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MOV_SSX (N, V1,K1, V2,K2)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MOV_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MOV_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MOV_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_MOV_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V2,V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
      V3(I) = V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V1(I)
      V3(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(I2) = V1(I1)
      V3(I3) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
      V3(I) = V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V1(I)
      V3(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(I2) = V1(I1)
      V3(I3) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_DUPE_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
      V3(I) = V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V1(I)
      V3(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(I2) = V1(I1)
      V3(I3) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
      V3(I) = V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V1(I)
      V3(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(I2) = V1(I1)
      V3(I3) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_CCCF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      complex*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
      V3(I) = V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V1(I)
      V3(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(I2) = V1(I1)
      V3(I3) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_CCCD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      complex*16 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(I) = V1(I)
      V3(I) = V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V1(I)
      V3(I) = V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(I2) = V1(I1)
      V3(I3) = V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_VVVF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(1,I) = V1(1,I)
      V2(2,I) = V1(2,I)
      V2(3,I) = V1(3,I)
      V3(1,I) = V1(1,I)
      V3(2,I) = V1(2,I)
      V3(3,I) = V1(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1,1) = V1(1,I)
      V2(2,1) = V1(2,I)
      V2(3,1) = V1(3,I)
      V3(1,I) = V1(1,I)
      V3(2,I) = V1(2,I)
      V3(3,I) = V1(3,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(1,I2) = V1(1,I1)
      V2(2,I2) = V1(2,I1)
      V2(3,I2) = V1(3,I1)
      V3(1,I3) = V1(1,I1)
      V3(2,I3) = V1(2,I1)
      V3(3,I3) = V1(3,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_DUPE_VVVD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(3,*), T3X,T3Y,T3Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(1,I) = V1(1,I)
      V2(2,I) = V1(2,I)
      V2(3,I) = V1(3,I)
      V3(1,I) = V1(1,I)
      V3(2,I) = V1(2,I)
      V3(3,I) = V1(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1,1) = V1(1,I)
      V2(2,1) = V1(2,I)
      V2(3,1) = V1(3,I)
      V3(1,I) = V1(1,I)
      V3(2,I) = V1(2,I)
      V3(3,I) = V1(3,I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(1,I2) = V1(1,I1)
      V2(2,I2) = V1(2,I1)
      V2(3,I2) = V1(3,I1)
      V3(1,I3) = V1(1,I1)
      V3(2,I3) = V1(2,I1)
      V3(3,I3) = V1(3,I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_SSSSL (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      integer*4 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3,V4
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)
      V3(I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_SSSSX (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      integer*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)
      V3(I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SWAP_SSSSF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      real*4 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)
      V3(I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_SSSSD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      real*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)
      V3(I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_CCCCF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      complex*8 V3(*), T3(1)
      complex*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)
      V3(I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_CCCCD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      complex*16 V3(*), T3(1)
      complex*16 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(I) = V1(I)
      V3(I) = V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(I4) = V1(I1)
      V3(I3) = V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_VVVVF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(3,*), T3X,T3Y,T3Z
      real*4 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(1,I) = V1(1,I)
      V4(2,I) = V1(2,I)
      V4(3,I) = V1(3,I)
      V3(1,I) = V2(1,I)
      V3(2,I) = V2(2,I)
      V3(3,I) = V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(1,I) = V1(1,I)
      V4(2,I) = V1(2,I)
      V4(3,I) = V1(3,I)
      V3(1,I) = V2(1,1)
      V3(2,I) = V2(2,1)
      V3(3,I) = V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(1,I4) = V1(1,I1)
      V4(2,I4) = V1(2,I1)
      V4(3,I4) = V1(3,I1)
      V3(1,I3) = V2(1,I2)
      V3(2,I3) = V2(2,I2)
      V3(3,I3) = V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SWAP_VVVVD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(3,*), T3X,T3Y,T3Z
      real*8 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3,V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      V4(1,I) = V1(1,I)
      V4(2,I) = V1(2,I)
      V4(3,I) = V1(3,I)
      V3(1,I) = V2(1,I)
      V3(2,I) = V2(2,I)
      V3(3,I) = V2(3,I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      V4(1,I) = V1(1,I)
      V4(2,I) = V1(2,I)
      V4(3,I) = V1(3,I)
      V3(1,I) = V2(1,1)
      V3(2,I) = V2(2,1)
      V3(3,I) = V2(3,1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      V4(1,I4) = V1(1,I1)
      V4(2,I4) = V1(2,I1)
      V4(3,I4) = V1(3,I1)
      V3(1,I3) = V2(1,I2)
      V3(2,I3) = V2(2,I2)
      V3(3,I3) = V2(3,I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_SSSSL (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      integer*4 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V4
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(I4) = V1(I1)
      else
        V4(I4) = V2(I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_SSSSX (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      integer*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(I4) = V1(I1)
      else
        V4(I4) = V2(I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SELECT_SSSSF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      real*4 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(I4) = V1(I1)
      else
        V4(I4) = V2(I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_SSSSD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      real*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(I4) = V1(I1)
      else
        V4(I4) = V2(I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_CCSCF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      real*4 V3(*), T3(1)
      complex*8 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(I4) = V1(I1)
      else
        V4(I4) = V2(I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_CCSCD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      real*8 V3(*), T3(1)
      complex*16 V4(*), T4(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(I) = V1(I)
      else
        V4(I) = V2(1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(I4) = V1(I1)
      else
        V4(I4) = V2(I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_VVSVF (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*4 V1(3,*), T1X,T1Y,T1Z
      real*4 V2(3,*), T2X,T2Y,T2Z
      real*4 V3(*), T3(1)
      real*4 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(1,I) = V1(1,I)
        V4(2,I) = V1(2,I)
        V4(3,I) = V1(3,I)
      else
        V4(1,I) = V2(1,I)
        V4(2,I) = V2(2,I)
        V4(3,I) = V2(3,I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(1,I) = V1(1,I)
        V4(2,I) = V1(2,I)
        V4(3,I) = V1(3,I)
      else
        V4(1,I) = V2(1,1)
        V4(2,I) = V2(2,1)
        V4(3,I) = V2(3,1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(1,I4) = V1(1,I1)
        V4(2,I4) = V1(2,I1)
        V4(3,I4) = V1(3,I1)
      else
        V4(1,I4) = V2(1,I2)
        V4(2,I4) = V2(2,I2)
        V4(3,I4) = V2(3,I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_SELECT_VVSVD (N, V1,K1, V2,K2, V3,K3, V4,K4)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3, I4,K4
      real*8 V1(3,*), T1X,T1Y,T1Z
      real*8 V2(3,*), T2X,T2Y,T2Z
      real*8 V3(*), T3(1)
      real*8 V4(3,*), T4X,T4Y,T4Z
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V4
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1  .and. k4.eq.1 ) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(1,I) = V1(1,I)
        V4(2,I) = V1(2,I)
        V4(3,I) = V1(3,I)
      else
        V4(1,I) = V2(1,I)
        V4(2,I) = V2(2,I)
        V4(3,I) = V2(3,I)
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1 .and. k4.eq.1) then
        do i = 1,N
      if (V3(I).gt.0) then
        V4(1,I) = V1(1,I)
        V4(2,I) = V1(2,I)
        V4(3,I) = V1(3,I)
      else
        V4(1,I) = V2(1,1)
        V4(2,I) = V2(2,1)
        V4(3,I) = V2(3,1)
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        i4 = 1
        do i = 1,N
      if (V3(I3).gt.0) then
        V4(1,I4) = V1(1,I1)
        V4(2,I4) = V1(2,I1)
        V4(3,I4) = V1(3,I1)
      else
        V4(1,I4) = V2(1,I2)
        V4(2,I4) = V2(2,I2)
        V4(3,I4) = V2(3,I2)
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
          i4 = i4 + k4
        enddo
      endif
      return
      end

      subroutine M$AOP_MIN_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MIN(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MIN_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MIN(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MIN_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MIN(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MIN_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MIN(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MIN(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MAX_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MAX(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MAX_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MAX(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MAX_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MAX(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MAX_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MAX(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MAX(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MOD_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MOD(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MOD_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MOD(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MOD_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MOD(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MOD_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(I))
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = MOD(V1(I),V2(1))
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = MOD(V1(I1),V2(I2))
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MODFLOOR_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      integer*4 K
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(I).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).lt.0)))then
       V3(I) = MOD(V1(I),V2(I)) 
      elseif (((V1(I).gt.0).and.(V2(I).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).gt.0)))then
        K=INT(V1(I)/V2(I))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(I))
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(1).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).lt.0)))then
       V3(I) = MOD(V1(I),V2(1)) 
      elseif (((V1(I).gt.0).and.(V2(1).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).gt.0)))then
        K=INT(V1(I)/V2(1))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(1))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2) .eq. 0) then
        V3(I3) = V1(I1)
      elseif (V1(I1) .eq. 0) then
        V3(I3) = 0
      elseif (((V1(I1).gt.0).and.(V2(I2).gt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).lt.0)))then
       V3(I3) = MOD(V1(I1),V2(I2)) 
      elseif (((V1(I1).gt.0).and.(V2(I2).lt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).gt.0)))then
        K=INT(V1(I1)/V2(I2))
        K=abs(K)
        K=K+1
        V3(I3)=(V1(I1)+K*V2(I2))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MODFLOOR_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      integer*4 K
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(I).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).lt.0)))then
       V3(I) = MOD(V1(I),V2(I)) 
      elseif (((V1(I).gt.0).and.(V2(I).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).gt.0)))then
        K=INT(V1(I)/V2(I))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(I))
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(1).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).lt.0)))then
       V3(I) = MOD(V1(I),V2(1)) 
      elseif (((V1(I).gt.0).and.(V2(1).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).gt.0)))then
        K=INT(V1(I)/V2(1))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(1))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2) .eq. 0) then
        V3(I3) = V1(I1)
      elseif (V1(I1) .eq. 0) then
        V3(I3) = 0
      elseif (((V1(I1).gt.0).and.(V2(I2).gt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).lt.0)))then
       V3(I3) = MOD(V1(I1),V2(I2)) 
      elseif (((V1(I1).gt.0).and.(V2(I2).lt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).gt.0)))then
        K=INT(V1(I1)/V2(I2))
        K=abs(K)
        K=K+1
        V3(I3)=(V1(I1)+K*V2(I2))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_MODFLOOR_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      integer*4 K
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(I).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).lt.0)))then
       V3(I) = MOD(V1(I),V2(I)) 
      elseif (((V1(I).gt.0).and.(V2(I).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).gt.0)))then
        K=INT(V1(I)/V2(I))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(I))
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(1).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).lt.0)))then
       V3(I) = MOD(V1(I),V2(1)) 
      elseif (((V1(I).gt.0).and.(V2(1).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).gt.0)))then
        K=INT(V1(I)/V2(1))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(1))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2) .eq. 0) then
        V3(I3) = V1(I1)
      elseif (V1(I1) .eq. 0) then
        V3(I3) = 0
      elseif (((V1(I1).gt.0).and.(V2(I2).gt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).lt.0)))then
       V3(I3) = MOD(V1(I1),V2(I2)) 
      elseif (((V1(I1).gt.0).and.(V2(I2).lt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).gt.0)))then
        K=INT(V1(I1)/V2(I2))
        K=abs(K)
        K=K+1
        V3(I3)=(V1(I1)+K*V2(I2))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_MODFLOOR_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      integer*4 K
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V2(I) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(I).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).lt.0)))then
       V3(I) = MOD(V1(I),V2(I)) 
      elseif (((V1(I).gt.0).and.(V2(I).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(I).gt.0)))then
        K=INT(V1(I)/V2(I))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(I))
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V2(1) .eq. 0) then
        V3(I) = V1(I)
      elseif (V1(I) .eq. 0) then
        V3(I) = 0
      elseif (((V1(I).gt.0).and.(V2(1).gt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).lt.0)))then
       V3(I) = MOD(V1(I),V2(1)) 
      elseif (((V1(I).gt.0).and.(V2(1).lt.0)).or.
     & ((V1(I).lt.0).and.(V2(1).gt.0)))then
        K=INT(V1(I)/V2(1))
        K=abs(K)
        K=K+1
        V3(I)=(V1(I)+K*V2(1))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V2(I2) .eq. 0) then
        V3(I3) = V1(I1)
      elseif (V1(I1) .eq. 0) then
        V3(I3) = 0
      elseif (((V1(I1).gt.0).and.(V2(I2).gt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).lt.0)))then
       V3(I3) = MOD(V1(I1),V2(I2)) 
      elseif (((V1(I1).gt.0).and.(V2(I2).lt.0)).or.
     & ((V1(I1).lt.0).and.(V2(I2).gt.0)))then
        K=INT(V1(I1)/V2(I2))
        K=abs(K)
        K=K+1
        V3(I3)=(V1(I1)+K*V2(I2))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_FIX_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = AINT(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = AINT(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_FIX_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = DINT(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = DINT(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ROUND_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = ANINT(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = ANINT(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_ROUND_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = DNINT(V1(I))
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = DNINT(V1(I1))
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_CEIL_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if ((V1(I) .gt. 0).and.
     & ((V1(I) .gt. INT(V1(I))))) then
        V2(I) = (AINT(V1(I)) + 1)
      else
        V2(I) = AINT(V1(I))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if ((V1(I1) .gt. 0).and.
     & ((V1(I1) .gt. INT(V1(I1))))) then
        V2(I2) = (AINT(V1(I1)) + 1)
      else
        V2(I2) = AINT(V1(I1))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_CEIL_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if ((V1(I) .gt. 0).and.
     & ((V1(I) .gt. INT(V1(I))))) then
        V2(I) = (DINT(V1(I)) + 1)
      else
        V2(I) = DINT(V1(I))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if ((V1(I1) .gt. 0).and.
     & ((V1(I1) .gt. INT(V1(I1))))) then
        V2(I2) = (DINT(V1(I1)) + 1)
      else
        V2(I2) = DINT(V1(I1))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_FLOOR_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if ((V1(I) .lt. 0).and.
     & ((V1(I) .lt. INT(V1(I))))) then
        V2(I) = (AINT(V1(I)) - 1)
      else
        V2(I) = AINT(V1(I))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if ((V1(I1) .lt. 0).and.
     & ((V1(I1) .lt. INT(V1(I1))))) then
        V2(I2) = (AINT(V1(I1)) - 1)
      else
        V2(I2) = AINT(V1(I1))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_FLOOR_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      if ((V1(I) .lt. 0).and.
     & ((V1(I) .lt. INT(V1(I))))) then
        V2(I) = (DINT(V1(I)) - 1)
      else
        V2(I) = DINT(V1(I))
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      if ((V1(I1) .lt. 0).and.
     & ((V1(I1) .lt. INT(V1(I1))))) then
        V2(I2) = (DINT(V1(I1)) - 1)
      else
        V2(I2) = DINT(V1(I1))
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SUM_SSL (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V2
#endif
#endif
      V2(1) = 0
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SUM_SSX (N, V1,K1, V2,K2)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      V2(1) = 0
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SUM_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      V2(1) = 0
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SUM_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      V2(1) = 0
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SUM_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      V2(1) = 0
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SUM_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      V2(1) = 0
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_SUMS_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V2,V3
#endif
#endif
      V2(1) = 0
      V3(1) = 0
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
      V3(1) = V3(1)+V1(I1)*V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUMS_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      V2(1) = 0
      V3(1) = 0
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
      V3(1) = V3(1)+V1(I1)*V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_SUMS_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      V2(1) = 0
      V3(1) = 0
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
      V3(1) = V3(1)+V1(I1)*V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_SUMS_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2,V3
#endif
      V2(1) = 0
      V3(1) = 0
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V2(1) = V2(1)+V1(I)
      V3(1) = V3(1)+V1(I)*V1(I)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V2(1) = V2(1)+V1(I1)
      V3(1) = V3(1)+V1(I1)*V1(I1)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_NORM_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      call M$AOP_SUMS_SSSF (N, V1,K1, T1,1, T2,1)
      T1(1) = T1(1)/N
      T2(1) = T2(1)/N - T1(1)*T1(1)
      if (T2(1).gt.0) T2(1) = 1./SQRT(T2(1))
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = (V1(I)-T1(1))*T2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = (V1(I1)-T1(1))*T2(1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_NORM_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      call M$AOP_SUMS_SSSD (N, V1,K1, T1,1, T2,1)
      T1(1) = T1(1)/N
      T2(1) = T2(1)/N - T1(1)*T1(1)
      if (T2(1).gt.0) T2(1) = 1./SQRT(T2(1))
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = (V1(I)-T1(1))*T2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = (V1(I1)-T1(1))*T2(1)
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_FFT_SCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*4)
      call M$RFFT(V2,N,2)
      return
      end

      subroutine M$AOP_FFT_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*8)
      call M$CFFT(V2,N,1)
      return
      end

      subroutine M$AOP_FFT_SCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*8)
      call M$RFFTD(V2,N,2)
      return
      end

      subroutine M$AOP_FFT_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*16)
      call M$CFFTD(V2,N,1)
      return
      end

      subroutine M$AOP_IFFT_CSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*8 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*4)
      call M$RFFT(V2,N,-2)
      return
      end

      subroutine M$AOP_IFFT_CCF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*8 V1(*), T1(1)
      complex*8 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*8)
      call M$CFFT(V2,N,-1)
      return
      end

      subroutine M$AOP_IFFT_CSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*16 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*8)
      call M$RFFTD(V2,N,-2)
      return
      end

      subroutine M$AOP_IFFT_CCD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      complex*16 V1(*), T1(1)
      complex*16 V2(*), T2(1)
      common /AOPERROR/ errno
      call M$MOVE(V1,V2,N*16)
      call M$CFFTD(V2,N,-1)
      return
      end

      subroutine M$AOP_OR_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .or. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .or. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .or. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_OR_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .or. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .or. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .or. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_OR_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1e-7 .or. V2(I).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1e-7 .or. V2(1).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1e-7 .or. V2(I2).gt.1e-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_OR_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1d-7 .or. V2(I).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1d-7 .or. V2(1).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1d-7 .or. V2(I2).gt.1d-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_AND_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .and. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .and. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .and. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_AND_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .and. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .and. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .and. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_AND_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1e-7 .and. V2(I).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1e-7 .and. V2(1).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1e-7 .and. V2(I2).gt.1e-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_AND_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1d-7 .and. V2(I).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1d-7 .and. V2(1).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1d-7 .and. V2(I2).gt.1d-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_XOR_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .xor. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .xor. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .xor. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_XOR_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .xor. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .xor. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .xor. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_XOR_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1e-7 .xor. V2(I).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1e-7 .xor. V2(1).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1e-7 .xor. V2(I2).gt.1e-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_XOR_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1d-7 .xor. V2(I).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1d-7 .xor. V2(1).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1d-7 .xor. V2(I2).gt.1d-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_EQV_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .eqv. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .eqv. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .eqv. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_EQV_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.0    .eqv. V2(I).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.0    .eqv. V2(1).gt.0   ) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.0    .eqv. V2(I2).gt.0   ) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_EQV_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1e-7 .eqv. V2(I).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1e-7 .eqv. V2(1).gt.1e-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1e-7 .eqv. V2(I2).gt.1e-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_EQV_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I).gt.1d-7 .eqv. V2(I).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I).gt.1d-7 .eqv. V2(1).gt.1d-7) then
         V3(I) = 1
      else
         V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1).gt.1d-7 .eqv. V2(I2).gt.1d-7) then
         V3(I3) = 1
      else
         V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_LT_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .lt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .lt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .lt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_LT_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .lt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .lt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .lt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_LT_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .lt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .lt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .lt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_LT_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .lt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .lt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .lt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_LE_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .le. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .le. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .le. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_LE_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .le. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .le. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .le. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_LE_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .le. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .le. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .le. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_LE_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .le. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .le. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .le. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_GT_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .gt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .gt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .gt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_GT_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .gt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .gt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .gt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_GT_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .gt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .gt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .gt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_GT_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .gt. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .gt. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .gt. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_GE_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ge. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ge. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ge. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_GE_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ge. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ge. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ge. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_GE_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ge. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ge. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ge. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_GE_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ge. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ge. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ge. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_EQ_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .eq. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .eq. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .eq. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_EQ_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .eq. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .eq. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .eq. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_EQ_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .eq. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .eq. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .eq. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_EQ_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .eq. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .eq. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .eq. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_NE_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ne. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ne. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ne. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_NE_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ne. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ne. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ne. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_NE_SSSF (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      real*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ne. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ne. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ne. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_NE_SSSD (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      real*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      if (V1(I) .ne. V2(I)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      if (V1(I) .ne. V2(1)) then
        V3(I) = 1
      else
        V3(I) = 0
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      if (V1(I1) .ne. V2(I2)) then
        V3(I3) = 1
      else
        V3(I3) = 0
      endif
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_BOR_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I) .or. V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I) .or. V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1) .or. V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_BOR_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I) .or. V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I) .or. V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1) .or. V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_BAND_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I) .and. V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I) .and. V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1) .and. V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_BAND_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I) .and. V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I) .and. V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1) .and. V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_BXOR_SSSL (N, V1,K1, V2,K2, V3,K3)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      integer*4 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V3
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I) .xor. V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I) .xor. V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1) .xor. V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
      return
      end

      subroutine M$AOP_BXOR_SSSX (N, V1,K1, V2,K2, V3,K3)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2, I3,K3
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      integer*8 V3(*), T3(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V3
#endif
      if (k1.eq.1 .and. k2.eq.1  .and. k3.eq.1 ) then
        do i = 1,N
      V3(I) = V1(I) .xor. V2(I)
        enddo
      elseif (k1.eq.1 .and. k2.eq.0 .and. k3.eq.1) then
        do i = 1,N
      V3(I) = V1(I) .xor. V2(1)
        enddo
      else
        i1 = 1
        i2 = 1
        i3 = 1
        do i = 1,N
      V3(I3) = V1(I1) .xor. V2(I2)
          i1 = i1 + k1
          i2 = i2 + k2
          i3 = i3 + k3
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_BNOT_SSL (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      integer*4 V1(*), T1(1)
      integer*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_PFC
#if !_GFC
      VOLATILE V2
#endif
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = not(V1(I)) 
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = not(V1(I1)) 
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_BNOT_SSX (N, V1,K1, V2,K2)
      implicit none
#if _PFC
      call M$ERROR('No type X support in Promula')
#else
      integer*4 N,I,errno, I1,K1, I2,K2
      integer*8 V1(*), T1(1)
      integer*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = not(V1(I)) 
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = not(V1(I1)) 
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
#endif
      return
      end

      subroutine M$AOP_POWER2_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      integer*4 M$POWER2GE,temp
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      temp = NINT( V1(I) )
      if (temp .lt. V1(I)) then
        V2(I) = M$POWER2GE( temp + 1)
      else
        V2(I) = M$POWER2GE( temp )
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      temp = NINT( V1(I1) )
      if (temp .lt. V1(I1)) then
        V2(I2) = M$POWER2GE( temp + 1)
      else
        V2(I2) = M$POWER2GE( temp )
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_POWER2_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      integer*4 M$POWER2GE,temp
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      temp = NINT( V1(I) )
      if (temp .lt. V1(I)) then
        V2(I) = M$POWER2GE( temp + 1)
      else
        V2(I) = M$POWER2GE( temp )
      endif
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      temp = NINT( V1(I1) )
      if (temp .lt. V1(I1)) then
        V2(I2) = M$POWER2GE( temp + 1)
      else
        V2(I2) = M$POWER2GE( temp )
      endif
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_POWER2L_SSF (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*4 V1(*), T1(1)
      real*4 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      integer*4 M$POWER2LE
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = M$POWER2LE( INT(V1(I)) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = M$POWER2LE( INT(V1(I1)) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_POWER2L_SSD (N, V1,K1, V2,K2)
      implicit none
      integer*4 N,I,errno, I1,K1, I2,K2
      real*8 V1(*), T1(1)
      real*8 V2(*), T2(1)
      common /AOPERROR/ errno
#if !_GFC
      VOLATILE V2
#endif
      integer*4 M$POWER2LE
      if (k1.eq.1 .and. k2.eq.1 ) then
        do i = 1,N
      V2(I) = M$POWER2LE( INT(V1(I)) )
        enddo
      else
        i1 = 1
        i2 = 1
        do i = 1,N
      V2(I2) = M$POWER2LE( INT(V1(I1)) )
          i1 = i1 + k1
          i2 = i2 + k2
        enddo
      endif
      return
      end

      subroutine M$AOP_RAND_SF (N, V1,K1)
      implicit none
      integer*4 N,I,errno, I1,K1
      real*4 V1(*), T1(1)
      common /AOPERROR/ errno
      real*8 a,b,t26,bi,sis
      parameter (a=67081293.0d0,b=14181771.0d0,t26=67108864.0d0)
      integer*4 seed /123456789/
      save seed
      sis = DBLE(seed) / t26
      bi  = b / t26
      if (k1.eq.1) then
        do i = 1,N
      sis = sis*a + bi
      sis = sis - INT(sis)
      V1(I) = sis
        enddo
      else
        i1 = 1
        do i = 1,N
      sis = sis*a + bi
      sis = sis - INT(sis)
      V1(I1) = sis
          i1 = i1 + k1
        enddo
      endif
      seed = INT(sis*t26)
      return
      end

      subroutine M$AOP_RAND_SD (N, V1,K1)
      implicit none
      integer*4 N,I,errno, I1,K1
      real*8 V1(*), T1(1)
      common /AOPERROR/ errno
      real*8 a,b,t26,bi,sis
      parameter (a=67081293.0d0,b=14181771.0d0,t26=67108864.0d0)
      integer*4 seed /123456789/
      save seed
      sis = DBLE(seed) / t26
      bi  = b / t26
      if (k1.eq.1) then
        do i = 1,N
      sis = sis*a + bi
      sis = sis - INT(sis)
      V1(I) = sis
        enddo
      else
        i1 = 1
        do i = 1,N
      sis = sis*a + bi
      sis = sis - INT(sis)
      V1(I1) = sis
          i1 = i1 + k1
        enddo
      endif
      seed = INT(sis*t26)
      return
      end

