25#define MKL_BLAS MKL_DOMAIN_BLAS
38typedef Eigen::VectorXd Vector;
41typedef Eigen::Matrix<double, 1, 1> Vector1;
42typedef Eigen::Vector2d Vector2;
43typedef Eigen::Vector3d Vector3;
45static const Eigen::MatrixBase<Vector2>::ConstantReturnType Z_2x1 = Vector2::Zero();
46static const Eigen::MatrixBase<Vector3>::ConstantReturnType Z_3x1 = Vector3::Zero();
50#define GTSAM_MAKE_VECTOR_DEFS(N) \
51 using Vector##N = Eigen::Matrix<double, N, 1>; \
52 static const Eigen::MatrixBase<Vector##N>::ConstantReturnType Z_##N##x1 = Vector##N::Zero();
54GTSAM_MAKE_VECTOR_DEFS(4)
55GTSAM_MAKE_VECTOR_DEFS(5)
56GTSAM_MAKE_VECTOR_DEFS(6)
57GTSAM_MAKE_VECTOR_DEFS(7)
58GTSAM_MAKE_VECTOR_DEFS(8)
59GTSAM_MAKE_VECTOR_DEFS(9)
60GTSAM_MAKE_VECTOR_DEFS(10)
61GTSAM_MAKE_VECTOR_DEFS(11)
62GTSAM_MAKE_VECTOR_DEFS(12)
64typedef Eigen::VectorBlock<Vector> SubVector;
65typedef Eigen::VectorBlock<const Vector> ConstSubVector;
72#if defined(GTSAM_EIGEN_VERSION_WORLD)
74 GTSAM_EIGEN_VERSION_WORLD==EIGEN_WORLD_VERSION &&
75 GTSAM_EIGEN_VERSION_MAJOR==EIGEN_MAJOR_VERSION,
76 "Error: GTSAM was built against a different version of Eigen");
95GTSAM_EXPORT
bool fpEqual(
double a,
double b,
double tol,
96 bool check_relative_also =
true);
101GTSAM_EXPORT
void print(
const Vector& v,
const std::string& s, std::ostream& stream);
106GTSAM_EXPORT
void print(
const Vector& v,
const std::string& s =
"");
111GTSAM_EXPORT
void save(
const Vector& A,
const std::string &s,
const std::string& filename);
116GTSAM_EXPORT
bool operator==(
const Vector& vec1,
const Vector& vec2);
128GTSAM_EXPORT
bool equal_with_abs_tol(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
129GTSAM_EXPORT
bool equal_with_abs_tol(
const SubVector& vec1,
const SubVector& vec2,
double tol=1e-9);
134inline bool equal(
const Vector& vec1,
const Vector& vec2,
double tol) {
141inline bool equal(
const Vector& vec1,
const Vector& vec2) {
152GTSAM_EXPORT
bool assert_equal(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
161GTSAM_EXPORT
bool assert_inequal(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
170GTSAM_EXPORT
bool assert_equal(
const SubVector& vec1,
const SubVector& vec2,
double tol=1e-9);
171GTSAM_EXPORT
bool assert_equal(
const ConstSubVector& vec1,
const ConstSubVector& vec2,
double tol=1e-9);
180GTSAM_EXPORT
bool linear_dependent(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
188GTSAM_EXPORT Vector
ediv_(
const Vector &a,
const Vector &b);
193template<
class V1,
class V2>
194inline double dot(
const V1 &a,
const V2& b) {
195 assert (b.size()==a.size());
200template<
class V1,
class V2>
202 assert (b.size()==a.size());
210inline void GTSAM_DEPRECATED
scal(
double alpha, Vector& x) { x *= alpha; }
216template<
class V1,
class V2>
217inline void GTSAM_DEPRECATED
axpy(
double alpha,
const V1& x, V2& y) {
218 assert (y.size()==x.size());
221inline void axpy(
double alpha,
const Vector& x, SubVector y) {
222 assert (y.size()==x.size());
231GTSAM_EXPORT std::pair<double,Vector>
house(
const Vector &x);
246GTSAM_EXPORT std::pair<Vector, double>
247weightedPseudoinverse(
const Vector& v,
const Vector& weights);
254GTSAM_EXPORT
double weightedPseudoinverse(
const Vector& a,
const Vector& weights, Vector& pseudo);
259GTSAM_EXPORT Vector
concatVectors(
const std::list<Vector>& vs);
267#include <boost/serialization/nvp.hpp>
268#include <boost/serialization/array.hpp>
269#include <boost/serialization/split_free.hpp>
272 namespace serialization {
275 template<
class Archive>
276 void save(Archive & ar,
const gtsam::Vector & v,
unsigned int ) {
277 const size_t size = v.size();
278 ar << BOOST_SERIALIZATION_NVP(size);
279 ar << make_nvp(
"data", make_array(v.data(), v.size()));
282 template<
class Archive>
283 void load(Archive & ar, gtsam::Vector & v,
unsigned int ) {
285 ar >> BOOST_SERIALIZATION_NVP(size);
287 ar >> make_nvp(
"data", make_array(v.data(), v.size()));
291 template<
class Archive,
int D>
292 void save(Archive & ar,
const Eigen::Matrix<double,D,1> & v,
unsigned int ) {
293 ar << make_nvp(
"data", make_array(v.data(), v.RowsAtCompileTime));
296 template<
class Archive,
int D>
297 void load(Archive & ar, Eigen::Matrix<double,D,1> & v,
unsigned int ) {
298 ar >> make_nvp(
"data", make_array(v.data(), v.RowsAtCompileTime));
304BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector)
305BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector2)
306BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector3)
307BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector6)
Included from all GTSAM files.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
Vector ediv_(const Vector &a, const Vector &b)
elementwise division, but 0/0 = 0, not inf
Definition: Vector.cpp:199
bool greaterThanOrEqual(const Vector &vec1, const Vector &vec2)
Greater than or equal to operation returns true if all elements in v1 are greater than corresponding ...
Definition: Vector.cpp:114
void save(const Matrix &A, const string &s, const string &filename)
save a matrix to file, which can be loaded by matlab
Definition: Matrix.cpp:166
bool assert_equal(const Matrix &expected, const Matrix &actual, double tol)
equals with an tolerance, prints out message if unequal
Definition: Matrix.cpp:42
bool linear_dependent(const Matrix &A, const Matrix &B, double tol)
check whether the rows of two matrices are linear dependent
Definition: Matrix.cpp:116
double inner_prod(const V1 &a, const V2 &b)
compatibility version for ublas' inner_prod()
Definition: Vector.h:201
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
bool assert_inequal(const Matrix &A, const Matrix &B, double tol)
inequals with an tolerance, prints out message if within tolerance
Definition: Matrix.cpp:62
void GTSAM_DEPRECATED scal(double alpha, Vector &x)
BLAS Level 1 scal: x <- alpha*x.
Definition: Vector.h:210
double houseInPlace(Vector &v)
beta = house(x) computes the HouseHolder vector in place
Definition: Vector.cpp:212
bool equal(const T &obj1, const T &obj2, double tol)
Call equal on the object.
Definition: Testable.h:84
double dot(const V1 &a, const V2 &b)
Dot product.
Definition: Vector.h:194
bool fpEqual(double a, double b, double tol, bool check_relative_also)
Ensure we are not including a different version of Eigen in user code than while compiling gtsam,...
Definition: Vector.cpp:42
Vector concatVectors(const std::list< Vector > &vs)
concatenate Vectors
Definition: Vector.cpp:302
bool equal_with_abs_tol(const Eigen::DenseBase< MATRIX > &A, const Eigen::DenseBase< MATRIX > &B, double tol=1e-9)
equals with a tolerance
Definition: Matrix.h:84
void GTSAM_DEPRECATED axpy(double alpha, const V1 &x, V2 &y)
BLAS Level 1 axpy: y <- alpha*x + y.
Definition: Vector.h:217
pair< double, Vector > house(const Vector &x)
house(x,j) computes HouseHolder vector v and scaling factor beta from x, such that the corresponding ...
Definition: Vector.cpp:237
bool operator==(const Matrix &A, const Matrix &B)
equality is just equal_with_abs_tol 1e-9
Definition: Matrix.h:103