From 3a53b6ebf77684619beb2f4c5da3f7283f5b0406 Mon Sep 17 00:00:00 2001 From: Bausager Date: Thu, 18 Sep 2025 20:18:27 +0200 Subject: [PATCH] interpolation1d done single-threded 1d interpolations; linear, rational, cubic spline, polynomial and barycentric. Still not done test functions yet. Still missing multi-core options. --- bin/abc_lab | Bin 0 -> 32760 bytes bin/tests | Bin 210040 -> 0 bytes include/modules/field1d.h | 40 +++++ include/modules/finitedifference1d.h | 58 +++++++ include/modules/grid1d.h | 43 +++++ include/numerics/abs.h | 23 +++ include/numerics/interpolation1d/.gitkeep | 0 .../interpolation1d_barycentric.h | 88 ++++++++++ .../interpolation1d_cubic_spline.h | 86 ++++++++++ .../interpolation1d/interpolation1d_linear.h | 29 ++++ .../interpolation1d_polynomial.h | 75 +++++++++ .../interpolation1d_rational.h | 79 +++++++++ include/numerics/interpolation1d_base.h | 153 ++++++++++++++++++ include/numerics/max.h | 23 +++ include/numerics/min.h | 21 +++ include/numerics/numerics.h | 12 +- makefile | 44 +++-- obj/main.d | 41 +++++ obj/main.o | Bin 0 -> 38072 bytes obj/test/test_all.o | Bin 8208 -> 0 bytes obj/test/test_inverse.o | Bin 74264 -> 0 bytes obj/test/test_lu.o | Bin 74880 -> 0 bytes obj/test/test_matmul.o | Bin 54200 -> 0 bytes obj/test/test_matrix.o | Bin 50808 -> 0 bytes obj/test/test_matvec.o | Bin 84304 -> 0 bytes obj/test/test_transpose.o | Bin 34240 -> 0 bytes obj/test/test_vector.o | Bin 89896 -> 0 bytes src/main.cpp | 67 +++++++- test/test_interpolation.cpp | 115 +++++++++++++ 29 files changed, 982 insertions(+), 15 deletions(-) create mode 100755 bin/abc_lab delete mode 100755 bin/tests create mode 100644 include/modules/field1d.h create mode 100644 include/modules/finitedifference1d.h create mode 100644 include/modules/grid1d.h create mode 100644 include/numerics/abs.h create mode 100644 include/numerics/interpolation1d/.gitkeep create mode 100644 include/numerics/interpolation1d/interpolation1d_barycentric.h create mode 100644 include/numerics/interpolation1d/interpolation1d_cubic_spline.h create mode 100644 include/numerics/interpolation1d/interpolation1d_linear.h create mode 100644 include/numerics/interpolation1d/interpolation1d_polynomial.h create mode 100644 include/numerics/interpolation1d/interpolation1d_rational.h create mode 100644 include/numerics/interpolation1d_base.h create mode 100644 include/numerics/max.h create mode 100644 include/numerics/min.h create mode 100644 obj/main.d create mode 100644 obj/main.o delete mode 100644 obj/test/test_all.o delete mode 100644 obj/test/test_inverse.o delete mode 100644 obj/test/test_lu.o delete mode 100644 obj/test/test_matmul.o delete mode 100644 obj/test/test_matrix.o delete mode 100644 obj/test/test_matvec.o delete mode 100644 obj/test/test_transpose.o delete mode 100644 obj/test/test_vector.o create mode 100644 test/test_interpolation.cpp diff --git a/bin/abc_lab b/bin/abc_lab new file mode 100755 index 0000000000000000000000000000000000000000..1e68cd03e0c6d0493098edc0c856b4d0858ede66 GIT binary patch literal 32760 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 literal 0 HcmV?d00001 diff --git a/bin/tests b/bin/tests deleted file mode 100755 index 4fd15cdf99f54c76b61dab4be5af03ce6c45ac23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210040 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 + + struct Field1D{ + + const Grid1D* grid = nullptr; // not owning + utils::Vector u; // size = grid->N + + Field1D() = default; + + explicit Field1D(const Grid1D& g, double init = 0.0) : grid(&g), u(g.N){ + + } + + void generate_vertices(){ + vertices.resize(N_vertices); + vertices[0] = centers[0] - ((centers[1] - centers[0])*0.5); + vertices[N_vertices-1] = centers[N_centers-1] + ((centers[N_centers-1] - centers[N_centers-2])*0.5); + for (uint64_t i = 1; i < N_centers; ++i){ + vertices[i] = (centers[i-1] + centers[i])*0.5; + } + } + + T dx(uint64_t i) const { check(i); return vertices(i+1) - vertices(i); } + T center(uint64_t i) const { check(i); return centers(i); } +private: + void check(uint64_t i) const { + if (i >= N_centers) throw std::runtime_error("Grid1D: cell index out of range"); + } + }; + + +} \ No newline at end of file diff --git a/include/modules/finitedifference1d.h b/include/modules/finitedifference1d.h new file mode 100644 index 0000000..21d9dcc --- /dev/null +++ b/include/modules/finitedifference1d.h @@ -0,0 +1,58 @@ +#pragma once + +#include "modules/grid1d.h" + + +namespace fd1d { + + // ----------------------------------------------------------------------------- + // Second derivative (u_xx) at interior cell i, central difference + // Works on NON-uniform grids + // On uniform: (u[i-1] - 2 u[i] + u[i+1]) / dx^2 + // ----------------------------------------------------------------------------- + template + void inplace_Build_CentralDerivative_Matrix(const fvm::Grid1D& g, utils::Matrix& A, utils::Vector& b, const utils::Vector& s, const T& c){ + + for (uint64_t i = 1; i < g.center_idx; ++i){ + + A(i,i-1) = -(c/(g.centers[i] - g.centers[i-1])); + A(i,i) = -((c/(g.centers[i+1] - g.centers[i])) + (c/(g.centers[i] - g.centers[i-1]))); + A(i,i+1) = -(c/(g.centers[i+1] - g.centers[i])); + b[i] = -s[i]*(g.vertices[i+1] - g.vertices[i]); + } + } + template + utils::Matrix Build_CentralDerivative_Matrix(const fvm::Grid1D& g, utils::Vector& b, const utils::Vector& s, const T& c){ + utils::Matrix A(g.center_idx+1, g.center_idx+1, T{0}); + inplace_Build_CentralDerivative_Matrix(g, A, b, s, c); + return A; + } + + + template + void inplace_BC_Dirichlet(const fvm::Grid1D& g, utils::Matrix& A, utils::Vector& b, const utils::Vector& s, const T& c){ + + A(0,0) = -((c/(g.centers[1] - g.centers[0])) + (c/(g.centers[0] - g.vertices[0]))); + A(0,1) = c/(g.centers[1] - g.centers[0]); + + A(g.center_idx, g.center_idx-1) = c/(g.centers[g.center_idx]-g.centers[g.center_idx-1]); + A(g.center_idx, g.center_idx) = -((c/(g.vertices[g.vertices_idx] - g.centers[g.center_idx])) + (c/(g.centers[g.center_idx] - g.centers[g.center_idx-1]))); + } + + + template + void inplace_BC_Neumann(const fvm::Grid1D& g, utils::Matrix& A, const T& c){ + + A(0,0) = -c/(g.centers[1]-g.centers[0]); + A(0,1) = c/(g.centers[1]-g.centers[0]); + + A(g.center_idx, g.center_idx-1) = c/(g.centers[g.center_idx]-g.centers[g.center_idx-1]); + A(g.center_idx, g.center_idx) = -c/(g.centers[g.center_idx]-g.centers[g.center_idx-1]); + } + + + + + + +} \ No newline at end of file diff --git a/include/modules/grid1d.h b/include/modules/grid1d.h new file mode 100644 index 0000000..8fc35fc --- /dev/null +++ b/include/modules/grid1d.h @@ -0,0 +1,43 @@ +#pragma once + +#include "utils/vector.h" + + +namespace fvm { + + template + + struct Grid1D{ + uint64_t center_idx; // max cell index + uint64_t vertices_idx; // max vertice index + utils::Vector centers; // size N (unknowns at cell centers) + utils::Vector vertices; // size N+1 (face positions) + + Grid1D() = default; + + explicit Grid1D(const utils::Vector& midpoints){ + centers = midpoints; + center_idx = centers.size()-1; + vertices_idx = centers.size(); + } + + void generate_vertices(T left, T right){ + vertices.resize(vertices_idx+1); + vertices[0] = left; + vertices[vertices_idx] = right; + for (uint64_t i = 1; i < center_idx+1; ++i){ + vertices[i] = (centers[i-1] + centers[i])*0.5; + } + + } + + T dx(uint64_t i) const { check(i); return vertices[i+1] - vertices[i]; } + T center(uint64_t i) const { check(i); return centers[i]; } + + void check(uint64_t i) const { + if (i > center_idx) throw std::runtime_error("Grid1D: cell index out of range"); + } + }; + + +} \ No newline at end of file diff --git a/include/numerics/abs.h b/include/numerics/abs.h new file mode 100644 index 0000000..f2af0a8 --- /dev/null +++ b/include/numerics/abs.h @@ -0,0 +1,23 @@ +#pragma once + + +#include "./utils/vector.h" +#include "./utils/matrix.h" + + +namespace numerics{ + + template + T abs(const T a){ + + if(a < 0){ + return -a; + }else{ + return a; + } + } + + + +} // namespace numerics + diff --git a/include/numerics/interpolation1d/.gitkeep b/include/numerics/interpolation1d/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/include/numerics/interpolation1d/interpolation1d_barycentric.h b/include/numerics/interpolation1d/interpolation1d_barycentric.h new file mode 100644 index 0000000..61d3e19 --- /dev/null +++ b/include/numerics/interpolation1d/interpolation1d_barycentric.h @@ -0,0 +1,88 @@ +#pragma once + +#include "./numerics/interpolation1d_base.h" + +#include "./utils/vector.h" +#include "./numerics/min.h" +#include "./numerics/max.h" + + +namespace numerics{ + + template + struct interp_barycentric : Base_interp { + using Base = Base_interp; + + // bring base data members into scope (or use this->xx / this->yy below) + using Base::xx; + using Base::yy; + using Base::n; + + utils::Vector w; + int64_t d; + + interp_barycentric(const utils::Vector &xv, const utils::Vector &yv, uint64_t dd) + : Base_interp(xv, &yv[0], xv.size()), w(n,T{0}), d(dd) { + // Constructor arguments are x and y vectors of length n, and order d of desired approximation. + if (n <= d){ + throw std::invalid_argument("d too large for number of points in interp_barycentric"); + } + for (int64_t k = 0; k < n; ++k){ + int64_t imin = numerics::max(k-d, static_cast(0)); + int64_t imax; + if (k >= n - d) { + imax = n - d - 1; + } else { + imax = k; + } + T temp; + if ( (imin & 1) != 0 ) { // odd? + temp = T{-1}; + } else { // even + temp = T{1}; + } + T sum = T{0}; + + for (int64_t i = imin; i <= imax; ++i){ + int64_t jmax = numerics::min(i+d, n-1); + T term = T{1}; + for (int64_t j = i; j <= jmax; ++j){ + if (j == k){ + continue; + } + term *= (xx[k] - xx[j]); + } + term = temp/term; + temp = -temp; + sum += term; + } + w[k] = sum; + } + } + + T rawinterp(int64_t jl, T x) override{ + + T num{T{0}}, den{T{0}}; + + for (int64_t i = 0; i < n; ++i){ + T h = x - xx[i]; + if (h == T{0}){ + return yy[i]; + }else{ + T temp = w[i]/h; + num += temp*yy[i]; + den += temp; + } + } + return num/den; + } + + + T interp(T x) { + return rawinterp(1, x); + } + + }; + +} // namespace numerics + diff --git a/include/numerics/interpolation1d/interpolation1d_cubic_spline.h b/include/numerics/interpolation1d/interpolation1d_cubic_spline.h new file mode 100644 index 0000000..a1e1c91 --- /dev/null +++ b/include/numerics/interpolation1d/interpolation1d_cubic_spline.h @@ -0,0 +1,86 @@ +#pragma once + +#include "./numerics/interpolation1d_base.h" + +//#include "./numerics/abs.h" +#include "./utils/vector.h" + + +namespace numerics{ + + template + struct interp_cubic_spline : Base_interp { + using Base = Base_interp; + // bring base data members into scope (or use this->xx / this->yy below) + using Base::xx; + using Base::yy; + //using Base::mm; + + utils::Vector y2; + + + interp_cubic_spline(utils::Vector &xv, utils::Vector &yv, T yp1=T{1.e99}, T ypn=T{1.e99}) + : Base_interp(xv, &yv[0], 2), y2(xv.size(),T{0}) { + sety2(&xv[0], &yv[0], yp1, ypn); + } + + interp_cubic_spline(utils::Vector &xv, const T *yv, T yp1=T{1.e99}, T ypn=T{1.e99}) + : Base_interp(xv, yv, 2), y2(xv.size(),T{0}) { + sety2(&xv[0], yv, yp1, ypn); + } + + + void sety2(const T *xv, const T *yv, T yp1, T ypn){ + + T p, qn, sig, un; + uint64_t n = y2.size(); + utils::Vector u(n-1, T{0}); + + if (yp1 > static_cast(0.99e99)){ // The lower boundary condition is set either to be “natural” + y2[0] = u[0] = T{0}; + }else{ // or else to have a specified first derivative. + y2[0] = T{-0.5}; + u[0] = (3.0/(xv[1]-xv[0]))*(((yv[1]-yv[0])/(xv[1]-xv[0]))-yp1); + } + for (uint64_t i = 1; i < n-1; ++i){ // This is the decomposition loop of the tridiagonal algorithm + sig = (xv[i]-xv[i-1])/(xv[i+1]-xv[i-1]); + p = sig*y2[i-1]+T{2}; + y2[i] = (sig - T{1})/p; // y2 and u are used for temporary storage of the decomposed factors. + u[i]=((yv[i+1]-yv[i])/(xv[i+1]-xv[i])) - ((yv[i]-yv[i-1])/(xv[i]-xv[i-1])); + u[i]=((T{6}*u[i]/(xv[i+1]-xv[i-1])) - sig*u[i-1])/p; + } + if (ypn > static_cast(0.99e99)){ // The upper boundary condition is set either to be “natural” + qn = un = T{0}; + }else{ // or else to have a specified first derivative. + qn = T{0.5}; + un = (T{3}/(xv[n-1]-xv[n-2]))*(ypn-((yv[n-1]-yv[n-2])/(xv[n-1]-xv[n-2]))); + } + y2[n-1] = (un-(qn*u[n-2]))/((qn*y2[n-2])+T{1}); + for (int64_t k = n-2; k >= 0; --k){ + y2[k] = y2[k] * y2[k+1]+u[k]; + } + } + + + T rawinterp(int64_t jl, T x) override{ + + int64_t klo=jl, khi=jl+1; + T y, h, b, a; + + h = xx[khi] - xx[klo]; + if (h == T{0}){ // The xa’s must be distinct. + throw std::invalid_argument("interp_cubic_spline: Bad input to routine splint"); + } + + a = (xx[khi] - x)/h; // Cubic spline polynomial is now evaluated. + b = (x - xx[klo])/h; + y = a*yy[klo] + b*yy[khi] + ( ((a*a*a) - a)*y2[klo] + ((b*b*b) - b)*y2[khi] ) * (h*h) / T{6}; + + + return y; + } + + }; + +} // namespace numerics + diff --git a/include/numerics/interpolation1d/interpolation1d_linear.h b/include/numerics/interpolation1d/interpolation1d_linear.h new file mode 100644 index 0000000..11c7497 --- /dev/null +++ b/include/numerics/interpolation1d/interpolation1d_linear.h @@ -0,0 +1,29 @@ +#pragma once + +#include "./numerics/interpolation1d_base.h" + + +namespace numerics{ + + template + struct interp_linear : Base_interp { + using Base = Base_interp; + // bring base data members into scope (or use this->xx / this->yy below) + using Base::xx; + using Base::yy; + + + interp_linear(const utils::Vector &xv, const utils::Vector &yv): Base_interp(xv, &yv[0], 2){} + + T rawinterp(int64_t j, T x) override{ + if (xx[j]==xx[j+1]){ + return yy[j]; // Table is defective, but we can recover. + }else { + return (yy[j] + ((x-xx[j])/(xx[j+1]-xx[j]))*(yy[j+1]-yy[j])); + } + } + + }; + +} // namespace numerics + diff --git a/include/numerics/interpolation1d/interpolation1d_polynomial.h b/include/numerics/interpolation1d/interpolation1d_polynomial.h new file mode 100644 index 0000000..d65beab --- /dev/null +++ b/include/numerics/interpolation1d/interpolation1d_polynomial.h @@ -0,0 +1,75 @@ +#pragma once + +#include "./numerics/interpolation1d_base.h" + +#include "./numerics/abs.h" +#include "./utils/vector.h" + + +namespace numerics{ + + template + struct interp_polynomial : Base_interp { + using Base = Base_interp; + // bring base data members into scope (or use this->xx / this->yy below) + using Base::xx; + using Base::yy; + using Base::mm; + + T dy; + + + interp_polynomial(const utils::Vector &xv, const utils::Vector &yv, uint64_t m) + : Base_interp(xv, &yv[0], m), dy(T{0}){} + + T rawinterp(int64_t jl, T x) override{ + + int64_t ns=0; + T y, den, dif, dift, ho, hp, w; + const T *xa = &xx[jl], *ya = &yy[jl]; + utils::Vector c(mm,0), d(mm,0); + dif = numerics::abs(x-xa[0]); + + for (int64_t i = 0; i < mm; ++i){ // Here we find the index ns of the closest table entry, + dift = numerics::abs(x-xa[i]); + if (dift < dif){ + ns = i; + dif=dift; + } + c[i]=ya[i]; // and initialize the tableau of c’s and d’s. + d[i]=ya[i]; + } + y = ya[ns]; // This is the initial approximation to y. + ns -= 1; + + for (int64_t m = 1; m < mm; ++m){ // For each column of the tableau, + for (int64_t i = 0; i < mm-m; ++i){ // we loop over the current c’s and d’s and update them. + ho = xa[i]-x; + hp = xa[i+m]-x; + w = c[i+1]-d[i]; + den = ho-hp; + if (den == T{0.0}){ + throw std::invalid_argument("interp_polynomial error"); // This error can occur only if two input xa’s are (to within roundoff identical. + } + den = w/den; // Here the c’s and d’s are updated. + d[i] = hp*den; + c[i] = ho*den; + } + bool take_left = 2 * (ns + 1) < (mm - m); + + if (take_left) { + dy = c[ns + 1]; + y += dy; + } else { + dy = d[ns]; + y += dy; + ns -= 1; + } + } + return y; + } + + }; + +} // namespace numerics + diff --git a/include/numerics/interpolation1d/interpolation1d_rational.h b/include/numerics/interpolation1d/interpolation1d_rational.h new file mode 100644 index 0000000..2f548be --- /dev/null +++ b/include/numerics/interpolation1d/interpolation1d_rational.h @@ -0,0 +1,79 @@ +#pragma once + +#include "./numerics/interpolation1d_base.h" + +#include "./utils/vector.h" +#include "./numerics/abs.h" + +namespace numerics{ + + template + struct interp_rational : Base_interp { + using Base = Base_interp; + + // bring base data members into scope (or use this->xx / this->yy below) + using Base::xx; + using Base::yy; + using Base::mm; + + T dy; + + + + interp_rational(const utils::Vector &xv, const utils::Vector &yv, uint64_t m) + : Base_interp(xv, &yv[0], m), dy(T{0}){} + + T rawinterp(int64_t jl, T x) override{ + + const T TINY = T{1.0e-99}; + int64_t ns=0; + T y, w, t, hh, h, dd; + const T *xa = &xx[jl], *ya = &yy[jl]; + utils::Vector c(mm, T{0}), d(mm, T{0}); + + hh = numerics::abs(x - xa[0]); + + for (int64_t i = 0; i < mm; ++i){ + h = numerics::abs(x-xa[i]); + if (h == T{0}){ + dy = T{0}; + return ya[i]; + }else if (h < hh){ + ns = i; + hh = h; + } + c[i] = ya[i]; + d[i] = ya[i] + TINY; // The TINY part is needed to prevent a rare zero-over-zero condition. + } + y = ya[ns]; + ns -= 1; + for (int64_t m = 1; m < mm; ++m){ + for (int64_t i = 0; i < mm-m; ++i){ + w = c[i+1] - d[i]; + h = xa[i+m] - x; // h will never be zero, since this was tested in the initializing loop. + t = (xa[i] - x)*d[i]/h; + dd = t - c[i+1]; + if (dd == T{0}){ // This error condition indicates that the interpolating function has a pole at the requested value of x. + throw std::invalid_argument("Error in routine interp_rational"); // + } + dd = w/dd; + d[i] = c[i+1]*dd; + c[i] = t*dd; + } + const bool take_left = (2 * (ns + 1) < (mm - m)); + + if (take_left) { + dy = c[ns + 1]; + } else { + dy = d[ns]; + ns -= 1; + } + y += dy; + } + return y; + } + + }; + +} // namespace numerics + diff --git a/include/numerics/interpolation1d_base.h b/include/numerics/interpolation1d_base.h new file mode 100644 index 0000000..f50831d --- /dev/null +++ b/include/numerics/interpolation1d_base.h @@ -0,0 +1,153 @@ +#pragma once + +#include "./numerics/min.h" +#include "./numerics/max.h" +#include "./numerics/abs.h" + +#include "./utils/vector.h" + + +namespace numerics{ + + template + struct Base_interp{ + + int64_t n, mm; + int64_t jsav, dj; + bool cor; + const T *xx, *yy; + + + Base_interp(const utils::Vector& x, const T *y, uint64_t m) + :n(x.size()), mm(m), jsav(0), cor(false), xx(&x[0]), yy(y){ + //dj = numerics::min(static_cast(1), static_cast(std::pow(static_cast(n), 0.25))); // from NR + dj = numerics::max(static_cast(1), static_cast(std::pow(static_cast(n), 0.25))); // from chatbot + + if (mm < 2 || n < mm) throw std::invalid_argument("Base_interp: invalid mm or n"); + if (!xx || !yy) throw std::invalid_argument("Base_interp: null data pointers"); + if (n < 2) throw std::invalid_argument("Base_interp: need at least 2 points"); + + bool asc = false; + if (xx[0] < xx[1]){ + asc = true; + } + for (int64_t i = 1; i < n; ++i){ + if (!(xx[i] > xx[i-1]) && asc) { + throw std::invalid_argument("x must be strictly increasing"); + } else if (!(xx[i] < xx[i-1]) && !asc){ + throw std::invalid_argument("x must be strictly decreasing"); + } + } + } + + T interp(T x){ + int64_t jlo; + if (cor){ + std::cout << "Uses hunt()" << std::endl; + jlo = hunt(x); + } + else{ + std::cout << "Uses locate()" << std::endl; + jlo = locate(x); + } + return rawinterp(jlo,x); + } + + // Derived classes provide this as the actual interpolation method. + T virtual rawinterp(int64_t jlo, T x) = 0; + + + int64_t locate(const T x){ + int64_t ju, jl; + int64_t jm; + + if (n < 2 || mm < 2 || mm > n){ + throw std::runtime_error("Interpolate: locate size error"); + } + + bool ascnd = (xx[n-1] >= xx[0]); // True if ascending order of table, false otherwise. + jl = 0; // Initialize lower + ju = n-1; // and upper limits. + while (ju - jl > 1) { // If we are not yet done, + jm = (ju+jl) >> 1; // compute a midpoint, + if ((x >= xx[jm]) == ascnd){ + jl=jm; // and replace either the lower limit + }else{ + ju=jm; // or the upper limit, as appropriate. + } + } // Repeat until the test condition is satisfied. + + if (std::abs(jl - jsav) > dj){ // Decide whether to use hunt or locate next time. + cor = false; + }else{ + cor = true; + } + jsav = jl; + return numerics::max(static_cast(0), numerics::min(n-mm, jl-((mm-2)>>1))); + } + + int64_t hunt(const T x){ + int64_t jl=jsav, jm, ju, inc=1; + + if (n < 2 || mm < 2 || mm > n){ + throw std::runtime_error("Interpolate: hunt size error"); + } + bool ascnd=(xx[n-1] >= xx[0]); // True if ascending order of table, false otherwise. + if (jl < 0 || jl > n-1) { // Input guess not useful. Go immediately to bisection. + jl=0; + ju=n-1; + }else{ + if ((x >= xx[jl]) == ascnd){ // Hunt up: + for (;;){ + ju = jl + inc; + if (ju >= n-1){ + ju = n-1; + break; // Off end of table. + }else if((x < xx[ju]) == ascnd){ + break; // Found bracket. + }else{ // Not done, so double the increment and try again. + jl = ju; + inc += inc; + } + } + }else{ // Hunt down: + ju = jl; + for (;;){ + jl = jl - inc; + if (jl <= 0){ //Off end of table. + jl = 0; + break; + }else if((x >= xx[jl]) == ascnd){ + break; // Found bracket. + } + else{ // Not done, so double the increment and try again. + ju = jl; + inc += inc; + } + } + } + } + + + while(ju-jl > 1){ // Hunt is done, so begin the final bisection phase: + jm = (ju+jl) >> 1; + if ((x >= xx[jm]) == ascnd){ + jl =jm; + }else{ + ju=jm; + } + } + if (numerics::abs(jl-jsav) > dj){ + cor = false; + }else{ + cor = true; + } + jsav = jl; + return numerics::max(static_cast(0), numerics::min(n-mm, jl-((mm-2)>>1))); + + } + + }; + +} // namespace numerics + diff --git a/include/numerics/max.h b/include/numerics/max.h new file mode 100644 index 0000000..ca3797b --- /dev/null +++ b/include/numerics/max.h @@ -0,0 +1,23 @@ +#pragma once + + +#include "./utils/vector.h" +#include "./utils/matrix.h" + + +namespace numerics{ + + template + T max(const T a, const T b){ + + if(a < b){ + return b; + }else{ + return a; + } + } + + + +} // namespace numerics + diff --git a/include/numerics/min.h b/include/numerics/min.h new file mode 100644 index 0000000..f6b436a --- /dev/null +++ b/include/numerics/min.h @@ -0,0 +1,21 @@ +#pragma once + + +#include "./utils/vector.h" +#include "./utils/matrix.h" + + +namespace numerics{ + + template + T min(const T a, const T b){ + + if(a < b){ + return a; + }else{ + return b; + } + } + +} // namespace numerics + diff --git a/include/numerics/numerics.h b/include/numerics/numerics.h index 34c22af..5669c0d 100644 --- a/include/numerics/numerics.h +++ b/include/numerics/numerics.h @@ -4,4 +4,14 @@ #include "./numerics/transpose.h" #include "./numerics/inverse.h" #include "./numerics/matmul.h" -#include "./numerics/matvec.h" \ No newline at end of file +#include "./numerics/matvec.h" +#include "./numerics/min.h" +#include "./numerics/max.h" +#include "./numerics/abs.h" +#include "./numerics/interpolation1d_base.h" // base +#include "./numerics/interpolation1d/interpolation1d_linear.h" // derived +#include "./numerics/interpolation1d/interpolation1d_polynomial.h" // derived +#include "./numerics/interpolation1d/interpolation1d_cubic_spline.h" // derived +#include "./numerics/interpolation1d/interpolation1d_rational.h" // derived +#include "./numerics/interpolation1d/interpolation1d_barycentric.h" // derived + diff --git a/makefile b/makefile index 314f2fd..be0edc3 100644 --- a/makefile +++ b/makefile @@ -3,6 +3,11 @@ CC := g++ CXXFLAGS := -std=c++14 -Wall -Iinclude -O3 -march=native -fopenmp LDFLAGS := -fopenmp +# Compiles .h files when there's been a change +DEPFLAGS := -MMD -MP + +CXX ?= g++ + # Directories @@ -12,7 +17,6 @@ OBJ_DIR := obj BIN_DIR := bin TEST_BIN := $(BIN_DIR)/tests -# All test sources @@ -31,6 +35,11 @@ OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS)) # === Test sources === TEST_SRCS := $(shell find test -name 'test_*.cpp') TEST_OBJS := $(patsubst test/%.cpp, $(OBJ_DIR)/test/%.o, $(TEST_SRCS)) + +# Compiles .h files when there's been a change +DEPS := $(OBJS:.o=.d) $(TEST_OBJS:.o=.d) $(TEST_MAIN:.o=.d) +-include $(DEPS) + # The single file that defines TEST_MAIN / main() TEST_MAIN := $(OBJ_DIR)/test/test_all.o @@ -53,6 +62,12 @@ export OMP_DYNAMIC export OMP_SCHEDULE export OMP_DISPLAY_ENV +# What belongs to "run" vs "test" +RUN_DEPS := $(OBJS:.o=.d) +TEST_DEPS := $(TEST_OBJS:.o=.d) $(TEST_MAIN:.o=.d) + +RUN_ARTIFACTS := $(TARGET) $(OBJS) $(RUN_DEPS) +TEST_ARTIFACTS := $(TEST_BIN) $(TEST_OBJS) $(TEST_MAIN) $(TEST_DEPS) # === Default Target === @@ -66,11 +81,11 @@ $(TARGET): $(OBJS) # === Compiling source files to object files === $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp @mkdir -p $(dir $@) - $(CXX) $(CXXFLAGS) -c $< -o $@ + $(CXX) $(CXXFLAGS) $(DEPFLAGS) -c $< -o $@ # === Run with OpenMP env set only for the run === .PHONY: run -run: $(TARGET) +run: clean-test $(TARGET) @echo ">>> OMP_PROC_BIND=$(OMP_PROC_BIND)" @echo ">>> OMP_PLACES=$(OMP_PLACES)" @echo ">>> OMP_MAX_ACTIVE_LEVELS=$(OMP_MAX_LEVELS)" @@ -96,11 +111,6 @@ run-single: ## Single-level parallel (good default) run-nested: ## Two-level nested (outer,inner), adjust to your cores $(MAKE) run OMP_MAX_LEVELS=2 OMP_THREADS="4,8" OMP_PROC_BIND=close OMP_PLACES=cores -# Clean up -.PHONY: clean -clean: - rm -rf $(OBJ_DIR) $(BIN_DIR) - # Optional: print debug info .PHONY: info info: @@ -111,7 +121,7 @@ info: .PHONY: test -test: $(TEST_BIN) +test: clean-run $(TEST_BIN) @echo ">>> OMP_PROC_BIND=$(OMP_PROC_BIND)" @echo ">>> OMP_PLACES=$(OMP_PLACES)" @echo ">>> OMP_MAX_ACTIVE_LEVELS=$(OMP_MAX_LEVELS)" @@ -134,4 +144,18 @@ $(TEST_BIN): $(TEST_OBJS) $(TEST_MAIN) $(OBJ_DIR)/test/%.o: test/%.cpp @mkdir -p $(dir $@) - $(CXX) $(CXXFLAGS) -c $< -o $@ \ No newline at end of file + $(CXX) $(CXXFLAGS) $(DEPFLAGS) -c $< -o $@ + +# Clean up +.PHONY: clean +clean: + rm -rf $(OBJ_DIR) $(BIN_DIR) + +.PHONY: clean-run clean-test +clean-run: + @echo "Cleaning run artifacts..." + @rm -f $(RUN_ARTIFACTS) + +clean-test: + @echo "Cleaning test artifacts..." + @rm -f $(TEST_ARTIFACTS) \ No newline at end of file diff --git a/obj/main.d b/obj/main.d new file mode 100644 index 0000000..41fdff6 --- /dev/null +++ b/obj/main.d @@ -0,0 +1,41 @@ +obj/main.o: src/main.cpp include/./utils/utils.h include/./utils/vector.h \ + include/./utils/matrix.h include/./numerics/numerics.h \ + include/./numerics/transpose.h include/./numerics/inverse.h \ + include/./numerics/inverse/inverse_gauss_jordan.h \ + include/./numerics/inverse/inverse_lu.h include/./decomp/lu.h \ + include/./numerics/matmul.h include/./core/omp_config.h \ + include/./numerics/matvec.h include/./numerics/min.h \ + include/./numerics/max.h include/./numerics/abs.h \ + include/./numerics/interpolation1d_base.h \ + include/./numerics/interpolation1d/interpolation1d_linear.h \ + include/./numerics/interpolation1d/interpolation1d_polynomial.h \ + include/./numerics/interpolation1d/interpolation1d_cubic_spline.h \ + include/./numerics/interpolation1d/interpolation1d_rational.h \ + include/./numerics/interpolation1d/interpolation1d_barycentric.h \ + include/./decomp/decomp.h include/./modules/grid1d.h \ + include/utils/vector.h include/./modules/finitedifference1d.h +include/./utils/utils.h: +include/./utils/vector.h: +include/./utils/matrix.h: +include/./numerics/numerics.h: +include/./numerics/transpose.h: +include/./numerics/inverse.h: +include/./numerics/inverse/inverse_gauss_jordan.h: +include/./numerics/inverse/inverse_lu.h: +include/./decomp/lu.h: +include/./numerics/matmul.h: +include/./core/omp_config.h: +include/./numerics/matvec.h: +include/./numerics/min.h: +include/./numerics/max.h: +include/./numerics/abs.h: +include/./numerics/interpolation1d_base.h: +include/./numerics/interpolation1d/interpolation1d_linear.h: +include/./numerics/interpolation1d/interpolation1d_polynomial.h: +include/./numerics/interpolation1d/interpolation1d_cubic_spline.h: +include/./numerics/interpolation1d/interpolation1d_rational.h: +include/./numerics/interpolation1d/interpolation1d_barycentric.h: +include/./decomp/decomp.h: +include/./modules/grid1d.h: +include/utils/vector.h: +include/./modules/finitedifference1d.h: diff --git a/obj/main.o b/obj/main.o new file mode 100644 index 0000000000000000000000000000000000000000..62801704bc37ec13efe2bbbf3ccfa66f391689e7 GIT binary patch literal 38072 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

1r*=QH3Xvq<9Or5w}#dWVck4H)n5;($jveK7E^a zef3BmH+)bZH*5*}wO*tBTG9`>>K9YNz#LYA1J!`X=nQYC5m_XURIQ_QH|lfIpJP+XwBGssyDC1-`lBpxXR%gw!~g@%4=I1m#{M%$a$ zANq5lSi39~HH+genz26;+URsn=i>LTwNB9MTfTWa$BEZ=HXbxg~9c=k*Wt-8%gD$3*t}yI1`!clM2yZW!V?&3vuP! zR`*fZO%g@x!vW!gEyJLUI<{wTq4kCoY=Cf&>jC2!M_VCMu>Z0N`q^K%n^{O7a($?} zRu#aEMjNcZQE;@{Xh;Tk02@c^P6})}(RDi zx#2Li&mxMY>mE|oN#WlKYO6uMK%_-4lR+7dUD;b?`_Z}l)HJ*5yM0Zf z^SyAD>-BbYntS)aP4ATThGVOd6R!K9^`BU(gD6*Fxkp$4uDgp-@h2DrKTGzd3aW}o z%=O_j1ZWv`_+{LP3GYaoq;|IAt-MXLm9mck>!}8dXKMPoySl)uoy)MSB$c9=ve|5^ zV=*Jjx+l~OJw;`&T`@i)t=6X~5iG5>R;kn;=(6Yy1)`px1nr~9M$rj#$&tJe_f+EE z`fI>Sd=ji5ZVdAasSyY&uEMiAW!L&B=Izfpl;r&F8QOEn&IiuW8d99A2WWrq@4S70 z_RZ`JC1K@$H@M>&CzqaP;C)LZzk|6;udCp6W!iXXzry&J|lA{Ixnu3A+STg z8Ww^@6;zy&x|!nj<$Njk3$H^yDYyz9ANq2d4cDZdzNQbcDs0(0HaKBlKlNJiQQ z@2XECj<9(Qe>SCIt*mL6wM~d#5oq{`#K9_OL%N`%4XKAJU&4m^Gj+2N+mBN=(k|9U zdgB0l(gMx>*dEoG_Card-nXfMQiZE4OvCUfl=3D%=7V~O4bq|67%04D6`BdRfG35J zClNdNEBk!9?-?uO?U?@FX}BiFWSfRYXhRN`%7bhm1XDnMX}*;aSV!s#MHu^%*<_H`Fg&hckBP z2K(yf$<4bD^=)$K^f{QaG$!t5p^>!9j0Og43Eo5x zVZhkh7sTA6HRz+KcL2sWlVFd2k>oLdPi*PN4526w`qm9m&aAU( zeNZDJ}Sb6;dU z2z$o*KTUlcDaICu^>wY7d3b?l9zLRkTCduIJ_99hyok@^G#S|B_!N>qo06rWvWLb} zmedufUG%ONJtBF0=DRV;=fa+7b_nwv_-+oSftFyyh>#yGfsxbZ3S^-E(QbbSjkeNM zK6I0Idh7=g32!(KM#fiAQ!2?0`7TY_O!GF_B=(AEn~)jDF<;Khb#IH;5FUq2l)8sr zCvr{Lte-apn|>}u7U_c#aHd$K#tihMhmq2kR7Cz^7~p?JSwU+rI<(jfC_1#hkdDC_ zI<#VW5hL6W1>llESe$cXJ^;AvO>pPpD2Ad~sDH^f|T6B zj6sUN{64AxG#?^gexjM`=zK=K&;z#R7>@PiD;@2I16y>kovF!Hf3|2Y@P;BvKxT>q4c0+S!PVj>I+s`=-O++%WzCdA-lNFT2Ht@x#PtA=12gx7o~lju(1u=M0Kagn=-Og&NQg%>!3$I#$lzw914-|0 zQ09iThI}Ezi;gwzWXppF@lsl$<3OQfANr?Ftx3M7-A<-#YVSy&DcJLQy?Y#XlwaR_ z99{QLL8IG*D*R^M`}i&mmdlUk9c;!n^h)%v_pv_*Gy$X#xMm7$s=!SzTJ~p`FTX(%ciTQHMt9W;g zdY{k&ThF*3x3n&yo9|(gJG$xC+E5ily{0-mNf#Yg9<^?vZ8-y5f_1V*e@r<`vby zj&$pL@*aH1nt_V;j_vX`6p;bRmb$Alxf)Io<`>&Vx4N0})E0d+uY(v{L_Ok+lu(pG zG1Zbd|KTHuO?23Jg=n4R_G%ESjxhTB6K1c(5?RRQy!`}iGi|W>7?*BsjobNKxAqQw zsSls)JJ?%$ur~qC_&q_}-y86n6A0LPf-t$tx`kym<)yXguZg9~;)=SltmB6_eyx69 zr2mGGDvI}9npd#JNOTP_9KiHsH&??L7?J2)?f-lWy^oG|`3N>aps$6Rj%9fGcX2(N zmo;Wz(OTAuFE75*60TSe5^Q#??dQkFn%aK!K~3~O`jG{qDSt(*TRufMShpO3nke#u z_o^`}nSp*`=j)YC_#PovLZ~8IDOFPrNRmGzU98`BLZFWNnAzCdaRnwQrJ~&m?P4 zCeML_M6j)d$F(gY%*3Mj)GEKHd|`D(*}}3)f7x8m(lWoNm#2p>3XS!|uA~q3oMp^9 zOXI8S+SMhs<)y{7Fx$%cW5>!Ntuphm9hT-TF~#^qeD4e9y>~&3Y0r+B_6C@?c%MDc zmhL~F_8-?3>cP}`H;yr8)lDEZ&SoC}W}*%>FR+G`mU%?i&x5J@(@JhV$Bp-GAc=51 zw0%B}YK~ubp9!jHFUi7}l*3s-PapMl@t1Me)U1b*av( zYH_91EwWpvMLloLjZ4yKZ-lGikZ`6kk@9R>M6$|=A)va%*Suuw!y~)u|AKWs>H?n%)OC5^x$dy4Z&iuO#T z4*6>Oas|GL4Aa*!7|$?*^Wbui#MFW@SjGIwJU3R^;F>Y>vuTotxZ%cSy?|}|Lb3J! zk~9LdiMF7;;&Z$}zTGfOJ&1>oU|UM369O!?XZJQ3{n3R9jr{0Ma19dxt{2@3KbJ6w}xnb z1p=mJZ;wpKSUb3pTa13G)_U-LFU;9Ui=`~!i90+EJgxN*6JOk;X&W?dssBtPO;bN} zA8Lnq4#RJKhV_YKC9fMQ7}IovS_4E=6SYnf(C>+9+QMPOAZ*x5-7U`2-< z&bv~yPm`QKPtkTJ<3rtQchjWFnPWY9KhC@Ay0f#d_v|uPd3=#)#;nB8e3_o}&yUi2 z>MDO$S+y8n87cEGsG5r}j?jEk=iA1uFSOvbV=r}C+n}aM>DBesL%dI>d|4#70MNEZ zl!ET&V~8&m*DlVY!Hisatg8+Q4OC{u=5kwKvh+y&TYoPi#&bJpmL+>Am<9mVwo;WBv7=0M29bG!m+V0P|~st z#8j9SGy`pYIIu&8{PL~zXtOLPzC;eh5Be`@4$%RM>OQ=Xnlkkv&X`ZNst;htE1XEX zVCh0P3(zsLmQ$lO-=+(tZk!`3mJLBf-%+Dl6;saH5Rp`M`IQ@@vXfg#5W#CftZr>oo6##s ziVmFn3Yfu14(G>C?X{#UcQ^^lIN3Q%o8rVO`5zs4s;IU*oSU55`lOwy9M{Rt ze;}>XZ*^$M4EFn}XYG!@g}85YIRD_(Zc1|g%Bk&5a{iadCnDWR0{+>d-6pfp_aYEK z=WzbjsWl`yfA7@3NOJxM+Z7@9<1#e z=v;fIcKaabBj7X0`QL-JBZHi`ok<1fJo6ZK??n3YV?C25drB(jdW>0~>YA##b){vV z%CeH0ilyj|D}86Se% zluCq$fjto!chNv#VF9?`@Mp^rxw(fBr(7E7PiPo=VuzI)06-l2u36 zxOn8tEeGmOiB15$M zq3QGj&JV92xV%p7=lGg=T2_`$G&2t*mS)iP`97MtjZDz4nIDn5et6CF>!6vZ%8F-- z88}rx^t6YR_rvSyr72!rG<1- z?e@?vbkQ-|g0zogPLWT4qemnE-AT84N3QxO;m?c^8WPe9-cHnW-g4D1BzvZw(oA%; z%p!52V-F7|Pl|RDItLeRdgmP@5-K`i#*6_m4Ky!dYYVhlwSG8ld^g_@(?)Lr(0UO8 z1Cd7oWYbQ30Ou--`Lx{}KtNH9#?~$Zu7l=8l$XW6?Dxa9a7qIB751zU#e0h4O4_mm zpjq)4PP^UB_ge?Z9-Z7=YOQ7DS|x^JEuy7x^idCs9!&TsL@})0B5DIF?QVR8wxzUN z@5b_ZdEFEnOXM;c>_YS{1uGRjTupJUUgfuwVc(ZsjIi^oxI(W1Od`|AVq;blY~mWG z$WpA-GZ0x1QB8p9SR-^&L~qDu@qGI@JVjK&Q^gOz`b8Hr)=oQx!@Vf_I5J!mv4}05mWE-X+bDZ5N|E6{T{ZRJ##h8tz``Or zmqCvw!wICsuGG)*@qNSr!N)2LseV})(qo8I{K9yGvW3^7u-TVwRijy3c<}dK_4CP@ z!2uUV#;M_%fW+5W6GZt)yzdkfWjmnGqWl-R?$}foll9X#UlXMA4PM%@MfsH8ktn+D(GPf=C`FDZNRF~fx;JLU-sAbA+G1lC9mNx>@Xsi<{<6x_r9L_T zsNzM=bFnwA+>hthcFCz#l{4rS8FjB-kWu%utUV3Iiz|x@#kK}HSh)Kq_uh1Oed_uD z_~#pMzQ644^Lu}K_KkP``WoTwWESF_(sJ**lfsq@t@BgQ$@7I4aZ0ZBt@D4$=Ue3S zH|2A8u0^*`-fQySLNzT-J%3Iiv1fa{2)&J;!c}a0Jaw96x- zj~F&$Sk~F2>%{Hw8-|Y@mNha{!h$(Evl@-+sna-V>MZ)twMN2}9nd5#1;@41HOCUS z3>f}&T(p5cd1U-vw z$P|q5wUIcU!9k&pekNwPS0{n(O_W|BC23lZjDC3{iHSWgQkPb~z9f2tfz~OKPsg=I zhR{N{yXnbkN*9!8ucTcL#gYEBf(-XfNfUadUUX~nEh!=A>eN8DC#CkYz#2Py0i`U+2sir>=H}Qf^7U73q<@vt_!|x^sDs)M3Zug_4~{XC_7g=b zc)|w^h9tf@R}H zlFp;(NQV&{NV?3bw@H4h##=T~FXLQ{##ZRb)?T3fpC7fRoj949VKCjv$caNN*_iakB9Ku^8PYYoj}Y0zWqaJ~jb9 zE&+Z)0(^V|JU;rz5DH)8 zApTiB#H~g?p8~z_P4rjFd-B^9ek|~lwH4{sJ^5=2x}@(R+br_W6zDYq;-8BJWeVhr zDPV7p;D1=slmDeazCg%>b$SZqYbm@U>0gn0Q1X8+>Gxsd0|oM>6w+`e`R`#qnD8?N zezNvhAG*^t@|6?{B>jBm8?7f)FD_P>k#o7AkK*JPDXf)zZkGC|{7`rYxTckAE9k_+ zt_1ie61Q92XA;k4Jm~UEiQ8c9u*5y~2SV>9c2r9h_|;mP?Mb@8OSL&R`~*qww&7Oa ztW;ZT!_N@(voz|v^Wc^I8###U9}B!h^Vsk#$!DDnA1!dN4b`;s1pcEAc&@;yClDJ7 z1pbp)5Ow?$M)n>NpEj?t`hjwHfq#kf#-C<>HoGgt>d&qwZKcn zIGIOUB=B5~UM1sUnZWZnB(CYx1e%sBuKCX@ffsN{T;C$_$=V>>liLLD6MZiJ=q`zK zjIP&8K4QY0J^Z7<$y>&TMdb=GyD{*^EV)fr=X$vA8tc$IZ z{~8;#p{4#N(qCIBglPdggiPmVt(*-V_9eXxV;KB(pRMV~(xDYA^|CPX{^JGsR6}a6iY1(Gs zZbqjrKLS38_4m{q(P7{NwJQ}_#2#r}5s%Mc;PLp36?nAv4wf9JCE#;O0-Scn#!I&> z0Zt3lgINDl%q=19j}qW{XwL?*e(69d=Vb}-T7eIa=!fQ$DEtxlz@)j>4SrQgtOp)X z{w)dcj}zb;iaZ{l(-Pp>3Gm4Y@Hq+aiUjzL3GhEBkbe#62WioMyO>jhp0c5+L1Of1 zsZPv~;qpe{@$$P$&`108s=V$^fIltpEQ>jQ75%>w;Cls5vp-g#c{2)`-Q&wMHUT~} z0bY>+zY+K#Ejo@+V?WviJ4lO;BWUi7LNfZJgS6;)LClQ-KU?7A1r7bs+!ckZ1U}Ka z!7t5CQMg0k(fT0d{ zvZ*utqpknM_0648;+tDgP%@)n`ji>j#ly;LYf6S?fyNk~rIxzXQX6f0U)0H?VfahI zxv|gHs$86?F^{5A$FNkz0v=zyvr_MzB*H3tv|{CxYkMMk95@nX_y`q6E%(V)JuBga zPooTS6a%$B7_&HNu{jP+gjqH+YP~F>m>RRJEW~@zNwi6m6GX#)tUs73GrWJpuXjYQLj0xFU z8h%HPpx@y+^gCj-xIS0>j-lV|Y=H~P5dt3}@R1`4A32JCM+pw2MBGt=Mnn>EhKuNe zmVN|{U|`XS$Jru&w&0j;;esyPl0c-9E#w<6Xod@9xJYEUh&#fPQal|YC`Srpq~I`0 zT#ph@M~SDSg>0h*K3d2yTJRYyXhsYEqlFBkg*>CjP|c57zRw?3KxNC^!3_V%>XPyr zAE0xKi%XX*$`Qa53v~=E;2Ur;uzG* zYW9d4EJ2qqEGsUnsi~^Tw@7V@$+i>|6FommfO9K~7A@2kmMvUZwFu^WS>@t|_=Rv| zii^dU4Itp$;*y%0lBLC!Ws8d|$|~pk7yRe+Eai{7^dGPcr5d8VRT*|jR6UR}#;EV| zjK+7S7S>fz8#8qj{fAEN=tA-3Dc?*O3EG^I#WO}1Yx$Q9t0|i|thjjok|o8}_-mc2 z%90A~#wcEtMXJW1-dZ}&QaZM@Y87G8lv0h1wWPSDqN1v_#E+s~Qd(B+FR!YMTjmq8 z3q&00dZtaBIHO=@@yxvOMnQ4h2>DjFX8K_KvF0Na76mV_=hc+O2r#R1ae3w3;^}z1 zZXp@Wf26u)pIclA_bL=1|KHv>SyaS=MN@O2*UCCkol&bRt7;aOR1}x{%W6veRW-gM zkj)rRRknKCOqqXM_aJ*DxX;5MAW7B*$74AceTjmCh0~|ZrQ$2CUK*QkRpUFDk$TX< z@RTd)5JNqXF-BXTxE*bM*A`}%Jwm;4DE?6yCTFulSmtzCAqo#IQt8i%OBejCcwR|) zg*1fWczdz9YF=?oN#*=9WjIuZ*)dPJg~U9FoAEB|vs~%3ocKj*S9Vsp+^#hLr&Prj zO}Ax^Dp{-qQeVPeVm}XEKz?j$2L(zXuHs^a8KX3q1F` z>Z(Gsv!Ic=<+asSwPjZ88Y%yCrNL0K$1z~4p8s=lQo)tNllsdFrZ1G`W^?)zhFk5& zWix#-Jp|bRT#a6CWii^J(ghO1$Jf>UWs@#OFKjq%qMUB^hL?`4K&N>8DAC(0SX7Wr zeT8p9BU-%q*rJHuM(H(m<=Bo{Ts*h7s(1n3^RA#9(IooImXxFQWYjff6=mo{A(fdk zZ1P_=^Wv!}C~7K7t}b7cJsj7y<;A5HCAGE1{-xDrXaMF_2@9Cgp)DM_ctMFDMXS30 zafd+h#sDgUZP3*jseO#n8Lb-r#ixlKVPUuuXOPly92TF-+B&MXp7N1vXY_m|9FI!w8SXY>aW(9;*%C=h)O4#od`hI9V3?n;5^X|6d! zFDFFo>C!qX1v=4epQ8UM!$&dvNrux}jH2HtapM0whO51DcKNM!KTFP4j9!-$G{kNM z!>x5Hi~d@M(_g+)AbMJDQ}VpUaGI@D_%sp(!7k7I1o#aJ@W&Z`EBGn?=gSErdd$nW zK;k54jGh_J^?X0Wxt{;V_;WqK!fIUp8v||xt^b9IM?$z zaw3e<-jW^Q@&_Vhbos`hI2iyX83uG{!Yf9>-kBB z^L+iA;heswobR^hw?N`{yDelm?aEQ|KbL^ds|oNl%%fAFbh+N{WcVsPQ~V#6xZNI3 z#e6vh;=}Vbis4)j3ngyP*WLv5^x`=MyPR(^oY$jW5-0w&Dx&1qF+WX#a9Ukg_$-Or z<*#Nqm!CcqK!NBv{xrk69$sTOr{9|ZKgjSKkcN`;8;O(rw2GqeG|XF5AbIY^q3|0S z&h_)4#EB30pF0^nm%okST>cX=pH0E8hZ`8q)4fUJlrHyg4>O$CyAK)8{o8)VpUdfz ziwt&o&Sf~4=Qj+$12QSS{e$5=zh6n5MF#3ZG=ltiM2qFYZm+NOG!#SU4ByQJFGsC%lF6<-N zcd(zC3Ge{Jxqe=jIHjA5L+RlVqxUm>;z_tcpnP%tT*Yvnuet>IpBc{e)537h=VgZT zdi}b@N&Y+>O8yTRJ+IflWBnG|8>8s|o&Z0cGKxU_IlZ<2qGSEtV56@Vv9aIKhCd+j z<*a=t{w)%}Jpukr0{m9ij&r^JUgApr9NB+;)P~bvC{v)%#86Q5w@7?g0z8xer}b(I zlx;3gAJz_1esd`y1dk0LCUIJSrl91xRN@yW!2g*5AIRD}F3(l0y(4)ZlKdCi@W&iewFKOy^Vg5>>s~k!_SrYyEfeVke8hXi;p=C3&Y z4a{G0Id8Sm|6B6^tqo6-_3BSH{9=jkVSa|v9V_e40UKT_>5tj)7K!)hi^vE{&y|vo zJPEuK&!zckvUo*3ssgV3RU&$+whr_IDNzJ_eN;Or?YP=8VaHFl*mU62z;HjVm7Kq4 z_%eq7SlTt|VLZdnkvOG$J;QSt&i%i&U)9p*1V%rF(JyECbcz2M*o_Rg_McjORx-SV z@d+@zmf`gbr_Ym6Ao)orN)I*Cj}p%Ha}_B7fpBiOJ*Az}<9r;7kM++W7CqOG2^tE- zrxu5z-#{RO9iPS0<@7f*`MI1ki9sAb^$aH&RJuzHvuGBxJONWwk0F#rC*A_|r(_@a`#c*zi_pG5l6W|2)Gv z|Lu(bBu4)(qhG`DFC|WP{&R+FO#i=NcrT{^0K@x8++JT!V|-RJdOjb*`Q$MEJYTtt zkIwi^Vf0*Y^CWJUXCdRm<*8$QxIC*E&gHq4@tMfvxr@nY?6ZNNk6ua_9k=?^7CXav#&ukYmBDG<*6+YRGoKBN* zDE?y@&d2Y$4CnI9PD5k_;?MKDFadsj0(`XWClepayOL)w!?`_w!TQxx82vFu&+G50 zvV%qZxgXABc#!ci7|!eIe12mx5M$hy0-x4Qv^L#zU=y|^0khtA1 zy~p^hWOD9de0V)on@>s3dPeV-;|RO_rzXJ9l(=11r!<4}h4`ui}$3t74YnLp=zE@poCc1ExKKgr4MHo*8yW%Rc&KHP5U zn~oHS&#gF=9-0}S@eJR>=(#>$XE>MVUB+h`6h&7U3ZC7S&{82IeRld z#_e_(!|NIS1q|o@*!8U5`?c%&CB{F*a6sD90n56iEJG z<52lh-)tiMHinnungZdxUv$4fExZ=jiVyFf@b#S&Sb6b!r|gaRuVs8zF?y5XA27U* z;i}(7e7Ie;F?#M#dNKWQyE=>ETyJt%CiKAVO)f7Be||BOrys5WEKl5eL#IL}w9KrOr;*NP9NMSUH|H^P)UM&pg^1sY*uK(91PWrh7hsxInjGpWN6GqSVul9oxAFhAi zujcwciP;s`Klk%oe$@{rJ#+nYf6n!v$M|!6N&2N%UOLIgAh2b1uWVoKqOi=}Q^T_0RVcUW&Ap{_7b1y$oL_ zaXNAR-^FmQ|9csJALGO4&A9&6dMW9F%m0kzW7p>!4Ci{Yz7u2VpXA7;S9eIag;vQx-QAj^J{${rK3F7cThUok6P~~K0Lp5GF`&C z-mYi(@0mQ-_ed=M_cL6rGZP=Kx5pSC&i`qKbN?eG*v&&%aphVyc{fZ@Dc)Veo44zP4DlJs=q`Ms3kJik{l{C>t~0mHdn-I)OY z3&Xko)&3BAT+jHc^>)I!J-osAa6P{#andub)ha!Q89mqYK1R>=oZ&=d1meT>d=kUC zo==xJvEzDH>;HuF{GQF|x&GC@0HWvm%wzN%pOOHd$M6R5QhHdz@Op-;eFt_q@z;4G z5YFYikKtVZ4@sQ#b_EWV?&FM}>;E5&p6mZjhI9SzWH{IVCyYPWzuMPe&sQ6x=lN3m z9f+RmIi0OLaJ+8DJ?! zvO_iRO7y%w@_ARThhH&19RF{I^L#zUa8BQp0DqI=oX>j<=W^~&fPcntp67K&o4>_NK3Gnk7&iRaIIG4YW;hg`h1UO$8C z0Uk<*p&?NHr9lywBhKCvcM_g0-6!uxCNPgdOSisi|Cweu%kt?55x}48!iQDs~ z=Bo)`i$lq;#;wHXDuzGG_;dMt5Fvs+-QEnR%XehP`Z1i#Ut+_R9+pbnF8^%|Ukm<9 z{(BgoVuthgzveLfbwvIglDe5!QKVHaio-gbBg&p-{eRt3*Z*HIekbLar zvVrk0Ve%_GCt0}ss((&6mw&cYEa7wvb>Ro0nBiRh2W_~#wf;N-@#vn*|F$Hc(^?#= zTy{&G(&X~@bpk*joXdX=!@2yb|Ec8PEBC)z{{|M-v#J-H6Yx>}K)d`$B)wh!s(fWJoXa0%IG6ty45vH{?P2k~li@_K>5#D|VY`p})Gss4$QQ_0^$wmS-!W}ppX?Gd*h-XB;CzDoWA z#%C_WReMeRx%_W4dM^JihEtqnQqVBNiC)P+T((Dc`6sh>ipyWd@U`Hh^--w6!o`kBITPOsi` zRCXfCv`gfLU2nw<=X(1YoWEu`&)4r5&guVX!{x2^u)MJ6 z>u(I_`D$S}FW(Ot&h25J#O>wV#^|{odddDQ(Q`fYVK~p%X$6v4>Fw7KWf939v+vt zT@TMNoa^BwhI2j8_bDk5AFhW(61VHYA^kehb3OExxZNI3XE@KVm*JFOm9L-JaOGF| z`%_#$Vl;am^bGkLgwXkheQ4|g+qZV&e{oXh_Z!?}L` z!f;N%&W0){QCb3GhnIM+jx?2p^+p@+on_CVhOrC_&*Ga1hFbvDDf z9!4>o(~q;^N)LP=??Xsmm9J0I+wI|UhOcGx*D{>zLG9zU>){qg&+Xy&5+`~t|DPDn z^ZOTu6TQmUI)-z*YGgR)-y(6lJ-ooXjPQr$HJ#LR!dEh!)8EH%PG8M%wJ(eKT*GjW zye9n53|E(g-=uDE_Q-3}znuCK$Vi4$-BY1RUJyMUDm2Oq!crB8a~s2D(F){b5(I(h zuM=0+kJ?{ExY7wdQSUnt-kks$<}f}z6o~U943|Sj@$@LeRa-<4)HltEzw9asdM^P8 zbdp^Oaep?$Ws@TCISf~2M-LujxO5eQ{wapbDk5;}|AMS^rAZ2W4x68pQ$hkSXSkd? z7x*0v?<)}N=U#@N%bPH}e1^059t#LDj( zjGoVnlAlyT?N1;cM6Y!5f}Ov-e~sZpf2LyOv@VDb@!ulx?hGgTu@d((oZ>V}qgML_ zlstx{pULQn|1V^IuVgs!pCjq*^RDWDyl%A7*GT#o7*71ve%#j>PW*3_^m`djvaXPo z;46j`{cVz7y+5n;(?i<9>9Ufm{H~Mq{C!w@rp7Hk8~v-2elEjF{=SS zFnZ#jB`Y7F*CqNispm#UPyAnzc0m7ULP5ztNYd|QI6YJULl$N@@mK!HEz6&1iNE@P zvQrpN^wT8&EQV7Y^}l5~3@7@zlAg~S6Myx8W+gUywa<7p!?QrI!tD$v{`af=GMxCU z|2YdYoaj#>VJQr&UAoX;ay8EW8tc43UEu?jCByLDO20O2Zi&A{8+LVVt%eUoOLQ1M zQycT$O7RWv&YshkyJMe6KWY5~elD9nPMjzi^?_`Qri$`K`G|Z2_1k?Yo0OG34BvdO z`FfxRqV1ERpK=J$X^p}jnrLEcJ$`(9)6l`BI%5%E+g)T4Rd%$Py7F!L7#gyZawX{CK7IAJw_d!$-3GpZdyu=Y6sNSgNv?MmnSs7hP9bQU0^CilrS3 zAyNTEq!>qo|K6za*Hug1(ZBjwf1wkJ((z;URzoT}(rCNT$e<5u{~&){8r#1D(dYtE zzs+~~CF$`$&aaxh(prBu{)0*C3U|@I1a3y)Z<|E38_5LyeNDx%&i)Mt|9rJ@VOb@H zMwM0mvSE{^&N^HCZ;8Ce|GW&VuBpOb==f0pf_d43;(0YC`0JTr^J}W0;vXi|VseYm zKPj%c@{)chWr*A2I+w{MT6aUv;h@T?oW4QkB=tBHHapM233-P@&ewxe&+0MgV zh_B}Dx&7YPh4^D+`aFJR7vkr~k^c`}h;PJ+|Hm%GSKp!F^3%G8-F`g4C@DFeh$}0o zb&L!?NsmX$9uytTr4!Fw1<14hpmp(yT%@4#qj`N*o@y@tOkkA0oMy$96)O26fC6!r zYKb62aYZ~6#pi1?6v-Zcw8Yf++lYojwM?I{br5dPe>O0Ye>ERTL9ghvVR(L`LLm zMf99#DX8-WxQG{jg^W-3!GlU)#cz=D?e^CwzPWV62uY4RO`uieqTWJi}GBqJVScKywi@%b7YMNsk8d7X@J&wsUyum0y; zB!(Y*{^|d=CcIiepa0HOJw?X`x_$D&$Gmc{3`iLXB7UNAbz=wKh`3P z{Hl2Bd@Mo!ACvLlkn2{8fnEQH66Al0%zql5Qy~41#G&L@ zim&oP?@QCQU4Cth73D&kz_wd$DB{PHfA(`${C=`yLHZ|KQ0XiEm&^3+`oB=O;*YRS zkzXaZ0{$%H+w)%|L<=Jdf+D&| z5WyG{6xq_kkL?ot3j#Kl{sD@Xf`tJswy+2YvLHwb1rY_)dG6kG*75k3Jeaxf-Fd$` z@4k8Sb|yQsxt#n=n$cSAmSYk-44?PYJ@N-tkyiTJ&jNXm|0(%>c3yh?H^JB9pLm;s z`u)K;{%5dAU-3VqzQ_MEE^Lv;T|ed4Qht*6_}9qaQbk(nEB?DUzP0{4aWw(`{+D(m zPWBsl@4p`TxV~s6@4t2Mwf=jxnpAWCI1iWFul~Efy*_@9UQ7OXQyh7gLdtGX7v2=Z4@tI@%TSe-@3WXvf&48LufVAFY+FL zZy{@aX;wyF`if&4Ztx@T@pl&!yka-7K7O}=uf@L{H)cr7d(%ezaY{;G<97;t+~RYZ z%*t4=-p{P+YlF(N@!nfaf7g#Bq!aobEaK#EGk%|c`qby2A0$8G<(MHK_c6^hATJ$l zlfKHQ)qdmKZ2wtSjP}R1n0W0s-j9pp=lZ{?-zG03Ugh~Q`d#YZV8zgnQ$oD-AA=8{ z>$e^xsQOv@%d7li6J9#1@8j|-U@y={%!p9E8~Bzu|LH%P5mPhpq+S>nZxGSydisvyj3g5 z$h%*h{1?IF5@`6`qI_Ye$+wzL&4;m3_Wq0A*ZBP#LE}3k#MeyD{{iVO Bb*=ya diff --git a/obj/test/test_lu.o b/obj/test/test_lu.o deleted file mode 100644 index c986eb49e19356d9c53e217a28b0b71361309fa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74880 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 Wsy||%DE?zklX9a&&qkI9;oIY88Y_uuck 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 diff --git a/obj/test/test_matrix.o b/obj/test/test_matrix.o deleted file mode 100644 index 622a5540900e1202c42d057dca8a8f12af1810ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50808 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%0AWiD-%*-(f^=2 z=rDrWzr2)^#`gIx8V6DIKt8CUNcaC$4J~y|b7%}cnWl8Woe!T~OWY;K2xQ@NYN83_ z8j0`YjM~>1p!Q#YeK2L8#Hl`~g)iaFn^!v@^TqteQ0*xEKP{(kp#*11ajK z_tgj5et%6-{+5F%->%B*XCCq&(&<3!U$4q@{ptDgK+C_DqCD+~Jkau+RCz8xtv?=U z`7J5R(>mFKmeJq{PdvseS_e79Omn5!OA$$#iKrMf-zI>Ja`RF!&M!Iex)Jo+m6ti+0gr{Ics zrYo;r1IFp?<;Nq3uzu=!L=!Go^^?pz*~Ri9Q|NCipS4t$DpZ9@|D$o(^`|j0RsDCX zibkmN`ed)4_@=6Vf~wzC1&NNH8}0Qk1eU7)4XPshnvK2w%TYd6{mWD6PrhQW|D81T zSLPrCX_!34|Jv(+6FI5se^}M8{fzXd=TUq84k({W|K$f*|DH7UuTN1weXZYKKmCqX z)Q>!#?osu3(ZerGM9Y&GfY6_VxZb4d&mSZ+NdI9t?DZF+Jn^)-uQ69Wyf3k3P+dIH zdQ__Vvu>1B+Z8d@e*zAB{gtYId;i-`#zGn85Hzc^j`^!_hS5hYyzp_?iwOx|}{wgx+**w_mX; zufJ0zxh2+#^*#MRJgNGRM=cW1RD{%iv_@#RUrg0+w_nwXvLKClJZZW0nf|}0RPrxS z<@NXSH4l6Hn<$@3{sl^Y8XqW;{HNlu%YUz`-!A`*QBudjwY2-I4*hA9uILTi~_XHwozb55V+0XDvI{m$VdDpl8-D&Etq+k(=+mCEyum3_- zzukT(ohFL+d1s;Rrq8s`E0z3}s=WSx1thn=^3#4%{EM##Yr6bfGDGVKVLfA?tc&I`Za+%7gDf^^ni+=sQpMKd;RNBJ{vfiAt|l)%UeyaGxfbb zcciKR&HH2t?I%=!5e{8WH=3&2o2IW(=|Lv;% zbvsl0m*ddoHU4#)`YR8x{%vXMe>g?`W{Uc0|2x^wuK&dcSpQ&@Po@9*6!nu!*!8ba z_1oKdrmCNw&v??~zCP1;BK0+=Tcyf#jIQmpbtq5Ic(&ogSgp!?sSrzAehpo%>bIAF zSe4(T9ZeOmmtTzX!hV{eI&ZpPUSz5A2G5Gn2PI*aoEcr m0?a;l05T@bq`!tyZ5zPt_R9fHs`6X@pD1qJ0R4Efm;e7598DAe diff --git a/obj/test/test_matvec.o b/obj/test/test_matvec.o deleted file mode 100644 index a99e1df832c70e56ad02161dc2b71704558dce78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84304 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 B4-WtU diff --git a/obj/test/test_vector.o b/obj/test/test_vector.o deleted file mode 100644 index 52f368200c76c0dc3a55cc7299c8f462b0f4c849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89896 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 `p77iQ+F5a!BM*qAYUbSPS<^E^Gij^G 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 diff --git a/src/main.cpp b/src/main.cpp index 352059f..26a06a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,21 +3,80 @@ #include "./decomp/decomp.h" #include "./core/omp_config.h" +#include "./modules/grid1d.h" +#include "./modules/finitedifference1d.h" + + #include #include +//#include "./numerics/interpolation/interpolation_linear.h" int main(int argc, char const *argv[]) { + - utils::Md A; - decomp::LUdcmpd lu(A); + utils::Vector x(100, 0), y(100,0); + for (uint64_t i = 0; i < 100; ++i){ + x[i] = i+1; + y[i] = 1 + i*0.1; + } + //y[9] = 1.5; - // Single-level, 16 threads, runtime may adjust - //omp_configure(/*max_levels=*/1, /*dynamic=*/true, /*threads_per_level=*/{16}); + x.print(); + y.print(); + + double p = 5.5; + + + + numerics::interp_linear linear(x,y); + numerics::interp_polynomial polynomial(x,y, 3); + numerics::interp_cubic_spline cubic_spline(x,y); + numerics::interp_rational rational(x,y,2); + numerics::interp_barycentric barycentric(x,y, 2); + + std::cout << "=== interpolate: " << p << " ===" << std::endl; + + std::cout << linear.interp(p) << std::endl; + std::cout << linear.interp(p) << std::endl; + std::cout << polynomial.interp(p) << std::endl; // error = polynomial.dy + std::cout << cubic_spline.interp(p) << std::endl; + std::cout << rational.interp(p) << std::endl; + std::cout << barycentric.interp(p) << std::endl; + + p += 0.01; + + std::cout << "=== interpolate: " << p << " ===" << std::endl; + + std::cout << linear.interp(p) << std::endl; + std::cout << polynomial.interp(p) << std::endl; + std::cout << cubic_spline.interp(p) << std::endl; + std::cout << rational.interp(p) << std::endl; + std::cout << barycentric.interp(p) << std::endl; + + p += 0.01; + + std::cout << "=== interpolate: " << p << " ===" << std::endl; + + std::cout << linear.interp(p) << std::endl; + std::cout << polynomial.interp(p) << std::endl; + std::cout << cubic_spline.interp(p) << std::endl; + std::cout << rational.interp(p) << std::endl; + std::cout << barycentric.interp(p) << std::endl; + + p += 50.01; + + std::cout << "=== interpolate: " << p << " ===" << std::endl; + + std::cout << linear.interp(p) << std::endl; + std::cout << polynomial.interp(p) << std::endl; + std::cout << cubic_spline.interp(p) << std::endl; + std::cout << rational.interp(p) << std::endl; + std::cout << barycentric.interp(p) << std::endl; return 0; diff --git a/test/test_interpolation.cpp b/test/test_interpolation.cpp new file mode 100644 index 0000000..6015842 --- /dev/null +++ b/test/test_interpolation.cpp @@ -0,0 +1,115 @@ +#include "test_common.h" +#include "./utils/utils.h" +#include "./numerics/inverse.h" +#include "./numerics/matmul.h" + + +TEST_CASE(Inverse_GJ_Basic_3x3) { + using T = double; + utils::Matrix A(3,3, T{0}); + // Well-conditioned 3x3 + A(0,0)=3; A(0,1)=0.2; A(0,2)=-0.1; + A(1,0)=0.1; A(1,1)=2.5; A(1,2)=0.3; + A(2,0)=-0.2;A(2,1)=0.4; A(2,2)=2.0; + + auto Ainv = numerics::inverse(A, "Gauss-Jordan"); + utils::Matrix I; + I.eye(3); + auto prod = numerics::matmul(A, Ainv); + + CHECK(prod.nearly_equal(I, (T)1e-10), "inverse(GJ): A*A^{-1} ≈ I"); +} + +TEST_CASE(Inverse_LU_Basic_3x3) { + using T = double; + utils::Matrix A(3,3, T{0}); + A(0,0)=3; A(0,1)=0.2; A(0,2)=-0.1; + A(1,0)=0.1; A(1,1)=2.5; A(1,2)=0.3; + A(2,0)=-0.2;A(2,1)=0.4; A(2,2)=2.0; + + auto Ainv = numerics::inverse(A, "LU"); + utils::Matrix I; + I.eye(3); + auto prod = numerics::matmul(A, Ainv); + + CHECK(prod.nearly_equal(I, (T)1e-10), "inverse(LU): A*A^{-1} ≈ I"); +} + +TEST_CASE(Inverse_GJ_vs_LU_Consistency) { + using T = double; + utils::Matrix A(3,3, T{0}); + A(0,0)=4; A(0,1)=1; A(0,2)=2; + A(1,0)=0; A(1,1)=3; A(1,2)=-1; + A(2,0)=0; A(2,1)=0; A(2,2)=2; + + auto GJ = numerics::inverse(A, "Gauss-Jordan"); + auto LU = numerics::inverse(A, "LU"); + + CHECK(GJ.nearly_equal(LU, (T)1e-12), "inverse: GJ and LU produce nearly the same result"); +} + + +TEST_CASE(Inplace_Inverse_LU) { + using T = double; + utils::Matrix A(3,3, T{0}); + A(0,0)=3; A(0,1)=0.2; A(0,2)=-0.1; + A(1,0)=0.1; A(1,1)=2.5; A(1,2)=0.3; + A(2,0)=-0.2;A(2,1)=0.4; A(2,2)=2.0; + + auto Ainv_ref = numerics::inverse(A, "LU"); // out-of-place + auto A_copy = A; + numerics::inplace_inverse(A_copy, "LU"); // in-place + + CHECK(A_copy.nearly_equal(Ainv_ref, (T)1e-12), "inplace_inverse(LU) equals out-of-place"); +} + +TEST_CASE(Inplace_Inverse_GJ) { + using T = double; + utils::Matrix A(2,2, T{0}); + A(0,0)=2; A(0,1)=1; + A(1,0)=1; A(1,1)=3; + + auto Ainv_ref = numerics::inverse(A, "Gauss-Jordan"); + auto A_copy = A; + numerics::inplace_inverse(A_copy, "Gauss-Jordan"); + + CHECK(A_copy.nearly_equal(Ainv_ref, (T)1e-12), "inplace_inverse(GJ) equals out-of-place"); +} + +TEST_CASE(Inverse_Identity) { + using T = double; + utils::Matrix I; + I.eye(3); + auto invI = numerics::inverse(I, "LU"); + CHECK(invI.nearly_equal(I, (T)0), "inverse(I) == I"); +} +TEST_CASE(Inverse_NonSquare_Throws) { + using T = double; + utils::Matrix A(2,3, T{0}); // non-square + bool threw1=false, threw2=false; + try { auto X = numerics::inverse(A, "LU"); (void)X; } catch(...) { threw1=true; } + try { numerics::inplace_inverse(A, "Gauss-Jordan"); } catch(...) { threw2=true; } + CHECK(threw1 && threw2, "inverse throws on non-square for both methods"); +} + +TEST_CASE(Inverse_Singular_Throws) { + using T = double; + utils::Matrix S(3,3, T{0}); + S(0,0)=1; S(0,1)=2; S(0,2)=3; + S(1,0)=1; S(1,1)=2; S(1,2)=3; // duplicate row -> singular + S(2,0)=0; S(2,1)=1; S(2,2)=0; + + bool threw_gj=false, threw_lu=false; + try { auto X = numerics::inverse(S, "Gauss-Jordan"); (void)X; } catch(...) { threw_gj=true; } + try { auto X = numerics::inverse(S, "LU"); (void)X; } catch(...) { threw_lu=true; } + CHECK(threw_gj && threw_lu, "inverse throws on singular for both methods"); +} + +TEST_CASE(Inverse_Unknown_Method_Throws) { + using T = double; + utils::Matrix A(2,2, T{0}); + A(0,0)=1; A(1,1)=1; + bool threw=false; + try { auto X = numerics::inverse(A, "Foobar"); (void)X; } catch(...) { threw=true; } + CHECK(threw, "inverse unknown method throws"); +} \ No newline at end of file