[Haskell-cafe] Fwd: Fwd: Re: the state of Yarr?

Alberto Ruiz aruiz at um.es
Thu Jan 7 12:12:13 UTC 2016


Hi Petr and Dominic,

The last version of hmatrix supports integer elements and modular 
arithmetic, including inverting matrices:

https://hackage.haskell.org/package/hmatrix-0.17.0.1/docs/Numeric-LinearAlgebra.html#v:luSolve-39-

This is experimental and probably not very useful for serious 
applications, but in any case here you can find some toy examples:

http://dis.um.es/~alberto/hmatrix/finite.html

Alberto

On 07/01/16 08:51, Dominic Steinitz wrote:
> Hi Petr,
>
> It's not too hard to write an inverse for matrices
>
>> inv :: (KnownNat n, (1 <=? n) ~ 'True) => Sq n -> Sq n
>> inv m = fromJust $ linSolve m eye
> But since hmatrix is LAPACK this is not going to help you with GF(2).
>
> I wasn't aware of the 'tensor' package either but it does contain some
> interesting ideas and by the looks of it should be able to invert
> matrices even for finite fields. I'd be interested in its performance.
> Perhaps you could write a benchmark and I can try it with Yarr?
>
> Probably one could improve 'tensor' by using type level literals a la
> the static part of hmatrix and maybe base it over Yarr for performance.
> I note it is GPL which I am not a great fan of and has no publicy
> available repository (at least I wasn't able to find one).
>
> Good luck and please report back with anything interesting you discover
> on your journey.
>
> Dominic.
>
> On 06/01/2016 20:12, Petr Pudlák wrote:
>> Hi Dominic,
>>
>> thank you for the detailed answer! I'm looking for linear algebra over
>> finite fields (in particular GF(2)), and while hmatrix has some
>> support, it doesn't support inverting matrices, which is something I
>> need. So I'll need to look further. Just a moment ago I discovered the
>> 'tensor' package, which is flexible enough to add a new
>> representation. Currently it offers Vector, I'll try it out, and
>> perhaps it'd be possible to include yarr too, if Vector won't perform
>> well enough.
>>
>> All the best,
>> Petr
>>
>> st 6. 1. 2016 v 10:50 odesílatel Dominic Steinitz
>> <dominic at steinitz.org <mailto:dominic at steinitz.org>> napsal:
>>
>>     A problem with my email prevented this making it on to the mailing
>>     list.
>>
>>     Hi Petr,
>>
>>     I am not actively developing Yarr but I would very much like to. I
>>     keep
>>     it from bit-rotting. The problem as always is finding time. On the
>>     other
>>     hand I don't think repa is very active e.g. upgrading to vector-0.11
>>     took a while to happen although clearly more active than me on Yarr!
>>
>>     What I'd like is something like Python's numpy but safer and
>>     faster. If
>>     you look at the static module in the hmatrix package
>>     (https://hackage.haskell.org/package/hmatrix-0.17.0.1/docs/Numeric-LinearAlgebra-Static.html)
>>     you can see how type level literals can be used to prevent e.g.
>>     multiplying two inconsistent matrices together at compile time. I am
>>     sure we could do something better with either Yarr or repa (repa will
>>     currently give out of bounds errors at runtime).
>>
>>     For reasons I don't understand (I think a bug in Haddock) the
>>     documentation does not get generated.
>>
>>     There are examples of its use here:
>>     https://github.com/leventov/yarr/tree/master/tests. I wrote a blog
>>     using
>>     repa and Yarr here:
>>     https://idontgetoutmuch.wordpress.com/2013/08/06/planetary-simulation-with-excursions-in-symplectic-manifolds-6/
>>     and compare performance. You can safely ignore the theory and need
>>     only
>>     look at "Repa Implementation", "Yarr Implementation" and
>>     "Performance".
>>
>>     I think performance will depend on your application. I believe (but
>>     haven't confirmed) that repa will outperform Yarr on e.g grid based
>>     problems such as numerical methods for diffusions and Poisson. In the
>>     case of planets (or stars or particles) where everything is influenced
>>     by everything else then repa is a bad fit and Yarr outperforms.
>>
>>     If your application is linear algebra, I would think that hmatrix
>>     would
>>     have what you want or could be extended to give what you want since it
>>     is LAPACK under the covers.
>>
>>     I am very excited that you are interested in this area; it often feels
>>     very lonely.
>>
>>     Best wishes, Dominic.
>>
>>     On 06/01/2016 09:10, Petr Pudlák wrote:
>>     > Hi Dominic,
>>     >
>>     > what is the current state of Yarr? Is it being actively
>>     developed? Is
>>     > there some tutorial or documentation available?
>>     >
>>     > I'm deciding between repa and yarr for some linear algebra
>>     > computations. I found some references that yarr is more performant,
>>     > but I couldn't find much documentation and the hackage page [1]
>>     hasn't
>>     > indexed most modules for some reason, so there seems to be no good
>>     > place to start from. And the last commit was 9 months ago.
>>     >
>>     > [1]https://hackage.haskell.org/package/yarr
>>     >
>>     > Thank you,
>>     > Petr
>>
>>
>>
>>
>>
>>     _______________________________________________
>>     Haskell-Cafe mailing list
>>     Haskell-Cafe at haskell.org <mailto:Haskell-Cafe at haskell.org>
>>     http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list