1 #ifndef SimTK_SIMMATRIX_SMALLMATRIX_VEC_H_ 
    2 #define SimTK_SIMMATRIX_SMALLMATRIX_VEC_H_ 
   46 template <
class E1, 
int S1, 
class E2, 
int S2> 
void 
   48               Vec<1,
typename CNT<E1>::template Result<E2>::Add>& result) {
 
   49     result[0] = r1[0] + r2[0];
 
   51 template <
int N, 
class E1, 
int S1, 
class E2, 
int S2> 
void 
   53               Vec<N,
typename CNT<E1>::template Result<E2>::Add>& result) {
 
   55                   reinterpret_cast<const Vec<N-1,E2,S2
>&>(r2), 
 
   56                   reinterpret_cast<Vec<N-1,typename CNT<E1>::
 
   57                               template Result<E2>::Add
>&>(result));
 
   58     result[N-1] = r1[N-1] + r2[N-1];
 
   61 template <
class E1, 
int S1, 
class E2, 
int S2> 
void 
   63                    Vec<1,
typename CNT<E1>::template Result<E2>::Sub>& result) {
 
   64     result[0] = r1[0] - r2[0];
 
   66 template <
int N, 
class E1, 
int S1, 
class E2, 
int S2> 
void 
   68                    Vec<N,
typename CNT<E1>::template Result<E2>::Sub>& result) {
 
   70                        reinterpret_cast<const Vec<N-1,E2,S2
>&>(r2), 
 
   71                        reinterpret_cast<Vec<N-1,typename CNT<E1>::
 
   72                                    template Result<E2>::Sub
>&>(result));
 
   73     result[N-1] = r1[N-1] - r2[N-1];
 
   76 template <
class E1, 
int S1, 
class E2, 
int S2> 
void 
   78               Vec<1,
typename CNT<E1>::template Result<E2>::Mul>& result) {
 
   79     result[0] = r1[0] * r2[0];
 
   81 template <
int N, 
class E1, 
int S1, 
class E2, 
int S2> 
void 
   83               Vec<N,
typename CNT<E1>::template Result<E2>::Mul>& result) {
 
   85                         reinterpret_cast<const Vec<N-1,E2,S2
>&>(r2), 
 
   86                         reinterpret_cast<Vec<N-1,typename CNT<E1>::
 
   87                                     template Result<E2>::Mul
>&>(result));
 
   88     result[N-1] = r1[N-1] * r2[N-1];
 
   91 template <
class E1, 
int S1, 
class E2, 
int S2> 
void 
   93               Vec<1,
typename CNT<E1>::template Result<E2>::Dvd>& result) {
 
   94     result[0] = r1[0] / r2[0];
 
   96 template <
int N, 
class E1, 
int S1, 
class E2, 
int S2> 
void 
   98               Vec<N,
typename CNT<E1>::template Result<E2>::Dvd>& result) {
 
  100                       reinterpret_cast<const Vec<N-1,E2,S2
>&>(r2), 
 
  101                       reinterpret_cast<Vec<N-1,typename CNT<E1>::
 
  102                                   template Result<E2>::Dvd
>&>(result));
 
  103     result[N-1] = r1[N-1] / r2[N-1];
 
  106 template <
class E1, 
int S1, 
class E2, 
int S2> 
void 
  107 copy(Vec<1,E1,S1>& r1, 
const Vec<1,E2,S2>& r2) {
 
  110 template <
int N, 
class E1, 
int S1, 
class E2, 
int S2> 
void 
  111 copy(Vec<N,E1,S1>& r1, 
const Vec<N,E2,S2>& r2) {
 
  112     copy(
reinterpret_cast<Vec<N-1,E1,S1
>&>(r1), 
 
  113          reinterpret_cast<const Vec<N-1,E2,S2
>&>(r2));
 
  183 template <
int M, 
class ELT, 
int STRIDE>
 
  318     static int size() { 
return M; }
 
  320     static int nrow() { 
return M; }
 
  322     static int ncol() { 
return 1; }
 
  329         for(
int i=0;i<M;++i) sum += CNT<E>::scalarNormSqr(d[i*STRIDE]);
 
  339         for(
int i=0;i<M;++i) vsqrt[i] = CNT<E>::sqrt(d[i*STRIDE]);
 
  359         for(
int i=0;i<M;++i) vstd[i] = CNT<E>::standardize(d[i*STRIDE]);
 
  368         for (
int i=0;i<M;++i) 
sum += d[i*STRIDE];
 
  390         typedef typename MulOp::Type 
Mul;
 
  395         typedef typename MulOpNonConforming::Type 
MulNon;
 
  400         typedef typename DvdOp::Type 
Dvd;
 
  405         typedef typename AddOp::Type 
Add;
 
  410         typedef typename SubOp::Type 
Sub;
 
  470     explicit Vec(
const E& e) {
for (
int i=0;i<M;++i) d[i*STRIDE]=e;}
 
  478         for (
int i=0;i<M;++i) d[i*STRIDE]=e;
 
  491       { assert(M==2);(*this)[0]=e0;(*this)[1]=e1; }
 
  493       { assert(M==3);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2; }
 
  494     Vec(
const E& e0,
const E& e1,
const E& e2,
const E& e3)
 
  495       { assert(M==4);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2;(*this)[3]=e3; }
 
  496     Vec(
const E& e0,
const E& e1,
const E& e2,
const E& e3,
const E& e4)
 
  497       { assert(M==5);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2;
 
  498         (*this)[3]=e3;(*this)[4]=e4; }
 
  499     Vec(
const E& e0,
const E& e1,
const E& e2,
const E& e3,
const E& e4,
const E& e5)
 
  500       { assert(M==6);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2;
 
  501         (*this)[3]=e3;(*this)[4]=e4;(*this)[5]=e5; }
 
  502     Vec(
const E& e0,
const E& e1,
const E& e2,
const E& e3,
const E& e4,
const E& e5, 
const E& e6)
 
  503       { assert(M==7);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2;
 
  504         (*this)[3]=e3;(*this)[4]=e4;(*this)[5]=e5;(*this)[6]=e6; }
 
  505     Vec(
const E& e0,
const E& e1,
const E& e2,
const E& e3,
const E& e4,
const E& e5, 
const E& e6, 
const E& e7)
 
  506       { assert(M==8);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2;
 
  507         (*this)[3]=e3;(*this)[4]=e4;(*this)[5]=e5;(*this)[6]=e6;(*this)[7]=e7; }
 
  508     Vec(
const E& e0,
const E& e1,
const E& e2,
const E& e3,
const E& e4,
const E& e5, 
const E& e6, 
const E& e7, 
const E& e8)
 
  509       { assert(M==9);(*this)[0]=e0;(*this)[1]=e1;(*this)[2]=e2;
 
  510         (*this)[3]=e3;(*this)[4]=e4;(*this)[5]=e5;(*this)[6]=e6;(*this)[7]=e7;(*this)[8]=e8; }
 
  516     template <
class EE> 
explicit Vec(
const EE* p)
 
  517     {   assert(p); 
for(
int i=0;i<M;++i) d[i*STRIDE]=p[i]; }
 
  524     {   assert(p); 
for(
int i=0;i<M;++i) d[i*STRIDE]=p[i]; 
return *
this; }
 
  534     {   
for(
int i=0;i<M;++i) d[i*STRIDE] += r[i]; 
return *
this; }
 
  539     {   
for(
int i=0;i<M;++i) d[i*STRIDE] -= -(r[i]); 
return *
this; }
 
  544     {   
for(
int i=0;i<M;++i) d[i*STRIDE] -= r[i]; 
return *
this; }
 
  549     {   
for(
int i=0;i<M;++i) d[i*STRIDE] += -(r[i]); 
return *
this; }
 
  597     {   assert(0 <= i && i < M); 
return d[i*STRIDE]; }
 
  604     E& 
operator[](
int i) {assert(0 <= i && i < M); 
return d[i*STRIDE];}
 
  628             for (
int i=0; i<M; ++i) 
 
  630             return elementwiseNormalized;
 
  672         { 
return *
reinterpret_cast<const TPosTrans*
>(
this); }
 
  675         { 
return *
reinterpret_cast<TPosTrans*
>(
this); }
 
  694         const EImag* p = 
reinterpret_cast<const EImag*
>(
this);
 
  695         return *
reinterpret_cast<const TImag*
>(p+offs);
 
  702         return *
reinterpret_cast<TImag*
>(p+offs);
 
  726         for (
int i=0; i<M; ++i) result[i] = (*
this)[i] * e;
 
  732         for (
int i=0; i<M; ++i) result[i] = e * (*
this)[i];
 
  741         for (
int i=0; i<M; ++i) result[i] = (*
this)[i] / e;
 
  747         for (
int i=0; i<M; ++i) result[i] = e / (*
this)[i];
 
  754         for (
int i=0; i<M; ++i) result[i] = (*
this)[i] + e;
 
  762         for (
int i=0; i<M; ++i) result[i] = (*
this)[i] - e;
 
  768         for (
int i=0; i<M; ++i) result[i] = e - (*
this)[i];
 
  784       { 
for(
int i=0;i<M;++i) d[i*STRIDE] = ee; 
return *
this; }
 
  786       { 
for(
int i=0;i<M;++i) d[i*STRIDE] += ee; 
return *
this; }
 
  788       { 
for(
int i=0;i<M;++i) d[i*STRIDE] -= ee; 
return *
this; }
 
  790       { 
for(
int i=0;i<M;++i) d[i*STRIDE] = ee - d[i*STRIDE]; 
return *
this; }
 
  792       { 
for(
int i=0;i<M;++i) d[i*STRIDE] *= ee; 
return *
this; }
 
  794       { 
for(
int i=0;i<M;++i) d[i*STRIDE] = ee * d[i*STRIDE]; 
return *
this; }
 
  796       { 
for(
int i=0;i<M;++i) d[i*STRIDE] /= ee; 
return *
this; }
 
  798       { 
for(
int i=0;i<M;++i) d[i*STRIDE] = ee / d[i*STRIDE]; 
return *
this; }
 
  828         assert(0 <= i && i + MM <= M);
 
  838         assert(0 <= i && i + MM <= M);
 
  848         assert(0 <= i && i + M <= MM);
 
  856         assert(0 <= i && i + M <= MM);
 
  864         assert(0 <= p && p < M);
 
  867         for (
int i=0; i<M-1; ++i, ++nxt) {
 
  869             out[i] = (*this)[nxt];
 
  891         assert(0 <= p && p <= M);
 
  895         for (
int i=0; i<M; ++i, ++nxt) {
 
  896             if (i==p) out[nxt++] = v;
 
  897             out[nxt] = (*this)[i];
 
  905     {   
return *
reinterpret_cast<const Vec*
>(p); }
 
  909     {   
return *
reinterpret_cast<Vec*
>(p); }
 
  919         for (
int i=0; i<M; ++i)
 
  928         bool seenInf = 
false;
 
  929         for (
int i=0; i<M; ++i) {
 
  930             const ELT& e = (*this)[i];
 
  943         for (
int i=0; i<M; ++i)
 
  955     template <
class E2, 
int RS2>
 
  957         for (
int i=0; i<M; ++i)
 
  966     template <
class E2, 
int RS2>
 
  980         for (
int i=0; i<M; ++i)
 
  989         std::stringstream stream;
 
  995     void set(
int i, 
const E& value)  
 
  996     {   (*this)[i] = value; }
 
 1014 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline 
 1015 typename Vec<M,E1,S1>::template Result< Vec<M,E2,S2> >::Add
 
 1018         ::AddOp::perform(l,r);
 
 1022 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline 
 1023 typename Vec<M,E1,S1>::template Result< Vec<M,E2,S2> >::Sub
 
 1026         ::SubOp::perform(l,r);
 
 1030 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline bool 
 1032 {   
for (
int i=0; i < M; ++i) 
if (l[i] != r[i]) 
return false;
 
 1035 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline bool 
 1039 template <
int M, 
class E1, 
int S1, 
class E2> 
inline bool 
 1041 {   
for (
int i=0; i < M; ++i) 
if (v[i] != e) 
return false;
 
 1044 template <
int M, 
class E1, 
int S1, 
class E2> 
inline bool 
 1048 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline bool 
 1050 {   
for (
int i=0; i < M; ++i) 
if (l[i] >= r[i]) 
return false;
 
 1053 template <
int M, 
class E1, 
int S1, 
class E2> 
inline bool 
 1055 {   
for (
int i=0; i < M; ++i) 
if (v[i] >= e) 
return false;
 
 1059 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline bool 
 1061 {   
for (
int i=0; i < M; ++i) 
if (l[i] <= r[i]) 
return false;
 
 1064 template <
int M, 
class E1, 
int S1, 
class E2> 
inline bool 
 1066 {   
for (
int i=0; i < M; ++i) 
if (v[i] <= e) 
return false;
 
 1071 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline bool 
 1073 {   
for (
int i=0; i < M; ++i) 
if (l[i] > r[i]) 
return false;
 
 1077 template <
int M, 
class E1, 
int S1, 
class E2> 
inline bool 
 1079 {   
for (
int i=0; i < M; ++i) 
if (v[i] > e) 
return false;
 
 1084 template <
int M, 
class E1, 
int S1, 
class E2, 
int S2> 
inline bool 
 1086 {   
for (
int i=0; i < M; ++i) 
if (l[i] < r[i]) 
return false;
 
 1090 template <
int M, 
class E1, 
int S1, 
class E2> 
inline bool 
 1092 {   
for (
int i=0; i < M; ++i) 
if (v[i] < e) 
return false;
 
 1106 template <
int M, 
class E, 
int S> 
inline 
 1107 typename Vec<M,E,S>::template Result<float>::Mul
 
 1110 template <
int M, 
class E, 
int S> 
inline 
 1111 typename Vec<M,E,S>::template Result<float>::Mul
 
 1114 template <
int M, 
class E, 
int S> 
inline 
 1115 typename Vec<M,E,S>::template Result<double>::Mul
 
 1118 template <
int M, 
class E, 
int S> 
inline 
 1119 typename Vec<M,E,S>::template Result<double>::Mul
 
 1123 template <
int M, 
class E, 
int S> 
inline 
 1124 typename Vec<M,E,S>::template Result<typename CNT<E>::Precision>::Mul
 
 1126 template <
int M, 
class E, 
int S> 
inline 
 1127 typename Vec<M,E,S>::template Result<typename CNT<E>::Precision>::Mul
 
 1133 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1134 typename Vec<M,E,S>::template Result<std::complex<R> >::Mul
 
 1137 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1138 typename Vec<M,E,S>::template Result<std::complex<R> >::Mul
 
 1142 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1143 typename Vec<M,E,S>::template Result<std::complex<R> >::Mul
 
 1145 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1146 typename Vec<M,E,S>::template Result<std::complex<R> >::Mul
 
 1150 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1151 typename Vec<M,E,S>::template Result<typename negator<R>::StdNumber>::Mul
 
 1153 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1154 typename Vec<M,E,S>::template Result<typename negator<R>::StdNumber>::Mul
 
 1163 template <
int M, 
class E, 
int S> 
inline 
 1164 typename Vec<M,E,S>::template Result<float>::Dvd
 
 1167 template <
int M, 
class E, 
int S> 
inline 
 1168 typename CNT<float>::template Result<Vec<M,E,S> >::Dvd
 
 1172 template <
int M, 
class E, 
int S> 
inline 
 1173 typename Vec<M,E,S>::template Result<double>::Dvd
 
 1176 template <
int M, 
class E, 
int S> 
inline 
 1177 typename CNT<double>::template Result<Vec<M,E,S> >::Dvd
 
 1182 template <
int M, 
class E, 
int S> 
inline 
 1183 typename Vec<M,E,S>::template Result<typename CNT<E>::Precision>::Dvd
 
 1185 template <
int M, 
class E, 
int S> 
inline 
 1193 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1194 typename Vec<M,E,S>::template Result<std::complex<R> >::Dvd
 
 1197 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1198 typename CNT<std::complex<R> >::template Result<Vec<M,E,S> >::Dvd
 
 1203 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1204 typename Vec<M,E,S>::template Result<std::complex<R> >::Dvd
 
 1206 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1207 typename CNT<std::complex<R> >::template Result<Vec<M,E,S> >::Dvd
 
 1211 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1212 typename Vec<M,E,S>::template Result<typename negator<R>::StdNumber>::Dvd
 
 1214 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1215 typename CNT<R>::template Result<Vec<M,E,S> >::Dvd
 
 1226 template <
int M, 
class E, 
int S> 
inline 
 1227 typename Vec<M,E,S>::template Result<float>::Add
 
 1230 template <
int M, 
class E, 
int S> 
inline 
 1231 typename Vec<M,E,S>::template Result<float>::Add
 
 1234 template <
int M, 
class E, 
int S> 
inline 
 1235 typename Vec<M,E,S>::template Result<double>::Add
 
 1238 template <
int M, 
class E, 
int S> 
inline 
 1239 typename Vec<M,E,S>::template Result<double>::Add
 
 1243 template <
int M, 
class E, 
int S> 
inline 
 1244 typename Vec<M,E,S>::template Result<typename CNT<E>::Precision>::Add
 
 1246 template <
int M, 
class E, 
int S> 
inline 
 1247 typename Vec<M,E,S>::template Result<typename CNT<E>::Precision>::Add
 
 1253 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1254 typename Vec<M,E,S>::template Result<std::complex<R> >::Add
 
 1257 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1258 typename Vec<M,E,S>::template Result<std::complex<R> >::Add
 
 1262 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1263 typename Vec<M,E,S>::template Result<std::complex<R> >::Add
 
 1265 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1266 typename Vec<M,E,S>::template Result<std::complex<R> >::Add
 
 1270 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1271 typename Vec<M,E,S>::template Result<typename negator<R>::StdNumber>::Add
 
 1273 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1274 typename Vec<M,E,S>::template Result<typename negator<R>::StdNumber>::Add
 
 1280 template <
int M, 
class E, 
int S> 
inline 
 1281 typename Vec<M,E,S>::template Result<float>::Sub
 
 1284 template <
int M, 
class E, 
int S> 
inline 
 1285 typename CNT<float>::template Result<Vec<M,E,S> >::Sub
 
 1289 template <
int M, 
class E, 
int S> 
inline 
 1290 typename Vec<M,E,S>::template Result<double>::Sub
 
 1293 template <
int M, 
class E, 
int S> 
inline 
 1294 typename CNT<double>::template Result<Vec<M,E,S> >::Sub
 
 1299 template <
int M, 
class E, 
int S> 
inline 
 1300 typename Vec<M,E,S>::template Result<typename CNT<E>::Precision>::Sub
 
 1302 template <
int M, 
class E, 
int S> 
inline 
 1310 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1311 typename Vec<M,E,S>::template Result<std::complex<R> >::Sub
 
 1314 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1315 typename CNT<std::complex<R> >::template Result<Vec<M,E,S> >::Sub
 
 1320 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1321 typename Vec<M,E,S>::template Result<std::complex<R> >::Sub
 
 1323 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1324 typename CNT<std::complex<R> >::template Result<Vec<M,E,S> >::Sub
 
 1328 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1329 typename Vec<M,E,S>::template Result<typename negator<R>::StdNumber>::Sub
 
 1331 template <
int M, 
class E, 
int S, 
class R> 
inline 
 1332 typename CNT<R>::template Result<Vec<M,E,S> >::Sub
 
 1336 template <
int M, 
class E, 
int S, 
class CHAR, 
class TRAITS> 
inline 
 1337 std::basic_ostream<CHAR,TRAITS>&
 
 1338 operator<<(std::basic_ostream<CHAR,TRAITS>& o, 
const Vec<M,E,S>& v) {
 
 1339     o << 
"~[" << v[0]; 
for(
int i=1;i<M;++i) o<<
','<<v[i]; o<<
']'; 
return o;
 
 1344 template <
int M, 
class E, 
int S, 
class CHAR, 
class TRAITS> 
inline 
 1345 std::basic_istream<CHAR,TRAITS>&
 
 1348     is >> tilde; 
if (is.fail()) 
return is;
 
 1349     if (tilde != CHAR(
'~')) {
 
 1351         is.unget(); 
if (is.fail()) 
return is;
 
 1354     CHAR openBracket, closeBracket;
 
 1355     is >> openBracket; 
if (is.fail()) 
return is;
 
 1356     if (openBracket==CHAR(
'('))
 
 1357         closeBracket = CHAR(
')');
 
 1358     else if (openBracket==CHAR(
'['))
 
 1359         closeBracket = CHAR(
']');
 
 1361         closeBracket = CHAR(0);
 
 1362         is.unget(); 
if (is.fail()) 
return is;
 
 1367     if (tilde != CHAR(0) && closeBracket == CHAR(0)) {
 
 1368         is.setstate( std::ios::failbit );
 
 1372     for (
int i=0; i < M; ++i) {
 
 1374         if (is.fail()) 
return is;
 
 1376             CHAR c; is >> c; 
if (is.fail()) 
return is;
 
 1377             if (c != 
',') is.unget();
 
 1378             if (is.fail()) 
return is;
 
 1384     if (closeBracket != CHAR(0)) {
 
 1385         CHAR closer; is >> closer; 
if (is.fail()) 
return is;
 
 1386         if (closer != closeBracket) {
 
 1387             is.unget(); 
if (is.fail()) 
return is;
 
 1388             is.setstate( std::ios::failbit );
 
Mandatory first inclusion for any Simbody source or header file.
 
Specialized information about Composite Numerical Types which allows us to define appropriate templat...
Definition: CompositeNumericalTypes.h:136
 
static K getNaN()
Definition: CompositeNumericalTypes.h:246
 
K::ULessScalar ULessScalar
Definition: CompositeNumericalTypes.h:161
 
static double getDefaultTolerance()
Definition: CompositeNumericalTypes.h:269
 
K::ScalarNormSq ScalarNormSq
Definition: CompositeNumericalTypes.h:166
 
K::StdNumber StdNumber
Definition: CompositeNumericalTypes.h:163
 
static TSqrt sqrt(const K &t)
Definition: CompositeNumericalTypes.h:239
 
K::TSqHermT TSqHermT
Definition: CompositeNumericalTypes.h:146
 
K::TSqrt TSqrt
Definition: CompositeNumericalTypes.h:154
 
K::TInvert TInvert
Definition: CompositeNumericalTypes.h:157
 
K::TNormalize TNormalize
Definition: CompositeNumericalTypes.h:158
 
K::TWithoutNegator TWithoutNegator
Definition: CompositeNumericalTypes.h:140
 
K::TReal TReal
Definition: CompositeNumericalTypes.h:141
 
static TStandard standardize(const K &t)
Definition: CompositeNumericalTypes.h:241
 
K::THerm THerm
Definition: CompositeNumericalTypes.h:144
 
K::TPosTrans TPosTrans
Definition: CompositeNumericalTypes.h:145
 
K::TNeg TNeg
Definition: CompositeNumericalTypes.h:139
 
K::TStandard TStandard
Definition: CompositeNumericalTypes.h:156
 
K::TComplex TComplex
Definition: CompositeNumericalTypes.h:143
 
K::TSqTHerm TSqTHerm
Definition: CompositeNumericalTypes.h:147
 
K::TImag TImag
Definition: CompositeNumericalTypes.h:142
 
K::Precision Precision
Definition: CompositeNumericalTypes.h:164
 
K::Scalar Scalar
Definition: CompositeNumericalTypes.h:160
 
K::TAbs TAbs
Definition: CompositeNumericalTypes.h:155
 
K::Number Number
Definition: CompositeNumericalTypes.h:162
 
This class represents a small matrix whose size is known at compile time, containing elements of any ...
Definition: Mat.h:97
 
Definition: NTraits.h:436
 
This is a fixed-length row vector designed for no-overhead inline computation.
Definition: Row.h:132
 
This is a small, fixed-size symmetric or Hermitian matrix designed for no-overhead inline computation...
Definition: SymMat.h:87
 
This is a fixed-length column vector designed for no-overhead inline computation.
Definition: Vec.h:184
 
THerm & operator~()
Recast to Hermitian transposed type and return a writable reference; the effect is that writing to el...
Definition: Vec.h:653
 
Vec< M, typename CNT< E >::template Result< EE >::Sub > scalarSubtract(const EE &e) const
Definition: Vec.h:760
 
TSqrt sqrt() const
Elementwise square root; that is, the return value has the same length as this Vec but with each elem...
Definition: Vec.h:337
 
Vec< MM, ELT, STRIDE > & updSubVec(int i)
Extract a writable reference to a sub-Vec with size known at compile time.
Definition: Vec.h:837
 
bool isNumericallyEqual(const ELT &e, double tol=getDefaultTolerance()) const
Test whether every element of this vector is numerically equal to the given element,...
Definition: Vec.h:977
 
void setToNaN()
Set every scalar in this Vec to NaN; this is the default initial value in Debug builds,...
Definition: Vec.h:812
 
const TWithoutNegator & castAwayNegatorIfAny() const
Recast to remove negators from this Vec's type if present; this is handy for simplifying operations w...
Definition: Vec.h:708
 
CNT< E >::TStandard EStandard
Return type of standardize(E) method; a packed type that can hold the value of an element after elimi...
Definition: Vec.h:221
 
Vec(const ENeg &ne)
Construction from a single value of this Vec's negated element type assigns that value to each elemen...
Definition: Vec.h:476
 
Vec & scalarMinusEqFromLeft(const EE &ee)
Definition: Vec.h:789
 
const THerm & transpose() const
Non-operator version of Hermitian transpose; just a recast.
Definition: Vec.h:662
 
Vec & scalarTimesEqFromLeft(const EE &ee)
Definition: Vec.h:793
 
Row< M, EHerm, STRIDE > THerm
Type of this Vec after casting to its Hermitian transpose; that is, the Vec turns into a Row and each...
Definition: Vec.h:284
 
CNT< E >::TWithoutNegator EWithoutNegator
Element type, stripped of negator<> if it has one.
Definition: Vec.h:195
 
CNT< E >::Number ENumber
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:230
 
CNT< E >::TNeg ENeg
Negated version of this Vec's element type; ENeg==negator< E >.
Definition: Vec.h:193
 
Vec & scalarEq(int ee)
Definition: Vec.h:801
 
bool isInf() const
Return true if any element of this Vec contains a +Infinity or -Infinity somewhere but no element con...
Definition: Vec.h:927
 
Vec & operator=(const EE *p)
Assignment to a pointer to elements of any type EE assumes we're pointing at a C++ array of EE's of t...
Definition: Vec.h:523
 
const TNeg & operator-() const
Unary minus recasts this Vec to a type that has the opposite interpretation of the sign but is otherw...
Definition: Vec.h:642
 
ELT E
Element type of this Vec.
Definition: Vec.h:191
 
Vec & operator*=(const EE &e)
Definition: Vec.h:778
 
Row< M, E, STRIDE > TPosTrans
Type of this Vec after casting to its positional transpose; that is, the Vec turns into a Row but the...
Definition: Vec.h:287
 
Vec< M, E, STRIDE > T
The type of this Vec.
Definition: Vec.h:265
 
TWithoutNegator & updCastAwayNegatorIfAny()
Recast to remove negators from this Vec's type if present and return a writable reference.
Definition: Vec.h:712
 
void setToZero()
Set every scalar in this Vec to zero.
Definition: Vec.h:817
 
static const Vec & getSubVec(const Vec< MM, ELT, STRIDE > &v, int i)
Extract a subvector of type Vec from a longer one that has the same element type and stride,...
Definition: Vec.h:847
 
Vec & operator/=(const EE &e)
Definition: Vec.h:779
 
EScalar Scalar
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:308
 
bool isNaN() const
Return true if any element of this Vec contains a NaN anywhere.
Definition: Vec.h:918
 
Vec< M, typename CNT< EE >::template Result< E >::Sub > scalarSubtractFromLeft(const EE &e) const
Definition: Vec.h:766
 
E & operator()(int i)
Same as non-const operator[] above.
Definition: Vec.h:606
 
std::string toString() const
Print Vec into a string and return it.
Definition: Vec.h:988
 
Vec & operator+=(const Vec< M, EE, SS > &r)
Add in a conforming Vec, of any element type and stride, provided that the element types are addition...
Definition: Vec.h:533
 
CNT< E >::StdNumber EStdNumber
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:231
 
E TElement
Element type of this Vec.
Definition: Vec.h:289
 
TInvert invert() const
This method is not supported for Vec objects.
Definition: Vec.h:635
 
Vec< M, typename CNT< E >::template Result< EE >::Mul > elementwiseMultiply(const Vec< M, EE, SS > &r) const
Elementwise multiply (Matlab " .* " operator).
Definition: Vec.h:580
 
const Vec< MM, ELT, STRIDE > & getSubVec(int i) const
Extract a const reference to a sub-Vec with size known at compile time.
Definition: Vec.h:827
 
Vec< M, EComplex, STRIDE > TComplex
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:280
 
Vec TCol
Type of a column of this CNT object (for a Vec, the whole thing).
Definition: Vec.h:293
 
THerm & updTranspose()
Non-operator version of Hermitian transpose; recasts and returns a writable reference.
Definition: Vec.h:665
 
const TNeg & negate() const
Non-operator version of unary negation; just a recast.
Definition: Vec.h:656
 
Vec< M, EAbs, 1 > TAbs
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:298
 
CNT< E >::ULessScalar EULessScalar
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:229
 
Vec & scalarDivideEqFromLeft(int ee)
Definition: Vec.h:808
 
Vec & operator-=(const Vec< M, EE, SS > &r)
Subtract off a conforming Vec, of any element type and stride, provided that the element types are ad...
Definition: Vec.h:543
 
bool isFinite() const
Return true if no element of this Vec contains an Infinity or a NaN anywhere.
Definition: Vec.h:942
 
Vec & scalarEq(const EE &ee)
Definition: Vec.h:783
 
Vec & operator-=(const EE &e)
Definition: Vec.h:777
 
TImag & imag()
Recast to show only the imaginary portion of this Vec and return a writable reference.
Definition: Vec.h:699
 
Vec(const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5)
Definition: Vec.h:499
 
Vec< M, typename CNT< E >::template Result< EE >::Dvd > scalarDivide(const EE &e) const
Definition: Vec.h:739
 
CNT< E >::TNormalize ENormalize
Packed type that can hold the value returned from normalize(E).
Definition: Vec.h:226
 
TNeg & updNegate()
Non-operator version of unary negation; recasts and returns a writable reference.
Definition: Vec.h:659
 
static int ncol()
The number of columns in a Vec is always 1.
Definition: Vec.h:322
 
Vec & operator+=(const Vec< M, negator< EE >, SS > &r)
Add in a conforming Vec, of any negated element type and stride, provided that the element types are ...
Definition: Vec.h:538
 
TNeg & operator-()
Recast to negated type and return a writable reference; writing to this will cause the negated result...
Definition: Vec.h:645
 
Vec< M, typename CNT< E >::template Result< EE >::Mul > scalarMultiply(const EE &e) const
Definition: Vec.h:724
 
Vec(const Vec< M, ENeg, SS > &src)
This is an implicit conversion from a Vec of the same length and negated element type (possibly with ...
Definition: Vec.h:458
 
Vec(int i)
Given an int value, turn it into a suitable floating point number, convert that to element type E and...
Definition: Vec.h:485
 
Vec(const E &e0, const E &e1)
Construct a Vec<2,E> from two elements of type E, etc.
Definition: Vec.h:490
 
Vec(const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5, const E &e6)
Definition: Vec.h:502
 
const THerm & operator~() const
The Hermitian transpose operator recasts this Vec to a type that specifies the opposite storage order...
Definition: Vec.h:649
 
Vec & scalarDivideEq(const EE &ee)
Definition: Vec.h:795
 
Vec< M, EWithoutNegator, STRIDE > TWithoutNegator
Type of this Vec with negator removed from its element type, if the element is negated.
Definition: Vec.h:271
 
Vec< M, ENormalize, 1 > TNormalize
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:301
 
TPosTrans & updPositionalTranspose()
Positional transpose returning a writable reference.
Definition: Vec.h:674
 
Vec & scalarDivideEqFromLeft(const EE &ee)
Definition: Vec.h:797
 
Vec & scalarTimesEqFromLeft(int ee)
Definition: Vec.h:807
 
static Vec & updSubVec(Vec< MM, ELT, STRIDE > &v, int i)
Extract a subvector of type Vec from a longer one that has the same element type and stride,...
Definition: Vec.h:855
 
Vec & operator+=(const EE &e)
Definition: Vec.h:776
 
Vec< M, ESqrt, 1 > TSqrt
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:297
 
Vec(const E &e0, const E &e1, const E &e2)
Definition: Vec.h:492
 
Vec & scalarPlusEq(int ee)
Definition: Vec.h:802
 
const TImag & imag() const
Return a reference to the imaginary portion of this Vec if it has complex elements; otherwise the typ...
Definition: Vec.h:692
 
CNT< ScalarNormSq >::TSqrt norm() const
Definition: Vec.h:610
 
Vec(const E &e0, const E &e1, const E &e2, const E &e3)
Definition: Vec.h:494
 
const TPosTrans & positionalTranspose() const
Positional transpose turns this Vec into a Row but does not transpose the individual elements.
Definition: Vec.h:671
 
ScalarNormSq scalarNormSqr() const
Scalar norm square is sum( conjugate squares of all underlying scalars ), where conjugate square of s...
Definition: Vec.h:327
 
Vec(const E &e0, const E &e1, const E &e2, const E &e3, const E &e4)
Definition: Vec.h:496
 
static double getDefaultTolerance()
For approximate comparisons, the default tolerance to use for a vector is the same as its elements' d...
Definition: Vec.h:951
 
TNormalize normalize() const
If the elements of this Vec are scalars, the result is what you get by dividing each element by the n...
Definition: Vec.h:623
 
const E & operator[](int i) const
Select an element of this Vec and return a const reference to it.
Definition: Vec.h:596
 
Vec & scalarTimesEq(int ee)
Definition: Vec.h:804
 
Vec()
Default construction initializes Vec's elements to NaN when debugging but leaves them uninitialized g...
Definition: Vec.h:425
 
Vec & scalarPlusEq(const EE &ee)
Definition: Vec.h:785
 
bool isNumericallyEqual(const Vec< M, E2, RS2 > &v, double tol) const
Test whether this vector is numerically equal to some other vector with the same shape,...
Definition: Vec.h:956
 
Vec< M+1, ELT, 1 > append1(const EE &v) const
Return a vector one larger than this one by adding an element to the end.
Definition: Vec.h:877
 
ScalarNormSq normSqr() const
Definition: Vec.h:608
 
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
 
TStandard standardize() const
Return a copy of this Vec but with the underlying scalar type converted (if necessary) to one of the ...
Definition: Vec.h:357
 
void set(int i, const E &value)
Variant of operator[] that's scripting friendly to set ith entry.
Definition: Vec.h:995
 
CNT< E >::TAbs EAbs
Type required to hold the result of abs(E).
Definition: Vec.h:218
 
Vec & operator=(const Vec &src)
Copy assignment operator copies the logically-included elements from the source Vec; gaps due to stri...
Definition: Vec.h:445
 
Vec< M+1, ELT, 1 > insert1(int p, const EE &v) const
Return a vector one larger than this one by inserting an element before the indicated one.
Definition: Vec.h:890
 
static int nrow()
The number of rows in a Vec is the number of elements.
Definition: Vec.h:320
 
const E & get(int i) const
Variant of operator[] that's scripting friendly to get const reference to ith entry.
Definition: Vec.h:999
 
Vec(const EE *p)
Construction from a pointer to elements of any type EE assumes we're pointing at a C++ array of EE's ...
Definition: Vec.h:516
 
Vec & operator=(const Vec< M, EE, SS > &vv)
Assignment to a conforming Vec, of any element type and stride, provided that the element types are a...
Definition: Vec.h:528
 
CNT< E >::TSqHermT ESqHermT
Type of the expression ~E*E (default vector and matrix square; symmetric).
Definition: Vec.h:212
 
CNT< E >::TReal EReal
Type showing just the real part of an element of this Vec if elements are complex; otherwise just the...
Definition: Vec.h:198
 
const Vec & operator+() const
Unary plus does nothing.
Definition: Vec.h:638
 
CNT< E >::TComplex EComplex
Type that elements would have if complex, if E is currently real; otherwise just the element type E.
Definition: Vec.h:205
 
Vec< M, typename CNT< EE >::template Result< E >::Dvd > scalarDivideFromLeft(const EE &e) const
Definition: Vec.h:745
 
CNT< E >::TPosTrans EPosTrans
Type of a positional transpose of an element of this Vec.
Definition: Vec.h:209
 
Vec & scalarMinusEqFromLeft(int ee)
Definition: Vec.h:806
 
Vec & scalarMinusEq(int ee)
Definition: Vec.h:803
 
Vec< M, typename CNT< EE >::template Result< E >::Mul > scalarMultiplyFromLeft(const EE &e) const
Definition: Vec.h:730
 
CNT< E >::Precision EPrecision
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:232
 
Vec< M, typename CNT< E >::template Result< EE >::Sub > conformingSubtract(const Vec< M, EE, SS > &r) const
Vector subtraction – use operator- instead.
Definition: Vec.h:563
 
ESqHermT TSqHermT
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:303
 
CNT< E >::ScalarNormSq EScalarNormSq
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:233
 
Vec(const E &e)
Construction from a single value of this Vec's element type assigns that value to each element.
Definition: Vec.h:470
 
static const Vec & getAs(const ELT *p)
Recast an ordinary C++ array E[] to a const Vec<M,E,S>; assumes compatible length,...
Definition: Vec.h:904
 
EScalarNormSq ScalarNormSq
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:313
 
@ SignInterpretation
Definition: Vec.h:257
 
@ IsStdNumber
Definition: Vec.h:255
 
@ IsULessScalar
Definition: Vec.h:253
 
@ NRows
Definition: Vec.h:239
 
@ ArgDepth
Definition: Vec.h:249
 
@ RealStrideFactor
Definition: Vec.h:247
 
@ ColSpacing
Definition: Vec.h:245
 
@ NPackedElements
Definition: Vec.h:241
 
@ IsNumber
Definition: Vec.h:254
 
@ IsPrecision
Definition: Vec.h:256
 
@ RowSpacing
Definition: Vec.h:244
 
@ NActualElements
Definition: Vec.h:242
 
@ NCols
Definition: Vec.h:240
 
@ ImagOffset
Definition: Vec.h:246
 
@ IsScalar
Definition: Vec.h:252
 
@ NActualScalars
Definition: Vec.h:243
 
CNT< E >::TImag EImag
Type showing the imaginary part of an element of this Vec as real, if elements are complex; otherwise...
Definition: Vec.h:202
 
EULessScalar ULessScalar
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:309
 
const E & operator()(int i) const
Same as const operator[] above.
Definition: Vec.h:599
 
Vec< M, EImag, STRIDE *CNT< E >::RealStrideFactor > TImag
Type of this Vec cast to show only the imaginary part of its element; this might affect the stride.
Definition: Vec.h:279
 
Vec< M, EStandard, 1 > TStandard
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:299
 
const TReal & real() const
Return a reference to the real portion of this Vec if it has complex elements; otherwise the type doe...
Definition: Vec.h:681
 
ENumber Number
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:310
 
Vec(const Vec &src)
Copy constructor copies the logically-included elements from the source Vec; gaps due to stride are n...
Definition: Vec.h:438
 
Vec(const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5, const E &e6, const E &e7, const E &e8)
Definition: Vec.h:508
 
Vec(const Vec< M, E, SS > &src)
This is an implicit conversion from a Vec of the same length and element type but with a different st...
Definition: Vec.h:452
 
CNT< E >::TSqrt ESqrt
Type required to hold the result of sqrt(E).
Definition: Vec.h:216
 
Vec< M, ENeg, STRIDE > TNeg
Type this Vec would have if its elements were interpreted as negated.
Definition: Vec.h:268
 
Vec(const Vec< M, EE, SS > &src)
Construct a Vec from a Vec of the same length, with any stride.
Definition: Vec.h:464
 
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
 
bool isNumericallyEqual(const Vec< M, E2, RS2 > &v) const
Test whether this vector is numerically equal to some other vector with the same shape,...
Definition: Vec.h:967
 
Vec< M, typename CNT< E >::template Result< EE >::Dvd > elementwiseDivide(const Vec< M, EE, SS > &r) const
Elementwise divide (Matlab " ./ " operator).
Definition: Vec.h:587
 
TReal & real()
Recast to show only the real portion of this Vec and return a writable reference.
Definition: Vec.h:684
 
static int size()
The number of elements in this Vec (note that stride does not affect this number.)
Definition: Vec.h:318
 
static Vec< M, ELT, 1 > getNaN()
Return a Vec of the same length and element type as this one but with all elements set to NaN.
Definition: Vec.h:915
 
Row< M, EInvert, 1 > TInvert
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:300
 
E TRow
Type of a row of this CNT object (for a Vec, just its element type).
Definition: Vec.h:291
 
Vec< M, typename CNT< E >::template Result< EE >::Add > conformingAdd(const Vec< M, EE, SS > &r) const
Vector addition – use operator+ instead.
Definition: Vec.h:556
 
Vec(const E &e0, const E &e1, const E &e2, const E &e3, const E &e4, const E &e5, const E &e6, const E &e7)
Definition: Vec.h:505
 
Vec< M-1, ELT, 1 > drop1(int p) const
Return a vector one smaller than this one by dropping the element at the indicated position p.
Definition: Vec.h:863
 
E & operator[](int i)
Select an element of this Vec and return a writable reference to it.
Definition: Vec.h:604
 
Vec & scalarDivideEq(int ee)
Definition: Vec.h:805
 
Vec< M, EReal, STRIDE *CNT< E >::RealStrideFactor > TReal
Type of this Vec cast to show only the real part of its element; this might affect the stride.
Definition: Vec.h:275
 
EStdNumber StdNumber
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:311
 
CNT< E >::TSqTHerm ESqTHerm
Type of the expression E*~E ("row square"; symmetric).
Definition: Vec.h:214
 
Vec & operator-=(const Vec< M, negator< EE >, SS > &r)
Subtract off a conforming Vec, of any negated element type and stride, provided that the element type...
Definition: Vec.h:548
 
CNT< E >::TInvert EInvert
Packed type that can hold the value returned from invert(E), the inverse type of an element.
Definition: Vec.h:224
 
CNT< E >::THerm EHerm
Type of the Hermitian transpose of an element of this Vec.
Definition: Vec.h:207
 
Vec & scalarMinusEq(const EE &ee)
Definition: Vec.h:787
 
EPrecision Precision
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:312
 
Mat< M, M, typename CNT< E >::template Result< EE >::Mul > conformingMultiply(const Row< M, EE, SS > &r) const
Same as outer product (m = col*row) – use operator* or outer() instead.
Definition: Vec.h:572
 
Vec & scalarTimesEq(const EE &ee)
Definition: Vec.h:791
 
SymMat< M, ESqTHerm > TSqTHerm
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:304
 
Vec< M, typename CNT< E >::template Result< EE >::Add > scalarAdd(const EE &e) const
Definition: Vec.h:752
 
CNT< E >::Scalar EScalar
These compile-time constants are required of every Composite Numerical Type (CNT).
Definition: Vec.h:228
 
static Vec & updAs(ELT *p)
Recast a writable ordinary C++ array E[] to a writable Vec<M,E,S>; assumes compatible length,...
Definition: Vec.h:908
 
SimTK::conjugate<R> should be instantiated only for float, double.
Definition: conjugate.h:178
 
negator<N>, where N is a number type (real, complex, conjugate), is represented in memory identically...
Definition: negator.h:75
 
NTraits< N >::StdNumber StdNumber
Definition: negator.h:107
 
void copy(Row< 1, E1, S1 > &r1, const Row< 1, E2, S2 > &r2)
Definition: Row.h:105
 
void elementwiseDivide(const Row< 1, E1, S1 > &r1, const Row< 1, E2, S2 > &r2, Row< 1, typename CNT< E1 >::template Result< E2 >::Dvd > &result)
Definition: Row.h:90
 
void conformingSubtract(const Row< 1, E1, S1 > &r1, const Row< 1, E2, S2 > &r2, Row< 1, typename CNT< E1 >::template Result< E2 >::Sub > &result)
Definition: Row.h:60
 
void conformingAdd(const Row< 1, E1, S1 > &r1, const Row< 1, E2, S2 > &r2, Row< 1, typename CNT< E1 >::template Result< E2 >::Add > &result)
Definition: Row.h:45
 
void elementwiseMultiply(const Row< 1, E1, S1 > &r1, const Row< 1, E2, S2 > &r2, Row< 1, typename CNT< E1 >::template Result< E2 >::Mul > &result)
Definition: Row.h:75
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
Matrix_< typename CNT< E1 >::template Result< E2 >::Sub > operator-(const MatrixBase< E1 > &l, const MatrixBase< E2 > &r)
Definition: BigMatrix.h:584
 
Matrix_< E > operator/(const MatrixBase< E > &l, const typename CNT< E >::StdNumber &r)
Definition: BigMatrix.h:613
 
std::ostream & operator<<(std::ostream &o, const ContactForce &f)
Definition: CompliantContactSubsystem.h:387
 
std::basic_istream< CHAR, TRAITS > & operator>>(std::basic_istream< CHAR, TRAITS > &is, conjugate< R > &c)
Definition: conjugate.h:505
 
Matrix_< typename CNT< E1 >::template Result< E2 >::Add > operator+(const MatrixBase< E1 > &l, const MatrixBase< E2 > &r)
Definition: BigMatrix.h:568
 
ELEM max(const VectorBase< ELEM > &v)
Definition: VectorMath.h:251
 
bool operator>(const L &left, const R &right)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:651
 
RowVectorBase< typename CNT< ELEM >::TAbs > abs(const RowVectorBase< ELEM > &v)
Definition: VectorMath.h:120
 
@ MAX_RESOLVED_DEPTH
Definition: CompositeNumericalTypes.h:120
 
bool operator>=(const L &left, const R &right)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:663
 
bool operator<(const Row< N, E1, S1 > &l, const Row< N, E2, S2 > &r)
bool = v1[i] < v2[i], for all elements i
Definition: Row.h:822
 
bool operator<=(const L &left, const R &right)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:657
 
Matrix_< E > operator*(const MatrixBase< E > &l, const typename CNT< E >::StdNumber &r)
Definition: BigMatrix.h:605
 
bool operator==(const PhiMatrix &p1, const PhiMatrix &p2)
Definition: SpatialAlgebra.h:791
 
bool operator!=(const L &left, const R &right)
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:645
 
Vec< M, typename CNT< E >::template Result< P >::Sub, 1 > Sub
Definition: Vec.h:381
 
Vec< M, typename CNT< E >::template Result< P >::Mul, 1 > Mul
Definition: Vec.h:378
 
Vec< M, typename CNT< E >::template Result< P >::Dvd, 1 > Dvd
Definition: Vec.h:379
 
Vec< M, typename CNT< E >::template Result< P >::Add, 1 > Add
Definition: Vec.h:380
 
DvdOp::Type Dvd
Definition: Vec.h:400
 
MulCNTsNonConforming< M, 1, ArgDepth, Vec, ColSpacing, RowSpacing, CNT< P >::NRows, CNT< P >::NCols, CNT< P >::ArgDepth, P, CNT< P >::ColSpacing, CNT< P >::RowSpacing > MulOpNonConforming
Definition: Vec.h:394
 
DvdCNTs< M, 1, ArgDepth, Vec, ColSpacing, RowSpacing, CNT< P >::NRows, CNT< P >::NCols, CNT< P >::ArgDepth, P, CNT< P >::ColSpacing, CNT< P >::RowSpacing > DvdOp
Definition: Vec.h:399
 
AddCNTs< M, 1, ArgDepth, Vec, ColSpacing, RowSpacing, CNT< P >::NRows, CNT< P >::NCols, CNT< P >::ArgDepth, P, CNT< P >::ColSpacing, CNT< P >::RowSpacing > AddOp
Definition: Vec.h:404
 
MulOp::Type Mul
Definition: Vec.h:390
 
MulCNTs< M, 1, ArgDepth, Vec, ColSpacing, RowSpacing, CNT< P >::NRows, CNT< P >::NCols, CNT< P >::ArgDepth, P, CNT< P >::ColSpacing, CNT< P >::RowSpacing > MulOp
Definition: Vec.h:389
 
AddOp::Type Add
Definition: Vec.h:405
 
SubCNTs< M, 1, ArgDepth, Vec, ColSpacing, RowSpacing, CNT< P >::NRows, CNT< P >::NCols, CNT< P >::ArgDepth, P, CNT< P >::ColSpacing, CNT< P >::RowSpacing > SubOp
Definition: Vec.h:409
 
MulOpNonConforming::Type MulNon
Definition: Vec.h:395
 
SubOp::Type Sub
Definition: Vec.h:410
 
Shape-preserving element substitution (always packed).
Definition: Vec.h:418
 
Vec< M, P > Type
Definition: Vec.h:419