Actual source code: fnorm.F
1: !
2: ! "$Id: fnorm.F,v 1.9 2001/08/07 03:05:24 balay Exp $";
3: !
4: ! Fortran kernel for the Norm() vector routine
5: !
6: #include include/finclude/petscdef.h
7: !
8: subroutine FortranNormSqr(x,n,sum1)
9: implicit none
10: PetscScalar x(*)
11: PetscReal sum1
12: integer n
14: integer i
16: do 10,i=1,n
17: sum1 = sum1 + PetscRealPart(x(i)*PetscConj(x(i)))
18: 10 continue
20: return
21: end
24: subroutine FortranNormSqrUnroll(x,n,sum1)
25: implicit none
26: PetscScalar x(*)
27: PetscReal sum1
28: integer n
30: integer i
32: do 10,i=1,n,4
33: sum1 = sum1 + PetscRealPart(x(i)*PetscConj(x(i))) &
34: & + PetscRealPart(x(i+1)*PetscConj(x(i+1))) &
35: & + PetscRealPart(x(i+2)*PetscConj(x(i+2))) &
36: & + PetscRealPart(x(i+3)*PetscConj(x(i+3)))
37: 10 continue
39: return
40: end