Commit Graph

8 Commits

Author SHA1 Message Date
Neil Toronto
f42cc6f14a Fixed major performance issue with matrix arithmetic; please merge to 5.3.2
The fix consists of three parts:

1. Rewriting `inline-matrix*'. The material change here is that the
   expansion now contains only direct applications of `+' and `*'.
   TR's optimizer replaces them with `unsafe-fx+' and `unsafe-fx*',
   which keeps intermediate flonum values from being boxed.

2. Making the types of all functions that operate on (Matrix Number)
   values more precise. Now TR can prove that matrix operations preserve
   inexactness. For example, matrix-conjugate : (Matrix Flonum) ->
   (Matrix Flonum) and three other cases for Real, Float-Complex, and
   Number.

3. Changing the return types of some functions that used to return
   things like (Matrix (U A 0)). Now that we worry about preserving
   inexactness, we can't have `matrix-upper-triangle' always return a
   matrix that contains exact zeros. It now accepts an optional `zero'
   argument of type A.
2013-01-21 22:04:04 -07:00
Neil Toronto
24561e25e4 Finished matrix documentation, attendant fixes; please merge to 5.3.2
* Narrowed type of `submatrix' to only sensible argument types

* `matrix-invertible?' now returns #f when given a non-square matrix
  instead of raising an error

* Allowed `matrix-diagonal' to operate on non-square matrices
2013-01-17 19:08:11 -07:00
Matthew Flatt
cd73a8b02a math/matrix: fix some duplicate documentation tags 2013-01-04 08:12:47 -07:00
Jens Axel Søgaard
69d7cb2e82 More matrix documentation 2013-01-03 18:03:28 +01:00
Jens Axel Søgaard
9465bc0196 Documentation for inner product space operations 2013-01-02 22:44:39 +01:00
Jens Axel Søgaard
69406bf156 Documentation on basic matrix operations and matrix-qr. 2013-01-02 19:28:05 +01:00
Jens Axel Søgaard
715b0a7be7 Documentation for polymorphic matrix functions 2013-01-02 18:02:03 +01:00
Neil Toronto
e5eb9751f0 Initial `math/matrix' documentation, and some changes
* At least stubbed out all (or almost all) `math/matrix' exports; many
  have complete documentation (e.g. types, predicates, accessors,
  constructors, for loops, conversion, much of "Comparing Matrices")

* Moved `matrix-zero?' and fixed to use (matrix-error-norm) as its norm

* Added `matrix-basis-cos-angle' (currently a stub; should return smallest
  singular value of a certain matrix multiplication)
2013-01-01 18:19:43 -07:00