1 #ifndef SimTK_SimTKCOMMON_VECTOR_MATH_H_     2 #define SimTK_SimTKCOMMON_VECTOR_MATH_H_    45 #define SimTK_ELEMENTWISE_FUNCTION(func)               \    46 template <class ELEM>                                  \    47 VectorBase<ELEM> func(const VectorBase<ELEM>& v) {     \    48     const int size = v.size();                         \    49     Vector_<ELEM> temp(size);                          \    50     for (int i = 0; i < size; ++i)                     \    51         temp[i] = std::func(v[i]);                     \    54 template <class ELEM>                                  \    55 RowVectorBase<ELEM> func(const RowVectorBase<ELEM>& v){\    56     const int size = v.size();                         \    57     RowVector_<ELEM> temp(size);                       \    58     for (int i = 0; i < size; ++i)                     \    59         temp[i] = std::func(v[i]);                     \    62 template <class ELEM>                                  \    63 MatrixBase<ELEM> func(const MatrixBase<ELEM>& v) {     \    64     const int rows = v.nrow(), cols = v.ncol();        \    65     Matrix_<ELEM> temp(rows, cols);                    \    66     for (int i = 0; i < rows; ++i)                     \    67         for (int j = 0; j < cols; ++j)                 \    68             temp(i, j) = std::func(v(i, j));           \    71 template <int N, class ELEM>                           \    72 Vec<N, ELEM> func(Vec<N, ELEM> v) {                    \    73     for (int i = 0; i < N; ++i)                        \    74         v[i] = std::func(v[i]);                        \    77 template <int N, class ELEM>                           \    78 Row<N, ELEM> func(Row<N, ELEM> v) {                    \    79     for (int i = 0; i < N; ++i)                        \    80         v[i] = std::func(v[i]);                        \    83 template <int M, int N, class ELEM>                    \    84 Mat<M, N, ELEM> func(Mat<M, N, ELEM> v) {              \    85     for (int i = 0; i < M; ++i)                        \    86         for (int j = 0; j < N; ++j)                    \    87             v(i, j) = std::func(v(i, j));              \    90 template <int N, class ELEM>                           \    91 SymMat<N, ELEM> func(SymMat<N, ELEM> v) {              \    92     for (int i = 0; i < N; ++i)                        \    93         for (int j = 0; j <= i; ++j)                   \    94             v(i, j) = std::func(v(i, j));              \   111 #undef SimTK_ELEMENTWISE_FUNCTION   115 template <
class ELEM>
   119 template <
class ELEM>
   123 template <
class ELEM>
   127 template <
int N, 
class ELEM>
   131 template <
int N, 
class ELEM>
   135 template <
int M, 
int N, 
class ELEM>
   139 template <
int N, 
class ELEM>
   146 template <
class ELEM>
   150 template <
class ELEM>
   154 template <
class ELEM>
   158 template <
int N, 
class ELEM>
   162 template <
int N, 
class ELEM>
   166 template <
int M, 
int N, 
class ELEM>
   170 template <
int N, 
class ELEM>
   177 template <
class ELEM>
   179     const int size = v.
size();
   181     for (
int i = 0; i < size; ++i) {
   188 template <
class ELEM>
   190     const int size = v.
size();
   192     for (
int i = 0; i < size; ++i) {
   199 template <
class ELEM>
   203     for (
int i = 0; i < cols; ++i)
   207 template <
int N, 
class ELEM>
   210     for (
int i = 0; i < N; ++i) {
   217 template <
int N, 
class ELEM>
   220     for (
int i = 0; i < N; ++i) {
   227 template <
int M, 
int N, 
class ELEM>
   230     for (
int i = 0; i < N; ++i)
   234 template <
int N, 
class ELEM>
   237     for (
int i = 1; i < N; ++i)
   238         for (
int j = 0; j < i; ++j) {
   250 template <
class ELEM>
   252     const int size = v.
size();
   254     for (
int i = 0; i < size; ++i) {
   261 template <
class ELEM>
   263     const int size = v.
size();
   265     for (
int i = 0; i < size; ++i) {
   272 template <
class ELEM>
   276     for (
int i = 0; i < cols; ++i)
   280 template <
int N, 
class ELEM>
   283     for (
int i = 0; i < N; ++i) {
   290 template <
int N, 
class ELEM>
   293     for (
int i = 0; i < N; ++i) {
   300 template <
int M, 
int N, 
class ELEM>
   303     for (
int i = 0; i < N; ++i)
   307 template <
int N, 
class ELEM>
   310     for (
int i = 1; i < N; ++i)
   311         for (
int j = 0; j < i; ++j) {
   323 template <
class ELEM>
   327 template <
class ELEM>
   331 template <
class ELEM>
   335 template <
int N, 
class ELEM>
   339 template <
int N, 
class ELEM>
   343 template <
int M, 
int N, 
class ELEM>
   347 template <
int N, 
class ELEM>
   354 template <
class ELEM>
   360 template <
class ELEM>
   366 template <
class ELEM>
   368     const int cols = v.
ncol();
   370     for (
int i = 0; i < cols; ++i)
   374 template <
int N, 
class ELEM>
   376     ELEM* pointer = 
reinterpret_cast<ELEM*
>(&v);
   380 template <
int N, 
class ELEM>
   382     ELEM* pointer = 
reinterpret_cast<ELEM*
>(&v);
   386 template <
int M, 
int N, 
class ELEM>
   388     for (
int i = 0; i < N; ++i)
   392 template <
int N, 
class ELEM>
   399 template <
class ELEM, 
class RandomAccessIterator>
   400 ELEM 
median(RandomAccessIterator start, RandomAccessIterator end) {
   401     const ptrdiff_t size = (ptrdiff_t)(end-start);
   402     RandomAccessIterator mid = start+(size-1)/2;
   403     std::nth_element(start, mid, end);
   404     if (size%2 == 0 && mid+1 < end) {
   410         RandomAccessIterator 
min = mid+1;
   411         for (RandomAccessIterator iter = mid+1; iter < end; iter++) {
   415         return (*mid+*min)/2;
   419 template <
class ELEM>
   422     return median<ELEM>(temp.
begin(), temp.
end());
   424 template <
class ELEM>
   427     return median<ELEM>(temp.
begin(), temp.
end());
   429 template <
class ELEM>
   431     int cols = v.
ncol(), rows = v.
nrow();
   434     for (
int i = 0; i < cols; ++i) {
   436         temp[i] = median<ELEM>(column);
   440 template <
int N, 
class ELEM>
   442     ELEM* pointer = 
reinterpret_cast<ELEM*
>(&v);
   443     return  median<ELEM>(pointer, pointer+N);
   445 template <
int N, 
class ELEM>
   447     ELEM* pointer = 
reinterpret_cast<ELEM*
>(&v);
   448     return  median<ELEM>(pointer, pointer+N);
   450 template <
int M, 
int N, 
class ELEM>
   453     for (
int i = 0; i < N; ++i)
   457 template <
int N, 
class ELEM>
   464 #endif // SimTK_SimTKCOMMON_VECTOR_MATH_H_ TAbs abs() const
Elementwise absolute value; that is, the return value has the same dimensions as this Mat but with ea...
Definition: Mat.h:228
 
VectorIterator< ELT, VectorBase< ELT > > begin()
Definition: VectorBase.h:458
 
TAbs abs() const
Definition: Row.h:240
 
TRow sum() const
This is an alternate name for colSum(); behaves like the Matlab function of the same name...
Definition: SymMat.h:858
 
This is a small, fixed-size symmetric or Hermitian matrix designed for no-overhead inline computation...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:621
 
TAbs abs() const
Elementwise absolute value; that is, the return value has the same dimension as this Vec but with eac...
Definition: Vec.h:347
 
This is a dataless rehash of the MatrixBase class to specialize it for RowVectors. 
Definition: BigMatrix.h:165
 
TRow sum() const
This is an alternate name for colSum(); behaves like the Matlab function of the same name...
Definition: Mat.h:1207
 
ELEM median(RandomAccessIterator start, RandomAccessIterator end)
Definition: VectorMath.h:400
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
ELT sum() const
Definition: VectorBase.h:457
 
Mat< N, N, ELEM > sort(const SymMat< N, ELEM > &v)
Definition: VectorMath.h:393
 
VectorView_< ELT > updCol(int j)
Definition: BigMatrix.h:261
 
const TCol & col(int j) const
Definition: Mat.h:777
 
ELEM min(const VectorBase< ELEM > &v)
Definition: VectorMath.h:178
 
EStandard sum() const
Sum just adds up all the elements into a single return element that is the same type as this Vec's el...
Definition: Vec.h:366
 
VectorView_< ELT > col(int j) const
Definition: BigMatrix.h:252
 
SimTK_ELEMENTWISE_FUNCTION(exp) SimTK_ELEMENTWISE_FUNCTION(log) SimTK_ELEMENTWISE_FUNCTION(sqrt) SimTK_ELEMENTWISE_FUNCTION(sin) SimTK_ELEMENTWISE_FUNCTION(cos) SimTK_ELEMENTWISE_FUNCTION(tan) SimTK_ELEMENTWISE_FUNCTION(asin) SimTK_ELEMENTWISE_FUNCTION(acos) SimTK_ELEMENTWISE_FUNCTION(atan) SimTK_ELEMENTWISE_FUNCTION(sinh) SimTK_ELEMENTWISE_FUNCTION(cosh) SimTK_ELEMENTWISE_FUNCTION(tanh) template< class ELEM > VectorBase< typename CNT< ELEM >
Definition: VectorMath.h:98
 
const TDiag & getDiag() const
Definition: SymMat.h:818
 
const E & getEltLower(int i, int j) const
Definition: SymMat.h:838
 
ELEM mean(const VectorBase< ELEM > &v)
Definition: VectorMath.h:324
 
ELEM sum(const VectorBase< ELEM > &v)
Definition: VectorMath.h:147
 
This is a fixed-length column vector designed for no-overhead inline computation. ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:618
 
TAbs abs() const
Definition: VectorBase.h:406
 
VectorBase< ELEM > sort(const VectorBase< ELEM > &v)
Definition: VectorMath.h:355
 
ELT sum() const
Definition: RowVectorBase.h:297
 
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
 
int ncol() const
Return the number of columns n in the logical shape of this matrix. 
Definition: MatrixBase.h:138
 
VectorIterator< ELT, RowVectorBase< ELT > > begin()
Definition: RowVectorBase.h:298
 
VectorIterator< ELT, RowVectorBase< ELT > > end()
Definition: RowVectorBase.h:301
 
TAbs abs() const
Definition: RowVectorBase.h:247
 
RowVectorBase< typename CNT< ELEM >::TAbs > abs(const RowVectorBase< ELEM > &v)
Definition: VectorMath.h:120
 
EStandard sum() const
Definition: Row.h:254
 
This is a fixed-length row vector designed for no-overhead inline computation. 
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:619
 
int size() const
Definition: RowVectorBase.h:237
 
This is a dataless rehash of the MatrixBase class to specialize it for Vectors. 
Definition: BigMatrix.h:164
 
VectorIterator< ELT, VectorBase< ELT > > end()
Definition: VectorBase.h:461
 
int size() const
Definition: VectorBase.h:396
 
This class represents a small matrix whose size is known at compile time, containing elements of any ...
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:620
 
This is the common base class for Simbody's Vector_ and Matrix_ classes for handling large...
Definition: BigMatrix.h:163
 
void abs(TAbs &mabs) const
abs() is elementwise absolute value; that is, the return value has the same dimension as this Matrix ...
Definition: MatrixBase.h:687
 
This is the header which should be included in user programs that would like to make use of all the S...
 
Includes internal headers providing declarations for the basic SimTK Core classes. 
 
RowVector_< ELT > sum() const
Alternate name for colSum(); behaves like the Matlab function sum(). 
Definition: MatrixBase.h:748
 
int nrow() const
Return the number of rows m in the logical shape of this matrix. 
Definition: MatrixBase.h:136
 
TAbs abs() const
Definition: SymMat.h:195