Opened 4 years ago

Closed 4 years ago

Last modified 5 weeks ago

#19993 closed enhancement (fixed)

Arb: parse symbolic expressions

Reported by: cheuberg Owned by:
Priority: major Milestone: sage-7.1
Component: numerical Keywords: arb
Cc: behackl, dakrenn, mmezzarobba, ​fredrik.johansson Merged in:
Authors: Clemens Heuberger Reviewers: Daniel Krenn
Report Upstream: N/A Work issues:
Branch: 2c2955f (Commits) Commit:
Dependencies: Stopgaps:

Description

Current behaviour:

sage: RBF(zeta(3))
[1.202056903159590 +/- 5.38e-16]
sage: RBF(2*zeta(3))
Traceback (most recent call last):
...
TypeError: unable to convert 2*zeta(3) to a RealBall

That is unfortunate (imagine that this is part of a large symbolic expression, involving various constants, logarithms etc.)

I assume that the first call succeeds because RIF can handle it.

Change History (13)

comment:1 Changed 4 years ago by cheuberg

  • Branch set to u/cheuberg/arb/parse-symbolic

comment:2 Changed 4 years ago by cheuberg

  • Commit set to f39f484721b7faa7a1fec1adc44d8ae424785c79
  • Status changed from new to needs_review

New commits:

f39f484Trac #19993: Arb: parse symbolic expressions

comment:3 Changed 4 years ago by cheuberg

  • Cc ​fredrik.johansson added

comment:4 Changed 4 years ago by mmezzarobba

  • Cc mmezzarobba added; mmezzaroba removed

comment:5 Changed 4 years ago by cheuberg

  • Status changed from needs_review to needs_work

I am now dealing with the failing doctests on the patchbot.

comment:6 Changed 4 years ago by git

  • Commit changed from f39f484721b7faa7a1fec1adc44d8ae424785c79 to 2c2955f15ed22920dc9599085a9dd63e68a512f7

Branch pushed to git repo; I updated commit sha1. New commits:

e7fb7ccMerge tag '7.1.beta1' into arb/parse-symbolic
2c2955fTrac #19993: fix doctest results in complex_arb

comment:7 Changed 4 years ago by cheuberg

  • Status changed from needs_work to needs_review

The failing doctests were probably introduced by #19082; thus I had to merge 7.1.beta1 to fix them (only errors were affected, mostly they improved; in one occurrence, we now have a slightly worse error). All this is due to not involving RIFs less frequently.

comment:8 follow-up: Changed 4 years ago by fredrik.johansson

It might be worth handling rational arguments in some cases, if it's not too complicated?

x(2/3) -> arb_pow_fmpq

exp(I*pi/3) -> arb_sin_cos_pi_fmpq

gamma(1/3) -> arb_gamma_fmpq

comment:9 in reply to: ↑ 8 Changed 4 years ago by cheuberg

Replying to fredrik.johansson:

It might be worth handling rational arguments in some cases, if it's not too complicated?

For each operand in a symbolic expression, we could check whether it is an element of QQ and, in that case, just take the .pyobject of the operand instead of converting it into the Real Ball Field. Then it would be the responsibility of the respective functions to deal with those elements appropriately (either by the coercion model or by hand).

x(2/3) -> arb_pow_fmpq

in that case, we should also modify __pow__ which currently does not consider rational exponents.

exp(I*pi/3) -> arb_sin_cos_pi_fmpq

I am not sure that we want to do that much parsing of a symbolic expression.

gamma(1/3) -> arb_gamma_fmpq

tricky: we would have to hardwire this function because we'd have to call RealBallField.gamma.

I think I'd prefer to postpone such optimizations to a follow-up ticket.

comment:10 follow-up: Changed 4 years ago by dkrenn

  • Reviewers set to Daniel Krenn
  • Status changed from needs_review to positive_review

LGTM, and as suggested, everything else should be on a follow up ticket.

BTW, is

sage: zeta(RIF(3)).parent()
Complex Field with 53 bits of precision

known? (It works with balls, so no need to worry about this ticket...)

comment:11 in reply to: ↑ 10 Changed 4 years ago by cheuberg

Replying to dkrenn:

BTW, is

sage: zeta(RIF(3)).parent()
Complex Field with 53 bits of precision

known? (It works with balls, so no need to worry about this ticket...)

reused the existing ticket #16782 for this report.

comment:12 Changed 4 years ago by vbraun

  • Branch changed from u/cheuberg/arb/parse-symbolic to 2c2955f15ed22920dc9599085a9dd63e68a512f7
  • Resolution set to fixed
  • Status changed from positive_review to closed

comment:13 Changed 5 weeks ago by mmezzarobba

  • Commit 2c2955f15ed22920dc9599085a9dd63e68a512f7 deleted

A bug proably introduced by this ticket:

sage: RBF(exp(1), 1)
[2.718281828459045 +/- 5.41e-16]

See #28469.

Note: See TracTickets for help on using tickets.