Skip to content

Commit d23948f

Browse files
committed
update README
1 parent 14a6ef9 commit d23948f

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

README.md

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
A Julia package for defining and working with linear maps, also known as linear transformations or linear operators acting on vectors. The only requirement for a LinearMap is that it can act on a vector (by multiplication) efficiently.
99

10+
## What's new in v2.3.0
11+
* Fully Julia v0.7/v1.0/v1.1 compatible.
12+
* Full support of noncommutative number types such as quaternions.
13+
1014
## What's new in v2.2.0
1115
* Fully Julia v0.7/v1.0 compatible.
1216
* A `convert(SparseMatrixCSC, A::LinearMap)` function, that calls the `sparse` matrix generating function.
@@ -40,7 +44,7 @@ The LinearMaps package provides the following functionality:
4044

4145
* `LinearMap`
4246

43-
General purpose method to construct `LinearMap` objects of specific types, as described in the Types section below
47+
General purpose method to construct `LinearMap` objects of specific types, as described in the [Types](@ref) section below
4448

4549
```
4650
LinearMap{T}(A::AbstractMatrix[; issymmetric::Bool, ishermitian::Bool, isposdef::Bool])
@@ -87,23 +91,40 @@ The LinearMaps package provides the following functionality:
8791
8892
## Types
8993
90-
None of the types below need to be constructed directly; they arise from performing operations between `LinearMap` objects or by calling the `LinearMap` constructor described above.
94+
None of the types below need to be constructed directly; they arise from performing
95+
operations between `LinearMap` objects or by calling the `LinearMap` constructor
96+
described above.
9197
9298
* `LinearMap`
9399
94100
Abstract supertype
95101
96102
* `FunctionMap`
97103
98-
Type for wrapping an arbitrary function that is supposed to implement the matrix vector product as a `LinearMap`.
104+
Type for wrapping an arbitrary function that is supposed to implement the
105+
matrix vector product as a `LinearMap`.
99106
100107
* `WrappedMap`
101108
102-
Type for wrapping an `AbstractMatrix` or `LinearMap` and to possible redefine the properties `isreal`, `issymmetric`, `ishermitian` and `isposdef`. An `AbstractMatrix` will automatically be converted to a `WrappedMap` when it is combined with other `AbstractLinearMap` objects via linear combination or composition (multiplication). Note that `WrappedMap(mat1)*WrappedMap(mat2)` will never evaluate `mat1*mat2`, since this is more costly then evaluating `mat1*(mat2*x)` and the latter is the only operation that needs to be performed by `LinearMap` objects anyway. While the cost of matrix addition is comparable to matrix vector multiplication, this too is not performed explicitly since this would require new storage of the same amount as of the original matrices.
103-
104-
* `IdentityMap`
105-
106-
Type for representing the identity map of a certain size `M=N`, obtained simply as `IdentityMap{T}(M)`, `IdentityMap(T,M)=IdentityMap(T,M,N)=IdentityMap(T,(M,N))` or even `IdentityMap(M)=IdentityMap(M,N)=IdentityMap((M,N))`. If `T` is not specified, `Bool` is assumed, since operations between `Bool` and any other `Number` will always be converted to the type of the other `Number`. If `M!=N`, an error is returned. An `IdentityMap` of the correct size and element type will automatically be created if `LinearMap` objects are combined with `I`, Julia's built in identity (`UniformScaling`).
109+
Type for wrapping an `AbstractMatrix` or `LinearMap` and to possible redefine
110+
the properties `isreal`, `issymmetric`, `ishermitian` and `isposdef`. An
111+
`AbstractMatrix` will automatically be converted to a `WrappedMap` when it is
112+
combined with other `AbstractLinearMap` objects via linear combination or
113+
composition (multiplication). Note that `WrappedMap(mat1)*WrappedMap(mat2)`
114+
will never evaluate `mat1*mat2`, since this is more costly then evaluating
115+
`mat1*(mat2*x)` and the latter is the only operation that needs to be performed
116+
by `LinearMap` objects anyway. While the cost of matrix addition is comparable
117+
to matrix vector multiplication, this too is not performed explicitly since
118+
this would require new storage of the same amount as of the original matrices.
119+
120+
* `UniformScalingMap`
121+
122+
Type for representing a scalar multiple of the identity map (a.k.a. uniform
123+
scaling) of a certain size `M=N`, obtained simply as `UniformScalingMap(λ, M)`.
124+
The type `T` of the resulting `LinearMap` object is inferred from the type of
125+
`λ`. A `UniformScalingMap` of the correct size will be automatically created
126+
if `LinearMap` objects are multiplied by scalars from the left or from the right,
127+
respecting the order of multiplication.
107128
108129
* `LinearCombination`, `CompositeMap`, `TransposeMap` and `AdjointMap`
109130
@@ -112,8 +133,10 @@ None of the types below need to be constructed directly; they arise from perform
112133
## Example
113134
114135
The `LinearMap` object combines well with methods of the following packages:
115-
* [Arpack.jl](https://github.com/JuliaLinearAlgebra/Arpack.jl): iterative eigensolver `eigs` and SVD `svds`;
116-
* [IterativeSolvers.jl](https://github.com/JuliaMath/IterativeSolvers.jl): iterative solvers, eigensolvers, and SVD;
136+
* [Arpack.jl](https://github.com/JuliaLinearAlgebra/Arpack.jl): iterative eigensolver
137+
`eigs` and SVD `svds`;
138+
* [IterativeSolvers.jl](https://github.com/JuliaMath/IterativeSolvers.jl): iterative
139+
solvers, eigensolvers, and SVD;
117140
* [TSVD.jl](https://github.com/andreasnoack/TSVD.jl): truncated SVD `tsvd`.
118141
119142
```

0 commit comments

Comments
 (0)