diff --git a/python/aare/func.py b/python/aare/func.py index ca60cf2..e8a7b46 100644 --- a/python/aare/func.py +++ b/python/aare/func.py @@ -1 +1 @@ -from ._aare import gaus, pol1 \ No newline at end of file +from ._aare import gaus, pol1, scurve, scurve2 \ No newline at end of file diff --git a/python/src/fit.hpp b/python/src/fit.hpp index c065b07..97dafb5 100644 --- a/python/src/fit.hpp +++ b/python/src/fit.hpp @@ -321,10 +321,10 @@ n_threads : int, optional py::array_t y_err, int n_threads) { if (y.ndim() == 3) { - auto par = new NDArray({y.shape(0), y.shape(1), 2}); + auto par = new NDArray({y.shape(0), y.shape(1), 6}); auto par_err = - new NDArray({y.shape(0), y.shape(1), 2}); + new NDArray({y.shape(0), y.shape(1), 6}); auto y_view = make_view_3d(y); auto y_view_err = make_view_3d(y_err); @@ -408,10 +408,10 @@ n_threads : int, optional py::array_t y_err, int n_threads) { if (y.ndim() == 3) { - auto par = new NDArray({y.shape(0), y.shape(1), 2}); + auto par = new NDArray({y.shape(0), y.shape(1), 6}); auto par_err = - new NDArray({y.shape(0), y.shape(1), 2}); + new NDArray({y.shape(0), y.shape(1), 6}); auto y_view = make_view_3d(y); auto y_view_err = make_view_3d(y_err); @@ -428,8 +428,8 @@ n_threads : int, optional } else if (y.ndim() == 1) { - auto par = new NDArray({2}); - auto par_err = new NDArray({2}); + auto par = new NDArray({6}); + auto par_err = new NDArray({6}); auto y_view = make_view_1d(y); auto y_view_err = make_view_1d(y_err); diff --git a/src/Fit.cpp b/src/Fit.cpp index 78957e3..d104675 100644 --- a/src/Fit.cpp +++ b/src/Fit.cpp @@ -40,7 +40,7 @@ double scurve(const double x, const double * par) { NDArray scurve(NDView x, NDView par) { NDArray y({x.shape()}, 0); - for (size_t i = 0; i < x.size(); i++) { + for (ssize_t i = 0; i < x.size(); i++) { y(i) = scurve(x(i), par.data()); } return y; @@ -52,7 +52,7 @@ double scurve2(const double x, const double * par) { NDArray scurve2(NDView x, NDView par) { NDArray y({x.shape()}, 0); - for (size_t i = 0; i < x.size(); i++) { + for (ssize_t i = 0; i < x.size(); i++) { y(i) = scurve2(x(i), par.data()); } return y; @@ -309,7 +309,7 @@ std::array scurve_init_par(const NDView x, const NDView= start_par[4]) { start_par[2] = x[i]; break; // Exit the loop after finding the first valid x @@ -379,7 +379,7 @@ void fit_scurve(NDView x, NDView y, NDView y_er // Calculate chi2 chi2 = 0; - for (size_t i = 0; i < y.size(); i++) { + for (ssize_t i = 0; i < y.size(); i++) { chi2 += std::pow((y(i) - func::pol1(x(i), par_out.data())) / y_err(i), 2); } } @@ -421,7 +421,7 @@ std::array scurve2_init_par(const NDView x, const NDView x, NDView y, NDView y_e // Calculate chi2 chi2 = 0; - for (size_t i = 0; i < y.size(); i++) { + for (ssize_t i = 0; i < y.size(); i++) { chi2 += std::pow((y(i) - func::pol1(x(i), par_out.data())) / y_err(i), 2); } }