aboutsummaryrefslogtreecommitdiff
path: root/apps/systemlib/math/Vector.cpp
diff options
context:
space:
mode:
authorjgoppert <james.goppert@gmail.com>2013-01-06 14:08:50 -0500
committerjgoppert <james.goppert@gmail.com>2013-01-06 14:08:50 -0500
commitdb3fabc3baccdeef3108544b4e9da9c8f0895a58 (patch)
tree27ae1dfc7a5b36e3520abcb4a8346c607524c5a1 /apps/systemlib/math/Vector.cpp
parent1579630efef6f719deefd0949f73c5df2bcc127b (diff)
downloadpx4-firmware-db3fabc3baccdeef3108544b4e9da9c8f0895a58.tar.gz
px4-firmware-db3fabc3baccdeef3108544b4e9da9c8f0895a58.tar.bz2
px4-firmware-db3fabc3baccdeef3108544b4e9da9c8f0895a58.zip
Added math library.
Diffstat (limited to 'apps/systemlib/math/Vector.cpp')
-rw-r--r--apps/systemlib/math/Vector.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/apps/systemlib/math/Vector.cpp b/apps/systemlib/math/Vector.cpp
new file mode 100644
index 000000000..5bdbc9168
--- /dev/null
+++ b/apps/systemlib/math/Vector.cpp
@@ -0,0 +1,99 @@
+/****************************************************************************
+ *
+ * Copyright (C) 2012 PX4 Development Team. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name PX4 nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/**
+ * @file Vector.cpp
+ *
+ * math vector
+ */
+
+#include <systemlib/test/test.hpp>
+
+#include "Vector.hpp"
+
+namespace math
+{
+
+static const float data_testA[] = {1,3};
+static const float data_testB[] = {4,1};
+
+static Vector testA(2,data_testA);
+static Vector testB(2,data_testB);
+
+int __EXPORT vectorTest()
+{
+ vectorAddTest();
+ vectorSubTest();
+ return 0;
+}
+
+int vectorAddTest()
+{
+ printf("Test Vector Add\t\t: ");
+ Vector r = testA + testB;
+ float data_test[] = {5.0f, 4.0f};
+ ASSERT(vectorEqual(Vector(2,data_test),r));
+ printf("PASS\n");
+ return 0;
+}
+
+int vectorSubTest()
+{
+ printf("Test Vector Sub\t\t: ");
+ Vector r(2);
+ r = testA - testB;
+ float data_test[] = {-3.0f, 2.0f};
+ ASSERT(vectorEqual(Vector(2,data_test),r));
+ printf("PASS\n");
+ return 0;
+}
+
+bool vectorEqual(const Vector & a, const Vector & b, float eps)
+{
+ if (a.getRows() != b.getRows()) {
+ printf("row number not equal a: %d, b:%d\n", a.getRows(), b.getRows());
+ return false;
+ }
+ bool ret = true;
+ for (size_t i=0;i<a.getRows();i++)
+ {
+ if (!equal(a(i),b(i),eps))
+ {
+ printf("element mismatch (%d)\n", i);
+ ret = false;
+ }
+ }
+ return ret;
+}
+
+} // namespace math