9#ifndef TBCI_VECTOR_EXTRA_H
10#define TBCI_VECTOR_EXTRA_H
12#include "tbci/vector.h"
13#include "tbci/matrix.h"
16#if !defined(NO_GD) && !defined(AUTO_DECL)
17# include "tbci/vector_extra_gd.h"
27 const unsigned long dim =
b.size();
29 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim, s);
30 do_vec_vec_mul<T> (dim, &s.
setval(0), &
a.getcref(0), &
b.getcref(0));
38 const unsigned long dim =
b.size();
39 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim,
a);
40 do_vec_mul_vec<T> (dim, &
a.setval(0), &
b.getcref(0));
48 const unsigned long dim =
b.size();
49 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim,
b);
50 do_vec_mul_vec<T> (dim, &
b.setval(0), &
a.getcref(0));
58 const unsigned long dim =
b.size();
59 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim,
a);
60 do_vec_mul_vec<T> (dim, &
a.setval(0), &
b.getcref(0));
61 b.destroy ();
return a;
68 const unsigned long dim =
b.size();
70 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim, s);
71 do_vec_vec_cmul<T> (dim, &s.
setval(0), &
a.getcref(0), &
b.getcref(0));
79 const unsigned long dim =
b.size();
80 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim,
a);
81 do_vec_cmul_vec<T> (dim, &
a.setval(0), &
b.getcref(0));
89 const unsigned long dim =
b.size();
90 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim,
b);
91 do_vec_cmul_vec_inv<T> (dim, &
b.setval(0), &
a.getcref(0));
99 const unsigned long dim =
b.size();
100 BCHK(
a.size() != dim,
VecErr, product with diff. size Vectors, dim,
a);
101 do_vec_cmul_vec<T> (dim, &
a.setval(0), &
b.getcref(0));
102 b.destroy ();
return a;
113 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(), s);
114 do_vec_vec_div<T> (
b.size(), &s.
setval(0), &
a.getcref(0), &
b.getcref(0));
122 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(),
a);
123 do_vec_div_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
131 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(),
b);
132 do_vec_div_vec_inv<T> (
b.size(), &
b.setval(0), &
a.getcref(0));
140 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(),
a);
141 do_vec_div_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
142 b.destroy ();
return a;
150 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(), s);
151 do_vec_vec_cdiv<T> (
b.size(), &s.
setval(0), &
a.getcref(0), &
b.getcref(0));
159 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(),
a);
160 do_vec_cdiv_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
168 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(),
b);
169 do_vec_cdiv_vec_inv<T> (
a.size(), &
b.setval(0), &
a.getcref(0));
177 BCHK(
a.size() !=
b.size(),
VecErr, division with diff. size Vectors,
b.size(),
a);
178 do_vec_cdiv_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
179 b.destroy ();
return a;
193 ts.destroy ();
return tv;
203 ts.destroy ();
return tv;
256 ts.destroy ();
return tv;
266 ts.destroy ();
return tv;
319 ts.destroy ();
return tv;
370 ts.destroy ();
return tv;
381 ts.destroy ();
return tv;
391 ts.destroy ();
return tv;
450 const unsigned d =
b.size();
475 T sum =
T(0.0);
T comp =
T(0.0);
476 const unsigned long sz = v.
size();
480 comp = (t -
sum) -
y;
490 T sum =
T(0.0);
T comp =
T(0.0);
491 const unsigned long sz = v.
size();
495 comp += (t -
sum) -
y;
504# define _VEC getvec()
505# define _ENDVEC getendvec()
508# define _COL columns()
509# define _FAC getfac()
515 const unsigned int rw =
a.rows(), cl =
a.columns();
519 do_vec_vec_mul<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
527 const unsigned int rw =
a .rows(), cl =
a.columns();
531 do_vec_vec_cmul<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
539 const unsigned int rw =
a .rows(), cl =
a.columns();
543 do_vec_vec_div<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
551 const unsigned int rw =
a .rows(), cl =
a.columns();
555 do_vec_vec_cdiv<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
572 const unsigned r =
b.rows(),
c =
b.columns();
#define BCHK(cond, exc, txt, ind, rtval)
BVector< T > & setsize(const unsigned long size)
BVector< T > & resize(const BVector< T > &)
Actually it's a resize and copy (some people would expect the assignment op to do this).
BVector< T > & setptr(T *pointer)
void detach(TMatrix< T > *=0)
void detach(const T *=0) const
T get(const unsigned long i) const HOT
T *const & vecptr() const
unsigned long size() const
Temporary Base Class Idiom: Class TVector is used for temporary variables.
tbci_traits< T >::const_refval_type get(const unsigned long i) const
unsigned long size() const
T & set(const T &val, const unsigned long i) const
T & setval(const unsigned long i) const
NAMESPACE_END NAMESPACE_CPLX TBCI__ cplx< T > conj(const TBCI__ cplx< T > &c)
FS_Vector< dims, T > cediv(const FS_Vector< dims, T > &f1, const FS_Vector< dims, T > &f2)
T sum(const FS_Vector< dims, T > &fv)
FS_Vector< dims, T > ediv(const FS_Vector< dims, T > &f1, const FS_Vector< dims, T > &f2)
FS_Vector< dims, T > emul(const FS_Vector< dims, T > &f1, const FS_Vector< dims, T > &f2)
FS_Vector< dims, T > cemul(const FS_Vector< dims, T > &f1, const FS_Vector< dims, T > &f2)
const unsigned TMatrix< T > const Matrix< T > * a
const unsigned TMatrix< T > * res
#define STD_SMP_TEMPLATE3VC(oper, dm, a1, a2, a3)
#define STD_SMP_TEMPLATE2C(oper, dm, a1, a2)
#define STD_SMP_TEMPLATE4C(oper, dm, a1, a2, a3, a4)