Changes in version 2.2.0
========================

* Octave package

   o The STK is now available both as an "all-purpose" Matlab/Octave toolbox (as
     usual) and as a full-fledged Octave package that can be installed using
     `pkg install`.

* Core

   o stk_model now also accepts function handles for covariance_type.

   o stk_ortho_func is deprecated and will be completeky replaced, in the 3.x
     series, by linear model objects. In the meantime, stk_ortho_func has been
     kept as a gateway to stk_lm_* functions and now supports the case of cubic
     polynomial models.

   o stk_cholcov: new function that adaptively adds a little bit of noise on the
     diagonal of a covariance matrix to help chol succeed, when the first
     factorization returned by chol is not complete (a warning is emitted when
     doing so). Used in stk_param_init, @stk_kreq_qr/get, stk_param_relik...

   o @stk_kreq_qr: heuristic improvement of numerical conditioning (implemented
     in the new private function compute_P_scaling).

* Covariance functions

   o Accept invRho = 0 in anisotropic covariance functions.

   o stk_sf_matern: Handle special cases (3/2, 5/2, Inf) explicitely, and handle
     large values of the smoothness parameter nu better.

   o Handle the case of Gaussian isotropic and anisotropic covariance functions
     in stk_param_init and stk_param_getdefaultbounds.

* Linear models

   o Introduce linear models objects. Currently, the following linear model
     object classes are available: stk_lm_null, stk_lm_constant, stk_lm_affine,
     stk_lm_quadratic, stk_lm_cubic and stk_lm_matrix.

   o Linear model objects are still considered an experimental feature. They can
     be accessed by setting model.order to nan, in which case model.lm is
     expected to contain a linear model object.

   o stk_example_misc03: New example script that demonstrates the use of linear
     model objects.

* Sample path simulation (stk_generate_samplepaths)

   o The simulation of conditioned sample paths has been made easier (see ticket
     #3 on SF). This is demonstrated by stk_example_kb08.

   o Now uses model.response_name (if available) to create column names for the
     output array, and xt.rownames (if available) to create row names.

   o stk_generate_samplepaths can deal with replicated rows in xt.

* Parameter estimation

   o stk_param_estim
      - Warn about constant-response data.
      - Return an additional 'info' structure, which currently contains the
        criterion that has been used, the criterion value at the optimum, and
        the bounds.
      - Add a new (optional) input argument that will make it possible, in the
        future, to select which estimation criterion to use.

   o stk_param_relik
      - Check symmetry of G = W' * K * W and apply a naive fix if it is not
        (emit a warning when doing so).
      - Improved implementation, which seems to reduce the number of warnings
        related to bad conditioning, and also improve the performance for
        large n (about 1000, say).

   o New optimization options (can bet set thorugh stk_options_set)
      - Add global options to control upper/lower bounds for param estim.
      - (Matlab) Add a 'optim_display_level' option to control the verbosity
        fmincon/fminsearch. Its default value is 'off'.

   o stk_param_gls: new function that computes the GLS estimator.

* Array objects (stk_dataframe, stk_factorialdesign)

   o stk_length: New function that returns the "length" of an array, currently
     defined as its number of rows.

   o Improved display for both stk_dataframe and stk_factorial objects

   o Fix and improve accessors (subsasgn, subsref, set, get, fieldnames)

   o Minimalist support for linear indexing on stk_dataframe objects

   o New overloaded methods: @stk_dataframe/abs, @stk_dataframe/reshape

   o @stk_dataframe/plot: Full rewrite to improve compatibility with the base
     plot function. The case where x is an stk_dataframe objects with two or
     more columns is now handled in a way that is consistent with the base plot
     function (i.e., if x has two columns, then we get two 1D plots).

   o @stk_dataframe/horzcat, @stk_dataframe/vertcat: Now the result is always an
     stk_dataframe object, and has row names iff either one of the two arguments
     doesn't have row names, or the row names of both arguments agree.

   o @stk_dataframe/bsxfun: Modify the behaviour of bsxfun for stk_dataframe
     objects. The result is always an stk_dataframe object, and has column names
     iff either one of the two arguments doesn't have columns names or the
     columns names of both arguments agree.

Graphics

   o stk_plot2d is deprecated and will be removed in the 3.x series. Use
     contour, mesh, surf... directly instead (they are now overloaded for
     stk_factorialdesign objects).

   o stk_plot1d: Improved flexibility in the way input arguments are handled.

   o stk_figure does not set the axis title any more.

Pareto domination

   o stk_isdominated: New function that returns true for dominated rows.

   o stk_paretofind: New function that finds non-dominated points.

   o stk_example_misc04: New example script illustrating random Pareto fronts.

* Faster and less verbose startup

   o Stop bothering users at startup with information that they can find in the
     README file anyway.

   o Don't display selected optimizers at startup.

   o In Matlab, don't bother checking if the PCT is installed.

* Documentation

   o New HTML documentation, available in the "all-purpose" Matlab/Octave
     release (doc/html directory) and online on Source-Forge at
     <http://kriging.sourceforge.net/htmldoc>.

   o Lots of fixes and improvements in help texts.

   o Add a CITATION file, which explains how to cite STK in publications.

   o stk_testfun_braninhoo: Fix domain bounds in the documentation.

* Miscellaneous

   o Options set/get
      - stk_options_set: Add a reset feature.
      - stk_options_set: Prevent persistent from being cleared (bugfix)

   o Remove page_screen_output (not needed anymore).

   o Restore the stk_ prefix for distrib_* functions (distrib_normal_cdf is
     renamed to stk_distrib_normal_cdf, distrib_student_ei to
     stk_distrib_student_ei, etc.)

   o Lots of internal changes, minor changes, etc. not worth mentioning here.


Changes in version 2.1.1
========================

* This is a minor bugfix release.

   o Fix a bug in stk_param_init.

   o Add size checks to several functions.

   o Warn Octave users about the problem with MEX-files in privates folders:
     Octave must be restarted when stk_init is run for the first time.


Changes in version 2.1.0
========================

* Several ways to get help, report bugs or ask for new features on Sourceforge
  are now proposed to the user (both in README or stk_init.m)

* Examples

    o Existing examples have been improved: descriptions rewritten; graphical
      options controlled globally thanks to dedicated plotting functions
      (stk_figure; stk_subplot, stk_axes, stk_title...); + lots of minor changes

    o New examples
        - kb06: ordinary kriging VS linear trend
        - kb07: simulations of Matern sample paths with different various nu
        - doe03: one-dimensional Bayesian optimization (expected improvement)

* Covariance functions

    o New function: stk_gausscov_iso.m (isotropic Gaussian covariance model)

    o New function: stk_gausscov_aniso.m (anisotropic Gaussian covariance model)

* Special functions

    o The precision of stk_sf_matern has been improved around 0 for high nu

    o New function: stk_sf_gausscorr (Gaussian correlation function in 1D)

* Design of experiments

    o New function: stk_phipcrit (phi_p criterion for space-filling designs)

    o New function: stk_maxabscorr (maximal pairwise absolute correlation)

* Probability distributions

    o A new 'probability distributions' module has been initiated
      (read misc/distrib/README to understand the reasons why)

    o Currently provides: pdf, cdf and expected improvement (EI) for the
      Gaussian and Student t distributions

* Matlab/Octave compatibility throughout all supported releases has been
  strengthened, thanks to the creation of a Matlab/Octave Langage Extension
  (MOLE) module

    o octave_quantile removed; instead, a replacement for quantile() is provided
      by the MOLE when needed.

    o new function graphicstoolkit(), providing a kind of replacement for
      graphics_toolkit(), that also work in Matlab and old Octave releases

    o ...

* Miscellaneous

    o stk_plot1dsim has been removed (use stk_plot1d instead)

    o plotting functions now work directly on the current axes

    o An optional 'box' argument has been added to stk_sampling_halton_rr2

    o stk_feval now uses input row names for its output

* Bugfixes

    o @stk_kreq_qr/stk_update is now (inefficient but) working

    o isequal() is now working for stk_dataframe and stk_kreq_qr objects in
      Octave 3.2.x (explicit overloading was required for these old releases)

    o and many other tiny little things


Changes in version 2.0.3
========================

* This is a minor bugfix release.

   o Fix a bug core/stk_predict.m (related to blockwise computations)


Changes in version 2.0.2
========================

* This is a minor bugfix release.

   o Fix a bug in @stk_dataframe/subsref.m (handle colnames properly when
     ()-indexing is used to extract a subset of rows).

   o Fix a bug in @stk_dataframe/stk_dataframe.m (make sure that .data contains
     numerical data) and add a copy constructor.


Changes in version 2.0.1
========================

* This is a minor bugfix release.

   o Fix a bug in stk_predict (don't compute the optional outputs lambda and mu
     when they are not requested by the caller).

   o Fix a bug in stk_sampling_olhs (fail neatly when called with n = 2).


Changes in version 2.0.0
========================

* Required Octave version number has been raised to 3.2.2.

* Important changes to the public API

   o New R-like data structures: @stk_dataframe, @stk_factorial_design.

   o The structures previously used everywhere in STK (with a ".a" field) are
     still supported but should be considered as deprecated (and will probably
     be completely removed in the next major release).

   o As a result, stk_predict () does not return a ".a/.v" structure any
     more. Instead, it returns an stk_dataframe object with two variables called
     "mean" and "var".

   o The function that computes (the opposite of the log of) the restricted
     likelihood is now called stk_param_relik instead of stk_remlqrg.

* Many improvements in the internal structure of STK, for the sake of clarity
  (for those who happen to read the code) and efficiency:

   o @stk_kreq_qr: new class for encapsulating basic computations related
     to a Gaussian process (kriging) model.

   o The old Kx_cache/Px_cache mechanism, for working efficiently on finite
     spaces, has been replaced by a new covariance fonction: stk_discretecov.

   o A new framework to encapsulate various approaches to parallel
     computations. Currently only supporting 'none' or 'parfor' (Mathworks' PCT
     toolbox parfor loops) engines, more to come later.

* Experimental support for parameter objects.

   o model.param is now allowed to be an object from a user-defined class. This
     feature is experimental, and not really used currently in the toolbox.

   o A new function stk_param_getdefaultbounds () has appeared in ./param, that
     was previously hidden in stk_predict (). It can be overridden in the case
     where model.param is an object from a user-defined class.

* New sampling algorithms and related functions

   o Fill-distance computation: exact (using Pronzato & Müller, Statistics &
     Computing, 2011) or approximate (using a space-filling reference set).

   o Van Der Corput and Halton RR2-scrambled sequences (quasi-MC)

   o NOLHS designs (Cioppa & Lucs, Technometrics, 2007)

* Miscellaneous

   o misc/options: a new system for managing options

   o octave_quantile(): replacement for the missing quantile() function in base
     Matlab (Mathworks' Statistics toolbox is not a requirement of STK).

   o Add MEX-files for computing "Gibbs-Paciorek quadratic forms" to support
     future work on non-stationary covariance functions.

   o AUTHORS: a list of maintainers and contributors can now be found at the
     root of the source tree.

   o stk_compile_all: now recompiles MEX-files automatically if the source code
     has changed.

   o Various new utility functions, tiny or not-so-tiny improvements,
     bugfixes here and there...


Changes in version 1.2
======================

* stk_predict
   o Now offers the possibility to compute the posterior covariance
     matrix (it is returned as a fourth optional argument).
   o Has been modified to work with non-stationary covariance functions.

* Added a new "pairwise" option to all covariance functions and also to
  stk_dist (formerly stk_distance_matrix). This options allows to compute
  only the diagonal of the full distance/covariance matrix).

* Space-filling designs
   o New function (stk_filldist) to compute the (discretized) fill distance.
   o New function (stk_sampling_olhs) to generate Orthogonal Latin
     Hypercube (OLH) samples using the algorithm of Ye (1998).

* New (experimental) function to choose automatically the starting point for
  a parameter estimation optimization procedure (stk_param_init).

* New functions to work with boxes: stk_rescale, stk_normalize.

* More flexible representation of data
   o Improved the flexibility most functions (stk_predict, stk_param_estim,
     ...), which are now accepting both matrices and "data structures"
     (with an 'a' field) as input arguments.
   o New function: stk_datastruct.

* Regular grids
   o New function stk_plot2d() that serves has a wrapper around
     {surf|contour|mesh|pcolor}-type functions, to plot data defined
     over a two-dimensional regular grid.
   o stk_sampling_regulargrid now also returns 'ndgrid-style' coordinate
     matrices stored in new .coord field.

* Examples
   o Reorganized the example folder and renamed all example scripts.
   o New example (stk_example_misc03) to demonstrate the effect of
     adding a prior on the covariance parameters.
   o Improved graphical outputs in stk_example_kb03.
   o New test function: stk_testfun_braninhoo (Branin-Hoo).

* Miscellaneous
   o Renamed stk_distancematrix to stk_dist.
   o Various new utility functions: stk_runexamples, stk_disp_framedtext,
     stk_disp_examplewelcome, stk_plot_shadedci, stk_octave_config.
   o Improved Octave-specific configuration.
   o Lots of bugfixes and improvements.


Changes in version 1.1
======================

* New special functions for the Matern 3/2 and 5/2 correlation
  functions (stk_sf_matern32, stk_sf_matern52). New covariance
  functions (stk_materncov32_iso, stk_materncov32_aniso, ...).

* New MEX-file to compute the separation distance (stk_mindist).

* New function to generate random Latin Hypercube Samples
  (stk_sampling_randomlhs). Renamed stk_sampling_cartesiangrid to
  stk_sampling_regulargrid, and changed the meaning of the first
  argument for consistency with other stk_sampling_* functions.

* Improved stk_model function. Now provides default parameters for
  several families of covariance functions.

* Renamed fields in "model" structures (covariance_cache to Kx_cache
  and P0 to Px_cache). A new field 'dim' has been added to the 'model'
  structure.

* Changed the order of the arguments of the functions that use the
  structure 'model'. Now, 'model' is always the first argument.

* Changed stk_param_estim to make it possible to estimate noise
  variance.

* Fixed issues in stk_param_estim.m related to the definition of the
  search domain and the selection of (constrained/unconstrained)
  optimizer.

* Renamed stk_conditionning to stk_conditioning.

* New functions for a more flexible and efficient management of STK's
  configuration in stk_init (path, compilation of MEX-file, checking
  for optional packages, selection of the default optimizer, ...).

* New functions for unit testing, based on Octave's testing system
  (stk_test, stk_runtests). Tests have been added to most functions in
  the toolbox.

* Improved documentation & new examples.

* Improved argument checking and error messages.

* Improved compatibility with older versions of Octave and Matlab.

* Lots of minor changes and bug fixes.

* Complete reorganization of the code (better directory structure).
