Actual source code: fmaxpy.F90
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: end
25: subroutine FortranMAXPY3(x,a0,a1,a2,y0,y1,y2,n)
26: implicit none
27: PetscScalar a0,a1,a2,x(*)
28: PetscScalar y0(*),y1(*),y2(*)
29: PetscInt n
30: PetscInt i
31: PETSC_AssertAlignx(16,x(1))
32: PETSC_AssertAlignx(16,y0(1))
33: PETSC_AssertAlignx(16,y1(1))
34: PETSC_AssertAlignx(16,y2(1))
35: do 10,i=1,n
36: x(i) = x(i) + (a0*y0(i) + a1*y1(i) + a2*y2(i))
37: 10 continue
38: end
40: Subroutine FortranMAXPY2(x, a0, a1, y0, y1, n)
41: implicit none
42: PetscScalar a0,a1,x(*)
43: PetscScalar y0(*),y1(*)
44: PetscInt n, i
45: PETSC_AssertAlignx(16,x(1))
46: PETSC_AssertAlignx(16,y0(1))
47: PETSC_AssertAlignx(16,y1(1))
48: do i=1,n
49: x(i) = x(i) + (a0*y0(i) + a1*y1(i))
50: enddo
51: end