- matrix m(101,101);
- symbol lambda("lambda");
- for (unsigned r=0; r<101; ++r) {
- for (unsigned c=0; c<10; ++c) {
- m.set(r,
- unsigned(ex_to_numeric(w101_numeric[r][2*c+1]).to_int()-1),
- w101_numeric[r][2*c+2]);
- }
- }
- ex cp = m.charpoly(lambda);
-
- if (cp.coeff(lambda,96) != numeric("75287520")) {
- clog << "characteristic polynomial miscalculated as " << cp << endl;
- return 1;
- }
- return 0;
+ // same matrix as in test P:
+ const unsigned n = 10;
+ matrix m(n*n+1,n*n+1);
+ for (unsigned i=1; i<=n*n; ++i)
+ m.set(i-1,i-1,1);
+ for (unsigned i=1; i<=n*n; ++i)
+ if (!(i%n))
+ m.set(i-1,n*n,1);
+ for (unsigned i=1; i<=n*n; ++i)
+ if (!((i-1)%n))
+ m.set(n*n,i-1,n-(i-1)/n);
+ for(unsigned i=1; i<=n; ++i)
+ for (unsigned j=1; j<=n; ++j)
+ if (i-j)
+ for (unsigned k=1; k<n; ++k)
+ m.set((i-1)*n+k-1,(j-1)*n+k,n+1-j);
+
+ symbol lambda("lambda");
+ ex cp = m.charpoly(lambda);
+
+ if (cp.coeff(lambda,96) != numeric("75287520")) {
+ clog << "characteristic polynomial miscalculated as " << cp << endl;
+ return 1;
+ }
+ return 0;