[Haskell-cafe] matrix computations based on the GSL

Henning Thielemann lemming at henning-thielemann.de
Thu Jul 7 11:02:17 EDT 2005


On Thu, 7 Jul 2005, David Roundy wrote:

> Also note that if you have several vectors x for which you want to compute
> the dot product with metric A, and if you want to do this efficiently,
> you'll have to convert your list of vectors into a matrix anyways.  Writing
> functions of vectors instead as functions of 1xN matrices allows them to be
> efficiently applied to multiple vectors simultaneously, provided they are
> written carefully.

Btw. it is interesting that "source code efficiency" differs from runtime
efficiency for matrix operations:

a*b*c*v

where a, b, c are square matrices and v is a column vector/matrix. This
expression is interpreted as

((a*b)*c)*v

and it need cubic time to multiply matrices. In contrast to that

a*(b*(c*v))

needs only quadratic time.

If we would use matrices as what they are invented for, namely as
representations of linear operators, this efficiency leak would not occur:

mulVec a $ mulVec b $ mulVec c v

(Read mulVec as the mapping from a matrix to the linear operator it
represents.)



More information about the Haskell-Cafe mailing list