|
1 |
| -# What's new? |
2 |
| - |
3 |
| -### What's new in v2.7 |
4 |
| -* Potential reduction of memory allocations in multiplication of |
5 |
| - `LinearCombination`s, `BlockMap`s, and real- or complex-scaled `LinearMap`s. |
6 |
| - For the latter, a new internal type `ScaledMap` has been introduced. |
7 |
| -* Multiplication code for `CompositeMap`s has been refactored to facilitate to |
8 |
| - provide memory for storage of intermediate results by directly calling helper |
9 |
| - functions. |
10 |
| - |
11 |
| -### What's new in v2.6 |
12 |
| -* New feature: "lazy" Kronecker product, Kronecker sums, and powers thereof |
13 |
| - for `LinearMap`s. `AbstractMatrix` objects are promoted to `LinearMap`s if |
14 |
| - one of the first 8 Kronecker factors is a `LinearMap` object. |
15 |
| -* Compatibility with the generic multiply-and-add interface (a.k.a. 5-arg |
16 |
| - `mul!`) introduced in julia v1.3 |
17 |
| - |
18 |
| -### What's new in v2.5 |
19 |
| -* New feature: concatenation of `LinearMap`s objects with `UniformScaling`s, |
20 |
| - consistent with (h-, v-, and hc-)concatenation of matrices. Note, matrices |
21 |
| - `A` must be wrapped as `LinearMap(A)`, `UniformScaling`s are promoted to |
22 |
| - `LinearMap`s automatically. |
23 |
| - |
24 |
| -### What's new in v2.4 |
25 |
| -* Support restricted to Julia v1.0+. |
26 |
| - |
27 |
| -### What's new in v2.3 |
28 |
| -* Fully Julia v0.7/v1.0/v1.1 compatible. |
29 |
| -* Full support of noncommutative number types such as quaternions. |
30 |
| - |
31 |
| -### What's new in v2.2 |
32 |
| -* Fully Julia v0.7/v1.0 compatible. |
33 |
| -* A `convert(SparseMatrixCSC, A::LinearMap)` function, that calls the `sparse` |
34 |
| - matrix generating function. |
35 |
| - |
36 |
| -### What's new in v2.1 |
37 |
| -* Fully Julia v0.7 compatible; dropped compatibility for previous versions of |
38 |
| - Julia from LinearMaps.jl v2.0.0 on. |
39 |
| -* A 5-argument version for `mul!(y, A::LinearMap, x, α=1, β=0)`, which |
40 |
| - computes `y := α * A * x + β * y` and implements the usual 3-argument |
41 |
| - `mul!(y, A, x)` for the default `α` and `β`. |
42 |
| -* Synonymous `convert(Matrix, A::LinearMap)` and `convert(Array, A::LinearMap)` |
43 |
| - functions, that call the `Matrix` constructor and return the matrix |
44 |
| - representation of `A`. |
45 |
| -* Multiplication with matrices, interpreted as a block row vector of vectors: |
46 |
| - * `mul!(Y::AbstractArray, A::LinearMap, X::AbstractArray, α=1, β=0)`: |
47 |
| - applies `A` to each column of `X` and stores the result in-place in the |
48 |
| - corresponding column of `Y`; |
49 |
| - * for the out-of-place multiplication, the approach is to compute |
50 |
| - `convert(Matrix, A * X)`; this is equivalent to applying `A` to each |
51 |
| - column of `X`. In generic code which handles both `A::AbstractMatrix` and |
52 |
| - `A::LinearMap`, the additional call to `convert` is a noop when `A` is a |
53 |
| - matrix. |
54 |
| -* Full compatibility with [Arpack.jl](https://github.com/JuliaLinearAlgebra/Arpack.jl)'s |
55 |
| - `eigs` and `svds`; previously only `eigs` was working. For more, nicely |
56 |
| - collaborating packages see the [Example](#example) section. |
| 1 | +# Version history |
| 2 | + |
| 3 | +## What's new in v3.0 |
| 4 | + |
| 5 | +* BREAKING change: Internally, any dependence on former `A*_mul_B!` methods is abandonned. |
| 6 | + For custom `LinearMap` subtypes, there are now two options: |
| 7 | + 1. In case your type is invariant under adjoint/transposition (i.e., |
| 8 | + `adjoint(L::MyLinearMap)::MyLinearMap` similar to, for instance, |
| 9 | + `LinearCombination`s or `CompositeMap`s, `At_mul_B!` and `Ac_mul_B!` do |
| 10 | + not require any replacement! Rather, multiplication by `L'` is, in this case, |
| 11 | + handled by `mul!(y, L::MyLinearMap, x[, α, β])`. |
| 12 | + 2. Otherwise, you will need to define `mul!` methods with the signature |
| 13 | + `mul!(y, L::TransposeMap{<:Any,MyLinearMap}, x[, α, β])` and |
| 14 | + `mul!(y, L::AdjointMap{<:Any,MyLinearMap}, x[, α, β])`. |
| 15 | +* Left multiplying by a transpose or adjoint vector (e.g., `y'*A`) |
| 16 | + produces a transpose or adjoint vector output, rather than a composite `LinearMap`. |
| 17 | +* Block concatenation now handles matrices and vectors directly by internal promotion |
| 18 | + to `LinearMap`s. For `[h/v/hc]cat` it suffices to have a `LinearMap` object anywhere |
| 19 | + in the list of arguments. For the block-diagonal concatenation via |
| 20 | + `SparseArrays.blockdiag`, a `LinearMap` object has to appear among the first 8 arguments. |
| 21 | + This restriction, however, does not apply to block-diagonal concatenation via |
| 22 | + `Base.cat(As...; dims=(1,2))`. |
| 23 | +* Introduction of more expressive and visually appealing `show` methods, replacing |
| 24 | + the fallback to the generic `show`. |
| 25 | + |
| 26 | +## What's new in v2.7 |
| 27 | + |
| 28 | +* Potential reduction of memory allocations in multiplication of |
| 29 | + `LinearCombination`s, `BlockMap`s, and real- or complex-scaled `LinearMap`s. |
| 30 | + For the latter, a new internal type `ScaledMap` has been introduced. |
| 31 | +* Multiplication code for `CompositeMap`s has been refactored to facilitate to |
| 32 | + provide memory for storage of intermediate results by directly calling helper |
| 33 | + functions. |
| 34 | + |
| 35 | +## What's new in v2.6 |
| 36 | + |
| 37 | +* New feature: "lazy" Kronecker product, Kronecker sums, and powers thereof |
| 38 | + for `LinearMap`s. `AbstractMatrix` objects are promoted to `LinearMap`s if |
| 39 | + one of the first 8 Kronecker factors is a `LinearMap` object. |
| 40 | +* Compatibility with the generic multiply-and-add interface (a.k.a. 5-arg |
| 41 | + `mul!`) introduced in julia v1.3 |
| 42 | + |
| 43 | +## What's new in v2.5 |
| 44 | + |
| 45 | +* New feature: concatenation of `LinearMap`s objects with `UniformScaling`s, |
| 46 | + consistent with (h-, v-, and hc-)concatenation of matrices. Note, matrices |
| 47 | + `A` must be wrapped as `LinearMap(A)`, `UniformScaling`s are promoted to |
| 48 | + `LinearMap`s automatically. |
| 49 | + |
| 50 | +## What's new in v2.4 |
| 51 | + |
| 52 | +* Support restricted to Julia v1.0+. |
| 53 | + |
| 54 | +## What's new in v2.3 |
| 55 | + |
| 56 | +* Fully Julia v0.7/v1.0/v1.1 compatible. |
| 57 | +* Full support of noncommutative number types such as quaternions. |
| 58 | + |
| 59 | +## What's new in v2.2 |
| 60 | + |
| 61 | +* Fully Julia v0.7/v1.0 compatible. |
| 62 | +* A `convert(SparseMatrixCSC, A::LinearMap)` function, that calls the `sparse` |
| 63 | + matrix generating function. |
| 64 | + |
| 65 | +## What's new in v2.1 |
| 66 | + |
| 67 | +* Fully Julia v0.7 compatible; dropped compatibility for previous versions of |
| 68 | + Julia from LinearMaps.jl v2.0.0 on. |
| 69 | +* A 5-argument version for `mul!(y, A::LinearMap, x, α=1, β=0)`, which |
| 70 | + computes `y := α * A * x + β * y` and implements the usual 3-argument |
| 71 | + `mul!(y, A, x)` for the default `α` and `β`. |
| 72 | +* Synonymous `convert(Matrix, A::LinearMap)` and `convert(Array, A::LinearMap)` |
| 73 | + functions, that call the `Matrix` constructor and return the matrix |
| 74 | + representation of `A`. |
| 75 | +* Multiplication with matrices, interpreted as a block row vector of vectors: |
| 76 | + * `mul!(Y::AbstractArray, A::LinearMap, X::AbstractArray, α=1, β=0)`: |
| 77 | + applies `A` to each column of `X` and stores the result in-place in the |
| 78 | + corresponding column of `Y`; |
| 79 | + * for the out-of-place multiplication, the approach is to compute |
| 80 | + `convert(Matrix, A * X)`; this is equivalent to applying `A` to each |
| 81 | + column of `X`. In generic code which handles both `A::AbstractMatrix` and |
| 82 | + `A::LinearMap`, the additional call to `convert` is a noop when `A` is a |
| 83 | + matrix. |
| 84 | +* Full compatibility with [Arpack.jl](https://github.com/JuliaLinearAlgebra/Arpack.jl)'s |
| 85 | + `eigs` and `svds`; previously only `eigs` was working. For more, nicely |
| 86 | + collaborating packages see the [Example](#example) section. |
0 commit comments