Determinant of rational matrix.
#include <iostream>
#include <givaro/givrational.h>
typedef Givaro::QField<Givaro::Rational> Rationals;
template<typename RMatrix>
int ratdet(int argc, char **argv) {
std::ifstream input (argv[1]);
if (!input) {
std::cerr << "Error opening matrix file: " << argv[1] << std::endl;
return -1;
}
Rationals QQ;
RMatrix A ( ms );
LinBox::Timer tim ; tim.clear() ; tim.start();
tim.stop();
std::cout << "Determinant is ";
QQ.write(std::cout, det_A) << ':' << std::flush;
std::clog << tim << std::endl;
return 0;
}
int main (int argc, char **argv)
{
commentator().
setMaxDetailLevel (-1);
commentator().
setMaxDepth (-1);
commentator().
setReportStream (std::cerr);
bool dense=true;
if (argc < 2 || argc > 3) {
std::cerr << "Usage: ratdet <matrix-file-in-supported-format> [d/s]" << std::endl;
return -1;
}
if (argc == 3) {
if (argv[2][0] != 'd') dense=false;
}
if (dense)
return ratdet< DenseMatrix<Rationals> >(argc,argv);
else
return ratdet< SparseMatrix<Rationals, SparseStorage> >(argc, argv);
}
elements of GMP_Rationals.
Definition: element/gmp-rational.h:43
MatrixStream.
Definition: matrix-stream.h:200
Blackbox::Field::Element & det(typename Blackbox::Field::Element &d, const Blackbox &A, const DomainCategory &tag, const DetMethod &Meth)
Compute the determinant of A.
linbox base configuration file
Namespace in which all linbox code resides.
Definition: alt-blackbox-block-container.h:4
A SparseMatrix<_Field, _Storage> ....