2014-05-13 23:24 GMT+02:00 Matthias Felleisen <matth...@ccs.neu.edu>:
> On May 13, 2014, at 4:19 PM, Neil Toronto <neil.toro...@gmail.com> wrote:
>> We need a predicate like
>>
>>  (: flonum-matrix? (All (A) (-> (Matrix A) Boolean : (Matrix Flonum))))
>
>
> I think in our world of types we could even have
>
>  (: flonum-matrix? (All (A) (-> (Matrix A) Boolean : (TriangularMatrix A))))
>
> and such and then dispatch to even more special solvers. It's kind of like a 
> number hierarchy generalization. Just a thought.

I think it was a mistake to represent matrices simply as naked arrays.

If the representation were

   (struct matrix (representation-type representation properties))

then one could take advantage of the properties of the matrix.

E.g. for a symmetric matrix it is enough to store the upper triangular
part (the same goes for a triangular matrix).

This would also allow mixing computation between ones representated
as two dimensional arrays and LAPACK ones.

Problems using a dispatch based on inspecting the matrix values:
  *  there are two many interesting properties to check
     (symmetric, hermition, upper/lower-triangular, sparse)
  * times saved is less than the time used to check
    (consider the case of adding two symmetric matrices)


--
Jens Axel Søgaard

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to