Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge 1.0-dev into master #567

Merged
merged 178 commits into from
Jul 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
c8ff400
Implement flavors with abstract union supertype
Kolaru Mar 14, 2019
595af4d
Split special.jl between common and flavor dependant
Kolaru Mar 27, 2019
13068ab
Reviewed macros.jl
Kolaru Mar 27, 2019
2bfdc2a
Review rounding.jl
Kolaru Mar 27, 2019
e0a47c4
Review convert.jl (incomplete)
Kolaru Mar 28, 2019
97f5a03
Fix compilation errors
Kolaru Mar 28, 2019
39b86fa
Review precision.jl
Kolaru Apr 16, 2019
eabd93b
Review set_operations.jl
Kolaru Apr 16, 2019
86594e4
Work on comparisons
Kolaru Jun 21, 2019
2819ec8
Continue review of arithmetic operations
Kolaru Aug 15, 2019
c67a0f3
Create file for 9.2 numeric functions
Kolaru Aug 16, 2019
ebde437
Separate basic arithmetic functions (9.1)
Kolaru Aug 17, 2019
de2f573
Review trigonometric.jl
Kolaru Aug 19, 2019
c3eb5fb
Review hyperbolic.jl
Kolaru Aug 19, 2019
4609669
Split power functions into power.jl
Kolaru Aug 19, 2019
74686d4
Document generated functions
Kolaru Aug 19, 2019
4c2b6d2
Rename midrad and mid(a, alpha)
Kolaru Aug 19, 2019
4ae53b7
Review integer.jl
Kolaru Aug 19, 2019
8bcab47
Review absmax functions
Kolaru Aug 19, 2019
33c21b0
Review cancellative functions
Kolaru Aug 19, 2019
bf18a2f
Review set operations and booleans
Kolaru Aug 19, 2019
036a1d8
Rename entireinterval to RR
Kolaru Aug 19, 2019
12cfc39
Separate boolean and set operation
Kolaru Aug 19, 2019
53e4866
Fix typos in precision.jl
Kolaru Aug 19, 2019
ab8fd8b
Split constants in a separate file and document it
Kolaru Aug 20, 2019
89358e6
Document requirement for set-based flavor
Kolaru Aug 20, 2019
80bbaca
Add ref to set-based requirements
Kolaru Aug 22, 2019
7dfb3f5
Review what was left in arithmetic.jl
Kolaru Aug 22, 2019
474f026
Review power.jl
Kolaru Aug 22, 2019
933a89b
Change include statements
Kolaru Aug 22, 2019
cabfeb7
Fix loading bugs
Kolaru Aug 22, 2019
88491f3
Fix several bugs
Kolaru Aug 22, 2019
9c0ee5c
Remove global precision test from test suite
Kolaru Aug 22, 2019
31409c3
Adapt bare interval parsing
Kolaru Aug 23, 2019
9b48379
Fix some bugs erroring/failing construction tests
Kolaru Aug 23, 2019
f932c61
Temporary TODO and changelog files
Kolaru Aug 23, 2019
d6c1e08
Finish fixing "constructing interval" test suite
Kolaru Aug 24, 2019
fb76b31
Delete commented precision test and comment complex tests
Kolaru Aug 24, 2019
09632e8
Fix and complete .. tests
Kolaru Aug 24, 2019
584aba0
Fix "conversion to interval" test suite
Kolaru Aug 24, 2019
dce76b4
Finish replacing == by isidentical for intervals in concstruction tests
Kolaru Aug 24, 2019
cc5694f
Finish fixing test in construction.jl
Kolaru Aug 24, 2019
78980f0
Fix tests
Kolaru Dec 15, 2019
91b9250
Fix most problems in numeric.jl tests
Kolaru Dec 15, 2019
b3091de
Remove setprecision from tests
Kolaru Dec 15, 2019
34568d8
Fix tests for trig functions
Kolaru Dec 15, 2019
3eefa4d
Use scaled_mid in biscet
Kolaru Dec 15, 2019
4661780
Fix multidim tests
Kolaru Dec 15, 2019
63cb3b8
Ignore broken tests
Kolaru Dec 15, 2019
67a1fb2
Refix construction.jl test following rebase
Kolaru Dec 18, 2019
a75eabe
Small test fix
Kolaru Feb 12, 2020
18b3fe2
Fix first tests after rebase
Kolaru Jul 27, 2020
d1dde57
Reintroduce signbit
Kolaru Jul 27, 2020
2fcb8ca
Negative int power fix
Kolaru Jul 27, 2020
9b46da7
Finish fixing tests
Kolaru Jul 28, 2020
766749f
Rename isless to isweaklyless to avoid confusion
Kolaru Aug 4, 2020
1cbdc9b
Fix setrounding and associated tests
Kolaru Aug 9, 2020
8206d52
More consistent notation
Kolaru Aug 9, 2020
7cee9c9
Remove unused file
Kolaru Aug 9, 2020
7435671
Use stareq for more readable tests
Kolaru Aug 9, 2020
6a0dcba
Fix cosh
Kolaru Aug 9, 2020
9a65cb1
Fix more broken tests
Kolaru Aug 9, 2020
43571ba
Clean inline todos and docstrings
Kolaru Aug 12, 2020
bb65c89
Fix eltype according to #397
Kolaru Aug 12, 2020
87781c1
Misc
Kolaru Oct 24, 2020
25110b2
Use generic constructor [unfinished]
Kolaru Oct 25, 2020
9f44928
Fix weird notation in cot
Kolaru Dec 11, 2021
a8b7d5a
Clean up a bit
Kolaru Dec 11, 2021
ac3c35b
Overhaul and constructor simplification
Kolaru Dec 20, 2021
8f6e905
Massive rounding.jl cleanup
Kolaru Dec 24, 2021
0c26577
Make consistency tests pass
Kolaru Dec 25, 2021
f02282e
Power tests pass
Kolaru Dec 25, 2021
15c2c3c
trig.jl tests
Kolaru Dec 25, 2021
1765225
Fix all tests up to rounding.jl
Kolaru Dec 26, 2021
a6eb8ab
Finalize all none IEEE tests
Kolaru Dec 26, 2021
8554f66
Merge branch 'master' into interval_flavors
Kolaru Dec 26, 2021
fc69f93
Merge 2
Kolaru Dec 26, 2021
ef69cc3
New parser
Kolaru Dec 29, 2021
a08cae5
Update the todo file
Kolaru Dec 29, 2021
727aae8
Make all tests pass
Kolaru Dec 31, 2021
3cd5790
Hotfix test erroring on CI
Kolaru Dec 31, 2021
1c51825
Clean up a bit
Kolaru Jan 10, 2022
2fd86c2
Remove manifest
Kolaru Jan 11, 2022
96b090b
Clean up and remove conversion.jl
Kolaru Jan 13, 2022
a993ef8
Remove force_interval
Kolaru Jan 15, 2022
8709e1f
Fix arithmetic bug with irrational
Kolaru Jan 15, 2022
ebb2307
Remove @round_up and @round_down macro
Kolaru Jan 15, 2022
df715e2
Finalize pointwise politic
Kolaru Jan 16, 2022
83d76e9
Go through TODO
Kolaru Jan 16, 2022
2c718e4
Revert RR for entireinterval
Kolaru Jan 16, 2022
d58dfae
Go through inline TODOs
Kolaru Jan 16, 2022
c2b09f9
Update changelog
Kolaru Jan 16, 2022
a9d5acb
First pass on lbenet review
Kolaru Jan 22, 2022
b915efd
Add :ieee1788 mode for PointwisePolitic
lbenet Jan 24, 2022
ea59b18
Fixes in power function
lbenet Jan 24, 2022
f52f4d0
Fixes in decorations
lbenet Jan 24, 2022
0478ba8
generated ITF1788 tests
lucaferranti Jan 24, 2022
28998d7
Add tests for :ieee1788 pointwise politic and run ITF1788 tests
lbenet Jan 25, 2022
cddfa5d
Fixes and additions of trigonometric functions
lbenet Jan 25, 2022
e2bf145
updated 1tf1788 tests
lucaferranti Jan 25, 2022
7002e4b
Merge branch 'ieee1788tests_after271' of https://github.com/JuliaInte…
lucaferranti Jan 25, 2022
6d309f7
Add coth, sech, csch
lbenet Jan 26, 2022
a7ddf4f
Add hypot function (to not use Base.hypot)
lbenet Jan 26, 2022
9ac2d11
Use _normalisezero *after* rounding in Interval constructor
lbenet Jan 26, 2022
4b64d7a
Remove skip/broken tests of libieeep1788_elem.jl and mpfi.jl
lbenet Jan 26, 2022
73a3d18
Remove two-argument round-macro, ensuring passing correct type
lbenet Jan 26, 2022
2a45fc2
Fix output of `inf` and `mid`
lbenet Jan 26, 2022
bb4d665
Implement overlap function
lbenet Jan 27, 2022
bc5a387
Merge branch 'master' into lb/master_to_1.0-dev
lbenet Mar 30, 2022
cd41195
Update cancelminus
lbenet Mar 5, 2022
707178f
add mid radius inf sup diam for reals (#511)
lucaferranti Mar 8, 2022
ce1c6d9
More Float32 support
mfherbst Sep 21, 2020
d31a9c0
Unit tests for Float32
mfherbst Sep 21, 2020
abf8289
fix: comment and clean up code
gwater Sep 30, 2020
5199b50
Load IntervalContractors for rev functions, and use test_skip
lbenet Apr 6, 2022
7fdc4c8
No need to import rounding, setrounding, setprecision ...
lbenet Apr 7, 2022
4e918e0
Merge pull request #514 from JuliaIntervals/lb/master_to_1.0-dev
lbenet Apr 20, 2022
f44518a
Fix acot and acoth with tests (#517)
lbenet May 7, 2022
f385b7f
Return enum elements for overlap, and adapt ITF tests (#518)
lbenet May 16, 2022
1b84a19
fix parser (#522)
lucaferranti May 25, 2022
ffda697
Update intervalbox.jl (#520)
mforets May 19, 2022
fb1ce2d
fix rational power bug in 1.0 (#529)
lucaferranti May 28, 2022
49f4806
Use division (with rounding) in extended_div (#532)
lbenet May 28, 2022
cafc327
Use inf, sup (or bounds) instead of .lo and .hi (#531)
lbenet May 29, 2022
ffc1832
update pointwise policy (#523)
lucaferranti Jun 1, 2022
1d2e6e4
nthroot and rational power (#533)
lbenet Jun 1, 2022
e04314b
Remove superfluous `real` method
OlivierHnt Jan 19, 2023
da450d1
Remove unnecessary specialized methods
OlivierHnt Jan 22, 2023
24ee178
Merge pull request #552 from OlivierHnt/1.0-dev
Kolaru Jan 29, 2023
7892c35
1.0-dev: fix `Interval(::Interval)` ambiguity error (#553)
OlivierHnt Jan 29, 2023
63a14a3
1.0-dev: fix `interval(::Interval)` and some ambiguities (#554)
OlivierHnt Feb 14, 2023
16e4756
Remove superfluous `real` method
Feb 14, 2023
466606b
1.0-dev: improve printing and fix alignment issue (#555)
OlivierHnt Feb 15, 2023
5cbf7a8
Only allow `Interval{T}` as a raw constructor
OlivierHnt Feb 15, 2023
35f98a5
Replace `Interval` with `interval` in tests
OlivierHnt Feb 15, 2023
9fd3784
Adapt format `::full` to show parseable code
OlivierHnt Feb 15, 2023
2c646c0
Directly construct the intervals
OlivierHnt Mar 21, 2023
024e444
Improve tests
OlivierHnt Mar 21, 2023
df225b9
Fix test
OlivierHnt Mar 21, 2023
2a2fa98
Fix diaply test with rational bounds
OlivierHnt Mar 21, 2023
c6270bf
Fix `BigFloat` rounding for irrationals :ℯ and :φ
OlivierHnt Mar 31, 2023
09ac4da
Fix broken test
OlivierHnt Mar 31, 2023
a87fb27
Implement `boundstype`
OlivierHnt Mar 31, 2023
a1a9fd2
Rename `boundstype` to `getnumtype`
OlivierHnt Mar 31, 2023
911499d
Rename `getnumtype` to `promote_numtype`
OlivierHnt Apr 1, 2023
4d6bd15
Merge pull request #558 from OlivierHnt/1.0-conversion
Kolaru Apr 15, 2023
e381c3f
Limit num type to be `Rational` or `AbstractFloat`
OlivierHnt Apr 16, 2023
358848b
Use `typemax`/`typemin`
OlivierHnt Apr 16, 2023
d473f78
Fix `^`
OlivierHnt Apr 17, 2023
99c27c0
Fix `atomic`
OlivierHnt Apr 17, 2023
5149835
Fix string parsing with `//`
OlivierHnt Apr 17, 2023
44764fa
Add type signature
OlivierHnt Apr 20, 2023
3e2e99e
Merge pull request #559 from OlivierHnt/1.0-bounds-type
Kolaru Apr 25, 2023
98687e4
Rework constructors
OlivierHnt Apr 27, 2023
724b5cc
Use `minimum`/`maximum` instead of splatting
OlivierHnt Jun 4, 2023
81cc683
Remove `@interval`, `@tinterval` and `@decorated`
OlivierHnt Jun 4, 2023
d6bf67e
Add `@test_throws` for `Interval` constructor
OlivierHnt Jun 4, 2023
5fb804e
Resolve method ambiguities
OlivierHnt Jun 4, 2023
8b9f4fd
Merge pull request #560 from OlivierHnt/1.0-constructors
Kolaru Jun 10, 2023
add89bd
Fix stack overflow error
OlivierHnt Jun 11, 2023
2f16df2
Add tests
OlivierHnt Jun 11, 2023
91a66fa
Remove `@format`
OlivierHnt Jun 13, 2023
7bfad94
Merge pull request #562 from OlivierHnt/1.0-dev-trig
Kolaru Jun 14, 2023
c529e0d
Remove `@format`
OlivierHnt Jun 13, 2023
38d0c8e
Merge remote-tracking branch 'origin/1.0-dev-display' into 1.0-dev-di…
OlivierHnt Jun 18, 2023
73e0c41
Merge pull request #563 from OlivierHnt/1.0-dev-display
Kolaru Jun 26, 2023
25ad9fc
Merge branch 'master' into 1.0-dev
Kolaru Jun 27, 2023
7643df6
Modify some tests
Kolaru Jun 27, 2023
7e5b2a0
Add compat to deal with 1.6
Kolaru Jun 27, 2023
dc6ca95
Remove IntervalContractors until versioning is fixed
Kolaru Jun 27, 2023
2c16e6f
Try again
Kolaru Jun 27, 2023
939d25b
Fix test dependency
Kolaru Jul 24, 2023
27a535e
Bump julia dep
Kolaru Jul 24, 2023
91dede5
Rebump deps
Kolaru Jul 24, 2023
6c48505
Squashed commit of the following:
Kolaru Jul 24, 2023
aa25188
Fix typo
Kolaru Jul 24, 2023
50340e8
Merge remote-tracking branch 'origin/master' into 1.0-dev
Kolaru Jul 24, 2023
a6d8e7d
Use untainted test from old 1.0 version
Kolaru Jul 24, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ jobs:
fail-fast: false
matrix:
version:
- '1.6'
- '1'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to have back this (erased) line, so we can test also Julia 1.9 as well. (I may have been who removed it...)

- '1.8'
- 'nightly'
os:
- ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
docs/build/
Manifest.toml
Manifest.toml
2 changes: 1 addition & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ the interval, e.g. `convert(Interval{Float64}, 0.1)`

- Improvements towards conformance with the [IEEE-1788](https://standards.ieee.org/findstds/standard/1788-2015.html) standard for Interval Arithmetic:

- New `special_intervals.jl` file, with definitions of `emptyinterval`, `entireinterval`, `nai` and related functions. Add new interval functions (`<=`, `radius`, `precedes`, `strictprecedes`, `≺`, etc).
- New `special_intervals.jl` file, with definitions of `emptyinterval`, `RR`, `nai` and related functions. Add new interval functions (`<=`, `radius`, `precedes`, `strictprecedes`, `≺`, etc).

- Control rounding tighter for arithmetic operations; `*`, `inv` and `/` have been rewritten; this includes changes in `make_interval` and `convert` to get consistent behavior. These functions pass the corresponding tests in the [ITF1788](https://github.com/oheim/ITF1788) test suite.
- Deprecate the use of `⊊` in favor of `isinterior` (`⪽`).
Expand Down
19 changes: 5 additions & 14 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
name = "IntervalArithmetic"
uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253"
repo = "https://github.com/JuliaIntervals/IntervalArithmetic.jl.git"
version = "0.20.10"
version = "0.21.0"

[deps]
CRlibm = "96374032-68de-5a5b-8d9e-752f78720389"
EnumX = "4e289a0a-7415-4d19-859d-a7e5c4648b56"
FastRounding = "fa42c844-2597-5d31-933b-ebd51ab2693f"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
Expand All @@ -16,20 +17,10 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

[compat]
CRlibm = "0.7, 0.8, 1"
IntervalContractors = "0.4"
EnumX = "1"
FastRounding = "0.2, 0.3"
Polynomials = "0.7, 1, 2, 3"
RecipesBase = "1.0"
RoundingEmulator = "0.2"
SetRounding = "0.2"
StaticArrays = "0.8, 0.9, 0.10, 0.11, 0.12, 1.0"
julia = "1.5"

[extras]
IntervalContractors = "15111844-de3b-5229-b4ba-526f2f385dc9"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Polynomials = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["IntervalContractors", "LinearAlgebra", "Test", "Polynomials"]
StaticArrays = "1.0"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this constrains to versions of the form 1.0.x... Current version of StaticArrays is v1.6.0. A similar comment applies to Polynomials, and CRlibm.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1.0 is the same as 1 and stands for the interval [1.0.0, 2.0.0).
Source; note that the caret (^) is the default.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the clarification 👍

julia = "1.8"
233 changes: 233 additions & 0 deletions TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
Review intervals folder:
General:
✔ Choose whether to use x == zero(T) or x == 0 across files @done(20-08-09 16:05)
✔ Use iszero everywhere @done(21-12-29 23:30)
✔ Check that default flavor always return safe result @done(21-12-29 23:30)
✔ {F <: Type} -> {F<:Type} (remove spaces) @done(20-08-09 16:05)
✔ Replace "IEEE standard" -> "IEEE Std 1788-2015" @done(19-08-22 16:13)
✔ "Corresponds to" -> "Implement" in doc @done(19-08-22 16:13)
✔ Investigate compile time warnings @done(21-12-29 23:30)
✔ Check if intervals of different flavor type can/should be equal in the sense of `isidentical` @done(19-12-08 01:12)
✔ Operation on different flavors of interval should always error. @done(21-12-29 23:29)
✔ Check if `signbit` is in the standard @done(22-01-16 17:24)
It is not.
✔ Distribute functions from `special.jl` and `misc.jl` somewhere more informative @done(22-01-10 02:12)
☐ Check the display of all docstrings
Discussion:
✔ Do we want to keep `@floatinterval` and `@biginteral` or use `@interval(F, expr1, expr2)` instead ? @done(22-01-10 00:55)
✔ It is fine actually @done(22-01-10 00:55)
✔ Decide if `inf` and `sup` should be used as default or rather `x.lo` and `x.hi` @done(21-12-29 23:29)
✔ `inf` and `sup` should be strict equivalent to `x.lo` and `x.hi` @done(21-12-29 23:29)
✘ Deprecate `interval` in favor of `checked_interval`? @cancelled(22-01-16 18:13)

Global precision:
✔ Get rid of it @done(19-08-20 16:49)
✔ Replace pi_interval(T) by Interval{T}(π) everywhere @done(19-12-18 22:59)
✔ Be sure it is done in compliance with #338 @done(19-12-18 22:59)

Flavors:
✔ Add documentations for flavors @done(22-01-16 17:58)
Implement set based flavor:
✔ Check all requested stuff 10.5. @done(22-01-16 18:00)
✔ Error on undefined @done(22-01-16 18:00)
✘ Implement cset flavor @cancelled(22-01-16 18:13)
✘ Make cset default ? @cancelled(22-01-16 18:13)
✔ Define the flavor dependent symbols like ==, <, <= @done(21-12-29 23:28)
✘ Deal with the fact flavor interact with pointwise politic for `isfinite` and `isinf` @cancelled(22-01-16 17:58)
Not a problem for set-based. Dealing with it for cset or other can be dealt with later.

intervals.jl:
✔ Split constructors from the includes @done(22-01-15 19:26)
✔ Put helper, utils function (e.g. `eltype`) somewhere else @done(22-01-15 19:26)

macros.jl:
✔ Review @done(19-08-23 01:57)
✔ Clean or open issue for cleaning of the file @done(22-01-15 21:25)

precision.jl:
✔ Review @done(19-08-19 01:49)

rounding.jl:
✔ Review @done(19-08-19 01:50)
✔ Decide how to define the setrounding function with multiple interval types @done(21-12-29 23:28)
✔ Use a global function `current_interval_rounding` @done(21-12-29 23:28)
✔ Check with latest discussion if everything is up to date @done(22-01-10 00:56)
✔ Remove default round method once it is not needed anymore @done(21-12-29 23:34)
✔ Test new mechanism @done(22-01-10 01:18)
✔ Remove `@round_up` and `@round_down` @done(22-01-16 04:51)

conversion.jl:
✔ Review @done(19-08-23 03:25)
✔ Fix ambiguity errors @done(21-12-29 23:27)
✔ Simplify `atomic` @done(22-01-10 00:56)
✔ Accept the fact we have two eps for floating points inputs @done(22-01-09 21:20)
✔ Test the new `atomic` @done(22-01-10 01:18)

complex.jl:
Should we even bother ?
✔ Drop support for now @done(22-01-10 00:57)
✔ Document the support drop @done(22-01-16 18:01)
See changelog

9.1. Arithmetic functions:
✔ Distribute everything from arithmetic.jl in other files @done(20-08-13 00:27)
basic.jl:
✔ Split @done(19-08-19 01:14)
✔ Verify all requested functions are there @done(19-08-19 02:01)
✔ Common @done(19-08-19 01:11)
✔ Adapt for the removal of promotion @done(21-12-29 23:27)
✘ Flavor dependent * @cancelled(22-01-16 18:01)
✘ Flavor dependent / @cancelled(22-01-16 18:01)
✘ Flavor dependent inv @cancelled(22-01-16 18:01)
✘ Flavor dependent fma @cancelled(22-01-16 18:01)
power.jl:
✔ Split @done(19-08-19 01:14)
✔ Verify all requested functions are there @done(19-08-19 04:29)
✔ Common @done(19-08-22 16:25)
✘ Flavor dependent power (for negative power) @cancelled(22-01-16 18:02)
✘ Flavor dependant log @cancelled(22-01-16 18:02)
✔ zero(T) or 0 ? @done(20-08-13 00:28)
trigonometric.jl:
✔ Split @done(19-08-19 02:00)
✔ Verify all requested functions are there @done(19-08-19 02:00)
✔ Clean constants @done(19-08-19 14:13)
✔ Common @done(19-08-19 15:19)
✔ zero(T) or 0 ? @done(20-08-13 00:28)
hyperbolic.jl:
✔ Split @done(19-08-19 15:23)
✔ Verify all requested functions are there @done(19-08-19 15:23)
✔ Common @done(19-08-19 15:31)
✔ Add docstring to generated funcs @done(19-08-19 16:45)
✘ Flavor dependent atanh @cancelled(22-01-16 18:02)
integer.jl:
✔ Split @done(19-08-19 17:31)
✔ Verify all requested functions are there @done(19-08-19 17:35)
✔ Common @done(19-08-19 17:43)
absmax.jl:
✔ Split @done(19-08-19 17:46)
✔ Verify all requested functions are there @done(19-08-19 17:46)
✔ Common @done(19-08-19 17:48)

9.2. Cancellative:
✔ Split @done(19-08-19 19:14)
✔ Verify all requested functions are there @done(19-08-19 19:14)
✔ Common @done(19-08-19 19:14)
✔ Check if cancelminus has flavor dependent edge cases @done(22-01-16 18:02)
Doesn't seem like it does.

9.3 Set operations:
✔ Split @done(19-08-19 19:31)
✔ Verify all requested functions are there @done(19-08-19 19:31)
✔ Common @done(19-08-19 19:31)

9.4. Numeric functions:
✔ Split @done(19-08-19 01:26)
✔ Common @done(19-08-19 01:11)
✔ Solve mid(a, 0.5) != mid(a) discrepency @done(20-08-09 15:42)
✘ Flavor dependent mid @cancelled(22-01-16 18:02)

9.5. Boolean functions:
These are in the set_operations.jl file
✔ Split @done(19-08-19 19:30)
✔ Verify all requested functions are there @done(19-08-19 19:31)
✔ Common @done(19-08-19 19:36)
✔ equal is not the same as == @done(19-08-19 19:36)
✔ Check `isweaklylessprime` @done(22-01-16 18:03)
✘ Flavor dependent issubset/isinterior ? @cancelled(22-01-16 18:02)
✔ Choose infix operator for `isidentical` ? e.g. ∼ \sim<TAB> (not currently parsed by julia) or ∽ \backsim<TAB> or ≛ \stareq<TAB> or whatever @done(21-12-29 23:31)
This is mainly used for tests and don't necessarily need to be exported

9.6. Operatons on/with decoration:
✘ Split @cancelled(22-01-16 18:16)
✘ Verify all requested functions are there @cancelled(22-01-16 18:16)
✘ Review @cancelled(22-01-16 18:16)

9.7. Literals:
✘ Review @cancelled(22-01-16 18:16)

9.8. Constructor:
✔ Review @done(22-01-16 18:14)
✔ Check correctness and tightness for Interval{T}(x) @done(22-01-16 18:14)
✔ Document constructors @done(22-01-16 18:14)
✔ Make `..` work correctly for all input types @done(21-12-29 23:31)
✔ Choose a mechanism for the default bound @done(21-12-29 23:31)
✔ Add Interval{T}(π) @done(19-08-19 01:58)
✔ Check performance @done(19-12-18 23:00)

10.5. Required operations in set-based flavor:
10.5.1. Literals:
✘ No idea, but do it @cancelled(22-01-16 18:16)
10.5.2. Constants:
✔ Add ref to doc @done(19-08-21 00:09)
✘ Move deprecation warning to a separated file ? @cancelled(22-01-16 18:16)
10.5.3. Forward mode elementary functions:
✔ Add ref to doc @done(19-08-21 00:20)
10.5.4. Reverse mode elementary functions:
✔ Open issue about their absence @done(19-08-20 03:16)
They are in IntervalConstraint.jl
10.5.5. Two output division:
✔ Add ref to doc @done(19-08-21 00:23)
✘ Flavor dependent edge case @cancelled(22-01-16 18:16)
✘ Recent GH issue @cancelled(22-01-16 18:16)
10.5.6. Cancellative:
✔ Add ref to doc @done(19-08-22 15:51)
✘ Check that the set-based follow the required behavior for undbounded intervals @cancelled(22-01-16 18:16)
10.5.7. Set opeations:
✔ Add ref to doc @done(19-08-22 15:55)
10.5.8. Constructors:
✔ Review I guess @done(22-01-16 18:15)
10.5.9. Numeric functions:
✔ Add ref to doc @done(19-08-22 15:55)
10.5.10. Boolean:
✔ Check everything required is present @done(19-08-22 16:07)
✔ Add ref to doc @done(19-08-22 16:07)
10.6. Recommended operations:
✘ Check all that stuff @cancelled(22-01-16 18:15)


Other:
bisect.jl:
✘ Review @cancelled(22-01-16 18:14)
display.jl:
✘ Review @cancelled(22-01-16 18:14)
InteralArithmetic.jl:
✔ Review @done(22-01-16 18:15)
✔ Make sure everything is exported correctly @done(22-01-16 18:15)
✔ Check renamed/new functions are exported @done(22-01-16 18:15)
parsing.jl:
✔ parsing of bare interval @done(21-12-29 23:27)
✔ parsing of decorated interval @done(21-12-31 02:05)
✔ Change `"3.16?1"` to be parsed as `"[3.15, 3.17]"` @done(21-12-31 02:16)
☐ Restore parsing of special forms e.g. `"entire"`, `[,]` (tests are marked as broken)
rand.jl:
✘ Review @cancelled(22-01-16 18:14)
symbols.jl:
✘ Make sure everything is here @cancelled(22-01-16 18:15)


Review other folders:
Check PR #271 for details
✘ Do it @cancelled(22-01-16 18:14)
multidim:
arithmetic.jl:
StaticArray.jl v1.0 wants to promote the array eltype to interval

Bugs:
✔ `Int` times `Interval` errors (e.g. `2*a`) @done(19-12-14 23:50)
✔ `(1..1) * pi` is not equal to `Interval(pi)` @done(22-01-15 20:49)
✘ Find why 5 of the hyperb tests are failing only when put within the same testset as the others @cancelled(22-01-16 18:14)

Documentation:
✘ Put docstrings inside `@eval` blocks @cancelled(22-01-10 01:00)
Not needed anymore since we don't use eval as much
✔ Document flavors @done(22-01-16 18:14)
☐ Document all the changes.

Tests:
✘ Uncomment complex tests in `construction.jl` @cancelled(22-01-10 01:00)
Dropped support for Complex for now
✔ Use `===` or `≛` instead of `==` @done(21-12-29 23:26)
✘ Test all flavors @cancelled(22-01-16 18:15)
☐ Test switching the default bound
☐ Test switching the interval rounding
✔ Test switchign the pointwise politic @done(22-01-16 04:51)
86 changes: 86 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Changelog

## Structure
Changed to match the IEEE standard, with corresponding docstring to every function when it is in the standard.

Overall restructuring of the files to try to be more organized.

Symbols that alias another function moved to `symbols.jl`

Only minimal changes to `multdim/`.

## Global precision
Removed. It was causing problems and was agreed upon at some point.

## Rounding
Removed `setrounding(Interval, mode)` and redefinition of function to change the rounding mode.

Instead the default rounding is given by the (not exported) function `IntervalArithmetic.rounding_mode()` and can be changed by redefining the function.

This allow to simplify the management of the rounding mode.

`@round` now take the interval type of the returned interval as first argument. The old fallback to the default bound still exists.

## Flavors
Only Cset flavor is available.

The mechanism for more flavor is however introduced, in a similar way to the new rounding mechanism. The current flavor is given by the (not exported) `IntervalArithmetic.current_flavor()` and can be overwritten to change flavor.

## Default bound
Introduced the same mechanism as rounding and flavor, with the default bound given and possible changed through the not exported `IntervalArithmetic.default_bound()`.

## Pointwise politic
Introduced the concept of pointwise politic, that is what to do with the pointwise extension of boolean function like `==` to intervals.

Uses the same mechanism as rounding, flavor and default bounds, using the function `IntervalArithmetic.pointwise_politic()` to define the current mode.

By default uses ternary logic, similar to what is done in `NumberIntervals.jl`.

Also implemented boolean intervals (always erroring in conditional) and the old behavior (often silently breaking `if .. else` clauses).

Identity of intervals now use the `\stareq` infix operator, `==` being reserved for pointwise equality test.

## Promotion and conversion
Removed all promotion and conversion involving intervals.

This makes the tracking of correctness easier as generic `Number` or `Real` methods now errors with intervals if they are not redefined in the package.

## Construction
The constructors definitions have been overall and, to an extend, redesigned.

Now only `@interval` is trying to be smart and widen decimal inputs to guarantee their inclusion, leading to 2 eps wide interval built from single decimal literals. Guaranteeing inclusion is still better done by using either the `I""` string macro or `parse(Interval, str)`.

All others constructors take floating point at face value.

Consequently, `atomic` has been massively simplified.

Introduced the alias `checked_interval` to be more specific than just lowercase `interval`. Both are now equivalent to `..`.

`Interval(::Irrational)` works with generated function and is tight and correct.

## Complex and Rational
Support drop as it caused problems. It could be restored.

## Parser
Rewritten using `CombinedParsers.jl`.

It is now much simpler and also slightly tighter.

Unfortunately the new dependency seems to error on nightly, which is what causes the CI to fail.

Some extension of parsing that are not in the standard still need to be restored.

## Docstrings
Added a ton of docstrings.

## Others
- Removed `widen` and `wideinterval`.
- Removed `interval_from_midpoint_radius`. It is implemented by `±`.
- Removed `force_interval`
- Removed `find_quadrants_tan` as it was a duplicate of `find_quadrants`
- `make_interval` renamed `wrap_literals`
- Removed `pi_interval(T)` in favor of `Interval{T}(π)`
- Renamed `multiply_by_positive_constant` to `scale`
- Renamed `mid(a, α)` -> `scaled_mid(a, α)` to avoid discrepancy with default parameter.
- Tests that seemed to have been tailored to the behavior of the old `@interval` have been modified or marked as `@test_broken` when the expected value can not be easily derived
- `@interval` changed to `Interval` in tests as much as possible.
4 changes: 3 additions & 1 deletion examples/draw_function_image.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ function draw(box_list::Vector{T}, color="grey", alpha=0.5) where T<:IntervalBox
patch_list = []
for box in box_list
x, y = box
xlo, xhi = bounds(x)
ylo, yhi = bounds(y)
push!(patch_list,
make_rectangle(x.lo, y.lo, x.hi-x.lo, y.hi-y.lo, color, alpha))
make_rectangle(xlo, ylo, xhi-xlo, yhi-ylo, color, alpha))
end

ax = gca()
Expand Down
Loading