Path: blob/master/sage/libs/linbox/matrix_rational_dense_linbox.cpp
4048 views
#include<iostream>12#include "gmp.h"3#include "matrix_rational_dense_linbox.h"4#include "linbox/integer.h"5#include "linbox/matrix/blas-matrix.h"6#include "linbox/matrix/matrix-domain.h"7#include "linbox/field/gmp-rational.h"8#include "linbox/blackbox/dense.h"9#include "linbox/algorithms/echelon-form.h"10//#include "linbox/field/givaro-rational.h"11#include "linbox/field/modular.h"121314using namespace LinBox;15using namespace std;1617GMPRationalField QQ;18SpyInteger spy;1920void new_gmp_matrix(DenseMatrix<GMPRationalField>& A, mpq_t** matrix, size_t nrows, size_t ncols) {21size_t i, j;22for (i=0; i < nrows; i++) {23for (j=0; j < ncols; j++) {24GMPRationalField::Element t;25t = A.getEntry(i, j);26integer x;27mpz_set(spy.get_mpz(QQ.get_num(x, t)), mpq_numref(matrix[i][j]));28mpz_set(spy.get_mpz(QQ.get_den(x, t)), mpq_denref(matrix[i][j]));29A.setEntry(i, j, t);30}31}32}3334void linbox_rational_dense_echelon_form_2(mpq_t** matrix, size_t nr, size_t nc)35{36/* EchelonFormDomain<GMPRationalField> EF(QQ);37DenseMatrix<GMPRationalField> A(QQ,nr, nc);38DenseMatrix<GMPRationalField> E(QQ,nr, nc);39new_gmp_matrix(A, matrix, nr, nc);40cout << "made matrix\n";41EF.rowEchelon(E, A); */42}4344typedef Modular<int> ModInt;45ModInt F(32771);4647void linbox_rational_dense_echelon_form(mpq_t** matrix, size_t nr, size_t nc)48{49EchelonFormDomain< ModInt > EF(F);50DenseMatrix<ModInt> A(F,nr, nc);51DenseMatrix<ModInt> E(F,nr, nc);52size_t k;53k = 19;54for (size_t i=0; i < nr; i++)55for (size_t j=0; j < nc; j++) {56A.setEntry(i,j,5+i*i+j-j*j+i*i*i+k*k);57k += i*i + j*j + 17;58}59// new_gmp_matrix(A, matrix, nr, nc);60cout << "made matrix\n";61EF.rowEchelon(E, A);62cout << "did echelon\n";63}646566