linbox-team / linbox

LinBox - C++ library for exact, high-performance linear algebra
https://linbox-team.github.io/linbox
GNU Lesser General Public License v2.1
81 stars 28 forks source link

Add epsilon attribute to Specifier #190

Open Breush opened 5 years ago

Breush commented 5 years ago

Rationale is that from minpoly.h, we can find some switch based on certifyInconsistency, which should be replaced by a epsilon and do the switch when epsilon > 1 / fieldSize:

    template<class Polynomial, class Blackbox>
    Polynomial &minpoly (
                 Polynomial                       & P,
                 const Blackbox                   & A,
                 const RingCategories::ModularTag & tag,
                 const Method::Blackbox           & M)
    {
        if (M.certifyInconsistency) {
            // Will make a word size extension
            // when field size is too small
            minpoly(P, A, tag, Method::WiedemannExtension (M));
            return P;
        }
        else
            return minpoly(P, A, tag, Method::Wiedemann (M));
    }

See #53

ClementPernet commented 5 years ago

same happens in rank.inl