Bitstypes and algebra are not my home ground, but the lufact that Tim references is supposed to work generically and I think it does. Have a look at
https://gist.github.com/andreasnoackjensen/9132511 I am not sure the algebra is right. The important thing for lufact is that that the type is closed under /. Therefore I use rationals over GF(2). Maybe it is better just to define / for GF2. 2014-02-21 4:11 GMT+01:00 Stefan Karpinski <[email protected]>: > Yes, it's entirely possible that his might work for matrices over finite > fields. If not, we should see if we can modify it so that it does work. > > > On Thu, Feb 20, 2014 at 10:02 PM, Tim Holy <[email protected]> wrote: > >> It's not Gaussian elimination (it's better!), but aren't these relevant? >> https://github.com/JuliaLang/julia/pull/5381 >> https://github.com/JuliaLang/julia/pull/5430 >> >> --Tim >> >> On Thursday, February 20, 2014 09:12:51 PM Stefan Karpinski wrote: >> > We ought to have a generic Gaussian elimination algorithm and making >> sure >> > that it can be used for finite fields is a good test of its generality. >> > This is definitely the kind of thing that can be more reasonably in >> Julia >> > than in many other systems. The big difference is that while in this >> > particular case you may have to write Gaussian elimination, at least the >> > next person with their own integer matrix type won't. >> > >> > On Thu, Feb 20, 2014 at 7:29 PM, andrew cooke <[email protected]> >> wrote: >> > > Indeed, but then I need to provide my own implementation. I was >> hoping >> > > (navely in retrospect, since everyone else wants fast rather than >> generic >> > > code) that I could call generic code for "matrix division" with a new >> > > numerical type and it would "just work". >> > > >> > > I think this is still the best approach - but I need to write that >> code >> > > (Gaussian elimination) myself, in a generic way, then define my new >> > > numeric >> > > type, then call it. >> > > >> > > Which is much more work than I had hoped. >> > > >> > > Cheers, >> > > Andrew >> > > >> > > On Thursday, 20 February 2014 21:14:38 UTC-3, Patrick O'Leary wrote: >> > >> You can redefine the \ operator for your type to not do this. >> > >> >> > >> On Thursday, February 20, 2014 6:08:31 PM UTC-6, andrew cooke wrote: >> > >>> While I still don't see a problem with the theory side of this, >> there is >> > >>> a practical problem - Gaussian Elimination in Julia seems to be >> > >>> delegated >> > >>> to LAPACK and arguments are promoted to Float: >> > >>> >> > >>> julia> [1 0; 0 1] \ [1, 2] >> > >>> >> > >>> 2-element Array{Float64,1}: >> > >>> 1.0 >> > >>> 2.0 >> > >>> >> > >>> Andrew >> > >>> >> > >>> On Thursday, 20 February 2014 19:45:28 UTC-3, andrew cooke wrote: >> > >>>> A broad and a narrow question... >> > >>>> >> > >>>> If Julia supports the definition of new integer types can I define >> a >> > >>>> new type for a finite field and then use existing linear algebra >> > >>>> libraries >> > >>>> to do maths with them? Could I define an integer type for >> polynomials? >> > >>>> Is >> > >>>> this the kind of thing that would work in theory but not in >> practice? >> > >>>> Has >> > >>>> anyone done this? >> > >>>> >> > >>>> Specifically, I need to solve a problem modulo 2 (GF(2) - addition >> and >> > >>>> subtraction are XOR; multiplication is AND; division is trivial). >> I >> > >>>> was >> > >>>> about to write my own Gaussian Elimination and then remembered a >> > >>>> comment >> > >>>> from here saying Julia is the first language where you can define >> new >> > >>>> integers... >> > >>>> >> > >>>> Am I talking rubbish? I'm not a mathematician, so I may be >> completely >> > >>>> muddled anyway. >> > >>>> >> > >>>> Thanks, >> > >>>> Andrew >> > >>>> >> > >>>> PS I guess for best speed I should use a Uint for my 0s and 1s? >> > >>>> Assuming the problem is small enough that it will still fit in >> cache? >> > > -- Med venlig hilsen Andreas Noack Jensen
