Actual source code: fmaxpy.F
petsc-3.10.5 2019-03-28
Report Typos and Errors

      1: !
      2: !
      3: !    Fortran kernel for the MAXPY() vector routine
      4: !
      5: #include <petsc/finclude/petscsys.h>
      6: !

      8:       Subroutine FortranMAXPY4(x, a0, a1, a2, a3, y0, y1, y2, y3, n)
      9:       implicit none
     10:       PetscScalar  a0,a1,a2,a3
     11:       PetscScalar  x(*),y0(*)
     12:       PetscScalar y1(*),y2(*),y3(*)
     13:       PetscInt n, i

     15:       PETSC_AssertAlignx(16,x(1))
     16:       PETSC_AssertAlignx(16,y0(1))
     17:       PETSC_AssertAlignx(16,y1(1))
     18:       PETSC_AssertAlignx(16,Y2(1))
     19:       PETSC_AssertAlignx(16,Y3(1))
     20:       do i=1,n
     21:           x(i)  = x(i) + a0*y0(i) + a1*y1(i) + a2*y2(i) + a3*y3(i)
     22:       enddo
     23:       return
     24:       end

     26:       subroutine FortranMAXPY3(x,a0,a1,a2,y0,y1,y2,n)
     27:       implicit none
     28:       PetscScalar  a0,a1,a2,x(*)
     29:       PetscScalar y0(*),y1(*),y2(*)
     30:       PetscInt n
     31:       PetscInt i
     32:       PETSC_AssertAlignx(16,x(1))
     33:       PETSC_AssertAlignx(16,y0(1))
     34:       PETSC_AssertAlignx(16,y1(1))
     35:       PETSC_AssertAlignx(16,y2(1))
     36:       do 10,i=1,n
     37:          x(i) = x(i) + a0*y0(i) + a1*y1(i) + a2*y2(i)
     38:   10  continue
     39:       return
     40:       end

     42:       Subroutine FortranMAXPY2(x, a0, a1, y0, y1, n)
     43:       implicit none
     44:       PetscScalar  a0,a1,x(*)
     45:       PetscScalar  y0(*),y1(*)
     46:       PetscInt n, i
     47:       PETSC_AssertAlignx(16,x(1))
     48:       PETSC_AssertAlignx(16,y0(1))
     49:       PETSC_AssertAlignx(16,y1(1))
     50:       do i=1,n
     51:           x(i)  = x(i) + a0*y0(i) + a1*y1(i)
     52:       enddo
     53:       return
     54:       end