3#ifndef _dmat_gf_flint__hpp_
4#define _dmat_gf_flint__hpp_
46#include <M2/gc-include.h>
48#pragma GCC diagnostic push
49#pragma GCC diagnostic ignored "-Wconversion"
50#include <flint/fq_nmod_mat.h>
51#include <flint/fq_zech_mat.h>
52#pragma GCC diagnostic pop
54template <
typename ACoeffRing>
85 fq_zech_mat_init(
mArray, nrows, ncols,
ring().flintContext());
106 return fq_zech_mat_nrows(
mArray,
ring().flintContext());
110 return fq_zech_mat_ncols(
mArray,
ring().flintContext());
115 return *fq_zech_mat_entry(
mArray, row, column);
119 return *fq_zech_mat_entry(
mArray, row, column);
122 void resize(
size_t new_nrows,
size_t new_ncols)
124 DMat newMatrix(
ring(), new_nrows, new_ncols);
M2::ARingGFFlint — small GF(p^k) via FLINT Zech-logarithm tables.
M2::ARingGFFlint ACoeffRing
const ElementType * unsafeArray() const
DMat(const DMat< ACoeffRing > &M)
ACoeffRing::ElementType ElementType
const fq_zech_mat_t & fq_zech_mat() const
ElementType & entry(size_t row, size_t column)
fq_zech_mat_t & fq_zech_mat()
DMat(const ACoeffRing &R, size_t nrows, size_t ncols)
const ACoeffRing & ring() const
void swap(DMat< ACoeffRing > &M)
const ElementType & entry(size_t row, size_t column) const
size_t numColumns() const
ElementType *& unsafeArray()
void resize(size_t new_nrows, size_t new_ncols)
const ACoeffRing & ring() const
fq_zech_struct ElementType
aring-style adapter for FLINT's Zech-logarithm representation of small finite fields GF(p^n).
void swap(mpfr::mpreal &x, mpfr::mpreal &y)