10#ifndef ROOT_Minuit2_LAVector
11#define ROOT_Minuit2_LAVector
29int Mndaxpy(
unsigned int,
double,
const double*,
int,
double*,
int);
30int Mndscal(
unsigned int,
double,
double*,
int);
31int Mndspmv(
const char*,
unsigned int,
double,
const double*,
const double*,
int,
double,
double*,
int);
84 template<
class A,
class B,
class T>
87 (*this) =
sum.Obj().A();
88 (*this) +=
sum.Obj().B();
92 template<
class A,
class T>
98 (*this) =
sum.Obj().B();
100 (*this) +=
sum.Obj().A();
105 template<
class A,
class T>
108 (*this) = something.Obj();
109 (*this) *= something.f();
117 Mndspmv(
"U",
fSize, prod.f()*prod.Obj().A().f()*prod.Obj().B().f(), prod.Obj().A().Obj().Data(), prod.Obj().B().Obj().Data(), 1, 0.,
fData, 1);
122 LAVector(
const ABObj<
vec,
ABSum<
ABObj<
vec,
ABProd<
ABObj<sym, LASymMatrix, T>,
ABObj<vec, LAVector, T> >,
T>,
ABObj<vec, LAVector, T> >,
T>& prod) :
fSize(0),
fData(0) {
123 (*this) = prod.Obj().B();
124 (*this) += prod.Obj().A();
125 (*this) *=
double(prod.f());
146 assert(
fSize==
m.Obj().size());
147 if(
m.Obj().Data()==
fData) {
156 template<
class A,
class T>
165 Mndspmv(
"U",
fSize, prod.f()*prod.Obj().A().f()*prod.Obj().B().f(), prod.Obj().A().Obj().Data(), prod.Obj().B().Data(), 1, 1.,
fData, 1);
214 assert(
fSize ==
v.Obj().size());
216 memcpy(
fData,
v.Obj().Data(),
fSize*
sizeof(
double));
221 template<
class A,
class T>
225 (*this) = something.Obj();
231 (*this) *= something.f();
235 template<
class A,
class B,
class T>
238 (*this) =
sum.Obj().A();
239 (*this) +=
sum.Obj().B();
242 tmp +=
sum.Obj().B();
250 template<
class A,
class T>
253 (*this) =
sum.Obj().B();
254 (*this) +=
sum.Obj().A();
257 tmp +=
sum.Obj().B();
269 fSize = prod.Obj().B().Obj().size();
271 Mndspmv(
"U",
fSize,
double(prod.f()*prod.Obj().A().f()*prod.Obj().B().f()), prod.Obj().A().Obj().Data(), prod.Obj().B().Obj().Data(), 1, 0.,
fData, 1);
275 Mndspmv(
"U",
fSize,
double(prod.f()*prod.Obj().A().f()), prod.Obj().A().Obj().Data(), tmp.
Data(), 1, 0.,
fData, 1);
282 LAVector&
operator=(
const ABObj<
vec,
ABSum<
ABObj<
vec,
ABProd<
ABObj<sym, LASymMatrix, T>,
ABObj<vec, LAVector, T> >,
T>,
ABObj<vec, LAVector, T> >,
T>& prod) {
284 (*this) = prod.Obj().B();
285 (*this) += prod.Obj().A();
289 tmp += prod.Obj().A();
LAVector & operator=(const ABObj< vec, ABSum< ABObj< vec, A, T >, ABObj< vec, B, T > >, T > &sum)
const double * Data() const
LAVector & operator*=(double scal)
unsigned int size() const
double operator[](unsigned int i) const
double operator()(unsigned int i) const
LAVector & operator+=(const LAVector &m)
LAVector(const ABObj< vec, ABProd< ABObj< sym, LASymMatrix, T >, ABObj< vec, LAVector, T > >, T > &prod)
LAVector(const ABObj< vec, ABObj< vec, A, T >, T > &something)
LAVector & operator=(const ABObj< vec, LAVector, T > &v)
LAVector(const ABObj< vec, ABSum< ABObj< vec, A, T >, ABObj< vec, B, T > >, T > &sum)
double & operator[](unsigned int i)
LAVector & operator=(const ABObj< vec, ABObj< vec, A, T >, T > &something)
LAVector & operator=(const LAVector &v)
LAVector(const ABObj< vec, ABSum< ABObj< vec, LAVector, T >, ABObj< vec, A, T > >, T > &sum)
LAVector & operator+=(const ABObj< vec, A, T > &m)
LAVector(const ABObj< vec, ABSum< ABObj< vec, ABProd< ABObj< sym, LASymMatrix, T >, ABObj< vec, LAVector, T > >, T >, ABObj< vec, LAVector, T > >, T > &prod)
LAVector(const ABObj< vec, LAVector, T > &v)
LAVector & operator-=(const LAVector &m)
LAVector(const LAVector &v)
LAVector & operator=(const ABObj< vec, ABSum< ABObj< vec, ABProd< ABObj< sym, LASymMatrix, T >, ABObj< vec, LAVector, T > >, T >, ABObj< vec, LAVector, T > >, T > &prod)
double & operator()(unsigned int i)
LAVector & operator=(const ABObj< vec, ABSum< ABObj< vec, LAVector, T >, ABObj< vec, A, T > >, T > &sum)
LAVector & operator=(const ABObj< vec, ABProd< ABObj< sym, LASymMatrix, T >, ABObj< vec, LAVector, T > >, T > &prod)
LAVector & operator+=(const ABObj< vec, ABProd< ABObj< sym, LASymMatrix, T >, ABObj< vec, LAVector, T > >, T > &prod)
LAVector & operator+=(const ABObj< vec, LAVector, T > &m)
static StackAllocator & Get()
void * Allocate(size_t nBytes)
RPY_EXPORTED TCppObject_t Allocate(TCppType_t type)
int Mndaxpy(unsigned int, double, const double *, int, double *, int)
int Mndscal(unsigned int, double, double *, int)
int Mndspmv(const char *, unsigned int, double, const double *, const double *, int, double, double *, int)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
static long int sum(long int i)