From 672666283cec76924a67c2d986bd27a47d13f4e0 Mon Sep 17 00:00:00 2001 From: Edward Rosten Date: Tue, 11 Sep 2012 18:17:22 +0200 Subject: [PATCH] Add != Zeros overload for Matrix, Vector. --- Makefile.in | 2 +- internal/matrix.hh | 7 +++++++ internal/objects.h | 19 +++++++++++++++++++ internal/vector.hh | 9 ++++++++- regressions/zeros.cc | 28 ++++++++++++++++++++++++++++ regressions/zeros.txt | 15 +++++++++++++++ 6 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 regressions/zeros.cc create mode 100644 regressions/zeros.txt diff --git a/Makefile.in b/Makefile.in index 00361ea..3599e47 100644 --- a/Makefile.in +++ b/Makefile.in @@ -44,7 +44,7 @@ docs: doxygen -TESTS=lu slice vector_resize gauss_jordan eigen-sqrt determinant chol_toon chol_lapack simplex sym_eigen fill so3 complex qr gr_svd diagonal_matrix gaussian_elimination +TESTS=lu slice vector_resize gauss_jordan eigen-sqrt determinant chol_toon chol_lapack simplex sym_eigen fill so3 complex qr gr_svd diagonal_matrix gaussian_elimination zeros TEST_RESULT=$(TESTS:%=regressions/%.result) diff --git a/internal/matrix.hh b/internal/matrix.hh index 152789a..f7ccda9 100644 --- a/internal/matrix.hh +++ b/internal/matrix.hh @@ -283,6 +283,13 @@ public: return 1; return 0; } + + template + bool operator!=(const Operator& op) + { + return op.notequal(*this); + } + ///@} diff --git a/internal/objects.h b/internal/objects.h index c4e6764..219cc93 100644 --- a/internal/objects.h +++ b/internal/objects.h @@ -145,6 +145,25 @@ template<> struct Operator { } ///@} + template + bool notequal(Matrix& m) const { + for(int r=0; r + bool notequal(Vector& v) const { + for(int i=0; i operator()(int s); ///Generate a sized Zero object for constructing dynamic matrices. diff --git a/internal/vector.hh b/internal/vector.hh index 2f92c67..1f50d2c 100644 --- a/internal/vector.hh +++ b/internal/vector.hh @@ -357,7 +357,14 @@ public: return 1; return 0; } - + + + template + bool operator!=(const Operator& op) + { + return op.notequal(*this); + } + /// @} /// @name Misc diff --git a/regressions/zeros.cc b/regressions/zeros.cc new file mode 100644 index 0000000..1f515cd --- /dev/null +++ b/regressions/zeros.cc @@ -0,0 +1,28 @@ +#include "regressions/regression.h" + +int main() +{ + Vector<5> v1 = Zeros; + cout << v1 << endl; + + Vector<> v2 = Zeros(3); + cout << v2 << endl; + + Matrix<3,6> m1 = Zeros; + cout << m1 << endl; + + Matrix<> m2 = Zeros(2,3); + cout << m2 << endl; + + + Vector<4> v3 = Zeros; + cout << (v3 != Zeros) << endl; + + v3 = Ones; + cout << (v3 != Zeros) << endl; + + Matrix<4> m3 = Zeros; + cout << (m3 != Zeros) << endl; + m3 = Ones; + cout << (m3 != Zeros) << endl; +} diff --git a/regressions/zeros.txt b/regressions/zeros.txt new file mode 100644 index 0000000..2bb5c5c --- /dev/null +++ b/regressions/zeros.txt @@ -0,0 +1,15 @@ +0 0 0 0 0 + +0 0 0 + +0 0 0 0 0 0 +0 0 0 0 0 0 +0 0 0 0 0 0 + +0 0 0 +0 0 0 + +0 +1 +0 +1