This looks very, very cool.
On Sunday, June 15, 2014 12:08:52 PM UTC-5, Jutho wrote: > > Dear Julia users, > > I have just added a new Julia package for working with linear maps, also > known as linear transformations or linear operators (although the latter > term restricts to the slightly more restricted case where domain and > codomain are the same, i.e. number of rows and columns of the matrix > representation are the same). The idea is that a LinearMap object is like > an AbstractMatrix in that it transforms vectors into vectors by > multiplication, but that it does not need to be represented as a Matrix. > > The package provides functionality for wrapping linear functions without > explicit matrix representation (e.g. cumsum, fft, diff, ... ) as LinearMap > objects, for combining LinearMap objects via composition or linear > combination, and for taking transposes. All of these operations are > evaluated 'lazily', i.e. only when the combined object is multiplied with a > vector will the operations be performed, and in such a way that only matrix > vector multiplications and vector additions need to be computed. In > addition, these operations are implemented with efficiency in mind. They > try to minimise the number of temporaries (i.e. minimal memory allocation) > and make available mutating operations such as A_mul_B!, even when this was > not provided by e.g. the function that performs the matrix vector product. > In addition, they can be combined with normal AbstractMatrix objects and > with the built in identity I (UniformScaling). > > The application of this package is in first place in the context of > iterative algorithms for linear systems or eigenvalue problems, which > should be implemented using duck typing of the matrix/operator argument. In > particular, it works well in combination with eigs, Julia's built in > wrapper for Arpack. Like AbstractMatrix objects, LinearMap objects respond > to the methods size, isreal, eltype, issym, ishermitian and isposdef, where > it is even attempted to cleverly guess the correct values for these latter > properties (i.e. A'*B*B'*A will be recognised as a positive definite > hermitian linear map). > > Check it out at https://github.com/Jutho/LinearMaps.jl . Comments and > suggestions are appreciated. > > Jutho >
