4#ifndef TINYOPT_C_C_API_COMMON_H
5#define TINYOPT_C_C_API_COMMON_H
7#include <tinyopt/c/c_api_config.h>
13#if !TINYOPT_C_API_ENABLE_SHARED
16#if defined(TINYOPT_C_BUILD)
17#define TINYOPT_C_API __declspec(dllexport)
19#define TINYOPT_C_API __declspec(dllimport)
22#define TINYOPT_C_API __attribute__((visibility("default")))
31 int used_numerical_differentiation;
34typedef enum tinyopt_status_t {
35 TINYOPT_STATUS_OK = 0,
36 TINYOPT_STATUS_INVALID_ARGUMENT = 1,
37 TINYOPT_STATUS_CALLBACK_FAILED = 2,
38 TINYOPT_STATUS_RESIDUAL_CALLBACK_FAILED = TINYOPT_STATUS_CALLBACK_FAILED,
39 TINYOPT_STATUS_OPTIMIZATION_FAILED = 3,
40 TINYOPT_STATUS_INTERNAL_ERROR = 4,
41 TINYOPT_STATUS_USER_STOPPED = 5
44typedef enum tinyopt_eval_type_t {
45 TINYOPT_EVAL_COST_ONLY = 0,
46 TINYOPT_EVAL_RESIDUALS,
47 TINYOPT_EVAL_GRADIENT,
51typedef enum tinyopt_solver_t {
52 TINYOPT_SOLVER_LEVENBERG_MARQUARDT = 0,
53 TINYOPT_SOLVER_GAUSS_NEWTON,
54 TINYOPT_SOLVER_GRADIENT_DESCENT,
55 TINYOPT_SOLVER_CONJUGATE_GRADIENT,
56 TINYOPT_SOLVER_DOGLEG,
61typedef enum tinyopt_linear_solver_t {
62 TINYOPT_LINEAR_SOLVER_LDLT = 0,
63 TINYOPT_LINEAR_SOLVER_LLT,
64 TINYOPT_LINEAR_SOLVER_LU,
65 TINYOPT_LINEAR_SOLVER_QR,
66 TINYOPT_LINEAR_SOLVER_SVD,
67 TINYOPT_LINEAR_SOLVER_SUITESPARSE
68} tinyopt_linear_solver_t;
70typedef int (*tinyopt_stop_callback_t)(
double error,
double step_norm_squared,
71 double gradient_norm_squared,
void *user_data);
72typedef int (*tinyopt_stop_callback2_t)(
float error,
const float *x,
const float *dx,
int dims,
77typedef int (*tinyopt_step_callback_t)(
const float *dx,
int dims,
int is_rollback,
void *user_data);
80 tinyopt_solver_t solver_type;
81 tinyopt_linear_solver_t linear_solver;
82 double svd_relative_threshold;
85 int use_step_quality_approx;
89 float check_min_hessian_diagonal;
90 int save_last_hessian;
93 int downscale_cost_by_two;
96 unsigned short max_iters;
98 float min_relative_error_decrease;
99 float min_step_norm_squared;
100 float min_gradient_norm_squared;
101 unsigned char max_total_failures;
102 unsigned char max_consecutive_failures;
103 double max_duration_ms;
104 tinyopt_stop_callback_t stop_callback;
105 void *stop_callback_user_data;
106 tinyopt_stop_callback2_t stop_callback2;
107 void *stop_callback2_user_data;
108 tinyopt_step_callback_t step_callback;
109 void *step_callback_user_data;
112 const char *log_error_symbol;
116 int log_print_inliers;
118 int log_print_jacobian_jet;
119 int log_print_max_standard_deviation;
120 int log_print_failure;
122 int lm_jacobi_scaling;
123 float lm_damping_init;
124 float lm_damping_min;
125 float lm_damping_max;
126 float lm_good_factor;
129 float gd_learning_rate;
131 float cg_step_reduction;
132 float dogleg_radius_init;
133 float dogleg_radius_max;
134 float dogleg_shrink_factor;
135 float dogleg_expand_factor;
136 float bfgs_step_size;
137 float bfgs_step_reduction;
138 float bfgs_step_growth;
139 float bfgs_max_step_size;
140 float bfgs_curvature_threshold;
141 float lbfgs_step_size;
142 float lbfgs_step_reduction;
143 float lbfgs_step_growth;
144 float lbfgs_max_step_size;
145 float lbfgs_curvature_threshold;
146 unsigned char lbfgs_history_size;
149TINYOPT_C_API tinyopt_status_t tinyopt_options_default(
tinyopt_options_t *options);
Definition c_api_common.h:79
Definition c_api_common.h:25