23 std::optional<std::pair<double, double>>
limits;
61 double fmin = std::numeric_limits<double>::quiet_NaN();
62 double edm = std::numeric_limits<double>::quiet_NaN();
91 std::shared_ptr<const BackendState>
state;
96 std::vector<std::pair<double, double>>
points;
102 virtual double operator()(
const std::vector<double>& x)
const = 0;
109 : fn_(
std::move(fn)), up_(up) {}
111 double operator()(
const std::vector<double>& x)
const override {
120 std::function<double(
const std::vector<double>&)> fn_;
129 const std::vector<ParameterDefinition>& parameters,
133 const std::vector<ParameterDefinition>& parameters,
135 const std::vector<std::size_t>& fixed_indices,
136 const std::vector<double>& fixed_values)
const = 0;
149 std::ostringstream oss;
154inline std::vector<double>
linspace(
double a,
double b, std::size_t n) {
155 std::vector<double> out(n);
156 if (n == 0)
return out;
161 for (std::size_t i = 0; i < n; ++i) {
162 out[i] = a + (b - a) *
double(i) / double(n - 1);
167inline double safe_step(
double value,
double scale_hint) {
168 const double abs_value = std::fabs(value);
169 const double abs_scale = std::fabs(scale_hint);
172 if (std::isfinite(abs_scale) && abs_scale > 0.0) step = 0.05 * abs_scale;
173 if (std::isfinite(abs_value) && abs_value > 0.0) step = std::max(step, 0.01 * abs_value);
174 if (!std::isfinite(step) || step <= 0.0) step = 1e-3;
Lightweight dense real-matrix utilities built on top of STL storage and GSL backends.
virtual ~BackendState()=default
virtual ~IFitBackend()=default
virtual BackendFitResult minimize_with_fixed(const IObjectiveFunction &objective, const std::vector< ParameterDefinition > ¶meters, const FitOptions &options, const std::vector< std::size_t > &fixed_indices, const std::vector< double > &fixed_values) const =0
virtual BackendFitResult minimize(const IObjectiveFunction &objective, const std::vector< ParameterDefinition > ¶meters, const FitOptions &options) const =0
virtual BackendContourResult contour(const IObjectiveFunction &objective, const BackendFitResult &reference_fit, std::size_t x_index, std::size_t y_index, const ContourOptionsBackEnd &options) const =0
virtual ~IObjectiveFunction()=default
virtual double operator()(const std::vector< double > &x) const =0
virtual double error_definition() const =0
double error_definition() const override
LambdaObjectiveFunction(std::function< double(const std::vector< double > &)> fn, double up)
double operator()(const std::vector< double > &x) const override
std::unique_ptr< IFitBackend > make_minuit_backend()
std::string to_string_any(const T &x)
std::vector< double > linspace(double a, double b, std::size_t n)
double safe_step(double value, double scale_hint)
Hash specialization for SymbolId<Tag>.
double T(double x)
Wilson coefficient T(x).
std::vector< std::pair< double, double > > points
std::vector< double > errors
std::vector< double > values
std::shared_ptr< const BackendState > state
FitDiagnostics diagnostics
bool has_valid_parameters
std::vector< double > cov_eigs
std::optional< std::pair< double, double > > limits