wellposed / hblas

haskell bindings for blas and lapack
www.wellposed.com
BSD 3-Clause "New" or "Revised" License
49 stars 19 forks source link

Add padded matrix types and packed analogues #15

Open jhenahan opened 10 years ago

jhenahan commented 10 years ago

Re: our conversation in #n-h the other day:

and the packed analogues. I'll then get to work on their versions of gemm. I may also have a go at writing the types myself if I have time tomorrow.

cartazio commented 10 years ago

Cool! Theres some subtleties, you'll notice if you look at and stare a bit.

Just do the padded versions for now. the Blas routines only work on those versions. Its lapack that can use packed. (but yes, lets do those too!)

the docs on triangular mult, trmm and the analogous ones for hemm (hermitian mat mul) and symm (symmetric mat mult)

will help you understand a bit of whats going on

we'll also need to have types like the following

data Side = Left | Right

data Diagonal = Unit | NonUnit
data SDiagonal :: Diagonal -> * where 
     SUnit :: SDiagonal Unit 
     SNonUnit :: SDiagonal NonUnit

data UpperLower = Upper | Lower
data SUpperLower :: UpperLower ->* where
       SUpper :: SupperLower Upper
       SLower :: SupperLower Lower 

as you might guess, Diagonal and UpperLower will be singletons in the padded matrix formats along with the more obvious Row vs Column Major is, and the Left Right business is part of the mat mult api's themselves

cartazio commented 10 years ago

I look forward to reviewing the patch! :)

jhenahan commented 10 years ago

I'll keep subtleties in mind. :laughing: Thanks for the doc links.

cartazio commented 10 years ago

holler and ask questions on this ticket if you get stuck or confused. I'm trying to have any "explanations" be logged on tickets so that tis easier to glue together less terrible docs that are searchable online later :)