~ubuntu-branches/ubuntu/trusty/nwchem/trusty-proposed

« back to all changes in this revision

Viewing changes to src/blas/double/dnrm2.f

  • Committer: Package Import Robot
  • Author(s): Michael Banck, Daniel Leidert, Andreas Tille, Michael Banck
  • Date: 2013-07-04 12:14:55 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130704121455-5tvsx2qabor3nrui
Tags: 6.3-1
* New upstream release.
* Fixes anisotropic properties (Closes: #696361).
* New features include:
  + Multi-reference coupled cluster (MRCC) approaches
  + Hybrid DFT calculations with short-range HF 
  + New density-functionals including Minnesota (M08, M11) and HSE hybrid
    functionals
  + X-ray absorption spectroscopy (XAS) with TDDFT
  + Analytical gradients for the COSMO solvation model
  + Transition densities from TDDFT 
  + DFT+U and Electron-Transfer (ET) methods for plane wave calculations
  + Exploitation of space group symmetry in plane wave geometry optimizations
  + Local density of states (LDOS) collective variable added to Metadynamics
  + Various new XC functionals added for plane wave calculations, including
    hybrid and range-corrected ones
  + Electric field gradients with relativistic corrections 
  + Nudged Elastic Band optimization method
  + Updated basis sets and ECPs 

[ Daniel Leidert ]
* debian/watch: Fixed.

[ Andreas Tille ]
* debian/upstream: References

[ Michael Banck ]
* debian/upstream (Name): New field.
* debian/patches/02_makefile_flags.patch: Refreshed.
* debian/patches/06_statfs_kfreebsd.patch: Likewise.
* debian/patches/07_ga_target_force_linux.patch: Likewise.
* debian/patches/05_avoid_inline_assembler.patch: Removed, no longer needed.
* debian/patches/09_backported_6.1.1_fixes.patch: Likewise.
* debian/control (Build-Depends): Added gfortran-4.7 and gcc-4.7.
* debian/patches/10_force_gcc-4.7.patch: New patch, explicitly sets
  gfortran-4.7 and gcc-4.7, fixes test suite hang with gcc-4.8 (Closes:
  #701328, #713262).
* debian/testsuite: Added tests for COSMO analytical gradients and MRCC.
* debian/rules (MRCC_METHODS): New variable, required to enable MRCC methods.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
      DOUBLE PRECISION FUNCTION DNRM2 ( N, X, INCX )
2
 
*
3
 
* $Id: dnrm2.f 19695 2010-10-29 16:51:02Z d3y133 $
 
1
*> \brief \b DNRM2
 
2
*
 
3
*  =========== DOCUMENTATION ===========
 
4
*
 
5
* Online html documentation available at 
 
6
*            http://www.netlib.org/lapack/explore-html/ 
 
7
*
 
8
*  Definition:
 
9
*  ===========
 
10
*
 
11
*       DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
 
12
 
13
*       .. Scalar Arguments ..
 
14
*       INTEGER INCX,N
 
15
*       ..
 
16
*       .. Array Arguments ..
 
17
*       DOUBLE PRECISION X(*)
 
18
*       ..
 
19
*  
 
20
*
 
21
*> \par Purpose:
 
22
*  =============
 
23
*>
 
24
*> \verbatim
 
25
*>
 
26
*> DNRM2 returns the euclidean norm of a vector via the function
 
27
*> name, so that
 
28
*>
 
29
*>    DNRM2 := sqrt( x'*x )
 
30
*> \endverbatim
 
31
*
 
32
*  Authors:
 
33
*  ========
 
34
*
 
35
*> \author Univ. of Tennessee 
 
36
*> \author Univ. of California Berkeley 
 
37
*> \author Univ. of Colorado Denver 
 
38
*> \author NAG Ltd. 
 
39
*
 
40
*> \date November 2011
 
41
*
 
42
*> \ingroup double_blas_level1
 
43
*
 
44
*> \par Further Details:
 
45
*  =====================
 
46
*>
 
47
*> \verbatim
 
48
*>
 
49
*>  -- This version written on 25-October-1982.
 
50
*>     Modified on 14-October-1993 to inline the call to DLASSQ.
 
51
*>     Sven Hammarling, Nag Ltd.
 
52
*> \endverbatim
 
53
*>
 
54
*  =====================================================================
 
55
      DOUBLE PRECISION FUNCTION DNRM2(N,X,INCX)
 
56
*
 
57
*  -- Reference BLAS level1 routine (version 3.4.0) --
 
58
*  -- Reference BLAS is a software package provided by Univ. of Tennessee,    --
 
59
*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 
60
*     November 2011
4
61
*
5
62
*     .. Scalar Arguments ..
6
 
      INTEGER                           INCX, N
 
63
      INTEGER INCX,N
 
64
*     ..
7
65
*     .. Array Arguments ..
8
 
      DOUBLE PRECISION                  X( * )
 
66
      DOUBLE PRECISION X(*)
9
67
*     ..
10
68
*
11
 
*  DNRM2 returns the euclidean norm of a vector via the function
12
 
*  name, so that
13
 
*
14
 
*     DNRM2 := sqrt( x'*x )
15
 
*
16
 
*
17
 
*
18
 
*  -- This version written on 25-October-1982.
19
 
*     Modified on 14-October-1993 to inline the call to DLASSQ.
20
 
*     Sven Hammarling, Nag Ltd.
21
 
*
 
69
*  =====================================================================
22
70
*
23
71
*     .. Parameters ..
24
 
      DOUBLE PRECISION      ONE         , ZERO
25
 
      PARAMETER           ( ONE = 1.0D+0, ZERO = 0.0D+0 )
 
72
      DOUBLE PRECISION ONE,ZERO
 
73
      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
 
74
*     ..
26
75
*     .. Local Scalars ..
27
 
      INTEGER               IX
28
 
      DOUBLE PRECISION      ABSXI, NORM, SCALE, SSQ
 
76
      DOUBLE PRECISION ABSXI,NORM,SCALE,SSQ
 
77
      INTEGER IX
 
78
*     ..
29
79
*     .. Intrinsic Functions ..
30
 
      INTRINSIC             ABS, SQRT
 
80
      INTRINSIC ABS,SQRT
31
81
*     ..
32
 
*     .. Executable Statements ..
33
 
      IF( N.LT.1 .OR. INCX.LT.1 )THEN
34
 
         NORM  = ZERO
35
 
      ELSE IF( N.EQ.1 )THEN
36
 
         NORM  = ABS( X( 1 ) )
 
82
      IF (N.LT.1 .OR. INCX.LT.1) THEN
 
83
          NORM = ZERO
 
84
      ELSE IF (N.EQ.1) THEN
 
85
          NORM = ABS(X(1))
37
86
      ELSE
38
 
         SCALE = ZERO
39
 
         SSQ   = ONE
 
87
          SCALE = ZERO
 
88
          SSQ = ONE
40
89
*        The following loop is equivalent to this call to the LAPACK
41
90
*        auxiliary routine:
42
91
*        CALL DLASSQ( N, X, INCX, SCALE, SSQ )
43
92
*
44
 
         DO 10, IX = 1, 1 + ( N - 1 )*INCX, INCX
45
 
            IF( X( IX ).NE.ZERO )THEN
46
 
               ABSXI = ABS( X( IX ) )
47
 
               IF( SCALE.LT.ABSXI )THEN
48
 
                  SSQ   = ONE   + SSQ*( SCALE/ABSXI )**2
49
 
                  SCALE = ABSXI
50
 
               ELSE
51
 
                  SSQ   = SSQ   +     ( ABSXI/SCALE )**2
52
 
               END IF
53
 
            END IF
54
 
   10    CONTINUE
55
 
         NORM  = SCALE * SQRT( SSQ )
 
93
          DO 10 IX = 1,1 + (N-1)*INCX,INCX
 
94
              IF (X(IX).NE.ZERO) THEN
 
95
                  ABSXI = ABS(X(IX))
 
96
                  IF (SCALE.LT.ABSXI) THEN
 
97
                      SSQ = ONE + SSQ* (SCALE/ABSXI)**2
 
98
                      SCALE = ABSXI
 
99
                  ELSE
 
100
                      SSQ = SSQ + (ABSXI/SCALE)**2
 
101
                  END IF
 
102
              END IF
 
103
   10     CONTINUE
 
104
          NORM = SCALE*SQRT(SSQ)
56
105
      END IF
57
106
*
58
107
      DNRM2 = NORM