[gnumeric] Compilation: don't compile tools separately.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Compilation: don't compile tools separately.
- Date: Wed, 16 May 2018 00:18:25 +0000 (UTC)
commit 04da87b5dbd225c497de5d1595948cbe2aec6148
Author: Morten Welinder <terra gnome org>
Date: Tue May 15 19:48:01 2018 -0400
Compilation: don't compile tools separately.
This makes more code available to introspection and allows more parallel
compilation.
configure.ac | 1 -
plugins/fn-erlang/functions.c | 12 ++--
plugins/fn-financial/functions.c | 34 ++++++------
src/Makefile.am | 76 +++++++++++++++++++++-----
src/dialogs/dialog-goal-seek.c | 12 ++--
src/tools/.gitignore | 3 +-
src/tools/Makefile.am | 74 -------------------------
src/tools/analysis-tools.c | 5 +-
src/tools/data-shuffling.c | 3 +
src/tools/goal-seek.c | 112 +++++++++++++++++++++++++-------------
src/tools/goal-seek.h | 30 +++++-----
src/tools/tabulate.c | 7 +++
12 files changed, 193 insertions(+), 176 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index f92186b..546b57d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1191,7 +1191,6 @@ icons/256x256/Makefile
icons/256x256/apps/Makefile
introspection/Makefile
src/Makefile
-src/tools/Makefile
doc/Makefile
plugins/Makefile
plugins/fn-christian-date/Makefile
diff --git a/plugins/fn-erlang/functions.c b/plugins/fn-erlang/functions.c
index 3b5411c..2d06d68 100644
--- a/plugins/fn-erlang/functions.c
+++ b/plugins/fn-erlang/functions.c
@@ -140,7 +140,7 @@ typedef struct {
gnm_float traffic, circuits;
} gnumeric_offtraf_t;
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_offtraf_f (gnm_float off_traffic, gnm_float *y, void *user_data)
{
gnumeric_offtraf_t *pudata = user_data;
@@ -157,8 +157,8 @@ gnumeric_offtraf (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
gnm_float traffic = value_get_as_float (argv[0]);
gnm_float circuits = value_get_as_float (argv[1]);
gnm_float traffic0;
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
gnumeric_offtraf_t udata;
if (circuits < 1 || traffic < 0)
@@ -237,7 +237,7 @@ typedef struct {
gnm_float circuits, des_gos;
} gnumeric_offcap_t;
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_offcap_f (gnm_float traffic, gnm_float *y, void *user_data)
{
gnumeric_offcap_t *pudata = user_data;
@@ -254,8 +254,8 @@ gnumeric_offcap (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
gnm_float circuits = value_get_as_float (argv[0]);
gnm_float des_gos = value_get_as_float (argv[1]);
gnm_float traffic0;
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
gnumeric_offcap_t udata;
if (des_gos >= 1 || des_gos <= 0)
diff --git a/plugins/fn-financial/functions.c b/plugins/fn-financial/functions.c
index c3c7428..545e2a8 100644
--- a/plugins/fn-financial/functions.c
+++ b/plugins/fn-financial/functions.c
@@ -1209,7 +1209,7 @@ typedef struct {
gnm_float nper, pv, fv, pmt;
} gnumeric_rate_t;
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_rate_f (gnm_float rate, gnm_float *y, void *user_data)
{
if (rate > -1.0 && rate != 0) {
@@ -1225,7 +1225,7 @@ gnumeric_rate_f (gnm_float rate, gnm_float *y, void *user_data)
}
/* The derivative of the above function with respect to rate. */
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_rate_df (gnm_float rate, gnm_float *y, void *user_data)
{
if (rate > -1.0 && rate != 0.0) {
@@ -1243,8 +1243,8 @@ gnumeric_rate_df (gnm_float rate, gnm_float *y, void *user_data)
static GnmValue *
gnumeric_rate (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
{
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
gnumeric_rate_t udata;
gnm_float rate0;
@@ -1353,7 +1353,7 @@ typedef struct {
gnm_float *values;
} gnumeric_irr_t;
-static GoalSeekStatus
+static GnmGoalSeekStatus
irr_npv (gnm_float rate, gnm_float *y, void *user_data)
{
const gnumeric_irr_t *p = user_data;
@@ -1373,7 +1373,7 @@ irr_npv (gnm_float rate, gnm_float *y, void *user_data)
return gnm_finite (sum) ? GOAL_SEEK_OK : GOAL_SEEK_ERROR;
}
-static GoalSeekStatus
+static GnmGoalSeekStatus
irr_npv_df (gnm_float rate, gnm_float *y, void *user_data)
{
const gnumeric_irr_t *p = user_data;
@@ -1396,8 +1396,8 @@ irr_npv_df (gnm_float rate, gnm_float *y, void *user_data)
static GnmValue *
gnumeric_irr (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
{
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
GnmValue *result = NULL;
gnumeric_irr_t p;
gnm_float rate0;
@@ -1611,7 +1611,7 @@ typedef struct {
const gnm_float *dates;
} gnumeric_xirr_t;
-static GoalSeekStatus
+static GnmGoalSeekStatus
xirr_npv (gnm_float rate, gnm_float *y, void *user_data)
{
const gnumeric_xirr_t *p = user_data;
@@ -1636,8 +1636,8 @@ gnm_range_xirr (gnm_float const *xs, const gnm_float *ys,
{
gnumeric_xirr_t p;
gnm_float rate0 = *(gnm_float *)user;
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
p.dates = ys;
p.values = xs;
@@ -2323,7 +2323,7 @@ typedef struct {
GoCouponConvention conv;
} gnumeric_yield_t;
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_yield_f (gnm_float yield, gnm_float *y, void *user_data)
{
gnumeric_yield_t *data = user_data;
@@ -2380,8 +2380,8 @@ gnumeric_yield (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
return value_new_float (num / den * coeff);
} else {
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
gnm_float yield0 = 0.1;
goal_seek_initialize (&data);
@@ -2668,7 +2668,7 @@ struct gnumeric_oddyield_f {
GoCouponConvention conv;
};
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_oddyield_f (gnm_float yield, gnm_float *y, void *user_data)
{
struct gnumeric_oddyield_f *data = user_data;
@@ -2685,8 +2685,8 @@ static GnmValue *
gnumeric_oddfyield (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
{
struct gnumeric_oddyield_f udata;
- GoalSeekData data;
- GoalSeekStatus status;
+ GnmGoalSeekData data;
+ GnmGoalSeekStatus status;
gnm_float yield0 = 0.1;
udata.rate = value_get_as_float (argv[4]);
diff --git a/src/Makefile.am b/src/Makefile.am
index d66a3cd..84c1f17 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,8 +14,6 @@ INTROSPECTION_COMPILER_ARGS = \
--includedir=. \
--includedir="${INTROSPECTION_GIRDIR}"
-SUBDIRS = tools
-
EXTRA_DIST =
lib_LTLIBRARIES = libspreadsheet.la
@@ -259,6 +257,63 @@ widgets_headers = \
widgets/gnumeric-lazy-list.h \
widgets/gnumeric-text-view.h
+tools_sources = \
+ tools/analysis-anova.c \
+ tools/analysis-auto-expression.c \
+ tools/analysis-chi-squared.c \
+ tools/analysis-exp-smoothing.c \
+ tools/analysis-frequency.c \
+ tools/analysis-histogram.c \
+ tools/analysis-kaplan-meier.c \
+ tools/analysis-normality.c \
+ tools/analysis-one-mean-test.c \
+ tools/analysis-principal-components.c \
+ tools/analysis-sign-test.c \
+ tools/analysis-signed-rank-test.c \
+ tools/analysis-tools.c \
+ tools/analysis-wilcoxon-mann-whitney.c \
+ tools/auto-correct.c \
+ tools/dao.c \
+ tools/data-shuffling.c \
+ tools/fill-series.c \
+ tools/filter.c \
+ tools/gnm-solver.c \
+ tools/goal-seek.c \
+ tools/random-generator-cor.c \
+ tools/random-generator.c \
+ tools/scenarios.c \
+ tools/simulation.c \
+ tools/tabulate.c
+
+tools_headers = \
+ tools/analysis-anova.h \
+ tools/analysis-auto-expression.h \
+ tools/analysis-chi-squared.h \
+ tools/analysis-exp-smoothing.h \
+ tools/analysis-frequency.h \
+ tools/analysis-histogram.h \
+ tools/analysis-kaplan-meier.h \
+ tools/analysis-normality.h \
+ tools/analysis-one-mean-test.h \
+ tools/analysis-principal-components.h \
+ tools/analysis-sign-test.h \
+ tools/analysis-signed-rank-test.h \
+ tools/analysis-tools.h \
+ tools/analysis-wilcoxon-mann-whitney.h \
+ tools/auto-correct.h \
+ tools/dao.h \
+ tools/data-shuffling.h \
+ tools/fill-series.h \
+ tools/filter.h \
+ tools/gnm-solver.h \
+ tools/goal-seek.h \
+ tools/random-generator-cor.h \
+ tools/random-generator.h \
+ tools/scenarios.h \
+ tools/simulation.h \
+ tools/tabulate.h \
+ tools/tools.h
+
# Another hint, see bugs #172211 and #172212:
non-intermediate: gnm-marshalers.c gnmresources.c
@@ -279,7 +334,6 @@ CLEANFILES = $(BUILT_SOURCES) \
libspreadsheet_la_CPPFLAGS = $(AM_CPPFLAGS) -DGNUMERIC_INTERNAL
libspreadsheet_la_LDFLAGS = -release $(VERSION)
libspreadsheet_la_LIBADD = \
- $(gnumeric_app_libs) \
$(GNUMERIC_LIBS) \
$(INTLLIBS)
@@ -427,7 +481,8 @@ libspreadsheet_la_SOURCES = \
workbook.c \
xml-sax-read.c \
xml-sax-write.c \
- $(dialogs_sources)
+ $(dialogs_sources) \
+ $(tools_sources)
if WITH_GTK
libspreadsheet_la_SOURCES += $(widgets_sources)
@@ -575,6 +630,7 @@ libspreadsheet_include_HEADERS = \
xml-io-version.h \
xml-sax.h \
$(dialogs_headers) \
+ $(tools_headers) \
$(widgets_headers)
gnumeric_SOURCES = \
@@ -650,9 +706,6 @@ stamp-local.def: $(libspreadsheet_include_HEADERS) Makefile $(top_srcdir)/tools/
endif
-gnumeric_app_libs = \
- tools/libtools.la
-
# Rules for the marshalers code:
GENMARSHAL_COMMAND = $(GLIB_GENMARSHAL) --prefix=gnm_
@@ -761,14 +814,7 @@ Gnm_@GNUMERIC_API_VER_@_gir_CFLAGS = $(AM_CPPFLAGS)
Gnm_@GNUMERIC_API_VER_@_gir_LIBS = libspreadsheet.la
Gnm_@GNUMERIC_API_VER_@_gir_FILES = \
$(libspreadsheet_la_SOURCES) \
- $(libspreadsheet_include_HEADERS) \
- tools/dao.c \
- tools/dao.h \
- tools/scenarios.c \
- tools/scenarios.h \
- tools/gnm-solver.c \
- tools/gnm-solver.h \
- tools/tools.h
+ $(libspreadsheet_include_HEADERS)
girdir = $(GIRDIR)
diff --git a/src/dialogs/dialog-goal-seek.c b/src/dialogs/dialog-goal-seek.c
index dd846d3..43b4c2c 100644
--- a/src/dialogs/dialog-goal-seek.c
+++ b/src/dialogs/dialog-goal-seek.c
@@ -95,7 +95,7 @@ typedef struct {
gboolean update_ui;
} GoalEvalData;
-static GoalSeekStatus
+static GnmGoalSeekStatus
goal_seek_eval (gnm_float x, gnm_float *y, void *vevaldata)
{
GoalEvalData const *evaldata = vevaldata;
@@ -119,12 +119,12 @@ goal_seek_eval (gnm_float x, gnm_float *y, void *vevaldata)
}
-static GoalSeekStatus
+static GnmGoalSeekStatus
gnumeric_goal_seek (GoalSeekState *state)
{
- GoalSeekData seekdata;
+ GnmGoalSeekData seekdata;
GoalEvalData evaldata;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
gboolean hadold;
gnm_float oldx;
@@ -312,7 +312,7 @@ cb_dialog_apply_clicked (G_GNUC_UNUSED GtkWidget *button,
GoalSeekState *state)
{
char *status_str;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
GnmValue *target;
GnmRangeRef const *r;
GOFormat const *format;
@@ -604,7 +604,7 @@ dialog_goal_seek_test (Sheet *sheet, const GnmRange *range)
GoalSeekState state;
GnmCell *cell;
int r, c;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
g_return_if_fail (range->start.row == range->end.row);
g_return_if_fail (range->start.col + 4 == range->end.col);
diff --git a/src/tools/.gitignore b/src/tools/.gitignore
index 282522d..32d436d 100644
--- a/src/tools/.gitignore
+++ b/src/tools/.gitignore
@@ -1,2 +1 @@
-Makefile
-Makefile.in
+# Nothing, right now
diff --git a/src/tools/analysis-tools.c b/src/tools/analysis-tools.c
index 661f562..4e2a6f4 100644
--- a/src/tools/analysis-tools.c
+++ b/src/tools/analysis-tools.c
@@ -356,11 +356,10 @@ cb_cut_into_rows (gpointer data, gpointer user_data)
}
-/*
+/**
* prepare_input_range:
- * @input_range:
+ * @input_range: (inout) (element-type GnmRange) (transfer full):
* @group_by:
- *
*/
void
prepare_input_range (GSList **input_range, group_by_t group_by)
diff --git a/src/tools/data-shuffling.c b/src/tools/data-shuffling.c
index 113c9e2..476c261 100644
--- a/src/tools/data-shuffling.c
+++ b/src/tools/data-shuffling.c
@@ -278,6 +278,9 @@ run_shuffling_tool (data_shuffling_t *st)
}
}
+/**
+ * data_shuffling: (skip)
+ */
data_shuffling_t *
data_shuffling (WorkbookControl *wbc,
data_analysis_output_t *dao,
diff --git a/src/tools/goal-seek.c b/src/tools/goal-seek.c
index c626ba4..eb06c5d 100644
--- a/src/tools/goal-seek.c
+++ b/src/tools/goal-seek.c
@@ -23,7 +23,7 @@
static gboolean
-update_data (gnm_float x, gnm_float y, GoalSeekData *data)
+update_data (gnm_float x, gnm_float y, GnmGoalSeekData *data)
{
if (!gnm_finite (y))
return FALSE;
@@ -89,12 +89,12 @@ update_data (gnm_float x, gnm_float y, GoalSeekData *data)
* Calculate a reasonable approximation to the derivative of a function
* in a single point.
*/
-static GoalSeekStatus
-fake_df (GoalSeekFunction f, gnm_float x, gnm_float *dfx, gnm_float xstep,
- GoalSeekData *data, void *user_data)
+static GnmGoalSeekStatus
+fake_df (GnmGoalSeekFunction f, gnm_float x, gnm_float *dfx, gnm_float xstep,
+ GnmGoalSeekData *data, void *user_data)
{
gnm_float xl, xr, yl, yr;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
#ifdef DEBUG_GOAL_SEEK
g_print ("fake_df (x=%.20" GNM_FORMAT_g ", xstep=%.20" GNM_FORMAT_g ")\n",
@@ -148,7 +148,7 @@ fake_df (GoalSeekFunction f, gnm_float x, gnm_float *dfx, gnm_float xstep,
}
void
-goal_seek_initialize (GoalSeekData *data)
+goal_seek_initialize (GnmGoalSeekData *data)
{
data->havexpos = data->havexneg = data->have_root = FALSE;
data->xpos = data->xneg = data->root = gnm_nan;
@@ -159,14 +159,22 @@ goal_seek_initialize (GoalSeekData *data)
}
-/*
+/**
+ * goal_seek_point:
+ * @f: (scope call): object function
+ * @data: #GnmGoalSeekData state
+ * @user_data: user data for @f
+ * @x0: root guess
+ *
* Seek a goal using a single point.
+ *
+ * Returns:
*/
-GoalSeekStatus
-goal_seek_point (GoalSeekFunction f, GoalSeekData *data,
+GnmGoalSeekStatus
+goal_seek_point (GnmGoalSeekFunction f, GnmGoalSeekData *data,
void *user_data, gnm_float x0)
{
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
gnm_float y0;
if (data->have_root)
@@ -190,9 +198,9 @@ goal_seek_point (GoalSeekFunction f, GoalSeekData *data,
}
-static GoalSeekStatus
-goal_seek_newton_polish (GoalSeekFunction f, GoalSeekFunction df,
- GoalSeekData *data, void *user_data,
+static GnmGoalSeekStatus
+goal_seek_newton_polish (GnmGoalSeekFunction f, GnmGoalSeekFunction df,
+ GnmGoalSeekData *data, void *user_data,
gnm_float x0, gnm_float y0)
{
int iterations;
@@ -208,7 +216,7 @@ goal_seek_newton_polish (GoalSeekFunction f, GoalSeekFunction df,
if (try_square) {
gnm_float x1 = x0 * gnm_abs (x0);
gnm_float y1, r;
- GoalSeekStatus status = f (x1, &y1, user_data);
+ GnmGoalSeekStatus status = f (x1, &y1, user_data);
if (status != GOAL_SEEK_OK)
goto nomore_square;
@@ -235,7 +243,7 @@ goal_seek_newton_polish (GoalSeekFunction f, GoalSeekFunction df,
if (try_newton) {
gnm_float df0, r, x1, y1;
- GoalSeekStatus status = df
+ GnmGoalSeekStatus status = df
? df (x0, &df0, user_data)
: fake_df (f, x0, &df0, gnm_abs (x0) / 1e6, data, user_data);
if (status != GOAL_SEEK_OK || df0 == 0)
@@ -285,11 +293,18 @@ goal_seek_newton_polish (GoalSeekFunction f, GoalSeekFunction df,
}
-/*
+/**
+ * goal_seek_newton:
+ * @f: (scope call): object function
+ * @df: (scope call) (nullable): object function derivative
+ * @data: #GnmGoalSeekData state
+ * @user_data: user data for @f and @df
+ * @x0: root guess
+ *
* Seek a goal (root) using Newton's iterative method.
*
* The supplied function must (should) be continously differentiable in
- * the supplied interval. If NULL is used for `df', this function will
+ * the supplied interval. If @df is %NULL, this function will
* estimate the derivative.
*
* This method will find a root rapidly provided the initial guess, x0,
@@ -297,9 +312,9 @@ goal_seek_newton_polish (GoalSeekFunction f, GoalSeekFunction df,
* (asympotically) goes like i^2 unless the root is a multiple root in
* which case it is only like c*i.)
*/
-GoalSeekStatus
-goal_seek_newton (GoalSeekFunction f, GoalSeekFunction df,
- GoalSeekData *data, void *user_data, gnm_float x0)
+GnmGoalSeekStatus
+goal_seek_newton (GnmGoalSeekFunction f, GnmGoalSeekFunction df,
+ GnmGoalSeekData *data, void *user_data, gnm_float x0)
{
int iterations;
gnm_float precision = data->precision / 2;
@@ -315,7 +330,7 @@ goal_seek_newton (GoalSeekFunction f, GoalSeekFunction df,
for (iterations = 0; iterations < 100; iterations++) {
gnm_float x1, y0, df0, stepsize;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
gboolean flat;
#ifdef DEBUG_GOAL_SEEK
@@ -416,7 +431,12 @@ goal_seek_newton (GoalSeekFunction f, GoalSeekFunction df,
return GOAL_SEEK_ERROR;
}
-/*
+/**
+ * goal_seek_bisection:
+ * @f: (scope call): object function
+ * @data: #GnmGoalSeekData state.
+ * @user_data: user data for @f.
+ *
* Seek a goal (root) using bisection methods.
*
* The supplied function must (should) be continous over the interval.
@@ -431,9 +451,9 @@ goal_seek_newton (GoalSeekFunction f, GoalSeekFunction df,
* nowhere), and Ridder's Method (usually fast, harder to fool than
* the secant method).
*/
-
-GoalSeekStatus
-goal_seek_bisection (GoalSeekFunction f, GoalSeekData *data, void *user_data)
+GnmGoalSeekStatus
+goal_seek_bisection (GnmGoalSeekFunction f, GnmGoalSeekData *data,
+ void *user_data)
{
int iterations;
gnm_float stepsize;
@@ -455,7 +475,7 @@ goal_seek_bisection (GoalSeekFunction f, GoalSeekData *data, void *user_data)
/* log_2 (10) = 3.3219 < 4. */
for (iterations = 0; iterations < 100 + GNM_DIG * 4; iterations++) {
gnm_float xmid, ymid;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
enum { M_SECANT, M_RIDDER, M_NEWTON, M_MIDPOINT } method;
method = (iterations % 4 == 0)
@@ -594,9 +614,18 @@ goal_seek_bisection (GoalSeekFunction f, GoalSeekData *data, void *user_data)
#undef SECANT_P
#undef RIDDER_P
-GoalSeekStatus
-goal_seek_trawl_uniformly (GoalSeekFunction f,
- GoalSeekData *data, void *user_data,
+/**
+ * goal_seek_trawl_uniformly:
+ * @f: (scope call): object function
+ * @data: #GnmGoalSeekData state
+ * @user_data: user data for @f
+ * @xmin: lower search bound
+ * @xmax: upper search bound
+ * @points: number of points to try.
+ */
+GnmGoalSeekStatus
+goal_seek_trawl_uniformly (GnmGoalSeekFunction f,
+ GnmGoalSeekData *data, void *user_data,
gnm_float xmin, gnm_float xmax,
int points)
{
@@ -614,7 +643,7 @@ goal_seek_trawl_uniformly (GoalSeekFunction f,
for (i = 0; i < points; i++) {
gnm_float x, y;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
if (data->havexpos && data->havexneg)
break;
@@ -639,9 +668,18 @@ goal_seek_trawl_uniformly (GoalSeekFunction f,
return GOAL_SEEK_ERROR;
}
-GoalSeekStatus
-goal_seek_trawl_normally (GoalSeekFunction f,
- GoalSeekData *data, void *user_data,
+/**
+ * goal_seek_trawl_normally:
+ * @f: (scope call): object function
+ * @data: #GnmGoalSeekData state
+ * @user_data: user data for @f
+ * @mu: search mean
+ * @sigma: search standard deviation
+ * @points: number of points to try.
+ */
+GnmGoalSeekStatus
+goal_seek_trawl_normally (GnmGoalSeekFunction f,
+ GnmGoalSeekData *data, void *user_data,
gnm_float mu, gnm_float sigma,
int points)
{
@@ -659,7 +697,7 @@ goal_seek_trawl_normally (GoalSeekFunction f,
for (i = 0; i < points; i++) {
gnm_float x, y;
- GoalSeekStatus status;
+ GnmGoalSeekStatus status;
if (data->havexpos && data->havexneg)
break;
@@ -688,14 +726,14 @@ goal_seek_trawl_normally (GoalSeekFunction f,
}
#ifdef STANDALONE
-static GoalSeekStatus
+static GnmGoalSeekStatus
f (gnm_float x, gnm_float *y, void *user_data)
{
*y = x * x - 2;
return GOAL_SEEK_OK;
}
-static GoalSeekStatus
+static GnmGoalSeekStatus
df (gnm_float x, gnm_float *y, void *user_data)
{
*y = 2 * x;
@@ -706,7 +744,7 @@ df (gnm_float x, gnm_float *y, void *user_data)
int
main ()
{
- GoalSeekData data;
+ GnmGoalSeekData data;
goal_seek_initialize (&data);
data.xmin = -100;
diff --git a/src/tools/goal-seek.h b/src/tools/goal-seek.h
index 48fe98c..9c0ca8f 100644
--- a/src/tools/goal-seek.h
+++ b/src/tools/goal-seek.h
@@ -19,37 +19,37 @@ typedef struct {
gboolean have_root; /* Do we have a valid root? */
gnm_float root; /* Value for which f(root) == 0. */
-} GoalSeekData;
+} GnmGoalSeekData;
-typedef enum { GOAL_SEEK_OK, GOAL_SEEK_ERROR } GoalSeekStatus;
+typedef enum { GOAL_SEEK_OK, GOAL_SEEK_ERROR } GnmGoalSeekStatus;
-typedef GoalSeekStatus (*GoalSeekFunction) (gnm_float x, gnm_float *y, void *user_data);
+typedef GnmGoalSeekStatus (*GnmGoalSeekFunction) (gnm_float x, gnm_float *y, void *user_data);
-void goal_seek_initialize (GoalSeekData *data);
+void goal_seek_initialize (GnmGoalSeekData *data);
-GoalSeekStatus goal_seek_point (GoalSeekFunction f,
- GoalSeekData *data,
+GnmGoalSeekStatus goal_seek_point (GnmGoalSeekFunction f,
+ GnmGoalSeekData *data,
void *user_data,
gnm_float x0);
-GoalSeekStatus goal_seek_newton (GoalSeekFunction f,
- GoalSeekFunction df,
- GoalSeekData *data,
+GnmGoalSeekStatus goal_seek_newton (GnmGoalSeekFunction f,
+ GnmGoalSeekFunction df,
+ GnmGoalSeekData *data,
void *user_data,
gnm_float x0);
-GoalSeekStatus goal_seek_bisection (GoalSeekFunction f,
- GoalSeekData *data,
+GnmGoalSeekStatus goal_seek_bisection (GnmGoalSeekFunction f,
+ GnmGoalSeekData *data,
void *user_data);
-GoalSeekStatus goal_seek_trawl_uniformly (GoalSeekFunction f,
- GoalSeekData *data,
+GnmGoalSeekStatus goal_seek_trawl_uniformly (GnmGoalSeekFunction f,
+ GnmGoalSeekData *data,
void *user_data,
gnm_float xmin, gnm_float xmax,
int points);
-GoalSeekStatus goal_seek_trawl_normally (GoalSeekFunction f,
- GoalSeekData *data,
+GnmGoalSeekStatus goal_seek_trawl_normally (GnmGoalSeekFunction f,
+ GnmGoalSeekData *data,
void *user_data,
gnm_float mu, gnm_float sigma,
int points);
diff --git a/src/tools/tabulate.c b/src/tools/tabulate.c
index 4084dce..819c73d 100644
--- a/src/tools/tabulate.c
+++ b/src/tools/tabulate.c
@@ -74,6 +74,13 @@ my_get_format (GnmCell const *cell)
return format;
}
+/**
+ * do_tabulation:
+ * @wbc: control
+ * @data:
+ *
+ * Returns: (transfer full) (element-type int):
+ */
GSList *
do_tabulation (WorkbookControl *wbc,
GnmTabulateInfo *data)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]