Design for the solve-related solutions

0 views
Skip to first unread message

Clement Pernet

unread,
Feb 11, 2008, 2:48:45 PM2/11/08
to linbox...@googlegroups.com
Hi,

Following Dave Saunders proposal, here is the framework I propose for
integrating these functions in LinBox solutions.

3 solutions (each of them corresponding to a file in linbox/solution),
and several functions in each of them:

linbox/solution/solve.h
* solveRight (x,A,b) // general case: compute arbitrary x s.t. Ax=b.
If no such x exist, throw an exception
* solveRight (X,A,B) // idem where X,B are m*k matrices
* solveLeft (x,A,b) // idem for xA=b
* solveRight(X,A,b) // idem for XA=B

* solveNonSingularLeft (x,A,b) //return the unique solution,
assuming A is non singular.
* solveNonSingularLeft (x,A,b)
* solveNonSingularRight (X,A,B)
* solveNonSingularRight (X,A,B)
We can discuss the point whether this should be a separate function
or flag in the solve_right/left function.

* solveBasisRight/Left (X,A,b) // return a basis of the space of
solutions of the underdetermined system Ax=b
* solveRandomRight/Left (x,A,b) // sample a solution x randomly from
the space of solutions

* solveRight/Left (x,A,b,M) // the user provide the method

all these functions have to work over Z and Zp, dense and BlackBox

linbox/solution/nullspace.h
* nullspaceBasisLeft/Right (X,A) // basis of the nullspace.
* nullspaceVectorLeft/Right (x,A) // sample a random vector for the
nullspace of A

And one more solution that we ought to provide:

linbox/solution/echelon.h
* echelonForm (X,A) // put A in echelon form if over GF(p), hermite
form if over Z.
* echelonForm (A) // idem in-place

These methods are not necessarly suited to sparse/blackbox computations
(especially echelon forms), so let's say we require it to be always
defined for dense matrices, and provide the blackbox/sparse
implementation when possible.

Dave, does it sound compatible with what you had in mind?

Ok, let's get it done!

Clément

Reply all
Reply to author
Forward
0 new messages