The TELEMAC-MASCARET system  trunk
somme2.f
Go to the documentation of this file.
1 ! ********************************
2  DOUBLE PRECISION FUNCTION somme2
3 ! ********************************
4 !
5  &( x , npx )
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief SUMS THE COMPONENTS OF A VECTOR WHILE MINIMISING
12 !+ THE TRUNCATION ERRORS.+
13 !
14 !reference GOLDBERG, DAVID 1991. WHAT EVERY COMPUTER SCIENTIST
15 !+ SHOULD KNOW ABOUT FLOATING-POINT ARITHMETIC, ACM COMPUTING
16 !+ SURVEYS, 23(1), PP5-48 (CORRIGENDUM, COMPUTING SURVEYS, 1991, 23(3))
17 !+(ARTICLE REPRODUCED IN THE NUMERICAL COMPUTATION GUIDE OF SUN
18 !+ MICROSYSTEM, HTTP://DOCS.SUN.COM )
19 !reference KNUTH, D.E. 1981. THE ART OF PROGRAMMING.
20 !+ ADDISON-WESLEY, READING, MASS., VOL. II, 2ND ED.
21 !+ PROOF P 572
22 !
23 !history A. DESITTER (NAG)
24 !+ 08/12/98
25 !+ V5P1
26 !+
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 13/07/2010
30 !+ V6P0
31 !+ Translation of French comments within the FORTRAN sources into
32 !+ English comments
33 !
34 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
35 !+ 21/08/2010
36 !+ V6P0
37 !+ Creation of DOXYGEN tags for automated documentation and
38 !+ cross-referencing of the FORTRAN sources
39 !
40 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41 !| NPX |-->| SIZE OF X
42 !| X |-->| ARRAY TO SUM
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !
46  IMPLICIT NONE
47 !
48 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
49 !
50  INTEGER, INTENT(IN) :: NPX
51 !
52  DOUBLE PRECISION, INTENT(IN) :: X(*)
53 !
54 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
55 !
56  INTEGER I
57  DOUBLE PRECISION C,Y,T
58 !
59 !-----------------------------------------------------------------------
60 ! KAHAN SUMMATION FORMULA
61 !
62  somme2 = x(1)
63  c = 0.d0
64  DO i = 2 , npx
65  y = x(i) - c
66  t = somme2 + y
67  c = (t - somme2) - y
68  somme2 = t
69  ENDDO
70 !
71 !-----------------------------------------------------------------------
72 !
73  RETURN
74  END
double precision function somme2(X, NPX)
Definition: somme2.f:7