24#ifndef FPCLOSEDCURVE_HPP_INCLUDED
25#define FPCLOSEDCURVE_HPP_INCLUDED
27#include "fitpack_config.h"
30#include "fxArrays.hpp"
33#include "fitpack_closed_curve_c.h"
43static_assert(
sizeof(fitpack_closed_curve_c) ==
sizeof(fitpack_parametric_curve_c),
44 "C descriptor layout mismatch: fitpack_closed_curve_c vs fitpack_parametric_curve_c");
105 if (
this != &other) {
164 return "fpClosedCurve";
210 void new_points(int32_t x_n1, int32_t x_n2, std::vector<double>&
x,
double*
u =
nullptr,
double*
w =
nullptr)
override {
222 int32_t
new_fit(int32_t x_n1, int32_t x_n2, std::vector<double>&
x,
double*
u =
nullptr,
double*
w =
nullptr,
double*
smoothing =
nullptr, int32_t*
order =
nullptr)
override {
227 int32_t
fit(
double*
smoothing =
nullptr, int32_t*
order =
nullptr,
bool* keep_knots =
nullptr)
override {
242 std::vector<double>
eval_one(
double u, int32_t n_result, int32_t* ierr =
nullptr)
override {
243 std::vector<double> result(n_result);
252 std::vector<double>
eval_many(std::vector<double>&
u, int32_t n_result, int32_t* ierr =
nullptr)
override {
253 int32_t n =
static_cast<int32_t
>(
u.size());
254 std::vector<double> result(n_result);
263 std::vector<double>
dfdx(
double u, int32_t
order, int32_t n_result, int32_t* ierr =
nullptr)
override {
264 std::vector<double> result(n_result);
273 std::vector<double>
dfdx(std::vector<double>&
u, int32_t
order, int32_t n_result, int32_t* ierr =
nullptr)
override {
274 int32_t n =
static_cast<int32_t
>(
u.size());
275 std::vector<double> result(n_result);
284 std::vector<double>
dfdx_all(
double u, int32_t n_result, int32_t* ierr =
nullptr)
override {
285 std::vector<double> result(n_result);
298 void comm_pack(std::vector<double>& buffer)
const override {
299 int32_t n =
static_cast<int32_t
>(buffer.size());
308 int32_t n =
static_cast<int32_t
>(buffer.size());
313 double mse()
const override {
325 int32_t n =
static_cast<int32_t
>(buffer.size());
334 int32_t n =
static_cast<int32_t
>(buffer.size());
std::vector< double > eval_many(std::vector< double > &u, int32_t n_result, int32_t *ierr=nullptr) override
eval_many
Definition fpClosedCurve.hpp:252
bool is_allocated() const override
Check if object is allocated.
Definition fpClosedCurve.hpp:141
fpClosedCurve(fitpack_closed_curve_c &c_wrapper, bool move=false)
Construct from existing C wrapper (takes ownership if move=true)
Definition fpClosedCurve.hpp:115
fpClosedCurve & operator=(const fpClosedCurve &other)
Copy assignment - deep copy.
Definition fpClosedCurve.hpp:85
double mse() const override
Definition fpClosedCurve.hpp:313
int32_t fit(double *smoothing=nullptr, int32_t *order=nullptr, bool *keep_knots=nullptr) override
Definition fpClosedCurve.hpp:227
bool is_pointer() const override
Check if this is a non-owning pointer.
Definition fpClosedCurve.hpp:148
fpClosedCurve & operator=(fpClosedCurve &&other) noexcept
Move assignment - transfer ownership.
Definition fpClosedCurve.hpp:104
void set_default_parameters() override
Definition fpClosedCurve.hpp:215
fpParametricCurve & as_parent()
Upcast to parent type (reference, no copy)
Definition fpClosedCurve.hpp:196
int32_t new_fit(int32_t x_n1, int32_t x_n2, std::vector< double > &x, double *u=nullptr, double *w=nullptr, double *smoothing=nullptr, int32_t *order=nullptr) override
new_fit
Definition fpClosedCurve.hpp:222
int32_t least_squares(double *smoothing=nullptr, bool *reset_knots=nullptr) override
Definition fpClosedCurve.hpp:235
fpClosedCurve(const fpClosedCurve &other)
Copy constructor - deep copy.
Definition fpClosedCurve.hpp:77
int32_t comm_size() const override
Definition fpClosedCurve.hpp:291
std::vector< double > dfdx_all(double u, int32_t n_result, int32_t *ierr=nullptr) override
dfdx_all
Definition fpClosedCurve.hpp:284
void comm_expand(std::vector< double > &buffer) override
comm_expand
Definition fpClosedCurve.hpp:307
const fpParametricCurve & as_parent() const
Definition fpClosedCurve.hpp:199
void comm_pack(std::vector< double > &buffer) const override
comm_pack
Definition fpClosedCurve.hpp:298
const fitpack_closed_curve_c & c_handle() const
Get underlying C wrapper (const, for interop)
Definition fpClosedCurve.hpp:177
void destroy_base() override
Definition fpClosedCurve.hpp:339
fpClosedCurve(fpClosedCurve &&other) noexcept
Move constructor - transfer ownership.
Definition fpClosedCurve.hpp:96
void core_comm_pack(std::vector< double > &buffer) const override
core_comm_pack
Definition fpClosedCurve.hpp:324
~fpClosedCurve() override
Destructor - deallocates if owned.
Definition fpClosedCurve.hpp:70
const char * c_type_name() const override
Return the C wrapper struct name for this class (e.g. "fitpack_closed_curve_c").
Definition fpClosedCurve.hpp:155
void new_points(int32_t x_n1, int32_t x_n2, std::vector< double > &x, double *u=nullptr, double *w=nullptr) override
new_points
Definition fpClosedCurve.hpp:210
fpClosedCurve(fitpack_closed_curve_c &c_wrapper, ViewTag)
Non-owning view ctor: bit-copy the C handle, mark is_pointer=true. Used by parent classes' polymorphi...
Definition fpClosedCurve.hpp:129
fpClosedCurve(NoAlloc tag)
Definition fpClosedCurve.hpp:355
int32_t interpolate(int32_t *order=nullptr, bool *reset_knots=nullptr) override
Definition fpClosedCurve.hpp:231
fpClosedCurve()
Default constructor - allocates new fitpack_closed_curve.
Definition fpClosedCurve.hpp:63
static fpClosedCurve make_view()
Construct an empty (non-owning) wrapper, for use as a view target.
Definition fpClosedCurve.hpp:189
std::vector< double > dfdx(std::vector< double > &u, int32_t order, int32_t n_result, int32_t *ierr=nullptr) override
dfdx
Definition fpClosedCurve.hpp:273
const char * cpp_type_name() const override
Return the fully-qualified C++ class name for this class. Owned by the C++ layer — does not round-tri...
Definition fpClosedCurve.hpp:163
int32_t core_comm_size() const override
Definition fpClosedCurve.hpp:317
std::vector< double > dfdx(double u, int32_t order, int32_t n_result, int32_t *ierr=nullptr) override
dfdx
Definition fpClosedCurve.hpp:263
void core_comm_expand(std::vector< double > &buffer) override
core_comm_expand
Definition fpClosedCurve.hpp:333
fitpack_closed_curve_c & c_handle()
Get underlying C wrapper (for interop)
Definition fpClosedCurve.hpp:170
std::vector< double > eval_one(double u, int32_t n_result, int32_t *ierr=nullptr) override
eval_one
Definition fpClosedCurve.hpp:242
double & smoothing()
Definition fpFitter.hpp:317
T * as()
Definition fpFitter.hpp:360
fpParametricCurve()
Default constructor - allocates new fitpack_parametric_curve.
Definition fpParametricCurve.hpp:65
virtual int32_t fit(double *smoothing=nullptr, int32_t *order=nullptr, bool *keep_knots=nullptr)
Definition fpParametricCurve.hpp:229
fxArray< double > u() const
Zero-copy fxArray view of component 'u'.
Definition fpParametricCurve.hpp:436
fxArray< double > x() const
Zero-copy fxArray view of component 'x'.
Definition fpParametricCurve.hpp:391
virtual int32_t new_fit(int32_t x_n1, int32_t x_n2, std::vector< double > &x, double *u=nullptr, double *w=nullptr, double *smoothing=nullptr, int32_t *order=nullptr)
new_fit
Definition fpParametricCurve.hpp:224
fxArray< double > w() const
Zero-copy fxArray view of component 'w'.
Definition fpParametricCurve.hpp:526
int32_t & order()
Definition fpParametricCurve.hpp:674
Tag type for derived class constructors (no allocation)
Definition fpFitter.hpp:349
Tag type for non-owning view constructors of polymorphic concrete subtypes. Declared on roots and abs...
Definition fpFitter.hpp:103