# matlib 1.0.1

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.

# matlib 1.0.0

- 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.

# matlib 0.9.8

- 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.

# matlib 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()`.

# matlib 0.9.6

- 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 

# matlib 0.9.5

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

# matlib 0.9.4

- 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

# matlib 0.9.3

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

# matlib 0.9.2

- 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()

# matlib 0.9.1

- fix references to car datatsets -> carData

# matlib 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]

# matlib 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

# matlib 0.8.1

- remove inst/doc to satisfy CRAN

# matlib 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

# matlib 0.7.3

- 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]


# matlib 0.7.2

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


# matlib 0.7.0

- 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

# matlib 0.6.0

- 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`


# matlib 0.5.2

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

# matlib 0.5.1

- 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*

# matlib 0.4.1

Initial CRAN release

