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();
30 do_vec_vec_mul<T> (
dim, &s.
setval(0), &
a.getcref(0), &
b.getcref(0));
38 const unsigned long dim =
b.size();
40 do_vec_mul_vec<T> (
dim, &
a.setval(0), &
b.getcref(0));
48 const unsigned long dim =
b.size();
50 do_vec_mul_vec<T> (
dim, &
b.setval(0), &
a.getcref(0));
58 const unsigned long dim =
b.size();
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();
71 do_vec_vec_cmul<T> (
dim, &s.
setval(0), &
a.getcref(0), &
b.getcref(0));
79 const unsigned long dim =
b.size();
81 do_vec_cmul_vec<T> (
dim, &
a.setval(0), &
b.getcref(0));
89 const unsigned long dim =
b.size();
91 do_vec_cmul_vec_inv<T> (
dim, &
b.setval(0), &
a.getcref(0));
99 const unsigned long dim =
b.size();
101 do_vec_cmul_vec<T> (
dim, &
a.setval(0), &
b.getcref(0));
102 b.destroy ();
return a;
109 template <typename T>
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));
119 template <typename T>
123 do_vec_div_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
128 template <typename T>
132 do_vec_div_vec_inv<T> (
b.size(), &
b.setval(0), &
a.getcref(0));
137 template <typename T>
141 do_vec_div_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
142 b.destroy ();
return a;
146 template <typename T>
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));
156 template <typename T>
160 do_vec_cdiv_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
165 template <typename T>
169 do_vec_cdiv_vec_inv<T> (
a.size(), &
b.setval(0), &
a.getcref(0));
174 template <typename T>
178 do_vec_cdiv_vec<T> (
b.size(), &
a.setval(0), &
b.getcref(0));
179 b.destroy ();
return a;
187 template <typename T>
193 ts.destroy ();
return tv;
197 template <typename T>
203 ts.destroy ();
return tv;
208 template <typename T>
221 template <typename T>
234 template <typename T>
250 template <typename T>
256 ts.destroy ();
return tv;
260 template <typename T>
266 ts.destroy ();
return tv;
270 template <typename T>
284 template <typename T>
297 template <typename T>
313 template <typename T>
319 ts.destroy ();
return tv;
323 template <typename T>
336 template <typename T>
351 template <typename T>
364 template <typename T>
370 ts.destroy ();
return tv;
375 template <typename T>
381 ts.destroy ();
return tv;
385 template <typename T>
391 ts.destroy ();
return tv;
395 template <typename T>
409 template <typename T>
422 template <typename T>
439 template <typename T>
447 template <typename T>
450 const unsigned d =
b.size();
457 template <typename T>
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() 512 template <typename T>
515 const unsigned int rw =
a.rows(), cl =
a.columns();
519 do_vec_vec_mul<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
524 template <typename T>
527 const unsigned int rw =
a .rows(), cl =
a.columns();
531 do_vec_vec_cmul<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
536 template <typename T>
539 const unsigned int rw =
a .rows(), cl =
a.columns();
543 do_vec_vec_div<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
548 template <typename T>
551 const unsigned int rw =
a .rows(), cl =
a.columns();
555 do_vec_vec_cdiv<T> (
a._DIM,
res._VEC,
a._VEC,
b._VEC);
561 template <typename T>
569 template <typename T>
572 const unsigned r =
b.rows(),
c =
b.columns();
579 template <typename T>
T sum(const FS_Vector< dims, T > &fv)
void detach(TMatrix< T > *=0)
unsigned long size() const
void detach(const T *=0) const
BVector< T > & setsize(const unsigned long size)
T & setval(const unsigned long i) const
tbci_traits< T >::const_refval_type get(const unsigned long i) const
const unsigned TMatrix< T > * res
#define BCHK(cond, exc, txt, ind, rtval)
unsigned long size() const
#define STD_SMP_TEMPLATE4C(oper, dm, a1, a2, a3, a4)
T get(const unsigned long i) const HOT
BVector< T > & setptr(T *pointer)
int conj(const int arg)
conj for elementary types
#define STD_SMP_TEMPLATE2C(oper, dm, a1, a2)
T & set(const T &val, const unsigned long i) const
BVector< T > & resize(const BVector< T > &)
Actually it's a resize and copy (some people would expect the assignment op to do this) ...
Temporary Base Class Idiom: Class TVector is used for temporary variables.
#define STD_SMP_TEMPLATE3VC(oper, dm, a1, a2, a3)
T *const & vecptr() const
const unsigned TMatrix< T > const Matrix< T > * a