Simbody 3.7
Loading...
Searching...
No Matches
RowVector_.h
Go to the documentation of this file.
1#ifndef SimTK_SIMMATRIX_ROWVECTOR_H_
2#define SimTK_SIMMATRIX_ROWVECTOR_H_
3
4/* -------------------------------------------------------------------------- *
5 * Simbody(tm): SimTKcommon *
6 * -------------------------------------------------------------------------- *
7 * This is part of the SimTK biosimulation toolkit originating from *
8 * Simbios, the NIH National Center for Physics-Based Simulation of *
9 * Biological Structures at Stanford, funded under the NIH Roadmap for *
10 * Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody. *
11 * *
12 * Portions copyright (c) 2005-13 Stanford University and the Authors. *
13 * Authors: Michael Sherman *
14 * Contributors: *
15 * *
16 * Licensed under the Apache License, Version 2.0 (the "License"); you may *
17 * not use this file except in compliance with the License. You may obtain a *
18 * copy of the License at http://www.apache.org/licenses/LICENSE-2.0. *
19 * *
20 * Unless required by applicable law or agreed to in writing, software *
21 * distributed under the License is distributed on an "AS IS" BASIS, *
22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
23 * See the License for the specific language governing permissions and *
24 * limitations under the License. *
25 * -------------------------------------------------------------------------- */
26
31namespace SimTK {
32
33//==============================================================================
34// ROW VECTOR
35//==============================================================================
52template <class ELT> class RowVector_ : public RowVectorBase<ELT> {
53 typedef typename CNT<ELT>::Scalar S;
54 typedef typename CNT<ELT>::Number Number;
55 typedef typename CNT<ELT>::StdNumber StdNumber;
56 typedef typename CNT<ELT>::TNeg ENeg;
57
60public:
61 RowVector_() : Base() {} // 1x0 reallocatable
62 // Uses default destructor.
63
64 // Copy constructor is deep.
65 RowVector_(const RowVector_& src) : Base(src) {}
66
67 // Implicit conversions.
68 RowVector_(const Base& src) : Base(src) {} // e.g., RowVectorView
69 RowVector_(const BaseNeg& src) : Base(src) {}
70
71 // Copy assignment is deep and can be reallocating if this RowVector
72 // has no View.
74 Base::operator=(src); return*this;
75 }
76
77
78 explicit RowVector_(int n) : Base(n) { }
79 RowVector_(int n, const ELT* cppInitialValues) : Base(n, cppInitialValues) {}
80 RowVector_(int n, const ELT& initialValue) : Base(n, initialValue) {}
81
86 RowVector_(int n, const S* cppData, bool): Base(n, Base::CppNScalarsPerElement, cppData) {}
87 RowVector_(int n, S* cppData, bool): Base(n, Base::CppNScalarsPerElement, cppData) {}
88
92 RowVector_(int n, int stride, const S* data, bool) : Base(n, stride, data) {}
93 RowVector_(int n, int stride, S* data, bool) : Base(n, stride, data) {}
94
96 template <int M>
97 explicit RowVector_(const Row<M,ELT>& v) : Base(M) {
98 for (int i = 0; i < M; ++i)
99 this->updElt(0, i) = v(i);
100 }
101
102 RowVector_& operator=(const ELT& v) { Base::operator=(v); return *this; }
103
104 template <class EE> RowVector_& operator=(const RowVectorBase<EE>& b)
105 { Base::operator=(b); return*this; }
106 template <class EE> RowVector_& operator+=(const RowVectorBase<EE>& b)
107 { Base::operator+=(b); return*this; }
108 template <class EE> RowVector_& operator-=(const RowVectorBase<EE>& b)
109 { Base::operator-=(b); return*this; }
110
111 RowVector_& operator*=(const StdNumber& t) { Base::operator*=(t); return *this; }
112 RowVector_& operator/=(const StdNumber& t) { Base::operator/=(t); return *this; }
113 RowVector_& operator+=(const ELT& b) { this->elementwiseAddScalarInPlace(b); return *this; }
114 RowVector_& operator-=(const ELT& b) { this->elementwiseSubtractScalarInPlace(b); return *this; }
115
116private:
117 // NO DATA MEMBERS ALLOWED
118};
119
120} //namespace SimTK
121
122#endif // SimTK_SIMMATRIX_ROWVECTOR_H_
K::StdNumber StdNumber
Definition CompositeNumericalTypes.h:163
K::TNeg TNeg
Definition CompositeNumericalTypes.h:139
K::Scalar Scalar
Definition CompositeNumericalTypes.h:160
K::Number Number
Definition CompositeNumericalTypes.h:162
@ CppNScalarsPerElement
Definition MatrixBase.h:154
MatrixBase & elementwiseSubtractScalarInPlace(const S &s)
Set M(i,j)-=s for every element of M and some value s.
MatrixBase & elementwiseAddScalarInPlace(const S &s)
Set M(i,j)+=s for every element of M and some value s.
ELT & updElt(int i, int j)
Definition MatrixBase.h:656
This is a dataless rehash of the MatrixBase class to specialize it for RowVectors.
Definition RowVectorBase.h:42
RowVectorBase & operator-=(const RowVectorBase &r)
Definition RowVectorBase.h:145
RowVectorBase & operator=(const RowVectorBase &b)
Copy assignment is deep copy but behavior depends on type of lhs: if view, rhs must match.
Definition RowVectorBase.h:136
RowVectorBase & operator*=(const StdNumber &t)
Definition RowVectorBase.h:142
RowVectorBase & operator/=(const StdNumber &t)
Definition RowVectorBase.h:143
RowVectorBase & operator+=(const RowVectorBase &r)
Definition RowVectorBase.h:144
Represents a variable size row vector; much less common than the column vector type Vector_.
Definition RowVector_.h:52
RowVector_ & operator*=(const StdNumber &t)
Definition RowVector_.h:111
RowVector_ & operator=(const ELT &v)
Definition RowVector_.h:102
RowVector_(int n)
Definition RowVector_.h:78
RowVector_()
Definition RowVector_.h:61
RowVector_(int n, int stride, const S *data, bool)
Borrowed-space construction with explicit stride supplied as "number of scalars between elements".
Definition RowVector_.h:92
RowVector_ & operator=(const RowVectorBase< EE > &b)
Definition RowVector_.h:104
RowVector_ & operator+=(const ELT &b)
Definition RowVector_.h:113
RowVector_(const BaseNeg &src)
Definition RowVector_.h:69
RowVector_(const Base &src)
Definition RowVector_.h:68
RowVector_(int n, const S *cppData, bool)
Construct a Vector which uses borrowed space with assumed element-to-element stride equal to the C++ ...
Definition RowVector_.h:86
RowVector_ & operator-=(const RowVectorBase< EE > &b)
Definition RowVector_.h:108
RowVector_(const RowVector_ &src)
Definition RowVector_.h:65
RowVector_ & operator-=(const ELT &b)
Definition RowVector_.h:114
RowVector_(const Row< M, ELT > &v)
Convert a Row to a RowVector_.
Definition RowVector_.h:97
RowVector_ & operator+=(const RowVectorBase< EE > &b)
Definition RowVector_.h:106
RowVector_(int n, const ELT &initialValue)
Definition RowVector_.h:80
RowVector_ & operator=(const RowVector_ &src)
Definition RowVector_.h:73
RowVector_ & operator/=(const StdNumber &t)
Definition RowVector_.h:112
RowVector_(int n, const ELT *cppInitialValues)
Definition RowVector_.h:79
RowVector_(int n, S *cppData, bool)
Definition RowVector_.h:87
RowVector_(int n, int stride, S *data, bool)
Definition RowVector_.h:93
This is a fixed-length row vector designed for no-overhead inline computation.
Definition Row.h:132
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition Assembler.h:37