Coverage Report

Created: 2023-09-25 06:05

/src/igraph/vendor/lapack/dcopy.c
Line
Count
Source (jump to first uncovered line)
1
/*  -- translated by f2c (version 20191129).
2
   You must link the resulting object file with libf2c:
3
  on Microsoft Windows system, link with libf2c.lib;
4
  on Linux or Unix systems, link with .../path/to/libf2c.a -lm
5
  or, if you install libf2c.a in a standard place, with -lf2c -lm
6
  -- in that order, at the end of the command line, as in
7
    cc *.o -lf2c -lm
8
  Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
9
10
    http://www.netlib.org/f2c/libf2c.zip
11
*/
12
13
#include "f2c.h"
14
15
/* > \brief \b DCOPY   
16
17
    =========== DOCUMENTATION ===========   
18
19
   Online html documentation available at   
20
              http://www.netlib.org/lapack/explore-html/   
21
22
    Definition:   
23
    ===========   
24
25
         SUBROUTINE DCOPY(N,DX,INCX,DY,INCY)   
26
27
         INTEGER INCX,INCY,N   
28
         DOUBLE PRECISION DX(*),DY(*)   
29
30
31
   > \par Purpose:   
32
    =============   
33
   >   
34
   > \verbatim   
35
   >   
36
   >    DCOPY copies a vector, x, to a vector, y.   
37
   >    uses unrolled loops for increments equal to 1.   
38
   > \endverbatim   
39
40
    Arguments:   
41
    ==========   
42
43
   > \param[in] N   
44
   > \verbatim   
45
   >          N is INTEGER   
46
   >         number of elements in input vector(s)   
47
   > \endverbatim   
48
   >   
49
   > \param[in] DX   
50
   > \verbatim   
51
   >          DX is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCX ) )   
52
   > \endverbatim   
53
   >   
54
   > \param[in] INCX   
55
   > \verbatim   
56
   >          INCX is INTEGER   
57
   >         storage spacing between elements of DX   
58
   > \endverbatim   
59
   >   
60
   > \param[out] DY   
61
   > \verbatim   
62
   >          DY is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCY ) )   
63
   > \endverbatim   
64
   >   
65
   > \param[in] INCY   
66
   > \verbatim   
67
   >          INCY is INTEGER   
68
   >         storage spacing between elements of DY   
69
   > \endverbatim   
70
71
    Authors:   
72
    ========   
73
74
   > \author Univ. of Tennessee   
75
   > \author Univ. of California Berkeley   
76
   > \author Univ. of Colorado Denver   
77
   > \author NAG Ltd.   
78
79
   > \date November 2017   
80
81
   > \ingroup double_blas_level1   
82
83
   > \par Further Details:   
84
    =====================   
85
   >   
86
   > \verbatim   
87
   >   
88
   >     jack dongarra, linpack, 3/11/78.   
89
   >     modified 12/3/93, array(1) declarations changed to array(*)   
90
   > \endverbatim   
91
   >   
92
    =====================================================================   
93
   Subroutine */ int igraphdcopy_(integer *n, doublereal *dx, integer *incx, 
94
  doublereal *dy, integer *incy)
95
0
{
96
    /* System generated locals */
97
0
    integer i__1;
98
99
    /* Local variables */
100
0
    integer i__, m, ix, iy, mp1;
101
102
103
/*  -- Reference BLAS level1 routine (version 3.8.0) --   
104
    -- Reference BLAS is a software package provided by Univ. of Tennessee,    --   
105
    -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--   
106
       November 2017   
107
108
109
    =====================================================================   
110
111
       Parameter adjustments */
112
0
    --dy;
113
0
    --dx;
114
115
    /* Function Body */
116
0
    if (*n <= 0) {
117
0
  return 0;
118
0
    }
119
0
    if (*incx == 1 && *incy == 1) {
120
121
/*        code for both increments equal to 1   
122
123
124
          clean-up loop */
125
126
0
  m = *n % 7;
127
0
  if (m != 0) {
128
0
      i__1 = m;
129
0
      for (i__ = 1; i__ <= i__1; ++i__) {
130
0
    dy[i__] = dx[i__];
131
0
      }
132
0
      if (*n < 7) {
133
0
    return 0;
134
0
      }
135
0
  }
136
0
  mp1 = m + 1;
137
0
  i__1 = *n;
138
0
  for (i__ = mp1; i__ <= i__1; i__ += 7) {
139
0
      dy[i__] = dx[i__];
140
0
      dy[i__ + 1] = dx[i__ + 1];
141
0
      dy[i__ + 2] = dx[i__ + 2];
142
0
      dy[i__ + 3] = dx[i__ + 3];
143
0
      dy[i__ + 4] = dx[i__ + 4];
144
0
      dy[i__ + 5] = dx[i__ + 5];
145
0
      dy[i__ + 6] = dx[i__ + 6];
146
0
  }
147
0
    } else {
148
149
/*        code for unequal increments or equal increments   
150
            not equal to 1 */
151
152
0
  ix = 1;
153
0
  iy = 1;
154
0
  if (*incx < 0) {
155
0
      ix = (-(*n) + 1) * *incx + 1;
156
0
  }
157
0
  if (*incy < 0) {
158
0
      iy = (-(*n) + 1) * *incy + 1;
159
0
  }
160
0
  i__1 = *n;
161
0
  for (i__ = 1; i__ <= i__1; ++i__) {
162
0
      dy[iy] = dx[ix];
163
0
      ix += *incx;
164
0
      iy += *incy;
165
0
  }
166
0
    }
167
0
    return 0;
168
0
} /* igraphdcopy_ */
169