00001
#ifndef DEF_numeric_prototypes
00002
#define DEF_numeric_prototypes
00003
00004
public void initialize_amoeba(
00005
amoeba_struct *amoeba,
00006
int n_parameters,
00007 Real initial_parameters[],
00008 Real parameter_deltas[],
00009 amoeba_function function,
00010
void *
function_data,
00011 Real tolerance );
00012
00013
public Real
get_amoeba_parameters(
00014
amoeba_struct *amoeba,
00015 Real parameters[] );
00016
00017
public void terminate_amoeba(
00018
amoeba_struct *amoeba );
00019
00020
public BOOLEAN
perform_amoeba(
00021
amoeba_struct *amoeba );
00022
00023
public BOOLEAN
solve_linear_system_float(
00024
int n,
00025
float **coefs,
00026
float values[],
00027
float solution[] );
00028
00029
public BOOLEAN
invert_square_matrix_float(
00030
int n,
00031
float **matrix,
00032
float **inverse );
00033
00034
public Real
gradient_steps_minimize_function(
00035
int n_dims,
00036 Real initial_parameters[],
00037 Real initial_step_sizes[],
00038 Real (*func) ( Real [],
void * ),
00039
void *func_data,
00040
int n_search_dims,
00041
int max_iterations,
00042 Real tolerance,
00043 Real solution[] );
00044
00045
public void initialize_histogram(
00046
histogram_struct *histogram,
00047 Real delta,
00048 Real offset );
00049
00050
public void delete_histogram(
00051
histogram_struct *histogram );
00052
00053
public void add_to_histogram(
00054
histogram_struct *histogram,
00055 Real value );
00056
00057
public int get_histogram_counts(
00058
histogram_struct *histogram,
00059 Real *counts[],
00060 Real filter_width,
00061 Real *scale_factor,
00062 Real *trans_factor );
00063
00064
public void display_histogram(
00065
histogram_struct *histogram,
00066
int x_size,
00067
int y_size );
00068
00069
public void create_histogram_line(
00070
histogram_struct *histogram,
00071
int x_size,
00072
int y_size,
00073 Real filter_width,
00074
lines_struct *lines );
00075
00076
public BOOLEAN
least_squares(
00077
int n_points,
00078
int n_dims,
00079 Real **points,
00080 Real values[],
00081 Real parameters[] );
00082
00083
public void initialize_linear_least_squares(
00084
linear_least_squares *lsq,
00085
int n_parameters );
00086
00087
public void add_to_linear_least_squares(
00088
linear_least_squares *lsq,
00089 Real parameter_coefs[],
00090 Real constant );
00091
00092
public BOOLEAN
get_linear_least_squares_solution(
00093
linear_least_squares *lsq,
00094 Real solution[] );
00095
00096
public void delete_linear_least_squares(
00097
linear_least_squares *lsq );
00098
00099
public BOOLEAN
singular_value_decomposition(
00100
int m,
00101
int n,
00102 Real **a,
00103 Real w[],
00104 Real **v );
00105
00106
public Real
minimize_lsq(
00107
int n_parameters,
00108 Real constant_term,
00109 Real linear_terms[],
00110 Real square_terms[],
00111
int n_cross_terms[],
00112
int *cross_parms[],
00113 Real *cross_terms[],
00114 Real max_step_size,
00115
int n_iters,
00116 Real node_values[] );
00117
00118
public void initialize_lsq_terms(
00119
int n_parameters,
00120 Real *constant_term,
00121 Real *linear_terms[],
00122 Real *square_terms[],
00123
int *n_cross_terms[],
00124
int **cross_parms[],
00125 Real **cross_terms[] );
00126
00127
public void reset_lsq_terms(
00128
int n_parameters,
00129 Real *constant_term,
00130 Real linear_terms[],
00131 Real square_terms[],
00132
int n_cross_terms[],
00133
int *cross_parms[],
00134 Real *cross_terms[] );
00135
00136
public void add_to_lsq_terms(
00137
int n_parameters,
00138 Real *constant_term,
00139 Real linear_terms[],
00140 Real square_terms[],
00141
int n_cross_terms[],
00142
int *cross_parms[],
00143 Real *cross_terms[],
00144
int n_in_list,
00145
int list[],
00146 Real weights[],
00147 Real constant,
00148
int alloc_increment );
00149
00150
public void realloc_lsq_terms(
00151
int n_parameters,
00152
int n_cross_terms[],
00153
int *cross_parms[],
00154 Real *cross_terms[] );
00155
00156
public void delete_lsq_terms(
00157
int n_parameters,
00158 Real linear_terms[],
00159 Real square_terms[],
00160
int n_cross_terms[],
00161
int *cross_parms[],
00162 Real *cross_terms[] );
00163
00164
public Real
minimize_lsq_float(
00165
int n_parameters,
00166 Real constant_term,
00167
float linear_terms[],
00168
float square_terms[],
00169
int n_cross_terms[],
00170
int *cross_parms[],
00171
float *cross_terms[],
00172 Real max_step_size,
00173
int n_iters,
00174 Real node_values[] );
00175
00176
public void initialize_lsq_terms_float(
00177
int n_parameters,
00178 Real *constant_term,
00179
float *linear_terms[],
00180
float *square_terms[],
00181
int *n_cross_terms[],
00182
int **cross_parms[],
00183
float **cross_terms[] );
00184
00185
public void reset_lsq_terms_float(
00186
int n_parameters,
00187 Real *constant_term,
00188
float linear_terms[],
00189
float square_terms[],
00190
int n_cross_terms[],
00191
int *cross_parms[],
00192
float *cross_terms[] );
00193
00194
public void add_to_lsq_terms_float(
00195
int n_parameters,
00196 Real *constant_term,
00197
float linear_terms[],
00198
float square_terms[],
00199
int n_cross_terms[],
00200
int *cross_parms[],
00201
float *cross_terms[],
00202
int n_in_list,
00203
int list[],
00204 Real weights[],
00205 Real constant,
00206
int alloc_increment );
00207
00208
public void realloc_lsq_terms_float(
00209
int n_parameters,
00210
int n_cross_terms[],
00211
int *cross_parms[],
00212
float *cross_terms[] );
00213
00214
public void delete_lsq_terms_float(
00215
int n_parameters,
00216
float linear_terms[],
00217
float square_terms[],
00218
int n_cross_terms[],
00219
int *cross_parms[],
00220
float *cross_terms[] );
00221
00222
public void create_lsq_hypersurface_float(
00223 STRING filename,
00224
int parm1,
00225
int parm2,
00226
int x_size,
00227
int y_size,
00228 Real x_min,
00229 Real x_max,
00230 Real y_min,
00231 Real y_max,
00232 Real scale,
00233
int n_parameters,
00234 Real constant,
00235
float linear_terms[],
00236
float square_terms[],
00237
int n_cross_terms[],
00238
int *cross_parms[],
00239
float *cross_terms[],
00240 Real parameters[] );
00241
00242
public BOOLEAN
numerically_close(
00243 Real n1,
00244 Real n2,
00245 Real threshold_ratio );
00246
00247
public Real
get_good_round_value(
00248 Real value );
00249
00250
public Real
round_to_nearest_multiple(
00251 Real value,
00252 Real multiple_value );
00253
00254
public int solve_quadratic(
00255 Real a,
00256 Real b,
00257 Real c,
00258 Real *solution1,
00259 Real *solution2 );
00260
00261
public int solve_cubic(
00262 Real a,
00263 Real b,
00264 Real c,
00265 Real d,
00266 Real s[ 3 ] );
00267
00268
public Real
evaluate_polynomial(
00269
int n,
00270 Real poly[],
00271 Real u );
00272
00273
public int get_roots_of_polynomial(
00274
int n,
00275 Real poly[],
00276 Real u_min,
00277 Real u_max,
00278 Real accuracy,
00279 Real roots[] );
00280
00281
public BOOLEAN
get_range_of_polynomial(
00282
int n,
00283 Real poly[],
00284 Real u_min,
00285 Real u_max,
00286 Real min_val,
00287 Real max_val,
00288 Real accuracy,
00289 Real *u_min_range,
00290 Real *u_max_range );
00291
00292
public void initialize_quadratic(
00293
int n_parameters,
00294 Real *constant_term,
00295
float *linear_terms[],
00296
float *square_terms[],
00297
int *n_cross_terms[],
00298
int **cross_parms[],
00299
float **cross_terms[] );
00300
00301
public void zero_quadratic(
00302
int n_parameters,
00303 Real *constant_term,
00304
float linear_terms[],
00305
float square_terms[],
00306
int n_cross_terms[],
00307
int *cross_parms[],
00308
float *cross_terms[] );
00309
00310
public void add_to_quadratic_cross_term(
00311
int *n_cross_terms[],
00312
int **cross_parms[],
00313
float **cross_terms[],
00314
int parm1,
00315
int parm2,
00316 Real value,
00317
int alloc_increment );
00318
00319
public void realloc_quadratic_cross_terms(
00320
int n_parameters,
00321
int n_cross_terms[],
00322
int **cross_parms[],
00323
float **cross_terms[] );
00324
00325
public void delete_quadratic(
00326
int n_parameters,
00327
float linear_terms[],
00328
float square_terms[],
00329
int n_cross_terms[],
00330
int *cross_parms[],
00331
float *cross_terms[] );
00332
00333
public Real
evaluate_quadratic(
00334
int n_parameters,
00335
float parameters[],
00336 Real constant,
00337
float linear[],
00338
float square[],
00339
int n_cross_terms[],
00340
int *cross_parms[],
00341
float *cross_terms[] );
00342
00343
public void evaluate_quadratic_deriv(
00344
int n_parameters,
00345
float parameters[],
00346
float linear[],
00347
float square[],
00348
int n_cross_terms[],
00349
int *cross_parms[],
00350
float *cross_terms[],
00351
float deriv[] );
00352
00353
public void initialize_quadratic_real(
00354
int n_parameters,
00355 Real *constant_term,
00356 Real *linear_terms[],
00357 Real *square_terms[],
00358
int *n_cross_terms[],
00359
int **cross_parms[],
00360 Real **cross_terms[] );
00361
00362
public void zero_quadratic_real(
00363
int n_parameters,
00364 Real *constant_term,
00365 Real linear_terms[],
00366 Real square_terms[],
00367
int n_cross_terms[],
00368
int *cross_parms[],
00369 Real *cross_terms[] );
00370
00371
public void add_to_quadratic_cross_term_real(
00372
int *n_cross_terms[],
00373
int **cross_parms[],
00374 Real **cross_terms[],
00375
int parm1,
00376
int parm2,
00377 Real value,
00378
int alloc_increment );
00379
00380
public void realloc_quadratic_cross_terms_real(
00381
int n_parameters,
00382
int n_cross_terms[],
00383
int **cross_parms[],
00384 Real **cross_terms[] );
00385
00386
public void delete_quadratic_real(
00387
int n_parameters,
00388 Real linear_terms[],
00389 Real square_terms[],
00390
int n_cross_terms[],
00391
int *cross_parms[],
00392 Real *cross_terms[] );
00393
00394
public Real
evaluate_quadratic_real(
00395
int n_parameters,
00396 Real parameters[],
00397 Real constant,
00398 Real linear[],
00399 Real square[],
00400
int n_cross_terms[],
00401
int *cross_parms[],
00402 Real *cross_terms[] );
00403
00404
public void evaluate_quadratic_deriv_real(
00405
int n_parameters,
00406 Real parameters[],
00407 Real linear[],
00408 Real square[],
00409
int n_cross_terms[],
00410
int *cross_parms[],
00411 Real *cross_terms[],
00412 Real deriv[] );
00413
00414
public void compute_statistics(
00415
int n,
00416 Real samples[],
00417 Real *min_value,
00418 Real *max_value,
00419 Real *mean_value,
00420 Real *std_dev,
00421 Real *median );
00422
00423
public void initialize_statistics(
00424
statistics_struct *stats,
00425 Real median_lower_bound,
00426 Real median_upper_bound );
00427
00428
public void add_sample_to_statistics(
00429
statistics_struct *stats,
00430 Real sample );
00431
00432
public void restart_statistics_with_narrower_median_range(
00433
statistics_struct *stats );
00434
00435
public void get_statistics(
00436
statistics_struct *stats,
00437
int *n_samples,
00438 Real *mean,
00439 Real *median,
00440 Real *median_error,
00441 Real *min_value,
00442 Real *max_value,
00443 Real *std_deviation );
00444
00445
public void terminate_statistics(
00446
statistics_struct *stats );
00447
00448
public void compute_mean_and_variance(
00449
int n,
00450 Real samples[],
00451 Real *mean,
00452 Real *variance );
00453
00454
public Real
compute_two_means_t_statistic(
00455
int n1,
00456 Real samples1[],
00457
int n2,
00458 Real samples2[] );
00459
00460
public void initialize_cumulative_t_stat(
00461
t_stat_struct *stat,
00462
int degrees_freedom );
00463
00464
public void delete_cumulative_t_stat(
00465
t_stat_struct *stat );
00466
00467
public Real
get_cumulative_t_stat(
00468
t_stat_struct *stat,
00469 Real t );
00470
#endif