linbox
Functions
smith.C File Reference
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <linbox/ring/modular.h>
#include <linbox/matrix/sparse-matrix.h>
#include <linbox/algorithms/smith-form-sparseelim-local.h>
#include <linbox/util/timer.h>
#include <linbox/ring/local2_32.h>
#include <linbox/ring/PIR-modular-int32.h>
#include <linbox/algorithms/smith-form-local.h>
#include <linbox/algorithms/smith-form-iliopoulos.h>
#include <linbox/algorithms/smith-form-adaptive.h>

Functions

template<class PIR >
void Mat (DenseMatrix< PIR > &M, PIR &R, int n, string src, string file, string format)
 Output matrix is determined by src which may be: "random-rough" This mat will have s, near sqrt(n), distinct invariant factors, each repeated twice), involving the s primes 101, 103, ... More...
 
template<class I1 , class Lp >
void distinct (I1 a, I1 b, Lp &c)
 end krat //////////////////////////// More...
 

Function Documentation

void Mat ( DenseMatrix< PIR > &  M,
PIR &  R,
int  n,
string  src,
string  file,
string  format 
)

Output matrix is determined by src which may be: "random-rough" This mat will have s, near sqrt(n), distinct invariant factors, each repeated twice), involving the s primes 101, 103, ...

"random" This mat will have the same nontrivial invariant factors as diag(1,2,3,5,8, ... 999, 0, 1, 2, ...). "fib" This mat will have the same nontrivial invariant factors as diag(1,2,3,5,8, ... fib(k)), where k is about sqrt(n). The basic matrix is block diagonal with i-th block of order i and being a tridiagonal {-1,0,1} matrix whose snf = diag(i-1 1's, fib(i)), where fib(1) = 1, fib(2) = 2. But note that, depending on n, the last block may be truncated, thus repeating an earlier fibonacci number. "file" (or any other string) mat read from named file with format "sparse" or "dense". Also "tref" and file with format "kdense"

void distinct ( I1  a,
I1  b,
Lp &  c 
)

end krat ////////////////////////////

Bug:
this already exists elsewhere
Examples:
examples/smith.C.