aboutsummaryrefslogtreecommitdiffstats
path: root/libprakpp/tests
diff options
context:
space:
mode:
Diffstat (limited to 'libprakpp/tests')
-rw-r--r--libprakpp/tests/compile_flags.txt2
-rw-r--r--libprakpp/tests/test_data21
-rw-r--r--libprakpp/tests/test_include.cpp31
-rw-r--r--libprakpp/tests/tests.cpp66
4 files changed, 120 insertions, 0 deletions
diff --git a/libprakpp/tests/compile_flags.txt b/libprakpp/tests/compile_flags.txt
new file mode 100644
index 0000000..42a9c4d
--- /dev/null
+++ b/libprakpp/tests/compile_flags.txt
@@ -0,0 +1,2 @@
+-std=c++2c
+-I../include
diff --git a/libprakpp/tests/test_data b/libprakpp/tests/test_data
new file mode 100644
index 0000000..a68190d
--- /dev/null
+++ b/libprakpp/tests/test_data
@@ -0,0 +1,21 @@
+index steel_n_up steel_n_down steel_n copper_n_up copper_n_down copper_n
+0 69.8048106744458 69.8048106744458 ? 0 0 ?
+1 59.538400172313104 59.538400172313104 ? 0 0 ?
+2 49.77235665705151 49.77235665705151 ? 0 0 ?
+3 39.003794962183754 39.003794962183754 ? 0 0 ?
+4 29.41454165597367 29.41454165597367 ? 0 0 ?
+5 19.85284784036345 19.85284784036345 ? 0 0 ?
+6 9.621038299065232 9.621038299065232 ? 0 0 ?
+7 -0.9475724262480807 -0.9475724262480807 ? 0 0 ?
+8 -10.349127476774775 -10.349127476774775 ? 0 0 ?
+9 -20.602089970343936 -20.602089970343936 ? 0 0 ?
+10 -30.69633194493392 -30.69633194493392 ? 0 0 ?
+11 -40.16111422807451 -40.16111422807451 ? 0 0 ?
+12 -50.86998825863326 -50.86998825863326 ? 0 0 ?
+13 -60.712258771120425 -60.712258771120425 ? 0 0 ?
+14 -70.75473619559727 -70.75473619559727 ? 0 0 ?
+15 -80.96959205323306 -80.96959205323306 ? 0 0 ?
+16 -90.85022462488773 -90.85022462488773 ? 0 0 ?
+17 -100.67744328024175 -100.67744328024175 ? 0 0 ?
+18 -110.14378705377496 -110.14378705377496 ? 0 0 ?
+19 -120.3377964523638 -120.3377964523638 ? 0 0 ?
diff --git a/libprakpp/tests/test_include.cpp b/libprakpp/tests/test_include.cpp
new file mode 100644
index 0000000..af61860
--- /dev/null
+++ b/libprakpp/tests/test_include.cpp
@@ -0,0 +1,31 @@
+#include "prakmath.hpp"
+#include "prakmatrix.hpp"
+
+int main() {
+ using namespace prak;
+ matrix<double> A(2, 1, {-1, 1});
+ matrix<double> B(1, 2, {1, -2});
+ matrix<double> C = A*B * (1.0/1.0);
+ std::cout << A << '\n' << B << '\n' << C << std::endl;
+ matrix<double> D = C + matrix<double>(2, 2, {-1, -2, -3, -4});
+ std::getchar();
+ D.feq_precision = 10;
+ matrix<double> A_1 = D.inv().value();
+ std::cout << A_1 << std::endl;
+ std::cout << A_1*D << D*A_1 << std::endl;
+ matrix<double> E(2, 3, {1, 2, 3, 4, 5, 6});
+ std::cout << E << '\n' << E.tr() << std::endl;
+ std::vector<double> xs = {0, 1, 2, 3, 4, 5, 6, 7};
+ std::vector<double> ys = {1, 2.9, 5.2, 7.1, 9, 11.05, 12.7, 14};
+ /* std::vector<double> ss = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}; */
+ std::vector<double> ss = {0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1};
+ /* std::vector<double> xs = {0, 1, 2}; */
+ /* std::vector<double> ys = {1, 2.9, 5.2}; */
+ /* std::vector<double> ss = {0.1, 0.2, 0.3}; */
+ polynomial_regression(2, xs, ys, std::make_optional(ss));
+
+ matrix<double> T1 (3, 3, {1, 2, 3, 0, 1, 2, 0, 0, 1});
+ matrix<double> T2 (3, 3, {4, 5, 6, 0, 4, 5, 0, 0, 6});
+ std::cout << T1 << '\n' << T2 << '\n' << T1 * T1 << std::endl;
+
+}
diff --git a/libprakpp/tests/tests.cpp b/libprakpp/tests/tests.cpp
new file mode 100644
index 0000000..3dda25a
--- /dev/null
+++ b/libprakpp/tests/tests.cpp
@@ -0,0 +1,66 @@
+
+#include <iostream>
+#include <vector>
+
+#include "praktable.hpp"
+#include "prakmath.hpp"
+
+double avg(const std::vector<double> &v) {
+ return (v[0] + v[1]) / 2 ;
+}
+
+int main_1(int argc, char *argv[]) {
+ prak::table<double> t;
+ std::ifstream f("test_data");
+ t.read(f);
+ t.column_width = 16;
+ std::cout << t;
+ t.apply(&avg, {"steel_n_up", "steel_n_down"}, "steel_n");
+ t.apply(&avg, {"copper_n_up", "copper_n_down"}, "copper_n");
+ std::cout << t;
+ std::cout << "a[\"copper_n\"][5] = " << t SUBSCR_OPN "copper_n", 0 SUBSCR_CLS << std::endl;
+ for (auto it = t.begin("steel_n"); it != t.end("steel_n"); ++it) {
+ std::cout << *it << ' ';
+ }
+ auto [a, b] = t.least_squares_linear("index", "steel_n");
+ std::printf("\na = %lf %lf; b = %lf %lf\n", a.val, a.err, b.val, b.err);
+
+ return 0;
+}
+
+int main_2(int argc, char *argv[]) {
+ main_1(argc, argv);
+ return 0;
+
+ prak::vector<double> x = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ prak::vector<double> y = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ prak::vector<double> s = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ struct prak::pvalue<double> val;
+ prak::least_squares_linear(x, y, s, val, val);
+ prak::printv(x);
+ prak::vmul(x.data(), x.data(), x.data(), (size_t)x.size());
+ prak::printv(x);
+ return 0;
+}
+
+int main_3(int argc, char *argv[]) {
+ volatile __m256 i = {10, 1, 10, 1, 10, 10, 11, 11};
+ volatile __m256d j = {100, 200, -100, 400};
+ printf("sum(i) = %f\n", prak::finalize(i));
+ printf("sum(j) = %lf\n", prak::finalize(j));
+ return 0;
+}
+
+int main_4(int argc, char *argv[]) {
+ prak::vector<double> xs = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+ prak::vector<double> ys = {0, 2, 2, 8, 8, 10, 13, 15, 16, 18, 20};
+ prak::vector<double> ss = {1, 1, 4, 4, 1, 1, 2, 2, 1, 1, 1};
+ prak::pvalue<double> a, b;
+ prak::least_squares_linear(xs, ys, ss, a, b);
+ std::printf("a: {%lf, %lf}; b: {%lf, %lf}\n", a.val, a.err, b.val, b.err);
+ return 0;
+}
+
+int main(int argc, char *argv[]) {
+ main_1(argc, argv);
+}