Compute the integer characteristic polynomial of symetric matrices with (0,1) coefficients.
Compute the integer characteristic polynomial of symetric matrices with (0,1) coefficients.Example for Pr G. Royle.
#include <iostream>
#include <linbox/blackbox/zero-one.h>
#include <givaro/zring.h>
#include <linbox/solutions/charpoly.h>
#include <linbox/solutions/methods.h>
template <class Field, class Polynomial>
void printPolynomial(const Field& F, const Polynomial& P)
{
int n= (int) P.size()-1;
if (n==1){
cout<<"X";
if ( P[0] != 0)
F.write(cout<<((P[0]>0)?"+":""),P[0]);
}
else{
cout<<"X^"<<n;
for ( int i=n-1; i>1; --i)
if (!F.isZero(P[(size_t)i]))
F.write(cout<<((P[(size_t)i]>0)?"+":""),P[(size_t)i])<<"*X^"<<i;
if ( P[1] != 0)
F.write(cout<<((P[1]>0)?"+":""),P[1])<<"*X";
if ( P[0] != 0)
F.write(cout<<((P[0]>0)?"+":""),P[0]);
}
}
int main (
int argc,
char **argv)
{
commentator().
getMessageClass (BRIEF_REPORT).setMaxDepth (2);
commentator().getMessageClass (BRIEF_REPORT).setMaxDetailLevel (Commentator::LEVEL_UNIMPORTANT);
if (argc != 2) {
cerr << "Usage: graph-charpoly <0/1-symmetric-matrix-file-in-SMS-format>" <<endl;
return -1;
}
ifstream input (argv[1]);
if (!input) {
cerr << "Error opening matrix file " << argv[1] << endl;
return -1;
}
typedef Givaro::ZRing<Integer> IRing_t;
IRing_t ZZ;
A.read (input);
commentator().
report(1, BRIEF_REPORT)<<
"A is " << A.rowdim() <<
" by " << A.coldim() << endl;
charpoly (c_A, A, Method::Blackbox(Method::Wiedemann(Shape::Symmetric)));
cout<< "Characteristic Polynomial is ", c_A) << std::endl;
return 0;
}
Dense Polynomial representation using Givaro.
Definition dense-polynomial.h:50
Ring (in fact, a unique factorization domain) of polynomial with coefficients in class NTL_zz_p (inte...
Definition ntl-lzz_px.h:78
std::ostream & write(std::ostream &os) const
Write a description of the field.
Definition ntl-lzz_px.h:498
Time and space efficient representation of sparse {0,1}-matrices.
Definition zo.h:71
int main()
no command line args
Definition ex-fields-archetype.C:70
linbox base configuration file
Namespace in which all linbox code resides.
Definition alt-blackbox-block-container.h:4