Changes between Initial Version and Version 57 of Ticket #16268

07/03/18 08:12:40 (3 years ago)


  • Ticket #16268

    • Property Status changed from new to needs_review
    • Property Authors changed from to Robert Bradshaw, Erik Massop, Marc Mezzarobba
    • Property Cc tscrim cheuberg etn40ff jakobkroeker bhutz added
    • Property Milestone changed from sage-6.2 to sage-8.3
    • Property Summary changed from Better normalization for function field elements to Better normalization for fraction field elements
    • Property Branch changed from to u/mmezzarobba/16268-normalize_fractions
    • Property Commit changed from to db762fc4082cf6af913a7637b895f970a7492a74
  • Ticket #16268 – Description

    initial v57  
     1Normalize the leading coefficient of the denominator to one when reducing elements of fraction fields of univariate polynomial rings over fields. Doing so
     2- often leads to more readable results,
     3- helps limiting coefficient blow-up during computations with fractions over complicated base fields (e.g., elements of ℚ(x,y)(t)), typically leading to much better performance,
     4- makes hashing more (though not 100%) reliable, see the original description and the comments below.
     6The following further improvements are IMO desirable but out of the scope of this ticket:
     7- clearing denominators in the numerator and denominator instead of making the leading coefficient of the denominator monic when that makes sense (i.e., for printing, and perhaps for computations in nested rational function fields, but making it fast enough requires some work),
     8- also normalizing the leading coefficients over non-fields where that makes sense.
     10Original description:
    112If K is a field then K(u), the function field, has a reduce() method which cancels the gcd but does not put into a canonical form by (for example) dividing through by the leading coefficient of the denominator to make the denominator monic.  This means that equal elements may have different hashes, and hence that putting function field elements into a set does not work as a mathematician would expect.  For example: