Compilation: don't compile tools separately.
[gnumeric.git] / src / tools / goal-seek.h
blob9c0ca8f2fa6ccf56a144ae4dabc35819e7b1d861
1 #ifndef GNUMERIC_GOAL_SEEK_H
2 #define GNUMERIC_GOAL_SEEK_H
4 #include "numbers.h"
5 #include <glib.h>
7 typedef struct {
8 gnm_float xmin; /* Minimum allowed value for x. */
9 gnm_float xmax; /* Maximum allowed value for x. */
10 gnm_float precision; /* Desired relative precision. */
12 gboolean havexpos; /* Do we have a valid xpos? */
13 gnm_float xpos; /* Value for which f(xpos) > 0. */
14 gnm_float ypos; /* f(xpos). */
16 gboolean havexneg; /* Do we have a valid xneg? */
17 gnm_float xneg; /* Value for which f(xneg) < 0. */
18 gnm_float yneg; /* f(xneg). */
20 gboolean have_root; /* Do we have a valid root? */
21 gnm_float root; /* Value for which f(root) == 0. */
22 } GnmGoalSeekData;
24 typedef enum { GOAL_SEEK_OK, GOAL_SEEK_ERROR } GnmGoalSeekStatus;
26 typedef GnmGoalSeekStatus (*GnmGoalSeekFunction) (gnm_float x, gnm_float *y, void *user_data);
28 void goal_seek_initialize (GnmGoalSeekData *data);
30 GnmGoalSeekStatus goal_seek_point (GnmGoalSeekFunction f,
31 GnmGoalSeekData *data,
32 void *user_data,
33 gnm_float x0);
35 GnmGoalSeekStatus goal_seek_newton (GnmGoalSeekFunction f,
36 GnmGoalSeekFunction df,
37 GnmGoalSeekData *data,
38 void *user_data,
39 gnm_float x0);
41 GnmGoalSeekStatus goal_seek_bisection (GnmGoalSeekFunction f,
42 GnmGoalSeekData *data,
43 void *user_data);
45 GnmGoalSeekStatus goal_seek_trawl_uniformly (GnmGoalSeekFunction f,
46 GnmGoalSeekData *data,
47 void *user_data,
48 gnm_float xmin, gnm_float xmax,
49 int points);
51 GnmGoalSeekStatus goal_seek_trawl_normally (GnmGoalSeekFunction f,
52 GnmGoalSeekData *data,
53 void *user_data,
54 gnm_float mu, gnm_float sigma,
55 int points);
57 #endif