                 Changes in version 1.0.1 (2025-10-09)                  

This is a moderate update, improving usability and documentation

  - Rename vignettes to put them in order
  - Add papers/matlib-useR-2016.pdf to avoid bad URL
  - Consolidate options for print.latexMatrix
  - Fix bug in print.latexMatrix(sparse=TRUE)
  - plotEqn() gains a ... to pass other graphical parameters
  - added coffee data (modified from spida2)
  - Improve documentation of latexMatrix() and it's print() method to
    more clearly indicate how to set global options.

                 Changes in version 1.0.0 (2024-10-02)                  

  - added latexMatrix() to create a symbolic matrix
  - latexMatrix() made more general to handle much wider variety of
    cases, with LaTeX output [JF]
  - this is fleshed out with an Eqn() wrapper to work with other
    LaTeX-generating code in the package [PC]
  - added a vignette, inv-3d illustrating linear transformations and
    matrix inverse in 3D using rgl
  - latexMatrix() gets operators for matrix arithmetic (+,-, %*%) and
    operators (t())
  - added vignette, latex-equations.Rmd illustrating the variety of
    functions in the package for constructing matrix equations in LaTeX
  - added functions matmult(), matsum(), matpower() similar to the
    operators, but providing simplify = TRUE, as.numeric = TRUE
  - Eqn() gains a preview argument, rendering a LaTeX matrix expression
    in a Viewer pane.
  - latexMatrix() now allows row/column names to be displayed with a
    matrix.

                 Changes in version 0.9.8 (2024-07-25)                  

  - added circle() for drawing circles in diagrams
  - vectors() now handles 0-length vectors more gracefully #50.
  - matrix2latex() generalized to allow different bracket types and
    optionally show the size of the matrix.

                        Changes in version 0.9.7                        

  - inv() and aliases now return invisible matrix when verbose = TRUE to
    match behaviour of related functions (e.g., gaussianElimination())
  - GramSchmidt() gains an argument, omit_zero_columns to control
    whether all-zero columns are retained in the output (issue #48)
    [Thx: @ggrothendieck]
  - Merge pull request #49 from JF to retain column names in
    GramSchmidt().

                 Changes in version 0.9.6 (2022-12-08)                  

  - fix some subtle problems related to the use of MASS::fractions() in
    various display functions, #42. (Thx: Phil Chalmers)
  - Fix a problem with `showEqn(..., simplify=TRUE), #45. (Thx: John
    Fox)
  - Remove Suggests: rglwidget as this is now in the rgl package (Thx:
    Duncan Murdoch); Merge pull request #39 from dmurdoch/norglwidget

                 Changes in version 0.9.5 (2021-08-21)                  

  - fix 'CRAN packages requiring webshot2 but not declaring it'
  - fix error from Proj.Rd

                 Changes in version 0.9.4 (2020-10-29)                  

  - added xprod() for vector cross-product
  - added data-beta vignette
  - fix sprintf warning from LU [Phil Chalmers]
  - better plotting of planes in plotEqn3d, alpha=0.9

                 Changes in version 0.9.3 (2020-04-02)                  

  - gaussianElimination() and friends now handle one-row or one-column
    matrices [suggestion of Jana Jarecki]
  - improvements to plotEqn()

                 Changes in version 0.9.2 (2019-05-29)                  

  - Bug fix in arrows3d.r [Thx: Douglas Whitaker]
  - Bump package version
  - matlib gets a hex sticker
  - Incorporated a numerical tolerance in GramSchmidt() [John Fox]
  - Improved computation of SVD [John Fox]
  - now export printMatrix()
  - now export circle3d() [req: Marco Scazzocchio]
  - now use_revdep()

                 Changes in version 0.9.1 (2018-04-04)                  

  - fix references to car datatsets -> carData

                        Changes in version 0.9.0                        

  - showEqn() gains a reduced logical to print only the unique
    regression equations when a lm()-type object is passed. May be
    combined with the simplify logical argument for further reductions
  - echelon() gains a reduced logical to indicate whether the reduced or
    non-reduced form is computed
  - powerMethod() gains a plot = TRUE logical to draw the iteration
    history
  - added support for 'lm' objects to showEqn() to show the design
    matrix equations
  - added verbose option to GramSchmidt() and another example
  - added printMatEqn() to print matrix expressions side-by-side
  - prepare to release as a cumulative major version
  - Phil Chalmers is now recognized officially as a package author [aut]

                        Changes in version 0.8.3                        

  - rename functions for consistency: eig() -> Eigen(), point_on_line()
    -> pointOnLine(), power_method() -> powerMethod(), row_cofactors()
    -> rowCofactors(), row_minors() -> rowMinors().

  - add Det() to compute determinants by elimination, from eigenvalues,
    or by minors and cofactors, with possibility of verbose output.

  - plotEqn3d() gets an axes argument and lit to control lighting of the
    planes; lit solves a problem with the planes becoming
    indistinguishable in some rotations.

  - add svdDemo() function to illustrate the SVD of a 3 x 3 matrix [thx:
    Duncan Murdoch]

  - add symMat() to create a square symmetric matrix from a vector.

  - add angle() to calculate angle between vectors

  - powerMethod() gets a keep argument, for possible use in plotting the
    convergence of eigenvectors.

  - add adjoint(), to round out methods for determinants

  - add GramSchmidt() for the Gram-Schmidt algorithm on columns of a
    matrix. The existing function gsorth() will be deprecated and then
    removed.

  - gsorth() has been deprecated.

  - fixed use of MASS::fractions in gaussianElimination

  - added printMatEqn() to print matrix expressions side-by-side

                 Changes in version 0.8.1 (2016-09-17)                  

  - remove inst/doc to satisfy CRAN

                        Changes in version 0.8.0                        

  - add a vignette on properties of determinants (det-ex1)
  - add a vignette on evaluation of determinants (det-ex2)
  - add vignette on matrix inverse (inv-ex1)
  - now use travis-ci to check builds
  - add vignette on matrix inverse using EROs (inv-ex2)
  - extended use of geometric diagrams in vignettes
  - add vignette on generalized inverse (ginv)
  - added J() for unit vectors, matrices
  - added LU() for LU decomposition

                 Changes in version 0.7.3 (2016-06-06)                  

  - Changed gaussianElimination() by defining local ERO functions to
    make the algorithm clearer; in verbose mode, show each ERO.
  - Added a draw argument to vectors3d() and arrows3d(), which defaults
    to TRUE. If FALSE, just returns returns the "reg.length" to help in
    scaling.
  - Optionally scale error spheres (and circles) produced by regvec3d()
    so that they project confidence intervals on the x1 and x2 axes.
  - Small cosmetic changes to regvec3d().
  - showEqn() and gaussianElimination() get latex arguments, to print
    results in LaTeX format [thx: Phil Chalmers]

                 Changes in version 0.7.2 (2016-02-08)                  

  - added argument error.sphere to plot.regvec3d() [JF]
  - remove use of lengths() in corner() to avoid R version dependency

                 Changes in version 0.7.0 (2016-01-06)                  

  - use corner() in vectors3d.Rd
  - added arc() for 2D, 3D vector diagrams to show angles between
    vectors
  - added regvec3d() for 2D, 3D vector diagrams representing a bivariate
    multiple regression model, lm(y ~ x1 + x2) [thx: John Fox]
  - added internal .arrows() to produce nice arrows in 2D vector()
    diagrams
  - fixed numerous small problems in vector diagrams
  - fixed some erroneous statements in vignettes
  - showEqn() now aligns terms vertically and prints without quotes
  - reversed sense of absolute in points_on_line() and clarified
    documentation

                 Changes in version 0.6.0 (2015-12-15)                  

  - added vandermode() function
  - added vec() convenience function to vectorize a matrix
  - added is_square_matrix() tests
  - added power_method(), power method for dominant eigenvector [thx:
    Gaston Sanchez]
  - added arrows3d() for 3D geometric diagrams
  - added vectors3d() for 3D geometric diagrams
  - added corner() for 2D, 3D geometric diagrams
  - added more documentation content to man/matlib.Rd from README.md

                 Changes in version 0.5.2 (2015-11-19)                  

  - added swp() function
  - added vignette("gramreg") - Gram-Schmidt Orthogonalization and
    Regression

                 Changes in version 0.5.1 (2015-11-10)                  

  - added len() convenience function for Euclidean lengths
  - added plotEqn3d() function using rgl to plot equations in 3 unknowns
  - reorganized matlib.R to become a package .Rd document
  - renamed proj() -> Proj() to avoid conflict with stats::proj()
  - added vectors() for plotting geometric diagrams
  - added vignette("linear-equations") - Solving Linear Equations

                 Changes in version 0.4.1 (2015-11-05)                  

Initial CRAN release
