Opened 4 years ago

Last modified 3 days ago

#18333 new task

Cleanup and speedup in QQbar

Reported by: vdelecroix Owned by:
Priority: major Milestone: sage-wishlist
Component: number fields Keywords:
Cc: mmezzarobba, gagern, cheuberg Merged in:
Authors: Vincent Delecroix Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by vdelecroix)

This is a task ticket for speed up and cleaning in sage.rings.qqbar

Prerequisites on number fields/polynomials/interval arithmetic

  • #18332: implement is_integer and is_rational on number field elements
  • #18334: implement unique_sign and unique_trunc on interval field elements
  • #18337: implement real and imag on real intervals
  • #17830: consider the natural order induced from RR for number fields with real embedding
  • #19362, #28191: refine root
  • #18356: implement composed_op from [BFSS]
  • #19824: faster comparison for (real) embedded number fields
  • #24503: enhanced LazyAlgebraic

Tasks in AA/QQbar:

  • #18303: better comparisons
  • #17886, #18242: faster exactification operations using power series and resultants (see also #18356)
  • #15600: exactification is slow in do_polred
  • #16222, #18122: enhanced minpoly
  • #19954 and #19955: remove all descriptors except ANRoot, ANExtension and ANRational
  • #20074: simplify method dispatcher for binary operators
  • #12745: conversion issue QQbar -> AA
  • #18106: introduce a polynomial descriptor, make sum and product be n-ary instead of binary and get rid of recursive calls
  • #12715: number field embeddings should always have target in AA or QQbar
  • #19356: QQbar.polynomial_root(): allow approximate root
  • #21095: slowness in exactification
  • #21838: do not make appear the imaginary (or real) part in QQbar when it is known to be zero
  • #5574: Implement QQbarQQ as action
  • use firstly interval arithmetic for sign/floor/ceil/trunc/round instead of the _floor_ceil helper
  • remove the following methods from ANDescr:
    • rational_value
    • is_field_element
    • is_exact
  • (?) enhanced sage_input for ANExtension
  • better powering (__pow__) using ANExtension and fix convention for powering in AA vs QQbar
  • reimplement _real_refine_interval without these ugly dictionaries (see also #17895)
  • use directly embedded number fields in AlgebraicGenerator as comparison there is faster (see #17830 and #19824). We might want that these embedded number field carries an interval of fixed precision with them (let say 64) to avoid reevaluation in most cases
  • #26944: improve hashing to avoid exact computations
  • more generally, track down code in qqbar.py that may lead to larger extensions than necessary if an exact computation is triggered (for example, see if the formulas in ANUnaryExpr.exactify() can be optimized).

Bugs

  • #20209: QQbar -> RIF conversion fails
  • #12745: Coercion problem with Algebraic Real Field
  • #20288: representation and mutability of the description

Change History (29)

comment:1 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:2 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:3 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:4 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:5 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:6 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:7 Changed 4 years ago by mmezzarobba

  • Cc mmezzarobba added

comment:8 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:9 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:10 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:11 Changed 3 years ago by zimmerma

about slowness of QQbar, see #19910.

comment:12 Changed 3 years ago by vdelecroix

  • Description modified (diff)
  • Milestone changed from sage-6.7 to sage-wishlist

comment:13 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:14 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:15 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:16 Changed 3 years ago by nbruin

There's an issue on QQBar element powering reported in #18836 comment 9 that may have interaction with what you're doing here (perhaps you're solving the issue?). Perhaps it's worthwhile including that problem in this QQbar cleanup operation somewhere.

comment:17 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:18 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:19 Changed 3 years ago by gagern

  • Cc gagern added

comment:20 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:21 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:22 Changed 3 years ago by cheuberg

  • Cc cheuberg added

comment:23 Changed 3 years ago by vdelecroix

  • Description modified (diff)

comment:24 Changed 18 months ago by vdelecroix

  • Description modified (diff)

comment:25 Changed 18 months ago by jdemeyer

  • Description modified (diff)

comment:26 Changed 18 months ago by jdemeyer

  • Description modified (diff)

comment:27 Changed 18 months ago by jdemeyer

  • Description modified (diff)

comment:28 Changed 7 months ago by mmezzarobba

  • Description modified (diff)

comment:29 Changed 3 days ago by vdelecroix

  • Description modified (diff)
Note: See TracTickets for help on using tickets.