root / tests / test-compressQ.C

Revision 1, 1.8 kB (checked in by pernet, 2 years ago)

Import de fflas-ffpack

Line 
1/* -*- mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2//--------------------------------------------------------------------------
3//          Test for the krylov-elimination
4//--------------------------------------------------------------------------
5// usage: test-krylov-elim p A, to compute the rank profile of the (n+m)xn matrix B
6// formed by the n identity vectors and the mxn matrix A over Z/pZ
7//-------------------------------------------------------------------------
8
9//-------------------------------------------------------------------------
10#define DEBUG 0
11
12#include <iostream>
13#include <list>
14#include <vector>
15#include "Matio.h"
16#include "timer.h"
17using namespace std;
18#include "fflas-ffpack/modular-balanced.h"
19#include "fflas-ffpack/ffpack.h"
20
21
22typedef Modular<double> Field;
23
24template<class T>
25std::ostream& printvect(std::ostream& o, vector<T>& vect){
26        for(size_t i=0; i < vect.size(); ++i)
27                o << vect[i] << " " ;
28        return o << std::endl;
29}
30
31int main(int argc, char** argv){
32
33        int m,n;
34
35        Field F(65521);
36        int N = 17;
37        double * A = new double[N*N];
38        double * tmp = new double[N*N];
39        size_t * deg = new size_t[N];
40       
41        for (size_t i=0; i<N*N; ++i)
42                A[i] = 0;
43        for (size_t i=0; i<3; ++i)
44                A[i+i*N] = 1;
45
46        for (size_t i=3; i<6; ++i)
47                A[i+1+i*N] = 1;
48        for (size_t i=6; i<9; ++i)
49                A[i+2+i*N] = 1;
50
51        A[12+9*N] = 1;
52        A[13+10*N] = 1;
53        A[14+12*N] = 1;
54        A[15+15*N] = 1; 
55        A[16+16*N] = 1;
56        deg[0]  = 4; deg[1] = 4; deg[2] = 4;deg[3] = 2; deg[4] = 1; deg[5] =2;
57        for (size_t i=0; i<N; ++i)
58                A[11+i*N] = A[7+i*N] = A[3+i*N] = i % 10;
59
60        write_field(F, cerr, A, N, N, N);
61       
62        FFPACK::CompressRowsQK (F, N, A+9*N, N, tmp, N, deg+3, 4, 3 );
63
64        write_field(F, cerr, A, N, N, N);
65               
66        FFPACK::DeCompressRowsQK (F, N, N-9, A+9*N, N, tmp, N, deg+3, 4, 3 );
67
68        write_field(F, cerr, A, N, N, N);
69
70               
71}
Note: See TracBrowser for help on using the browser.