Opened 4 years ago

Closed 4 years ago

#18334 closed enhancement (fixed)

sign and more truncation functions on real intervals

Reported by: vdelecroix Owned by:
Priority: major Milestone: sage-6.7
Component: basic arithmetic Keywords:
Cc: Merged in:
Authors: Vincent Delecroix Reviewers: Jeroen Demeyer
Report Upstream: N/A Work issues:
Branch: 7fe18d6 (Commits) Commit: 7fe18d6e2d9b459340c9c6e1527a6eb4ebd4e24e
Dependencies: Stopgaps:

Description (last modified by vdelecroix)

Real intervals are missing truncation functions:

  • frac
  • trunc
  • round
  • unique_sign
  • unique_trunc

We also add some more documentation to truncation methods.

see also: #18337

Change History (16)

comment:1 Changed 4 years ago by vdelecroix

  • Branch set to u/vdelecroix/18334
  • Commit set to d96885c0b700b6ae5f703dcf62dae6cf62323759
  • Description modified (diff)
  • Status changed from new to needs_review
  • Summary changed from unique_sign and unique_trunc on real intervals to sign and more truncation functions on real intervals

New commits:

d96885cTrac 18334: sign and truncations for real intervals

comment:2 Changed 4 years ago by vdelecroix

  • Description modified (diff)

comment:3 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to needs_work

The frac() of an interval is not the same as

self.parent()(self.lower().frac(), self.upper().frac())

For example, the frac() of RIF(6,7) should be the whole interval RIF(0,1).

comment:4 Changed 4 years ago by jdemeyer

The following would be a good doctest:

sage: RIF(-0.9, 0.9).unique_trunc()
0

comment:5 Changed 4 years ago by jdemeyer

  • Reviewers set to Jeroen Demeyer

comment:6 follow-up: Changed 4 years ago by jdemeyer

For frac(), you should check specifically if -1 or 1 should be contained in the result:

  • if the interval ]a,b] contains a positive integer (check if floor(b) > max(a,0)): frac() must contain [0,1]
  • if the interval [a,b[ contains a negative integer (check if ceil(a) < min(b,0)): frac() must contain [-1,0]

If you add the frac() of the endpoints, you should get everything.

Last edited 4 years ago by jdemeyer (previous) (diff)

comment:7 Changed 4 years ago by git

  • Commit changed from d96885c0b700b6ae5f703dcf62dae6cf62323759 to 10067b5735103012c8fcd0eba6e84d6cefa69573

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

10067b5Trac 18334: fixed frac + doctests

comment:8 in reply to: ↑ 6 Changed 4 years ago by vdelecroix

Replying to jdemeyer:

For frac(), you should check specifically if -1 or 1 should be contained in the result:

  • if the interval ]a,b] contains a positive integer (check if floor(b) > max(a,0)): frac() must contain [0,1]
  • if the interval [a,b[ contains a negative integer (check if ceil(a) < min(b,0)): frac() must contain [-1,0]

If you add the frac() of the endpoints, you should get everything.

Of course. This was completely wrong! Thanks.

comment:9 Changed 4 years ago by vdelecroix

  • Status changed from needs_work to needs_review

comment:10 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to needs_work

Add some comments like I wrote in 6. I would also like to see doctests where one endpoint is an integer:

sage: RIF(0.5, 1).frac()
sage: RIF(1, 1.5).frac()

comment:11 Changed 4 years ago by git

  • Commit changed from 10067b5735103012c8fcd0eba6e84d6cefa69573 to 3aa1904cab0c50d160a30051571bb69321654888

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

3aa1904Trac 18334: more doctests

comment:12 Changed 4 years ago by git

  • Commit changed from 3aa1904cab0c50d160a30051571bb69321654888 to 7fe18d6e2d9b459340c9c6e1527a6eb4ebd4e24e

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

7fe18d6Trac 18334: more doctests

comment:13 Changed 4 years ago by vdelecroix

  • Status changed from needs_work to needs_review

comment:14 Changed 4 years ago by jdemeyer

  • Status changed from needs_review to positive_review

comment:15 Changed 4 years ago by vdelecroix

Thanks Jeroen!

comment:16 Changed 4 years ago by vbraun

  • Branch changed from u/vdelecroix/18334 to 7fe18d6e2d9b459340c9c6e1527a6eb4ebd4e24e
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.