-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prepare for finite fields #12
base: main
Are you sure you want to change the base?
Conversation
Code somehow runs but is not clean * how to handle pivoting is clear, LinearAlgebra of 1.9 provides RowNonZero() pivoting and lupivottype(T) strategy, this needs to be used on 1.9, we need to define our own for <1.9 * As in the test example for LinearAlgebra, we need to define lupivottype, abs and isless for finite fields. See https://github.com/JuliaLang/julia/blob/1471cd9782aad18f54d8cb04316193ada15e37bd/stdlib/LinearAlgebra/test/generic.jl#L470 Otherwise the code does not compile. May be one can avoid this by modularizing LU. * The BIGGY problem is more serious: it occurs that BIGGY is used as an undefined marker of unititialized matrix entries. It is not to be expected that finite fields will have some "unitialized" value. Getting rid of this would need a rewrite of the input methods. This IMHO would improve the API - push! is very efficient, so we can rely on this, no need to estimate nnz before.
Codecov ReportBase: 90.31% // Head: 90.23% // Decreases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## main #12 +/- ##
==========================================
- Coverage 90.31% 90.23% -0.08%
==========================================
Files 13 13
Lines 1641 1475 -166
==========================================
- Hits 1482 1331 -151
+ Misses 159 144 -15
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
See JuliaLang/julia#44571 for the discussion of the RowNonZero strategy used in this PR. |
I'd be very interested to try those not only for finite fields, but also for exact fields like Cyclotomics. Here: I'd be happiest to replace all of this code by some external implementation ;) The matrices I deal with are moderately large (~50_000×50_000), usually very low rank (25-500) and very regular in structure. They come as matrix realizations of projections in group algebras. I'm interested in obtaining any of the (L, U) factors (currently we're doing |
Very interesting! Never heard about Cyclotomic numbers before. After defining However after your post I am not sure if this covers all your use cases. AFAIU (@PetrKryslUCSD may correct me), Sparspak is focused on the solution of nonsingular problems, so there is probably no handling of rank deficient matrices, and I also guess that adding this possibility would need quite some effort. |
triggered by https://discourse.julialang.org/t/from-toy-to-production-code-with-sparse-matrix-and-sparse-direct-factorizations/89105/13
Just a first try. Not yet ready for merge.
Main blocking things:
lupivottype(T)=RowNonZero()
, which should be no problem. However for compiling,abs
,isless
are needed as well. Same in the moment for Julia linear algebra. May be this can be avoided by restructuring the code.Otherwise, for GaloisFields.jl the PR works.