[Key: 
--Addition or improvement
**Change that could require recoding existing code.
!!Big.
]
	May 2007
--apop_query_to_mixed_data
**apop_produce_dummies now makes dummy variables from both data and
text. This means that there's another parameter you need to set to 'd'
or 't' to indicate what you want dummified.
!!**Merged the apop_params and apop_model structures, leaving everything
in just one struct. That's about all the merging left.
--apop_text_alloc and apop_text_add to make text manipulation a little
easier.
--apop_matrix_apply_all and apop_matrix_map_all operate on all items in
a matrix.
**small tweak to apop_vector_normalize interface.
--apop_matrix_inverse and apop_matrix_determinant, because the
apop_det_and_inv interface is sort of ugly.
--APOP_SUBMATRIX macro
--MLEs put the expected score in the ->more element of the returned
apop_model. If people find this useful, we can maybe put a
proper expected_score element in the model.
--More consts in function headers. You can decide whether this
is actually useful.

	0.19 April 2007
!!**Eliminated the apop_estimate and apop_ep structures, replacing them
with the apop_params structure. The apop_params + apop_model pair form a
closure representing a parametrized model. Expect the uses element to go
away soon; after that, things should be stable. Parameters for individual
methods now have their own space; try apop_ml_params_alloc and
apop_OLS_params_alloc, for example.
If you are just doing things like
apop_estimate_show(apop_OLS.estimate(data,NULL));
then don't worry, but if you are doing a lot with the input parameters,
then have a look at Chapter 6 of _Modeling with Data_.
--apop_histogram model
**Gradually rewriting the histogram functions from before to make use of
that model. E.g., eliminated apop_vector_to_cmf.
**apop_line_to_data fixed to use both vector and matrix terms. Now
requires arguments: (indata, vsize, m1size, m2size).
--MLE now approximates the Information matrix using data gathered during
the MLE search. This is wrong but cheap; right but expensive procedures
forthcoming. [Hint: Simulated annealing gathers more info.]
--apop_(data|matrix|vector)_fill functions, which are a touch fragile,
but very useful when used with care.
**apop_data_(get|set)_(tn|nt) changed to (ti|it), because n could stand
for name or number, while i stands for index, and is often used for integers.
--apop_names now have a title element, so you can give your data
structures a title.
**apop_params_alloc takes an apop_model, not an &apop_model. It's more
natural that way.
**Finally erradicated every last vestige of inventories: apop_params no
longer has a .uses element. Instead, apop_specific_model_params may have
a want_cov, want_expected_value, want_whatever element if the element is
optional. And really, the parameters themselves should never be
optional. What was I thinking.
**apop_model_fix_params now sets up and returns an apop_mle_params object,
thus resolving the problem that the MLE params needs a model input,
and the model_fix_params model needed an MLE params input.

	0.18 March 2007
**apop_text_to_db now assumes column names unless you specify -nc.
--If you set parameter_ct==0 in your model definition, the MLEs will
assign parameter_ct == the number of columns in your data set.
--Missing data functions: apop_listwise_delete and apop_ml_imputation
**The constraint element of the apop_model now takes a void* parameter,
like it should have all this time.
**apop_jackknife (1) renamed to apop_jackknife_cov and (2) now actually
works.
**Entirely eliminated the apop_inventory structure. Its sole utility is
inside the apop_ep struct.
**Changed the RNG interface for the sake of allowing multidimensional
draws. [Not that I have any functions that do that right now.]
--Bayes-oriented MCMC algorithm: apop_mcmc_update
!!Bayesian model generator: apop_update
**apop_model paramters is now an apop_model. See the documentation of
the model for all the changes.
**apop_data_alloc now takes three arguments: vsize, msize1, msize2. To
update, just put a 0, at the head of the arg list.
!!An absolutely fabulous apop_linear_constraint function.
--Produce a model with some parameters fixed via apop_model_fix_params.
--apop_beta model

	February 2007

**Apop_sv_decomposition has a slightly nicer interface.
**data->categories was too much to type, and too specific. The apop_data
struct now has a data->text element, and textsize[0] and [1]. The
categories element is linked to this, but is now deprecated.

	January 2007
**Root finding hooked into the max likelihood fns.

0.17	December 2006
**Apop_model struct has lost the fdf object, which was annoying, and now
has the p function.
--mySQL support.
**apop_query_to_chars now returns an apop_data structure, so you don't
have to go back and gather column names and dimensions.
**apop_name_get (and the apop_get_tt family) now use regular expressions
instead of SQL's LIKE operator. This is _much_ faster.
--the apop_distribution model.

		November 2006
--The preeminently useful APOP_COL and APOP_ROW
--apop_data_calloc
--apop_vector_(apply|map) debugged.
**apop_estimation_params is just too darn long; reduced to apop_ep.


		October 2006
--apop_text_to_db now reads from STDIN.
**deleted apop_query_db; use apop_query.
--Kolmogorov-Smirnov test.
--apop_t_test returns GSL_NAN when given a one-element vector instead of
hanging.
--no more soft links in the tgz file==>may work better on Windows machines.
--apop_(vector|matrix)_(map|apply) will apply a function to every
row of a matrix or every element of a vector. The map functions return a
gsl_vector.
--bug fix in apop_test_goodness_of_fit.

		September 2006

**Removed apop command-line server thing. It was interesting, but that's
the best that could be said of it.
--Added functions for weighted data: weighted least squares, weighted moments.
--apop_vector_percentiles now allows for averaging instead of rounding.

		August 2006
**apop_log_likelihood and friends now demand that data be apop_data*,
rather than void*. Too many things broke when users gave non-apop_data
data.
--bug fixes

		July 2006
--Many more checks for NULL ==> more robust code and easier debugging.
--Bug fixes.
**apop_data_split, and apop_data_stack has been revised to handle the
idea that a vector is the -1st element of the matrix. I.e., check your
code if you're trying to merge matrices without merging the vectors.
--Lattice plots.
--Convenience t-tests from inside model estimations are fixed.
--apop_query_to_vector. 
--apop_opts.output_type == 'p' to print to apop_opts.output_pipe
**apop_..._print and apop_..._show now work out whether elements are
integers (if (val == (int) val)...), and print accordingly. This means
that apop_..._print_int and apop_..._show_int are basically obsolete,
and have been removed.
--Apop_OLS now allows weights.
--Test library now includes a few NIST certified tests.

		June 2006
--added preprocessor cruft to let the library work for C++
--Jackknife revised

		May 2006
**The apop_model no longer includes an inventory. I leave it to the
estimate function to do its own allocation.

		April 2006
**apop_matrix_normalize and apop_vector_normalize had different
numbers for the same normalizations. Was that ever dumb. Also, I've
switched to chars instead of ints to signify this stuff, for better
mnemonics without resorting to the
APOP_ENUM_YOU_HAVE_TO_LOOK_UP_EVERY_TIME_BECAUSE_ITS_SO_LONG sort of
thing. If you were using apop_matrix_normalize(data, 0) before, you
need to change that to using apop_matrix_normalize(data, 'm'). Thus,
apop_vector_normalize now has one more normalization, for a total of
four for both.

--Added apop_rng_alloc convenience fn.

--Added apop_strip_dots to keep inputs to the database healthy.

--apop_name_find uses LIKE instead of strcmp.

--a fn to calculate the generalized harmonic.

--A whole section on histograms and goodness-of-fit tests.

--apop_data_set fns to go with the apop_data_get fns.

--apop_data now includes a vector type
	--apop_estimate.parameters is now an apop_data type.
	--apop_estimate.names is thus obsolete.

		March 2006
**apop_inventory is now a subset of apop_estimation_params. Implications:
	--added apop_estimation_params_alloc() to ensure that inventory is set right.
	--the model.estimate(data, inv, params) method is now model.estimate(data, params)
	  model.estimate(data, NULL) still does what the user expects it to.
  This makes structural sense, but will lightly break any existing code.
  fix: change 
   apop_inventory *inv = apop_inventory_set(1);
   model.estimate(data, inv, NULL);

   to
   apop_estimation_params *ep = apop_estimation_params_alloc();
   model.estimate(data, ep);

   and in any apop_estimates, change any use of est->uses to
   est.estimation_params.uses.

**Next apop_estimate reform: y_values and residuals combined into one
apop_data table with actual, predicted, residual columns.
	--obviated the need for a 'dependent' element in apop_names; removed that.
	If you need the name, it's now your_est->dependent->names->colnames[0].

**your_estimate->covariance is now an apop_data set instead of a gsl_matrix.

**the data element of the apop_matrix structure is now named matrix. So
instead of data_set->data, use data_set->matrix, and instead of
estimate->data->data->data, you can use estimate->data->matrix->data.

--The command-line utility has been revisited, and can do a few more
things, like OLS.

--Simulated annealing
	--added convenience fns apop_vector_distance(pt1,pt2) and
		apop_vector_grid_distance(pt1,pt2)

**Apop_data_memcpy no longer malloc()s for you, for comparability with
the world's other memcpy fns. If you want mallocing, use apop_data_copy.

--apop_test_fisher_exact(). Cut 'n' pasted from R, who cut 'n' pasted it
from somebody else. Despite being the same code, it runs fifty (50)
times faster from Apophenia.

		February 2006
--sort-of-adaptive MLE: use apop_estimate_restart to execute a new MLE
search beginning where the last one ended, perhaps using a new method or
rescaled parameters.
	--This needed convenience functions to check for divergence, thus
		added apop_vector_finite, apop_vector_bounded, apop_vector_isnan.
**apop_db_to_crosstab now returns an apop_data set instead of a gsl_matrix.
Also, it finally works with column headers that aren't numeric.
**stats like apop_mean are now apop_vector_mean, following the proper
	pkg-noun-verb naming scheme. 
--Textbook is much improved.
--apop_vector_to_pdf convenience fn.

--Some of the fns that used to be of the form
	apop_get_something(input, &output);
are now of the more natural
	out	= apop_get_something(input);
This includes apop_array_to_vector and apop_array_to_matrix

--bootstrapping works, and works with with apop_models.
--apop_poisson model

0.15	January 2006
Added an apop_opts structure for options. Alowed the following changes:
	--apop_verbose  is now apop_opts.verbose. Try this on your existing code:
		perl -pi.bak -e 's/apop_verbose/apop_opts.verbose/g' *.c *.h
	--the output functions now output into three formats: on screen, to file, to db;
		see chapter five of the manual.
		
--F tests 
--R squared.

0.14	December 2005

The apop_data structure, which is just a shell for a gsl_matrix and an
apop_name. Was just sick of sending names following around my tables. 
Lets us keep both numerical and categorical data in one place; kind of
like R's data frame.

--Added linear model objects: OLS, GLS. This means that what had been
the apop_OLS function is now the apop_estimate_OLS function, and where it
used to take in a gsl_matrix and an apop_name, now it takes an apop_data
structure and a NULL. So you'll have to modify your code accordingly.

--A function to generate dummy variables, useful in conjunction with
--Functions to stack matrices and apop_data sets. Even a
apop_partitioned_OLS function, that will only practically work for small data sets.

--pow(.,.) in the database. I can't believe I dealt with SQL this long w/o it.

0.13	December 2005

--The apop_model object. This was a big deal that deserves more than
just one line; see the manuals.

0.12 	mid November 2005

--Bar charts (assuming you've got Gnuplot > 4.1)
--percentiles (in case you haven't got it)
**redid MLE system so you can pick among the many options now available.  As a part of this:
	--better handling of constraints.
	--numerical gradients.
	--numerical Hessians.

0.12 	early November 2005, post-hiatus

--You now have three maximum likelihood estimators to choose from: the
GSL's no-gradient, the GSL's with-gradient, and Mr. WN's autocalculated
gradient. 

--If you haven't seen it before, the apop_distribution structure is
increasingly well-supported. It allows the user to specify the features
of the Max. Likeihood model in a consistent manner which facilitates
things like comparing two models.

--I'd still suggest taking the Waring and Yule distributions with care;
everything else seems to check out.


0.12 	September 2005
**The distributions are now objects, which just provides a neat way
of grouping together the half-dozen functions which are associated with
any one distribution.

0.11	September 2005
--command-line server is much improved. I actually do work with it.
--Documentation is now via doxygen.
--asst bug fixes.
--Have started to take plotting (via gnuplot) seriously
--a limited test suite. Try: make test .

0.10	August 2005
--This version includes a server to park itself in memory and receive data
processing requests. The intent is that one can then do analysis from
the command line or a Perl/Python/Whatever script. The client/server
works in the sense of handling a handful of requests without
segfaulting, but remains in proof-of-concept stage. 
--Added apop_merge_db for joining databases, both via C and command line 
--Run t tests from the cmd line or the database.

0.09	July 2005
--Flattened the relatively complex vasprintf subsystem from GNU, so if
you've been having trouble compiling on non-GNU systems, try again.
Added two little command-line programs. Also, added more little
functions which aren't very interesting, like t-tests; maybe you'll
stumble upon them.

0.08	May 2005
--OLS/GLS/MLE now properly support the apop_estimate structure 
--Column names

0.07	April 2005
--uses the apop_estimate structure to return heaps of data from regressions & MLEs
--uses the apop_model structure

0.06
--var(x), skew(x), kurtosis(x) added to SQL understood by Apophenia.

0.05
--added a little crosstab utility
--queries now accept printf-type arguments. 
	==>GNU vasprintf was added.
		==>updated to work with autoconf 1.7
