## Version 5.0 (2019-08-23)
---------------------------

New core features:
- new system classes: discrete-time standard and descriptor systems
- balanced truncation, LQG balanced truncation and modal truncation for
  discrete-time systems
- additive decomposition and partial stabilization for discrete-time
  systems
- new continuous- and discrete-time Riccati equation solvers
- feature-based demos instead of single ones for each MOR function
- adaptive frequency evaluation/visualization methods
- time integration methods
- corrected balancing type scheme for second-order methods
- vectorization of MOR methods to compute several ROMs at the same time
- projection matrices are optional output arguments

Interface changes:
- changed fatorized equation solver output to Z*Z' and L*D*L' formats
- interfaces of matrix equation solvers are now consistent with System
  Control Toolbox solvers
- algebraic Bernoulli equation is now abbreviated cabe
- matrix sign function is generalized to accept matrix pencils
- renaming of lti2struct, sr and bfsr routines by removing the ct_ part
- replaced disk function for stable anti-stable decomposition of descriptor
  systems by matrix sign function
- sigma plot function takes now several systems and optional parameters
- changed info field GADTF to ADTF
- evaluation and visualization routines are now in extra folder evaluation
- changed caredl functions into factorized and completely unfactorized
  versions
- replaced nilpotent discrete Lyapunov solver by dual version, renamed
  corresponding parameter and info output

Minor changes:
- corrected handling of sparse matrices in Sylvester equation solver
- improper balancing can now be turned of by optional parameter
- additional functions for output formatting
- replaced ~ as negation in source codes by not()
- MOR methods with Riccati equations now allow dual Riccati equation solver

Bug fixes:
- proper handling of hold command in frequency plot functions
- corrected ASCII encoding in documentations
- fixed minimal realiaztion computation in HNA methods
- fixed error bound computation in HNA methods
- corrected tolerance checks in descriptor PRBT method


## Version 4.0 (2018-12-06)
---------------------------

New core features:
- new system class: second-order state-space systems
- balanced truncation for second-order systems
- frequency-limited balanced truncation for all supported system classes
- time-limited balanced truncation for all supported system classes
- HTML documentation is provided for all export formats of the toolbox

Interface changes:
- new naming scheme (mor functions and subroutines) for easier adding new
  types of systems
- nilpotent Lyapunov equation solver has been rewritten for the dual
  equation type
- unification of all factored matrix equation solvers to the Z'*Z or L'*D*L
  formulations
- the LQGBT and HINFBT routines use now the dual sign function Riccati
  equation solver as default
- the info structure is restricted to actually happened steps in the
  algorithm

Minor changes:
- generalization of the Sylvester equation solver
- new solver for indefinite factored Riccati equations
- new dual sign function solver for Riccati equations
- new LDL^T sign function solvers for Lyapunov equations
- updated/corrected and downsized documentation in all routines
- now providing stabilized subspace extraction method for descriptor
  systems
- all systems allow use of sparse matrices by the user
- storing more information about nested equation solvers my using cell
  arrays
- new subroutines for row/column compressions of Z'*Z and L'*D*L factorized
  matrices
- new contribution guide
- updated references for all routines
- help morlab or help morlab-[version] shows list of functions

Bug fixes:
- added missing default values for info structure in ml_mt
- corrected wrong named parameters in ml_hna_dss, ml_brbt_dss, ml_prbt_dss
- corrected error bound computation in ml_lqgbt, ml_lqgbt_dss, ml_hinfbt,
  ml_hinfbt_dss
- corrected using of sparse matrices for small examples
- fixed truncation of unstable eigenvalues in ml_mt_dss
- fixed truncation of no eigenvalues in ml_mt_dss


## Version 3.0 (2017-09-01)
---------------------------

Structural changes:
- The toolbox is licensed under AGPLv3 or later.
- A new naming scheme for MORLAB functions is used to avoid overloading of
  foreign object names.
- MORLAB is now independent of SLICOT and can be used without the Control
  System Toolbox, Robust Control Toolbox and the Control Package.
- The code is properly generalized for the use under Otcave.
- The underlying data structure was generalized to descriptor state space
  objects (dss) and structs.
- Every computational subroutine has an optional argument for parameters.
- The subroutines are seperated by folders for better overview and an
  installation function was added.
- Proper documentation of every subroutine was added.
- Demo scripts for all model reduction routines with all assigned
  parameters were added.
- Toolbox internal check functions were added.

Subroutine changes:
- Changes in model reduction routines:
  - generalized version of all previously existing model reduction routines
    following the improper Hankel singular value theory
  - using disk function with double projection for descriptor system case
  - several bug fixes
- Changes in matrix equation solvers:
  - Newton iteration solver for the algebraic Riccati equation with changed
    sign in the quadratic term was replaced by factored version
  - Smith method solver for the discrete-time Lyapunov equation with 0
    spectrum added
  - extension of all solvers to generalized matrix equations
  - several bugfixes
- Changes in matrix functions/subroutines:
  - renewed option set function with documentation opportunity
  - new options function to get empty option structure or documentation
  - subroutines for additive decomposition of the transfer function added
  - sigma plot function now operates on struct inputs


## Version 2.0 (2015)
---------------------

Structural changes:
- The underlying data structure was generalized to Matlab's state space
  object (ss).
- Additional parameters for subroutines can be set by an option struct.
  Therefore, a set function was added.
- For the use of descriptor systems, the Control System Toolbox as well as
  some routines of the SLICOT toolbox are necessary.

Subroutine changes:
- Changes in model reduction routines:
  - balanced stochastic truncation (BST) method added
  - positive-real balanced truncation (PRBT) method added
  - bounded-real balanced truncation (BRBT) method added
  - Hankel-norm approximation (HNA) method added
  - H-infinity balanced truncation (HinfBT) method added
  - balancing-free square root method was added for all balancing related
    model reduction methods
  - generalization of all methods to unstable and descriptor system by
    separation of corresponding eigenvalues
- Changes in matrix equation solvers:
  - Newton iteration solver for the standard algebraic Riccati equation
    with changed sign in the quadratic term added
- Changes in matrix functions/subroutines:
  - methods for partial stabilization of systems based on Lyapunov and
    Bernoulli equations added


## Version 1.0 (2006)
---------------------

The first release of MORLAB contained the following basic implementations:
- Model reduction routines:
  - balanced truncation square root (BTSR) method
  - LQG balanced truncation square root (LQGBT) method
  - Modal Truncation (MT) method
- Matrix equation solvers:
  - Sign function based solver for the standard Lyapunov equation
  - Sign function based solver for the dual standard Lyapunov equations
  - Sign function based solver for the standard Sylvester equation
  - Newton iteration solver for the standard algebraic Riccati equation
- Matrix functions/subroutines:
  - Newton iteration to compute the matrix sign function
  - Disk function iteration to compute deflating subspaces of the unit
    circle
