Logo ROOT  
Reference Guide
mndaxpy.cxx
Go to the documentation of this file.
1 // @(#)root/minuit2:$Id$
2 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3 
4 /**********************************************************************
5  * *
6  * Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7  * *
8  **********************************************************************/
9 
10 /* daxpy.f -- translated by f2c (version 20010320).
11  You must link the resulting object file with the libraries:
12  -lf2c -lm (in that order)
13 */
14 
15 namespace ROOT {
16 
17 namespace Minuit2 {
18 
19 int Mndaxpy(unsigned int n, double da, const double *dx, int incx, double *dy, int incy)
20 {
21  /* System generated locals */
22  int i__1;
23 
24  /* Local variables */
25  int i__, m, ix, iy, mp1;
26 
27  /* constant times a vector plus a vector. */
28  /* uses unrolled loops for increments equal to one. */
29  /* jack dongarra, linpack, 3/11/78. */
30  /* modified 12/3/93, array(1) declarations changed to array(*) */
31 
32  /* Parameter adjustments */
33  --dy;
34  --dx;
35 
36  /* Function Body */
37  if (n <= 0) {
38  return 0;
39  }
40  if (da == 0.) {
41  return 0;
42  }
43  if (incx == 1 && incy == 1) {
44  goto L20;
45  }
46 
47  /* code for unequal increments or equal increments */
48  /* not equal to 1 */
49 
50  ix = 1;
51  iy = 1;
52  if (incx < 0) {
53  ix = (-static_cast<int>(n) + 1) * incx + 1;
54  }
55  if (incy < 0) {
56  iy = (-static_cast<int>(n) + 1) * incy + 1;
57  }
58  i__1 = n;
59  for (i__ = 1; i__ <= i__1; ++i__) {
60  dy[iy] += da * dx[ix];
61  ix += incx;
62  iy += incy;
63  /* L10: */
64  }
65  return 0;
66 
67  /* code for both increments equal to 1 */
68 
69  /* clean-up loop */
70 
71 L20:
72  m = n % 4;
73  if (m == 0) {
74  goto L40;
75  }
76  i__1 = m;
77  for (i__ = 1; i__ <= i__1; ++i__) {
78  dy[i__] += da * dx[i__];
79  /* L30: */
80  }
81  if (n < 4) {
82  return 0;
83  }
84 L40:
85  mp1 = m + 1;
86  i__1 = n;
87  for (i__ = mp1; i__ <= i__1; i__ += 4) {
88  dy[i__] += da * dx[i__];
89  dy[i__ + 1] += da * dx[i__ + 1];
90  dy[i__ + 2] += da * dx[i__ + 2];
91  dy[i__ + 3] += da * dx[i__ + 3];
92  /* L50: */
93  }
94  return 0;
95 } /* daxpy_ */
96 
97 } // namespace Minuit2
98 
99 } // namespace ROOT
m
auto * m
Definition: textangle.C:8
n
const Int_t n
Definition: legend1.C:16
ROOT::Minuit2::Mndaxpy
int Mndaxpy(unsigned int, double, const double *, int, double *, int)
Definition: mndaxpy.cxx:19
ROOT
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: EExecutionPolicy.hxx:4