From d18488c4bedbe7bf964f4390abf39ead10823bdc Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 00:28:36 +0100 Subject: [PATCH 01/54] Beta 0.22 --- LICENSE.md | 6 +- NEWS.md | 317 +- Project.toml | 11 +- TODO | 233 - changelog.md | 86 - docs/make.jl | 3 +- docs/src/examples/pi.md | 70 + docs/src/manual/construction.md | 2 +- docs/src/manual/usage.md | 10 +- .../Calculating rigorous bounds on pi.ipynb | 435 - .../Periodic points of the logistic map.ipynb | 1003 --- .../Range of 2-dimensional functions.ipynb | 1440 --- examples/Roots of Wilkinson polynomials.ipynb | 718 -- examples/standard_map.jl | 69 - ext/IADiffRulesExt.jl | 12 + src/IntervalArithmetic.jl | 35 +- src/display.jl | 85 +- src/intervals/arithmetic/absmax.jl | 44 +- src/intervals/arithmetic/basic.jl | 237 +- src/intervals/arithmetic/hyperbolic.jl | 69 +- src/intervals/arithmetic/integer.jl | 128 +- src/intervals/arithmetic/power.jl | 78 +- src/intervals/arithmetic/trigonometric.jl | 76 +- src/intervals/construction.jl | 375 +- src/intervals/flavors.jl | 104 +- src/intervals/interval_operations/bisect.jl | 66 +- src/intervals/interval_operations/boolean.jl | 233 +- .../interval_operations/cancellative.jl | 79 +- .../interval_operations/constants.jl | 16 +- .../interval_operations/extended_div.jl | 34 +- src/intervals/interval_operations/numeric.jl | 22 +- src/intervals/interval_operations/overlap.jl | 105 +- .../interval_operations/set_operations.jl | 158 +- src/intervals/intervals.jl | 18 +- src/intervals/multidim.jl | 97 - src/intervals/parsing.jl | 268 +- src/intervals/real_interface.jl | 4 +- src/intervals/rounding.jl | 134 +- src/symbols.jl | 19 +- test/ITF1788_tests/atan2.jl | 79 + test/ITF1788_tests/c-xsc.jl | 344 + test/ITF1788_tests/fi_lib.jl | 1741 ++++ test/ITF1788_tests/ieee1788-constructors.jl | 107 + test/ITF1788_tests/ieee1788-exceptions.jl | 11 + test/ITF1788_tests/libieeep1788_bool.jl | 847 ++ test/ITF1788_tests/libieeep1788_cancel.jl | 496 + test/ITF1788_tests/libieeep1788_class.jl | 444 + test/ITF1788_tests/libieeep1788_elem.jl | 7876 ++++++++++++++++ test/ITF1788_tests/libieeep1788_num.jl | 416 + test/ITF1788_tests/libieeep1788_overlap.jl | 160 + test/ITF1788_tests/libieeep1788_rec_bool.jl | 296 + .../libieeep1788_reduction.jl | 15 +- test/ITF1788_tests/libieeep1788_set.jl | 52 + test/ITF1788_tests/mpfi.jl | 2935 ++++++ test/generate_ITF1788.jl | 296 + test/interval_tests/bisect.jl | 9 +- test/interval_tests/complex.jl | 2 +- test/interval_tests/consistency.jl | 18 +- test/interval_tests/display.jl | 14 +- test/interval_tests/multidim.jl | 26 +- test/interval_tests/numeric.jl | 124 +- test/interval_tests/parsing.jl | 4 +- test/interval_tests/power.jl | 12 +- test/interval_tests/run_intervals.jl | 14 - test/interval_tests/set_operations.jl | 36 +- test/interval_tests/trig.jl | 2 +- test/itl/atan2.itl | 53 + test/itl/c-xsc.itl | 228 + test/itl/fi_lib.itl | 930 ++ test/itl/ieee1788-constructors.itl | 85 + test/itl/ieee1788-exceptions.itl | 19 + test/itl/libieeep1788_bool.itl | 531 ++ test/itl/libieeep1788_cancel.itl | 312 + test/itl/libieeep1788_class.itl | 302 + test/itl/libieeep1788_elem.itl | 4380 +++++++++ test/itl/libieeep1788_num.itl | 255 + test/itl/libieeep1788_overlap.itl | 131 + test/itl/libieeep1788_rec_bool.itl | 186 + test/itl/libieeep1788_reduction.itl | 53 + test/itl/libieeep1788_set.itl | 54 + test/itl/mpfi.itl | 1836 ++++ test/runtests.jl | 30 +- test/test_ITF1788/LICENSE.md | 201 - test/test_ITF1788/NOTICE | 16 - test/test_ITF1788/README.md | 1 - test/test_ITF1788/abs_rev.jl | 51 - test/test_ITF1788/atan2.jl | 79 - test/test_ITF1788/c-xsc.jl | 351 - test/test_ITF1788/fi_lib.jl | 1745 ---- test/test_ITF1788/ieee1788-constructors.jl | 113 - test/test_ITF1788/ieee1788-exceptions.jl | 11 - test/test_ITF1788/libieeep1788_bool.jl | 867 -- test/test_ITF1788/libieeep1788_cancel.jl | 499 -- test/test_ITF1788/libieeep1788_class.jl | 451 - test/test_ITF1788/libieeep1788_elem.jl | 7955 ----------------- test/test_ITF1788/libieeep1788_mul_rev.jl | 701 -- test/test_ITF1788/libieeep1788_num.jl | 431 - test/test_ITF1788/libieeep1788_overlap.jl | 84 - test/test_ITF1788/libieeep1788_rec_bool.jl | 301 - test/test_ITF1788/libieeep1788_rev.jl | 1687 ---- test/test_ITF1788/libieeep1788_set.jl | 55 - test/test_ITF1788/mpfi.jl | 2991 ------- test/test_ITF1788/pow_rev.jl | 1615 ---- test/test_ITF1788/run_ITF1788.jl | 22 - test/tests_warning.log | 22 + 105 files changed, 27065 insertions(+), 25844 deletions(-) delete mode 100644 TODO delete mode 100644 changelog.md create mode 100644 docs/src/examples/pi.md delete mode 100644 examples/Calculating rigorous bounds on pi.ipynb delete mode 100644 examples/Periodic points of the logistic map.ipynb delete mode 100644 examples/Range of 2-dimensional functions.ipynb delete mode 100644 examples/Roots of Wilkinson polynomials.ipynb delete mode 100644 examples/standard_map.jl create mode 100644 ext/IADiffRulesExt.jl delete mode 100644 src/intervals/multidim.jl create mode 100644 test/ITF1788_tests/atan2.jl create mode 100644 test/ITF1788_tests/c-xsc.jl create mode 100644 test/ITF1788_tests/fi_lib.jl create mode 100644 test/ITF1788_tests/ieee1788-constructors.jl create mode 100644 test/ITF1788_tests/ieee1788-exceptions.jl create mode 100644 test/ITF1788_tests/libieeep1788_bool.jl create mode 100644 test/ITF1788_tests/libieeep1788_cancel.jl create mode 100644 test/ITF1788_tests/libieeep1788_class.jl create mode 100644 test/ITF1788_tests/libieeep1788_elem.jl create mode 100644 test/ITF1788_tests/libieeep1788_num.jl create mode 100644 test/ITF1788_tests/libieeep1788_overlap.jl create mode 100644 test/ITF1788_tests/libieeep1788_rec_bool.jl rename test/{test_ITF1788 => ITF1788_tests}/libieeep1788_reduction.jl (58%) mode change 100755 => 100644 create mode 100644 test/ITF1788_tests/libieeep1788_set.jl create mode 100644 test/ITF1788_tests/mpfi.jl create mode 100644 test/generate_ITF1788.jl delete mode 100644 test/interval_tests/run_intervals.jl create mode 100644 test/itl/atan2.itl create mode 100644 test/itl/c-xsc.itl create mode 100644 test/itl/fi_lib.itl create mode 100644 test/itl/ieee1788-constructors.itl create mode 100644 test/itl/ieee1788-exceptions.itl create mode 100644 test/itl/libieeep1788_bool.itl create mode 100644 test/itl/libieeep1788_cancel.itl create mode 100644 test/itl/libieeep1788_class.itl create mode 100644 test/itl/libieeep1788_elem.itl create mode 100644 test/itl/libieeep1788_num.itl create mode 100644 test/itl/libieeep1788_overlap.itl create mode 100644 test/itl/libieeep1788_rec_bool.itl create mode 100644 test/itl/libieeep1788_reduction.itl create mode 100644 test/itl/libieeep1788_set.itl create mode 100644 test/itl/mpfi.itl delete mode 100644 test/test_ITF1788/LICENSE.md delete mode 100644 test/test_ITF1788/NOTICE delete mode 100644 test/test_ITF1788/README.md delete mode 100644 test/test_ITF1788/abs_rev.jl delete mode 100644 test/test_ITF1788/atan2.jl delete mode 100644 test/test_ITF1788/c-xsc.jl delete mode 100644 test/test_ITF1788/fi_lib.jl delete mode 100755 test/test_ITF1788/ieee1788-constructors.jl delete mode 100755 test/test_ITF1788/ieee1788-exceptions.jl delete mode 100644 test/test_ITF1788/libieeep1788_bool.jl delete mode 100644 test/test_ITF1788/libieeep1788_cancel.jl delete mode 100755 test/test_ITF1788/libieeep1788_class.jl delete mode 100644 test/test_ITF1788/libieeep1788_elem.jl delete mode 100644 test/test_ITF1788/libieeep1788_mul_rev.jl delete mode 100644 test/test_ITF1788/libieeep1788_num.jl delete mode 100644 test/test_ITF1788/libieeep1788_overlap.jl delete mode 100644 test/test_ITF1788/libieeep1788_rec_bool.jl delete mode 100644 test/test_ITF1788/libieeep1788_rev.jl delete mode 100644 test/test_ITF1788/libieeep1788_set.jl delete mode 100644 test/test_ITF1788/mpfi.jl delete mode 100644 test/test_ITF1788/pow_rev.jl delete mode 100644 test/test_ITF1788/run_ITF1788.jl create mode 100644 test/tests_warning.log diff --git a/LICENSE.md b/LICENSE.md index afa186ed8..9387a1e8e 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,5 +1,6 @@ -Copyright (c) David P. Sanders, Luis Benet, and other contributors: +MIT License +Copyright (c) 2014 David P. Sanders, Luis Benet, and other contributors: https://github.com/JuliaIntervals/IntervalArithmetic.jl/contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -14,8 +15,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI The code is implemented in Julia, also licensed under the MIT license: -Copyright (c) Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors: - +Copyright (c) 2009 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors: https://github.com/JuliaLang/julia/contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/NEWS.md b/NEWS.md index 66ae524cb..d3632b24d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,305 +1,36 @@ -# What's new in `IntervalArithmetic.jl` +# News -## v0.17 +## master -### Supported versions of Julia -- The package now supports only Julia v1.3 and later. +## 0.22 -### Breaking changes -- Changed from using `FastRounding.jl` to `RoundingEmulator.jl` for the default rounding mode. [#370](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/370) +Major changes since 0.20 and 0.21: +- interval structures: + - new bare (i.e. no decorations) interval structure `BareInterval`, which is not a subtype of `Real` + - `Interval` is now decorated (`DecoratedInterval` is removed) and has a new boolean field `isguaranteed`; this type is still a subtype of `Real` -## v0.15 +- constructors: + - `@interval`, `@floatinterval`, `@biginterval` and `atomic` are removed + - the recommended interval type is `Interval` and its constructor is `interval`, or `parse(T<:Interval, string)`, or `I"string"`; a corresponding `bareinterval` constructor is also given for `BareInterval`, and `parse(T<:BareInterval, string)` is also possible + - warning is prompted when trying to construct invalid intervals -### Supported versions of Julia -- Julia 0.6 is no longer supported. The package is now fully compatible with Julia 0.7 and 1.0. [#201](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/201) +- conversion/promotion: + - numbers cannot be converted to `BareInterval` to prevent silent errors + - numbers can be converted to `Interval` but the `isguaranteed` field is set to false to indicate that an error may have happened -### Breaking changes -- `showall` has been removed from Julia. We now export the function `showfull` instead. [#203](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/203 +- unicode alias (e.g. `..`, `±`, `∅`, `ℝ`, etc.) are now contained in an unexported submodule `Symbols` to prevent conflicts (e.g. `..` is exported by [Makie.jl](https://github.com/MakieOrg/Makie.jl)) -- In keeping with the change to base Julia, `atan2` has been replaced by the 2-argument method of `atan`. [#192](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/192) +- display: + - fixes previous matrix alignment issues + - `setformat` has been renaed `setdisplay`; the display format `:standard` has been renamed `:infsup` -### First contributions -Caroline Wormell and Mohamed Tarek made first contributions to the package. +- set-based flavor is supported; some ground work on a flavor mechanism has been laid out to support others, e.g. cset flavor +- partial support for `Complex{<:Interval}`; some elementary functions are still missing -## v0.14 +- ambiguous boolean `Base` functions (e.g. `==`, `<`, `issubset`, etc.) are no longer overloaded and throw an error; new counterparts methods have been defined -### Breaking changes -- `IntervalBox` is no longer a subtype of `StaticVector` or of `AbstractArray`, -but rather contains an `SVector` of `Interval`s. The internal `SVector` of an `IntervalBox` `X` is available as `X.v`. [#152](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/152) - -### New functions -- Various functions, including `bisect`, were moved here from `IntervalRootFinding.jl`. [#160](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/160) - -- The set operations `⊂`, `⊃` and `⊇` were added [#154](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/154) - -### Supported versions of Julia -- This is slated to be the last minor release supporting Julia 0.6. - -### First contributions -- @mforets and @Kolaru made first contributions to the package. - -## v0.13 - -### Breaking changes -- `convert(Interval{T}, x::T)` no longer does any rounding: it creates -the thin (zero-width) interval `[x, x]`. [#114](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/114) - - Note that this implies that numbers are no longer rounded in operations combining them with intervals, such as `0.1 + interval(0.2, 0.3)`, since `0.1` is `convert`ed to an `Interval` by Julia's promotion machinery. - -### New functions -- The unexported function `IntervalArithmetic.atomic(Interval{T}, x)` creates the smallest atomic interval obtained by directed rounding, treating `x` as representing a real number (the old behaviour -of `convert`). [#114](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/114) - -### Performance -- `sin` and `cos` are over 6 times faster. [#117](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/117) - -- Various operations with `IntervalBox`es are faster, due to consistent use of -broadcasting. [#106](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/114) - - -### Documentation -- Documentation about interval arithmetic in general and construction of intervals -was improved. - -### First contributions -- @tkoolen and @eeshan9815 made their first contributions to the package. Many thanks! - - -## v0.12 - -### API changes: - -- The constructor `Interval(a, b)` has **had checks removed**, so **should not be used directly**; use `interval(a, b)` instead. This is for performance reasons. [#26](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/26) - -- The changes to `a..b` and `a±b` were reverted; these operations are now slow again, but give the narrowest possible interval when interpreting `a` and `b` as the human version (rather than the machine version). E.g. `0.3` is treated as `3/10`, not the exactly-representable floating-point number closest to 0.3. [#97](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/97) - -- Constructor `IntervalBox(II, Val{n})` added to easily make `IntervalBox`es that are `n` copies of a given interval [#79](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/79) - - -## v0.11 - -### Supported versions of Julia -- The package now supports only Julia v0.6 and later. -The only change in this version is to remove code supporting previous versions and -update syntax, e.g. `immutable` -> `struct`. - -## v0.10 - -### Supported versions of Julia -- This is the last version that will support Julia v0.5. - -### Performance - -- Between 2x and 3x speedup for basic arithmetic operations, using [FastRounding.jl](https://github.com/JeffreySarnoff/FastRounding.jl) [#25](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/25) - -- A fast version of the power function is available, with the name `pow` -[#42](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/42) - - -### API changes: - -- The `Interval` rounding mode may be changed *only on Julia 0.6 and later* using e.g. -`setrounding(Interval, :accurate)`. The mode on Julia 0.5 is fixed to `:tight` -[#25](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/25) - -- Renamed `infimum` -> `inf` and `supremum` -> `sup` [#48](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/48) - -- The operators `..` and `±` for interval creation are now fast, but may give results that are slightly wider -[#37]([#30](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/30) - -### v0.9.1 - -#### Docs - -- Docs have been moved to use `Documenter.jl` [#31](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/31) - -#### Bug fixes -- Bug fix for `mid` [#24](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/24) - -- Bug fix for `tan` [#22](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/22) - -#### API changes - -- `mid` of `IntervalBox` now returns an `SVector` [#30](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/30) - -#### Dependency changes -- The dependency on `ForwardDiff` has been removed [#13](https://github.com/JuliaIntervals/IntervalArithmetic.jl/pull/13) - -## v0.9 -- The former `ValidatedNumerics.jl` package has been split into `ValidatedNumerics.jl` and `IntervalRootFinding.jl`. - -`ValidatedNumerics.jl` will now be a meta-package that re-exports both of these packages. - -## v0.8 - -### Supported versions of Julia -- Julia v0.5 and higher are supported - -### Breaking API changes -- **Only on Julia 0.6**, it is now possible to change the interval rounding type again, using `setrounding(Interval, :accurate)`; #220 - -- Changed `setdisplay` to `setformat`. Added `@format` macro to simplify interface, e.g. -`@format standard 5 true`; #251 - -- `mid` is now IEEE-1788 compliant, which changes the behaviour for semi-infinite intervals #253 - -### Other -- Changed from using `FixedSizeArrays.jl` to `StaticArrays.jl` for `IntervalBox`; -this should be invisible to the end user #245 - -- Fixed a bug in 1D interval Newton; #254 - - -## v0.7 - -### End of support for Julia v0.4 -- v0.7 is the last version to include support for Julia v0.4 - -### Breaking API changes -- Deprecate `displaymode`, replacing it with `setdisplay`, with simplified syntax #210: -``` -setdisplay(:full) -``` - -### Added features -- Fast integer power function `pow` #208 -- `parse(Interval, string)` (extends and exports previously internal function) #215 -- `bisect` function in `ValidatedNumerics.RootFinding` for bisecting `Interval`s and `IntervalBox`es #217 - -### Other -- Many tests use `Test` instead of `FactCheck` #205 -- Miscellaneous bugfixes - -## v0.6 -- Add a plot recipe for (only) 2D `IntervalBox`es using `RecipesBase.jl`. -This enables plotting using `Plots.jl`: an individual `IntervalBox` `X` using `plot(X)`, -and a `Vector` of them using `plot([X, Y])` - -- Rewritten rounding functionality which gives type-stable interval functions, and hence -better performance - -- `(1..2) × (3..4)` syntax for constructing `IntervalBox`es - -- `@interval` now always returns an `Interval`. -Before e.g. `@interval mid(X)` for `X` an interval returned a number instead. - - - -## v0.5 -- Root finding has been moved into a separate submodule -[#154](https://github.com/dpsanders/ValidatedNumeris.jl/pull/154). - -New usage: - - using ValidatedNumerics - RootFinding.newton(...) - -or - using ValidatedNumerics - using ValidatedNumerics.RootFinding - newton(...) - -- Neighbouring root intervals are merged in the Newton and Krawczyk methods: [#156](https://github.com/dpsanders/ValidatedNumerics.jl/pull/156) - - -### v0.4.3 -- Fix display of intervals with different setdisplay options; [#146](https://github.com/dpsanders/ValidatedNumerics.jl/pull/146) - -- Add emptyinterval(x::IntervalBox); [#145](https://github.com/dpsanders/ValidatedNumerics.jl/pull/145) - -### v0.4.2 -- Add `setdiff` for n-dimensional `IntervalBox`es; [#144](https://github.com/dpsanders/ValidatedNumerics.jl/pull/144) - -### v0.4.1 -- Fix incompatibility for `IntervalBox` with latest tagged versions of `FixedSizeArrays.jl` -- Add `setdiff` for 2D `IntervalBox`es [#143](https://github.com/dpsanders/ValidatedNumerics.jl/pull/143) -- Make integer powers of complex intervals work [#142](https://github.com/dpsanders/ValidatedNumerics.jl/pull/142) - -## v0.4 -- Added decorated intervals [#112](https://github.com/dpsanders/ValidatedNumerics.jl/pull/112) - -- Added `setdisplay` function for modifying how intervals are displayed [#115](https://github.com/dpsanders/ValidatedNumerics.jl/pull/115) - -- Added `±` syntax for creating intervals as e.g. `1.3 ± 0.1` [#116](https://github.com/dpsanders/ValidatedNumerics.jl/pull/116) - - -## v0.3 - -- [Added `IntervalBox` type](https://github.com/dpsanders/ValidatedNumerics.jl/pull/88), representing a multi-dimensional (hyper-)box as a `FixedSizeArray` of `Interval`s. - -- Internal clean-up, including rewriting what was the internal, unexported `make_interval` -function as (exported) methods for `convert`, so that you can now write e.g. -`convert(Interval{Float64}, "0.1")`; this is used by `@interval`. - -- [Replaced](https://github.com/dpsanders/ValidatedNumerics.jl/pull/101) the simple automatic differentiation functionality that was part of -the package with the sophisticated `ForwardDiff` package. - -- [Unified](https://github.com/dpsanders/ValidatedNumerics.jl/pull/102) the names of the -precision and rounding functions with the -new, [flexible names](https://github.com/JuliaLang/julia/pull/13232) in Julia v0.5: - -- `set_interval_precision(x)` -> `setprecision(Interval, x)`. -- `get_interval_precision()` -> `precision(Interval)` -- `set_interval_rounding(x)` -> `setrounding(Interval, x)` -- `get_interval_rounding()` -> `rounding(Interval)` - -- The ITF1788 test suite has been temporarily disabled on Julia v0.5 due to a -performance regression in parsing long test suites. - -- `convert(Interval, x)` has been removed. You must specify the element type of -the interval, e.g. `convert(Interval{Float64}, 0.1)` - -## v0.2 - -- Significant progress has been made towards conformance with the [IEEE 1788-2015 - IEEE Standard for Interval Arithmetic] (https://standards.ieee.org/findstds/standard/1788-2015.html), with many functions added, including hyperbolic functions (`cosh`, etc.) - -- The [CRlibm.jl](https://github.com/dpsanders/CRlibm.jl) (Correctly-Rounded mathematics library) is now used to obtain correctly-rounded elementary functions (`sin`, `exp`, etc.) for `Float64` arguments. Functions that are not available in `CRlibm.jl` are taken from MPFR, and are hence slower; note that this includes the `^` function. - -- Julia versions of files from the comprehensive [ITF1788 test suite](https://github.com/oheim/ITF1788) by Marco Nehmeier and Maximilian Kiesner have been included in our own test suite, thanks to the efforts of Oliver Heimlich. All relevant tests pass. - -- Documentation has been enhanced. - -- v0.2 **supports only Julia v0.4 and later**. - -- Changes are detailed in [issue #31](https://github.com/dpsanders/ValidatedNumerics.jl/issues/31) - - -### 0.1.3 - -- 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`, `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` (`⪽`). - -**Important notice:** This is the **last version** of the package that -supports Julia v0.3. - -### 0.1.2 - -- Increase test coverage and corresponding bug fixes -- Enable pre-compilation for Julia v0.4 - -### 0.1.1 - -- Re-enable tests for `Interval{Float64}` (`e0f3c1506f`) - -## v0.1 - -v0.1 is the first public release of the package. - -### Interval arithmetic -- Two methods for interval rounding are available: - (i) narrow/slow (which uses hardware rounding mode changes for `Float64` intervals, and (ii) wide/fast (which does not change the rounding mode) -- The current interval precision and rounding mode are stored in the `parameters` object -- The macro `@interval` generates intervals based on the current interval precision -- Trigonometric functions are "nearly" rigorous (for `Float64` intervals, correct rounding is not currently guaranteed) -- Inverse trigonometric functions are available -- Intervals of `BigFloat`s are displayed with the precision as a subscript numeral - -### Root finding -- Newton and Krawczyk methods are implemented for rigorously finding simple roots of 1D real functions -- Stringent tests are performed, with various precision settings ( Float64` and `BigFloat ) +tests: + - all non-"rev" tests from [ITF1788](https://github.com/oheim/ITF1788) are successful (except a broken test for the `dot` function, which should be irrelevant to interval arithmetic) + - the ITF1788 test suite is automatically generated during CI diff --git a/Project.toml b/Project.toml index 026cf7011..5d88e89d9 100644 --- a/Project.toml +++ b/Project.toml @@ -5,16 +5,21 @@ version = "0.21.2" [deps] CRlibm = "96374032-68de-5a5b-8d9e-752f78720389" -EnumX = "4e289a0a-7415-4d19-859d-a7e5c4648b56" FastRounding = "fa42c844-2597-5d31-933b-ebd51ab2693f" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" RoundingEmulator = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" SetRounding = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" +[weakdeps] +DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" + +[extensions] +IADiffRulesExt = "DiffRules" + [compat] CRlibm = "0.7, 0.8, 1" -EnumX = "1" +DiffRules = "1" FastRounding = "0.2, 0.3" RoundingEmulator = "0.2" SetRounding = "0.2" -julia = "1.8" +julia = "1.9" diff --git a/TODO b/TODO deleted file mode 100644 index 5d702722f..000000000 --- a/TODO +++ /dev/null @@ -1,233 +0,0 @@ -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 (not currently parsed by julia) or ∽ \backsim or ≛ \stareq 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) \ No newline at end of file diff --git a/changelog.md b/changelog.md deleted file mode 100644 index a27e4bc93..000000000 --- a/changelog.md +++ /dev/null @@ -1,86 +0,0 @@ -# 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. diff --git a/docs/make.jl b/docs/make.jl index ca9c0f8ec..64f12dc48 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -23,7 +23,8 @@ makedocs(; "Constructing intervals" => "manual/construction.md", "Usage" => "manual/usage.md", "API" => "manual/api.md" - ] + ], + "Examples" => ["Rigorous computation of ``\\pi``" => "examples/pi.md"], ], warnonly = true ) diff --git a/docs/src/examples/pi.md b/docs/src/examples/pi.md new file mode 100644 index 000000000..025b2e387 --- /dev/null +++ b/docs/src/examples/pi.md @@ -0,0 +1,70 @@ +In this example, we compute rigorous bounds on ``\pi`` using interval arithmetic[^1], via the [`IntervalArithmetic.jl`](https://github.com/JuliaIntervals/IntervalArithmetic.jl) package. + +[^1]: W. Tucker, [*Validated Numerics: A Short Introduction to Rigorous Computations*](https://press.princeton.edu/books/hardcover/9780691147819/validated-numerics), Princeton University Press, 2011. + +There are many ways to calculate ``\pi``. For illustrative purposes, we will use the following sum + +```math +S \bydef \sum_{n=1}^\infty \frac{1}{n^2}. +``` + +According to the [Basel Problem](https://en.wikipedia.org/wiki/Basel_problem), the exact value is ``S = \frac{\pi^2}{6}``. Thus, if we can calculate a rigorous enclosure of ``S``, then we can deduce a rigorous enclosure of ``\pi``. + +First, we split ``S`` into a finite and infinite part, ``S = S_N + T_N``, where + +```math +S_N \bydef \sum_{n=1}^N \frac{1}{n^2}, \qquad +T_N \bydef S - S_N = \sum_{n=N+1}^\infty \frac{1}{n^2}. +``` + +Using integrals from below and above, we obtain ``\frac{1}{N+1} \le T_N \le \frac{1}{N}``. It remains to compute rigorous bounds for ``S_N``, which can be found by calculating the sum using interval arithmetic: + +```@example pi +using IntervalArithmetic + +function forward_sum(N) + S_N = interval(0) + + for i ∈ 1:N + S_N += interval(1) / pown(interval(i), 2) + end + + T_N = interval(1) / interval(N, N+1) + + S = S_N + T_N + + return sqrt(interval(6) * S) +end + +pi_interval = forward_sum(10^6) + +midradius(pi_interval) +``` + +The above computation shows that the midpoint of the computed interval is correct to about 10 decimal places. We can also verify directly that ``\pi`` is indeed contained in the interval: + +```@example pi +in_interval(π, pi_interval) +``` + +Lastly, let us note that, due to floating-point arithmetics, computing the sum in the opposite direction yields a more accurate answer: + +```@example pi +function backward_sum(N) + S_N = interval(0) + + for i ∈ N:-1:1 + S_N += interval(1) / pown(interval(i), 2) + end + + T_N = interval(1) / interval(N, N+1) + + S = S_N + T_N + + return sqrt(interval(6) * S) +end + +improved_pi_interval = backward_sum(10^6) + +midradius(improved_pi_interval) +``` diff --git a/docs/src/manual/construction.md b/docs/src/manual/construction.md index d516f8274..31264201f 100644 --- a/docs/src/manual/construction.md +++ b/docs/src/manual/construction.md @@ -148,7 +148,7 @@ The submodule `IntervalArithmetic.Symbols` exports the infix operator `..` and ` ```@repl construction using IntervalArithmetic.Symbols -0.1 .. 0.2 # interval(0.1, 0.2; format = :standard) +0.1 .. 0.2 # interval(0.1, 0.2; format = :infsup) 0.1 ± 0.2 # interval(0.1, 0.2; format = :midpoint) ``` diff --git a/docs/src/manual/usage.md b/docs/src/manual/usage.md index a8aa9ec34..8907ffd3f 100644 --- a/docs/src/manual/usage.md +++ b/docs/src/manual/usage.md @@ -4,7 +4,7 @@ There are several useful output representations for intervals. The display is co - interval output format: - - `:standard`: output of the form `[1.09999, 1.30001]`, rounded to the current number of significant figures. + - `:infsup`: output of the form `[1.09999, 1.30001]`, rounded to the current number of significant figures. - `:full`: output of the form `Interval(1.0999999999999999, 1.3)`, as in the `showfull` function. @@ -25,7 +25,7 @@ setdisplay(:midpoint) a setdisplay(; sigdigits = 4) a -setdisplay(:standard) +setdisplay(:infsup) a ``` @@ -103,3 +103,9 @@ issubset_interval(interval(1, 2), interval(2)) intersect(interval(1, 2), interval(2)) intersect_interval(interval(1, 2), interval(2)) ``` + + + +## Custom interval bounds type + +A `BareInterval{T}` or `Interval{T}` has the restriction `T <: Union{Rational,AbstractFloat}` which is type for the bounds of the interval. Supposing one wishes to use their own numeric type `MyNumType <: Union{Rational,AbstractFloat}`, they must provide their own arithmetic operations (with correct rounding!). diff --git a/examples/Calculating rigorous bounds on pi.ipynb b/examples/Calculating rigorous bounds on pi.ipynb deleted file mode 100644 index 4aeb43db7..000000000 --- a/examples/Calculating rigorous bounds on pi.ipynb +++ /dev/null @@ -1,435 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Calculating rigorous bounds on $\\pi$ with interval arithmetic \n", - "\n", - "[David P. Sanders](http://sistemas.fciencias.unam.mx/~dsanders/)\n", - "\n", - "Department of Physics, Faculty of Sciences, National University of Mexico (UNAM)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Following the book [*Validated Numerics*](http://press.princeton.edu/titles/9488.html) (Princeton, 2011) by [Warwick Tucker](http://www2.math.uu.se/~warwick/CAPA/warwick/warwick.html), we find *rigorous* (i.e., guaranteed, or *validated*) bounds on $\\pi$ using interval arithmetic, via the [`IntervalArithmetic.jl`](https://github.com/dpsanders/IntervalArithmetic.jl) package.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "using IntervalArithmetic" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Calculating $\\pi$ via a simple sum " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are many ways to calculate $\\pi$. For illustrative purposes, we will use the following sum\n", - "\n", - "$$ S := \\sum_{n=1}^\\infty \\frac{1}{n^2}.$$\n", - "\n", - "It is [known](http://en.wikipedia.org/wiki/Basel_problem) that the exact value is $S = \\frac{\\pi^2}{6}$.\n", - "Thus, if we can calculate rigorous bounds on $S$, then we can find rigorous bounds on $\\pi$. \n", - "\n", - "The idea is to split $S$ up into two parts, $S = S_N + T_N$, with\n", - "$ S_N := \\sum_{n=1}^N \\frac{1}{n^2}$\n", - "and $T_N := S - S_N = \\sum_{n=N+1}^\\infty n^{-2}$.\n", - "\n", - "By bounding $T_N$ using integrals from below and above, we can see that $\\frac{1}{N+1} \\le T_N \\le \\frac{1}{N}$.\n", - "Rigorous bounds on $S_N$ are found by calculating it using interval arithmetic.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "$S_N$ may be calculated by summing either forwards or backwards. A naive (non-interval) version could be the following:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "forward_sum_naive (generic function with 1 method)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function forward_sum_naive(N)\n", - " S_N = 0.0\n", - "\n", - " for i in 1:N\n", - " S_N += 1./(i^2)\n", - " end\n", - "\n", - " S_N\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(1.6448340718480652,9.999500016122376e-5)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "S = forward_sum_naive(10000)\n", - "err = abs(S - pi^2/6.) # error\n", - "S, err" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Interval arithmetic " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To find *rigorous* bounds for $S_N$, we use interval arithmetic: each term is enclosed in an interval that is guaranteed to contain the true real value. A first idea is simply to wrap each term in the `@interval` macro, which converts its arguments into containing intervals:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "forward_S_N (generic function with 1 method)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function forward_S_N(N)\n", - " S_N = @interval(0.0)\n", - "\n", - " for i in 1:N\n", - " S_N += @interval( 1./(i^2) )\n", - " end\n", - "\n", - " S_N\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 0.787551828 seconds (236886656 bytes allocated, 24.83% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "[1.6449240668871583, 1.644924066909359]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "N = 10^5\n", - "@time rigorous_approx_S_N = forward_S_N(N)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We incorporate the respective bound on $T_N$ to obtain the bounds on $S$, and hence on $\\pi$. We can also optimize the code by creating the interval `@interval(1)` only once:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 4.652939682 seconds (2080127080 bytes allocated, 27.31% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "([3.1415926534833463, 3.1415926536963346],2.1298829366855898e-10)" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function forward_sum(N)\n", - " S_N = @interval(0.0)\n", - " interval_one = @interval(1.)\n", - "\n", - " for i in 1:N\n", - " S_N += interval_one / (i^2)\n", - " end\n", - " \n", - " T_N = interval_one / @interval(N, N+1)\n", - " S = S_N + T_N\n", - "\n", - " sqrt(6*S)\n", - "end\n", - "\n", - "N = 10^6\n", - "@time S = forward_sum(N)\n", - "S, diam(S)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can ask for the midpoint--radius representation, which shows that the calculated bounds are correct to around 10 decimal places:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(3.141592653589824,5.834666083615048e-11)" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "midpoint_radius(S)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We may check that the true value of $\\pi$ is indeed contained in the interval:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "true" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "big(pi) ∈ S" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We may repeat the calculation, but now summing in the opposite direction. Due to the way that floating-point arithmetic works, this gives a more accurate answer." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 5.638430487 seconds (2080153808 bytes allocated, 28.92% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "([3.1415926535893144, 3.141592653590272],9.57456336436735e-13)" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function reverse_sum(N)\n", - " S_N = @interval(0.0)\n", - " interval_one = @interval(1.)\n", - "\n", - " for i in N:-1:1\n", - " S_N += interval_one / (i^2)\n", - " end\n", - " \n", - " T_N = interval_one / @interval(N, N+1)\n", - " S = S_N + T_N\n", - "\n", - " sqrt(6*S)\n", - "end\n", - "\n", - "N = 10^6\n", - "@time S = reverse_sum(N)\n", - "S, diam(S)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the `sqrt` function is guaranteed (by the [IEEE 754 standard](http://en.wikipedia.org/wiki/IEEE_floating_point)) to give correctly-rounded results, so the resulting bounds on $\\pi$ are *guaranteed to be correct*." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note also that due to the way that the `IntervalArithmetic` package works, we can make the code simpler, at the expense of some performance. Only two explicit calls to the `@interval` macro are now required:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 6.699738655 seconds (2264155172 bytes allocated, 27.45% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "([3.1415926535893144, 3.141592653590272],9.57456336436735e-13)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function reverse_sum2(N)\n", - " S_N = @interval(0.0)\n", - "\n", - " for i in N:-1:1\n", - " S_N += 1 / (i^2)\n", - " end\n", - " \n", - " T_N = 1 / @interval(N, N+1)\n", - " S = S_N + T_N\n", - "\n", - " sqrt(6*S)\n", - "end\n", - "\n", - "N = 10^6\n", - "@time S = reverse_sum2(N)\n", - "S, diam(S)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 0.3.8-pre", - "language": "julia", - "name": "julia 0.3" - }, - "language_info": { - "name": "julia", - "version": "0.3.9" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Periodic points of the logistic map.ipynb b/examples/Periodic points of the logistic map.ipynb deleted file mode 100644 index 690d30cf9..000000000 --- a/examples/Periodic points of the logistic map.ipynb +++ /dev/null @@ -1,1003 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "using IntervalArithmetic" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "logistic (generic function with 1 method)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "logistic(r, x) = -r*((x-0.5)^2 - 0.25) #r*x*(1-x)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[-0.0001, 1.0001000000000002]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X = @interval(-0.0001, 1.0001)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-6.968514798756479e-17, 1.3517743393731552e-16],:unique)\n", - " ([0.6774193548387095, 0.6774193548387097],:unique) " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(3.1)\n", - "newton(x -> logistic(r,x)-x, X)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-6.233702290330726e-17, 1.1931689491945523e-16],:unique)\n", - " ([0.5580141252026949, 0.5580141252026971],:unique) \n", - " ([0.6774193548387076, 0.6774193548387121],:unique) \n", - " ([0.7645665199585938, 0.7645665199585949],:unique) " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(3.1)\n", - "newton(x -> logistic(r, logistic(r,x))-x, @interval(-1, 2))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "function iterate_logistic(n)\n", - " ex = :(x)\n", - " for i in 1:n\n", - " ex = :(logistic(r,$ex))\n", - " end\n", - " ex = :($(ex) - x)\n", - " ex\n", - "end\n", - "\n", - "for n in [1, 2, 4, 5, 8:16, 32]\n", - " name = symbol(\"logistic_iterated_$n\")\n", - " ex = iterate_logistic(n)\n", - " @eval $name(r,x) = $ex\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - ":(logistic(r,logistic(r,logistic(r,logistic(r,x)))) - x)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "iterate_logistic(4)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "-0.0" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "logistic_iterated_16(3.1, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-9.947150462130687e-17, 1.1038772564320529e-16],:unique)\n", - " ([0.5580141252026949, 0.5580141252026971],:unique) \n", - " ([0.6774193548387076, 0.6774193548387116],:unique) \n", - " ([0.7645665199585937, 0.7645665199585948],:unique) " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(3.1)\n", - "newton(x -> logistic_iterated_2(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "8-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-9.361862579270038e-17, 1.0515086331210236e-16],:unique)\n", - " ([0.3828196830173237, 0.3828196830173243],:unique) \n", - " ([0.4285714285714273, 0.4285714285714295],:unique) \n", - " ([0.5008842103072174, 0.5008842103072186],:unique) \n", - " ([0.7142857142857141, 0.7142857142857144],:unique) \n", - " ([0.8269407065914381, 0.8269407065914388],:unique) \n", - " ([0.8571428571428567, 0.8571428571428578],:unique) \n", - " ([0.874997263602464, 0.8749972636024642],:unique) " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(3.5)\n", - "newton(x -> logistic_iterated_4(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-6.450867901675527e-17, 1.5719872312603065e-16],:unique)\n", - " ([0.3548004479999936, 0.35480044799999727],:unique) \n", - " ([0.36112003982837154, 0.36112003982838603],:unique) \n", - " ([0.37032556106597025, 0.37032556106597875],:unique) \n", - " ([0.41803814056962735, 0.41803814056962996],:unique) \n", - " ([0.5060305096360181, 0.5060305096360388],:unique) \n", - " ([0.5261830680927085, 0.5261830680927377],:unique) \n", - " ([0.5404748339895925, 0.5404748339896022],:unique) \n", - " ([0.7183098591549292, 0.71830985915493],:unique) \n", - " ([0.8126556698514403, 0.8126556698514448],:unique) \n", - " ([0.8190288661526807, 0.8190288661526939],:unique) \n", - " ([0.8278051165993622, 0.8278051165993711],:unique) \n", - " ([0.8636520002754412, 0.8636520002754425],:unique) \n", - " ([0.8816843467379748, 0.8816843467379784],:unique) \n", - " ([0.8850662866556411, 0.8850662866556468],:unique) \n", - " ([0.8873708969850299, 0.8873708969850314],:unique) " - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(3.55)\n", - "newton(x -> logistic_iterated_8(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-9.468711597088143e-17, 1.0093800912363333e-16],:unique)\n", - " ([0.35480044799999333, 0.3548004479999971],:unique) \n", - " ([0.3611200398283715, 0.3611200398283861],:unique) \n", - " ([0.3703255610659702, 0.3703255610659793],:unique) \n", - " ([0.41803814056962735, 0.41803814056963],:unique) \n", - " ([0.5060305096360179, 0.5060305096360391],:unique) \n", - " ([0.5261830680927094, 0.5261830680927403],:unique) \n", - " ([0.5404748339895923, 0.5404748339896025],:unique) \n", - " ([0.7183098591549291, 0.7183098591549301],:unique) \n", - " ([0.8126556698514402, 0.8126556698514449],:unique) \n", - " ([0.8190288661526809, 0.8190288661526951],:unique) \n", - " ([0.8278051165993631, 0.8278051165993718],:unique) \n", - " ([0.8636520002754411, 0.8636520002754426],:unique) \n", - " ([0.8816843467379746, 0.8816843467379786],:unique) \n", - " ([0.8850662866556408, 0.8850662866556466],:unique) \n", - " ([0.8873708969850298, 0.8873708969850315],:unique) " - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(3.55)\n", - "krawczyk(x -> logistic_iterated_8(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "256-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-6.685942182571293e-17, 9.736289924187537e-17],:unique) \n", - " ([0.00014942107845312833, 0.0001494210784532221],:unique) \n", - " ([0.00015177401106415282, 0.00015177401106424558],:unique)\n", - " ([0.0005975950071779156, 0.0005975950071780078],:unique) \n", - " ([0.0006070039028550085, 0.0006070039028551082],:unique) \n", - " ([0.0013442539196471853, 0.001344253919647281],:unique) \n", - " ([0.0013654133071059132, 0.0013654133071060027],:unique) \n", - " ([0.0023889515495412795, 0.0023889515495413996],:unique) \n", - " ([0.00242654179646774, 0.002426541796467861],:unique) \n", - " ([0.0037310634974740595, 0.0037310634974741606],:unique) \n", - " ([0.0037897451640320594, 0.003789745164032159],:unique) \n", - " ([0.005369787604186948, 0.005369787604187054],:unique) \n", - " ([0.00545419581442697, 0.005454195814427069],:unique) \n", - " ⋮ \n", - " ([0.9954156265457801, 0.9954156265457802],:unique) \n", - " ([0.9954865939027027, 0.9954865939027029],:unique) \n", - " ([0.9969295684476368, 0.9969295684476369],:unique) \n", - " ([0.9969771232924401, 0.9969771232924403],:unique) \n", - " ([0.9981418263742147, 0.9981418263742148],:unique) \n", - " ([0.9981706172512619, 0.998170617251262],:unique) \n", - " ([0.999051664368522, 0.9990516643685221],:unique) \n", - " ([0.9990663624465502, 0.9990663624465503],:unique) \n", - " ([0.9996585300715114, 0.9996585300715115],:unique) \n", - " ([0.9996638235054527, 0.9996638235054528],:unique) \n", - " ([0.9999620550574152, 0.9999620550574153],:unique) \n", - " ([0.9999626433348662, 0.9999626433348664],:unique) " - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(4)\n", - "newton(x -> logistic_iterated_8(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "220598-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-0.0001, -9.999906849116088e-5],:unknown) \n", - " ([-9.999906849116087e-5, -9.999813698232174e-5],:unknown)\n", - " ([-9.999813698232173e-5, -9.99972054734826e-5],:unknown) \n", - " ([-9.999720547348259e-5, -9.999627396464349e-5],:unknown)\n", - " ([-9.999627396464347e-5, -9.999534245580435e-5],:unknown)\n", - " ([-9.999534245580434e-5, -9.999441094696521e-5],:unknown)\n", - " ([-9.99944109469652e-5, -9.999347943812607e-5],:unknown) \n", - " ([-9.999347943812606e-5, -9.999254792928696e-5],:unknown)\n", - " ([-9.999254792928695e-5, -9.999161642044782e-5],:unknown)\n", - " ([-9.99916164204478e-5, -9.999068491160868e-5],:unknown) \n", - " ([-9.999068491160867e-5, -9.998975340276954e-5],:unknown)\n", - " ([-9.998975340276953e-5, -9.998882189393043e-5],:unknown)\n", - " ([-9.998882189393042e-5, -9.998789038509129e-5],:unknown)\n", - " ⋮ \n", - " ([1.0000999888218949, 1.0000999897534038],:unknown) \n", - " ([1.000099989753404, 1.0000999906849124],:unknown) \n", - " ([1.0000999906849126, 1.000099991616421],:unknown) \n", - " ([1.0000999916164213, 1.0000999925479297],:unknown) \n", - " ([1.00009999254793, 1.0000999934794388],:unknown) \n", - " ([1.000099993479439, 1.0000999944109474],:unknown) \n", - " ([1.0000999944109477, 1.0000999953424565],:unknown) \n", - " ([1.0000999953424567, 1.0000999962739652],:unknown) \n", - " ([1.0000999962739654, 1.0000999972054743],:unknown) \n", - " ([1.0000999972054745, 1.000099998136983],:unknown) \n", - " ([1.0000999981369831, 1.0000999990684916],:unknown) \n", - " ([1.0000999990684918, 1.0001000000000002],:unknown) " - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(4)\n", - "newton(x -> logistic_iterated_16(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "65069-element Array{(Interval{Float64},Symbol),1}:\n", - " ([1.3273284430570427e-5, 1.327328443066284e-5],:unique) \n", - " ([1.7795734016136777e-5, 1.779573401628048e-5],:unique) \n", - " ([1.8612681896730634e-5, 1.8612681896823096e-5],:unique)\n", - " ([2.0305136135843612e-5, 2.030513613593623e-5],:unique) \n", - " ([2.1620561528009657e-5, 2.1620561528102496e-5],:unique)\n", - " ([2.3440452157732228e-5, 2.3440452157831687e-5],:unique)\n", - " ([2.344188288191098e-5, 2.344188288201578e-5],:unique) \n", - " ([2.4379458657892453e-5, 2.4379458657984908e-5],:unique)\n", - " ([2.4855140261344045e-5, 2.4855140261437744e-5],:unique)\n", - " ([2.5820290877229384e-5, 2.5820290877321853e-5],:unique)\n", - " ([2.6309759880782993e-5, 2.630975988088592e-5],:unique) \n", - " ([2.680218876442067e-5, 2.6802188764513737e-5],:unique) \n", - " ([2.730081891125118e-5, 2.7300818911420588e-5],:unique) \n", - " ⋮ \n", - " ([0.9999734437821953, 0.9999734437821955],:unique) \n", - " ([0.9999734454029944, 0.9999734454029946],:unique) \n", - " ([0.9999739371398805, 0.9999739371398807],:unique) \n", - " ([0.9999744227202014, 0.9999744227202015],:unique) \n", - " ([0.9999744242812537, 0.9999744242812538],:unique) \n", - " ([0.9999749052955099, 0.99997490529551],:unique) \n", - " ([0.9999753847774436, 0.9999753847774437],:unique) \n", - " ([0.9999758581322514, 0.9999758581322516],:unique) \n", - " ([0.9999763254466042, 0.9999763254466043],:unique) \n", - " ([0.9999772506234746, 0.9999772506234748],:unique) \n", - " ([0.9999879210995385, 0.9999879210995387],:unique) \n", - " ([0.9999879218367506, 0.9999879218367508],:unique) " - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "roots = ans;\n", - "filter(x -> x[2]==:unique, roots)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.0" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "logistic_iterated_16(3.1, 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "32-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-5.660020044625717e-17, 1.3150105603012344e-16],:unique)\n", - " ([0.00903565136864659, 0.009035651368646704],:unique) \n", - " ([0.010235029373752695, 0.010235029373752817],:unique) \n", - " ([0.0358160334919636, 0.03581603349196378],:unique) \n", - " ([0.040521094189884616, 0.0405210941898848],:unique) \n", - " ([0.07937323358440937, 0.07937323358440947],:unique) \n", - " ([0.08961827939636176, 0.08961827939636192],:unique) \n", - " ([0.1381329809474648, 0.13813298094746498],:unique) \n", - " ([0.15551654046215668, 0.15551654046215696],:unique) \n", - " ([0.20997154521440084, 0.20997154521440098],:unique) \n", - " ([0.2355179948365187, 0.2355179948365189],:unique) \n", - " ([0.29229249349905667, 0.2922924934990569],:unique) \n", - " ([0.32634737357758975, 0.32634737357758997],:unique) \n", - " ⋮ \n", - " ([0.7201970757788171, 0.7201970757788173],:unique) \n", - " ([0.7499999999999999, 0.7500000000000001],:unique) \n", - " ([0.8060529912738313, 0.8060529912738316],:unique) \n", - " ([0.8274303669726424, 0.8274303669726426],:unique) \n", - " ([0.8793790613463953, 0.8793790613463955],:unique) \n", - " ([0.8930265473713936, 0.8930265473713939],:unique) \n", - " ([0.9371733080722909, 0.9371733080722912],:unique) \n", - " ([0.9444177243274616, 0.9444177243274618],:unique) \n", - " ([0.9770696282000243, 0.9770696282000245],:unique) \n", - " ([0.9797464868072486, 0.9797464868072487],:unique) \n", - " ([0.9974346616959475, 0.9974346616959476],:unique) \n", - " ([0.9977359612865422, 0.9977359612865424],:unique) " - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newton(x->logistic_iterated_5(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "ename": "LoadError", - "evalue": "BoundsError()\nwhile loading In[30], in expression starting on line 1", - "output_type": "error", - "traceback": [ - "BoundsError()\nwhile loading In[30], in expression starting on line 1", - "", - " in getindex at array.jl:246" - ] - } - ], - "source": [ - "roots[roots[2]==:unique]" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1024-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-1.0220696221544258e-16, 8.283033843053199e-17],:unique)\n", - " ([9.394002137712196e-6, 9.394002137833982e-6],:unique) \n", - " ([9.430769118680364e-6, 9.430769118773784e-6],:unique) \n", - " ([3.757565556196494e-5, 3.7575655562059124e-5],:unique) \n", - " ([3.772272071721069e-5, 3.772272071733585e-5],:unique) \n", - " ([8.454390131859121e-5, 8.454390131868317e-5],:unique) \n", - " ([8.487478753608691e-5, 8.487478753617993e-5],:unique) \n", - " ([0.00015029697452838232, 0.0001502969745285893],:unique) \n", - " ([0.0001508851908543323, 0.0001508851908544388],:unique) \n", - " ([0.00023483240445339927, 0.00023483240445349297],:unique)\n", - " ([0.0002357514405563716, 0.00023575144055646552],:unique) \n", - " ([0.0003381470145895322, 0.00033814701458962634],:unique) \n", - " ([0.00033947033522630486, 0.0003394703352264008],:unique) \n", - " ⋮ \n", - " ([0.999714745464859, 0.9997147454648591],:unique) \n", - " ([0.9997158574619074, 0.9997158574619076],:unique) \n", - " ([0.9998090384816738, 0.999809038481674],:unique) \n", - " ([0.999809782923107, 0.9998097829231072],:unique) \n", - " ([0.9998844771639072, 0.9998844771639074],:unique) \n", - " ([0.9998849275276295, 0.9998849275276297],:unique) \n", - " ([0.9999410586657799, 0.9999410586657801],:unique) \n", - " ([0.9999412884518407, 0.9999412884518408],:unique) \n", - " ([0.9999787808528637, 0.9999787808528638],:unique) \n", - " ([0.9999788635779219, 0.9999788635779221],:unique) \n", - " ([0.9999976423021615, 0.9999976423021617],:unique) \n", - " ([0.99999765149395, 0.9999976514939501],:unique) " - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(4)\n", - "newton(x -> logistic_iterated_10(r, x), X)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1024" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "length(filter(x->x[2]==:unique, ans))" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2048-element Array{(Interval{Float64},Symbol),1}:\n", - " ([-3.7739729411576187e-17, 7.443905684961557e-17],:unique)\n", - " ([2.350798951126237e-6, 2.3507989511639162e-6],:unique) \n", - " ([2.3553948387492456e-6, 2.3553948388366314e-6],:unique) \n", - " ([9.403173699520289e-6, 9.403173699560357e-6],:unique) \n", - " ([9.421557163670454e-6, 9.421557163730942e-6],:unique) \n", - " ([2.1157057930306742e-5, 2.115705793034727e-5],:unique) \n", - " ([2.11984204002431e-5, 2.119842040030646e-5],:unique) \n", - " ([3.761234111944355e-5, 3.76123411194866e-5],:unique) \n", - " ([3.768587359185487e-5, 3.768587359191397e-5],:unique) \n", - " ([5.8768868534615475e-5, 5.8768868534701886e-5],:unique) \n", - " ([5.888376140063535e-5, 5.888376140069161e-5],:unique) \n", - " ([8.46264412368879e-5, 8.462644123696015e-5],:unique) \n", - " ([8.479188410901219e-5, 8.47918841090595e-5],:unique) \n", - " ⋮ \n", - " ([0.9999287509423916, 0.9999287509423918],:unique) \n", - " ([0.9999288899616146, 0.9999288899616147],:unique) \n", - " ([0.9999523039753886, 0.9999523039753887],:unique) \n", - " ([0.9999523970393035, 0.9999523970393037],:unique) \n", - " ([0.9999711466680797, 0.99997114666808],:unique) \n", - " ([0.9999712029667102, 0.9999712029667103],:unique) \n", - " ([0.9999852788429373, 0.9999852788429374],:unique) \n", - " ([0.9999853075669987, 0.9999853075669988],:unique) \n", - " ([0.9999947003668137, 0.9999947003668139],:unique) \n", - " ([0.9999947107075408, 0.9999947107075409],:unique) \n", - " ([0.9999994111509435, 0.9999994111509436],:unique) \n", - " ([0.9999994122999167, 0.9999994122999168],:unique) " - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "r = @interval(4)\n", - "newton(x -> logistic_iterated_11(r, x), X, tolerance=0, maxlevel=40)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2047" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "length(filter(x->x[2]==:unique, ans))" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{(Interval{Float64},Symbol),1}:\n", - " ([0.9999994111509435, 0.9999994111509436],:unique)" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newton(x->logistic_iterated_11(r, x), @interval(\"[0.9999994111193403, 0.9999994112365287]\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{(Interval{BigFloat},Symbol),1}:\n", - " ([9.999994111509435535683237673405515492356983378423455810550216538164422108648822e-01, 9.999994111509435535683237673405515492356983378423455810550216538164422108648995e-01]₂₅₆,:unique)" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newton(x->logistic_iterated_11(r, x), @biginterval(\"[0.9999994111193403, 0.9999994112365287]\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1.727233711018888925077270372560079914223200072887256277004740694033718360632485e-77 with 256 bits of precision" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "diam(ans[1][1])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exact periodic points for $r=4$ " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When $r=4$, it is possible to calculate the periodic points *exactly*; see e.g. Sanders+Benet, Scipy 2014 proceedings. First we calculate the periodic points of the tent map using `BigFloat`s:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "tent_map_periodic_points (generic function with 1 method)" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function tent_map_periodic_points(n)\n", - " \n", - " evens = big(1.0)/(big(2)^n-1) * collect(0:2:2^n-1)\n", - " odds = big(1.0)/(big(2)^n+1) * collect(2:2:2^n)\n", - " \n", - " points = zeros(BigFloat, 2^n)\n", - " points[1:2:2^n] = evens\n", - " points[2:2:2^n] = odds\n", - " \n", - " points\n", - " \n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Array{BigFloat,1}:\n", - " 0e+00 \n", - " 1.17647058823529411764705882352941176470588235294117647058823529411764705882353e-01 \n", - " 1.333333333333333333333333333333333333333333333333333333333333333333333333333343e-01\n", - " 2.35294117647058823529411764705882352941176470588235294117647058823529411764706e-01 \n", - " 2.666666666666666666666666666666666666666666666666666666666666666666666666666687e-01\n", - " 3.529411764705882352941176470588235294117647058823529411764705882352941176470601e-01\n", - " 4.000000000000000000000000000000000000000000000000000000000000000000000000000052e-01\n", - " 4.70588235294117647058823529411764705882352941176470588235294117647058823529412e-01 \n", - " 5.333333333333333333333333333333333333333333333333333333333333333333333333333374e-01\n", - " 5.882352941176470588235294117647058823529411764705882352941176470588235294117683e-01\n", - " 6.666666666666666666666666666666666666666666666666666666666666666666666666666695e-01\n", - " 7.058823529411764705882352941176470588235294117647058823529411764705882352941202e-01\n", - " 8.000000000000000000000000000000000000000000000000000000000000000000000000000104e-01\n", - " 8.235294117647058823529411764705882352941176470588235294117647058823529411764721e-01\n", - " 9.333333333333333333333333333333333333333333333333333333333333333333333333333425e-01\n", - " 9.41176470588235294117647058823529411764705882352941176470588235294117647058824e-01 " - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tent_map_periodic_points(4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These points $y_n$ are mapped onto periodic points of the logistic map by $x := h(y) := \\sin^2(\\frac{\\pi}{2} y)$" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "h (generic function with 1 method)" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h(y) = sin(π*y/2)^2" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Array{BigFloat,1}:\n", - " 0e+00 \n", - " 3.376388529782209771344205408921830686870611102744153587582499406973197671517772e-02\n", - " 4.322727117869955224893621400734141102959477031126272746950010596744255894868408e-02\n", - " 1.304955413896704420377328450636759471200411901459511384214268446520135907271199e-01\n", - " 1.654346968205708930868633346566097632002083905201021615912733238560166991446783e-01\n", - " 2.771308221117308663017712253102565722861611132052862534998310635742086249501397e-01\n", - " 3.454915028125262879488532914085904705699227050485592844661378443236848842952812e-01\n", - " 4.538658202683490023801744464227467598184913581220883334042287350394312129893768e-01\n", - " 5.522642316338267356999170774012490595403279347372965569966377383562423253465847e-01\n", - " 6.368314950360414317695389677184067158124263347132527319387145577056778723541536e-01\n", - " 7.500000000000000000000000000000000000000000000000000000000000000000000000000086e-01\n", - " 8.013173181896281945892940774934203108094822908742071451762467471481287631862079e-01\n", - " 9.045084971874737120511467085914095294300772949514407155338621556763151157047318e-01\n", - " 9.251085678648070760670719614746760292353301643789564236850368282088540328017113e-01\n", - " 9.890738003669028189642833739347997662298689044313385539425888318202984165600556e-01\n", - " 9.914865498419508891409744224275993580493614375328164379986902296019539262761255e-01" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "logistic_exact_period_4_points = map(h, tent_map_periodic_points(4))" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "16-element Array{Root{Float64},1}:\n", - " Root([-7.034439914540779e-17, 7.771423880327514e-17], :unique)\n", - " Root([0.03376388529782207, 0.03376388529782214], :unique) \n", - " Root([0.043227271178699504, 0.04322727117869961], :unique) \n", - " Root([0.13049554138967037, 0.13049554138967054], :unique) \n", - " Root([0.16543469682057083, 0.165434696820571], :unique) \n", - " Root([0.2771308221117308, 0.27713082211173096], :unique) \n", - " Root([0.3454915028125262, 0.3454915028125264], :unique) \n", - " Root([0.45386582026834876, 0.4538658202683492], :unique) \n", - " Root([0.5522642316338267, 0.5522642316338269], :unique) \n", - " Root([0.6368314950360413, 0.6368314950360415], :unique) \n", - " Root([0.7499999999999999, 0.7500000000000002], :unique) \n", - " Root([0.8013173181896281, 0.8013173181896283], :unique) \n", - " Root([0.9045084971874736, 0.9045084971874738], :unique) \n", - " Root([0.925108567864807, 0.9251085678648071], :unique) \n", - " Root([0.9890738003669027, 0.9890738003669028], :unique) \n", - " Root([0.9914865498419508, 0.991486549841951], :unique) " - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "logistic_r4_period_4_points = find_roots(x -> logistic_iterated_4(4., x), -1e-10, 1+1e-10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These intervals do contain the exact roots:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "true" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "all([logistic_exact_period_4_points[i] in logistic_r4_period_4_points[i].interval for i in 1:16])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this calculation does *not* work using standard floating point for the calculation of the exact points -- rounding errors result in floating point numbers that are *outside* these guaranteed bounds." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 0.3.10-pre", - "language": "julia", - "name": "julia-0.3" - }, - "language_info": { - "name": "julia", - "version": "0.3.10" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Range of 2-dimensional functions.ipynb b/examples/Range of 2-dimensional functions.ipynb deleted file mode 100644 index 6c5e83601..000000000 --- a/examples/Range of 2-dimensional functions.ipynb +++ /dev/null @@ -1,1440 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "using IntervalArithmetic" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "split (generic function with 12 methods)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import Base.split\n", - "\n", - "function split{T<:Real}(x::Interval{T}, n::Integer)\n", - " \n", - " width = diam(x) / n\n", - " \n", - " intervals = [Interval(x.lo + width*i, x.lo + width*(i+1)) for i in 0:n-1]\n", - " \n", - "end\n", - "\n", - "function split{T<:Real}(X::IntervalBox{2,T}, n::Integer, m::Integer=n)\n", - " x, y = X\n", - " \n", - " x_intervals = split(x, m)\n", - " y_intervals = split(y, n)\n", - " \n", - " boxes = IntervalBox{2,T}[]\n", - " \n", - " for i in x_intervals, j in y_intervals\n", - " push!(boxes, IntervalBox(i, j))\n", - " end\n", - " \n", - " boxes\n", - " \n", - "end\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "9-element Array{IntervalArithmetic.IntervalBox{2,Float64},1}:\n", - " IntervalBox([0.0, 0.3333333333333333],[0.0, 0.3333333333333333]) \n", - " IntervalBox([0.0, 0.3333333333333333],[0.3333333333333333, 0.6666666666666666]) \n", - " IntervalBox([0.0, 0.3333333333333333],[0.6666666666666666, 1.0]) \n", - " IntervalBox([0.3333333333333333, 0.6666666666666666],[0.0, 0.3333333333333333]) \n", - " IntervalBox([0.3333333333333333, 0.6666666666666666],[0.3333333333333333, 0.6666666666666666])\n", - " IntervalBox([0.3333333333333333, 0.6666666666666666],[0.6666666666666666, 1.0]) \n", - " IntervalBox([0.6666666666666666, 1.0],[0.0, 0.3333333333333333]) \n", - " IntervalBox([0.6666666666666666, 1.0],[0.3333333333333333, 0.6666666666666666]) \n", - " IntervalBox([0.6666666666666666, 1.0],[0.6666666666666666, 1.0]) " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X = IntervalBox(0..1, 0..1)\n", - "\n", - "\n", - "input = split(X, 3)\n", - "input" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "f (generic function with 1 method)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "f(xx::IntervalBox) = ((x,y)=xx; IntervalBox(2x + y, x + y))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "9-element Array{IntervalArithmetic.IntervalBox{2,Float64},1}:\n", - " IntervalBox([0.0, 1.0],[0.0, 0.6666666666666666]) \n", - " IntervalBox([0.3333333333333333, 1.3333333333333333],[0.3333333333333333, 1.0]) \n", - " IntervalBox([0.6666666666666666, 1.6666666666666667],[0.6666666666666666, 1.3333333333333335])\n", - " IntervalBox([0.6666666666666666, 1.6666666666666667],[0.3333333333333333, 1.0]) \n", - " IntervalBox([0.9999999999999999, 2.0],[0.6666666666666666, 1.3333333333333333]) \n", - " IntervalBox([1.3333333333333333, 2.3333333333333335],[0.9999999999999999, 1.6666666666666667])\n", - " IntervalBox([1.3333333333333333, 2.3333333333333335],[0.6666666666666666, 1.3333333333333335])\n", - " IntervalBox([1.6666666666666665, 2.666666666666667],[0.9999999999999999, 1.6666666666666667]) \n", - " IntervalBox([1.9999999999999998, 3.0],[1.3333333333333333, 2.0]) " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "output = map(f, input)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "draw (generic function with 4 methods)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "include(\"draw_function_image.jl\")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqkAAAHRCAYAAABJvyD2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X2M1fWd9//XGYaBYRBUbgQ0SKtQu9oWISiLrlGTDd6ENnVFSmtbvdrQ3W1javfnzXa3IQ1psjXbmrhedi9NSkEJ64q6ba1Ze9nWxO1SqkLXX28oshbdynArIDA3zM35/WGZ/Cg3zsDMnI/weCQk9TPf75z3OV8/8uw5c85UqtVqNQAAUJC6Wg8AAAB/TKQCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFCcXkfqCy+8kC984Qu58MILM3LkyJx77rlZsGBBXnnllV6dv3v37ixatCjjxo3LyJEjc/XVV2fdunXHPTgAACevSrVarfbmwBtvvDGrV6/O/Pnz88EPfjDNzc25//77s2/fvvzsZz/LhRdeeNRzu7u782d/9md5+eWXc+edd2bMmDF54IEH8j//8z956aWXcv755/fbHQIA4N2v15G6evXqzJo1K/X19T1rGzduzAc+8IHceOONefjhh4967r/+67/mYx/7WFatWpUbbrghSbJjx45MmzYt1157bVasWHGCdwMAgJNJryP1aGbOnJm6urq88MILRz3mpptuyn/8x39k8+bNh6z/5V/+ZR555JHs2rUrQ4cOPZExAAA4iZzQG6eq1Wq2bt2asWPHHvO4devWZcaMGYetz5o1Ky0tLdmwYcOJjAEAwEnmhCJ1xYoV2bx5cxYsWHDM45qbmzNx4sTD1g+u/fEzrAAAnNrq3/mQI1u/fn0+//nPZ86cOfn0pz99zGPb2toybNiww9aHDx+eJGltbT3ieTt27MgzzzyTKVOmpLGx8XhHBQBggLS2tmbTpk2ZO3fuO7663hfHFalbtmzJ9ddfnzPOOCOrVq1KpVI55vGNjY1pb28/bL2tra3n60fyzDPP5Oabbz6eEQEAGESPPPJIPvGJT/Tb9+tzpO7ZsyfXXntt3nrrrTz//POZMGHCO54zceLEI76k39zcnCSZNGnSEc+bMmVKkrfv9Pvf//6+jsoAu/3223PvvffWegyOwLUpm+tTpu3bt+fTixbl8nvuyfDTT6/1OPyR5xYvzpVf/Wqtx+AImtety4//9m97uq2/9ClS29raMm/evGzcuDHPPvtsLrjggl6dN3369Dz//POpVquHPOu6Zs2aNDU1Zdq0aUc87+AzrO9///uP+MYramv06NGuS6Fcm7K5PmVqbm7O0OHDc+4VV+S0I7yPgtp64X//75w/d26tx+AY+vtHM3v9xqmurq4sWLAga9asyWOPPZZLL730iMdt2bIl69evT2dnZ8/ajTfemK1bt+aJJ57oWduxY0cee+yxzJs3z8dPAQBwiF4/k/o3f/M3+f73v5958+Zlx44deeSRRw75+sGfHb377ruzfPnybNq0KZMnT07ydqTOnj07t956a37961/3/MaparWar3rqHgCAP9LrSP2v//qvVCqVfP/738/3v//9Q75WqVR6IrVSqRz2Rqq6uro8/fTTueOOO3LfffeltbU1l1xySZYvX56pU6f2w90AAOBk0uuX+3/yk5+kq6sr3d3dh/3p6urqOW7p0qXp6urqeRb1oNNPPz0PPfRQtm/fnn379uXHP/6xn8l6l1u4cGGtR+AoXJuyuT7les9FF9V6BI7iIvvmlHNCH+bPqc1ftOVybcrm+pTrvR/4QK1H4Cg+YN+cckQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAceprPQDAYNi5c2cOHDhQ6zGK8uabb6ajo6PWYxRj+/btefPNN9O1bVv2Vyq1HqcYdXV1aWxsrPUYRRkyZEhGjBhR6zFOeiIVOOnt3LkzS/7pn7K71oMUpK2lJS+//HIODB9e61GK0dnWlp0tLRnyn/+ZujPOqPU4xRiS5KyxY1NfLxkOGp7kiksuEaoDzL9xwEnvwIED2Z2k8YYbMmLcuFqPU4R9W7emkmTERz+aoWPH1nqcInRs25a9jz+eIVdckSETJtR6nCJ0d3ame+fODDvrrDQ0NNR6nCJ0tLSk7Te/SVdXV61HOemJVOCUMWLcuJw2cWKtxyjG0BEj0jhlSoZ5TJIk7SNHZuioUak/88zUjxlT63GK0Nnens7W1jSMHJlhw4bVepxidNZ6gFOEN04BAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUp0+Run///ixevDjXXHNNzjzzzNTV1WXZsmW9Ovc73/lO6urqjvhn27ZtxzU8AAAnp/q+HLx9+/YsWbIk5557bqZPn57nnnsulUqlTze4ZMmSvOc97zlkbfTo0X36HgAAnNz6FKmTJk3Kli1bMn78+Lz00kuZNWtWn2/w2muvzYwZM/p8HgAAp44+vdzf0NCQ8ePHJ0mq1epx3WC1Ws3evXvT1dV1XOcDAHDyG/Q3Tl111VUZPXp0mpqa8pGPfCQbN24c7BEAAChcn17uPxFNTU259dZbc9VVV2XUqFF58cUX881vfjNz5szJ2rVrc8455wzWKAAAFG7QInX+/PmZP39+zz9/+MMfzty5c3PFFVfka1/7Wr71rW8N1igAABRu0CL1SC677LJceumlefbZZ4953O23337YJwAsXLgwCxcuHMjxAAD4//l/V67ML1euPGRt/wB9lGhNIzVJzjnnnGzYsOGYx9x7770+EQAAoMY+sHBhPvBHTxJufOaZrLjmmn6/rZr/xqlXX30148aNq/UYAAAUZEAidcuWLVm/fn06Ozt71rZv337YcU8//XTWrl2bawagvgEAePfq88v9999/f3bv3p3NmzcnSb73ve/l9ddfT5LcdtttGTVqVO6+++4sX748mzZtyuTJk5Mkc+bMyYwZMzJz5syMHj06a9euzbe//e1Mnjw5X/7yl/vxLgEA8G7X50j9xje+kddeey1JUqlU8uSTT+aJJ55IpVLJpz71qYwaNSqVSuWwX5f6sY99LD/4wQ/ywx/+MC0tLZk0aVI+97nPZfHixV7uBwDgEH2O1N/97nfveMzSpUuzdOnSQ9aWLFmSJUuW9PXmAAA4BdX8jVMAAPDHRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFKe+1gNAf9i5c2cOHDhQ6zGK8eabb6ajo6PWYxRj+/bt2fLGG9n7q19lxLZttR6nCC3bt2fvrl3pfvPNHGhoqPU4Reh48810tLen+sYb6Wpvr/U4Rejq7EzX9u05kCTDhtV6nCIc2LcvHTt3Zt+WLcm+fbUepwhtu3cPyPcVqbzr7dy5M0v+6Z8yMFvk3aetpSUvv/xyDgwfXutRitH+1lvZsnVrKnv3+ov2D6otLel6880MffHF1I0ZU+txilB96610vvFG6h96KJVKpdbjFKG7uztpbc2+SZPS2NhY63GK0NHSkvYNG7Jr2rS0jxhR63GK0N7cPCDfV6TyrnfgwIHsTtJ4ww0ZMW5crcepuX1bt6aSZMRHP5qhY8fWepwitPz616n7P/8ndZ/7XCqTJ9d6nCJUt25N96OPZsisWambNKnW4xSh2t2dygc/mNPq6zNkyJBaj1OEjj170vnCC7lkzpyMHz++1uMUYd/Wrdn18MP58sc/nrPOOqvW4xTh5ZdfzlMPPtjv31ekctIYMW5cTps4sdZjFGHoiBFpnDIlwzweb9u/P3UNDRlyzjmpP++8Wk9ThM6GhlSamlI3enTqTz+91uMUobuzM5W6ujSMHJn6en89Jkl27kz3xo1pOuusnDZhQq2nKUb7aaflrLPOykT/jU2SNA/QM6neOAUAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUR6QCAFAckQoAQHFEKgAAxRGpAAAUp0+Run///ixevDjXXHNNzjzzzNTV1WXZsmW9Pn/37t1ZtGhRxo0bl5EjR+bqq6/OunXr+jw0AAAntz5F6vbt27NkyZL89re/zfTp05MklUqlV+d2d3fn+uuvz8qVK3PbbbflnnvuybZt23LllVdm48aNfZ8cAICTVn1fDp40aVK2bNmS8ePH56WXXsqsWbN6fe6qVauyevXqrFq1KjfccEOS5Kabbsq0adOyePHirFixom+TAwBw0urTM6kNDQ0ZP358kqRarfbphlatWpUJEyb0BGqSjB07NjfddFO++93vpqOjo0/fDwCAk9egvXFq3bp1mTFjxmHrs2bNSktLSzZs2DBYowAAULhBi9Tm5uZMnDjxsPWDa5s3bx6sUQAAKFyffib1RLS1tWXYsGGHrQ8fPjxJ0traetRzX3nllQwdOnTAZnu3efXVV3PaaafVeoxi7Ny5M6/8139lx//9v2k888xaj1NzrW++mT2vv57uN9/MgYaGWo9ThJbdu9Pd1ZXKvn3p3L271uMUoXvv3lQ7OtK9eXM6/bhVkqS7qyvV1tYcaGxM15AhtR6nCB1vvZXuXbuyf+vW7O3jj/mdrFq2b6/1CKeMQYvUxsbGtLe3H7be1tbW8/Wj+cQnPnHYpwgMHTr0lAzXrq6u7N+/P/UNDend5yqc/Lq7u9PV2Zk89VTSy0+bOBU0/MmfpO6CC2o9RhG6X3stB1paUvfyy6m88UatxylC9549qTY3p+uhh1Kt85HZydv/Lam2t+fAsGGp85gkSbrb2lJ99dW8tX59hpxxRq3HKcbpeft9OqeilStXZuXKlYes7dmzZ0Bua9AideLEiUd8Sb+5uTnJ258ccDSNjY09z7ie6g5GfWXo0NQf4ZnpU1FHa2vS2Zk0NKTi35OkoyPV9vZUpk3LkMsvr/U0Rai8972p27Ahw2bOTN0RfuzoVNTd3p6u8ePz3vHjM2LEiFqPU4SOlpa0/epXufTCCz0mf9CybVveWrkyX7311px11lm1HqcYDQ0NGTNmTK3HqImFCxdm4cKFh6ytXbs2M2fO7PfbGrRInT59ep5//vlUq9VDnhVds2ZNmpqaMm3atKOeW19ff0o+a3okBw4cSJLU1ddniEhNknQdfKmyvj51HpN0J0l7e4aMHJn600+v9ThF6Ny7N5WmptSdcUbqT9G/WP5YZ0tLqhMnpmnKlIwcObLW4xShfe/e1O3alfHvfa8fqfqDvSNHZsjYsTnrrLOO+L4SGEgD8nrGli1bsn79+nR2dvas3Xjjjdm6dWueeOKJnrUdO3bksccey7x580QoAAA9+vxM6v3335/du3f3vHT/ve99L6+//nqS5LbbbsuoUaNy9913Z/ny5dm0aVMmT56c5O1InT17dm699db8+te/zpgxY/LAAw+kWq3mq1/9aj/eJQAA3u36HKnf+MY38tprryV5+1eiPvnkk3niiSdSqVTyqU99KqNGjUqlUjnsjU51dXV5+umnc8cdd+S+++5La2trLrnkkixfvjxTp07tn3sDAMBJoc+R+rvf/e4dj1m6dGmWLl162Prpp5+ehx56KA899FBfbxYAgFOIz9gAAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA4IhUAgOKIVAAAiiNSAQAojkgFAKA49bUeoDfa29tTrVZrPUYROjo6kiRdBw4klUqNpylD1x8ek3R0pKulpbbDlKCzM6lW071tWzo3bar1NEXoam5Odf/+dL36arr37q31OEWoHjiQ7jfeyP6urlRHjKj1OEXobG1N586d2bdlS7JvX63HKULL9u21HoFT2LsiUltbW9Pa2lrrMYrS2dqaTo/JoVpb3/5DkqRrxYrkuedqPUYRulpaUn3llXT95jf+z91BXV2p7t2bfWeemY5hw2o9TTEakuy54IK0Dx9e61GKcXqShoaGWo/BKehdEalDhg9PvQ2SJOk8cCBdbW2pNDamzmOSJOk+cCDV1taksTEZOrTW49Red3fS2Zkp/+t/5bSLLqr1NEXoaGnJ/p/9LNPPOy8jGhtrPU4RWnbsyL5/+7f8Px//eMaNG1frcYoxdOjQnHnmmbUeoygNDQ0ZM2ZMrcfgFPSuiNT6hoYMbWqq9RjF6GprS11DQ4Z4ie5t1Wq6WltTaWhIncck3R0dSVtbGidPzmlTp9Z6nCK0792bul27MmXmzJx22mm1HqcIe5ubs3Pdulx00UWZOHFirccBOIw3TgEAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABSnT5Ha3t6eu+66K5MmTcqIESMye/bsPPvss+943ne+853U1dUd8c+2bduOe3gAAE5O9X05+JZbbsnjjz+e22+/PVOnTs3SpUtz3XXX5Sc/+Ukuu+yydzx/yZIlec973nPI2ujRo/s2MQAAJ71eR+rPf/7zPProo/nHf/zHfOlLX0qSfPKTn8xFF12UO++8Mz/96U/f8Xtce+21mTFjxvFPCwDAKaHXL/evWrUq9fX1WbRoUc/asGHD8pnPfCarV6/OG2+88Y7fo1qtZu/evenq6jq+aQEAOCX0OlLXrVuXadOmZeTIkYesz5o1K0nyi1/84h2/x1VXXZXRo0enqakpH/nIR7Jx48Y+jgsAwKmg1y/3Nzc3Z+LEiYetH1zbvHnzUc9tamrKrbfemquuuiqjRo3Kiy++mG9+85uZM2dO1q5dm3POOec4RgcA4GTV60htbW3NsGHDDlsfPnx4z9ePZv78+Zk/f37PP3/4wx/O3Llzc8UVV+RrX/tavvWtb/VlZgAATnK9jtTGxsa0t7cftt7W1tbz9b647LLLcumll/bqI6w6WlrS+Ue3Xd/YmKF9vE0AAI7fypUrs3LlykPW9uzZMyC31etInThx4hFf0m9ubk6STJo0qc83fs4552TDhg3veNzQESMytKmpz98fAID+s3DhwixcuPCQtbVr12bmzJn9flu9fuPUxRdfnA0bNmTv3r2HrK9ZsyZJMn369D7f+Kuvvppx48b1+TwAAE5uvY7UG2+8MV1dXXnwwQd71trb27N06dLMnj07Z599dpJky5YtWb9+fTo7O3uO2759+2Hf7+mnn87atWtzzTXXnMj8AACchHr9cv8ll1yS+fPn52//9m+zbdu2nHfeeVm2bFlef/31LF26tOe4u+++O8uXL8+mTZsyefLkJMmcOXMyY8aMzJw5M6NHj87atWvz7W9/O5MnT86Xv/zl/r9XAAC8q/Xp16IuX748X/nKV/Lwww9n165d+dCHPpSnnnoql19+ec8xlUollUrlkPM+9rGP5Qc/+EF++MMfpqWlJZMmTcrnPve5LF682Mv9AAAcpk+ROmzYsNxzzz255557jnrM0qVLD3lmNUmWLFmSJUuWHN+EAACccnr9M6kAADBYRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFEekAgBQHJEKAEBxRCoAAMURqQAAFKe+1gP0RldHRyptbbUeowhdHR1JkuqBA+mq8Syl6D74mLS3p6tarfE0BejqSrq70/r666kfNarW0xShs7U1nTt3Zt+WLcm+fbUepwgt27fXegSAY3pXRGpna2s6W1trPUZRultbE4/Jodra3v5DkmTPPfek+6yzaj1GMRqS7LnggrQPH17rUYpxepKGhoZajwFwRO+KSK1vbMyQYcNqPUYRug4cSGdLy9uPydChtR6nCF0dHelsbU19Y2Pq6t8V/0oPqO7OzlQ7OrLk1ltzySWX1HqcYgwdOjRnnnlmrccoSkNDQ8aMGVPrMQCO6F3xN/qQoUMztLGx1mMUo7OlJfXDh6feM0Jv+8Mz7R6Tt3W1t6ezqyvnn39+pk+fXutxAOC4eOMUAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABSnT5Ha3t6eu+66K5MmTcqIESMye/bsPPvss706d/fu3Vm0aFHGjRuXkSNH5uqrr866deuOa2gAAE5ufYrUW265Jffee28++clP5r777suQIUNy3XXX5ac//ekxz+vu7s7111+flStX5rbbbss999yTbdu25corr8zGjRtP6A5QOx2trbUegaPo7uqq9Qgcw8qVK2s9Akfh2pTLtTn19DpSf/7zn+fRRx/NP/zDP+TrX/96PvvZz+bHP/5xzj333Nx5553HPHfVqlVZvXp1li1blq985Sv567/+6zz33HMZMmRIFi9efMJ3gtroFKnF6u7urvUIHIO/bMvl2pTLtTn19DpSV61alfr6+ixatKhnbdiwYfnMZz6T1atX54033jjmuRMmTMgNN9zQszZ27NjcdNNN+e53v5uOjo7jHB8AgJNRryN13bp1mTZtWkaOHHnI+qxZs5Ikv/jFL4557owZMw5bnzVrVlpaWrJhw4bejgEAwCmg15Ha3NyciRMnHrZ+cG3z5s0Dci4AAKee+t4e2NrammHDhh22Pnz48J6vH01bW9txnXtwvfPAgd6OedLr+sOPRnS2taVa4zfHVLu60rF/f01nSMp6TErQ9YfHYMOGDTn99NNrPA1HsmfPnqxdu7bWY3AErk25XJty/eY3v0ly7BY8Hr2O1MbGxrS3tx+23tbW1vP1/j5306ZNSZKutrZ0/eFY3tbZ2lrEG5fa33qr1iP0KOUxKcVf/dVf1XoEjmHmzJm1HoGjcG3K5dqUbdOmTbnsssv67fv1OlInTpx4xJflm5ubkySTJk3q93Pnzp2bRx55JFOmTDlmBAMAUButra3ZtGlT5s6d26/ft9eRevHFF+e5557L3r17c9ppp/Wsr1mzJkkyffr0o547ffr0PP/886lWq6lUKoec29TUlGnTph3xvLFjx+YTn/hEb0cEAKAG+vMZ1IN6/capG2+8MV1dXXnwwQd71trb27N06dLMnj07Z599dpJky5YtWb9+fTo7Ow85d+vWrXniiSd61nbs2JHHHnss8+bNy9ChQ/vjvgAAcJKoVKvVam8PXrBgQZ588sncfvvtOe+887Js2bK8+OKL+dGPfpTLL788ydu/lWr58uXZtGlTJk+enOTtDxa//PLL88tf/jJ33HFHxowZkwceeCC///3v88ILL2Tq1KkDc+8AAHhX6vXL/UmyfPnyfOUrX8nDDz+cXbt25UMf+lCeeuqpnkBNkkrNpxrpAAAIkElEQVSlcshL+klSV1eXp59+OnfccUfuu+++tLa25pJLLsny5csFKgAAh+nTM6kAADAYev0zqQAAMFhqEqnt7e256667MmnSpIwYMSKzZ8/Os88+26tzd+/enUWLFmXcuHEZOXJkrr766qxbt26AJz51HO+1+c53vpO6uroj/tm2bdsgTH7y279/fxYvXpxrrrkmZ555Zurq6rJs2bJen2/vDJwTuTb2zsB64YUX8oUvfCEXXnhhRo4cmXPPPTcLFizIK6+80qvz7ZuBdSLXx94ZWL/61a8yf/78nHfeeWlqasqYMWMyZ86crFixolfn98fe6dPPpPaXW265JY8//nhuv/32TJ06NUuXLs11112Xn/zkJ8f8CIPu7u5cf/31efnll3PnnXf2vAHryiuvzEsvvZTzzz9/EO/Fyel4r81BS5YsyXve855D1kaPHj1Q455Stm/fniVLluTcc8/N9OnT89xzzx32899HY+8MrBO5NgfZOwPj61//elavXp358+fngx/8YJqbm3P//fdnxowZ+dnPfpYLL7zwqOfaNwPvRK7PQfbOwHj99dezb9++3HLLLZk0aVJaWlqyatWqfPKTn8ymTZvyd3/3d0c9t9/2TnWQrVmzplqpVKrf+MY3etba2tqq559/fnXOnDnHPPfRRx+tViqV6uOPP96ztn379uoZZ5xR/fjHPz5gM58qTuTaLF26tFqpVKovvfTSQI95ympvb69u3bq1Wq1Wqy+++GK1UqlUly1b1qtz7Z2BdSLXxt4ZWP/5n/9Z7ejoOGTtlVdeqQ4fPrx68803H/Nc+2bgncj1sXcGX1dXV3X69OnVyZMnH/O4/to7g/5y/6pVq1JfX59Fixb1rA0bNiyf+cxnsnr16rzxxhvHPHfChAm54YYbetbGjh2bm266Kd/97nfT8Yff4c7xOZFrc1C1Ws3evXt7fn88/aehoSHjx49P8vbj3Bf2zsA6kWtzkL0zMP70T/809fWHvmh4/vnn50/+5E+yfv36Y55r3wy8E7k+B9k7g6euri7nnHPOO36+fX/tnUGP1HXr1mXatGkZOXLkIeuzZs1KkvziF7845rkzZsw4bH3WrFlpaWnJhg0b+nfYU8yJXJuDrrrqqowePTpNTU35yEc+ko0bNw7IrPSNvVM+e2fwVKvVbN26NWPHjj3mcfZNbfT2+hxk7wyslpaW7NixI//93/+de++9N88880zuvPPOY57TX3tn0CO1ubk5EydOPGz94NrmzZsH5Fze2Yk8vk1NTbn11lvzwAMP5N/+7d9y55135kc/+lHmzJmT3//+9wM2M71j75TL3hl8K1asyObNm7NgwYJjHmff1EZvr4+9Mzi+9KUvZfz48Zk6dWruuuuu3HfffYe84nok/bV3Bv2NU62trRk2bNhh68OHD+/5+tG0tbUd97m8sxO5NvPnz8/8+fN7/vnDH/5w5s6dmyuuuCJf+9rX8q1vfav/B6bX7J1y2TuDa/369fn85z+fOXPm5NOf/vQxj7VvBl9fro+9Mzhuv/323HTTTdm8eXNWrFiRL3zhC2lsbDzm9emvvTPokdrY2Jj29vbD1tva2nq+PhDn8s76+/G97LLLcumll/b648UYOPbOu4u9MzC2bNmS66+/PmeccUZWrVr1jp/AYN8Mrr5enyOxd/rf+973vrzvfe9Lktx8882ZO3duvvjFL+amm2466h7or70z6C/3T5w48YhP8zY3NydJJk2aNCDn8s4G4vE955xzsmvXrhOejRNj77z72Dv9a8+ePbn22mvz1ltv5d///d8zYcKEdzzHvhk8x3N9jsbeGVh/8Rd/kT179uS3v/3tUY/pr70z6JF68cUXZ8OGDdm7d+8h62vWrEmSTJ8+/ajnTp8+PWvXrj3s3bNr1qxJU1NTpk2b1v8Dn0JO5Noczauvvppx48b1y3wcP3vn3cfe6T9tbW2ZN29eNm7cmKeeeioXXHBBr86zbwbH8V6fo7F3BtbBl+rr6o6ekP21dwY9Um+88cZ0dXXlwQcf7Flrb2/P0qVLM3v27Jx99tlJ3n7af/369ens7Dzk3K1bt+aJJ57oWduxY0cee+yxzJs37x0/EoFjO5Frs3379sO+39NPP521a9fmmmuuGfjh6WHvlMveGXxdXV1ZsGBB1qxZk8ceeyyXXnrpEY+zb2rjRK6PvTOwjvT4dnR0ZPny5RkzZkzPL1pobm4esL1TqR7vh/qdgAULFuTJJ5/M7bffnvPOOy/Lli3Liy++mB/96Ee5/PLLk7z9m4+WL1+eTZs2ZfLkyUne/g0Gl19+eX75y1/mjjvu6PkNBr///e/zwgsvZOrUqYN9V046x3ttpk6dmhkzZmTmzJkZPXp01q5dm29/+9s5++yz88ILL/h/tf3k/vvvz+7du7N58+b88z//c2644YaeZ7hvu+22jBo1yt6pkeO9NvbOwPriF7+Y++67L/PmzTvkTTYH3XzzzUn8nVMrJ3J97J2B9dGPfjR79+7NFVdckUmTJmXLli1ZsWJFNmzYkKVLl+ZTn/pUkgHeO335TQP9pa2trXrHHXdUJ06cWB0+fHj10ksvrf7whz885JhbbrmlWldXV33ttdcOWd+1a1f1s5/9bHXs2LHVpqam6lVXXeW3TfSj4702f//3f1+9+OKLq6effnq1oaGhOmXKlOrnP//56rZt2wb7LpzUpkyZUq1UKtVKpVKtq6ur1tXV9fzvg9fD3qmN47029s7AuvLKK3uuxR//qaur6znOvqmNE7k+9s7A+pd/+Zfqn//5n1cnTJhQHTp0aHXMmDHV6667rvrss88ectxA7p2aPJMKAADHMug/kwoAAO9EpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADFEakAABRHpAIAUByRCgBAcUQqAADF+f8Aan5uMyZ/wFsAAAAASUVORK5CYII=", - "text/plain": [ - "PyPlot.Figure(PyObject )" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(0.0,3.0,0.0,2.0)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "draw(output, \"cyan\")\n", - "draw(input, \"black\", 0.9)\n", - "\n", - "axis(\"image\")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - " \n", - " \n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "using Interact" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "draw_image (generic function with 2 methods)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function draw_image(f, X, color=\"cyan\")\n", - " fig = figure()\n", - " @manipulate for n in 1:100\n", - " withfig(fig) do\n", - " input = split(X, n)\n", - " output = map(f, input)\n", - "\n", - " draw(output, color, 0.1)\n", - " draw(input, \"grey\", 0.1)\n", - "\n", - " axis(\"image\")\n", - " end\n", - " end\n", - " \n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [ - "Interact.Slider{Int64}(Signal{Int64}(50, nactions=0),\"n\",50,1:100,true)" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqkAAAHRCAYAAABJvyD2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3X2MXeV94PHvjOd9xuNXCDbUQLCdpCTE2GughkbQ7YoQRFZKMYRt0oREoqtttltS4bJZtahyI+1GoZEilEhEioMBoSwO7CYp2nQThVW2SxzATtO8GEJch8DYYON5n3vv3BnP/mHP1D6emXPv3HPufc6534/EH3OZO89zfH3DLzPf50zLzMzMDJIkSVJAWhu9AUmSJCnKIVWSJEnBcUiVJElScBxSJUmSFByHVEmSJAXHIVWSJEnBcUiVJElScBxSJUmSFByHVEmSJAXHIVWSJEnBqXhIff755/nUpz7FlVdeSV9fH5deeil33nknv/zlLyt6/tDQEPfccw8XXHABfX19/N7v/R4HDx5c8sYlSZKUXy0zMzMzlXzi7bffznPPPcfOnTu56qqrOHr0KA899BBjY2P88Ic/5Morr1zwuadOneJ3f/d3+clPfsKuXbtYs2YNX/rSl/jNb37Diy++yMaNGxO7IEmSJGVfxUPqc889x/bt22lra5t77JVXXuE973kPt99+O48++uiCz/3v//2/8+EPf5h9+/bxoQ99CIATJ06wefNmbrnlFh5//PEaL0OSJEl5UvGQupBt27bR2trK888/v+Dn3HHHHfzf//t/GRgYOOfxf//v/z2PPfYYg4ODtLe317INSZIk5UhNB6dmZmZ44403WLt27aKfd/DgQbZu3Xre49u3b2diYoKXX365lm1IkiQpZ2oaUh9//HEGBga48847F/28o0ePsm7duvMen30s+h1WSZIkNbe2+E+Z36FDh/iTP/kTduzYwcc+9rFFP7dYLNLZ2Xne411dXQAUCoV5n3fixAm+853vcNlll9Hd3b3UrUqSJCklhUKBI0eOcPPNN8f+dL0aSxpSjx07xq233sqqVavYt28fLS0ti35+d3c3pVLpvMeLxeLcv5/Pd77zHT7ykY8sZYuSJEmqo8cee4w//MM/TOzrVT2kDg8Pc8sttzAyMsIPfvADLrrootjnrFu3bt4f6R89ehSA9evXz/u8yy67DDh90e9617uq3apSdu+99/KFL3yh0dvQPHxtwubrEy5fm3D52tTH1NQUrw8O0rp8+Tl3dFrMSz/7GX/+iU/MzW1JqWpILRaL3Hbbbbzyyit897vf5Z3vfGdFz9uyZQs/+MEPmJmZOee7rvv376e3t5fNmzfP+7zZ77C+613vmvfglRprxYoVvi6B8rUJm69PuHxtwuVrUx/lcpmVx4/TecEFVd95Kek0s+KDU9PT09x5553s37+fJ598kmuvvXbezzt27BiHDh1iampq7rHbb7+dN954g6eeemrusRMnTvDkk09y2223efspSZKkOpmenqZcLs/9UywWmZiYmPunUCic80+xWDzn88vlMtPT06nvs+LvpP75n/853/rWt7jttts4ceIEjz322Dn/frYdvf/++9m7dy9Hjhxhw4YNwOkh9brrruPuu+/m5z//+dxvnJqZmeGv//qvE7wcSZIkLWR6eprfvPEGk2d9fPT4ccpnftI9VS5zbHiY9uFh2s58E7ENeNvq1bQuWzb3dTqA9RdcwLKzHktaxUPqP/7jP9LS0sK3vvUtvvWtb53z71paWuaG1JaWlvMOUrW2tvLMM89w33338cUvfpFCocA111zD3r172bRpUwKXIUmSpDinTp1iEli2ahVtbW2Uy2VaTp2i+8zHU+UyoydO0H7BBbS1tzM9NcX0yAhtq1fTfqZRnZqaYnJ4mFOnToUxpH7/+9+v6PP27NnDnj17znt85cqVfOUrX+ErX/lK5btT0O66665Gb0EL8LUJm69PuHxtwuVrk6y2tra53LKtvZ2O7m7a29spl8t0dnfT0d1NW3s7U+Uyk4UC7W1tc99ZBUj/h/013CdV8n8wwuVrEzZfn3D52oTL16Zy09PTnDp1at6Py+UyY2NjlDo754bS8bExTvX1MTU1xVS5TKlYZKZQYKpcPv1YschUuczM7Ncrl5k606YC55xDSpJDqiRJUk7ENaelYpFf/PrXsHr13I/zh0ZHuXBsjPbOTk5NTzNy8iT9Q0O0LlvG1NQUMyMjrJmaovPML2GaKpeZPHmS0qlTnGpv59ToaCrX4pAqSZKUE3HNafvEBO1A5xVX0NHVxWSxyPivf03nZZfR1d3N1NQUbatXc2F/P8va2pgsFikeOcIla9fO3WKqXC5TAi4/c5uqoVWrUrkWh1RJkqScWag5nQE6u7ro7uujq6eHZW1tdHR309nVRWd3N8vKZVpLJbrONKktLS1MtbfTfuafWafOeqzSm/5Xq+L7pEqSJEn14ndSJUmSMqTag1Ejw8N0dXbS1t5OcWKCibExGB1lemqKUqFAcWKC4tjY6dtNTU1RHhuj2NFB25lDVLOHpNrOugVVPTikSpIkZUS1B6PKpRKvvv46K3/rt2jr7KRcKnF0YIC+yUnaOzool8uMDgxQHhqio72d6elpZsbG6Lv4Yjo7Ok6f6h8cpLxyJa1nDk7B6Zv5t7am+wN5h1RJkqSMqPZgVGF0lBag693vpruvj8likZWrVrH20kvp6O6mXCqxavVq3rV+PZ1dXZSKRYq//jX/6u1vp7u7+/SvQX3rLa646KJzmtTW1tZUb+QPDqmSJEmZU+nBqJmZGTq6uujq66PnzIn9zp4eevr66OzpodTWBr299C5fPndYiq4uenp65obU0vj4eQen6nKNdV1NkiRJC1qsN4XKmtOx4WGmT56kVChQGBlhYnSUwtDQ6d60WGRidJSxoSEmi0UmJycpj41RKhZhZua8BrVe/el8HFIlSZICENebQnxzWpqY4JWXX6brxAna29spFYu8+eqrDE9O0tndzdTkJONvvklxYID2Zcs4deoUrSMjjJVKTHV3z9ug1qM/nY9DqiRJUgDielMgtjltGx2lr6WF1VdeSVdfH8XxcZatXs3Gd72Lzt5epiYnKbz2Gu9ct47OMzfzL/7mN2zfuHHBBrUe/el8HFIlSZICslBvCsQ2p8zM0N7dTe+KFXT397Ns2TJGly+nt7+fnv5+SoUCrf39rFi1iq7uboqFAsveeiuIBjXKIVWSJKlOarnHKTBvczo2NMTY8eNMFgoUR0cZHx5m9K23KJdKFMfHTz925r6oITeoUQ6pkiRJdVDrPU6B85rTwsQEv/nFL3h9cJCOzk7KhQJvHT3K8MgIHZ2dnJqaovjGG3QNDdHR0RF0gxrlkCpJklQHtd7jFDivOR0fGqKwbBmXbdtGV38/pYkJ+l96iSs2b6a7r+/0d1MHBvjtiy8OvkGNckiVJEmqo6Xe4xQ4rznl1Ck6envpXbWKvtWrKYyMMN7fz4rVq+ca1PaJiUw0qFEOqZIkSQmppTmN600BiqOjjJ48SdexYxTHxhgfGqJ45vNOTU9nukGNckiVJElKQK3NaVxvCjA5Ps7Ar37F0aNHae/sZLpUYmRggOmpKTq7ujLdoEY5pEqSJCWg1uY0rjcFmBgepqW/n8u2bqW7v5/S2BjHf/lLNr7znZlvUKMcUiVJkhK05OY0pjcFWNbaSndfH/1r1pxuULu7KRw/nosGNcohVZIkqQLR3jT6WK3N6Xy9aWFoiOHjxykXiwC5blCjHFIlSZJiRHvT2ceSbE6jvelUocCJw4cZHR6m/UyTmucGNcohVZIkKUa0NwUSb06jvenE4CBHfvxjLt+27fSP/yHXDWqUQ6okSVKFzu5NIdnmNNqbtre10bN8+dzHQK4b1CiHVEmSJKq7x+nsY0k2p/N9fHZ/CuS6QY1ySJUkSU2v2nucAok3p9GPo/0pkOsGNcohVZIkNb1q73EKJN6cRj+O9qdArhvUKIdUSZKkMyq9xymQeHMa/TjanwK5blCjHFIlSVJTqKY5jetNgUSa08Ua1Gh/CuS6QY1ySJUkSblXbXMa15sCNTencQ1qtD8Fct2gRjmkSpKk3Ku2OY3rTYGam9O4BjXanwK5blCjHFIlSVLTqLQ5je1NoebmNK5BjfanQK4b1CiHVEmSlAtJNqdxvSmwpOa0mgY12p8CuW5QoxxSJUlS5iXdnMb1pkDVzWm1DWq0PwVy3aBGOaRKkqTMS7o5jetNgaqb02ob1Gh/CuS6QY1ySJUkSbmRWHMa05sCVTen1Tao0f4UyHWDGpW/7w1LkiQp8/xOqiRJCl70UFT0saQPRsUdeoKlHZyq5qBU9JAUkOuDUlEOqZIkKWjRQ1Gzj6V5MCru0BNUf3Cq2oNS8x2SgvwelIpySJUkSUGLHooCUj8YFXfoCao/OFXtQan5DklBfg9KRTmkSpKkTDj7UBSkezAq7tATVH9wqtqDUs10SGo+DqmSJKnhqrkR/+xjaTanSTWptTSozdSfzschVZIkNVS1N+IHUm9Ok2hSk2hQm6U/nY9DqiRJaqhqb8QPpN6cJtGkJtGgNkt/Oh+HVEmSFIRKb8QPpN6cJtGk2qDWxiFVkiSlrprmNK43BVJvTpfapNqgJschVZIkpara5jSuNwVSb06X0qTaoCbLIVWSJKWq2uY0rjcFUm9Ol9Kk2qAmyyFVkiTVRaXNaWxvCqk3p0tpUm1Qk+WQKkmSapZkcxrXm0Jl9yitR5Nqg5oeh1RJklSTpJvTuN4U4u9RWo8m1QY1XQ6pkiSpJkk3p3G9KcTfo7QeTaoNarocUiVJUiISa05jelOIv0dpPZpUG9R0OaRKkqRFLdabQvLN6VLvUZr2x2f3p4ANasocUiVJ0oLielNIvjldyj1K0/442p8CNqgpc0iVJEkLiutNgcSb06XcozTtj6P9KWCDmjKHVEmSFGuh3hRIvDldyj1K0/442p8CNqgpc0iVJKnJ1XKPUyDx5jSUJnWxe6ACNqgpc0iVJKmJ1XqPUyDx5jSEJjXuHqiADWrKHFIlSWpitd7jFEi8OQ2hSY27Bypgg5oyh1RJkrT0e5xC4s1pCE1q3D1QARvUlDmkSpKUc7U0p3G9KZB4c9qoJnWxBjXanwI2qClzSJUkKcdqbU7jelMg8ea0EU1qXIMa7U8BG9SUOaRKkpRjtTancb0pkHhz2ogmNa5BjfangA1qyhxSJUlqAktuTmN6UyDx5rQRTWpcgxrtTwEb1JT5/WhJkiQFx++kSpKUcWkejIo7FAX1ubF+GmtWc1AqekgK8KBUyhxSJUnKsLQPRsUdioL0b6yfxprVHpSa75AUeFAqTQ6pkiRlWNoHo+IORUH6N9ZPY81qD0rNd0gKPCiVJodUSZJyIK2DUXGHoiD9G+unsWa1B6U8JFV/DqmSJAVssd4U0m9OG3Vj/TTWrKVBtT+tP4dUSZICFdebQvrNaSNurJ/Gmkk0qPan9eWQKklSoOJ6UyD15rQRN9ZPY80kGlT70/pySJUkKXAL9aZA6s1pI26sn8aaNqjZ45AqSVID1XKPUyD15jTLTaoNarY5pEqS1CC13uMUSL05zWqTaoOafQ6pkiQ1SK33OAVSb06z2qTaoGafQ6okSQ225HucQurNaVabVBvU7HNIlSQpRbU0p3G9KZB6c5qlJtUGNV8cUiVJSkmtzWlcbwqk3pxmpUm1Qc0fh1RJklJSa3Ma15sCqTenWWlSbVDzxyFVkqSULbk5jelNgdSb06w0qTao+eOQKknSEkV70+hjtTancb0p1L8HDWEPs2vaoOabQ6okSUsQ7U1nH0uyOY3rTaH+PWgIewBsUJuAQ6okSUsQ7U2BxJvTuN4U6t+DhrAHwAa1CTikSpJUg7N7U0i2OY3rTaH+PWgIewBsUJuAQ6okSQuo5h6ns48l2ZyG2IM2ag9n96eADWoTcEiVJGke1d7jFEi8OQ2xB23EHqL9KWCD2gSqGlLHx8f53Oc+x/79+/nRj37E0NAQe/bs4WMf+1jsc7/2ta/xiU98Yt5/d+zYMS688MJqtiJJUqqqvccpkHhzGmIP2og9RPtTwAa1CVQ1pB4/fpzdu3dz6aWXsmXLFp599llazvw/ykrt3r2byy+//JzHVqxYUdXXkCSpXiq9xymQeHMaYg/aiD1E+1PABrUJVDWkrl+/fu67ni+++CLbt2+vesFbbrmFrVu3Vv08SZKSVk1zGtebAok3p6H0oI3Yw2L3QAVsUJtAVUNqR0fH3I/lZ2ZmlrTgzMwMo6Oj9PT0+C13SVLDVNucxvWmQOLNaQg9aCP2EHcPVMAGtQnU/eDUTTfdxNjYGB0dHdx88808+OCDbNy4sd7bkCQ1uWqb07jeFEi8OQ2hB23EHuLugQrYoDaBug2pvb293H333dx000309/fzwgsv8Ld/+7fs2LGDAwcOcMkll9RrK5Ikzam0OY3tTSHx5jSEHrQRe4i7Bypgg9oE6jak7ty5k507d859/MEPfpCbb76Z973vfXz2s5/ly1/+cr22IklqEkk2p3G9KTTud9jnoUldrEGN9qeADWoTaOh9Uq+//nquvfZavvvd7y76effee+95dwC46667uOuuu9LcniQpw5JuTuN6U2jM77DPQ5Ma16BG+1PABrVBnnjiCZ544olzHhseHk5lrYbfzP+SSy7h5ZdfXvRzvvCFL3hHAElSVZJuTuN6U2jM77DPQ5Ma16BG+1PABrVB5vsm4YEDB9i2bVviazV8SD18+DAXXHBBo7chScqpxJrTmN4UGvM77PPQpMY1qNH+FLBBbQKpfE/82LFjHDp06Jw+5Pjx4+d93jPPPMOBAwd4//vfn8Y2JEmSlFFVfyf1oYceYmhoiIGBAQC++c1v8uqrrwLwp3/6p/T393P//fezd+9ejhw5woYNGwDYsWMHW7duZdu2baxYsYIDBw7w1a9+lQ0bNvCZz3wmwUuSJDWD6KGo6GNJH4wK8RBTI9ZMag/VHJSKHpICPCjVBKoeUh988EF+/etfA9DS0sLTTz/NU089RUtLC3/0R39Ef38/LS0t5/261A9/+MP83d/9HX//93/PxMQE69ev54//+I954IEH/HG/JKkq0UNRs4+leTAqxENMjVgziT1Ue1BqvkNS4EGpvKt6SP3nf/7n2M/Zs2cPe/bsOeex3bt3s3v37mqXkyTpPNFDUUDqB6NCPMTUiDWT2EO1B6XmOyQFHpTKu4YfnJIkaanOPhQF6R6MCvEQUyPWTGIP1R6U8pBUc3JIlSQFqZob8c8+lmZzGmIf2og1l7qHWhpU+9Pm5JAqSQpOtTfiB1JvTkPsQxux5lL2kESDan/afBxSJUnBqfZG/EDqzWmIfWgj1lzKHpJoUO1Pm49DqiQpWJXeiB9IvTkNsQ9txJpL2YMNqpbCIVWS1BDVNKdxvSmQenMaYh/aiDUr3YMNqmrlkCpJqrtqm9O43hRIvTkNsQ9txJqV7MEGVUlwSJUk1V21zWlcbwqk3pyG2Ic2Ys1K9mCDqiQ4pEqSGqbS5jS2N4XUm9MQ+9BGrFnJHmxQlQSHVElSKpJsTuN6Uwi3zczbmgvtwQZVSXNIlSQlLunmNK43hTDbzDyuOd8ebFCVBodUSVLikm5O43pTCLPNzOOa8+3BBlVpcEiVJKUmseY0pjeFMNvMPK453x5sUJUGh1RJUtUW600h+eY0S21m3teM9qeADapS4ZAqSapKXG8KyTenWWkzm2HNaH8K2KAqFQ6pkqSqxPWmQOLNaVbazGZYM9qfAjaoSoVDqiRpSRbqTYHEm9OstJnNsGa0PwVsUJUKh1RJ0nlquccpkHhzGmqb2eg91GvNxe6BCtigKhUOqZKkc9R6j1Mg8eY0xDYzhD3UY824e6ACNqhKhUOqJOkctd7jFEi8OQ2xzQxhD/VYM+4eqIANqlLhkCpJmteS73EKiTenIbaZIeyhHmvG3QMVsEFVKhxSJakJ1dKcxvWmQOLNaShtZmh7SGvNxRrUaH8K2KAqFQ6pktRkam1O43pTIPHmNIQ2M8Q9pLFmXIMa7U8BG1SlwiFVkppMrc1pXG8KJN6chtBmhriHNNaMa1Cj/Slgg6pUOKRKUpNacnMa05sCiTenIbSZIe4hjTXjGtRofwrYoCoVfh9ekiRJwfE7qZKUQ2kejIo7FAX5OUAU+h6SWrOag1LRQ1KAB6WUCodUScqZtA9GxR2KgnwcIMrCHpJYs9qDUvMdkgIPSil5DqmSlDNpH4yKOxQF+ThAlIU9JLFmtQel5jskBR6UUvIcUiUpp9I6GBV3KArycYAoC3tIYs1qD0p5SEr14pAqSRmzWG8K6TeneW4zs7aHpa5ZS4Nqf6p6cUiVpAyJ600h/eY0r21mFvewlDWTaFDtT1UPDqmSlCFxvSmQenOa1zYzi3tYyppJNKj2p6oHh1RJyqCFelMg9eY0r21mFvewlDVtUJUVDqmSFJha7nEKpN6c5qnNzPoeKl3TBlVZ5JAqSQGp9R6nQOrNaV7azDzsoZI1bVCVVQ6pkhSQWu9xCqTenOalzczDHipZ0wZVWeWQKkkBWvI9TiH15jQvbWYe9lDJmjaoyiqHVEmqs1qa07jeFEi9Oc1ym5m3PSy0pg2q8sAhVZLqqNbmNK43BVJvTrPaZuZxD/OtaYOqvHBIlaQ6qrU5jetNgdSb06y2mXncw3xr2qAqLxxSJakBltycxvSmQOrNaVbbzDzuYb41bVCVFw6pkpSgaG8afazW5jSuNwXbzGa8bhtU5ZFDqiQlJNqbzj6WZHMa15uCbWazXbcNqvLKIVWSEhLtTYHEm9O43hRsM5vtum1QlVcOqZKUsLN7U0i2OY3rTcE2s9mu2wZVeeWQKklVqOYep7OPJdmchthFhrCHZrrus/tTwAZVueWQKkkVqvYep0DizWmIXWQIe2iW6472p4ANqnLLIVWSKlTtPU6BxJvTELvIEPbQLNcd7U8BG1TllkOqJFWp0nucAok3pyF2kSHsoVmuO9qfAjaoyi2HVEk6SzXNaVxvCiTenIbSRYa2hzxf92L3QAVsUJVbDqmSdEa1zWlcbwok3pyG0EWGuIe8XnfcPVABG1TllkOqJJ1RbXMa15sCiTenIXSRIe4hr9cddw9UwAZVueWQKkkRlTansb0pJN6chtBFhriHvF533D1QARtU5ZZDqqSmkmRzGtebgm1mntdMaw+LNajR/hSwQVVuOaRKahpJN6dxvSnYZuZ5zTT2ENegRvtTwAZVueWQKqlpJN2cxvWmYJuZ5zXT2ENcgxrtTwEbVOWWQ6qkppNYcxrTm4JtZp7XTGMPcQ1qtD8FbFCVW/4sQJIkScHxO6mSciN6KCr6WNIHo0I8zNOINUPYQ5avu5qDUtFDUoAHpZRbDqmSciF6KGr2sTQPRoV4mKcRa4awh6xed7UHpeY7JAUelFI+OaRKyoXooSgg9YNRIR7macSaIewhq9dd7UGp+Q5JgQellE8OqZJy5exDUZDuwagQD/M0Ys0Q9pDV6672oJSHpNRMHFIlZUY1N+KffSzN5jTETrIRa4awhyxddy0Nqv2pmolDqqRMqPZG/EDqzWmInWQj1gxhD1m57iQaVPtTNQuHVEmZUO2N+IHUm9MQO8lGrBnCHrJy3Uk0qPanahYOqZIypdIb8QOpN6chdpKNWDOEPWTlum1Qpco5pEoKRjXNaVxvCqTenIbYSTZizRD2EPJ126BKS+OQKikI1Tancb0pkHpzGmIn2Yg1Q9hDqNdtgyotnUOqpCBU25zG9aZA6s1piJ1kI9YMYQ+hXrcNqrR0DqmSglJpcxrbm0LqzWmInWQj1gxhD6Fetw2qtHQOqZLqJsnmNK43hXAbxbytGcIeQrpuG1QpGQ6pkuoi6eY0rjeFMBvFPK4Zwh5CuW4bVCk5DqmS6iLp5jSuN4UwG8U8rhnCHkK5bhtUKTkOqZLqKrHmNKY3hTAbxTyuGcIeQrluG1QpOQ6pkhKxWG8KyTenWWoU875mCHto1HWf3Z8CNqhSghxSJdUsrjeF5JvTrDSKzbBmCHtoxJrR/hSwQZUS5JAqqWZxvSmQeHOalUaxGdYMYQ+NWDPanwI2qFKCHFIlJWah3hRIvDnNSqPYDGuGsIdGrBntTwEbVClBDqmSKlLLPU6BxJvTUBvFRu/B665fgxrtTwEbVClBDqmSYtV6j1Mg8eY0xEYxhD143fVrUKP9KWCDKiXIIVVSrFrvcQok3pyG2CiGsAevu34NarQ/BWxQpQQ5pEqq2JLvcQqJN6chNooh7MHrrl+DGu1PARtUKUEOqZKA2prTuN4USLw5DaVRDG0PXnf9GtRofwrYoEoJckiVVHNzGtebAok3pyE0iiHuweuuX4Ma7U8BG1QpQQ6pkmpuTuN6UyDx5jSERjHEPXjd9WtQo/0pYIMqJcghVdKcJTenMb0pkHhzGkKjGOIevO76NajR/hSwQZUS5M8fJEmSFBy/kyo1iTQPRsUdioL8HKQJfQ9ed/0OSkUPSQEelJIS5JAqNYG0D0bFHYqCfBykycIevO76HZSa75AUeFBKSkpVQ+r4+Dif+9zn2L9/Pz/60Y8YGhpiz549fOxjH6vo+UNDQ+zatYunn36aQqHANddcw4MPPsjVV1+9pM1LqkzaB6PiDkVBPg7SZGEPXnf9DkrNd0gKPCglJaWqIfX48ePs3r2bSy+9lC1btvDss8/ScuY7MXFOnTrFrbfeyk9+8hN27drFmjVr+NKXvsSNN97Iiy++yMaNG5d0AZIql9bBqLhDUZCPgzRZ2IPXXb+DUh6SktJV1ZC6fv16jh07xoUXXsiLL77I9u3bK37uvn37eO6559i3bx8f+tCHALjjjjvYvHkzDzzwAI8//nh1O5c0Z7HeFNJvTvPcKGZtD153/RpU+1MpXVUNqR0dHVx44YUAzJz57RqV2rdvHxdddNHcgAqwdu1a7rjjDh577DHK5bL/T1RagrjeFNJvTvPaKGZxD153fRtU+1MpPXU7OHXw4EG2bt163uPbt2/n4Ycf5uWXX+bKK6+s13ak3IjrTYHUm9O8NopZ3IPXXd8G1f5USk/dhtSjR49y4403nvf4unWHjs9YAAAgAElEQVTrABgYGHBIlWqwUG8KpN6c5rVRzOIevG4bVCkv6jakFotFOs/8SOZsXWd+ZFIoFBZ87tTUFOVyGTidGZx9WKvWj9P4mlnYg9ed7euempqaS27K5TIjIyN0dHTM9abDw8N0n+lNgdSb0zw1ilnfg9e9cHM6PjTE5Pg4hbExWlpaKExMUC4UKE5MADBZKjFZKNigSoGo25Da3d1NqVQ67/Himf9xmf2VcvP5j//xP7J8+XJmZmaYnJyko6ODD37wg9x666289dZbrF27ltbWVqanp6v6GKj6OUl/3Ig9eN3Zvu5yuczPX36ZvjVrWNbaysTEBD/66U/p37CBjo4OJicn+fXAAH1vfzttZ/5PYNrNaV4axTzsweteuDmdKhYZfPVVutvb6erpYapcpjAwwFi5TLmzk+mpKWbGxpgolZjq6LBBlebxxBNP8MQTT5zz2PDwcCpr1W1IXbduHQMDA+c9fvToUeD0nQMW8tnPfpatW7dSKBQ4fPgwb3/72+nu7qZQKDA5OUlXV9eSPgZq/hpZ3IPXne3rHhkZoTg9zdsuvJDevj6WnTwJhw+zYtMm+lasYGJsjNdPnaL73e+ma/lygNSb07w0innYg9e9cHNaHBvj2KFDvOvKK+ca1MJvfsOWDRvoOnMwqjw4yGUXXjjXd9ugSue66667uOuuu8557MCBA2zbti3xteo2pG7ZsoUf/OAH5/3Ycv/+/fT29rJ58+YFn7ts2bK5H2PCv7R3tX4MJP41s7AHrzvb1z17GKqjq4vunh4KhQJty5bR2dND75n/WLd1dv5LbwqpN6d5aRTzsAeve+HmdKKjg7Hly1m+YgW9ZxrUZYODLO/vnxtSS+Uy3Wd6bhtUqbFSGVKPHTvG0NAQGzdunPsP6u23386+fft46qmn+IM/+AMATpw4wZNPPsltt9226P8AlEolJiYmKBQKTE1NzSUCtX6cxNfI4h687uxdd6lUYnR0lKmpKUZHR5kYH2d4cJCpcpnhwUHGR0c5eewY5WKRwtgY44ODdB4/frqtg9Sb0yw1innfQzNd99m96eyaizWnhbExJkslCuPjAEwWi5QKBYqFAszMMDU1xfSZBhWwQZUarOoh9aGHHmJoaGjuR/ff/OY3efXVVwH40z/9U/r7+7n//vvZu3cvR44cYcOGDcDpIfW6667j7rvv5uc///ncb5yamZnhr//6rxdd87XXXqO3t/d0a/frX5/eeFtbzR8DiX/NLOzB687WdZdKJQ7+4z9ybGiItvZ2JsbH+eGBAxweHaWzq4vxsTEOHDhA7/DwXJN6bGCANcUibWcSg7Sb06w0is2wh2a57mhvCsQ2p+VSiZnXX2d8cpJye/vpA4jDw6c/PrPvdqAMnDrzI30bVKlxqh5SH3zwwbn/gLa0tPD000/z1FNP0dLSwh/90R/R399PS0vLeaeZW1tbeeaZZ7jvvvv44he/SKFQ4JprrmHv3r1s2rRp0TUvueQSNm/eTKFQoKWlhcsvv3yu1avlYyDxr5mFPXjd2brukZERjg4Ocum7301PXx/DJ0/yq5ERLrnuOvpWrGB0cJBjp07xtmuvpWfFCiaGh2n9p39i3fveR8/KlQCpN6dZaRSbYQ/Nct3R3hSoqDktXnopG9auPac53bhIc2qDKjVO1UPqP//zP8d+zp49e9izZ895j69cuZKvfOUrfOUrX6lqzc7OTnp6egBob2+nu7s7sY/T+JpZ2IPXnZ3rLpfLtHd0nG7t+vuZmpqiq6uL3hUrWLFmDQA9y5ez4sIL6VuzhvbOTjr7+li+ejV9Z/592s1pVhrFZthDs1x3tDcFKmpOO8pl+vv7/6U5nZykp6fH5lQKUN0OTtXCJjX7a4awhyxddzUN6tjQEONDQwwODFAcG2NiZISxkycZOnaM8pnbvjVLo9joNUPYQ56uu5p7nILNqZQ3mRhSbVKzv2YIe8jKdVfboBYnJjjys5+x+sQJWs+0e28MDHCyXKaztxdojkYxhDVD2ENerrvae5wCNqdSzmRiSLVJzf6aIewhK9ddbYM6+tZbTHV3c8kNN9CzahUTQ0O0v/giG//1v577cX8zNIohrBnCHvJy3dXe4xSwOZVyJhNDqk1qPtYMYQ9ZuO5qG9TW1lY6+vpY8ba30f+2t9He0THXn65429tOf/0maBRDWDOEPeTluqu9xylgcyrlTCaGVJvU7K8Zwh5Cvu5aGtTRkyeZGBzk5GuvUZqYYPzkSQrDwwwfP37O/SPz0CiGvmYIe8jSdVfTnMb1poDNqZQzmRhSbVKzv2YIewj1umttUCdHRxk4dIiTg4O0d3czXSpxcmCAYmurTarXHex1V9ucVtKbgs2plCeZGFJtUrO/Zgh7CPW6a21Qx06coKW3l8033kjvmjVMDA5y+Mc/ZpNNqtcd8HVX25xW0puCzamUJ5kYUm1S87FmCHsI8bprbVBbW1ro7utj5UUXsXL9eka6uuh55RWbVK876Ouutjm1N5WaTyaGVJvU7K8Zwh5Cuu4kG9TRN9+kMDzM4NGjlEslm9QMtplZX3OhPSTZnNqbSs0nE0OqTWr21wxhD6Fcd9INanl8nBOHDlEYH7dJzWCbmYc159tDGs2pvanUXDIxpNqkZn/NEPYQynUn3aCOHT/OyytX8g6b1IavGcIeQrnuNJpTe1OpuWRiSLVJzceaIewhhOtOukFtW7aMHpvUINYMYQ+hXLfNqaRaZWJItUnN/poh7KFR1312fwok3qDapIazZgh7qNeai/WmgM2ppJplYki1Sc3+miHsoRFrRvtTIPEG1SY1nDVD2EM91ozrTQGbU0k1y8SQapOa/TVD2EMj1oz2p0DiDapNajhrhrCHeqwZ15sCNqeSapaJIdUmNR9rhrCHeq8Z7U+BxBtUm9Rw1gxhD/VYM643BWxOJdXMn6NIkiQpOJn4TqoHp7K/Zgh7qNeai92oH0j8oJQHp8JZM4Q9JLVmLTfiBw9GSapdJoZUD05lf80Q9lCPNeNu1A8kflDKg1PhrBnCHpJYs9Yb8QMejJJUs0wMqR6cyv6aIeyhHmvG3agfSPyglAenwlkzhD0ksWatN+IHPBglqWaZGFI9OJWPNUPYQ9prVHKjfkj2oJQHp8JZM4Q9JLFmrTfiBzwYJalmmRhSbVKzv2YIe0hrjcUa1Gh/CiTeoNqkhrNmCHuodM1amtO43hRsTiXVLhNDqk1q9tcMYQ9prBnXoEb7UyDxBtUmNZw1Q9hDJWvW2pxW0puCzamk2mRiSLVJzf6aIewhjTXjGtRofwok3qDapIazZgh7qGTNWpvTSnrThR6TpEplYki1Sc3HmiHsIemvWUmDenZ/CiTeoNqkhrNmCHuoZM1am1N7U0n1kIkh1SY1+2uGsIekvmY1DWq0PwUSb1BtUsNZM4Q9zK6ZZnNqbyqpHjIxpNqkZn/NEPaQxJrVNqjR/hRIvEG1SQ1nzRD2ANSlObU3lZS2TAypNqnZXzOEPSSxZrUNarQ/BRJvUG1Sw1kzhD0AdWlO7U0lpS0TQ6pNaj7WDGEPtX6NahvUaH8KJN6g2qSGs2YIewBsTiXlQiaGVJvU7K8Zwh6W+jVqaVCj/SmQeINqkxrOmvXaw2K9KWBzKikXMjGk2qRmf80Q9rCUNWttUKP9KZB4g2qTGs6a9dhDXG8K2JxKyoVMDKk2qdlfM4Q9LGXNWhvUaH8KJN6g2qSGs2Y99hDXmwI2p5JyIRNDqk1qPtYMYQ/VPqfWBjXanwKJN6g2qeGsWY89xPWmgM2ppFzIxJBqk5r9NUPYQ6XPSbJBjfaiYJOa5zWT2kMt9zgFm1NJ+ZCJIdUmNftrhrCHStZMukGN9qJgk5rnNZPYQ633OAVsTiXlQiaGVJvU7K8Zwh4qWTPpBjXai4JNap7XTGIPtd7jFLA5lZQLmRhSbVLzsWYIe4j7nKQb1GgvCjapeV4ziT3Ueo9TwOZUUi5kYki1Sc3+miHsYaHPSbNBtUm1SU26OY3rTcHmVFI+ZGJItUnN/poh7GG+NdNuUG1SbVKTbk4r6U3B5lRS9mViSLVJzf6aIexhvjXTblBtUm1Sk25OK+lNF3pMkrIkE0OqTWo+1gxhD9HH0m5QbVJtUpNuTu1NJTWLTAypNqnZXzOEPcw+Vs8G1Sa1+ZrUs3vT2T0k2Zzam0pqFpkYUm1Ss79mCHsA6t6g2qQ2V5Ma7U2BVJpTe1NJzSATQ6pNavbXDGEPQN0bVJvU5mpSo70pkEpzam8qqRlkYki1Sc3HmiHsod4Nqk1qczWp0d4UsDmVpCXy50WSJEkKTia+k+rBqeyv2ag9nH1ICqj7QSkPTuXv4FQ1N+IHD0ZJ0lJlYkj14FT212zEHqKHpIC6H5Ty4FS+Dk5VeyN+wINRkrREmRhSPTiV/TUbsYfoISmg7gelPDiVr4NT1d6IH/BglCQtUSaGVA9O5WPNeu8hekgKqPtBKQ9O5evgVLU34gc8GCVJS5SJIdUmNftr1msPi92oH6h7g2qTmr0mtZrmNK43BWxOJWmJMjGk2qRmf8167CHuRv1A3RtUm9RsNanVNqeV9KZgcypJS5GJIdUmNftr1mMPcTfqB+reoNqkZqtJrbY5raQ3BZtTSVqKTAypNqn5WDPtPVRyo36ob4Nqk5qtJrXa5tTeVJLSk4kh1SY1+2umtYfFGtRofwrUvUG1SQ2vSU2yObU3laT0ZGJItUnN/ppp7CGuQY32p0DdG1Sb1LCa1DSaU3tTSUpHJoZUm9Tsr5nGHuIa1Gh/CtS9QbVJDatJTaM5tTeVpHRkYki1Sc3HmknvoZIG9ez+FKh7g2qTGlaTanMqSdmRiSHVJjX7aya1h2oa1Gh/CtS9QbVJrW+TenZvOrumzakkZVMmhlSb1OyvmcQeqm1Qo/0pUPcG1Sa1fk1qtDcFbE4lKcMyMaTapGZ/zST2UG2DGu1Pgbo3qDap9WtSo70pYHMqSRmWiSHVJjUfa9a6h2ob1Gh/CtS9QbVJrV+TGu1NAZtTScqwTAypNqnZX3Ope6ilQY32p5B+D2qTmm6TWs09TsHmVJKyLBNDqk1q9tdcyh5qbVCj/Smk34PapKbXpFZ7j1PA5lSSMiwTQ6pNavbXXMoeam1Qo/0ppN+D2qSm16RWe49TwOZUkjIsE0OqTWo+1qx2D7U2qNH+FNLvQW1S02tSq73HKWBzKkkZlokh1SY1+2tWuockG9RG9KA2qbU1qdU0p3G9KWBzKkkZlokh1SY1+2tWsoekG9RG9KA2qUtvUqttTivpTcHmVJKyKhNDqk1q9tesZA9JN6iN6EFtUpfepFbbnFbSm4LNqSRlVSaGVJvUfKwZt4ekG9RG9KA2qUtvUqttTu1NJSnfMjGk2qRmf82F9pBmg2qTGl6TmmRzam8qSfmWiSHVJjX7a863h7QbVJvUsJrUNJpTe1NJyq9MDKk2qdlfc749pN2g2qSG1aSm0Zzam0pSfmViSLVJzcea0Y/TblBtUsNqUm1OJUnVyMSQapOa/TWj/SmQeoNqk1rfJnWx3hSwOZUkVSUTQ6pNavbXjPanQOoNqk1q/ZrUuN4UsDmVJFUlE0OqTWr214z2p0DqDapNav2a1LjeFLA5lSRVJRNDqk1q9teM9qdA6g2qTWr9mtS43hSwOZUkVcWfm0mSJCk4mfhOqgensrnmYjfqB1I/KOXBqWQPTtVyI37wYJQkqTqZGFI9OJW9NeNu1A+kflDKg1PJHZyq9Ub8gAejJElVycSQ6sGp7K0Zd6N+IPWDUh6cSu7gVK034gc8GCVJqkomhlQPTmVvzUpu1A/pHpTy4FRyB6dqvRE/4MEoSVJVMjGk2qRmY83FGtRofwqk3qDapFbXpNbSnMb1pmBzKkmqTiaGVJvU8NeMa1Cj/SmQeoNqk1p5k1prc1pJbwo2p5KkymViSLVJDX/NuAY12p8CqTeoNqmVN6m1NqeV9KYLPSZJ0nwyMaTapIa/ZiUN6tn9KZB6g2qTWnmTWmtzam8qSUpaJoZUm9Qw16ymQY32p0DqDapN6rlNaprNqb2pJClpmRhSbVLDW7PaBjXanwKpN6g2qf/SpNajObU3lSQlqaohtVQq8Vd/9Vc8+uijDA0NcdVVV/E3f/M3/P7v//6iz/va177GJz7xiXn/3bFjx7jwwgsXfb5NanhrVtugRvtTIPUG1Sb1X5rUejSn9qaSpCRVNaR+/OMf5xvf+Ab33nsvmzZtYs+ePXzgAx/g+9//Ptdff33s83fv3s3ll19+zmMrzhyiWYxNanhrVtugRvtTIPUG1Sb1X5pUm1NJUtZUPKT+6Ec/4utf/zqf//zn+fSnPw3ARz/6Ud797neza9cu/uEf/iH2a9xyyy1s3bq16k3apIaxZi0NarQ/hfr3oY1Ys157KI6OMvzmm6d708FBJicmKIyN0Xbmdl82p5KkrKl4SN23bx9tbW3cc889c491dnbyyU9+ks985jO8/vrrXHzxxYt+jZmZGUZHR+np6anqx4I2qY1fs9YGNdqfQv370EasWY89TE1McPLwYU5NT9PR1cWpcpnBN99k+dq1jKxcCWBzKknKnIqH1IMHD7J582b6+vrOeXz79u0A/PjHP44dUm+66SbGxsbo6Ojg5ptv5sEHH2Tjxo2xa9ukNn7NWhvUaH8K9e9DG7FmPfYwMTjIqz/8Ib+9YwfLV6+mMDLCa7/4BVu3b6fvTP9rcypJypqKh9SjR4+ybt268x6ffWxgYGDB5/b29nL33Xdz00030d/fzwsvvMDf/u3fsmPHDg4cOMAll1yy6No2qY1fs9YGNdqfQv370EasWY89jHR1cWLlStac+bMeO3mSoddeo2/FClacGVJtTiVJWVPxkFooFOg882PAs3V1dc39+4Xs3LmTnTt3zn38wQ9+kJtvvpn3ve99fPazn+XLX/7yomvbpDZmzSQb1BD60EasmdQezm5OR48fZ3JigrGTJ2lpaWF0cJDy+DhjQ0MATIyOMlksUhwfp+3MwGlzKknKmoqH1O7ubkpn/iN7ttmhZvbHyJW6/vrrufbaa/nud78b+7n3338/vb29zMzMMDExQU9PD//m3/wb3ve+92WuBw1hD5WsmXSDGkIf2og1k9hDtDmdKhR446WX6Ghpoauvj8lSiZOHDvH69DRdXV1MTU0xceIEY8uXc+rMfVJtTiVJSXjiiSd44oknznlseHg4lbUqHlLXrVs374/0jx49CsD6Mz/KrMYll1zCyy+/HPt5//W//leuvvpqCoUChw8f5u1vf3tme9AQ9lDJmkk3qCH0oY1YM4k9RJvTsZMnObxiBVf/7u+yfNUqJkZGeH3FCq7/V/+K/pUrKRWLjBw9ytXvec/c621zKklKwl133cVdd911zmMHDhxg27Ztia9V8ZB69dVX8+yzzzI6Osry5cvnHt+/fz8AW7ZsqXrxw4cPc8EFF8R+nk1q/ddMukENoQ9txJpJ7CHanLa3t9O7fDkr165l1dvexkhnJ8PLl7PmggtYsXr16dtMFQr09/fPvbY2p5KkrKl4SL399tv5/Oc/z8MPP8yf//mfA6db0T179nDdddfNnew/duwYQ0NDbNy4ce5Hy8ePHz9vGH3mmWc4cOAA/+k//afYtW1S67Nmmg1qCH1oI9asdA/VNKdjJ09SKhYZGxwEYGJ4mOL4OCNDQzAzQ6lUYrJUOv3dU5tTSVJGVTykXnPNNezcuZP//J//M2+++SZXXHEFjzzyCK+++ip79uyZ+7z777+fvXv3cuTIETZs2ADAjh072Lp1K9u2bWPFihUcOHCAr371q2zYsIHPfOYzsWt7n9T010y7QQ2hD23EmpXsodrmtFgsMvKLX/Cbcpmuri5KpRInDx/mV1NTc9857Vi2jMl161h2VitucypJypKqfi3q3r17+cu//EseffRRBgcHee9738u3v/1tbrjhhrnPaWlpoaWl5ZznffjDH+bv/u7v+Pu//3smJiZYv349f/zHf8wDDzxQ0Y/7vU9q+mum3aCG0Ic2Ys1K9lBtczo+OsqrF17I1ve8h57eXsbGxvj1297Gjquvpq+vj6mpKUqlEpevW3fOj/ZtTiVJWVLVkNrZ2cnnPvc5Pve5zy34OXv27DnnO6sAu3fvZvfu3UvbITap9Vgz7QY1hD60EWtWsodqm9Ouri4GV6xg9QUX0N/fT9fwMIP9/axatYr+/n7K5TLDw8O0t7fbn0qSMquqIbVRbFLTWbOeDWoIfWgj1oz2pkDNzen42BiThQJjY2On//3YGOVymUKhQFtbG1NTU5w6darSt5ckSUHKxJBqk5r8mvVuUEPoQxuxZrQ3BWpuTqempnjz9ddZ1dJCZ2cnU5OTHHv1VY6sXDn3Czc6Ojr4rd/6rarfa5IkhSITQ6pNavJr1rtBDaEPbcSa0d4UqLk5LRQKHDlyhE2bNtHV1UWhUODXq1axceNGuru7mZqamnvNJUnKqkwMqTapyX9c7wY1hD60EWtGe9PZ16KW5nRiYoITJ06wfPnyufuednZ2ntMXT05OVvkukyQpLN6PRpIkScHJxHdSPThV+8dnH5IC6n5QKoRDTGmtWc2N+KH2g1Fxr7cHpyRJeZCJIdWDU7V9HD0kBdT9oFQIh5jSWLPaG/EDNR+MquTvlAenJElZl4kh1YNTtX0cPSQF1P2gVAiHmNJYs9ob8QM1H4yKe709OCVJyoNMDKkenKrt4+ghKaDuB6VCOMSUxprV3ogfqPlgVCWvtwenJElZl4kh1Sa1tgY12p8CdW9Qs9ykVtOcxvWmQM3NqU2qJKkZZGJItUmtrUGN9qdA3RvUrDap1Tancb0pUHNzapMqSWoGmRhSbVJra1Cj/SlQ9wY1q01qtc1pXG86+3rX0pzapEqSmkEmhlSb1Noa1Pn6U6hvg5rVJrXa5jSuNwVqbk4ref1tUiVJWZeJIdUmtbYGNdqfAnVvUENuUpNsTuN603r8nbJJlSTlQSaGVJvU2hrUaH8K1L1BDbVJTbo5jetN6/F3DmxSJUnZl4kh1Sa1tgY12p8CdW9QQ21Sk25O43rTevyds0mVJOVBJoZUm9TaG9Sz+1Og7g1qqE1q0s1pJb1p2n+nbFIlSXmQiSHVJrW2BjXanwJ1b1Ab1aSe3ZsCqTenIfyds0mVJOVBJoZUm9TaGtRofwrUvUFtRJMa7U2B1JvTEP7OgU2qJCn7MjGk2qTW1qBG+1Og7g1qI5rUaG8KpN6chvB3ziZVkpQHmRhSbVJra1Cj/SlQ9wa1EU1qtDed/XNMuzlt9N85m1RJUh5kYki1Sa2tQY32p1D/e5Sm1aRWc49TSL85DeHvnE2qJCkPMjGkNnuTWmuDGu1Pof73KE2jSa32HqdA6s1pCH/nwCZVkpR9mRhSm71JrbVBjfanUP97lKbRpFZ7j1Mg9eY0hL9zNqmSpDzIxJDa7E1qrQ1qtD+F+t+jNI0mtdp7nAJ1aU4b/XfOJlWSlAeZGFKbsUlNskFt1D1Kk2hSq2lO43pTIPXmNIS/czapkqQ8yMSQ2mxNatINaiPuUZpEk1ptcxrXmwKpN6ch/J0Dm1RJUvZlYkhttiY16Qa1EfcoTaJJrbY5jetNZ/+s02xOQ/g7Z5MqScqDTAypzdakJt2gNuIepUk0qdU2p3G9KVCX5rTRf+dsUiVJeZCJIbUZmtQ0G9SQm9Qkm9O43jSk19smVZKkxWViSM17k5p2gxpqk5p0cxrXm4byetukSpIULxNDat6b1LQb1FCb1KSb07jeNJTX2yZVkqR4mRhS896kpt2ghtqkJt2cVtKbhvB6p72GTaokKQ8yMaTmrUk9uz8FUm9QG9WkLtabAok3p6G+3japkiRVLxNDap6a1Gh/CqTeoDaiSY3rTYHEm9MQX2+bVEmSliYTQ2qemtRofwqk3qA2okmN602BxJvTEF9vm1RJkpYmE0NqnprUaH8KpN6gNqJJjetNgVSa09Be70bswSZVkpQHrY3egCRJkhSVie+kZv3g1GI36gdSPyiV1sGpWm7ED8kfjArl9W70Hjw4JUnKg0wMqVk+OBV3o34g9YNSaRycqvVG/EDiB6NCeL1D2AN4cEqSlH2ZGFKzfHAq7kb9QOoHpdI4OFXrjfiBxA9GhfB6h7AHD05JkvIgE0Nqlg9OVXKjfkj3oFQaB6dqvRE/kMrBqEa/3iHswYNTkqQ8yMSQmrUmdbEGNdqfAqk3qEttUmtpTuN6U0i+OQ2hBw1hDzapkqQ8yMSQmqUmNa5BjfanQOoN6lKa1Fqb07jeFEi8OQ2hBw1hD2CTKknKvkwMqVlqUuMa1Gh/CqTeoC6lSa21OY3rTWf/7JNsTkPoQUPYg02qJCkPMjGkZqlJraRBPbs/BVJvUJfSpNbanMb1prN/bkk3p43uQUPYg02qJCkPMjGkht6kVtOgRvtTIPUGdaEmNc3mNK43TerPPrQeNIQ92KRKkvIgE0NqyE1qtQ1qtD8FUm9Q52tS025O43rTJP7sQ+xBQ9gD2KRKkrIvE0NqyE1qtQ1qtD8FUm9Q52tS025O43rTJP7sQ+xBQ9iDTaokKQ8yMaSG3KRW26BG+1Mg9QZ1viY17ea0kt40jdez0T1oCHuwSZUk5UEmhtTQmtRaGtRofwqV3bO02o8X602B1JvTENrMENa0SZUkaWkyMaSG1KTW2qBG+1OIv2dptR/H9aZA6s1pCG1mCGvapEqStDSZGFJDalJrbVCj/SnE37O02o/jelMg9eY0hDYzhDVtUiVJWppMDKkhNam1NqjR/hTi71la7cdxvSlQl+a00W1mKGvapEqSVL1MDKmNblKTbFAXumdpks1pXG8K6TenIbSZIaxpkypJ0tJkYkhtZJOadIM63z1Lk25O43pTIPXmNIQ2M4Q1bVIlSVqaTAypjWxSk25Q57tnadLNaVxvCqTenIbQZoawpk2qJElLk4khtZFNatIN6pFXcCkAABOCSURBVHz3LE26OY3rTYG6NKeNbjNDWdMmVZKk6mViSK13k5pmg1ppk1pLcxrXm0L6zWkIbWYIa9qkSpK0NJkYUuvZpKbdoFbSpNbanMb1pkDqzWkIbWYIa9qkSpK0NJkYUuvZpKbdoFbSpNbanMb1prPXnWZzGkKbGcKaNqmSJC1NJobUejapaTeolTSptTancb3p7DWn3Zw2us0MZU2bVEmSqpeJITXtJrWeDWq0NwUSb07jetMk/uyy0GaGsKZNqiRJS5OJITXNJrXeDWq0NwUSb07jelNojjYzhDVtUiVJWppMDKlpNqn1blCjvSmQeHMa15tCc7SZIaxpkypJ0tJkYkhNs0mtd4Ma7U1n95Rkc1pJb5rGn2VobWYoa9qkSpJUvdZGb0CSJEmKysR3UpM8OHX2ISkglYNS1dyIH5I/GBXC4Z0Q99As1+3BKUlSHmRiSE3q4FT0kBSQ+EGpam/EDyR+MCqEwzsh7qFZrhs8OCVJyr5MDKlJHZyKHpICEj8oVe2N+IHED0aFcHgnxD00y3V7cEqSlAeZGFKTOjgVPSQFJH5Qqtob8QOpHIxq9OGdUPfQDNftwSlJUh5kYkitpUld7Eb9wJIa1Gqa07jeFEi8OQ2hiwxxD81y3TapkqQ8yMSQutQmNe5G/UDVDWq1zWlcbwok3pyG0EWGuIdmuW6wSZUkZV8mhtSlNqlxN+oHqm5Qq21O43pTIPHmNIQuMsQ9NMt126RKkvIgE0PqUpvUSm7UD9U1qNU2p3G9KZBKc9roLjLUPTTDddukSpLyIBNDajVN6mINarQ/BeZtUAvDwwwfO8bU5GTNzWlcb7rQdWS9iwxxD81y3TapkqQ8yMSQWmmTGtegRvtT4LwGtTw+zhuvvMJEoUB7As1pXG8Ktpl5XtMmVZKkpcnEkFppkxrXoEb7U+C8BnV8aIie557jXdddl0hzGtebgm1mnte0SZUkaWkyMaRW2qRW0qCe3Z8C5zWo7R0dHO/vT6w5raQ3jbuuND5uxJoh7KEZrtsmVZKUB5kYUhdrUqtpUMeGhiiMjjLy5ptMlkoAjL311ukW9cQJZk6dSrw5DaFRDGHNEPbQLNdtkypJyoNMDKkLNanVNqiThQKv/epXHBsZoePMfVJLY2O8/tJLnJqaoqu3N/HmNIRGMYQ1Q9hDs1w32KRKkrIvE0PqQk1qtQ3q+NAQbS++yNu3b6f7zO2fxgcH6e7rY8v116fSnIbQKIawZgh7aJbrtkmVJOVBJobUhZrUahvU9s5Oevv7WXHBBXNN6rJly+jp7U21OW10oxjKmiHsoRmu2yZVkpQHmRhSz25S4xrUwvg4I2+9xampKcaGhiiOjzN+8iSnpqcZHxqiMD7O+OAgp6amgPSb0xAaxRDWDGEPzXLdNqmSpDzIxJA626TGNagThQI/+/nPGTjzHdZiscirhw4xWi7T0dXFZKnEm4cO0Tk2RueZJjXt5jSERjGENUPYQ7NcN9ikSpKyLxND6myTGtegToyMUOzt5aKrrqK7r4+xoSGWdXez+Zpr6Fu5krGREV7v7uZ3tm6lf+VKgNSb0xAaxRDWDGEPzXLdNqmSpDzIxJA626TGNajL2tro7e+nf+1aevv7aV227PTnrllD/5o1tC5bxmBv71xvCtSlOW10oxjKmiHsoRmu2yZVkpQHmRhSJyYmGBkZYXR0lMJZfejY2BilYpHx4WFaWlqYGB093ZwODTFVLjMxNERxbIyxkyeZnpo6rzcFUm9OQ2gUQ1gzhD00y3XbpEqS8iATQ+pPXnqJ0akpioUCP33pJYZbW+no6qI4Ps6Rw4cZb2ujrauL8uQkr7/0EjPj4yzr6KBUKPDWP/0Tr46P09HRcV5vCqTenIbQKIawZgh7aJbrBptUSVL2VTWklkol/uqv/opHH32UoaEhrrrqKv7mb/6G3//934997tDQELt27eLpp5+mUChwzTXX8OCDD3L11VfHPnfdFVewads2xkdHGQYufc976Fm+nPHRUUZnZlh31VX09PVRGBtjVW8vv33llfT29TE+OspvLV/OliuvnLc3BVJvTkNoFENYM4Q9NMt126RKkvKgqiH14x//ON/4xje499572bRpE3v27OEDH/gA3//+97n++usXfN6pU6e49dZb+clPfsKuXbtYs2YNX/rSl7jxxht58cUX2bhx46Lrdvf00L9iBQDt3d309PfT19/PDNDZ20v/qlX09vezrK2Nzp4eVqxaRV9/P21tbfQuX75gbwrUpTltdKOY1pr/5//8H6688sqmu+7Q91Aul9m3bx//4T/8BxSmJ554grvuuqvR29A8fG3C5WvTfCoeUn/0ox/x9a9/nc9//vN8+tOfBuCjH/0o7373u9m1axf/8A//sOBz9+3bx3PPPce+ffv40Ic+BMAdd9zB5s2beeCBB3j88ccXXbs0OUlhYoJSsch0uczEbD86Okq5UGB0aOh0Rzo2NtecTpfLsb0pNEejmNaa//t//28+8YlPNN11h76HqakpvvnNbzqkBsz/2IbL1yZcvjbNp+Ihdd++fbS1tXHPPffMPdbZ2cknP/lJPvOZz/D6669z8cUXL/jciy66aG5ABVi7di133HEHjz322OlT++3tC679xuuv88/9/RRLJd48094ta2+nXCxy9NAhpsbGaGtro1gqceyVV+gaGqKrqyu2N4XmaBTTWnNiYoLDhw833XWHvofZNWbOHA6UJCmLKh5SDx48yObNm+dazlnbt28H4Mc//vGCQ+rBgwfZunXreY9v376dhx9+mJdffpkrr7xywbXftn49l23eTLFQAOC3LruMzq4uSoUCF/T3c8lll9HZ3c34yAiH+/q47r3vregep9AcjWJaa/b09DR8D6Gv2agmtaOjwyZVkpRpFQ+pR48eZd26dec9PvvYwMDAos+98cYbF33uYkPq7H1SAbo6O+lbvpzunh4m2tvp7etj5erVdPf00NbWRl9fX1X3OIX8N4pprdnS0tLwPWRhzUY0qQ6okqSsq3hILRQKcz8iP1vXmV8vWjjzXc75FIvFJT139vGXf/5z4PTdBd4YGGB4ZITOM7eUOvvjwsQER3/1K5a3tdHT00OpVOK1115jfHyczs7O8z6e/ZqLfU7aHzdiD0mtOT4+zsGDB5vuukPfw/T0NKOjoxw8eHDux/8Ky/DwMAcOHGj0NjQPX5tw+dqE6xe/+AWw+Cy4FBX/F6y7u5tSqXTe47OHNWZ/lJnkc48cOQLAX/3Zn1W6TdXZLbfc0ugtaAHXXntto7egRWzbtq3RW9ACfG3C5WsTtiNHjix6t6dqVTykrlu3bt4f6R89ehSA9evXJ/7cm2++mccee4zLLrts0SFYkiRJjTF7Bujmm29O9OtWPKReffXVPPvss4yOjrJ8+fK5x/fv3w/Ali1bFnzuli1b+MEPfsDMzMw5rdz+/fvp7e1l8+bN8z5v7dq1/OEf/mGlW5QkSVIDJPkd1FmtlX7i7bffzvT0NA8//PDcY6VSiT179nDdddfNnew/duwYhw4dYmpq6pznvvHGGzz11FNzj504cYInn3yS2267bdHbT0mSJKn5tMxUcTPFO++8k6effpp7772XK664gkceeYQXXniB733ve9xwww3A6d9KtXfvXo4cOcKGDRuA079x6oYbbuCnP/0p991339xvnHrttdd4/vnn2bRpUzpXJ0mSpEyq6ujv3r17+cu//EseffRRBgcHee9738u3v/3tuQEVTt+WKHr7m9bWVp555hnuu+8+vvjFL1IoFLjmmmvYu3evA6okSZLOU9V3UiVJkqR6qLhJlSRJkuqlIUNqqVTiL/7iL1i/fj09PT1cd911fPe7363ouUNDQ9xzzz1ccMEF9PX18Xu/93scPHgw5R03j6W+Nl/72tdobW2d958333yzDjvPv/HxcR544AHe//73s3r1alpbW3nkkUcqfr7vnfTU8tr43knX888/z6c+9SmuvPJK+vr6uPTSS7nzzjv55S9/WdHzfd+kq5bXx/dOun72s5+xc+dOrrjiCnp7e1mzZg07duzg8ccfr+j5Sbx3GvLraD7+8Y/zjW98g3vvvZdNmzaxZ88ePvCBD/D9739/0VsYnDp1iltvvZWf/OQn7Nq1a+4A1o033siLL77Ixo0b63gV+bTU12bW7t27ufzyy895bMWKFWltt6kcP36c3bt3c+mll7JlyxaeffbZin/9qe+ddNXy2szyvZOO//bf/hvPPfccO3fu5KqrruLo0aM89NBDbN26lR/+8IeL/kpu3zfpq+X1meV7Jx2vvvoqY2NjfPzjH2f9+vVMTEywb98+PvrRj3LkyBH+y3/5Lws+N7H3zkyd7d+/f6alpWXmwQcfnHusWCzObNy4cWbHjh2LPvfrX//6TEtLy8w3vvGNuceOHz8+s2rVqpl/9+/+XWp7bha1vDZ79uyZaWlpmXnxxRfT3mbTKpVKM2+88cbMzMzMzAsvvDDT0tIy88gjj1T0XN876arltfG9k67/9//+30y5XD7nsV/+8pczXV1dMx/5yEcWfa7vm/TV8vr43qm/6enpmS1btsxs2LBh0c9L6r1T9x/379u3j7a2Nu655565xzo7O/nkJz/Jc889x+uvv77ocy+66CI+9KEPzT22du1a7rjjDv7n//yflMvlVPeed7W8NrNmZmYYHR1leno6za02pY6ODi688ELg9J9zNXzvpKuW12aW7510/M7v/A5tbef+0HDjxo389m//NocOHVr0ub5v0lfL6zPL9079tLa2cskll8Te3z6p907dh9SDBw+yefNm+vr6znl8+/btAPz4xz9e9Llbt2497/Ht27czMTHByy+/nOxmm0wtr82sm266iRUrVtDb28u//bf/lldeeSWVvao6vnfC53unfmZmZnjjjTdYu3btop/n+6YxKn19ZvneSdfExAQnTpzgV7/6FV/4whf4zne+w65duxZ9TlLvnboPqUePHmXdunXnPT772MDAQCrPVbxa/nx7e3u5++67+dKXvsT/+B//g127dvG9732PHTt28Nprr6W2Z1XG9064fO/U3+OPP87AwAB33nnnop/n+6YxKn19fO/Ux6c//WkuvPBCNm3axF/8xV/wxS9+8ZyfuM4nqfdO3Q9OFQoFOjs7z3u8q6tr7t8vpFgsLvm5ilfLa7Nz50527tw59/EHP/hBbr75Zt73vvfx2c9+li9/+cvJb1gV870TLt879XXo0CH+5E/+hB07dvCxj31s0c/1fVN/1bw+vnfq49577+WOO+5gYGCAxx9/nE996lN0d3cv+vok9d6p+5Da3d1NqVQ67/FisTj379N4ruIl/ed7/fXXc+2111Z8ezGlx/dOtvjeScexY8e49dZbWbVqFfv27Yu9A4Pvm/qq9vWZj++d5L3jHe/gHe94BwAf+chHuPnmm/mzP/sz7rjjjgXfA0m9d+r+4/5169bN+23eo0ePArB+/fpUnqt4afz5XnLJJQwODta8N9XG9072+N5J1vDwMLfccgsjIyP8r//1v7joootin+P7pn6W8vosxPdOuv7gD/6A4eFhXnrppQU/J6n3Tt2H1KuvvpqXX36Z0dHRcx7fv38/AFu2bFnwuVu2bOHAgQPnnZ7dv38/vb29bN68OfkNN5FaXpuFHD58mAsuuCCR/WnpfO9kj++d5BSLRW677TZeeeUVvv3tb/POd76zouf5vqmPpb4+C/G9k67ZH9W3ti48Qib13qn7kHr77bczPT3Nww8/PPdYqVRiz549XHfddVx88cXA6W/7Hzp0iKmpqXOe+8Ybb/DUU0/NPXbixAmefPJJbrvttthbImhxtbw2x48fP+/rPfPMMxw4cID3v//96W9ec3zvhMv3Tv1NT09z5513sn//fp588kmuvfbaeT/P901j1PL6+N5J13x/vuVymb1797JmzZq5X7Rw9OjR1N47LTNLvalfDe68806efvpp7r33Xq644goeeeQRXnjhBb73ve9xww03AKd/89HevXs5cuQIGzZsAE7/BoMbbriBn/70p9x3331zv8Hgtdde4/nnn2fTpk31vpTcWeprs2nTJrZu3cq2bdtYsWIFBw4c4Ktf/SoXX3wxzz//vP+vNiEPPfTQ/2/vDlUUiMIojn9zQREEETSoaV7BZBMNFsGgWcRgE8Ri8ylMNpPgM4hPYrOIWBQstrNJwQ27rDrOZfn/YGAYbhk+DnO4zDB2Pp9tv9/bfD63Tqdz3+EejUaWyWTITkyenQ3ZidZ4PLbZbGatVuvhI5ubbrdrZjxz4vLKfMhOtNrttl0uF6tWq1YqlexwONhyubTtdmuLxcJ6vZ6ZRZydv/xp4F2u16smk4mKxaJSqZQqlYrW6/XDmn6/L+ecdrvdw/XT6aTBYKB8Pq90Oq16vc7fJt7o2dlMp1OVy2Vls1klk0mFYajhcKjj8fjpW/jXwjBUEAQKgkDOOTnn7ue3eZCdeDw7G7ITrVqtdp/F98M5d19HbuLxynzITrRWq5UajYYKhYISiYRyuZyazaY2m83DuiizE8tOKgAAAPCTj7+TCgAAAPyGkgoAAADvUFIBAADgHUoqAAAAvENJBQAAgHcoqQAAAPAOJRUAAADeoaQCAADAO5RUAAAAeIeSCgAAAO9QUgEAAOAdSioAAAC88wVxP3j39jZJ8wAAAABJRU5ErkJggg==", - "text/plain": [ - "PyPlot.Figure(PyObject )" - ] - }, - "execution_count": 16, - "metadata": { - "comm_id": "7bd2ea2b-d96c-4149-8c83-1e706c1de67d", - "reactive": true - }, - "output_type": "execute_result" - } - ], - "source": [ - "draw_image(f, IntervalBox(0..1, 0..1))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "standard_map (generic function with 2 methods)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function standard_map(X::IntervalBox, k = 1.0)\n", - " p, θ = X\n", - " \n", - " p′ = p + k*sin(θ)\n", - " θ′ = θ + p′\n", - " \n", - " IntervalBox(p′, θ′)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "iterate (generic function with 1 method)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function iterate(f, n, x)\n", - " for i in 1:n\n", - " x = f(x)\n", - " end\n", - " x\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [ - "Interact.Slider{Int64}(Signal{Int64}(50, nactions=0),\"n\",50,1:100,true)" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAANoAAAILCAYAAACO4IJ4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzsvWusbGd93/9Z91lz2fdzjo9tsJOACbaCiAlByV9CSlEULLD6IiKnTt2SvEjegJSaVCpNVKlSIyBKUqQKtRJS1DQxQgrkReuogBKaIP78AVsFERPZwTbY5tzPvs193Z5n/V8889vr2XNm7z37cq5eX2k0s9esmVn7nPnu3/37c8qyLKlRo8YNhXurL6BGjTcCaqLVqHETUBOtRo2bgJpoNWrcBNREq1HjJqAmWo0aNwE10WrUuAnwb/UFAKyvr/OVr3yFBx98kDiOb/Xl1KgxN8bjMa+++iq/8iu/wtra2t4nlrcBnn766RKob/Xtjr09/fTT+37HbwuL9uCDDwLw9NNP8/a3v33u1z311FN8+tOfvkFXdft85q363Nv5M4ui4MLWFrrRAMc51md+6t//ez7+yU+ilUL1epxdWsL3fVzXxfd9PM/b87UvvPACTz755M53eC/cFkQTd/Htb387jz766NyvW1xcPNT5J4Fb8Zm36nNv189USjEajXDOn+fFrS3yIDj057iuizshUOH7jBcX0UqRFwWDOMYPAgLggbU1Hrz33n3JBhwY8twWRKtRY14opXj14kVeuXyZly5e5JU0JTx7Fv+QZPOKguW1NVzPowgCep0OS50ObqtF89QpPN8n29gg0Rqt9YFEOwg10WrcUdBak2hNvrDAME0Z5TnO/fdDFM3/HkWB3t4mimO8IKBwXbbyHMZjyiyjPR5zZnUV5fug9Ylcd020GncctFLkWUaqFDQaEMfkvo9W6sDXuo6Ddl2U65JOYjDtOCRlSeq6aMdhq98nDgKywYCmUvT7fRqNBq7r4nnezv1hcEcT7YknnnhDfOat+tyjfGaWZRRFQZZlpGlKkiSMRiPSNCVNU4qi2Pf1jz76KN/4xjf2ff/vvvIKL4zHvDIYsN1uU7zyCsMkoZzny1+WBK5L2e0SNRq4vo966CH+z7PP0o5jOkqxFEWstNuobpfFPOf7P/4x9546ReR5nF1bI/Y83nTmzKHIVhPtDvjMW/W5h/3MLMv4/773PTaThO+/9BIXtrc5f+0aV7tdBmnKME3RgC5L2GcM8rM/+MGez6miYJznZK0WmedRNpuwsACuC3E8OwPpuuZWllAU5n44hEYDx3XxV1a4dPEizWaTFc/jrW99K80HHsDd3iaOIsJmk2h1FWc4xF1cJBsMDh233dFEq3F7IU1TfrSxwcUg4B+AK50OG1HE4N57GWhNBiggV4q9abY3yrKkHI0gzw2pAHzfuI9aQ7M5m2hlaZ7zPPNa14UkgSCgXFgg39qi0Bqd5+TdLq3NTX7y4YdxkoTA9/HDED8IUI5DCRR5Tp7nuO78jVU10WqcGLTWJEqhV1ZIzpxh3GgwzHMS16XApNFL10UVRWVl5kk2aG3IIpaoKAzRytIQLY7NOWFYEc1xzK0sDakaDUM0+z2VMq/tdCizjKTfR/X7XNrY4JXXX2dFKQIgH41I0hS6Xfq9HvR65HlOKwhI03Suf5uaaDVODEopNrtdthsNRqMRvaJg7LpkUUSmNUWWoYVcYg0OIlpZQpZV58oXWynzs5BQKUNAG42GuS8K8x6uW1m1PDfH8hz6fXM/HJL3eqwXBa9cvUoaRRSOQ68o6ALlcMg1rfG7XfyFBbx+n97m5lz/NjXRapwYtNYo16XsdNBKUcYxtNvoRgOlNcrzjAXSer5uDiFQmhprpTWMRlU8VhSGOL5vzgtD87gszWsaDXNulkEQmHvHMfdFYcjVbJrzytIQ7upViihi4Psk7TZ5EFA0m2SdDovLyzTbbdSFC0RnzuCORnj9/lz/NjXRapwotNYMu13S8Zg8z819HJsEiO3OHUS0sjRE0NrcS0FarFYQVO8TBOY8cQ3D0JBJCOS65phYwzyvLGCWwWBg3mcwMK6p6zLKMpwwJGi38Vst3DDE15oojsmCAD8IcINg7oRITbQaJ4pSa5Tj4Cwu4sQxZRhSrq6aLzYYMhxk0SQeyzJzflFUxJL3CcPqsVgx1zXHfN+8dmHBxGeOUxHNdSvXUSlj0bpdc86kJkdZMs4yhsMhvbLEKQqanQ651qRBQJokpElCkOeoOQvaNdFq3BhYRHLk5yAwX3ghhcRrNunE7RPC+H5FFEnPO44hoMR5QsYoqkiZZVXCw3F2x3S2RZPHjlMRsCxJx2PWu13UYEA3DBltb7OuNa1Gg+LiRXSScDqOSesYrcatglaKdDgkj2OU75uWJyGUxFriQk5DCCHPCxn9yVdVLIhYRiFsmlZxWxSZWC5JqkSKuJMSsyllbklizhXXMUlgdZWy2SRZXGQ4uWY3isi1Zuz7qDBkPQwJAL+2aDVuGcqS0nFgaQmiiHJxsbJCcVzVsoRoZWlII8VkSf9L3GXHX2J97NdHkSFau10lQYZD83OSVDGaTTSJ9ZpNkwSRc8LQPA4CnDDEiyL8KCJstQjKkqDVouz1cJtN8izDn1N/uCZajRsGx3bvJBHieYYsQWAI5zi70/KeVxFJCCZuJOx2F8UqyXvbNTT7M2denFPFggIh/OSWJAljrXHKEtdxyJVinKa4SUI3TXEHA8LaotW41SiVQm9sUIoF8zxjafK8Smb4viGa71fZRUnbl2VFKLFo8sV23SrGGg6NlRJXMQxhPN7bdSyKitxi/VwXtrerTKbjGEvZbOLEMW6rhTtxVd1mE7fVQg2HlDXRatxySIy1tFS5ZEIsySLarqHEYkKs6Z9hN9EkxpIYrdk09xKjxXFVO5MEiedVMZrWhmiStbx8uUrElCW6LFFlSV6WZGVJoBSR5+F6Hs4h2q+gJlqNmwHfN190IZr0JwrhxKLZBLO/yHsNdQpBxA2UmbRGo2qvsmtr4srKZ2hd9UzKZ9uf67q4vo/r+zhBgCqKI/VoQk20GjcTE0sBVG6fPLbjo3kK2gKJ8yQ1n+dVut/+DDlHWrDks8RlheoaALSmnExXl1qbzGlRoCdzb/O6jIKaaDVuDpSCjY3KwkjNS1qyDumK7UAK0kVh4rIsM++dJObnNK3KCuI6TmpllGVVBhCyw85zWZqSyLUXBWWeExQFxXhMv98nnmPQVDA30f7xH/+R//gf/yPf+c53uHz5Mo1Gg7e97W185CMf4V/+y3+569wXXniBp556im984xuEYcgHPvAB/vN//s/7697VuLshtbHlZUOuKKqSH+K2HcaSCYRoWWZiNCHaaFT9DLuJVhSVdW00oNcDu/AsxGw0oNWCRoOy0dip1bnNJvqQ1zk30V5//XUGgwG/8Ru/wb333stoNOKLX/wi/+pf/SteffVVfv/3fx+A8+fP8973vpfl5WU++clP0u/3+eM//mOef/55nn32WYIjKBbVuIsg8ZokSiSVb6fx7VhtOmYTq+M4lesnjz1vdxwm5QQ5X47Jz7YFk04SgeOgypIiz1FBQF4UpEoRFgXzq5NYv/a8Jz722GM89thju4595CMf4V3vehef/exnd4j2iU98gvF4zHe/+13uv/9+AH7+53+eX/7lX+bP/uzP+K3f+q0jXGaNuwqSWpcvu7RKSdHaPke+/Hu5adKSJVZq1vgMXF8msOtnQr6p4rMGMq1xtaacuI9hmpoG6UPiWDGa67rcf//99K1Rgb/6q7/igx/84A7JAN73vvfx0EMP8Zd/+Zc10d7oUMq4aWLN7MzhUSAxmFLGXbRjtDg+OEYLQ+M67qFlolzXiPlIKxmGgIfFoYk2Go0YjUZ0u13+1//6X3zlK1/hM5/5DAAXLlzg2rVr/NzP/dx1r3v3u9/Nl770pSNcYo27CmKhlpeNCzmdoj8s4YRIIm9gE63RmB2j2UTzPEO0WV0iSlHkOdlEtkBlGeqIoc+hifaxj32Mz372s+bFvs9/+S//hd/+7d8G4NKlSwCcPXv2utedPXuWzc1N8jyv47QaVawm6fW9CtbS07iXFoi0YAlpJGYTizkrRpNit7yHpPvlZ3FlJ3UznWVkjoM/HJIHwaFT+3AEoj311FP82q/9GhcvXuRzn/scH/3oR4njmA9/+MOMx2MAohlilo3JWPl4PK6JVuN6SBc+VOSw+yRnwe5xtMlld59ItlMsp/3edruVnSQJAmMVWy3zuN3eIX6ZZfsqeO2FQxPtbW97G29729sAePLJJ/mVX/kV/s2/+TecO3duR398lmBJkiTAwRrlNd5gUKoqGB8FdmOyFKhluFOspRBJXEa5FwIKbELb2dDp+bcj4NgF61/91V/lb/7mb3jxxRd3XEZxIW1cunSJ1dXVfa3ZU089xeLi4q5jTzzxxC3TUqxxgyFFbClcHwXSy1gUVUw2HaOJlbI7QyQmO3Nm7/eeZDSLPMcF0v/9v7n85S+zrRQ/9H0aRUFDYsADcGyiibvoui733Xcfp06d4rnnnrvuvGeffZZ3vvOd+77Xpz/96VuyqaXGLYKdGBHFqsPiqETLc5P93CveEmsncSQQvf/9LPyzf8Z9ScID7Tb39Pvct77OU+fOHXiZc9vCa9euXXcsz3P+/M//nNXVVR555BHAWLi//uu/5vz58zvnffWrX+Wll17iQx/60LwfV+ONBPlCy83zqi+4fXzWTZqUfb9KhojLZ9+LK2jHgvu1UNlx30n8ivOe+Nu//dv0+33e+973cu+993L58mU+97nP8YMf/ID//t//+44a0O/93u/xhS98gV/6pV/id37nd+j3+/zRH/0R73jHO/jN3/zNE7noGnc5DkqC2JiVDLFJJllJOxliT2wfIbFxFMxNtH/xL/4Ff/qnf8p/+2//jY2NDRYWFnjPe97DZz7zGd73vvftnHf//ffzta99jY997GN8/OMfJ4oiPvjBD/Inf/Indbaxxv6Qro7DwE6G2JLftpsohJU0vvQ52h0kcg9Vh4qk+MViHgNzv/rcuXOcm8MXBXj44Yf58pe/fOSLqvEGhFJw5cruwc55YMdodqOyiK5Kx4ek/GXCemGhatmSzn15LJnQSadJmedG9+QYqMdkatwesBMjYTj/62yLJskP0XAU4kGVDAG4erUaQpV4EMxjqZ+129DpVMQ85kLCmmg1bi9IAmRe2DHWXskQidvEaglp7GSHHePZxw8xc7YfTialUqPGrYDUwuQmJJq+nybRdAJkVtJFSHpCqC1ajdsT8yRGtN4do9lkk6K0JDnyvHIBxUrtl9U86jTBHqiJVuP2gyRGDoIMbMqYzLTQTxTtnkGzYy07DrwJKf6aaDVuP9iJkYPS6rZFkyzjLM1IMBoiGxu7RFKvczNvEGqi1bh9cVBixNYaEUjyY1qqQO7FhZQ2rDStJMLF/TyhbpBdv8qJv2ONGjcL0vkhiKKKKJJ1nHYdJTMZhobEjUa1klcEeU44PoOaaDVudxzk0tkxmriI0vkhoj321hnBrFk2OW7rO54QaqLVuHk4bNJBKZjRzL4LUrCW5IdNsGmL1ulU12HHZraoT56bzv9+3xSt91ovdUjURKtx8zCPS6bU9Yvk90uKSLeH7LC2CWZLFmxuVksHbVVjic9kcXyamj1pvR6srp6YK1kTrcbNwzyF4llF4v2SIhKnTXaa7VqxK/d23CYtVxKjRVFFYvm50TC9kCsrZpvMxsbxfm9qotW4lZjlkh3WTbOtnx2DCXkk9T9LpmBW29UsodUTQE20GrcO9pdYCDZL5PSgfkNJ289Ky+8hjnrd504tuCBJzG2ygdQ5ZpxWE63GrYcdf9muoyQ5rl49uHAt4zGzsLJy/TFpzZrWcyyKaq/1RFDKyTKzrFCk7I6Ammg1bm9ML8fYCzIeY6MoYGtrdqredhltN1HiwUYDlpfx2m38ZhMvCPA9D2d9/Ui/Rk20GncG9kuIiPCq6DjaaX0Z/Jy1q3raotlT15LuL0vKyXGtlFkTfJTLP9KratQ4SdhKxLNioXm0HyXhYasb21PT9k3S+llWtWClqbkNh8ZlDEP48Y8p223KwQCCgNJxKPt9/MXFerVujZsPpRRaa/I8RxUFSmtUWVbS2dNxkECO28vhp/dV2wsM93MdZy0zXFnZPUktN1tdS9L8thyC6xod/8VFnMVF3CAgiCJi36fdaLB65gzeRGZxXtREq3EsKKX48ZUrjJVi/epV1vt9ep0OqdbkEwKW0wOaUMVDtmqVnWIH89iO0fbTfrSt4qzYbLrlaq/0vdTbJiQMowhvPKYRRTR8nyiK8MPQTAIcAjXRahwLWmvGSnG1KNh0XcaOw8hxKADlOGZJhJxsf8FtTPcgzsJhO/ltuYLp950m215wXULPww8CmlFE6Dj4R5QGr4lW49jQWqN9n2htDb/dxpuI5Di2YOl+VmTWRs/D4jBakHLeLLLZtbsswy0K/KKANEVpTZmmRoKuXhZf41bBn7iC4zynUIpi8mUsp9cu2Zs4RUNRlsbbMZr0H0qjr72CaRryGfNam1k1NPva0hTGY7wkwUtTAschBKI0pZkkFIMBflnOnRSpiVbjZFGWlIDjeTi2UvD0WiRbsUrup+fINjag2zWd9Ftb88dFswrU09jLotlxYhAQNBr4ShHEMXFZEhcFS0tLFGnKUhjidbtzXVJNtBo3BM5+MdD0c7POE9dsaclkBk+dOngRxn4F6qNAKbyyJJi0eGlxHbOMyPN2ZPDnQU20GjcX0/LbcmxWHU008u2u+5sF18X3PKIoIlKKRhDQKgo6ccxKpwNlibu5Offb1USrcSwopSiKgsJ1yYFSa3ObNTBpF5BFB18eSxeHxEdyg6q4bOuBTOMGyA84E1fWdV0c18X1PFzHwXUcykNqPtZEq3FkSA3t/OYmG55H6nlspynjLCNzXVPIhopwtmWyd4/ZK5fADGn2epVMQZKYYwe5jvPEZoK9kiGCyR+AMknI05RIa5PgyTKKLKNMEoqiwJtTybgmWo0jQ2tNBngLCwRhSOn7BFGEE0VGAntaPAeuL0rLsepNzf3yctVWlSRw+rTp2piF/WIzu4/RrrFN9zpKb6NY2F4P58oV8qLAG48powhVlmS9HiPPwx2PaWQZ5Wg0179VTbQax4br+/i+j/J942JNeg2vc+bmde9kOloykNPLKA4DO9tpP57u3re7UybPt9ttzpw+TSfLaIYhraJgOQh4+E1vgtGI5TxnMGcmtCZajRNHWZaoPDcFXnNAnqishp0QsWUHJDaThYFyvliaaRxFg3G/zhA55nk0Gg2WFxZo5TmtICAqCsLxmKjRwNGayPMYz7k3rSZajbkhzcOCPM93GokL10UxSYYohbIziXJvk0bGVyQBohRcvgzNpqmb2cgyo4a1V4y2slK5qCco7+1P0vplnqPLkjLP8ZmULg77Xid2VTXuakjiI7OO5XnOhc1NrijFIIrIXJf+eEzSbFI4jqk72Vr3kvAQVzAMq8dgXMPlZROL2aI7aTo7RrNjs+kWrHks3QGkDHyf2PNolSXtIKDhurTi2JBO/lDMiZpoNeZCnucM8xxvedm0WgFunuMmCW6emwSI5+EGgekImfQDltNWzLZgosshcm9JUrmU9vrbvbKDBxW998N+JJPRndGIcjik1BqVpqAUejAg39rCHY0I2m3cOT+3JlqNA6GU4rWLF3l1Y4OgKAgmRMuLgstbW6znOYMoInccRuMxaRiaaeRu18RVGxvGem1vGzKNx8ZK9XrmmNTUej1joaR+BoZAWWZcyllSBbZbasPOME4TdlbWccZzAdDwPFquS8vzaLoui1HEqXYb13U5vbTE1pz1tJpoNQ5Enue8trHBxaIgyDK8yZdaFwVXtGazLBkpRQEMw5A0jlGOg1peNqRpNo3bJ+tuta7cRhm+LEuz0rbZvL7bPwyNyrC4jr5vzr96dddS912T0mlqSD3pwifLdk9b283KMmVti/KUJfraNYpGg6IoyF0XrTUeUHa76OGQ0nWZNw9aE63GgdBaM85zXh+PcZtN3Dyn1JpCa66lKb0sYzxxE/tZxkgpsihCwe5p6W7XfMnT1HzJu11zu3bNkGcwMIkQsWhCtDw3JJPpZ88zCRBJy0u8F4bVeSKEKo/tUoHsUvN985yUDeT4RFFrcXmZ++65h1NlyYLvs1iWnHUcHjhzBr29zU+cOsXo6tW5/g1rotWYC4VSFJ5H+957GQ+HFBjXcXs8ZttxGAC51nRdlwTIs8xobWxvG2vhusaFlOWBQrg0NWQTnQ+BPV0tz9nbOg9qHN4vKTItoDqrpuZ5+GFI1GjglyWh79MAIiAIAnQQEATB3I3FNdFqzA0lLqPv47XblEqhJwVbDTi+j3P1KmWrhR6NqqbgZtNYitHILI7QurIoWhu3sNfbXWObNSFtL7A4Cg6arJ5KkBwljb8XaqLVmAtaa7r9PqrbZZQkjEYjMqV45eJFRo7D2HUplWLr0iVGcVxZhiwzFsvzTBJkMKgImKaGfL5fuZUSf4mmCBhywm6VK7i+rWq6lcpeaGG3gu3X4zh53sHUBNM0JdeabNL5kgNFUXDYMnlNtBpzoSxLtOOYhIXjoHyfMgxRgwFFUZDmOdnmJjlUsVKnUyVDwNw3GtXSCdc18m6NhiGhKFItLJjnVlaMpWu1Zu8ssy2OrZtvt21JwkWWYFS/UPV4uoSgNV6Woa5cIQtDxkoR+z5lp2OSPL5PIwhMq9mcqIlWY26UWjMYDBgkCetlSRbHDJKEpCgYZplRvlpagrU1WFyEM2dMBm9pyXzR+31DInEdh0NjrVZXTSwnbl2rZSydPYt2yALxns3EszDtUroujSDg9NISP3X6NKdclzNBwAOnTkGvx0+cOkUURfXgZ40bgxJQgDOxSsrzKKKIIs/JAdVsGgvWapmbtExJyr4ozGPJ7pWlsWTyOnENRWdxlsWweyTteti0yzgtmCpupBDWJta0G+k4hEGA12gQRRGx5xGHIVEUHToJIqiJVuPQcCcWZqwUqdaMsowc0JJ+lx3RYVgtCBTXzdYJsbvy7eZcSeHPGqmZ1n2c7r63XUb7sf358tp9EETRoVzDg1ATrcbckJaqoizJ05RBnpNlGXmeo+2uDWvUZM8U+qyfbXHVk8JeWUa7Y2T6XN8niGPzB+WEUBOtxlzQWjMcjciHQ7pZxjWt2UpTxo5DLskN2G1x9iPMtGbI9LKJWefth+k4zHYppW/SWlyxi9TTLuREuuAkUROtxlzIsoxRnpOMRvS0Zug4JI5DEQRo202zN3BKTcxezC5x1az4yu43nD5mE0lqavb7Ty+wsPdT2zur09S8Jk2v73GUz0wSAqUOHYfth5poNQ5ElmX84LXXuNjvMz51irHv0/N9xkAhGUFp8HXdaiTGjrPsm53eh92iO/LctBDPrE796Ubg6QZisWZFUZ07HcvJuRLnOQ5xHHPmzW8mbjROzLLVRKuxJ5RS5HlOr9ejl6aoKEK326SjEXlZUkiiQ9y1abdx1k2eE0x3fuwFm1BipWxVLVtdy17HZCdKpj/PPiYLN1yXOAhYiGNi3yfPMtKypHAcVFFcL88wJ2qi1ZgJpRSvXrzIa+vrXNve5sL2NoNGg2Rjg1FRkC4soK2YZifLB9fPn4m1E0KI+zedkreFcuxbnpuOEnEXxeJtblbvsbVlam9bW+bcjQ1zL1MCkx1nDIfmfba3zTHPq9L+4/EOSfXVq2R5zqjRIHEcypUVdBAQT+TnDouaaDVmQmtNojV6aYlocRHvn/6JEkijiAxQsl1T0vjiCkpXiMh+izWxxXZgdybSzkAKKaX5WDQfZSg0m8x4+34lSVeWhmBZZgg2GpmWriwz17KxUdXS7NYu2DnmlCVenuNpzWKzyb0rK/zU6dO8vd3mTWHI2+67j0ajgeu6R4rdaqLV2Be6LNns9+llGf2ioDccktnJCfnSTte25lnFZD8v5BLXT44JkaGyXvbj6b5GSZB0Okb+QNquZNRGamqt1s58nBtFNMoSP47x4phTZ85wem2NdhzTbDaJg4BGo0FwDKXkmmg19oRWiisbG5xPEkZlSeo4FDLPJckKSSrY5JIvvJ2MEJUr23WcJoh8kafnzBYWjJWy3dClpWrYc3nZHJMeSdEdsTVGkqRyb13XvN9wCFrjDgYEZUkzCHCbTe49dYpTy8usNpuHbh7eCzXRauwJXZYkWtMvCsZFQTYeo8XawGytRBmJsbtAxFpN9x/KTbRDxDX0/Wr4U5qNbW2RsjTv3+uZ42DcwywzLqRNWoEQVNy+SUuYk2V4kxVMbpriJwnxRHPfmyUAe0TURKuxP7Q2mzt9H+15ZrezUrtbmew0PVTSAdOzZXba3a5p2VbP7k2UMRrHMQ3JUguTfkVJgEhsJtIEnc7uTChU1yw/T2bhmmlK7LqsNJu0Wy2i++/nzW99q1mfe4KoiVZjTyilSJKE9atX2bp2jcz3K4ti6zYKhIiSehdS2BqOYoFsRSx5LESTY/aX3baGdgFcPkOILfJ000sLk+S6MRknTfGKgkApGlFEJwyJV1YIZaznBFETrcZMZFnG65cu8U8//jEvrq9zbXPTJBfsetZ0mttxjDVJEvNYLJAIoorFkS59u1tDXFLZGmNLHQSBcSHl9XKuqGaJRZMSQb9v4jP7D0GamuuNYwA8z8NNU7w8J84yFs+epdNu01lext9L4/8YqIlW4zoopXjptdd4+coVrmUZozBELyyYGTMhUhRdv80TjEu2sFCJ48jITFlWUgZSuxqPzfkyRiPJijiuYjNbRUtuSWJm2IRYa2vmM9/61soatttV3KiUIV8Q4HQ6BGVJ3GjgDwbcXxT8hNb85EMPEcUxut83CsUnjJpoNXYgkt+9Xo9vPP88L1y7xoWyZFAU5DapJC7bK1EgSQchjlgI2x0UiydT1bb0XLtd1eSyzPzcaFRJEiGzJFGWl81G0DNnKoWtVqtyRSfuqN9q4S8vE03mzXzfJ8hzwqIgXljA833S0YgySVBC/BPC3NnL5557jo9+9KM88sgjtNttHnjgAc6dO8dLL72067zf+I3fwJ1sFLEyvvggAAAgAElEQVRvb3/720/somucPETy++XLl/n688/zzR/9iFdGI64Mh2wnCZmInE6rUd0ISNJCZtXsWxQZixdFhojNpiHV4qJ5rV0ykHgSTEwmJQXRfEwSdJah0pSi36cYDCgGA7LBAD0c4sPcSsQH/krznviHf/iHfPOb3+RDH/oQ73jHO7h06RKf+cxnePTRR/nWt77FI488snNuFEX86Z/+6a7XL8o/RI3bEiL5rdttkkaDbqdDTylGvk/mOKbmJF92iaOmZ7lOAtPJDjtZYhe0k6SK78ZjQzYZOHUcQ0axvJMamhcEeGGIW5bGmgUBTceh47qsdjp4vk+SpnR8n1NhyOmVFdQJ7cSem2i/+7u/y7vf/e4d3XWAc+fO8TM/8zN86lOf4i/+4i92jgdBwK//+q8f++Jq3BwopTh/5QqvX7uGGgz4/o9+xOVul03PY7i4SC4dFXYLFZz8gKbU1MZjc5vo3+8kQxynUhZ2HNNmZY/NjMdVNnTW+MukpudMrJvjujiA73m4vo/r+3iehyf3nsdJ2e25ifYLv/AL1x17y1vewsMPP8yLL76463hZluiJkMvCwsLxr7LGDUWSJGwMBlxMEjLglYkoarcoSIOAQjQ8phMfe00vHwXSbmW7iRLjiYqV71d1Njku2iQiuCoWUdzGSfOyI1IG2qyVKgFnVoniBuFYHSZlWXLlyhXW1tZ2HR+NRiwsLLC0tMTq6iof/ehHGQ6Hx7rQGjcGWZbx7D/+I8+99BL/eOECP9ja4nK/z9Z4TDJRtrohLuI0JCabjsts/ZEwrDKZnY6Jy9bWqjit3a4yo42GucUxdDr4jQa+7+N6Hr7nEUySITeLaMdKq3zuc5/j4sWL/MEf/MHOsXvvvZd/9+/+HY8++ihaa770pS/xX//rf+V73/sef//3f3+iU6s1jgelFOPxmK00pRvHDMIQp92m6zikYUjhOJQyZjKPPMFxMP2+03IG9nCnFL7zfHczs7yP3a0ycRF33MaJFXbk8U3CkYn24osv8pGPfIRf/MVf5MMf/vDO8U984hO7zvu1X/s1HnroIX7/93+fL37xi5w7d+7oV1vjxJBlGa9dusT2aMSF9XWuOg6jpSWcyTYY7bpm2Z5Ixs1yEw9S/D0M9hsOFUwXyIV0w2HldkrRe1KYxnV3drSJy1gqRek46EnsppRCTbpXVFGY22TQ86RwJKJdvnyZD3zgAywvL/PFL37xwL8MTz31FP/hP/wHvvrVr+5LtKeeeuq67OQTTzzBE088cZTLrLEHlFK8fukSP9zcJA8CtlyXITB2XcbdLuMkoVAKLZ0Y5kVVq5MkGGaJlB4W07oh9nvbmcdpzUZJgkAVj41G5mfZdS2NyWFolgpKbU8po3MyGKCyzEySb22hfR+1vU2WpmSeh/I8QtgZ9Pz85z/P5z//+V2X3+125/o1D020brfLY489Rq/X4+tf/zr33HPPga9pNBqsrKywubm573mf/vSnefTRRw97STUOCa01gywjjyLKVosyjtFKUfg+/SRh1OlQAOVoZGIe1zX7paXbYzze3Ut4lKSInC8ZRBHLGY0MMYZD8xmizS/T0KNR9fkyZFqW1cKMZtMQrdk055Tlzqopb7JA0NOa0PcJtableSyUJacnm0zHRcFClnHa83jz6iqO41BMvrez/uh/5zvf4V3veteBv+6hiJYkCY8//jgvv/wyf/u3f8tP//RPz/W6fr/P+vo6p06dOszH1bhBGI/HfPeFFzjveWwnCT+6coVrjsP28jJbScJ2mqKlDiXFY/s2SxfksHCcahJbsov2TSa0JRliJ0pktuz06cq1lTrawoLpgQyCnSZjr9HAiWOz8neS0nd8f+dnD/Cm0vuB7++Usk7CgZybaEopzp07x7e//W3+5//8n7znPe+57pw0TcmyjE6ns+v4f/pP/wmA97///ce83BrHRZZlvPTqq7za7dK77z6ulCWbKytsFAWbvs/Q90mhIphkHGepTdlu3UFu5KyirwyOTisW2zU7udmqw2LJGo3dBWxxHWWkZuJeKsAZjVBa43oeRZ6jm010mqLznFRr0vEY3/fJkoQsyygaDfI8P7GEyaEK1s888wyPP/446+vrPP3007uef/LJJ7l06RI/+7M/y6//+q/ztre9DYCvfOUrfOlLX+Kxxx7jn//zf34iF13jaJDY7NVuly4wCgKSKKJwHLLhkKzfp5BkgtbGRZOyjPQQyvzXZC/aTje93VdoPux6uTe7cCyw27okDpP1Tp5nSON5pksfzM+yFVT0QwaDqu+x1TKvj+OdCQEnCHD6fdwoMpZLKdw4Rg+H5OMx2eTfwvd9kvV1Qq0pV1fJJxbOjtOOirmJ9r3vfQ/HcXjmmWd45plndj3nOA5PPvkky8vLPP744/zN3/wN/+N//A+UUrz1rW/lk5/8JP/23/7bY11ojeMjz3O6SUIeBOgwpAwCykniIVeK1HUpTp2qtBXj2LhnYNbfttvVNhhZKNhuVwpTdnHZ3gQjO89E8sDGtDR4o1H1NIp7KTcpM/g+3Htv1cHfaMDZs+aPwuJiNYpTFGbhe7tN1OsRxDG+59FIElY7Hfxej9PdLj/purzzp34KPwgYtduc0npHjMdc4tEEeWzMTbS/+7u/O/CcxcVF/vzP//xYF1TjxkApxWsXL/K9H/6QVwcDXn79dRKgB/TznO5gYJYJwu6RFWm5mxYe3UtLH/bXb5QsJlSjMkrtLGjf1WrluubnRqOKy/Lc/AFYWzNEE9EdGcVptXauzy8KPMfBiSKcJMENAlNTm0jGhVFEGEVErkscx/hBgI5jYq2PLcYzjXpM5g0CrTXDPCdrt3EXF3HGY8IHHyQoCtzh0MgVKFVl8WDvtqujIo6rbCUY4jQaJubKc/N4oky1M6UtHR7SFeI41fya7W6KNJ20aGFarBzPw1UKpyjw0hTX94m0JnZdWo0Grgyl3mDURHuDIMsyzl+5wpVul41Wi2Gem02dZUlWlqZ5ViyTxE22lToJzHqvvTT3Zf5N4j5bT39SF9tZz9vrVZ39YQhlie95xmI1GkSOkfluhiFeELAYRSy0WsRFYSzcCXTnH4SaaG8AjMdjXnzlFV6+coUfjkZ0i4Ir3S7FcEgCjNKU1P6yC/bSBjksJAEyK6Ewq1xgd+DbLVYS8y0vV5PbIuS6vLwTMzqOg5NluJMdZ87EQruT1D6OYx7fCS1YNe4MZFnGt59/nu9fusQPNje5rDXDZpOeUmjHIXccUscx+6lPGtNx2XTGUbKYonZVFCaxUhQms6iUyTamqUnGSOKj1TLuo2hMSiypNfg+LhhLVZam3WriXuo8x5lYSw9qotU4ORRFQU9rBq0W2eoqRZaRdzqoKDJFXPmyjccVEcSSHKUYLfr4ktq3m5JFeFUgyRWRLLC79Vutar3S8nKlF7m2Bm96k8l2tlpVu5UFpyxxMBbMdxx81yXwfaIgwPc8Ys+j2Wyi+31OXh1kNmqivQFQliVEEcHqKmGaEnU6+HFM2WgYzfmiqDJ6QrTD9i7aNTB7gHP3hewmbp7D+rohn3RzDIdVk7D9PlLbk/eRWp7dBynKWhMhVicMZ25/cVwX13G48ZFZhZpodzmyLGM0GpEoReG6KK3RgJp0redAPmvh37wQV3A4NFlFSdNrXfUrCqYtWlFUheheb3ftzHHMxpfh0PwREOWr1dVKrkBu4nqKCJDj4HgejudR5jlaKdM87Dh4Uue7yaiJdhdjPB7zteee4++//30uNhpsxjFbvk+qNcM0pZh8+XLp5rCTH/MSznXNoKWoVom0m2QOpze3TBNtNKrWMsmaJdFy3NqqGoSDAFZWdouqwm4h1bI0XR9hiOc4+Frj5jm+UnhFged5+K5L5Dioie7+zYrTaqLdpVBK8cqPf8z/ffVVXhkM2Gq1GPk+fcch9zxyTLOschxKe2hy3i+ejLIISePY3JaXq0786XmuaaJJrcwecXEmIqy2HPhoZIgs8ZjnVSpY0vfYauGK3kcc4+c5HuCXJX5ZEpUlseMQKUXT92mVJaXrkspg6A1GTbS7FDv7zRYW8IHmffehwpAkTSkXFnCiCDcM0UxiOLtheLpp2LxhVc9KEhNbSSOvCOlsb1cDmHaTscDeQgO7s4sy9iLXUpbGksVxNdApTcRS3LYbjn0fJwxxfR9/onQlAjuhY3Qc4yCgFQQsxzFrnQ6qLBnEMc50LHkDUBPtbof8lQ8CFKAnSYASQ0ad53D1atWoG0VV0VoSFK5bNe7amb7tbaNEZevaT1LsMy2jbdGcichqllUuprR2tVoVoe0eyHa7Ip9o7CfJrsblMsvQRWHu0xSVJGjHoZw0R0eNxs5IDEVx7GbheVET7S6GUopSKXRZossSZXd7OI7ZQb2+bmpUsqJIFkVInCaTzK2WeVNph5L5rygyVm1hoWqh2kv2wK6jlaVxM6GK6WTAU95X3kN6GG1hVbjO+jpKmY4QzyN2HDqTPzAd36fVaLDaaLDSbqOzjDxJ0EqZaeokYTweE0xkDG5EsqQm2l0IpRS9Xo9XXnuNy5ubdJUiGY1IPY8UU1tTttrw8rLJ5hVF1a1fTtbVrq1VOhyixaGUsSxiySQhIp39e0EsoSQ/pKwQx7vdSenQHw4NccXira8bUsZxlWTZ3obRCKfZNIsrggCv2TRaIK6Lm6Yoz6McDFBxTDocUo7HRJ0OuijILl5k3O8zkK2eQGNt7cQtXU20uwySBPl//+Ef+PYPf8gPxmOueR5ZmjIIQxKtKURL3265ksKypMiloVeyfCK/LYmKdrta+NfvV0mJ/cZJ5POEPO12RZhJFhCorKlcT1kabf1+v5KQE71Q18UNQ8K1NSIgDkMaQUBTaxZcl3A0Yi0IWGg2WfA8VpaX0WHI2uT1SVHwwNIS/89b30qz2cR1XYIgOHG1tppodxm01oyKgrTdJjt9mrLfN135YjXKspIGOEq2cTw2lk4Ky51OZXl6PXPOfl9SIVq/b6yRtE5pbUg1GFQJlPHYELnTMc+lqSFas2lIOslU+loTlCXRwgJxs2myilnGQhgShyGrUcRikrAcBJxaW0P3+9wzcVsHZUlrY4Nms0nzBuxFE9REu1vheXhRRFCWeOMxOgxNf590rCtlvtSjUSWzLVlFqLrh7RanOK6GLWUt0sKCiZ9kOPOgTnitK5nvhQVDensjqOjpS01OhkkldorjyrJOrK6rNWGnQ7S2hpNlaNhJ2Tuui+t5RjjV93cSIaIHUidDahwJSikTgxUFeiKQmmtNpjU5oMqSPE3h0iXzpZVExOamuRdLJwv9ZHRG3EO780PO07qajD4IQqqiMMRcWjI/S1uVqGAtLhrlLbFgtsWdnjSYPC7zHDUhmpq0Yvnc3ObhvVAT7S5ClmW8/NprvHLpEhc3N9no9xmlKZnrUmht0tyAThJDqHvvrToz7rnHWJK1tR2ZNra3DRFc15BgaakixtJSFV9JfyEc7ILamcThcHeGL8tMuUBS/pJ8keuR8kCWVe6q1qZmVpZmojrPCYBAKVqtFk1untXaDzXR7hIopfjh+fN88+WX+XGa8uPBgGtpSl9rk2nUmlzarXq9qklX6lm2CpVYKtH7sGfBJEsoVkbiKalvHQSxRtKtL2UDGfS0XcalJZMRlWtwHPNzkhhxnTzHiyK8JMEHfNfFc10CrWk6Dq3JHwjP8265VauJdpdAa80oz9koS0ZLS2RAUZboJCEvS9M8DGjpZZQCMOzedybEky++YPqLKtPMYO5tDZH9L3T2e9pDnyJxMOnC39n6KedNGoY91zXrllyXIAxpRBG+1rTKkjaw1G7jjMcsxDGlqBbfItREu4ugyxLtuoQLC4RFQZAkuBO3zhM3T+pU0gollmpe90rWH8lNehBl4vkgotllBYnRJOsonSdaVzNqsjheFgpKZnM83ukKcWCHwI5dZBeUJUVRmOmFokAXBcUJ6urPg5podxl0WTIYDhnmOYnWZGWJxjQQF7JWdjyusntZVmk22nodEhPZ99LvKHuks8z83OtVGcuDCKuUOb/Xq/adyXtLIVsynkVRqVtJO9YkSymEcsuSMs8pkwQ9HKLHYzMC5DioiXx5URSo4ZACyH2fcjAgA3zfN5qNN8GtrIl2F0ApRZIkpOMxaZYxLgq0Jd9dlqXZnLK9bbKLIhlw9Wq1CEI6PqRwLV9ukX2TTnuJl4QQ8l5Cjnlcx8HAXItMXYtFS1NzXJbDi8a+NC5Pam5ulhlRVN/HUQrX88wE9aSc0dSatuOw1GziuC5LjQb5eMyS63JmaQntedw30dpP45iRzMTdQNREu8OhlOLVixf5wfnz/NPFi/zo6lU2tWZTKbqjEeM8Jy1LCrFYnU6l4nvffeZLn+fGhcuyavZLEhaNhnksOvki/yYxnXTtNxrVXNr+F1w1BXueyXZKYkau8Z57zOetr1dLNjodowcShrhK4bmu2Q4zqf/piVWTtbmu4+D5Ps6kdqZ9H8918SePfd/HDwLz73ITUBPtDofoNV7Rml6nQzIckgQBY6UYAyOtySXTp1S1nUWp3b2EIhfQaFSaH+NxNc0sMdH2djWaAtXw5n5KV7svuHovuD7pYqsSy/tN5s+8IMALAhytCeIYPYkvI983ozBACJRpit9o3PJMo42aaHc4lFJkWUaqFE6ngzcY4E3Iol3XuJBCAvlSi2z26qqxaCLXNh6bbo0gMOeKJZHhy+VlM+VsKxVLciWOjcu3H9EkFvM8Y72GwyohA9VzMgcnuiCTuNF1XdyyxAlD/GbTdIAEAUEUETUaNJtNGmVJ5Di0mk0cuGniOwehJtodCqUUeZ7z8muv8eJrr/H85ctstVpc2NykX5Zsj8eMlDJ6ILB744u9Gknam+xjdu1Muj0kHhP3rrqQKo6bZye0nC+LLGRnnmQzJdkirutEPdkNQ9NWNUnnC2mdsjRyclaXiPyspFvE96usY56j8nxHvuFmZR9rot1hyLKMNE354fnzbA8G/N8XX+T7Gxv8IE3pLyywlSQkUcSoKBjb2cJer8ouSl+jZBglIQG7lYOFmNKZL1Jw0zogjcburv/9IC7s9CS3rXolRE+Snc4QR2QN5G2yDD0aQb9P2e+jHQfluqiyRCWJIZbWlKMReZahul0UkAF6MDDZWN9HTTpJbnT3SE20OwSSWfzWP/wD10Yjnn3hBfphyMuvvcZ6FLHtumTAOAwZex6FHTPJnmdJx0vb1XBoHpdlNa2cJBUJpKlYspBZVq1REkjWUdqk9oOQSqS9hfRyTEoGYvXEgsbx7uL4ZALBzbId9WF3IsbjA03XZbXTYW1picLzWGk2ybOMZdfl7OoqOgh48+oqvu+T5zk5nPhYzDRqot3mEBfxtYsXWe/1+ObLLzNeXeVV30e/6U30soyk1TIzZisrFIMBRatVNf9mWWUJxLWTTg4hhnRkiPWzLU5RVOSzNUSqC9xdezsIQh6p59kFdGnxkgZladMKApNNVAo3z3EmReoyy3CKgqAoCJOEIAgMyeKYFYkt7WuydEzKyWPHcW44yaAm2m0NpRQ/vnKFXpLw3ZdfZhAE/HDiTnUbDVLfp++6DJRiXJZkSpHaVssuOEsxeWHBJDSKomoYhmoIc5JG33HrFher8Zc4rpIhAonv5oV8nj0AKvW0MKwk50ajnaJ2FMdEYKS+h0PcoqBRFOjhEG88pjka0QkCThUFS0HAPWGI7nbJi4Ki1yMZDMjX1xkD4zzHGY1ItUZP4s+TWDR4EGqi3cbQWpMBZbuN6nTwVlbwu12ctTW8zU1oNnEWFnCkW6LZNIpO9mCnWAwp+MrEsriVdgOxnU63Ct47ozL28wLPM9PPB82h2SUGqDZ3Li9X2csoqrKXkwK41+ngNRpmpmxSnPbKEt/3UZ5n4iulaKYpK0HAahSxEkV4nmdGghyHZdcldxxWtOYez6O1ssKbzpzZsWQnsWjwINREu42hlCJNEi6Px1zudumlKZe2tkgvXeLS5iZFHNMbDhkpReY4pFm2s8ET2C3tJil4KTyLuybp/1kQgonFmeU62ufuh2mxn2kiw+42L9/HmQxzNhYWCLTGKwoc3yfIc1rNJjkQDgasNJvc02rxkysrLMQxa0tLeJ5HURRknseZdpsEOF2WPHTvvUQTIt5M1ES7TSFu4+sbG1zIMraKgq7jkEQRSRShWi3GrkvquuSeR6EUpaTehWj2YCTsltG2ZQymYZ8nxJrORB4F9uttcSAhvmiONBq4YYifJASuS+A4BGG4MyHtT5ZU5FlGEMcsxDGnl5d586lTNOJ4F4mkCyTwfTOndgP0QOZBTbTbFOI2egsLBEVBpDVhq0XQaqFbLbw4xosi/HYbV5ZDiEWwb9LlAbsTHvZz9nF7ejoIqgSF6C7Kz0f7pXZ3kMj7ysZPKwnjgmm3CkP8KCJoNHY6992JurC0Wrmuu+P+3QoSzYOaaLcxlFKUZYlSCqU1RZ6b+8nxctpiSbxlx17iIgqJ+v1KDFW0QiQ7KWl3x6lmwaQzQyS7pfP/KLA1QZKkmhywW8CGw52EiBOGUBSmM18SPJ6H9v3qd79DUBPtNoTUzM5fucLrec4rvR6v9/usex5Xt7Yoooju1haJ55GNx4zD0HTni2USqzM9lyXd9aJZL1ZKdBTlJi7jtDaHbfGOCkmI2DfpQJHrWloyVgxwy8niCvMPYxIhQDka3fRlgsdBTbTbDBKbbY9G/Hh7m41Gg23HYRzHjH2fPE1JJDZzHAqo9nxNx2fT2o0CcdVketmW1xZZcBl7kfhJCsoyLnMY2LGZWE5pKpbnxYKWJUEYEjUaRkJuIhkXTTKrHhD5Pq0oQgcBWU20GkfBTmy2vEywtETUbBL6PmGeEzoOQZaRRxF+s0lWllXTrEhxS9wlS9YF0+TwvKphWGTjpIm406mKxjI2k6aVzNtR4yAhr1LVdLbcWw3HzkSCQWUZKs+Nhv5kYLMEXM+jmPwx8LLM7Ky+zQlXE+02hT/JrrmijeG6eFbG0PE8nCDAFXnsSfyy08NoE2svLQ+piUkcZ7tvjlM1GMu9uKTHIZoUqKcTL55nJAk8j0ZREDcaZg2u67IoFqwoiBzHHJtIHmRZRjweE7o3d/n7YVET7TaG1hqtFHlRoLKMfLLBkonuhc7z3Z3rsDtbOCtNfxBs8knMJhnC43RP2FnN6dvkuOP7OEDg+zR8Hy/LCIqCWCkak3NbUUTT91luNAAYD4eEvk8zCMjzfKe1CkAVxU6nfnHYDpYTRk202xCSDLm2ucnVOObyxgbXioJeENAbDklaLdIsIwtD9LT1qt7k+rT9NOzYye7csJe9izCOxHz9/tF+KXl/aUweDo2G44ULO72MnufB5iZeu40bx7iDAYHn4TebRHEM4zFhHFMUBemEaOnWFs6VK6TDIcMkwZ+ytj5Q5Dm61yNcWbllGo810W4zKKW4tL7OMAy5MhjQDQJ6ZUlPKYa+zyBNybKMPMvIRcBm2hWzC9T7QcR5ZBBTtmwKsSSlL72Sx43PbNdRLOZE1sDLc3zPw2u1aCwv0w5DAs+j7TicbrVYarchDGk3m5RJwsqkTWuYprQWFvjZ++/np9785uvqaI7joLUmdZxdbVc3GzXRbjNobaS7vcVF/HabYHERL0lwXRe/08EfDinabSMpYMO2RqJIZReqr/8gcy+T1HaniDyebpGSeOoosAvlomzs+2YlruMQAHEc42CWBUZhaFqtXJdOq8Viu03JRKsxDDnV6QAYohUFbz57lkhm4q776PKWdYQIaqLdpvB8f6fTYUcodNKbKJ0QO1JtYB6LDICQTgrW+0FanyT7B9eTTmK2aXIfBmLR0tQsPlxfN1tpms0dnZCy0aBcXzfycEFAkCRmmLPfp2i3zY6zTodwUrAutUZtbaG3tyk2N0n3WZF7Mzr090NNtDsVoq8hk892RlDIsZ8LaVs5WY00HFYZRrE43mS39H33Ha5QPW1FxZqJdNwk5mJhAT+OaXgezSjC6XZZabe5/9QpojSlqRQPLi5yZnER3etxZnmZIAxN03Ce08syFpTiwbW1fdcu3YwO/f1QE+1OxyzlKbsbfnr4cRYkSZEkpn4me6FFC0RcyOPAli6AncWGjZUVGr7PYhDQbjbJNzdZbbVoNxroJCF0XXxRvwoC81gI4zj4QWCahoOAYJ5tNrcINdFuc+iJyIwuip0MYykTwhKD2S1SEqNJAfugv+LS+SFuqGg3iryA6IEcxe0Sd3FW3WxCOL80m2BCoOG6uFrT0pq2Uqg8J5q4jjlQ9npG88NK098speHjoibabYyiKOj2evSThCTPSfKcQikKrVF2u9WsGtl+VsieDZvuX5TX2XHaYbT5YbZ8gJANqs8sCtwkwfN9ojCkMYkFO45Dx/NQrkvH8zjb6bC6tIRynB2FYcHNUho+Lmqi3aZQStEdDBhoTao1I6UM2SbpfWXXyWzNj+lRGRG1sSGpdSGiLS8w3R9pJ1YOi1lxmvXefhQRLywQex7Lp07RimP8RoOlTofTS0vkSrHk+5xZXcXzPDJLYVhws5SGj4uaaLcpSq1RYBR6RZAminAkOygWwnYf7SzkfhArJWUAUbuaVg3euZhjdOxP/yGQQvjEopXDIe5kTa5SyrjKk04OPcmkluVkG4ylxyi42VthjoqaaLc5HM8ze5hdd2fYcabeB8x2F2cdk75Gu1ULdndv2PHevNir+8R2VS1ZO3c8xuv1cDC72zzXRV29Sh6GJGlK2e1SLixQuC66LMm3tnb0GAU3S5fxuKiJdifD7mU87OuiyLiVoiMigj5SJpDRGFlIcRRMx2rSzjW5hqjdpn3qFFFZ0glD2r5P0Wrx4MoKD9xzDyqOuW9tjUYUkRcFWZ5zdmFhV4ymigLNjddlPC5qor1RYfc4CuwOEImDBoOT+xylzPsNBjAa4SlFuL1NA4i1phkEpP0+fr8P29uU3S6F65JOJGKfhOkAACAASURBVL11r4dyXSPdIJcMxJ5XW7QatwiziCQQSXCREoii3Y3EIocwiZ1OBBJPWk3KYVHQAhZ9n7NxzFIYkjabPLS4SNP3ycqS02VJAOD7hFMycYJbXYyeBzXR7lbM6gqRcRd7La69Hmk6pQ+VZTsuJOabzLu5nkfbdTnb6dD2fVajiNU4Rq+s8JY3vYkoikg9j584dWqnEH0nEGov1ES7QyBiNNLjB+w9/rIXbHEc6dyXCQB72YUUq2HvTOTcFz41hjOBDyyEIfe0WoRac9/SEqsLC2T9vtncGQToSbfH7dzxMS9qot0JKEtTqC4KikkKfF/XcPrYLKLMGsKcfu4kOi720I10PA8XiByH5WaTe9bWcIHiDrVYB6Em2h2AUrRBpl28eSDlgCCoBEqbzaqBWCaPp7/gduf+ScEas1FlyUgpxkXBUhSZNqqTigdvQ8z9P/bcc8/x0Y9+lEceeYR2u80DDzzAuXPneOmll64794UXXuD9738/nU6H1dVV/vW//tesr6+f6IW/EbHLNsxrbVwXWi1DMhHcsaW+7Tqa/d5HKRscBOv9lNaMBwO2zp8nOW5m8w7A3BbtD//wD/nmN7/Jhz70Id7xjndw6dIlPvOZz/Doo4/yrW99i0ceeQSA8+fP8973vpfl5WU++clP0u/3+eM//mOef/55nn322bvC376tMA8ZbAtodb7viVnu5AnD8zzarRZnz5zh7OoqQNX9kee3tdDOUTA30X73d3+Xd7/73buKhefOneNnfuZn+NSnPsVf/MVfAPCJT3yC8XjMd7/7Xe6//34Afv7nf55f/uVf5s/+7M/4rd/6rRP+FWrsCxkQlV3VQVAtaxddR8lCSn9kklRWT0RXjwupo00SMcVgQD9JWL9wgeZoxNrknHxri/TaNbxm85YPa54k5ibaL/zCL1x37C1veQsPP/wwL7744s6xv/qrv+KDH/zgDskA3ve+9/HQQw/xl3/5lzXRbjZEl+Py5WoK206ETGcu7WFPkZw7btZR4i+ldjUz6zynHI/JHIdifd0kRJaW+KkzZ2g0Gnd0On8ax/pzUZYlV65cYW1tDYALFy5w7do1fu7nfu66c9/97nfz3e9+9zgfV+MocF2zPHB52dy32yZmazSub7sSt36aWLMk4ua9yevl3iJ54Tg4rRZLa2usLCzwppUV3nTPPTQajVuu8XHSOFbW8XOf+xwXL17kD/7gDwC4dOkSAGfPnr3u3LNnz7K5uUme53WcdrMgHf79vnERhUzTWpByblkaF1OWTkhB+6SgtdEJ2d6Gfp9sMGCwvk43SVAToZ44CO4ad9HGkf8VX3zxRT7ykY/wi7/4i3z4wx8GYDwRR5mlRtQQwcvxuCbaSWC/OppAMo5iwZrNahat0diddfR9Y/XabUOIdrtyHU8K0oI1Wf7uRxHNhQVaYcjpToefOHXqliwJvBk4EtEuX77MBz7wAZaXl/niF7+4kyGK4xiANE2ve00yWWog58zCU089xeLi4q5jTzzxBE888cRRLvONDbFmSWISGtvb1SYZkTqwhzqlv1GEeWSq+iQtmr0TrSwZZxmX+33W4pjNXu+2j8k+//nP8/nPf37XsW63O9drD/2v2O12eeyxx+j1enz961/nnnvu2XlOXEZxIW1cunSJ1dXVfa3Zpz/9aR599NHDXlKNWZhszqQoqp1j4mmIrqIMis6SNLgJ16d8n7HvMyhLEul4uY0x64/+d77zHd71rncd+NpDES1JEh5//HFefvll/vZv/5af/umf3vX8fffdx6lTp3juueeue+2zzz7LO9/5zsN8XI3jwHXNEvd22+go2okPe7GFXbyeVbi+EZh8phsEuFFkxIduzCfdNpg76lRKce7cOb797W/zhS98gfe85z0zz/vVX/1V/vqv/5rz58/vHPvqV7/KSy+9xIc+9KHjX3GN+eF5hmyrq7uXws9KhMDsLOFJYqrBWE0Eh0bjMeo2t2bHxaEK1s888wyPP/446+vrPP3007uef/LJJwH4vd/7Pb7whS/wS7/0S/zO7/wO/X6fP/qjP+Id73gHv/mbv3myV19jNiQ+296GpaVq6aB06AvsL75086fpbvHUkySAuKiTDKcGSt+nSNM7blXuYTE30b73ve/hOA7PPPMMzzzzzK7nHMfZIdr999/P1772NT72sY/x8Y9/nCiK+OAHP8if/Mmf1NnGmwXP251plFhsVn1LGo5lf7S9B9v3D6cZchBElHVC9kxrhsMhw/GYct61Unco5iba3/3d3839pg8//DBf/vKXj3RBNY4JEUPd3jbkWVgwdbTxuJIPl4XvkgBptysVrGbTHOt0zLl7LI44EkRtayLI6kQROopQ4/Fd3bkP9ZjM3QWxRo5TyXlL25XEaNMWTVYyieKVrQkprz1JWJ+vxXK+AVAT7W6C6xrrtLICZ88a6/T2txvibWxUVm15uZpLA7N4YjQyrqPU1fK8kqU7SWxsmAWEx53cvsNQE+1ug1gribHky2zLyAnCsFouGMeGVIuLxpoJGWcpHR/n2rQ2BG+1qkWHbwDURLtbIHuqu11jNdbXzb1YpAsXqpYsyULmuSGSvfZJeiFFXPUkLVpZVmuhJPN4l2cbBTXR7kTM0rR3XWONNjeNdSoKkwSR5YFpakgl/YbTAj83qna2F95AbiPURLsjIJohuizRolQ1SwFL+hKHw4pk0oWf55V1EmIJ4UQFyybgjYih5Nrv8gzjLNREu02hlEIVBaooGI/HjPOcdDymsEk2/YX1PDh9Gu69F65cMRbswQfNfa9nzmk0zG0yqrIjoJqmph/SzjJKKeAkMoOS4ez3TUb0DllOcVKoiXabQSlFlqa8fvEim70eF12XjW6XkeeR79VCJWn97W1DqNHIfKkXFkwGUpYLSozUbptkh1gz1zVf/sFg93lBcHKyc2DiwtGoIlud3q9xK6CU4tWLF/nRlSt8Z2uL17pdNn2fgdZksLfLZStdBYF5LFIEaVpphEC1UL7TqcZmGo3K7ZQxpZWV6rmTgoi1SoYzjnFqotW4mVBK0e/3eenCBS4Mh1wtCtIoIokiMpmOnu66h8oi9Hrm+Pq6yTD+/+y9WYyk6VUtuv454o8hIzMys+aqtnvCA5x2G3OuLhI6XA4SCCMekEDtBxseeENGDUggeLRkSwbjF4s3ZMyLJQZb8otByJKPjpCum2NzMZfT+Br3UF1DjjFH/PP334cdK78vojKrKqsya8j6l5SKzJizKlbu/e299tqjkegcazX5gNOjkRYGRaHlV/wy7Qw4N3aS82iArmYeZnN3hlER7QkAI9mb77yD712/jnenU7wzHmMvTTEJAmTmssFlQx3bFkL1+8DODvCDH0gKORzKWe0HP5Botr0tKaPj6P4VyWtu9DzJVLHCASqiPQGI4xh7wyHenUywF4YYZxniMISq16G6XTnT3K3fVK8DL74ohNvaAq5dA27dksLIhQtCtNu3dfPZFBeTZKwIVjgVVER7zEjTFP/87/+O//f2bXz3+nXcsG1sDYcYWhaiskQ6m2mfRS6eWI44TAPDEFhf1+Ta2BAScuwlDLV9nNkmYFl/+ToWWU4Kpp7yGSvxV0R7zEiSBMOiQLm5CVUUcNttYG8PllKwJhOUvi8FjeVJaKZ4nDujZUEcSxrZ68n9Wenb29NVvrff1h6LLJzEsRRNeB+uWKKJz8OCfTtqHUejOyVhZxgV0R4jiqLAu7dv48bODn6YZbi9t4fdKMJwOkVkWcjY42KBggUEfjmOnLvqdSGU40g10fPkst+XS47FsNpH0TClVizvR5F8WZbcl1XJkyJalsnrDIeyw3pjA9YzMqNYEe0xIssyvLe3hx0At+IYQ8/DyHURA8jKEnmey4fzMMkVI49lSURjNONM2csvS3Hk2jXpj/V6YmnQbktKySplqyVk4qxatyvPee6cHhw9KXCCu9EAJhPYzWZV3q9w+siyDOMkQVGrySh/uw272TzoeZU8m3H831wWCAhR1teBd94BfvQjiRR5LtetrMgHut3WkYkrdVm5pFUBn98su7MieZIRxxQrO84zQzKgItpjA9PGH1y/jvcA7EYRJkGA2WyGeDhE3mrJHTmwaX4ozZVLV67IV5YBb70lJG02pQLJ6MEGdaslkctcnctoSRJzDi1J5HWS5GSGP5k6cpL7GatwVkR7TFBKIVYK+coK0G4jm06R2jZmWYbU91GGodYZMqotK+z5gQ1D4NIlrV9stSSizc9CiCIpiNy8KY9dXZXrHEcinu9L6jmb6alqFkPC8GSIppSkjrdvi/3deCzXV8WQCqeNNE0xHI0wDQIkeY7c91HYthBhY0P++s/PM5jNFqNAUci5a2tLyNDvy/dJIh9mFkemU+3TEQT6etOJmKoRDoC6rl6G0WyenKg4iuQ9z/WW9soKrCfYmfgkURHtMaEoCtza3sbuZIJJu404TZFmGYosk1GYKBJS+L7WCPL8FAQStTgG43mLa5Y8T/vsc8DTthfTwyjSZzbPE0JGkd4KGgRCbqaQD/8L69bDZAL4PqyTlnc9wXh2ftMnDFmWYWs0wiwIkNTryACks5mMx/Ask6by4RyPtYkO58TabakqDgZy3WSie2tBINGIwmGmgZYl6eNwKM/JSmWSSBWSlUzqITlAelJEiyLp58Ux8AxFM6Ai2mODUgqJUijrdZTNJrKiQJJlyDodqDyXMnsc6/MTlR/TqRBhY0MiztqaEGI8FoJRBQII+QBN2HPn5L7vviuPpfRqf1/bGjAarq0JmTud41Uel7WSptSLA6ndLrC2VhGtwumjKArs93rYT1OMGw1Mh0OkSaI9NJg6MuUDFjWKQSBaRpKDBZPZTM5BNNmhdGs6lUjGAkcQyFAoiyyMoOyd0UCH5j0PAxINEPLSM/IZwrP12z5ByLIM/dkMs3YbWRgiH4+h5uuM5neQDz6gN8HEsRAjSeSD22zK7dQPUi6VpqLW59mMJXWe5UYjeU6OwdCRamdHoh1TTk4FPCjRKBUDdOo7Guk/AM8QKqI9JiilkAAoazVY7Tas6RSW7+v+V6slH37blnSPkWY0knMZRcJMFYtC7s/qIiMGScLU0/f1mAwdsPJcKp3TqV5cuLkpje9z545HNJNcgI7AWaY1mzs7z8xkNVER7TGhKApMRiMkjQbSwQDZYIC8VtOpIpUc7GnxQxoE0ofKcyEE7bupuCeZ2m2txDCri1SD8LlYqWQ61+tp8a+53/pBYS6l57Q3UBGtwqNBlmUYpSlmnofUtpHEMZTjyAeRaV4c6wUUriuR7aWXJCLQ+4PeIJ4nBQzez/cXJU/00GfE4VgMSeS6Er3Y8O525ecLFx5ehsU/AoykvZ62VnhGUBHtMUFx+V6zCXttDdbeHnD+vJCG0Yofxl5P2wyEoaR10+mdywNJVPbOzA0tjYZueJv2BeZEAPtnjDamD//DwJwKZ6P8GUNFtMeIUilZV1SWKM21tma6ZX4oWfS4cEHOaVTrUz5F4bGpKXQcIR5L+IB8PxpJBGRLwCxa9Psyszadyv2OG9EOK/GbzXLgmSNbRbTHhDRNMZvNkI3HKHo9FFz8QKlVGEok8329nGJ7W25nShnH2qWKaaAZ6ThiE8f6rKcUcOOGpIjttqSZgFaArK/Lc21uApcvA1evPhjRAD2hbU5xUxK2vX1y/5hPASqiPQYURYFbu7uIlEJUr6OY7wmD70v1z7KEQKORHsLkeazf12nfZCIfZkaHWk1/mPkcrZYmpmXpXWnLK5kYgVxXVyPpjHUSPS9GORZYnjFURHsMoCpEuS5Kz4MVhlrcy5I+oCORUlL273TkuvPnJcINhxKB6GQVhto8lRYF3a4QNQiEgMCiqoTnOi6Td12JODs78j3PVQ/3C+uIRknYM4aKaI8BRVFga28Pk8kE2XgsZ6bpVD7UtZpENa7G5Ye/VpPrhkMp7zuO9gbhmY6NaJ65uPNsOJSIGEXyWqY0a3ktk+PI63Oc5iSiD/9wmNF3uZBzxlER7THgoFndaMDa2IBaXxexbRBoQrVaOhXkB3J9Xb4PQ7nt4kV9xlJKnoMRcWNDzmLNphCLviGTiX4+poYUKvOr0ZDbV1cfbD/aYcUQepRwqDTLYJl+kmccFdEeE1RRoMxz5KMR1MqKbuSmqXxFkVQWLUvmzIJAp4a0jWO6yCnsLJP7r6xIeun7kh5euiTRbmdHS6DYq2OqaEYalvmZfh4Xy0Rj6gjI8+W5RFn+zs8AKqI9BhRFgeFgIPNnJAujlGmU43lSyn/vPYkCcbyouqdUi4LiNJViB23AGamCQJ4ny4SEZSkfdNPuzSSGbeshUZbjHxYUSEeRNoRdlmudYVREewxQSiGzbVjzVLGklpHnMU48c3nFyorWCk4muqmd57oiSFuDNF1UfjBCmhGLlzx/LZONSw258OIkkKb6+ef2ChZF088AKqI9JnChYFEUKHd3JcKwxE9dIx2rOh0hxfvfL4WQ55+XD+toJL0u9tq4eun8efli0YPVQ5LPbCCbfiQc/FRK3s+D+vAf9jg6egGSEs+/rGYT1jNQFKmI9hhQFAX6sxmyooCiuoMleNPmzUytOPHMRYKAnh/jOYq2cpxR8zwp73Pb53QqxRHOrTmOJoX5Yed7YT/t+L+gdlYGtMKF180jr51l8DsdWDdvPvg/5lOCimiPAUopZIDMn/EDzUjGSmOeC5G49J1KkfFYolqaCnEoIKYPiPkVx7r8b1kSAVn94wfeBE15VlbkfbDPdlxQ+qV/4Ttsza1eD5brPjNT1hXRHgOKosB0PEbK4U4WOrhpk2e1dpsPkAhEZT+FvqZHommuaop4SSaaorKcz3MgIyYjmvkY4MEExcvPYdrkPYMLLoCKaI8FSinkliULLOidHwTavNRxJEpduiSRLMuEaOfPS0Q7f1575K+v6+lrulhxSNRc+reyIuSi96OpQGFaVxRy+/a2VpLcK+KYZzvCTB1NrSMnBWYzlGmKMs9FVP0MoCLa44JS4g/CL47EsFjB5i7TSjpZ8eyVZYt6RJ7rTK9GwtQY8jbzTEY95eqqtjRw3cUCxjF/t4XXL0uJ2lywMZkAwyGs6RSlUrDyHPYZL4hURHtMSNNUtsUwbWTBgjD3lJF8XHph7hkz00VzFIXWdHwsz2ZHwXFETcIIw/7evYoh5pwZwea06+rfg2nr/H3akwlsx4EXRQjyHL5twz7DozMV0R4xiqJAHMcYDIfIgTu98HlJ+wJAy6dY7jfPY+aZjeY3bICPx4t7qk0p1vK5iaM4q6vyOqORnnG7Gw474/EMaKaOcaxJG0WwJxM4kwm8LEMrz3G524V3hlc4VUR7hCiKAj967z28+aMf4eZggIL2AsBiatdoaNU+7eG4K810LzYXuvOxlGB1OqIaaTb1ZHae611q5vksDIUQg4H8vLYm76FeP/yMZvbJGAHNHQFJot+TubaXv2+ew7Us1JRC17bx/Po6nr96Fc4ZrkBWRHuEGI1G+Kfvfx9v7e9jdzbTH2RT0MsiAquC/MCa5yqzR2VGHE5bU6qVJFqRMR7rPWpMO2kENB7L61AHCWgH4+WzlrltFFisappSMHPujMUc3wdsG9ZkAjtN4ddqaLfb2KzX4T+IpvIpQkW0RwCmi//ze9/DP9+4gX3bRsTKHLBIMoLVvOOAH/owlNZAs6k3y/B19ve1dIsN8HpdjHj29jQxOUBq4jCiHRXR5qQ6OGeORkAQwLJt2NMpvDSFm6awlELj6lW4Z9xQ9Wz/dk8AoijCO7duYTib4d9v3sT/1+9j1GwiBu6MZASjnKmm4P3vBvrbsxjCQgWJxTMeycLVTfTbf9/75BxH+zr+MTiM8LyeRGP0ItEYjfn6e3vAygpcx4Hd6yHs97E6m+Fqu40PPv98FdEqPDjSNMX//f3v4z8HA8xsG//PrVu4laYofR/qNAYgqYhntOLZjOqR8Vi3AdgyoIfHe+9paddyFdEsnCwvRuRoDtPdPNfOyiznUwzturDLEl4UwUtThHmOuuehxtc9w6iIdoqYzWbYnk6xrRR28hy3bRvTWg0pZ8juhfshoOl6ddg2TdNRi5euK1GLW2gAISGjysrK3YsgJtFYGWWhg2c+DrEyuu7uwpvN4OQ5nDnRGp6Hjm2j7jhnurQPVEQ7NURRhH/6l3/B//z+93EzDDFbWcGe6yJyHMxMj/27gfcx1fUmikKay74vxYvBQGsgWcrf3ZWfg0DvU1NKiHbpkmgh6XyVpvK4lRXdA1teskGikYgc3qTLMtsSNBRiWyJN4V68iHqew+/1sJamuNJq4fL6Oi5vbp7piiNQEe1UkKYpfvjOO/iPnR3cVAq9RgNps4moXkemFDJz4PIwwjEFpMZxPvp/cMkZM36/sqLJFoZCok5HpFplqdNIroFKU60omc3ki5s9ZzO9a830ejSLIKbDMRUt3L+W50LeJNHWeWUJy7bhJgk8x0FQlgjzHB3bRtP3z3T/jKiIdsLgEvi3+33s5znGti2LBms1ZLaNPMuQcjQGOHzCGVgs59Nnw5yypvFOv69JwYjGL3PBBfttZtRhBAO0nIue/XxO+kOaRRFTxUJff/4ONAUi5gUY17YRTCbwbRvO3h5qaYpz3S6e29ysiFbh+FBKYZKmSFwXvSTB9miEUb+PJE0xHAyQ8EN6t9TxsNs4bc1dZxQRcyEGLQuoAgHu3KtGTaM5LsMU0bQJN1NWRimS3XV105ykchydOrL/BxwQzwNQLwqEWYYQQGhZuNLp4CMvvoj3X7ly5tNGoCLaiSNNU/zrD36At5IE14dDDPNcFlnU68jCUD6kh2kID5tKNqt9pkKe6g3uhaa3I6DTxPFYCGVKutJUyNpu68XwnY68F6af5hgLz2icKmB/jHNzrCiaizU4+V2rAd0uvNkMflGgoRRWfR8rZYkVABuOg9VG45mIZkBFtBNHkiR4bzBAv9NBVKuhcF2U8x1nlhk97oZlZT2jCqMQIw3vR+0iNYbmhDSjDFNHlvZpusrnY+mf/TNAE42pIWVfPOsBUozhZDfvu7UlZHZd0TQWBZw8h1uvI7AsrJYlLrZauHL+/DMRzYBjEm06neLzn/88vvOd7+CNN97AYDDAl7/8ZXzqU59auN9v/MZv4K/+6q/uePzLL7+MN9988+He8ROOOI6x2+9j2G4jKksUgExTc3vMg4ARhvYGFOiSfCQAlxCyQBFFOnJyPGVnR0dVRknb1sviTaKVpbajK0tJWc29bYD03yiKZjV1OAQsC26ewy4KOGkKP0nQXlnBhm3juWYTL507hzAMH/Rf5KnDsYi2u7uLz3zmM7h27RpeeeUVfPvb3z7SWCUIAvzFX/zFwnUrJ+mq9ASiKAq8df063tnbQ39tDXtxjEmaIqUJj5kK3gtH3cc8awWBXjDI5YNXrsgXRcF0P3YcbU1AYl64IPdpt3XUNDe+AFr1z2piEGjdIoXC5uQBWwe+D9fzEHoeVnwf51otfPDqVbwQBPjYuXN45cUXz7waxMSxiHbx4kVsbW1hc3MT3/3ud/Gxj33syPt6nodPfOITD/0GnyZkWYbr/T4mZYk4CFDU6yg55cyCxUkqQQ6TcJmRjYUNWoozrSxLfR9OdpvzbiQa01wWT4ZDeR6u8LVtSTk9T8u7gAP1yYrjoOP7WLdtnC8KrAcB6mWJtVbrmVCDmDgW0Xzfx+bmJgDov85HoCxLqcBNJmjT++KMg6Y7Vr0Or1aD5/uwOJO1XNgwd6Ed/4UWixbLz3HYczISMl2jx3+3uzjPRg8TvkdaI7DCydW99bomIiuQRaEjrFJY9Txs+D7W0hQbSqEbRXh+cxPPXbz4zJzNiFPTvcxmM7TbbXQ6HXS7Xfz2b/82pstq8LMMEqqUJYOluUHF/Ov/oDAXRvCSTWxOYHNAdFmWZSrtAT3Swi+W6A+bKFheVGHeRivzJIETRVhVCutpinNliQ+uruKnX3gBP/2Rj6DOfQHPEE6l6njx4kX8wR/8AV599VUopfDNb34Tf/7nf45//dd/xbe//e0z/desKApEUYRRHGOaZXI+I+lMa4GT9sgIAu3LYQ6DUiBMAvE2pbS3P9UeTB3pyFWWWto1m0nqqJQ0yQF5vn5fF0i4edS24do2VmwbF7pd/MTFi/g/P/xhvPy+9z1T5zITp0K0z372sws//9qv/Rpeeukl/PEf/zH+9m//Fr/+679+Gi/7RKCcVxdL24bleSKWXbbhfthz2nI0ZOpn+ocs387X5znNnH421SIkGl/HsrQiZTrVRqws6ddqeqG9Zcn3SYKmZeFnL1/Gf/voR/Fjzz+PRqNxpv/A3guPTDL9+uuvw7ZtfOtb33pUL/lYYVkWbODBS/r3fgEhwmikLba5oWUy0ZZy1EpyYtos3TOK8QtYlF+ZypA01Tuz+Vx5rqMkU9b5GE2rLPGhq1fxyoc+hHa7/UyTDHiEDetarYa1tTX0er0j7/P666/f0QJ47bXX8Nprr5322zsVnKpNKO2+x2OJUPW6LkSwmsgiBdNJz5P7dbs6oplN6aIQ4jJiFYUoRuJY7jMcSouAze16XXv0MxqeOwdkGUKlcOX8+TOVKn71q1/FV7/61YXrhsPhfT32kRFtPB5jb28PGxsbR97ni1/8Il599dVH9ZZOFeW8CPJAlgT3i1pNE4izX9Qr0jef5X3T65FRyATTWbYjTEHz8pYb7rlmD40pa5IA7Tbsfh+eUmeKZMDhf/S/973v4aMf/eg9H3viREuSBGmaotVqLVz/mc98BgDwC7/wCyf9kk8kMqWQ57lsjTlpmEOXTOnotW/ajLMf5jgLad2BzQGw6AmZ5/I8VN8znaS7MQsepoOxSbz5uierLGEBZ36Y8zg4NtG+9KUvYTAY4NatWwCAb3zjG7h+/ToA4NOf/jR6vR4+8pGP4BOf+ARefvllAMA//MM/4Jvf/CZ+8Rd/Eb/yK79ygm//+548zwAAIABJREFUyYSafy04QZ0kqNjnh9xMDU0FPRvWpt5RKTHoMYXDvKQNAefR6F7Flb30/6eD13gspGu19IbQWg22ZcF33Wf+XGbi2ET7whe+gHfffReAHPi//vWv42tf+xosy8InP/lJrK6u4pd/+Zfxj//4j/jKV76Coijw4osv4nOf+xx+//d//8R/gScZ9nKf6aGfcB4hxmMpq3NkZjTSCo4kETJ4nt4OSglWEMgZa1mhT1UIJVUUPSsl5Iki7aS1tiZ6STNtbbUWpwSKAu4Zdx4+Lo5NtLfffvue9zlMUPwsoixLnTqeBNEcR0ZiAL33rNcTrWKnozWQ9boQhMJhFkf4HkgAc07NbEGYLsi1mnbR4rmO0Y/Px8fMjYFcx0EjDKuIZqAakzlFLFDrpBrUbDwD+oNvFi6AO41/bFvIuHw9yWTqHAEd0fJck7Re1+kntZt0VTbT1fl7caqItoCKaI8KD0M0PpbFjsFAzk1mH811tSEPixXcBuM4ehLaBIsgJBr7ZdQ6kmhMQflezLSTIuT5Wc8qCjgAms94g3oZFdEeFe5H+HsUqC7Z2pKf9/e1twcLEr6viUZSsf9Fh+K7vT4bznEs5z9T+U+jVXMkhgRmO6FeB7IMtm3Drgohd6Ai2qPCw5zRajVxtGo0FvekUT1vboxZFge7rhQwltM4M0LRYYstgLl994Fi3xwsZRuBGkrTzWsu47KUgm1ZVepooCLaKUEByE+ih2YWLkzTHX7Ilxe+L3vjA1pKtQwzBWQfzZyw9jxdVNnY0GJiz5MqZJIs6ixtG0EQwA8CNJvNKqoZqIh2ijg0hvFMdL8RzvN0SZ1FB34tb5fhdfyif+R4fMQbnBMyTSXd5BmNrQOmktRNkuzLIzoshNRqsgDeso6cvH9WURHtUWF5e+f9wnHEcqAo5JIl/fkALvp96WOtrkpqF4YShZpNeQx1jYe9Hzazo0jIlKaaXJ2O7qsliTZYjSLtB0mFCRUn876elWXwqtRxARXRHiWWe1b3C/MMBiz6L/I8Zp7PTG/F5X3SxHLvjI9hWkqdpLkbm+kqix8cuZk/3vZ9NBoN1MMQ3Sp1XEBFtEcB/rVn2fx+IpppJbdsCc4v+uLz+flaRFlK9FsGVftm6jiZ6CUZ3KHGYsvurlzOp6cXFtozAtKPf56+nvXl78dFRbRHAY6RALp4cS/YthCg15PH7O7qgsXuLnD7tpCEpfh6XZf2x2NJH7nn7LD3Q5j2dTyX7e9LylgUOnLRu9/0jeTPc4JZSQI1/2NQpY6LqIj2KECBrhlJ7gbLEpKE4YE1ADwPuHpVnmc0knK/4wjRKMHikng+9qgtmssFGaaD06l2zGo05H4UC9NgiauemKoaRPN9HyGAFd9Ht9utUkcDFdEeBUxLb9MU52447CxEcbDv66FOUxKVpnduebkbWPan4oQrmIDFcx3fN6Mxix8mUR0HDsv79TrcMzaL9rCoiPYoYNoFUIB7r/uzR0VX4ChaXJvL603pFD/49ME/DGYko18IiURy0Rw1TeU6TgSw4sgqJcdp5ucxlWUo4xh2niOoUscFVER7FOCHkVXDoz6AbDYPh5LG0Z/DcaSPxnNUryfnNMuS+/q+XHKF7daW9m886v0AmmizmSYwICQyd16TXLOZXgdVq+mlF/MIXXNdNOp1rLZauLC2VqWOBiqiPQpQOWFW6w6DbcsYDK27GdlcVx578aIQYn9flBq2Ld83GqLUUEruc+nS3YlmGvGQrNz4ySnr9XU5C9q2Vu9T/kU1CB2z0hQYj1G6Lqw4hl+WcI46Hz6jqP41HgXut8rICWf2sZgS2ra2e2PkYcWP5EhTTWYzOt3t/fC8Zbpeca4M0L02c0J7bid3oLcEAN+H1WrBtyx4RYHQdVGn1V4FABXRHh0MPeAdsG1JxXxfp4bcS8YCByNXnksE6veFkJOJthUAJBrdvHm0hcJyH08peQ5GtCSR52fayNfo9yV1ZPWRxZF5Q9z3PISui812G9fq9WfS9vtuqIh2WlAKmRkllsvpy/B9KdGvrupNnCxABIF82NttIR9L7jwrsTrJDTF3i6CmM5d5VmPzme+N8ipzMyjdtnZ3F3+vokA5b3bbsxlqtdozs2DwflER7TSgFLIsQ7G8yOIo+RXTt+1tKXqYxqUk2va2HkXZ2pKoZdt6AJQR0RzMPAzL6n6+NquhWaaridxQyvVQQaCJTderfh+IY9hZhsD3sRKG6FaGqXegItopoJx/5cdR6D//vNYX0qOD09JhKB/wl1/W5HvuOb1PemVFjEvvt3dluhGb7yGK5LYwlMi6tiYE5+1mumjIyuw0hQug2WphJQgQuG51PltCRbRTQFmWKNJUllvceePiz9QrclkEoIlG621AV/eoRzTX6S5bx90PGF2V0g1wpo4092k2xSaBjXEzClJoXK/DcV3U4hiNWg2rzSbWO50qoi2hItopoCxLKGBxJusoMbHnAe9732LljxPN7F1RWtVo6DMaU0UurDDXQt37DS6+H0ZSkpaiZU5TU9FPjMdy+9xlq8wylPOmdjkeo7a2VkW0JVREexJAiZWpxGcE4VmJm1s4tsIo5LqSOrbb915CD2hVirk+ihGSZKKsy1wyaO5EY1+tXge2tuDGMfwkwcbqKjY8D1e63aoYsoSKaKeEEhLZDoXZp1JKqnjUEVLpT7U8bbiHQyn7s1jBlbazmdzvMJerQ9/YUppZllraxdk1RlZWInk/02x13g6w8xyu56Fer+Py5iYunztXlfYPQUW000BZiu/+crpofs8hSjam+cE2Z8v4gV5uEfB+gK5ODgb3/d4OQGJNJrpiyd4dVSks8/OPQlkKsVdWDs5pdlnCiWNYwyHac2FxhUVURDslFEUhniHmOY0fVpbPGT3MdI6XVIqYvThzd7VJmKKQqHccmK87mUh6SvcrumGZ9uDm64WhVCTTFL7rom3bWG+18MFLl/CxD33ozG2ROQlURDsFHKSMyyTjOAureKz0cVummToCusrIYgd/Jknm21vuu9p4WKOaomHL0ltkOGA6GEg1lLIskn0ykdumU1h7e7AbDThxjEYQoFarncw/4hlDRbRHBZbNWy0hi2XJ2eg//kOaz2ajOUkkmlApH4bSz+p09IT13p7c714N6uX3YN6fkYspLAmbpvJ6nidnQS67oPwqz2VrTBzDc10EnoeGZeHK2lpVBDkCFdEeJRjVbFtSr6tXgRdeEEcrs0QfRVJhNEdSXFfaANzKee6cPMdxYaaMUaStxCnhWlnRrQPTIqHZlNvnkcz2PHijEYKyRNuycLXTwfuvXq2KIEegItqjgCl7UmqxUkiHYGBxv7SpnDddh4FDl0rcF5g28jHcq8aUtlYTQnHtE1NbthgoMPY8OGEIdzpF2Gyi6brYCMMqbbwLKqI9SphbXdbWdKPYtDkw1RfA0US6X0sEE8sp5pIwGID8AaCrFSuM5rKM+Y5rt9uF57pot9touy7WqjVNd0VFtEcBWsNRJ8hotrsrZ6CbN/UeMlYi63V5LHWOOztacEwbgYexdGP/zHG0eer+vl5uON9HfWBxR9nVfE+23+kgmE7RDEN4aVopQe6BiminCRYZDttj9txzwP/6X3Lm4Y6xPNfuUoBOF819aOxpcfjzYd/fchRihZE+IcOh1leurUna2GzCd114tRrqzSYsevJXOBIV0U4JBz00NoGZNoah/Ly6Cty4IWqPXk+naqurmphBIOekINCkBeQcVavpqHffb8pQhZhpKlsN1FByUjsMtdTK88Q+Ic/hKQWv1YIfRbAry4L7QvWvdJqwLPkAF4WeWp5OpTcVhhIxbt3SLsH1upCRUWW572UusBgOHzyiLduE0/GKfTLqHBsNiWLc+tntwp7NYE0msMxIW+GeqIh2WuBZazoVQoxGEi3Yk+p2gVdflfNZUUhZPQzFFIfntW5XvucHvdmUx/Z6ukhxGMw1TYed4/J80aORluBJIn0+lvJXVuQ1zN1rFR4IFdFOC5YFq9NB6brSXM5zSQvbbb2txXXlkvZyppciFfWMiICeHeMAKLFcTTTHWsy5M0CbnzLl8zx5zfnGTjQacluvt7jhs8JDoSLaCcOyLFjzip7leXJW49j/ZCIEYfGAFtxra9KArtWkic1p57U1iXLUHTKiNRqLL7pMNHPkxdzIyb5cWcprcMA0TfUkAN8rUKWGJ4iKaCcMx3EQ1GpwHAcW5Uis4sWxpGbUFvIcxsbx8pI/cw3TsseHiWUZFh/H+y/35sz7VVtfHgkqop0wbMuCU5YoowglzUbpt8EG9XQqZzZ63s8nlQ/ISF8Qmqcy3aOw+DCYBROzAU5UhHqsqIh2wrAdB7VGQ5x6uaFlMNDFBk5PU7/YbEpauLIiZOh0dDSihQGfy/TtOAqmhz4VH3dbflilh48EFdFOGLZlwQNgTSawp1Oo6VQUF/2+FENoWWAalLKq53n6TMbzkufpuTBz4BO483tTfWK2B+5GpsMWGFY4cVREO2HYjoNGu42abWPaaCDf35cP/XSqR03SVAodlFHxrGT68ptnLtsW0tEGfBkmoZZvP2q17t3AJjsVIVXUe2hURDsFlGUJy3Vh12o69aMtAS9pcmOuTDIrhCZ8X0jKyAgcTszDihumWv9e4FmQvbUkkbR3fb0i20OiItoJwrZtePNih4oi8QwZDLQ9m0koRh/zi70zfk9S0pJu2VLOJBGnth8W7MHR87/dltbDZPLwz/0MoyLaCcJxHFzY3ETX8+BsbcGJIolCu7t6sSCwONHM8n2ttuj7sVyuv3z5znPUsrX3SYARLY4lkvKsWOGhUBHthFGv1/Hc1atYSRJEV65gyubzYLBYoDDBKWoqNGxbLwMkER+VRQCJxkhaKUNOBFXifcJQc/er0lRXmJHILL8zGh0WqSqcKVQR7SFRFAXUnChpmmJnexv7N24geestZP2+aAa5CYZgX8tUhDBy8faq+HCmUBHtIVAUBd7b3ga1GlmWIfU8rF24gObuLgZra3LWqdW0l+NhWJ4NO8yursJTjYpoDwGlFFIAzuoqXNeFnWWoZxnaSqH29ttwOOKyLPC9F0xlB3B/CyyWK5DyBnXBZfk2Xi5LtXhGY5XUvMyy4y3TqHCAimgnANd1D/wMvSBA3XFgDQawRiPtv3gUOFlt/kypFR2youjub4D9NBKafTo+t9nIXi7GHGYCZNvaW5JVx/FYeoKDge7/VbhvVEQ7QRRFgVIprHW7WF1ZwU3Km5ajBq9j38z02GdEcV1txnO/xRF++A+TZt2LaMsoSz2oGoby/lwXVrsNu9WCVVUjj4WKaCeEoihwa3sbt3s9TMoSaZYhn6+dPbDxNmHbIiCmst+E7wMf+YhefnH8N7OoHDmsNWAOgh4GKk34XGkK+D7sMITNPyAV7hsV0R4QRVEgyzJkWXbwwZvlOcpmU9YYnTsHi9HIsiT1MqOAaYxqKkVMp6yTMCTlcOeDgr6Ptg3LcSSSVUQ7NiqiPQBYbZxmGW70eqBuYqvXw8BxkAUBIqWQW5akXRzoNLF820krPCo8UaiI9gBgtdFdXYVTlnA6HZQAnCgSd6gggBWGyGmUyh1jh3l7cFxmeUFghTOFimiHwGxCHwamjCgK7O7twSoKlGWJ7X4fQ99H5vuYRBGSONaldRY7AG1HsLMj+sYg0F6KTNVOooxu7qV+UBh7rUulZF91lon6pRqhuW9URFsC08LoLmTLsgzX9/aQ9/v40fY2fN+HY9vYSRIMlEKW59hLUyS+L6ajSmn7bUDOTHMz0oNNm4AWG1uWHod5WDzIPJoJEi1J5Hn6fSBJUHoe0O/D3tiAVTXW74ljEW06neLzn/88vvOd7+CNN97AYDDAl7/8ZXzqU5+6475vvvkmXn/9dfzTP/0TfN/HL/3SL+HP/uzPsL6+fmJv/jSglEJUFNhJU6gjighJUeCH/T7iWg3/fvs2PNuG7TgY9HroA8hsG/3RSKJeFMkXScv1TLdvi83ccChCYnO1brv98GJeM4o9TDGEqS3/UGQZLNeF6/vwWy2Ea2uw7net7zOMY/0P7O7u4jOf+QyuXbuGV155Bd/+9rcP/Wt248YN/MzP/AxWV1fxuc99DuPxGH/6p3+Kf/u3f8Mbb7zxxC+rU0pBuS6CzU04rnvQHzu4fTYD9vfhbW7CyzIEH/wgHNeFf/s2bKXgNBpwLUtciLm8bzDQtnHnzklp3/S+Z+UxjoGtrYeXX5lKEVMZYq7m5QybuSbqzn8M+UoSwHFgjcewkgRWGMJ2HNhP+P/lk4JjEe3ixYvY2trC5uYmvvvd7+JjH/vYoff77Gc/iyiK8C//8i+4fPkyAOCnfuqn8PM///P4y7/8S/zWb/3Ww7/zRwDHdWHbNnZ3d2EWtKPZDMPpFJjNEOc5iiRBNhqhP5lgbFlQADJ+eJfPRzTkoe0c0zoKi6PoaMuC42LZ03FZgQLcez0Ub1MKdhDABuCsrMBrNuEHQdW4vk8ci2i+72NzcxOAsaf5EPzd3/0dPv7xjx+QDAB+7ud+Di+99BL++q//+qkhGiDRLYPoGWFZKJWC7fuwWi2g3UbpeSjnUU81GkiyDMp1kQWBVuYDi9rCbleiWllqLWS9Dly7Jts/OYd2UuDUtOl4zO+5U/uw1zOX1xcFHABemsIDYOc5rLtJyyos4MSLITdv3sTu7i5+8id/8o7bPvaxj+Gb3/zmSb/ko4Flod/rIQeQRBFG0ymKfh97t27B9jykSYJpHKM/m0GFIZKdHb3/eTzWVUfT+Wq5EEIR8klvaOHz8dJ007rba/G2LIM9d2C25uulyixDmedQNPCptsrcFSf+r3P79m0AwIULF+647cKFC+j1esiy7Ik/pxFFUSCNY2AywTSK4KyuonAcqGYTKgxRtFpI223ESiGKIkS1GopOBylJwxTx+nWt/uD5yOytkXCPYteYueHzfghiqvaTRAiWJFCjEVSjAWs4hLe6Wi0jvAtOnGjRXGkeBMEdt3HHcRRFTwXRiqLA7Vu38OYPfoC82cRgOIS9uoqiLHF7awvFaIT9vT2UrRZi28ZkNsPUtmXKetmAB9D9tDiW/tlstiBxwtra6felGMlI8vv5f0jTA92l5ftwskwWERYFwmYTfhii2+lUq3XvghMnWn2+HC85JH+P52uG6kcs0Hv99dexsrKycN1rr72G11577YTf5f2hVArTOMZuFEGtrGAnigDfR1EU2JvNoCwL0zhGMR4jc12kWQblOCi5qilJ9Dra5TPRcsWxLMUm/NR/qflrs2x/n0SzigKWUnIuyzKUSQJrOAQsC57jiDPzGcdXv/pVfPWrX124bjgc3tdjT/xfhykjU0gTt2/fRrfbPTKaffGLX8Srr7560m/pSBymAKHqIwdQxjFuX7+Od2/dguX72BoOYbfbgOtiMN8tPQ1DFM0mct9HlufIXFcKG64rROt0pLRvahqHQ+mj9fvaS7/VEu/GZe/84/gyHgVGV7MIYkY00+V4uTLJoc80BcoSVhTByXMEnoeaUmivrCCMomcimh32R/973/sePvrRj97zsSdOtEuXLmFjYwP//M//fMdtb7zxBl555ZWTfsn7hkmsoihwY3sby3E3z3O8u7ODfcsCJhP8x1tvYS+O4TQamLZacDY2gFoNWauFMgiQlyXy9XXktZo0qH1fvuZ9J7RaEqlYvl9bk8sLF7QHP6PZ7u4i0U4a5pmQEc2MsCahTcLN01sLkDNaUaDMc7iOAzcIYD8DJHtYnEq8/9Vf/VV85StfwY0bNw5K/N/61rfwwx/+EL/3e793Gi95Txzm73Gj14PT6SykPbltY991MbAslJaFsechbbfhdTookgT2+jrgeVAAyloNZb8PVa8DYQgry/Te6VpN0sdGY1G9zwodP9iuKyr+PF/0wefZjt/fb1RbtjQw59IY0czFhDw3mrbky8hz2fmmlDTkIeftmm2jVAqKUbLCkTg20b70pS9hMBjg1q1bAIBvfOMbuH79OgDg05/+NNrtNv7oj/4If/M3f4Of/dmfxe/8zu9gPB7jT/7kT/ATP/ET+M3f/M2T/Q3uE4f5e/gAgo0NuEYqm+U5QttGXJZQtRr8Vgt2mqIoSxQALAD5ZIJ4OkVZFMjSFEUco4BEw4P1Six6mBs7XVeKIFEkKSW99xsNnbqx33UaZx5zNs20JWcENSOTIUZ2HAduUcBPU9RsG34cozb3nixmM5SDAbxGo6o63gXH/t/8whe+gHfffReAbLf8+te/jq997WuwLAuf/OQn0W63cfnyZfyP//E/8Lu/+7v4wz/8QwRBgI9//OP4whe+8Nirjaa/h+t5cDxvgWiAKEIc+ue7Luw0Rek4sOt1WPU68jRF2WpB1WpQQYCi0UAeBBKRajWJYEUhZ7V6XcjG3hl1j7OZfJ/nEtHabWlkm8sJgZNLI/kHwDyv0abgqOHQsoRdlrDTFE5RwEkS+EohmEwQ1mqoA2j7PprNJs51u8/EOe1BcWyivf322/d1vw9+8IP4+7//+2O/oceJoiiQZxnyLENRllCOA5XnKIsCKstEDTNPuSzfh12rSZXRjEQkFNNC/kwf+1ZL7rexob0dp1MpkJjFENpwn0QxhOCmUfbRikL7gZi+kvofRN93XhAplUIxncofmdEIVquFmuM89j+gTzrOfk32PlEUBba3txFlGXZ6PQzLEioIMJ5MECcJEEXyARuPkc1mKGwbyrJQpilKfoCZMnLQk41eflhnMyFVnksl0oxu0+mi9/7yZs/jnNGWH8fraB1nNqzNM9ry2t6yhCpLOFl2sMjeKku4SQLPdVHPc3Trday6bhXN7oGKaHOYmkbPsuDOz2hOtwt7MhEhsFISkQA5s3me/GWv1bScissDi0JXIGs1Ha0GAzm73bolxCpLIdr29mJBwkzlTip1JKEAHSmnU70D7RCiWUrBUgq2bcNJU7hlCX86xUoQoFGW6Lgu7MEAPlCd0e6CimhLcFwXjufJGc3z5IxmLG23lv7yH3wszWKG6btP67iikPI9II/tdrWHo+fJWY7NehYpgIcf3CTKUgjONJbnsjCU6EmNpdFXtPIcXlkiyHPUAQRxjJbrojOb4crly8DNmzi/ugony3B5c7OKanfBM0M0ulbRsSqbn8X4cz5vVDt5jiLPUZQlyiyDKgoUZSnl7bI8OKeVZYk8z2UHGsGSPYnIdK/RAK5c0bdbFvDCC3K//X2JaI6joyKNewAhxHHOP0eV93nOmnua3LEd1GwBQKqrjlLwlIJbFBLJZjPUgwDWcIhivhixXFtD3SgwVTgczwTR2JymY5XrecizDLd7PbgAvPnPu70eLKWwN5lgVJYoXRfT6RRZkkDFMfIsg5UkiOIYiWXhwNXDJJB5HeE4Us6naaplSWGkVgPOn5dBT/N5lh9/HBz2Hpaf1/zZbEkAmmhleSC7cooCXlnCzTIEjoNgNkMry4AkwTnLwsbGRkW0e+CZIJpSCgkAp9NBsLEhqWGWwbNteHNJWBnHsPJcnHjnIyHwfXG0KgqZJHYclJaFLM9RuK4eBl0uQCy7AQN3Rg86YKWppHTjsdY6mnbe9BXh4w5TcJgFj2WfE7NhPRrpPWwstphppPE8CoDNqqNS8m8QRZJKRhFWyxJhp4OXLl3CyspKlTbeA2eOaEfpF/M8R2nbKC0LFiDqesuCZVkiEt7exvbeHuw0RS+OMVFKItp4LGLo2QzpdIpyMkEex6IGYTRgqZyLIOSNaDLxPnGsibG1JVGtKPT63SjShYkwXKwOAvfnZnVY6gjIe5hMdIGGRHMcuW1p2sJWCnZRwOIcmuPAyzLU2m00h0OsJwkubGyg2WxWJLsPnCmiLcusCMqt9h0Hdd8/SB23ej04c1Ju7e/j+v4+SqUwznPMlIKybfTjGNM0BbIMSZ6jTBLkSokKhH4bJBIjmemjD8iHud3W1zUaesoakCJIlgEXL+rU0ow0Ju7m+zi3hVvw4KdQWCmpdIahVE65UZT++kEgf3jyHIFtw8syhGmKjuOgkefolCUuKIVrjQYurq/j//rwh7G6ugq/Wrt7XzhTRKPMCu32QqnZzjLYUSQl6lZL0sA4xuDGDVhzUe/+ZILtvT1YYYhpkmA8H4MZxTHiJIHq95GPx1DDIfLZTEcqzpYxggH6LBZFUshIUx3RzBSS62t9Xzweo0ju22rp5zCNdYDFtUumup8kZ68MkO95dkpTiaKeJ6Rnmsq2w5zQLgDPtuHOz2WebaOuFFplibVmExeCAD928WJFsmPiTBENkKi2v78vvoNz5FmG3fEYA8fBZDSC57pIogi92QzexgYc10VUqyFqt+FevIgiz5FFEawwRBkEwP4+1MWLUP0+ygsXdAoWhkK2bleffcJQRyOSxvel6MEGtW3LB91xhKSXLgmpRiO5nEz4yxytqD8M5dwWjiLk5ai7v6/fc68n94mig/s4RQEPQM224RUF1l0Xbd/HtXYbF4MAP3nlCl6+cgUvXL1akeyYOHNEY+M5WF09UOXbWQZ/Ptbhd7twXRcqiuD0evDW1+F6HtzpFM54DGVZyH0fRZ7D8jxkRYF8LihWZYnCtPA2x06WGr0LZjzssc1mcn27rc9Kngesrkr62O+LFItR6rDnZ+p4WEQjgfhHJkn0GA69S/JcLxpstYD5GcvNMjSSBE3bxkYQIExTPN9u44Lv48MvvICNMMR//fEfR6PRqM5kD4AzRzSCVnEsjNC1y7y05jNW/AIV+o2GbE4JQ1itFsooQlmvQ9VqKOt1LfqlIoTpn9mApo6RZ6z1dVGXxLEWGtfrOu10HCGcWWQBFgsbZnGEkZHFE6aus9nipppGQ094swhSlgeLBp3xGKHjwE9TbLguNh0HL62uYt2y8JFr1/DS5ct4/soVBEFQRbGHwJklWlEUB36MWZZhp9/H0HHgWxY8z0Mym6E/HCLY34fjeRgOh4imU2TTKXJQJkZ6AAAgAElEQVTPk2JHkiDLMhSWBTX3a1xYscQP8/IXYfasOHU9ncoW0NlMok8UyXVm0WN5L5oZIZdn1swIVRRyDuN7Y+rI+4xGujLqefB8H6FS6AAI0xQf6Hax6br46WvXcK7ZrCLYCeLMEq00tItWWYrCwXHgra/D8zyo2QzuaAS325W+2ngMu9+H02hAhSGsOEaGucSqLO8k2XGGMSmp6nSA//xPeex0qospnnen/+PyeYzEoxcLCx2c5KaAeX9fS8G4ZIPqEoqdPQ/++fNY6XbRiWNccF109/fxSy+8gEvdLv7rj/84wjCsItgJ4swSjXBcV9x1PQ+O44gvISDSqiyT2bKyRJkkUHPX4TLLxE4NcuYr6F/IqMG5Lqr1+WV6cpijKEwNP/Qh6ZmtrEgad/mynMmuXFlcOshWgSkA5vNS4c/z13Qqz0VHrSjS/iOTiVwCkra+9x4AoHH+PALLwkpRYKXfx/tWV3Gx0cB/f/VVnD9/viLYKeDME82EKgr0t7dR2jb233sPt7a24CsF23XRv30bo+1t5J6HYjzGjFPTOztQw6FEisFALtNUR4jpVIoMc3eogzNTnuuUkP0spnLUGwaBkMXc/Anc3aDH3EhjCpk9T5OT96GpDl/f94E8h+d5CMoSfpahrhTarotGvY5ms1mR7JTwTBGtVAoFANTryJpNWBcuwL52Dfa8gFG6LnD5Mqx2G4hjlGUpM2dcv0Q7b5bEw1AI1m4LaZJEriOpkkQiCslHcrGpnGUSid5+e1FaxWqjSb7liMbUMYoW96ttbemp7X5fnp8pqmXBBhB4HpzZDG6SIMgyrAA4125XesVTxDNFNGDeU/vRj7A7GKAHwO/1YLsuxpMJoigS/w/PQxRFUPP7Y64MORDfmkY3ZqGCBDEvTVBczKplqyXVSKaijERsIZhFCEqmuCIpiqTAMhrJJSCkqtflOU0LuUZDUkcA7ngMdzCAMxjAjSI0lMK6beNSp1MR7RRxpolGa4ISQDEfg0mnU0RpirLTgW1ZskjPcVDmuXxQGw2U86hU2rZcN5noUj7NbFxXfqZdgVmF5AeW6Z3pZEXx7lz9flClXO7DkaR8/HIfjWdCnhM50a2ULpjwvp0OsLoKN8vgJAlq9Tr82QydNMWm7+O87+P9585VRDtFnFmiFUWBvd1dWEqhBLCzu4t3dnYwTBLsz2aIwxCzWk3IZtuI+n3M9vaQuS7yZhNplqF0HBS9nkSN8VifxzjXxX5UHOsPOM9nXEIYBHfavIWh3I+9NHPCGdBR03SmShLdpzvK8JQSrNlMExoAfB/ObAYnTeGMRvDrddTLEi3bRtey8OL6Ot53+XJVxj9FnFmilUqhsCwEq6soLQv5YIBRkmDs+xhNp0iKAhGAcjYDLAtJHGOaZciSBKXvI1NKlg+a5XZWHDm7ZUYT84vXAYuL/wie4SYTTVLzjGb6eXCIlI3mfn/RZ4TnsLKUCuZ4rAdIazWg04G9ugpXKXizGTzPQ7vZRNPz0PV9nHccPHfpUlUEOWWcWaIBUmXM8xz9vT2899Zb2NndRbKxganjIK/XkdTrKMMQluchLgrkUYSs0ZC9Z2aqNp1q9cdc5X5Q6aP6g3YFTCVZKeT1ZmGDz2Oe+YBFk1Wzysi5NEALlEnyucIDwAGx8MIL+qxWliKktiw4sxm8wQCNbhetJMFKksCbzapI9ghwZohGqwLTN39ndxdOrYZ+v48BgKjdRt7tokgSFM0mylYL5bxiWDqOVCQ3NsS2m1GG57TVVflgr6xo64EwFBKGoZCHkidAbq/V5ItVRqZ7vi/PxxSQr8XZMFN+xVRxvqXngJjTqRRTokiqnkwbazVNxPkcXZmmcuYcDKB2d5HX60iLAqjVUC16fzR46olGgt3Y3sbU8M1XoxF2h0N4ly9j4jiYuS6KRgNFGCIHUNTrUEGAslaDFQRQNKchOfjhr9V04YM9KqZZ9NN3nKOdhZelWbw0NY6MYIxerGaaqWMUySXPiNOpRLf9/cUz4o0bIvFqtw+a1tZc/lWOx7B2d2HluRRFNjexurlZpY2PAE810TjoOZ0PdpbNpvbNdxxMLQuB7yPyPKRBgCxJkLsuinl6R/NTOluVlqX3mplN4pP8q2/bUmo3x1iYWtKmjuV92teZZ0X6+GeZ9vXnUGmWSZ9vc1NUJ44D3LyJoNtFzfNQ29lBM8/xwsYGNqZT/NIHPoD/8qEPHblGq8LJ4akmmumn7wOwV1cR+v6Bb757+zbcTgd+WcKNY9ilrIa15uansCyUEGtzlipKsz8GLPbFDhu6PMwfxIR5GyuV16/rMxbTRar9zdfndWWpG8/b2/LzdCo9tZs3JZKx5RAEcjbb2JDlFL0evGYTQRCg7jhozma4cPEiLozH+MCLL6I5769VOF081UQjXNcVH33XXfDNdxwH3tw/H5DlFHmngzxJoBwHhePIsve5xlHRtIYVPkBvuzR1jlmmhbwkhvm9WVwwe2K+L3pHPgfVHXmuU1I+F4nGNHY00lIqpaTC2O1KKsnF87at+31KwUpTWGkKJ03hOQ4Cy4Jn/ltVRZBHhjNBtHtBzb3zi7JE6XmwwlAKGEEg/vq2LXupWT1k5DFnyth8NvWF5piM2bQ2sexaxYHPZaJRonUU0VgEYbWSci6zygks9PbK+QiOPT8POnkO17ZFIF3hkeLME00VBab7+5gOh8imU6g0FePTOBaSua6kkcs9MLO8f5j5DnDndYxey9ZyyymnieX0czlNXZZ8MRrSom4yke2hrF7u78tjt7bgFAXw1lvAzg6sWg1WlsEajaAArFy4UBVBHiHOPNFKpaAsC3arJd6EYQi7KEQoXK9LxAgCKBrpcJEgP+iUWZkVRn5AWdJnT82UVBEsrjAqMVqy8c2iCJvY5sgNn3u5Cc7nZSW02ZQIzRZAvS5zdwAwGGBzYwOdZhNXsgxXVlbwqZ/5GVy6dKkqgjxCnHmiEZbjiLUBUzvLkpSyLHVzenlM5Sh33+OAqWUcL25zYerIqiOJYzajzfGX8VguuYVmNJLHjMdyP0q54hhWpwOv0UAAAKuraFy9im6rhXNJgiuTCTY2NiqSPWI8M0RbxkEtkGcccybsMDsCfr+MexGQlnLcRsO+GV+L5zU2uKn2YCWSHiVxLM9H4W8ca/etlRVpXisF9PuwV1bg2DZc2wY6Hbi1GmzXhVMU1b7px4RngmiqKGSiWimoNEUxT8EUBcCOg9I8m/FMZJbwgcPL+EeV90nWfn/xviQlPRxNos0HMw8qmLRAoMaxLKUZnWXyc70uhBuNNDnzHHYcwypL2HPjIFUUSJMExfLOtQqPDGeeaKooMOv3EaUp4v19FN0ukrKE8jxk9bpUGtMUajaTDz7V+ATTOJ6pTCsDEsK0MCAcR8ruTAupVWREq9fltTxPEy0I9MAon69e181o+vCz1RDH8rW3pxcg1mqw0lQqqb4Pp9dDur2NeK6MCdfW4J7GfuwKd8WZ/xcvlRK//TAEGg1YtN/2PKh6HarRkMII1fSUYC0XQ/hlyq2o0jisrA8s2gocNesVBPp+YahJR6LRg5+eIHyvQSDpIlsQ9TowGMDzPNTTFA0ALdeFmyR4f7eL1SjCT7///fgvL7yAmulPUuGR4KknWkGTnSxDubx/eh59VJ6jdF0R0M7PYKXrwvI8WHMilWafjJVBYNHx6kHOaEfBLLDwNVlhNElr+kWyOFKvi+zq/HngnXfE6TgI4O/uonn5Mlq+j05ZYrPTgf/uu/jg5ia6+/v4b6+8gvX19apR/RjwVBOtKArc3t1FnqbYG41g5zl2hkPZP+15GA4GcHZ3MZtMkMzPKcgyWTRoWVC+D8VmMVNAs09mntcOsybgfe4mwbobjiKouUfN1F1S/WGO3NRqQLsNt1aDoxTczU1YUQQrywDfhx0EsF0Xfq2GWq1Wkewx4akmmlIKmWXBW12F5/uwV1bgeR7cskThOEiVglWWyPIceZpCzaNekSRSIHFdOePwvEN/kCRZLMOb5zMqNyjsNRvJJN39RrijCEpCH6azXB4yzXNgNEI5m0Ht7UF5HvI4RjabIR+PkW9tochz1IOgOps9RpyJf3lnrt+zPe9g/3ShFHIAXrsNdLuSNmaZzJ6Ze6PrdW0dx0FOUzHBRrXZBuB5yzyj0TrA9AcxwShpzpyRuCyU0FWYpAa07tLcsxZFcp6kV79SsIMAThzDSxJ0Gg1s1Gq41u2ioRQ+ePEiXlpbq5QgjxFPHdHMRYNcMJjPL508R6EUsixDb3cX08kE3mCAZDxG5rookgRIErGRU0qrOZTS4mGW1/ULLjaRD4topkSLc2PLRFs222F1k6/J69lHI/n42MlEnnc0ku97PSHmrVtyubIC1/fhbm3BmatfkGWw9/YQdrto12oLq6wqPFo8VURbXjQ4m82wNRgg6PcxTBJYAPbGY/SzDPtRhLjRQNFqIVtbQ6aUpIxBgELJNs8DA1NGNAp+aVdQlotbXxjdzIhmCoxbLbl+We8I6NSSImJAfg4CeW02rCko5uM5OmPOrbHHxijbbqO+uYlmrYaG66IRBFjJc1z2fVzY3MT/8YEPYG1trTqfPUY8VURbXjRo+z7sRkN0jK4rW2DyHDbHXywLFtX3eX4Qycr7KV4sy7KOg8Mih/khZ+pKjSNTU6Z2LISY6n22F2o1SXc3NqTqePMm0OmgsbmJZhgiGI/RqNXQTlNs1mq4GoZotVoVyR4zniqiAYuLBuPZDL3pFN5wiHGSwLJtjKZTDKIIe7duYTqZIO71EA2HiAFkUSQzZ+xT8cv0TlxuPvM+h1UdTeU9U0g+F1sETCPNc5jZADcrjDRqZQGG50ren8UPKkbmgmiEIfzVVdRqNdQBtB0HLc+D5TgVwZ4QPHVEMxcNBo0G3MEAXrcLN4pE4+c4MujZbMpE9bzc7RQFrOkUFhvEvq8/qGYz2kwNgTsNUk2w/G7qJJe1kfyeUY7eIMurnkxzHtNHhK/B5yGpJxNRhMQxnMkE1mQCx7ZhpynsIIBblnAtC05lvvNE4KkjGuHMI4Y7rzS6cyU8t3yqohBVSDlfNqgULEDSRjMCmbNngL7N9MHn9UelnGbh4l7g85kR1TRXNX0ief/leTRA/7EIAnhKISxLNGxZ8t4EsOb7uLa+jotV2vhE4Kkl2lFQRYHxzg4Gt29jkudwbt1CtLODKM+Rj8couH+a1UGel6ZTqQImidxGopn2BkzjWHVk+mcKh498Y0bVkdXJKFoUFYehPF8U6con96htb8t1vLQsGfKMIlh5Dms8lsXuaYqm4+D8ygouX7wIn/bgFR4rnmqiUX5lZxmK+dkm55bORkP0jRcuII9jFGkq96nXteFoo7G43N2sOvKsFQS64nhY1bHbXYx+ptc+cOcZzdQxsgrJtJGWBOawJ8+HFBuztM8/BnEMu15HrdtFw/fRdF3UfR92rYb90Qjnqib1E4Gn9n+hKArs7OxgbziEt7eHSRwDaYre/j7G+/tIxmOkjgMMh0jjWAxDTZUFU7WjcNRIjInpVBc0WNQgkZiukXRmemmmh6bjljkESvJy8JOvr5RE3rIE6nWsf/jDWCtLPP/KK9hsNLBi21gPAviehww46DlWeLx4aonG1bl2pwN3YwNuFEGFIaL9fSS2jcyyUOQ5ynmD+o6z1vKZxzwvsbIH6PRweRymXj+aVIf10UxliHkm45iM70sfjvYEbKS32zpN9H35udcDfB/1555D6/JleDdviqVemsJ3HNTbbXh0OK7wROCpJRphO47IrvIcuVJI0hRZo4E8SVA2m0CjAZWmYosdx0IQ9qsowaJ1nCnB4lnK9Ndn2qjmFt2MVEzP7pY68lzFqDWbyReb5eypxbE8N92HWdXkNDZTW8+DH4YIGg14rotmvY61dhtd18X65qZsKa2I9sTgqScakSYJ3rx5E2+++Samto3ZbIZYKaDVQjYey8jMXIK1EE3M4UvTZYoRzex5MfXsdIQcrqsLGSZZecnHM0JxdozPz/dAcrdamrRUpjSbcvtstih8jmPYvR6cMIQzncKazRB0u/B8H47joKLYk4UzQTRVFIhmM+y89x7iLEPcaiEDkIUhUK/LKEwcL0alorjT3cpUaZjbXPg4y1pcNuE4WozMqGUSzWwVkFyMeNOp3lLDjTDz4gYmE70TG5DXHwz0H4F5UcRfWUFjYwOddhtra2todzpQkwnSNEUxt9VLLQtZlkmbw7IOVDH8fvnyuLed5HNZluyqO4vtiKeeaKVS6PX7ePOdd/DO9esYZxky30dmbr9k2d5UXfB7EoVRazmi8br5yIz9v/83bKWgdndhr65C9XqwV1dRjEYi/1pfh9rfh93tQg2HsJtNfVunAzUew261oLa3YXseiskEVpbJ/dMUdr0OtbMDOwhQ9HqwajW57dYt2GEI9dZbsEcjFIMBvNVVrMz3UY9v38bbW1toWBZ28xzldIqLrRZ2RyPYsxlGoxHW1tawt7cHy7LQ7XbR6/WwtrZ2cHnc207yuXq9HjY2NlCr1XDlypUzR7anmmhqvklmFkXoz2aYFgXSZhN5uy2Rh7YE7EsdpsYwlRumsmNZ0TFfJmHdugUny2DduCHKk/feg12WKG/ehF2WsC0L1s2bsAFYt2/DPndO31YUsHZ2YG9uyuPbbZQ7O7CLQu4/HMLuduXx7TbK996Twc0ognXrlmg6t7dhxzHKwQDl/j7i3V1kW1u45XnAZIJ2u41sbw91y4J/6RLy7W10wxDb29u4dOkS3n33XQDAtWvXcPPmTVy6dOng8ri3neRz3bx5E3meIwxDXLx4sSLak4KiKLC/t4e94VBItr+PLEmgNjakMud5cpbi7jA2hufeIUiSxXk09sxYbCDoGeL7wOYmrDiGM1fdOxcvAmEI58IFlM2mrEO6dg1oNOBcugSsrMDpdvVtly4Bq6twNjYAz4NTq6GcC6GdixeBNIXTbAK2Dcf3xW6hXodz4YKoXup1YG9PbOOCAK1Ll7D24Q9j5nlYuXYNbhQh9H3krosGgNX1dVgAzp07B9d1cf78eeTzKuv58+fvuDzubSf5XDDe51nc2fbUEq1UClFRYCfPcSvPsZ1lSIA77byPimKmjhA42iSV181Tz3JvT8ZtbtwAlIJ67z2gLFHcvCkzYI4jt5Ul1NYWEMcobt+GPf9wqd1dIMvkca0Wip0duc3zoCYTYHUV6vZtoNFAsbUFu9EAfB9qvvNMTadiURDHSKdTJP0+or09RN0uytEIRbOJ2dYWEgAd10W+vY3ttTVsb28DAG7evImyLOG6Lm7evHlw3YPedpLP5fs+wjDEc889dzIfkicITy3RACDPMsR5jijLkFEcnCRaMkULtjzXEipzUplfgG4im3bcgG5Ev/WWyJ329+HM7+/M5VHOZIIyz2GVJZzJRG6bTIAsgzOdoswyiVqjkUSt4RDIczjjMco0hZVlcHo9uf/c8cqJY1kcWBRwtraAfh/OvADjdLvwlBI1yOYm1O4uGhsbcJpN1IMA9SyrItoThqeKaNzuydW5+zs76I3HGLguMtO3g3bXVOfHsR7epNuV6U68/L3ZbK7XgR/7MSHpcChRI8+h5j77vCzSFPZ8YFOl6eJtSSLRjrdZllwCKGYz2GkKrKyIt6RlQfX7gOuiGA5hz5vZajCQCJqmcLIM5WSCpN/HdGcHs91dTNfWUI5GyKuI9kTiqSFaURS4sf3/t/ftMZJc1fnfrVuP7q5+d8/07MzaXu/aa/ArYMDxAg4WP0QSiIEkdhwrzgMT54cIGJwoRFiQCAEJIg4miX9SQqKYxBALCWKDUEiQkXkkBgdiDAScYBvs3Xn39Luru6urbt3fH6duV83s7HrtnVn3rOqTSne6nt27ffrc+51zvrOGpVYLDQDjXg9P1etY5RwtzjFSldIqqLtVlfdE08VnKu/XtKijJmNg+/dT6Ymm0drJMMD376cWvb4Pfu650fotnaY1mmXRsbk5IJsFD3tkc02DNE0w16Vjvk/rsOEQHIDUNLBKBTyfB7pd8FJpUnumDYdIzc4mHm2PYFcM7Stf+Qpe/epXb3vsm9/8Jq688spndT8hBFzXheP7CLJZqqbWdXimibFlIahWo1iTSmGK14TFhUzj+08F8es5J482HkMsL5O3CjU7fLUOsyzaxzmNQUDHwsC2WFsDhKAxlYK/ugot5vmQzdIxy4K/tka9zWZnIVotMnjfh9Q0yOEQo/V19FdW0FtdRbdQgOx0kM3l4CwuIqdpyDEGb2UFtUIBKysr8H1/wvgBwOLiInzfn4zP9thO3mtxcRGapsG27cSjPVu8853vxMte9rJN+w4dOvSs7rG1T3VdSvRMEz7ncFyXRHeEoCCvWpspLXrVR0wFeeNxtPim8g+3W6NtgZRyon4sQc0ypJSbR3Usfs52r+PXq/uqv02T5Bg0DTKXo78tC2wwoPo6ejMk1yAl2Nb3EJJCqgZPeYmtAeOt47M9tpP3Opuxq4Z29dVX45d+6ZdO6x7xPtWG78OUEoauw5cSbdfFIJ3GSKlGqXWYyl9Mp4nKlzKS0473O4vrdJxojRYHY9AqFeiMTSh5JiXR9oZBbWzPOQdM08AXFsAMA7xapWOuS+dbFnipROeGU1k2GtExIcBtm46FvaVZuQx+8cVgoxH0Q4egdzrI2DbYaIR0Po/c3BzQaCC3bx94sYi0ZSErJWwA1bk5MF3HwsICUqnUZIoGAPv3759MJ9X4bI/t5L308H0mU8fnACkler0e0un0aYt36roOQ6f+1FzXIcdjuJ4HoRoKqv7Naq2mUqy2ShGoddl2DQPVf7DK8FfnqORc34dsNiE8jyh4AMHSEk37lpYmU0e1L1haAsJpphYGzIP1dcB1ESwvT6aZWpipH3gekMtRCEBKiFYLWioFOA6Cbhey14NsNOB7HlirBXc8TsiQPYJdNbQ3v/nN6Pf74Jzj6quvxp/92Z/hJS95yY7c2xcCXhBQn7OtMtnPFapAUzX9U4m9auv3yUtZFpDPg+dyFJTOZiGLRfJytg0UizQWCuC2DZnPE4UfaubzUMabAxSwBsBDb8wLBWBmBtwwIMtlIl8qFaBUglYqQWMMRiYDdDqwstmEDNkj2BVDsywL1113HV73utehWq3iBz/4Ae644w5cffXVeOihh/CiF73otO4vhEB9fR2O48DbKjMQz7JXSb0n0vqIQxmqup8yNCDyaN0u5OoqibgePUqeaWmJyI3lZfJojJG38n0ah8PIo/k+gkaDgtLHjgGGQZ4w7tF8n6h824ZwHGgh6RJsbECUStAaDXiFAlijAXc0SjzaHsGuGNqRI0dw5MiRyetf+IVfwHXXXYfLL78c73nPe/DFL37xtO4vfR/tfh9jziHjU8C4kI0yvK3iNnFhnjg0jWQJ1PpOESJqfReC+T7l4ek60fuWRfR+Nkte68ABIJUC37+f0rPKZchMhtZdc3Pk7fJ5ACCPJiXYYEDncw5eqwGNBrjrQgYBWKlE67VcDtyyoGUyMEoloFqFZduJR9sjOGNxtEOHDuGNb3wj/vmf/3kTCxbHbbfdhkKhsGnf9ddfj5/+P/9n0z4pJYSUEEAUO1OiOSobZKtylApmbzW2eO2Ymjoqr6hKWuihJCceejTxk58Avg9x9CggJfyYRxNPPw0EAcTiIjAYwFfrN9+HWF8HKhW6TtfhHzsGLdT/EEB0jpTw63VogwGFBfp9cMdB0OlA5PMIGg2Mer2E3j+DuPfee3Hvvfdu2tfpdE7p2jMasN6/fz/G4zEcx0E2ZNXiuPPOO3HFFVds2ud5Hn5Srx93rj8eE0W8VVcxnabEYcYoK8SyonKYrfqNmhYZGedUZKkIk3hjdzX1tKyIctd1yNCjTv4WgkZdp/1btzi9r/5WoYIgoHN8nzbG6F6ZDKRtU0DcNMHU51TXJfT+GcONN96IG2+8cdO+Rx555JR4hzNqaD/+8Y+RTqe3NbKtUM0sPM+DFypd+b4PAWA4GmF5cRHDXo+IC4AMSZXDxIV44tiu/EVhK5miij+V9wMAzqFVqzS98X3wffvAgoDofV0nCn//fiI39u8nmr9cBjSNpo6zs2CmCZ7JEKXvk7QcCwI63zTBy2WwbBbc84BSCSycarJCAVqxCCYlzEoFQa2GdDqd0Pt7BLtiaPV6HTMzM5v2ffe738XnP/95vP71r3/G6+PNLLwwUC3HYyw3m2gAWO730ej34Ss637Yj76Q8VHzKpxD3TluNUE0rlcGF08BNrKPvQ7Za9COwtEQZ+ktLNLVbWYEW5lQGS0tEiih6f2mJyJAgIHq/VKLMfsYgGg1oYXpXwBhR+Y0G3XM0mhAlsl6HzGSAxUUqB1pfh5vJJGTIHsGuGNoNN9yATCaDI0eOYHZ2Fj/84Q/x8Y9/HNlsFh/+8Ief8fpNzSyEgByN0HRdNMZjNAF0XBeD8RhCrbN8P8raVxXVyrPFmcj4+iyurw8cXwiqppZx4kTXiZwIqwT4vn2UcV+r0RRuPKZ9QtAIgBeLNHUbjagOTdOIDHFdSg4ej6PAdhjMRi4HrlSWdR18bg6i1YK+fz8gJQW3x2PonCNTqSCYmUnIkCnHrhjaL/7iL+JTn/oU7rzzTnS7XczOzuK6667DH//xH+PgwYOndA/VzMIDsN7poO776BoGhroO1/fh2Tak0lVU8gNKwEYpSMXTrBRBsrWnmWrXBGyeOsbLZBQYg+z1yKOtrRHtHuYlirU1ysIPpQhgmjQGAdWVqQb16+tE4dfr5LW6XfJoQpBH6/WI3tc0iH4fmq6DDYeQi4sQ6TT0jQ2ITAZBqwVXSvTr9cSj7QHsiqG94x3vwDve8Y7TuodqZsFLJRhCwAg1Cw3ThMYY9aNWnS9tO2oOkUoRGRJ+6ZFOR4amUq7ihIiaFjK2WaPRjzUHVNNMIWj9FEqI81qNMu1nZ8n7uC7tC70chCCPJgR5uzE+4LEAACAASURBVEoFACjQ7brgoQweG4/Jy5kmBbp1nTxaqQTGOYxaDX6rBSOXgzYew0ynIWdmYEkJu1oFEo829Zj6Mhldp7a5upTgmgau62CahkDlNNr2ZhYxvqba2jRCTSWV8YzHlPGvMkviycTbNbdoNiGPHoUIAoinngK6XaLyRyPK0A+nrmJxEej3IVZWgFKJsvDDZGextgaUSpTZDxCFH74XIQRl7/f7QKEAMR6DAQgAyPV1iFQK6HQgbBtBt4vRcIj+2hr6Cb0/9Zh6Q1MIhKD4FWPU9F2tu4bDSENf0fmWFTWwUFu8wFPlXaopplqbbWdo8b9VvmEQQDoO/T0Y0NjvQ3oepDonLBKV4XRTui6kZZGoThDQCECOx5DpNGQqRfvTacgggFYsgnc6FAQP378GCnJjNJrQ/DKk9hN6f7oxlYamKqk9xqD5Psaui43VVbQ4R9800Wm14PV6kdovY1FG/laDik8T1ZZKkXBPvI3tVtVhxToqbxh+ETTGoFsWTSFrNbBMhrI6qlXK8DjnHLBcDnxujoiTdJpoetcFLxbBqlXwbJaOuS4ZA2OUta/r4IYBJgT0dBpaOg2wUM1qMEDm3HPBez3YpRKCXg/6+jpyc3PQOp2E3p9yTJ2hqUrqo/U6NgAYQmCtXsdap4PBzAxGpgnHMDBSQqVK6huIXscZx/i0Mc4gxllFtS6Ll8jEAsMTQzMMyMEAwnGIzDBNouJzOaLpBwOSJGg0SIp8Y4OmgI1GJEnQ6xHxsbFBWSCeRzIHmQw1pEinEYxGkKUSecUwB5ItLkKEpTgu55D1Ovx6Hc7GRkKG7AFMnaEFQYCBEGj6Ptq6DkNKtAB0PQ9jITASAsMggC8ETRs7Hao87nQoeK2ktYOAvJ1lkSKw0rNXYqpKYg6IPJlKx1KZIdGbmpAlLJulTPtul4LRocSAFII8WrlM4jr5PFCtUva+lBTgLhYBxohMKRTAh0PKZwwCqggIj2mpFMxMBkJKMM5hz8zA5xz2xRcDnQ5MXUeg6+BAQobsEUydoQFkbNIwYFQqsGo1WFLCq9cxDONrvpTU62w4BGZnIx1GlfdoWVHldLwOTWngr67SOcrQVI2aYh3jKVhxj7a6SmSIlJS932gg+MlPgHabZONCwiNYWgLqdaL+czmIZpMo/EKBmk8o6t/zIABolgXMziKQJCykex51MnVdaJyDjcdggwG8Y8eAeh2yVCKl5EYj8Wh7BFNpaAo8ZBw1zhEwRgRBLgc5HiNQ1P3cHHDgABnI4iJQKtEW6m+gUIio+3abvJwMBVXj2SFx1jHezyxO7zebkfdJpymLP5WiQlTbppQrw6B9mkYBaMYgCwVq3J5KUcDa96keTQjIapXWaIUCMBrBYIzqzMpluifnSJVKcIVAqliEYAxmLgcvrNC2Z2eBRiPxaFOOqTI03/dJTs73Ka8x3MauC6fZxLhUgjscovf005HRqEwQXT9eMDXONloWGaROva8n00tFhuj65uC16v4S7zHteZCOQ5UDwyGQz9MoBHzHoTWa5xE9n89DDAb0uTwPGkB1a60WpV71+wDn8FUK1nAI0evBsCwy2EwGoteDpmnQCgVo7TaYbUM0mwgMA16nA9nrwVlfT7L39wCmytCWWi3Y9TqWWi2sd7sYZzKwMhk0+n30hECQSqE3HmMAANUqGVtc1jueQhWHMrxej6abIfkw8VSKtYyv0eLtnVQO5NIS5RwaBhEVug7ZakFms0TXj0aQjQbtS6ejUMBwSJn53S6FBVS2fiZDm+dRLzchoKVSsHQd9twcBkEAxqii2s9kYKTT8C0LRjpNhAjnkEBC7+8BTJWhabkc9HIZrNulL2e46A9CryQ5BzMMoFwGNjaIpldGpLI7lBeL/8dxDtRqROmHasETrUbFOiqPpgxNMZkqbYsxIEyJ0tNpouKr1Sh7P5cDa7cpC9/ziOa3bRLg4ZzOc10iTBgjUiVsIcVGI/BcDgHnMDUNRmhUmVwOkjGYlgXkctGYSsEul6HncsgvLIAl2ftTj6kyNMYY6s0m1jsdLC0tYTAewwxjaN1WC6Lfx0gIuCr+pTxSPEamiA1FfsSnjroeifaotC1FgKg4nDK0eBa/2mdZkGEGR9BsArpOo9LQdxyi9cMYXzAYAOk0ZeGHmSpByHgGnQ7lOgYBkSiMgXU6kKkUuOfBGo1IZ19KpIpFBI6DVC43Gd1+H77ror+6mpAhewBTZWiqLzXL5YBiEca558Latw+WrkNvNolACAseJ9n6oxGt1XSdjCIeP9saR4v/Uqpp5tYtDvVayokhs2wWPJMB2m3KtA+lBuRoRPVkxSLlQVarJE0wHpMacRCAD4dEkIS3555HasQAebd0GgYAwzBgMEY6jlLCYAwp09w0ZsLpcjadhjYzg+zsLLSEDJlaTJWhKWg6FV0yjbo/TlKQwi+lprxZnPCI6+rHNwXFIqqyGSXAEw9ix0V5VGaIapIREhay1aKAdahCHKytAaZJAjwBtcoNVlYo8LyxQcSH60ILyZTAdSk4HRq20DTyaFKCDwZURe26SAEUqGYMGU2D8P1N49jzSMzHdSFGIwwaDYhWK/FoU4qpNLRACPQ7HYxbLfiGgW6rBbffRzAYYOx58FQAGogy8lX6VXzap6aNQJTX6DjkDeMJyGptpzL8NY3ur0ptVPC626X1V2jgKoWKj0bkmaSkfZ4XdZMByDMh9FqmSWlZ4Wtp22C9HvRCAdz3yVvlcsjm89DGY2iMwS4UIF130+iXywjCvzE/j+zcHJBOJx5tSjFVhiaCAJ7vYzwew1cUfKUC1u+DhX3Cxu02vE6HGEdVKjMabU69iqdgSUkMo3qthHxUxxllaKZJ91PrNRVXG40io02lIH2f6P1Oh+TiQnbSH42ghbr/QggglSIK3zTh+z55O10nyj/0TEinid4fjcDbbQSNBkQqBd/3EfT78FotMMbg53Lwmk34mUw0tloIxmM6r91Gj3N49XpC708ppsrQNppN9FMpbHQ66Pb7QL8Pv9tF13Ewcl143S6clRW46suvVIkVWaHIjziRoYxHead4n7T4FFRlhmytqo6v78ZjEs4JAqLkg4Ao/kyGsu81jah/JdCj/g6CSJBHymgLq6ilEETHx5KXGWNEzQPHyy+EtP3keKzSIKH3pxNTZWg+AGbb6DcaGPo+ho0GDMNAr93GoNvF6NgxDBcX4ZXLRNUD5ImUd1Kso+qJtrZGhaHKeHw/8oT9fqQJotZ6nhexj2GweSL4YxhAvQ5NCOiGQcSH74OlUkRuGAa1wbVtyuhPpYg4Cb0bCwLqfZ1OE72fTk+yR5jvQ+McPJ2Gmc0inc/DyuUgymWAMWTyeQSj0aZxXCohcF2ks1lgZgb52VkEqRQyqVRC708hpsrQAEyKOlkmA57LwTjnHCI/nn6aij0LBUq74py8UypFhqbqzxSVf8EFZGxKuEcIeq3WX7OzkaHFp47K0NQasN+PKP5cDnI0guCciAhdR+BTcw3hutA0jcR1wjVk0OsR4SEEfQYhqH0u5wgAOhYE0BwH0jShtdsAAL/fh1+pwFtdBZOSptSrqxCeNxnF0aPwx2MEpgmvXocvBHorK2C1Grpra3ClTMiQKcLUGZqCYhjdjQ04i4sYLi9jPBrB63YpYE0nRespIPJoyqupzI6t+iEqITme36imlep6RZ70+5GB1usUXA4Tl7lpkhqxynUM8x5Vk3hoGtH7mkbZ+6MRNRsM3yuXkvQahYCRSsHIZlGYm8OMbePcw4fhlEoAYyjNz6NbKiFfq03GTCaDYDTCgUOH0K9WUajV0CkUkK1WYQQBbCESMmSKMJWGFgiBQEp4vk+VyZkMeaCFBbDVVchqlb74zSZdoDyTgjKWUHp7kt0RZmJA18kTxuvQDCNiI+NFo5pG3s62gR//GFLTIFiYq1guQzjOZC2pJOWE4wDNJikOc065juE6SjgOjeFz/PEY2mBAn9NxIFwXznCI7toa2isr4CB2srm4CACTsb20hMB10clm0Q0727QWF+ELgY3FRQylTMiQKcLUGVogBHr9Pn3ZWi0EjKHf72MsJTwpsUkxf6uuhzI2348k59RxtU8lIavKbDXltKwov5FzyovUtGjqCBAZMhxSTqPjUL4jsJnw0PXNjQjVfvVanQ9sUjAGQLFDFWYIXytyA+G1alQ5jpCSYnIAAsainMeEDJkqTJ2hySCACAK4vg9XSiCVQpBKkVaI40TajUo+bnKhjKaQKrNfQQWpVS2aSi5WU0bFYCo2E6BCUtOk88L3gfV1aIYB3bbBwrZNrFgkDUfHodzGdBrMccBnZsAYIzKEc2oy6Hmk4ej71JAwrKhmAPRyGbquwyiVkAsC5OfmaM3HGPK1GgBsGsfjMcRwiMLcHLiuoxAey1arcFst2FImZMgUYeoMDQAVQDJGzF4qBc2yiO4OA76wrM1UfnyNVqkA550XlbsoKKYxjGdh377NTGM+T0al7ruxQfcYjaJULtOkqaNpUqKz7yMYj0mZamMjkjJot4FmkyQNQPFBLQwRBJ0OjSqe5jjQOh34zSaMRgPjVApdz0OzUEB3ZYUySoZDtJeXIfr9ydh86ikE4zHyALpra/D7fbSWl+F2Omg89RR8y0LbMOAlZMhUYCoNTYEBFAweDkkFS037Oh0yGmAz2aHqy5SXUr+Mao22teMMEJEjhkH7lKG5bmTQKo6WShHhUSgAs7Okz6jr4IUCaTCGHg3FIp3j++C+T1UHoUebFH6GHk2G1L9RKsHQNGTn5lBlDOcdOoReLgcwhvL8PArZLAq12mTMmCYCx8HBQ4fQKRRQqtVQzGZRqFZh+z6Kto1SPo9AyoQMmQJMtaEBYbcVVcqi/gMMg8iJUOsehhERGysrNHXcCpWAfOwY0GrReboeeSwlbaDu1WxSKEEFuFMpIKw9m7TW7feJ3q9UII4dgxbK3gXLy5TzuLFB5AgwIUOCMCi9yaP1ehCdDoJuF6LdxkAI9Dc20F5bgyYlTMtCZ20NXNcnY3tlBcFwiE6phNbaGnRdR2ttDRJAc20NY9sGXBdu4tGmAlNtaBJUney6LqU1jUaUq6jICSDyQEqUJ4xXbb6RJA81GJABra7SNZZFhhQPGQCRbHguR1NItYY791ywMCcRvd6koTsvlSBbLVqvhffktRp5u9EIMp0mNeJwmsqHQ2qjG+o4MimhF4vgmgajXEYWQH52ltZoAIrhL358HI9G8AcDlEMvUAqP5SoVeK0WiraNQjaLQIjEo00BptrQgJA9i08DlZHF93FOay7bJuPY+h8VBGRMGxtEhDgOsLBAVdrDIXm4hQW6vlCI9l14IfDEE1GsbTSCbLchej2Ien0iFwcAfqtFWfj5PES7TYI9zSbg+/D7ffJoYfAZvk8j5/B7PWjtNrxcDkanAzefpzXa8jI6KytQn6S1uAjh+5Nx/ehRYDRC3bbRCqn7jcVFuK6L1cVFDDIZeMUiRktLCb0/BZh6Q1MIVEmLKtRUU0UFJYxq29vfQHnEVIo8Wby9kyJZ1D41fQy1GCdrtDhVr/IVgShnMZ7DiGjaO3kdPwfY1JgQ4X4VomAgup6Hr+MUvjouwutUXqSizeM/Mwm9Px3YE4Y2CUXHPVi81iwOP6Y2rLBVc19VWcfFUtW1KuOfsYhgiXlTLZeDrmmR4rCmEfFRKtG0MpMB63bp2HAIHhalsiAgFWLLAu/1iOZX9D5jMCoVGIYBa2YGeQCl+XkYIXNa2b8fXNdRDKn84twchO/DHwwws7AAK5VCKTyWq1QQ9HrR1JGxhN6fAuwJQ5tABaS3/keoVCshomThrdf1+7RGcxwa63WaTna7Ee1fKNBrz4sIFcchDxcKtspOhwo/FxeBXI7IjWKRCj/7fdJn7Pcp1zEMdgvXpaljJkMkyHBInkmRIVumjj3fj6aO4WdpLS3R1DEc68eOQYZTx/bqKnzfR2NpCa7rYm1pCcNw6pjkOk4H9pahnQhq6rfVkymoaWNYuT3xWqEGIwBK8ZqZiYgQISgmZ9tREehoRB4pNFiezRJdXywSGVKpgM/N0bFikej9wYCkDHyfciODgApAdZ2of8Mgz8c5OOfQOUfaMJAzTchcDgBgWxb8XG7TmLdtSMaQDwV78pYFkcshZ1koZTLIZzIoWhasWg379u1LyJDnGWeHoalp4YmgQgNqGqgyPbJZMtDxmLyZiqWp6eV4HGWVhPE5ORhAdLsUeA6CSXBddDrEEqZSCFotoN0m4R6lRqx09cOE5olHc10yxrCIVXNdBEEANh7D7/Vo/eW6EL0eWD4fjY4DORhAc134vR6Qz8Pv9cBtG+NQe5JbFkaOg3q9vmteKPFop4a9bWjKeBqNKEdxu1/DIKCpYLNJU8ZWC1haoimkIj2Wl8l79XpkWGtrNGazUd5ku02Kw7pOQel8PvJo5TKt28plEuzZzqOFsTre7Ub0vmWBCwGzWITOGFKVCgqcoxJbo1XDtUwpXMuU5uYQ+D6E42B2fh66ZWEmXKOVKhV4nQ5Kto2ZfB7cdXfNCyUe7dSxtw1N1aelUif3aso7DYdkSN0unavCAWtrUQaImlYqwiSbjTzdaAQ5HEIMBhBhVxgRZpb4GxuUZqVpEI0GdZEJQwA+MFmjCdclQR1F7zMG2elgbNvQm02MikW0gwCN5WU0QnpfAtgIaXA1rh09CjEYoJzNor6ygsD3sba4CN91sby4iGEmA1mpYNztAtgdSj6h908de9fQ4qUw1WokZ7AdVOqVkj7QdVqP7d9P1zgOBaxVM0PPI4KkWiXh1cGAvKauU+Y955Os+wlVv5XeZ1tkC+K0fpzeV1NZKRGoc0ID9oUAYwy+70MIsWkMgoC8mhCUnub7m8ctQfuE3n9+sbcNLQgo71GRISeCEMD6OgWs41XUKhYXl6vT9UjHcet5ALR8nhoRBgG4phG9XywCMzM0dZyZAWs0wCsVUsUaDIDY1JGFU8cJvW9Z0ADoxSKMIIBl27AZQyFsVsgYQzmXAyuXUYqNfqkEX9fpvHCfLJeRz+UwUyignMth/9wcZKWC+fn5XaHkd/JeCb0/rdA00g2p1YgdVK2btkO8sjqbjTyb8ibPArLXgxgMKI8xlaJcRympNVNY23ZCMiSToWz/rfR+t0uS4v0+2GgEKQS0sJqcMQZWLMLvdsFyucnodbvwHQf6aATR7YLnchDdLvRMBr7jINA0BOMxVldXoWlaQoY8z9jbhiYl5S2GXuOEUGSHip2p9ddzAMvliKb3PKLpd4AM0YSAmc/DkBLpchklzlGdn4dumiRFsH8/NF3HzNzcZBRhatfcvn0wTXNChpQrFbidDuYKBSwsLIBznpAhU4C9a2iGQW2YcjlaX4WaitvCdWmUkrL2e71oShhPUD4FyH6fAtaNRuTRguC0PZqXy8Fot+G22+gIgdb6OuorK0D4y19fWoIGTMa1pSWIwQD1YnESjF4Og9lrYc2aZVk74mlOdizxaKeGvWdo6tdOUe6+T2SGEtbZDqq6Op5edaIUrmd6fDZLzQaVR+Oc6tFO06MZ+Tx0KWEViyhwjtLsLFgoUFSZm0OwZXRHI/j9PmZqNfDQywFAuVLBoNnEXKGwY54m8Winj71naJpGtLyUZGAqSfhkxiNlFA9TGSTP0dBkpwPR70OsrlKnGCEA1z0tep+F9D5vNjEsFtEMAmwsL2M9lr2/trg4ofAD38fq0aPwHAczuRzWVlYgfB/Li4sYh/T+uNMB53xHaPeE3j997D1DU6lToZwblJiqYg23+zX0Q13GsNvmCaeYp/L4kJI/btsBen/ibUOwOFmj9oejonBk/BpFm8cInp2i3RN6//SwNw0t1O+YZNgPBlGTixNd0+/T2mwwiEptngnb/Odvovc5p0yRQuG06X2jWIQBIFUooGAYKNVqpG3JGCqh8E589F0XXr+PakiCzNRqkADK1SrG3S7mCoUdo90Tev/0sXcMTQWoVVKwT7obEx1GZXjbGZuSKEilaAu1Pk64pjsJtiVDhDg1MmRrriMAwTlYuw3PsqBvbMAxDLQArBeL2FhdJeVmx8H68jL8bncyHnv6aQSOg7Kmob62BtHtYmV5GWJ+Ho3lZQSOk5AhU4S9Y2hAJA8XCpOCMVqvhZ1mTjgtFIJo/VCBalOgOo5TiKntBhnCgwBmpYIMY6jOzuJcy8JFF1yA2WIRjDHsm59HNZ/HbK02GXOWBa/bxWUXXoiNUgm1Wg0z+TxqtRoq2Sw0TUvIkCnC3jC0sPeYBMgbZbOkt6+SfjMZer1d5TUQVVGrgPV4HBEocZzCf/BpebST0Psim8W418Ow30e730en0cB6KM5jWRbWQwEeNW6srkI4DjZmZrAW7lPjysrKjnqakx1LPNqpYfoNLVynMF2PtDyeeioS4EmlKLFYyROcyFhUMSdjZJQqhetZYrfofZ7PwwwC2MUiiqaJSq0GLfzRUNR9fByNRvC73U3CO8DueJrEo50+pt7QGADdtmFUqySE47pAqUTUPkBTxkyGPJXS0N8OnkfTx1IpKu5kLJpyniJ2i973Mxm4zSZ6uRyaUmJtaQnrq6uTf4PlUJRHjUtHj0L0+5uEd3aLdk/o/dPH1BsaAGLoCgXySMUiUfvKQFIpYG4u8mpxw4kbkOoKyjl5RuUB472sTySVEMNu0vsyPobHT0Tv0wnyOOEdNe407Z7Q+6eHvWFomgZerVL18dpa1FJXkRxCRGlVW2l+9R/o+1H7Jc+LMkni2SJb/7O3xKSA3aH3OQC9VEKKMeQqFVRME7WFBZhhovRcKM6j8hln5ubg+T78bneT8M5u0e4JvX/62BOGBgCaaUKrVEghOJ2muJhqdKHWa1vJkPjfIVEB34+k6ZTE3OpqFCqI/yfHQwrqNrtJhnQ6cNpttAE01tYo8z4kDZZD0kCNa0tLEI5znPCOGhMyZLow9Yam2g/B88B6PfJcKysk7V2vk3cql2nqaJqR2A6w2bOF4jooFMhwMpkoR1J5tK3Tx21+WY8jQ3Yoez8hQxIy5PkBC5ulh9r4Wi4HNhrR+mzfvohFVJIE+XykNBzvLhPea4JCgQwViNrnMkb3U2u1uMFtmTruVvZ+4tESj/a8gGkajLA3mu55CEwTXNehVasI9u2LAtfNZtQsXkl3K28Ub+kERLIFquGF6iKjPKHv070ch6aZW40Op0nvK7m5sHI78WiJR3teoSSu4fuQQkD6PoJGA6zRgNZuI8hmKctD0yh3cWkpMpJqNSrqVOPWKeRwSN5QSmIsUymaSm5s0P3i6sRbsk1kuw3hOBG9HwTb0/vFYkLvP8tjCb1/hsE0DVYqhcCyIE0TQbEIkcthPB7DcxxoAE3BpIzWZvV6RO8rw9iaz6j+VudlMjQV7XRoa7fJCJUycdjPLE6SSNOk9rqqLe52VP52WvsJvZ/Q+9MGxhg0AHAc6gktqW0u8zywTAYsnSYjKZUorjY/D/zgBzSVPHYs+nIqYmSrbIEQND1Mp8nohkNK7VL1atUqrfeUtshoNLmnls9DV40FdZ3o/Xx+e3o/CKhFU0LvJ/T+8/0GtgPjHOlCATKXg8xk4A+HELoO3u9P1jyi3SYv5PtkFCporeJkSu1KyuNJEcUyqjzJeJlNuH6CZdF+pc0f0viy24Xo9zeTIZ4H0WgQGWIYm8kQ34/IEHX+dmRILpeQIQkZ8uzgui7+6I/+CPfccw/a7TYuv/xyfPCDH8RrXvOaU79JmONoZLMwggDMNKGlUmAqWD0YRI3jVUOKOEMoZSTlrYLScSgpcGVU8TIaFahWTQrVNJNzIkM0jZoNhtNKXipBViqbyZCwWygfjTaTIVKC93qkvR82IjSCALxQgClEQoYkHu3U8Vu/9Vv47Gc/i9tuuw0XXngh7r77brzuda/Dgw8+iFe84hXPeL2maTBdF87TT8NfWYHX68HPZBA0m9B0naaVR49GBZydDnki2yZPpQLTuh6V02w1NMbISNNpMi7VBMN1ybNt7U7jONQfrdcj7f12GzBNqi/jnOh9IPJonQ6NQkBIubkebTRCQB8UwnHgdbsQtp14tMSjnTr+8z//E5/+9Kdxxx134Pd+7/cAAL/+67+OSy+9FO9+97vxH//xHye9nmkaUqaJarGItBBwOIfR6cArFCBtGwNdB2s24QJkJNksTRlbLfI+oeeZGAuw2dDiv5ZqSqnSsziP8iGVt1PncA7k85QOpgLPIXPI8/mI3i+VyKPlchQCGI2oY4znRR5NBaylhLQsGCG9bwUBsqUSioaReLSzDDtuaJ/5zGeg6zp+53d+Z7LPsiy85S1vwe23346lpSUsLCyc8HqNc+TDBhIZTUPaMBBYFpxiEUPGgFIJWi6H3mOP0VpsNCJPZhjkjdT6C4i8Utzo4mCMKP0wvjVRLFZe0DSjJOVwkz/+MYTrQqyvA6YZ0fvr69B8H2Asyt5vNIjeVx4tTu8DgKZBAhD9PtDpwGu30Wu10BQioffPMuy4oX3nO9/B4cOHkQ0bqSu87GUvAwA8+uijJzU0ANAYI0aPMWjh9E/XdXCACBHVIletq5QRqdZLSikrCCLFq+0MTa3jbJuMy3GifmiWRR4zzlh6HlHymkYUva7T35zTfvVaZfRvba0b30KKn6nUr/C8eNlqQu+fPdhxQ1tZWcG+ffuO26/2LS8vP+M9RNisQWoaAs9DIAQC34celuhzVVGtPJjK3lCdO5VGyNZ12fYPi+Jtrks0v+uSwcWLSRmj1rpBAN0wwGwbfG6OaH7LAsplsFqNaP1qFbxYpGOOQ/Q+Y5Tt73nggwHR+54HzbahMwa7XEbONFFdWMBMECT0/lmGHTe04XAIaxsd/FQY0xqq/MJtwBiDAUB2u/ClhMc5PM4hGw34rRb80QiBriPodsHbbQhFfBgGxdQKhajuDIjqzU6GkJIHEMXRRiPal8lsLiT1fUjfh/A8BI4D9PukwZ/PR40IpSTqIcnODAAAD5tJREFUP50mwsT3IUYjIkpMk1rr+j6C8PNqnge0WvBsG06rhV42C4sxNOt1rCwvJ2TIWYIdN7R0Og1XSXDHMBqNJsdPBI1zzM7Oohw2a7AAYDCAb1nQpYQIp2WaaSKVy8FRtL3rknEMBrRuUwnCnEfpVNsxj8DmUph+n7yYynVMp6OsEE0DhABzHPDwF5c7DiAEuOcRvX/eeeCzs0CnQ2MmA95uQ2azRO+HzCMPmU3D92GkUtAdBznOYadS2F8u47xKBfvm5ydyczNzc2CMoVqrTUZvPIZwHOzfvx/pdBq1Wg2GYaAWngMACwsLk327cWynn7OwsDD5zGcbdtzQ9u3bt+30cCXMmJ+fnz/htf/v/e9HtlJBr9/HGADTdRy45hrse9WrIDUNQ03DmHNoqRRMxuDU62QAKqXKcSIRHjV1VFPJExmaglLYsm0yMrVGi+uQBAECITAOAvJs6TSklBCZDALOwbpdCM+D9DyIfh9yPKb+ZZyDSQkRxtSE74OHMUELQFpK1HQdC9UqLqrVUMpmEQwGMMI1oej1wMfjTaMVBNAzGZimCdu2YRjGZFTr4/i+3Ti208/hnMM0TZoZTCHuvfde3HvvvZv2dTqdU7qWSXkqC5lTx7vf/W7ceeedaDabyIXNzgHgT/7kT/De974Xx44dO44MeeSRR/CSl7wEf/WpT+GiI0ewtLGBZhDAqFSw0emgNR6jp2lYdRy0DQM+gI2nnsLaj36EodIOUTE0z6PXyqsBp7ZWCwIytEwmkqXL549v16vWg4rdDNPDJs9Qf1erZKhra1TWEwTA0aPQ8nlYq6vIzs0hs7KC8+bmMOO6eOWhQ7jq8svxgoMHYRjGcYSBIj3io6Zp0MMUta3HTnbdTh7b6edomkZVEXsE6rv7X//1X7jiiitOeN6Oe7TrrrsOd9xxBz7+8Y/j93//9wFQpsjdd9+Nq6666qSMY61QwHyhAN/zoEsJLZ+nDpaGgUBKZIZDDPt9pIpFDC0L+VwO0nUxGgyi4LQKPKtWu1vZujiLFzdEISJDVSlXagq5dSqjrj3RFIcxoNuFBqLmzXQaBgA+HqMQBMjmctiXyyEXBDhyzjm4aP9+vPKKK5DP5/fUlyzBqWPHDe3KK6/E9ddfj/e85z1YX1/HoUOH8A//8A84evQo7r777pNem9Z1oNeD7HbBgwBetwuv0YD0PGq6Nx5DHwzAHAepRgP5bBbcNNFdXobjOPRLORxGhnAyY9gKGZM6aDSIRNE0WOk0dM6RCmNtRhhqkEEAQ9fBggCprUnLwMSzMk0Df/ppaFIip2moeR5mi0UcqtVQPecc/PwrXoFisQjzZP3dEux57EoK1j/+4z/ife97H+655x60Wi381E/9FL7whS/gla985Umvq5XLOH9mht5YuYwgCLBYr0PmclhaW0Pd93HUcaDv34/Fp55CQ9fhFwoQmob2ygqkbcMdDDCWEkIIeJxDMwx44zGC0Oi8IIAfTlOCMJYFAAFjkKMR2NGjyDzxBMoAqozh4oMHUbBtzJZKYMMhKsUiOOcIej3sKxSQ1nXMVSrP6Ik0TYNlWUilUrAsC6ZpwjTNk5JDCc4e7IqhWZaFj3zkI/jIRz7yrK7jnMMwDBiGAR6uPXTDgNR1GJYFzjn08RjcNMEtC1xKiH4fejYLg3OwdJpyIRlDMB5Tx8x0GlYQwFdFmUEA3/fJwGJrNyklgnYbWioFu1bDnGXhIOe48pJLYPk+5goFpDnHXLUKzjksAPtDtiyZ7iV4JkxdmYymaTABjFstCCEgGw0M19bgNJvoex6c4RC652G8tgZoGgLfh2bb0FotyHodwXgMqWkQ4zGElGC6DglQeUrY2M8AtiVIpOdBW11FwXWxL5PBC2o1XHnhhUj7Pg5Uq7BCY1fvMzGwBKeKqeNROec4p1bD+TMzuGBuDi+/+GL8zAtfiJcfOIAXZLM43zRxnhA4qGkQX/86ztd1HEilcCCXw/mFAvan01jI5XBgfh7nlEpYyOWwkM1izrYxm05HWyZz3FbL5VDO5zFXrWIulUItnUZGCBTSaWSzWaRSKXzmM595XrzYVlo5eebeeubUeTSAjE19kQ3DQCqVwoUHDkDoOgrz8zAqFSzX6/i3u+7Ca//v/4UHoN3pALaNTqeDPucwstlNVLLYriZtC3zPg5tOY3Y0wsWlEq5YWMAFc3ObPNm9996LG2+8cVc//3Z4Pp6bPHPnMJWGth3U+s0yDJiZDFKZDDTOMbOwABEEMFIpaPk8BTwdh9Zx27GBJ8F4NMLANFGQErl0GulMJlmDJdgR7BlDU/B9avwuRiMI18UwzEIZttvQHAemlLAGA7Awl+7ZgLku2HiMSiaDaqmUGFiCHcOeMTRN05DSNPBOB+NuFxnXhT4ew242wRjDuNmEaDYRBAHcXg/iOTyDA8iOxyhyjtRwiFSxOLXpQAn2FqbC0FRG/2OPPXbS84QQSPs+rCBAyvehBwHs4RA657DTaZIPB3CuaU7+fi7QRiOkXRfN1VV06vVNxzqdDh555JHnfO/niufjuckznxnqO3uyqhQAgJwCfPKTnzyuLjLZkm0vbZ/85CdP+h3f8aTi54KNjQ3827/9Gw4cOJBkSiTYUxgOh3jqqafwsz/7s6hWqyc8byoMLUGCsx3JSj9BgjOAxNASJDgDSAwtQYIzgMTQEiQ4A0gMLUGCM4CzxtC+/OUv4+abb8bhw4dh2zYOHTqEW265Bauh2u/pwHVd/OEf/iHm5+eRyWRw1VVX4YEHHtiBd31ifOtb38Lb3/52XHLJJchmszjvvPNwww034PHHH9/V58bxoQ99CJqm4bLLLtv1Zz3yyCN4wxvegEqlAtu2cdlll+Gv/uqvdu153/72t/HGN74R8/PzsG0bL3zhC/GBD3zgmQPPzxFnDb3/0pe+FO12G9dffz0uvPBCPPnkk7jrrruQyWTw6KOPolarPed733jjjcc17fjWt751yk07nguuu+46fOMb38D111+Pyy+/HCsrK7jrrrvQ7/fxzW9+E5dccsmuPFdhcXERF110ETRNw/nnn4/vfe97u/asL33pS7j22mvxkpe8BDfccAOy2SyeeOIJSCnx4Q9/eMef9/3vfx8ve9nLMD8/j7e+9a0ol8t46KGH8IlPfAJveMMbcP/99+/4M6ciM2Qn8PWvf/24fV/72tckY0y+973vfc73ffjhhyVjTP75n//5ZN9oNJIXXHCBfPnLX/6c7/tMeOihh6TneZv2Pf744zKVSsmbbrpp156rcMMNN8jXvOY18pprrpGXXnrprj2n0+nIWq0mf/mXf3nXnrEVt99+u2SMyR/+8Ieb9v/mb/6mZIzJdru94888a6aO2+mRXH311SiXy/if//mf53zfkzXt+MY3vjFR2t1pHDly5LjqgwsuuAAXX3zxaX2eU8HXvvY1fPazn8XHPvaxTdr+u4F/+qd/wvr6Oj70oQ8BABzHQXAaeaqnApV9NDs7u2n/3NzcRFtyp3HWGNp26Pf76PV6J02NeSacStOOMwUpJdbW1k7r8zwThBB4xzvegVtuuWXXp6cA8MADDyCfz+PYsWO46KKLkMvlUCgU8La3vW1bxeudwM0334xarYa3vOUt+O53v4tjx47h05/+NP76r/8at9566+6kAe64j5wifOADH5CMMfnggw8+53tccskl8jWvec1x+3/wgx9Ixpj8+Mc/fhrv8NnhnnvukYwxeffdd+/aM+666y5ZLBblxsaGlFLKV73qVfKyyy7bteddfvnl0rZtadu2fOc73ynvu+8+eeutt0rGmLzxxht37blPPvmkvOiiiyRjbLK9733v27XnTaWhBUEgh8PhKW0nwle/+lWp67r81V/91dN6LwcPHpSvf/3rj9v/5JNPSsaY/Iu/+IvTuv+p4rHHHpP5fF6+4hWvkEEQ7MozNjY2ZLlclh/96Ecn+3bb0A4ePCgZY/Jtb3vbpv1vfetbJWNMPv744zv+zNXVVXn48GF5+PBh+Xd/93fyvvvuk295y1ukpmnyrrvu2vHnSTmlhvbggw9u+qU52fa///u/x13/2GOPyXK5LK+44grZ7/dP671Mg0dbWVmRBw8elOedd55cWVnZtee89a1vlYcPH95Ewuy2oV1yySWSMXYcmfXVr35VMsbkPffcs+PP/N3f/V1p27ZcWlratP/Nb36ztG1bNhqNHX/mVBR+bsULX/hCfOITnzilc+P9tgDg2LFjeO1rX4tSqYR/+Zd/gW3bp/VeTqdpx06g0+ng53/+59HtdvH1r3/9uM+7U3j88cfxt3/7t/jYxz6GxcXFyf7RaITxeIynn34a+XwepVJpR587Pz+PH/7wh8eFXxRR0Wq1dvR5APDv//7vePGLX3zc/921116LT3ziE3j00Ufx6le/ekefOZWGVqvV8Bu/8RvP+rpGo4HXvva18DwPDz744GnFzhRe/OIX4ytf+Qp6vd6mph0PP/wwAOBFL3rRaT/jRBiNRrj22mvxxBNP4IEHHsALXvCCXXvW0tISgiDArbfeiltvvfW44+effz7e9a534aMf/eiOPvelL30pHnjgASwuLuLCCy+c7Fc/bjOhcvVOwvM8UkXbZj+ASY/tHcWO+8jnCf1+X1555ZWyUCjIRx55ZMfuq+Jod9xxx2SfiqMdOXJkx56zFb7vyze84Q3SNE35xS9+cdeeo7CxsSHvv/9++bnPfW6y3X///fLSSy+VBw4ckJ/73Ofkf//3f+/4c7/zne9Ixpj8tV/7tU37b7zxRmma5q5MlW+66SZpWZb80Y9+tGn/m970Jqnr+q4886zJDHnTm96Ez3/+87j55ptxzTXXbDqWy+Xwxje+8Tnf+4YbbsB9992H2267bdK049vf/ja+/OUvP2M/geeKd73rXfjLv/xLXHvttbj++uuPO37TTTftynO34pprrkGj0cD3v//9XXvGb//2b+Pv//7v8Su/8iv4mZ/5GXzlK1/BZz7zGdx+++344Ac/uOPP+973voerrroK+Xweb3/721Eul/GFL3wB//qv/4pbbrkFf/M3f7PjzzxrPNqBAwekpmnbEibnn3/+ad17NBrJP/iDP5D79u2TqVRK/vRP/7T80pe+tEPvfHtcc801J/w8mqbt6rO3vo/dJEOklNLzPPn+979fHjhwQJqmKQ8fPrzrbO7DDz8sf+7nfk7m83lpmqZ8wQteIP/0T/9UCiF25XlnjUdLkGCacVZnhiRIMC1IDC1BgjOAxNASJDgDSAwtQYIzgMTQEiQ4A0gMLUGCM4DE0BIkOANIDC1BgjOAxNASJDgDSAwtQYIzgMTQEiQ4A0gMLUGCM4D/Dxz1wQwdyIQDAAAAAElFTkSuQmCC", - "text/plain": [ - "PyPlot.Figure(PyObject )" - ] - }, - "execution_count": 16, - "metadata": { - "comm_id": "8b4e951a-3075-447c-9edf-97e92c97655f", - "reactive": true - }, - "output_type": "execute_result" - } - ], - "source": [ - "#@manipulate for i in 1:10, j in 1:10\n", - "\n", - "i = 9\n", - "j = 8\n", - "\n", - "#X = IntervalBox((i/10)*2pi..(i+1)/10*2pi, (j/10)*2pi..(j+1)/10*2pi)\n", - "\n", - "X = IntervalBox(0..6, 0..6)\n", - "\n", - "draw_image(x -> iterate(standard_map, 4, x), X)\n", - "\n", - "#axis([0, 2pi, 0, 2pi])\n", - " #axis(\"image\")\n", - "#end" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "mod (generic function with 42 methods)" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import Base.mod \n", - "function mod(X::Interval, width::Real)\n", - " \n", - " \n", - " @show X, width\n", - "\n", - " X /= width\n", - " \n", - " if diam(X) >= 1.\n", - " return [Interval(0, width)]\n", - " end\n", - " \n", - " a = X.lo - floor(X.lo)\n", - " b = X.hi - floor(X.hi)\n", - " \n", - " if a < b\n", - " return [Interval(a, b)*width]\n", - " \n", - " end\n", - " \n", - " return [Interval(0, b)*width, Interval(a, 1)*width]\n", - " \n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.3, 0.5]" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod(Interval(0.3, 0.5), 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 0.19999999999999996]\n", - " [0.3, 1.0] " - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod(Interval(0.3, 1.2), 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 1.0]" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod(Interval(0.3, 1.5), 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "mod (generic function with 42 methods)" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function mod(X::IntervalBox, width::Real)\n", - " x, y = X\n", - " \n", - " xx = mod(x, width)\n", - " yy = mod(y, width)\n", - " \n", - " vec([IntervalBox(x, y) for x in xx, y in yy])\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{Any,1}:\n", - " IntervalBox([0.0, 0.5],[0.09999999999999999, 0.6000000000000001])" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X = IntervalBox(0..0.5, 0.1..0.6)\n", - "mod(X, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{Any,1}:\n", - " IntervalBox([0.0, 0.5],[0.0, 0.10000000000000009])\n", - " IntervalBox([0.0, 0.5],[0.8999999999999999, 1.0]) " - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X = IntervalBox(0..0.5, 0.9..1.1)\n", - "mod(X, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "4-element Array{Any,1}:\n", - " IntervalBox([0.0, 0.20000000000000018],[0.0, 0.20000000000000018])\n", - " IntervalBox([0.7999999999999999, 1.0],[0.0, 0.20000000000000018]) \n", - " IntervalBox([0.0, 0.20000000000000018],[0.7999999999999999, 1.0]) \n", - " IntervalBox([0.7999999999999999, 1.0],[0.7999999999999999, 1.0]) " - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X = IntervalBox(0.8..1.2, 0.8..1.2)\n", - "mod(X, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 0.7168146928204147] \n", - " [5.999999999999998, 6.283185307179587]" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod(6..7, IntervalArithmetic.two_pi(Float64))" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 0.7168146928204147] \n", - " [5.999999999999998, 6.283185307179587]" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod(6..7, @interval(2π))" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[6.283185307179586, 6.283185307179587]" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@interval(2π)" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "6.283185307179586" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2pi" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[6.283185307179586, 6.283185307179587]" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2*@interval(pi)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "6.283185307179586" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2pi" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.7168146928204138" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "7 - ans" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "standard_map (generic function with 2 methods)" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function standard_map(X::IntervalBox, k = 1.0)\n", - " p, θ = X\n", - " \n", - " p′ = mod2pi( p + k*sin(θ) )\n", - " θ′ = mod2pi( θ + p′ )\n", - " \n", - " @show p′, θ′\n", - " \n", - " IntervalBox(p′, θ′)\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "IntervalArithmetic.IntervalBox{N,T}" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function IntervalBox{T}(X::Vector{Interval{T}}, Y::Vector{Interval{T}})\n", - " vec([IntervalBox(x, y) for x in X, y in Y])\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.0, 1.0] × [0.0, 1.0]" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X = IntervalBox(0..1, 0..1)" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.0, 1.8414709848078967]" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p, theta = X\n", - "p + sin(theta)" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "IntervalArithmetic.Interval{Float64}" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "typeof(p + sin(theta))" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(X,width) = ([0.0, 1.8414709848078967],[6.283185307179586, 6.283185307179587])" - ] - }, - { - "data": { - "text/plain": [ - "1-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 1.8414709848078974]" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "mod(p + sin(theta), IntervalArithmetic.two_pi(Float64))" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "mod2pi (generic function with 2 methods)" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod2pi{T}(x::Interval{T}) = mod(x, IntervalArithmetic.two_pi(T))\n", - "\n", - "mod2pi{T}(X::Vector{Interval{T}}) = map(mod2pi, X)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "2-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 0.7168146928204147] \n", - " [5.999999999999998, 6.283185307179587]" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mod2pi(6..7)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[6.283185307179586, 6.283185307179587]" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "IntervalArithmetic.two_pi(Float64)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(X,width) = ([0.0, 1.8414709848078967],[6.283185307179586, 6.283185307179587])" - ] - }, - { - "ename": "LoadError", - "evalue": "LoadError: MethodError: `convert` has no method matching convert(::Type{IntervalArithmetic.Interval{T}}, ::Array{IntervalArithmetic.Interval{Float64},1})\nThis may have arisen from a call to the constructor IntervalArithmetic.Interval{T}(...),\nsince type constructors fall back to convert methods.\nClosest candidates are:\n call{T}(::Type{T}, ::Any)\n convert{T<:Real}(::Type{T<:Real}, !Matched::Complex{T<:Real})\n convert{T<:Number}(::Type{T<:Number}, !Matched::Char)\n ...\nwhile loading In[84], in expression starting on line 1", - "output_type": "error", - "traceback": [ - "LoadError: MethodError: `convert` has no method matching convert(::Type{IntervalArithmetic.Interval{T}}, ::Array{IntervalArithmetic.Interval{Float64},1})\nThis may have arisen from a call to the constructor IntervalArithmetic.Interval{T}(...),\nsince type constructors fall back to convert methods.\nClosest candidates are:\n call{T}(::Type{T}, ::Any)\n convert{T<:Real}(::Type{T<:Real}, !Matched::Complex{T<:Real})\n convert{T<:Number}(::Type{T<:Number}, !Matched::Char)\n ...\nwhile loading In[84], in expression starting on line 1", - "", - " in call at /Users/dpsanders/.julia/v0.4/FixedSizeArrays/src/constructors.jl:92", - " in standard_map at In[77]:9", - " in standard_map at In[77]:2" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "(X,width) = ([0.0, 2.8414709848078976],[6.283185307179586, 6.283185307179587])\n", - "(p′,θ′) = (IntervalArithmetic.Interval{Float64}[[0.0, 1.8414709848078974]],[IntervalArithmetic.Interval{Float64}[[0.0, 2.8414709848078985]]])\n" - ] - } - ], - "source": [ - "standard_map(IntervalBox(0..1, 0..1))" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 1.8414709848078974]" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p = [IntervalArithmetic.Interval{Float64}(0.0, 1.8414709848078974)]" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{IntervalArithmetic.Interval{Float64},1}:\n", - " [0.0, 2.8414709848078985]" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "theta = [@interval(0.0, 2.8414709848078985)]" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{IntervalArithmetic.IntervalBox{2,Float64},1}:\n", - " IntervalBox([0.0, 1.8414709848078974],[0.0, 2.8414709848078985])" - ] - }, - "execution_count": 83, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "IntervalBox(p, theta)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "mod2pi (generic function with 6 methods)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "include(\"standard_map.jl\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "draw_image(standard_map, )" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 0.4.2", - "language": "julia", - "name": "julia-0.4" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "0.4.2" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/Roots of Wilkinson polynomials.ipynb b/examples/Roots of Wilkinson polynomials.ipynb deleted file mode 100644 index e01958857..000000000 --- a/examples/Roots of Wilkinson polynomials.ipynb +++ /dev/null @@ -1,718 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Wilkinson-type polynomials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[Wilkinson-type polynomials](http://en.wikipedia.org/wiki/Wilkinson%27s_polynomial) are of the form\n", - "\n", - "$$W_n(x) = (x-1) \\cdot (x-2) \\cdot \\cdots \\cdot (x-n).$$ \n", - "\n", - "It is well known that it is difficult to calculate the roots of these polynomials. We will investigate how well the `newton` function in the `IntervalArithmetic.jl` package is able to calculate their roots." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We use the `Polynomials` package to calculate the coefficients:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "using Polynomials" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "wilkinson_coefficients (generic function with 1 method)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function wilkinson_coefficients(n)\n", - " p = poly(collect(1:n)) # define a polynomial by its roots\n", - " p.a # the coefficients\n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For example, $W_2$ is given by $W_2(x) = 2 - 3x + x^2$; note the order of the coefficients:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "3-element Array{Int64,1}:\n", - " 2\n", - " -3\n", - " 1" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wilkinson_coefficients(2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "[Horner's method](http://en.wikipedia.org/wiki/Horner%27s_method) is an efficient method for evaluating polynomials. For $W_2$, the idea is to rewrite the polynomial as \n", - "\n", - "$W_2(x) = (x + 3)\\cdot x + 2,$\n", - "\n", - "so that no explicit powers remain." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generating the polynomials " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For convenience, we repeat here code from `test/root_finding_tests/wilkinson_polynomials.jl` to generate efficient versions of the Wilkinson polynomials using metaprogramming to implement Horner's rule" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "generate_wilkinson_horner (generic function with 1 method)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function generate_wilkinson_horner(n)\n", - " coeffs = wilkinson_coefficients(n)\n", - "\n", - " expr = :($(coeffs[end])) # start with highest power\n", - "\n", - " for i in length(coeffs)-1:-1:1\n", - " expr = :($expr*x + $(coeffs[i]))\n", - " end\n", - "\n", - " expr\n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For example, the code generated for $W_3$ is" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - ":(((1x + -6) * x + 11) * x + -6)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "generate_wilkinson_horner(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now generate various Wilkinson polynomials:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "function subscriptify(n::Int)\n", - " subscript_digits = [c for c in \"₀₁₂₃₄₅₆₇₈₉\"]\n", - " dig = reverse(digits(n))\n", - " join([subscript_digits[i+1] for i in dig])\n", - "end\n", - "\n", - "for n in 1:15\n", - " fn_name = symbol(string(\"W\", subscriptify(n)))\n", - " expr = generate_wilkinson_horner(n)\n", - "\n", - " @eval $(fn_name)(x) = $(expr)\n", - "end" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now refer to the polynomials using `W₁`, `W₂`, etc.:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "6-element Array{Int64,1}:\n", - " -6\n", - " 0\n", - " 0\n", - " 0\n", - " 6\n", - " 504" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x = [0, 1, 2, 3, 4, 10]\n", - "map(W₃, x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that indeed `W₃` has roots at $1$, $2$ and $3$." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Rigorous root finding" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now apply the `newton` function from `IntervalArithmetic` to search for roots of the function within a given interval as follows. (In the following, it is necessary to run certain cells twice to eliminate the compilation overhead in the timings.)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "using IntervalArithmetic" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 1.630687196 seconds (54897236 bytes allocated, 4.59% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "3-element Array{(Interval{Float64},Symbol),1}:\n", - " ([0.9999999999999994, 1.0000000000000009],:unique)\n", - " ([1.999999999999999, 2.0000000000000027],:unique) \n", - " ([2.999999999999997, 3.0000000000000004],:unique) " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "@time roots = newton(W₃, @interval(-10, 10))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that `newton` correctly finds the roots; it also *guarantees* that they are unique, i.e. that there is exactly one root in the given interval. We can obtain higher precision by changing the precision in the calculation:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 1.017732564 seconds (14999856 bytes allocated)\n" - ] - }, - { - "data": { - "text/plain": [ - "3-element Array{(Interval{BigFloat},Symbol),1}:\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999999999999568e-01, 1.000000000000000000000000000000000000000000000000000000000000000000000000000069e+00]₂₅₆,:unique)\n", - " ([1.999999999999999999999999999999999999999999999999999999999999999999999999999914e+00, 2.000000000000000000000000000000000000000000000000000000000000000000000000000207e+00]₂₅₆,:unique)\n", - " ([2.999999999999999999999999999999999999999999999999999999999999999999999999999758e+00, 3.000000000000000000000000000000000000000000000000000000000000000000000000000035e+00]₂₅₆,:unique)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, 256)\n", - "@time roots2 = newton(W₃, @interval(-10, 10))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or we can reuse the results found previously with the lower precision:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 0.168942833 seconds (2898596 bytes allocated)\n" - ] - }, - { - "data": { - "text/plain": [ - "3-element Array{(Interval{BigFloat},Symbol),1}:\n", - " ([1e+00, 1e+00]₂₅₆,:unique) \n", - " ([2e+00, 2e+00]₂₅₆,:unique) \n", - " ([2.999999999999999999999999999999999999999999999999999999999999999999999999999758e+00, 3.000000000000000000000000000000000000000000000000000000000000000000000000000035e+00]₂₅₆,:unique)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, 256)\n", - "@time roots3 = newton(W₃, roots)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's try with a more challenging case. For `Float64`, using the `:wide` rounding is much faster:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 5.750922701 seconds (1619874936 bytes allocated, 27.49% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "10-element Array{(Interval{Float64},Symbol),1}:\n", - " ([0.999999999999997, 1.0000000000000042],:unique) \n", - " ([1.9999999999997027, 2.0000000000002287],:unique)\n", - " ([2.9999999999975757, 3.000000000003865],:unique) \n", - " ([3.9999999999716045, 4.000000000029477],:unique) \n", - " ([4.99999999982392, 5.0000000001432605],:unique) \n", - " ([5.999999999690147, 6.000000000378698],:unique) \n", - " ([6.999999999507423, 7.000000000780629],:unique) \n", - " ([7.999999999455639, 8.00000000084168],:unique) \n", - " ([8.999999999350004, 9.000000000346732],:unique) \n", - " ([9.999999999923057, 10.000000000090695],:unique) " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, Float64)\n", - "setrounding(Interval, :narrow)\n", - "@time roots = newton(W₁₀, @interval(-20, 20))" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 0.602897027 seconds (136606384 bytes allocated, 27.03% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "10-element Array{(Interval{Float64},Symbol),1}:\n", - " ([0.9999999999999781, 1.000000000000022],:unique) \n", - " ([1.9999999999986873, 2.0000000000015774],:unique)\n", - " ([2.9999999999769145, 3.00000000002351],:unique) \n", - " ([3.9999999998149893, 4.000000000198532],:unique) \n", - " ([4.9999999993051, 5.000000000881577],:unique) \n", - " ([5.999999997587125, 6.000000002318674],:unique) \n", - " ([6.999999995966628, 7.000000003814153],:unique) \n", - " ([7.999999996382491, 8.000000004036211],:unique) \n", - " ([8.999999998178597, 9.000000001849779],:unique) \n", - " ([9.999999999564606, 10.000000000468848],:unique) " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, Float64)\n", - "setrounding(Interval, :wide)\n", - "@time roots = newton(W₁₀, @interval(-20, 20))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using directly higher precision is rather costly:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 27.047184688 seconds (2373800544 bytes allocated, 49.94% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "10-element Array{(Interval{BigFloat},Symbol),1}:\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999999999982555e-01, 1.000000000000000000000000000000000000000000000000000000000000000000000000001986e+00]₂₅₆,:unique)\n", - " ([1.999999999999999999999999999999999999999999999999999999999999999999999999897851e+00, 2.000000000000000000000000000000000000000000000000000000000000000000000000132513e+00]₂₅₆,:unique)\n", - " ([2.999999999999999999999999999999999999999999999999999999999999999999999998161947e+00, 3.000000000000000000000000000000000000000000000000000000000000000000000001994126e+00]₂₅₆,:unique)\n", - " ([3.999999999999999999999999999999999999999999999999999999999999999999999986277439e+00, 4.00000000000000000000000000000000000000000000000000000000000000000000001396503e+00]₂₅₆,:unique) \n", - " ([4.999999999999999999999999999999999999999999999999999999999999999999999933772609e+00, 5.000000000000000000000000000000000000000000000000000000000000000000000064709913e+00]₂₅₆,:unique)\n", - " ([5.999999999999999999999999999999999999999999999999999999999999999999999812336334e+00, 6.000000000000000000000000000000000000000000000000000000000000000000000185915499e+00]₂₅₆,:unique)\n", - " ([6.999999999999999999999999999999999999999999999999999999999999999999999686873877e+00, 7.000000000000000000000000000000000000000000000000000000000000000000000298166897e+00]₂₅₆,:unique)\n", - " ([7.999999999999999999999999999999999999999999999999999999999999999999999723217154e+00, 8.000000000000000000000000000000000000000000000000000000000000000000000280624352e+00]₂₅₆,:unique)\n", - " ([8.999999999999999999999999999999999999999999999999999999999999999999999864519933e+00, 9.000000000000000000000000000000000000000000000000000000000000000000000140370073e+00]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999999964236037e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000003457259e+01]₂₅₆,:unique)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, 256)\n", - "@time roots2 = newton(W₁₀, @interval(-20, 20))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Whereas reusing the previously-found roots is, of course, much faster:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 0.02859459 seconds (6755144 bytes allocated)\n" - ] - }, - { - "data": { - "text/plain": [ - "10-element Array{(Interval{BigFloat},Symbol),1}:\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999999999981691e-01, 1.00000000000000000000000000000000000000000000000000000000000000000000000000171e+00]₂₅₆,:unique) \n", - " ([1.999999999999999999999999999999999999999999999999999999999999999999999999890355e+00, 2.000000000000000000000000000000000000000000000000000000000000000000000000109645e+00]₂₅₆,:unique)\n", - " ([2.999999999999999999999999999999999999999999999999999999999999999999999998081009e+00, 3.000000000000000000000000000000000000000000000000000000000000000000000001815703e+00]₂₅₆,:unique)\n", - " ([3.999999999999999999999999999999999999999999999999999999999999999999999986651765e+00, 4.000000000000000000000000000000000000000000000000000000000000000000000014338872e+00]₂₅₆,:unique)\n", - " ([4.999999999999999999999999999999999999999999999999999999999999999999999938941667e+00, 5.000000000000000000000000000000000000000000000000000000000000000000000062004858e+00]₂₅₆,:unique)\n", - " ([5.999999999999999999999999999999999999999999999999999999999999999999999804832056e+00, 6.00000000000000000000000000000000000000000000000000000000000000000000017982548e+00]₂₅₆,:unique) \n", - " ([6.999999999999999999999999999999999999999999999999999999999999999999999692673789e+00, 7.000000000000000000000000000000000000000000000000000000000000000000000295631387e+00]₂₅₆,:unique)\n", - " ([7.999999999999999999999999999999999999999999999999999999999999999999999696081483e+00, 8.000000000000000000000000000000000000000000000000000000000000000000000264270074e+00]₂₅₆,:unique)\n", - " ([8.999999999999999999999999999999999999999999999999999999999999999999999852277853e+00, 9.000000000000000000000000000000000000000000000000000000000000000000000149859909e+00]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999999965533397e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000003311687e+01]₂₅₆,:unique)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, 256)\n", - "@time roots3 = newton(W₁₀, roots)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, for very difficult polynomials, even with `Float64` the method starts to suffer. We use the `clean_roots` function to remove identical roots, but even then, there are, for some reason, several almost-repeated roots:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 2.890292212 seconds (943686744 bytes allocated, 30.37% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "60-element Array{(Interval{Float64},Symbol),1}:\n", - " ([0.9999999999999738, 1.000000000000032],:unique) \n", - " ([1.9999999999968605, 2.000000000003299],:unique) \n", - " ([2.999999999937011, 3.0000000000693854],:unique) \n", - " ([3.9999999992490975, 4.00000000077714],:unique) \n", - " ([4.999999993998892, 5.0000000058092455],:unique) \n", - " ([5.999999972275639, 6.000000028158782],:unique) \n", - " ([6.999999857327201, 7.000000098943499],:unknown) \n", - " ([6.9999998573272, 7.0000000989435],:unknown) \n", - " ([6.999999857327201, 7.000000098943499],:unknown) \n", - " ([6.999999857327202, 7.000000098943498],:unknown) \n", - " ([7.999999725661288, 8.000000258515469],:unknown) \n", - " ([7.999999725661287, 8.00000025851547],:unknown) \n", - " ([7.999999725661288, 8.000000258515469],:unknown) \n", - " ⋮ \n", - " ([9.999999645289092, 10.000000170076977],:unknown) \n", - " ([9.999999645289094, 10.000000170076975],:unknown) \n", - " ([9.999999645289092, 10.000000170076977],:unknown) \n", - " ([9.999999645289105, 10.000000170076964],:unknown) \n", - " ([9.999999645289103, 10.000000170076966],:unknown) \n", - " ([9.999999645289105, 10.000000170076964],:unknown) \n", - " ([9.99999964528911, 10.000000170076959],:unknown) \n", - " ([10.999999942608941, 10.999999968904618],:unknown)\n", - " ([10.99999996890448, 10.999999995200257],:unknown) \n", - " ([10.999999995200069, 11.000000021495845],:unknown)\n", - " ([11.000000021495657, 11.000000047791433],:unknown)\n", - " ([11.999999992524769, 12.000000007143052],:unique) " - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, Float64)\n", - "setrounding(Interval, :wide)\n", - "@time roots = newton(W₁₂, @interval(-20, 20))\n", - "roots = IntervalArithmetic.clean_roots(roots)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see that the method is unable to resolve several of the roots, and for some reason gives lots of similar, repeated intervals. We can increase the precision as follows, but even using the `clean_roots` function, we still have many repeated roots:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "elapsed time: 2.106868243 seconds (161580440 bytes allocated, 59.87% gc time)\n" - ] - }, - { - "data": { - "text/plain": [ - "50-element Array{(Interval{BigFloat},Symbol),1}:\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999999999975473e-01, 1.000000000000000000000000000000000000000000000000000000000000000000000000002366e+00]₂₅₆,:unique)\n", - " ([1.999999999999999999999999999999999999999999999999999999999999999999999999764993e+00, 2.000000000000000000000000000000000000000000000000000000000000000000000000245854e+00]₂₅₆,:unique)\n", - " ([2.999999999999999999999999999999999999999999999999999999999999999999999994929464e+00, 3.000000000000000000000000000000000000000000000000000000000000000000000005324129e+00]₂₅₆,:unique)\n", - " ([3.999999999999999999999999999999999999999999999999999999999999999999999937344597e+00, 4.000000000000000000000000000000000000000000000000000000000000000000000058873728e+00]₂₅₆,:unique)\n", - " ([4.99999999999999999999999999999999999999999999999999999999999999999999957930183e+00, 5.000000000000000000000000000000000000000000000000000000000000000000000455049532e+00]₂₅₆,:unique) \n", - " ([5.999999999999999999999999999999999999999999999999999999999999999999998289307937e+00, 6.0000000000000000000000000000000000000000000000000000000000000000000017348676e+00]₂₅₆,:unique) \n", - " ([6.999999999999999999999999999999999999999999999999999999999999999999994717476021e+00, 7.00000000000000000000000000000000000000000000000000000000000000000000513411087e+00]₂₅₆,:unique) \n", - " ([6.999999999999999999999999999999999999999999999999999999999999999999994822307845e+00, 7.000000000000000000000000000000000000000000000000000000000000000000005256356596e+00]₂₅₆,:unique)\n", - " ([6.999999999999999999999999999999999999999999999999999999999999999999994899012015e+00, 7.000000000000000000000000000000000000000000000000000000000000000000005525577958e+00]₂₅₆,:unique)\n", - " ([6.999999999999999999999999999999999999999999999999999999999999999999994899012084e+00, 7.000000000000000000000000000000000000000000000000000000000000000000005525577889e+00]₂₅₆,:unique)\n", - " ([7.999999999999999999999999999999999999999999999999999999999999999999990665382833e+00, 8.000000000000000000000000000000000000000000000000000000000000000000009332907137e+00]₂₅₆,:unique)\n", - " ([7.999999999999999999999999999999999999999999999999999999999999999999990891866975e+00, 8.000000000000000000000000000000000000000000000000000000000000000000008848659617e+00]₂₅₆,:unique)\n", - " ([7.999999999999999999999999999999999999999999999999999999999999999999990911681317e+00, 8.000000000000000000000000000000000000000000000000000000000000000000008693706441e+00]₂₅₆,:unique)\n", - " ⋮ \n", - " ([8.999999999999999999999999999999999999999999999999999999999999999999990752837996e+00, 9.000000000000000000000000000000000000000000000000000000000000000000010522281514e+00]₂₅₆,:unique)\n", - " ([8.999999999999999999999999999999999999999999999999999999999999999999990752839101e+00, 9.000000000000000000000000000000000000000000000000000000000000000000010522280408e+00]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999992679846183e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000669176436e+01]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999992737306827e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000666267346e+01]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999992737306965e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000666267332e+01]₂₅₆,:unique)\n", - " ([9.99999999999999999999999999999999999999999999999999999999999999999999281911359e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000749767448e+01]₂₅₆,:unique) \n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999992857780411e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000710108089e+01]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999993040980215e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000710201138e+01]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999993040980353e+00, 1.000000000000000000000000000000000000000000000000000000000000000000000710201125e+01]₂₅₆,:unique)\n", - " ([9.999999999999999999999999999999999999999999999999999999999999999999993061431353e+00, 1.00000000000000000000000000000000000000000000000000000000000000000000077233044e+01]₂₅₆,:unique) \n", - " ([1.099999999999999999999999999999999999999999999999999999999999999999999699198822e+01, 1.100000000000000000000000000000000000000000000000000000000000000000000309166875e+01]₂₅₆,:unique)\n", - " ([1.199999999999999999999999999999999999999999999999999999999999999999999942951958e+01, 1.200000000000000000000000000000000000000000000000000000000000000000000054277974e+01]₂₅₆,:unique)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "setprecision(Interval, 256)\n", - "@time roots2 = newton(W₁₂, roots)\n", - "roots2 = IntervalArithmetic.clean_roots(roots2)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 0.3.9-pre", - "language": "julia", - "name": "julia-0.3" - }, - "language_info": { - "name": "julia", - "version": "0.3.9" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/standard_map.jl b/examples/standard_map.jl deleted file mode 100644 index 84096cf38..000000000 --- a/examples/standard_map.jl +++ /dev/null @@ -1,69 +0,0 @@ -using IntervalArithmetic - -import Base.mod2pi - -function standard_map(X::IntervalBox, k = 1.0) - p, θ = X - - p′ = p + k*sin(θ) - @show p′ - θ′ = mod2pi( θ + p′ ) - p′ = mod2pi(p′) - - @show p′, θ′ - @show typeof(p′), typeof(θ′) - - IntervalBox(p′, θ′) -end - -function IntervalBox(X::Vector{Interval{T}}, Y::Vector{Interval{T}}) where T - vec([IntervalBox(x, y) for x in X, y in Y]) -end - -function iterate(f, n, x) - for i in 1:n - x = f(x) - end - x -end - - -import Base.mod -function mod(X::Interval, width::Real) - - - @show X, width - - X /= width - - if diam(X) >= 1. - - return [Interval(0, 1) * width] - end - - a = X.lo - floor(X.lo) - b = X.hi - floor(X.hi) - - if a < b - return [Interval(a, b)*width] - - end - - return [Interval(0, b)*width, Interval(a, 1)*width] - -end - - -function mod(X::IntervalBox, width::Real) - x, y = X - - xx = mod(x, width) - yy = mod(y, width) - - vec([IntervalBox(x, y) for x in xx, y in yy]) -end - - -mod2pi(x::Interval{T}) where {T} = mod(x, IntervalArithmetic.two_pi(T)) - -mod2pi(X::Vector{Interval{T}}) where {T} = vcat(map(mod2pi, X)...) diff --git a/ext/IADiffRulesExt.jl b/ext/IADiffRulesExt.jl new file mode 100644 index 000000000..431043e44 --- /dev/null +++ b/ext/IADiffRulesExt.jl @@ -0,0 +1,12 @@ +module IADiffRulesExt + +using IntervalArithmetic, DiffRules + +function DiffRules._abs_deriv(x::Interval) + r = sign(bareinterval(x)) + d = decoration(x) + d = min(d, ifelse(in_interval(0, x), trv, d)) # if `x` contains 0, then `trv` decoration + return IntervalArithmetic._unsafe_interval(r, d, isguaranteed(x)) +end + +end diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index f3257e9d9..82d3fce0a 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -5,20 +5,6 @@ import FastRounding import RoundingEmulator using SetRounding -using EnumX - -import Base: - +, -, *, /, \, inv, //, muladd, fma, sqrt, - sinh, cosh, tanh, coth, csch, sech, asinh, acosh, atanh, acoth, - rad2deg, deg2rad, sin, cos, tan, cot, csc, sec, asin, acos, atan, acot, sinpi, cospi, sincospi, - exp, log, exp2, exp10, log2, log10, cbrt, hypot, ^, - zero, one, eps, typemin, typemax, abs, abs2, min, max, - float, big, - floor, ceil, trunc, sign, round, copysign, flipsign, - expm1, log1p, - precision, - show, - parse, hash import Base.MPFR: MPFRRoundingMode import Base.MPFR: MPFRRoundUp, MPFRRoundDown, MPFRRoundNearest, MPFRRoundToZero, MPFRRoundFromZero @@ -34,30 +20,11 @@ end # include("intervals/intervals.jl") -export BareInterval, bareinterval, Interval, interval, decoration, @I_str, - isguaranteed, diam, radius, mid, midradius, scaled_mid, mag, mig, hull, - emptyinterval, isempty_interval, - isequal_interval, - in_interval, - issubset_interval, isstrictsubset_interval, - precedes, strictprecedes, - isweakless, isstrictless, - isthinzero, isthin, - isbounded, isunbounded, - isdisjoint_interval, intersect_interval, setdiff_interval, - entireinterval, isentire_interval, nai, isnai, iscommon, isatomic, - inf, sup, bounds, mince, - dist, - IntervalRounding, - cancelminus, cancelplus, - fastpow, extended_div, nthroot, nthpow, - bisect, - overlap, Overlap include("rand.jl") include("display.jl") -export setdisplay + export setdisplay include("symbols.jl") diff --git a/src/display.jl b/src/display.jl index db411583d..31561dca7 100644 --- a/src/display.jl +++ b/src/display.jl @@ -1,7 +1,7 @@ mutable struct DisplayParameters - format :: Symbol + format :: Symbol decorations :: Bool - sigdigits :: Int + sigdigits :: Int end function Base.show(io::IO, ::MIME"text/plain", params::DisplayParameters) @@ -15,35 +15,31 @@ function Base.show(io::IO, ::MIME"text/plain", params::DisplayParameters) end end -const display_params = DisplayParameters(:standard, true, 6) # default +const display_params = DisplayParameters(:infsup, true, 6) # default """ setdisplay(format::Symbol; decorations::Bool, sigdigits::Int) - setdisplay() Change the format used by `show` to display intervals. -Initially, the display options are `format = :standard`, `decorations = false` -and `sigdigits = 6`. - -If any of the three argument `format`, `decorations` and `sigdigits` is omitted, -then their value is left unchanged. - -If the three arguments are omitted, i.e. calling `setdisplay()`, then the values -are reset to the default display options. - Possible options: - `format` can be: - - `:standard`: `[1, 2]`. - - `:midpoint`: display `x::Interval` in the form "mid(x) ± radius(x)". - - `:full`: display the entire bounds regardless of `sigdigits`. -- `sigdigits`: number (greater or equal to 1) of significant digits to display. + - `:infsup`: display intervals as `[a, b]`. + - `:midpoint`: display intervals as `m ± r`. + - `:full`: display interval bounds entirely, ignoring `sigdigits`. - `decorations`: display the decorations or not. +- `sigdigits`: number (greater or equal to 1) of significant digits to display. -# Example -``` -julia> x = interval(0.1, 0.3) # Default display options -[0.0999999, 0.300001] +Initially, the display options are set to +`setdisplay(:infsup; decorations = false, sigdigits = 6)`. If any of the three +argument `format`, `decorations` and `sigdigits` is omitted, then their value is +left unchanged. + +# Examples + +```jldoctest +julia> x = interval(0.1, 0.3) # default display options +[0.0999999, 0.300001]_com julia> setdisplay(:full) Display parameters: @@ -52,14 +48,23 @@ Display parameters: - significant digits: 6 (ignored) julia> x -Interval(0.09999999999999999, 0.30000000000000004) +Interval(0.09999999999999999, 0.30000000000000004, com) -julia> setdisplay(:standard; sigdigits = 3) +julia> setdisplay(:infsup; sigdigits = 3) Display parameters: - format: standard - decorations: true - significant digits: 3 +julia> x +[0.0999, 0.301]_com + +julia> setdisplay(; decorations = false) +Display parameters: + - format: standard + - decorations: false + - significant digits: 3 + julia> x [0.0999, 0.301] ``` @@ -68,8 +73,8 @@ function setdisplay(format::Symbol = display_params.format; decorations::Bool = display_params.decorations, sigdigits::Int = display_params.sigdigits) - format ∉ (:standard, :midpoint, :full) && return throw(ArgumentError("`format` must be `:standard`, `:midpoint` or `:full`.")) - sigdigits < 1 && return throw(ArgumentError("`sigdigits` must be `≥ 1`.")) + format ∉ (:infsup, :midpoint, :full) && return throw(ArgumentError("`format` must be `:infsup`, `:midpoint` or `:full`")) + sigdigits < 1 && return throw(ArgumentError("`sigdigits` must be `≥ 1`")) display_params.format = format display_params.decorations = decorations @@ -80,10 +85,10 @@ end # printing mechanism -show(io::IO, ::MIME"text/plain", a::Union{BareInterval,Interval,Complex{<:Interval}}) = +Base.show(io::IO, ::MIME"text/plain", a::Union{BareInterval,Interval,Complex{<:Interval}}) = print(io, _str_repr(a, display_params.format)) -function show(io::IO, a::Union{BareInterval,Interval,Complex{<:Interval}}) +function Base.show(io::IO, a::Union{BareInterval,Interval,Complex{<:Interval}}) get(io, :compact, false) && return print(io, _str_repr(a, display_params.format)) return print(io, _str_repr(a, :full)) end @@ -91,14 +96,14 @@ end # `String` representation function _str_repr(a::BareInterval{T}, format::Symbol) where {T<:NumTypes} - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` str_interval = _str_basic_repr(a, format) format === :full && return string("BareInterval{", T, "}(", str_interval, ')') return str_interval end function _str_repr(a::BareInterval{BigFloat}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` str_interval = _str_basic_repr(a, format) format === :full && return string("BareInterval{BigFloat}(", str_interval, ')') if format === :midpoint && str_interval != "∅" @@ -108,8 +113,8 @@ function _str_repr(a::BareInterval{BigFloat}, format::Symbol) end function _str_repr(a::Interval{T}, format::Symbol) where {T<:NumTypes} - # `format` is either `:standard`, `:midpoint` or `:full` - str_interval = _str_basic_repr(bareinterval(a), format) + # `format` is either `:infsup`, `:midpoint` or `:full` + str_interval = _str_basic_repr(a.bareinterval, format) # use `a.bareinterval` to not print a warning if `a` is an NaI if isguaranteed(a) format === :full && return string("Interval{", T, "}(", str_interval, ", ", decoration(a), ')') display_params.decorations || return str_interval @@ -128,8 +133,8 @@ function _str_repr(a::Interval{T}, format::Symbol) where {T<:NumTypes} end function _str_repr(a::Interval{BigFloat}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` - str_interval = _str_basic_repr(bareinterval(a), format) + # `format` is either `:infsup`, `:midpoint` or `:full` + str_interval = _str_basic_repr(a.bareinterval, format) # use `a.bareinterval` to not print a warning if `a` is an NaI if isguaranteed(a) format === :full && return string("Interval{BigFloat}(", str_interval, ", ", decoration(a), ')') if format === :midpoint && str_interval != "∅" @@ -148,10 +153,10 @@ function _str_repr(a::Interval{BigFloat}, format::Symbol) end function _str_repr(x::Complex{<:Interval}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` if format === :full return string(_str_repr(real(x), format), " + ", _str_repr(imag(x), format), "im") - elseif format === :standard + elseif format === :infsup display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") return string(_str_repr(real(x), format), " + ", _str_repr(imag(x), format), "im") else @@ -161,7 +166,7 @@ function _str_repr(x::Complex{<:Interval}, format::Symbol) end function _str_repr(x::Complex{Interval{BigFloat}}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") return string(_str_repr(real(x), format), " + ", _str_repr(imag(x), format), "im") end @@ -169,7 +174,7 @@ end # function _str_basic_repr(a::BareInterval{<:AbstractFloat}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" sigdigits = display_params.sigdigits @@ -189,7 +194,7 @@ function _str_basic_repr(a::BareInterval{<:AbstractFloat}, format::Symbol) end function _str_basic_repr(a::BareInterval{Float32}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" sigdigits = display_params.sigdigits @@ -231,7 +236,7 @@ function _str_basic_repr(a::BareInterval{Float32}, format::Symbol) end function _str_basic_repr(a::BareInterval{Float16}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" sigdigits = display_params.sigdigits @@ -252,7 +257,7 @@ function _str_basic_repr(a::BareInterval{Float16}, format::Symbol) end function _str_basic_repr(a::BareInterval{<:Rational}, format::Symbol) - # `format` is either `:standard`, `:midpoint` or `:full` + # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" format === :full && return string(a.lo, ", ", sup(a)) diff --git a/src/intervals/arithmetic/absmax.jl b/src/intervals/arithmetic/absmax.jl index a01d90731..ef4509d07 100644 --- a/src/intervals/arithmetic/absmax.jl +++ b/src/intervals/arithmetic/absmax.jl @@ -3,47 +3,47 @@ # Section 10.5.3 """ - abs(a::BareInterval) - abs(a::Interval) + abs(x::BareInterval) + abs(x::Interval) Implement the `abs` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function abs(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - return _unsafe_bareinterval(T, mig(a), mag(a)) +function Base.abs(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return _unsafe_bareinterval(T, mig(x), mag(x)) end -abs(a::Interval) = _unsafe_interval(abs(bareinterval(a)), decoration(a), isguaranteed(a)) +Base.abs(x::Interval) = _unsafe_interval(abs(bareinterval(x)), decoration(x), isguaranteed(x)) """ - abs2(a::BareInterval) - abs2(a::Interval) + abs2(x::BareInterval) + abs2(x::Interval) -Implement the square absolute value; this is semantically equivalent to `nthpow(a, 2)`. +Implement the square absolute value; this is semantically equivalent to `pown(x, 2)`. """ -abs2(a::BareInterval) = nthpow(a, 2) # not in the IEEE Standard 1788-2015 +Base.abs2(x::BareInterval) = pown(x, 2) # not in the IEEE Standard 1788-2015 -abs2(a::Interval) = _unsafe_interval(abs2(bareinterval(a)), decoration(a), isguaranteed(a)) +Base.abs2(x::Interval) = _unsafe_interval(abs2(bareinterval(x)), decoration(x), isguaranteed(x)) for f ∈ (:min, :max) @eval begin """ - $($f)(a::BareInterval, b::BareInterval) - $($f)(a::Interval, b::Interval) + $($f)(x::BareInterval, y::BareInterval) + $($f)(x::Interval, y::Interval) Implement the `$($f)` function of the IEEE Standard 1788-2015 (Table 9.1). """ - function $f(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isempty_interval(b) && return b - return _unsafe_bareinterval(T, $f(inf(a), inf(b)), $f(sup(a), sup(b))) + function Base.$f(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isempty_interval(y) && return y + return _unsafe_bareinterval(T, $f(inf(x), inf(y)), $f(sup(x), sup(y))) end - $f(a::BareInterval, b::BareInterval) = $f(promote(a, b)...) + Base.$f(x::BareInterval, y::BareInterval) = $f(promote(x, y)...) - function $f(a::Interval, b::Interval) - r = $f(bareinterval(a), bareinterval(b)) - d = min(decoration(a), decoration(b)) - t = isguaranteed(a) & isguaranteed(b) + function Base.$f(x::Interval, y::Interval) + r = $f(bareinterval(x), bareinterval(y)) + d = min(decoration(x), decoration(y)) + t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end end diff --git a/src/intervals/arithmetic/basic.jl b/src/intervals/arithmetic/basic.jl index d7e8f2d49..945712ecc 100644 --- a/src/intervals/arithmetic/basic.jl +++ b/src/intervals/arithmetic/basic.jl @@ -2,83 +2,86 @@ # Section 9.1 of the IEEE Standard 1788-2015 and required for set-based flavor # in Section 10.5.3 -+(a::BareInterval) = a # not in the IEEE Standard 1788-2015 +Base.:+(x::BareInterval) = x # not in the IEEE Standard 1788-2015 -+(a::Interval) = a +Base.:+(x::Interval) = x """ - +(a::BareInterval, b::BareInterval) - +(a::Interval, b::Interval) + +(x::BareInterval, y::BareInterval) + +(x::Interval, y::Interval) Implement the `add` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function +(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isempty_interval(b) && return b - return @round(T, inf(a) + inf(b), sup(a) + sup(b)) +function Base.:+(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isempty_interval(y) && return y + return @round(T, inf(x) + inf(y), sup(x) + sup(y)) end -+(a::BareInterval, b::BareInterval) = +(promote(a, b)...) +Base.:+(x::BareInterval, y::BareInterval) = +(promote(x, y)...) -function +(a::Interval, b::Interval) - r = bareinterval(a) + bareinterval(b) - d = min(decoration(a), decoration(b), decoration(r)) - t = isguaranteed(a) & isguaranteed(b) +function Base.:+(x::Interval, y::Interval) + r = bareinterval(x) + bareinterval(y) + d = min(decoration(x), decoration(y), decoration(r)) + t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end """ - -(a::BareInterval) - -(a::Interval) + -(x::BareInterval) + -(x::Interval) Implement the `neg` function of the IEEE Standard 1788-2015 (Table 9.1). """ --(a::BareInterval{T}) where {T<:NumTypes} = _unsafe_bareinterval(T, -sup(a), -inf(a)) +function Base.:-(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return _unsafe_bareinterval(T, -sup(x), -inf(x)) +end --(a::Interval) = _unsafe_interval(-bareinterval(a), decoration(a), isguaranteed(a)) +Base.:-(x::Interval) = _unsafe_interval(-bareinterval(x), decoration(x), isguaranteed(x)) """ - -(a::BareInterval, b::BareInterval) - -(a::Interval, b::Interval) + -(x::BareInterval, y::BareInterval) + -(x::Interval, y::Interval) Implement the `sub` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function -(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isempty_interval(b) && return b - return @round(T, inf(a) - sup(b), sup(a) - inf(b)) +function Base.:-(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isempty_interval(y) && return y + return @round(T, inf(x) - sup(y), sup(x) - inf(y)) end --(a::BareInterval, b::BareInterval) = -(promote(a, b)...) +Base.:-(x::BareInterval, y::BareInterval) = -(promote(x, y)...) -function -(a::Interval, b::Interval) - r = bareinterval(a) - bareinterval(b) - d = min(decoration(a), decoration(b), decoration(r)) - t = isguaranteed(a) & isguaranteed(b) +function Base.:-(x::Interval, y::Interval) + r = bareinterval(x) - bareinterval(y) + d = min(decoration(x), decoration(y), decoration(r)) + t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end """ - *(a::BareInterval, b::BareInterval) - *(a::Interval, b::Interval) + *(x::BareInterval, y::BareInterval) + *(x::Interval, y::Interval) Implement the `mul` function of the IEEE Standard 1788-2015 (Table 9.1). !!! note The behavior of `*` is flavor dependent for some edge cases. """ -function *(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isempty_interval(b) && return b - isthinzero(a) && return a - isthinzero(b) && return b - isbounded(a) && isbounded(b) && return _mult(*, a, b) - return _mult((x, y, r) -> _unbounded_mult(x, y, r), a, b) +function Base.:*(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isempty_interval(y) && return y + isthinzero(x) && return x + isthinzero(y) && return y + isbounded(x) & isbounded(y) && return _mult(*, x, y) + return _mult((x, y, r) -> _unbounded_mult(x, y, r), x, y) end -*(a::BareInterval, b::BareInterval) = *(promote(a, b)...) +Base.:*(x::BareInterval, y::BareInterval) = *(promote(x, y)...) -function *(a::Interval, b::Interval) - r = bareinterval(a) * bareinterval(b) - d = min(decoration(a), decoration(b), decoration(r)) - t = isguaranteed(a) & isguaranteed(b) +function Base.:*(x::Interval, y::Interval) + r = bareinterval(x) * bareinterval(y) + d = min(decoration(x), decoration(y), decoration(r)) + t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end @@ -108,43 +111,43 @@ function _mult(op, a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} end """ - inv(a::BareInterval) - inv(a::Interval) + inv(x::BareInterval) + inv(x::Interval) Implement the `recip` function of the IEEE Standard 1788-2015 (Table 9.1). !!! note The behavior of `inv` is flavor dependent for some edge cases. """ -function inv(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - if in_interval(0, a) - inf(a) < 0 == sup(a) && return @round(T, typemin(T), inv(inf(a))) - inf(a) == 0 < sup(a) && return @round(T, inv(sup(a)), typemax(T)) - inf(a) < 0 < sup(a) && return entireinterval(BareInterval{T}) - isthinzero(a) && return div_by_thin_zero(_unsafe_bareinterval(T, one(T), one(T))) +function Base.inv(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + if in_interval(0, x) + inf(x) < 0 == sup(x) && return @round(T, typemin(T), inv(inf(x))) + inf(x) == 0 < sup(x) && return @round(T, inv(sup(x)), typemax(T)) + inf(x) < 0 < sup(x) && return entireinterval(BareInterval{T}) + isthinzero(x) && return div_by_thin_zero(_unsafe_bareinterval(T, one(T), one(T))) end - return @round(T, inv(sup(a)), inv(inf(a))) + return @round(T, inv(sup(x)), inv(inf(x))) end -function inv(a::Interval) - x = bareinterval(a) - r = inv(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(in_interval(0, x), trv, d)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.inv(x::Interval) + bx = bareinterval(x) + r = inv(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(in_interval(0, bx), trv, d)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ - /(a::BareInterval, b::BareInterval) - /(a::Interval, b::Interval) + /(x::BareInterval, y::BareInterval) + /(x::Interval, y::Interval) Implement the `div` function of the IEEE Standard 1788-2015 (Table 9.1). !!! note The behavior of `/` is flavor dependent for some edge cases. """ -function /(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} +function Base.:/(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a isempty_interval(b) && return b isthinzero(b) && return div_by_thin_zero(a) @@ -171,108 +174,110 @@ function /(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} end end end -/(a::BareInterval, b::BareInterval) = /(promote(a, b)...) -\(a::BareInterval, b::BareInterval) = /(b, a) - -function /(a::Interval, b::Interval) - x = bareinterval(b) - r = bareinterval(a) / x - d = min(decoration(a), decoration(b), decoration(r)) - d = min(d, ifelse(in_interval(0, x), trv, d)) - t = isguaranteed(a) & isguaranteed(b) +Base.:/(x::BareInterval, y::BareInterval) = /(promote(x, y)...) + +function Base.:/(x::Interval, y::Interval) + by = bareinterval(y) + r = bareinterval(x) / by + d = min(decoration(x), decoration(y), decoration(r)) + d = min(d, ifelse(in_interval(0, by), trv, d)) + t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end +Base.:\(x::BareInterval, y::BareInterval) = /(y, x) + """ - //(a::BareInterval, b::BareInterval) - //(a::Interval, b::Interval) + //(x::BareInterval, y::BareInterval) + //(x::Interval, y::Interval) -Implement the rational division; this is semantically equivalent to `a / b`. +Implement the rational division; this is semantically equivalent to `x / y`. """ -//(a::BareInterval, b::BareInterval) = a / b # not in the IEEE Standard 1788-2015 +Base.://(x::BareInterval, y::BareInterval) = /(x, y) # not in the IEEE Standard 1788-2015 -//(a::Interval, b::Interval) = /(a, b) +Base.://(x::Interval, y::Interval) = /(x, y) """ - muladd(a::BareInterval, b::BareInterval c::BareInterval) - muladd(a::Interval, b::Interval c::Interval) + muladd(x::BareInterval, y::BareInterval z::BareInterval) + muladd(x::Interval, y::Interval z::Interval) -Implement the combined multiply-add; this is semantically equivalent to `a * b + c` +Implement the combined multiply-add; this is semantically equivalent to `x * y + z`. """ -muladd(a::F, b::F, c::F) where {F<:BareInterval} = a * b + c # not in the IEEE Standard 1788-2015 -muladd(a::BareInterval, b::BareInterval, c::BareInterval) = muladd(promote(a, b, c)...) +Base.muladd(x::BareInterval{T}, y::BareInterval{T}, z::BareInterval{T}) where {T<:NumTypes} = x * y + z # not in the IEEE Standard 1788-2015 +Base.muladd(x::BareInterval, y::BareInterval, z::BareInterval) = muladd(promote(x, y, z)...) -function muladd(a::Interval, b::Interval, c::Interval) - r = muladd(bareinterval(a), bareinterval(b), bareinterval(c)) - d = min(decoration(a), decoration(b), decoration(c), decoration(r)) - t = isguaranteed(a) & isguaranteed(b) & isguaranteed(c) +function Base.muladd(x::Interval, y::Interval, z::Interval) + r = muladd(bareinterval(x), bareinterval(y), bareinterval(z)) + d = min(decoration(x), decoration(y), decoration(z), decoration(r)) + t = isguaranteed(x) & isguaranteed(y) & isguaranteed(z) return _unsafe_interval(r, d, t) end """ - fma(a::BareInterval, b::BareInterval, c::BareInterval) - fma(a::Interval, b::Interval, c::Interval) + fma(x::BareInterval, y::BareInterval, z::BareInterval) + fma(x::Interval, y::Interval, z::Interval) Implement the `fma` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function fma(a::BareInterval{T}, b::BareInterval{T}, c::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isempty_interval(b) && return b - isempty_interval(c) && return c +function Base.fma(x::BareInterval{T}, y::BareInterval{T}, z::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isempty_interval(y) && return y + isempty_interval(z) && return z - if isentire_interval(a) - isthinzero(b) && return c + if isentire_interval(x) + isthinzero(y) && return z return entireinterval(BareInterval{T}) - elseif isentire_interval(b) - isthinzero(a) && return c + elseif isentire_interval(y) + isthinzero(x) && return z return entireinterval(BareInterval{T}) end lo = setrounding(T, RoundDown) do - lo1 = fma(inf(a), inf(b), inf(c)) - lo2 = fma(inf(a), sup(b), inf(c)) - lo3 = fma(sup(a), inf(b), inf(c)) - lo4 = fma(sup(a), sup(b), inf(c)) + lo1 = fma(inf(x), inf(y), inf(z)) + lo2 = fma(inf(x), sup(y), inf(z)) + lo3 = fma(sup(x), inf(y), inf(z)) + lo4 = fma(sup(x), sup(y), inf(z)) return minimum(filter(x -> !isnan(x), (lo1, lo2, lo3, lo4))) end hi = setrounding(T, RoundUp) do - hi1 = fma(inf(a), inf(b), sup(c)) - hi2 = fma(inf(a), sup(b), sup(c)) - hi3 = fma(sup(a), inf(b), sup(c)) - hi4 = fma(sup(a), sup(b), sup(c)) + hi1 = fma(inf(x), inf(y), sup(z)) + hi2 = fma(inf(x), sup(y), sup(z)) + hi3 = fma(sup(x), inf(y), sup(z)) + hi4 = fma(sup(x), sup(y), sup(z)) return maximum(filter(x -> !isnan(x), (hi1, hi2, hi3, hi4))) end return _unsafe_bareinterval(T, lo, hi) end -fma(a::BareInterval, b::BareInterval, c::BareInterval) = fma(promote(a, b, c)...) +Base.fma(x::BareInterval, y::BareInterval, z::BareInterval) = fma(promote(x, y, z)...) -function fma(a::Interval, b::Interval, c::Interval) - r = fma(bareinterval(a), bareinterval(b), bareinterval(c)) - d = min(decoration(a), decoration(b), decoration(c), decoration(r)) - t = isguaranteed(a) & isguaranteed(b) & isguaranteed(c) +function Base.fma(x::Interval, y::Interval, z::Interval) + r = fma(bareinterval(x), bareinterval(y), bareinterval(z)) + d = min(decoration(x), decoration(y), decoration(z), decoration(r)) + t = isguaranteed(x) & isguaranteed(y) & isguaranteed(z) return _unsafe_interval(r, d, t) end """ - sqrt(a::BareInterval) + sqrt(x::BareInterval) + sqrt(x::Interval) Implement the `sqrt` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function sqrt(a::BareInterval{T}) where {T<:NumTypes} +function Base.sqrt(x::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - x = intersect_interval(a, domain) + x = intersect_interval(x, domain) isempty_interval(x) && return x lo, hi = bounds(x) return @round(T, sqrt(lo), sqrt(hi)) end -function sqrt(a::Interval{T}) where {T<:NumTypes} +function Base.sqrt(x::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - x = bareinterval(a) - r = sqrt(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(issubset_interval(x, domain), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) + bx = bareinterval(x) + r = sqrt(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(issubset_interval(bx, domain), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) end diff --git a/src/intervals/arithmetic/hyperbolic.jl b/src/intervals/arithmetic/hyperbolic.jl index f3c752c23..68fd34b3d 100644 --- a/src/intervals/arithmetic/hyperbolic.jl +++ b/src/intervals/arithmetic/hyperbolic.jl @@ -2,11 +2,10 @@ # Section 9.1 of the IEEE Standard 1788-2015 and required for set-based flavor # in Section 10.5.3 - # Float64 versions of functions missing from CRlibm for f ∈ (:tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth) - @eval function $f(a::BareInterval{Float64}) + @eval function Base.$f(a::BareInterval{Float64}) isempty_interval(a) && return a return BareInterval{Float64}($f(_bigequiv(a))) end @@ -17,18 +16,18 @@ end for f ∈ (:sinh, :tanh, :asinh) @eval begin """ - $($f)(a::BareInterval) - $($f)(a::Interval) + $($f)(::BareInterval) + $($f)(::Interval) Implement the `$($f)` function of the IEEE Standard 1788-2015 (Table 9.1). """ - function $f(a::BareInterval{T}) where {T<:NumTypes} + function Base.$f(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a lo, hi = bounds(a) return @round(T, $f(lo), $f(hi)) end - function $f(a::Interval) + function Base.$f(a::Interval) r = $f(bareinterval(a)) d = min(decoration(a), decoration(r)) return _unsafe_interval(r, d, isguaranteed(a)) @@ -37,29 +36,29 @@ for f ∈ (:sinh, :tanh, :asinh) end """ - cosh(a::BareInterval) - cosh(a::Interval) + cosh(::BareInterval) + cosh(::Interval) Implement the `cosh` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function cosh(a::BareInterval{T}) where {T<:NumTypes} +function Base.cosh(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a return @round(T, cosh(mig(a)), cosh(mag(a))) end -function cosh(a::Interval) +function Base.cosh(a::Interval) r = cosh(bareinterval(a)) d = min(decoration(a), decoration(r)) return _unsafe_interval(r, d, isguaranteed(a)) end """ - coth(a::BareInterval) - coth(a::Interval) + coth(::BareInterval) + coth(::Interval) Implement the `coth` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function coth(a::BareInterval{T}) where {T<:NumTypes} +function Base.coth(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a isthinzero(a) && return emptyinterval(BareInterval{T}) lo, hi = bounds(a) @@ -74,7 +73,7 @@ function coth(a::BareInterval{T}) where {T<:NumTypes} end end -function coth(a::Interval) +function Base.coth(a::Interval) x = bareinterval(a) r = coth(x) d = min(decoration(a), decoration(r)) @@ -83,12 +82,12 @@ function coth(a::Interval) end """ - sech(a::BareInterval) - sech(a::Interval) + sech(::BareInterval) + sech(::Interval) Implement the `sech` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function sech(a::BareInterval{T}) where {T<:NumTypes} +function Base.sech(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a lo, hi = bounds(a) if lo ≥ 0 # decreasing function @@ -100,19 +99,19 @@ function sech(a::BareInterval{T}) where {T<:NumTypes} end end -function sech(a::Interval) +function Base.sech(a::Interval) r = sech(bareinterval(a)) d = min(decoration(a), decoration(r)) return _unsafe_interval(r, d, isguaranteed(a)) end """ - csch(a::BareInterval) - csch(a::Interval) + csch(::BareInterval) + csch(::Interval) Implement the `csch` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function csch(a::BareInterval{T}) where {T<:NumTypes} +function Base.csch(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a isthinzero(a) && return emptyinterval(BareInterval{T}) lo, hi = bounds(a) @@ -127,7 +126,7 @@ function csch(a::BareInterval{T}) where {T<:NumTypes} end end -function csch(a::Interval) +function Base.csch(a::Interval) x = bareinterval(a) r = csch(x) d = min(decoration(a), decoration(r)) @@ -136,12 +135,12 @@ function csch(a::Interval) end """ - acosh(a::BareInterval) - acosh(a::Interval) + acosh(::BareInterval) + acosh(::Interval) Implement the `acosh` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function acosh(a::BareInterval{T}) where {T<:NumTypes} +function Base.acosh(a::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, one(T), typemax(T)) x = intersect_interval(a, domain) isempty_interval(x) && return x @@ -149,7 +148,7 @@ function acosh(a::BareInterval{T}) where {T<:NumTypes} return @round(T, acosh(lo), acosh(hi)) end -function acosh(a::Interval{T}) where {T<:NumTypes} +function Base.acosh(a::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, one(T), typemax(T)) x = bareinterval(a) r = acosh(x) @@ -159,12 +158,12 @@ function acosh(a::Interval{T}) where {T<:NumTypes} end """ - atanh(a::BareInterval) - atanh(a::Interval) + atanh(::BareInterval) + atanh(::Interval) Implement the `atanh` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function atanh(a::BareInterval{T}) where {T<:NumTypes} +function Base.atanh(a::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) x = intersect_interval(a, domain) isempty_interval(x) && return x @@ -173,22 +172,22 @@ function atanh(a::BareInterval{T}) where {T<:NumTypes} return bareinterval(T, res_lo, res_hi) end -function atanh(a::Interval{T}) where {T<:NumTypes} +function Base.atanh(a::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) x = bareinterval(a) r = atanh(x) d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isstrictsubset_interval(x, domain), d, trv)) + d = min(d, ifelse(isinterior(x, domain), d, trv)) return _unsafe_interval(r, d, isguaranteed(a)) end """ - acoth(a::BareInterval) - acoth(a::Interval) + acoth(::BareInterval) + acoth(::Interval) Implement the `acoth` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function acoth(a::BareInterval{T}) where {T<:NumTypes} +function Base.acoth(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a singular_domain = _unsafe_bareinterval(T, -one(T), one(T)) issubset_interval(a, singular_domain) && return emptyinterval(BareInterval{T}) @@ -206,7 +205,7 @@ function acoth(a::BareInterval{T}) where {T<:NumTypes} end end -function acoth(a::Interval{T}) where {T<:NumTypes} +function Base.acoth(a::Interval{T}) where {T<:NumTypes} singular_domain = _unsafe_bareinterval(T, -one(T), one(T)) x = bareinterval(a) r = acoth(x) diff --git a/src/intervals/arithmetic/integer.jl b/src/intervals/arithmetic/integer.jl index 2ccce8fcc..4a18a41e7 100644 --- a/src/intervals/arithmetic/integer.jl +++ b/src/intervals/arithmetic/integer.jl @@ -2,56 +2,112 @@ # 9.1 of the IEEE Standard 1788-2015 and required for set-based flavor in # Section 10.5.3 -for f ∈ (:sign, :ceil, :floor, :trunc) - @eval begin - """ - $($f)(a::BareInterval) - $($f)(a::Interval) - - Implement the `$($f)` function of the IEEE Standard 1788-2015 (Table 9.1). - """ - function $f(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - lo, hi = bounds(a) - return _unsafe_bareinterval(T, $f(lo), $f(hi)) - end +""" + sign(x::BareInterval) + sign(x::Interval) - function $f(a::Interval) - r = $f(bareinterval(a)) - d = decoration(a) - d = min(d, ifelse(isthin(r), d, def)) - return _unsafe_interval(r, d, isguaranteed(a)) - end - end +Implement the `sign` function of the IEEE Standard 1788-2015 (Table 9.1). +""" +function Base.sign(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + lo, hi = bounds(x) + return _unsafe_bareinterval(T, sign(lo), sign(hi)) +end + +function Base.sign(x::Interval) + r = sign(bareinterval(x)) + d = decoration(x) + d = min(d, ifelse(isthin(r), d, def)) + return _unsafe_interval(r, d, isguaranteed(x)) +end + +""" + ceil(x::BareInterval) + ceil(x::Interval) + +Implement the `ceil` function of the IEEE Standard 1788-2015 (Table 9.1). +""" +function Base.ceil(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + lo, hi = bounds(x) + return _unsafe_bareinterval(T, ceil(lo), ceil(hi)) +end + +function Base.ceil(x::Interval) + r = ceil(bareinterval(x)) + d = decoration(x) + d = min(d, ifelse(isinteger(sup(x)), dac, d)) + d = min(d, ifelse(isthin(r), d, def)) + return _unsafe_interval(r, d, isguaranteed(x)) +end + +""" + floor(x::BareInterval) + floor(x::Interval) + +Implement the `floor` function of the IEEE Standard 1788-2015 (Table 9.1). +""" +function Base.floor(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + lo, hi = bounds(x) + return _unsafe_bareinterval(T, floor(lo), floor(hi)) +end + +function Base.floor(x::Interval) + r = floor(bareinterval(x)) + d = decoration(x) + d = min(d, ifelse(isinteger(sup(x)), dac, d)) + d = min(d, ifelse(isthin(r), d, def)) + return _unsafe_interval(r, d, isguaranteed(x)) +end + +""" + trunc(x::BareInterval) + trunc(x::Interval) + +Implement the `trunc` function of the IEEE Standard 1788-2015 (Table 9.1). +""" +function Base.trunc(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + lo, hi = bounds(x) + return _unsafe_bareinterval(T, trunc(lo), trunc(hi)) +end + +function Base.trunc(x::Interval) + r = trunc(bareinterval(x)) + d = decoration(x) + d = min(d, ifelse((isinteger(inf(x)) & (inf(x) < 0)) | (isinteger(sup(x)) & (sup(x) > 0)), dac, d)) + d = min(d, ifelse(isthin(r), d, def)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ - round(a::BareInterval[, RoundingMode]) - round(a::Interval[, RoundingMode]) + round(x::BareInterval, [RoundingMode]) + round(x::Interval, [RoundingMode]) -Return the interval with limits rounded to an integer. +Return an interval with the bounds of `x` rounded to an integer. -Implement the functions `roundTiesToEven` and `roundTiesToAway` of the -IEEE Standard 1788-2015. +Implement the functions `roundTiesToEven` and `roundTiesToAway` of the IEEE Standard 1788-2015. """ -round(a::Union{BareInterval,Interval}) = round(a, RoundNearest) -round(a::Union{BareInterval,Interval}, ::RoundingMode{:ToZero}) = trunc(a) -round(a::Union{BareInterval,Interval}, ::RoundingMode{:Up}) = ceil(a) -round(a::Union{BareInterval,Interval}, ::RoundingMode{:Down}) = floor(a) +Base.round(x::Union{BareInterval,Interval}) = round(x, RoundNearest) +Base.round(x::Union{BareInterval,Interval}, ::RoundingMode{:ToZero}) = trunc(x) +Base.round(x::Union{BareInterval,Interval}, ::RoundingMode{:Up}) = ceil(x) +Base.round(x::Union{BareInterval,Interval}, ::RoundingMode{:Down}) = floor(x) for (S, R) ∈ ((:(:Nearest), :RoundNearest), (:(:NearestTiesAway), :RoundNearestTiesAway)) @eval begin - function round(a::BareInterval{T}, ::RoundingMode{$S}) where {T<:NumTypes} - isempty_interval(a) && return a - lo, hi = bounds(a) + function Base.round(x::BareInterval{T}, ::RoundingMode{$S}) where {T<:NumTypes} + isempty_interval(x) && return x + lo, hi = bounds(x) return _unsafe_bareinterval(T, round(lo, $R), round(hi, $R)) end - function round(a::Interval, ::RoundingMode{$S}) - r = round(bareinterval(a), $R) - d = decoration(a) + function Base.round(x::Interval, ::RoundingMode{$S}) + r = round(bareinterval(x), $R) + d = decoration(x) + d = min(d, ifelse(isinteger(2*inf(x)) | isinteger(2*sup(x)), dac, d)) d = min(d, ifelse(isthin(r), d, def)) - return _unsafe_interval(r, d, isguaranteed(a)) + return _unsafe_interval(r, d, isguaranteed(x)) end end end diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 9f3290401..73fe38293 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -32,9 +32,9 @@ Base.@assume_effects :terminates_locally function _positive_power_by_squaring(x: return y end -nthpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = BareInterval{T}(nthpow(_bigequiv(x), n)) +pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = BareInterval{T}(pown(_bigequiv(x), n)) -function nthpow(a::BareInterval{BigFloat}, n::Integer) +function pown(a::BareInterval{BigFloat}, n::Integer) isempty_interval(a) && return a iszero(n) && return one(BareInterval{BigFloat}) n == 1 && return a @@ -86,11 +86,11 @@ end Implement the `pow` function of the IEEE Standard 1788-2015 (Table 9.1). """ -^(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}(_bigequiv(x)^y) +Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}(_bigequiv(x)^y) -^(x::BareInterval, y::BareInterval) = ^(promote(x, y)...) +Base.:^(x::BareInterval, y::BareInterval) = ^(promote(x, y)...) -function ^(x::BareInterval{BigFloat}, y::BareInterval) +function Base.:^(x::BareInterval{BigFloat}, y::BareInterval) isempty_interval(y) && return y domain = _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat)) x = intersect_interval(x, domain) @@ -113,7 +113,7 @@ function _pow(a::BareInterval{BigFloat}, x::BigFloat) return emptyinterval(BareInterval{BigFloat}) end - isinteger(x) && return nthpow(a, Integer(x)) + isinteger(x) && return pown(a, Integer(x)) x == 0.5 && return sqrt(a) a = intersect_interval(a, domain) @@ -153,7 +153,7 @@ function _pow(a::BareInterval{BigFloat}, x::Rational{T}) where {T<:Integer} return emptyinterval(a) end - isinteger(x) && return nthpow(a, T(x)) + isinteger(x) && return pown(a, T(x)) x == (1//2) && return sqrt(a) @@ -167,16 +167,16 @@ function _pow(a::BareInterval{BigFloat}, x::Rational{T}) where {T<:Integer} a = intersect_interval(a, _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat))) end - b = nthroot(a, q) + b = rootn(a, q) p == 1 && return b - return nthpow(b, p) + return pown(b, p) end for f ∈ (:exp, :expm1) @eval begin - function $f(a::BareInterval{T}) where {T<:NumTypes} + function Base.$f(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a return @round( T, $f(inf(a)), $f(sup(a)) ) end @@ -185,9 +185,9 @@ end for f ∈ (:exp2, :exp10, :cbrt) @eval begin - $f(a::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}($f(_bigequiv(a))) # no CRlibm version + Base.$f(a::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}($f(_bigequiv(a))) # no CRlibm version - function $f(a::BareInterval{BigFloat}) + function Base.$f(a::BareInterval{BigFloat}) isempty_interval(a) && return a return @round( BigFloat, $f(inf(a)), $f(sup(a)) ) end @@ -195,37 +195,37 @@ for f ∈ (:exp2, :exp10, :cbrt) end for f ∈ (:log, :log2, :log10) - @eval function $f(a::BareInterval{T}) where {T<:NumTypes} + @eval function Base.$f(a::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) a = intersect_interval(a, domain) - (isempty_interval(a) || sup(a) ≤ 0) && return emptyinterval(BareInterval{T}) + isempty_interval(a) | (sup(a) ≤ 0) && return emptyinterval(BareInterval{T}) return @round( T, $f(inf(a)), $f(sup(a)) ) end end -function log1p(a::BareInterval{T}) where {T<:NumTypes} +function Base.log1p(a::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), typemax(T)) a = intersect_interval(a, domain) - (isempty_interval(a) || sup(a) ≤ -1) && return emptyinterval(BareInterval{T}) + isempty_interval(a) | (sup(a) ≤ -1) && return emptyinterval(BareInterval{T}) @round( T, log1p(inf(a)), log1p(sup(a)) ) end """ - nthroot(a::BareInterval, n::Integer) + rootn(a::BareInterval, n::Integer) Compute the real `n`-th root of `a`. """ -function nthroot(a::BareInterval{BigFloat}, n::Integer) +function rootn(a::BareInterval{BigFloat}, n::Integer) isempty_interval(a) && return a n == 1 && return a n == 2 && return sqrt(a) n == 0 && return emptyinterval(a) # n < 0 && isthinzero(a) && return emptyinterval(a) - n < 0 && return inv(nthroot(a, -n)) + n < 0 && return inv(rootn(a, -n)) alo, ahi = bounds(a) ahi < 0 && iseven(n) && return emptyinterval(BareInterval{BigFloat}) @@ -241,17 +241,17 @@ function nthroot(a::BareInterval{BigFloat}, n::Integer) return bareinterval(BigFloat, low , high) end -function nthroot(a::BareInterval{T}, n::Integer) where {T<:NumTypes} +function rootn(a::BareInterval{T}, n::Integer) where {T<:NumTypes} n == 1 && return a n == 2 && return sqrt(a) abig = _bigequiv(a) if n < 0 - issubnormal(mag(a)) && return inv(nthroot(a, -n)) - return BareInterval{T}(inv(nthroot(abig, -n))) + issubnormal(mag(a)) && return inv(rootn(a, -n)) + return BareInterval{T}(inv(rootn(abig, -n))) end - b = nthroot(abig, n) + b = rootn(abig, n) return BareInterval{T}(b) end @@ -260,7 +260,7 @@ end Compute the hypotenuse. """ -hypot(x::BareInterval, y::BareInterval) = sqrt(nthpow(x, 2) + nthpow(y, 2)) +Base.hypot(x::BareInterval, y::BareInterval) = sqrt(pown(x, 2) + pown(y, 2)) """ fastpow(x::BareInterval, n::Integer) @@ -304,14 +304,14 @@ fastpow(x::BareInterval{T}, y::S) where {T<:NumTypes,S<:Real} = # overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 Base.literal_pow(::typeof(^), x::Interval, ::Val{p}) where {p} = x^p -function nthpow(x::Interval, n::Integer) - r = nthpow(bareinterval(x), n) +function pown(x::Interval, n::Integer) + r = pown(bareinterval(x), n) d = min(decoration(x), decoration(r)) d = min(d, ifelse(n < 0 && in_interval(0, x), trv, d)) return _unsafe_interval(r, d, isguaranteed(x)) end -function ^(xx::Interval, qq::Interval) +function Base.:^(xx::Interval, qq::Interval) x = bareinterval(xx) q = bareinterval(qq) r = x^q @@ -324,12 +324,12 @@ function ^(xx::Interval, qq::Interval) end return _unsafe_interval(r, trv, t) end -^(x::Interval, y::Real) = ^(promote(x, y)...) -^(x::Real, y::Interval) = ^(promote(x, y)...) +Base.:^(x::Interval, y::Real) = ^(promote(x, y)...) +Base.:^(x::Real, y::Interval) = ^(promote(x, y)...) # needed to resolve ambiguities -^(x::Interval, n::Integer) = x ^ (n//1) +Base.:^(x::Interval, n::Integer) = x ^ (n//1) for S ∈ (:Rational, :AbstractFloat) - @eval function ^(x::Interval{T}, y::$S) where {T<:NumTypes} + @eval function Base.:^(x::Interval{T}, y::$S) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) bx = bareinterval(x) bx = intersect_interval(bx, domain) @@ -346,7 +346,7 @@ for S ∈ (:Rational, :AbstractFloat) end for f ∈ (:exp, :exp2, :exp10, :expm1, :cbrt) - @eval function $f(xx::Interval) + @eval function Base.$f(xx::Interval) x = bareinterval(xx) r = $f(x) d = min(decoration(r), decoration(xx)) @@ -355,35 +355,35 @@ for f ∈ (:exp, :exp2, :exp10, :expm1, :cbrt) end for f ∈ (:log, :log2, :log10) - @eval function $f(a::Interval{T}) where {T<:NumTypes} + @eval function Base.$f(a::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = bareinterval(a) r = $f(x) d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isstrictsubset_interval(x, domain), d, trv)) + d = min(d, ifelse(isinterior(x, domain), d, trv)) return _unsafe_interval(r, d, isguaranteed(a)) end end -function log1p(a::Interval{T}) where {T<:NumTypes} +function Base.log1p(a::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), typemax(T)) x = bareinterval(a) r = log1p(x) d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isstrictsubset_interval(x, domain), d, trv)) + d = min(d, ifelse(isinterior(x, domain), d, trv)) return _unsafe_interval(r, d, isguaranteed(a)) end -function nthroot(a::Interval{T}, n::Integer) where {T<:NumTypes} +function rootn(a::Interval{T}, n::Integer) where {T<:NumTypes} domain = _unsafe_bareinterval(T, ifelse(iseven(n), zero(T), typemin(T)), typemax(T)) x = bareinterval(a) - r = nthroot(x, n) + r = rootn(x, n) d = min(decoration(a), decoration(r)) d = min(d, ifelse(issubset_interval(x, domain), d, trv)) return _unsafe_interval(r, d, isguaranteed(a)) end -hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) +Base.hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) function fastpow(xx::Interval, qq::Interval) x = bareinterval(xx) diff --git a/src/intervals/arithmetic/trigonometric.jl b/src/intervals/arithmetic/trigonometric.jl index b2a15137d..59f20fa40 100644 --- a/src/intervals/arithmetic/trigonometric.jl +++ b/src/intervals/arithmetic/trigonometric.jl @@ -4,14 +4,14 @@ # not in the IEEE Standard 1788-2015 -rad2deg(a::BareInterval{T}) where {T<:NumTypes} = (a / bareinterval(T, π)) * bareinterval(T, 180) -rad2deg(a::Interval{T}) where {T<:NumTypes} = (a / interval(T, π)) * interval(T, 180) +Base.rad2deg(a::BareInterval{T}) where {T<:NumTypes} = (a / bareinterval(T, π)) * bareinterval(T, 180) +Base.rad2deg(a::Interval{T}) where {T<:NumTypes} = (a / interval(T, π)) * interval(T, 180) -deg2rad(a::BareInterval{T}) where {T<:NumTypes} = (a * bareinterval(T, π)) / bareinterval(T, 180) -deg2rad(a::Interval{T}) where {T<:NumTypes} = (a * interval(T, π)) / interval(T, 180) +Base.deg2rad(a::BareInterval{T}) where {T<:NumTypes} = (a * bareinterval(T, π)) / bareinterval(T, 180) +Base.deg2rad(a::Interval{T}) where {T<:NumTypes} = (a * interval(T, π)) / interval(T, 180) -sincospi(a::BareInterval) = (sinpi(a), cospi(a)) -sincospi(a::Interval) = (sinpi(a), cospi(a)) +Base.sincospi(a::BareInterval) = (sinpi(a), cospi(a)) +Base.sincospi(a::Interval) = (sinpi(a), cospi(a)) # @@ -61,7 +61,7 @@ end Implement the `sin` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function sin(a::BareInterval{T}) where {T<:NumTypes} +function Base.sin(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a whole_range = _unsafe_bareinterval(T, -one(T), one(T)) @@ -105,7 +105,7 @@ function sin(a::BareInterval{T}) where {T<:NumTypes} end end -function sin(a::BareInterval{Float64}) +function Base.sin(a::BareInterval{Float64}) isempty_interval(a) && return a whole_range = _unsafe_bareinterval(Float64, -1.0, 1.0) @@ -146,14 +146,14 @@ function sin(a::BareInterval{Float64}) end end -function sin(a::Interval) +function Base.sin(a::Interval) r = sin(bareinterval(a)) d = min(decoration(a), decoration(r)) return _unsafe_interval(r, d, isguaranteed(a)) end -sinpi(a::BareInterval{T}) where {T<:NumTypes} = sin(a * bareinterval(T, π)) # not in the IEEE Standard 1788-2015 -sinpi(a::Interval{T}) where {T<:NumTypes} = sin(a * interval(T, π)) +Base.sinpi(a::BareInterval{T}) where {T<:NumTypes} = sin(a * bareinterval(T, π)) # not in the IEEE Standard 1788-2015 +Base.sinpi(a::Interval{T}) where {T<:NumTypes} = sin(a * interval(T, π)) """ cos(a::BareInterval) @@ -161,7 +161,7 @@ sinpi(a::Interval{T}) where {T<:NumTypes} = sin(a * interval(T, π)) Implement the `cos` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function cos(a::BareInterval{T}) where {T<:NumTypes} +function Base.cos(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a whole_range = _unsafe_bareinterval(T, -one(T), one(T)) @@ -203,7 +203,7 @@ function cos(a::BareInterval{T}) where {T<:NumTypes} end end -function cos(a::BareInterval{Float64}) +function Base.cos(a::BareInterval{Float64}) isempty_interval(a) && return a whole_range = _unsafe_bareinterval(Float64, -1.0, 1.0) @@ -244,14 +244,14 @@ function cos(a::BareInterval{Float64}) end end -function cos(a::Interval) +function Base.cos(a::Interval) r = cos(bareinterval(a)) d = min(decoration(a), decoration(r)) return _unsafe_interval(r, d, isguaranteed(a)) end -cospi(a::BareInterval{T}) where {T<:NumTypes} = cos(a * bareinterval(T, π)) # not in the IEEE Standard 1788-2015 -cospi(a::Interval{T}) where {T<:NumTypes} = cos(a * interval(T, π)) +Base.cospi(a::BareInterval{T}) where {T<:NumTypes} = cos(a * bareinterval(T, π)) # not in the IEEE Standard 1788-2015 +Base.cospi(a::Interval{T}) where {T<:NumTypes} = cos(a * interval(T, π)) """ tan(a::BareInterval) @@ -259,7 +259,7 @@ cospi(a::Interval{T}) where {T<:NumTypes} = cos(a * interval(T, π)) Implement the `tan` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function tan(a::BareInterval{T}) where {T<:NumTypes} +function Base.tan(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a diam(a) > inf(bareinterval(T, π)) && return entireinterval(BareInterval{T}) @@ -285,7 +285,7 @@ function tan(a::BareInterval{T}) where {T<:NumTypes} return @round(T, tan(alo), tan(ahi)) end -function tan(a::BareInterval{Float64}) +function Base.tan(a::BareInterval{Float64}) isempty_interval(a) && return a diam(a) > inf(bareinterval(Float64, π)) && return entireinterval(BareInterval{Float64}) @@ -309,7 +309,7 @@ function tan(a::BareInterval{Float64}) return @round(Float64, tan(alo), tan(ahi)) end -function tan(a::Interval) +function Base.tan(a::Interval) r = tan(bareinterval(a)) d = min(decoration(a), decoration(r)) d = min(d, ifelse(isbounded(r), d, trv)) @@ -322,7 +322,7 @@ end Implement the `cot` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function cot(a::BareInterval{T}) where {T<:NumTypes} +function Base.cot(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a diam(a) > inf(bareinterval(T, π)) && return entireinterval(BareInterval{T}) @@ -360,14 +360,14 @@ function cot(a::BareInterval{T}) where {T<:NumTypes} end end -cot(a::BareInterval{Float64}) = atomic(Float64, cot(_bigequiv(a))) +Base.cot(a::BareInterval{Float64}) = BareInterval{Float64}(cot(_bigequiv(a))) """ sec(a::BareInterval) Implement the `sec` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function sec(a::BareInterval{T}) where {T<:NumTypes} +function Base.sec(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a diam(a) > inf(interval(T, π)) && return entireinterval(BareInterval{T}) @@ -399,14 +399,14 @@ function sec(a::BareInterval{T}) where {T<:NumTypes} end end -sec(a::BareInterval{Float64}) = atomic(Float64, sec(_bigequiv(a))) +Base.sec(a::BareInterval{Float64}) = BareInterval{Float64}(sec(_bigequiv(a))) """ csc(a::BareInterval) Implement the `csc` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function csc(a::BareInterval{T}) where {T<:NumTypes} +function Base.csc(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a diam(a) > inf(bareinterval(T, π)) && return entireinterval(BareInterval{T}) @@ -449,7 +449,7 @@ function csc(a::BareInterval{T}) where {T<:NumTypes} end end -csc(a::BareInterval{Float64}) = atomic(Float64, csc(_bigequiv(a))) +Base.csc(a::BareInterval{Float64}) = BareInterval{Float64}(csc(_bigequiv(a))) """ asin(a::BareInterval) @@ -457,7 +457,7 @@ csc(a::BareInterval{Float64}) = atomic(Float64, csc(_bigequiv(a))) Implement the `asin` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function asin(a::BareInterval{T}) where {T<:NumTypes} +function Base.asin(a::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) a = intersect_interval(a, domain) isempty_interval(a) && return a @@ -465,7 +465,7 @@ function asin(a::BareInterval{T}) where {T<:NumTypes} return @round(T, asin(alo), asin(ahi)) end -function asin(a::Interval{T}) where {T<:NumTypes} +function Base.asin(a::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) x = bareinterval(a) r = asin(x) @@ -480,7 +480,7 @@ end Implement the `acos` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function acos(a::BareInterval{T}) where {T<:NumTypes} +function Base.acos(a::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) a = intersect_interval(a, domain) isempty_interval(a) && return a @@ -488,7 +488,7 @@ function acos(a::BareInterval{T}) where {T<:NumTypes} return @round(T, acos(ahi), acos(alo)) end -function acos(a::Interval{T}) where {T<:NumTypes} +function Base.acos(a::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) x = bareinterval(a) r = acos(x) @@ -503,25 +503,25 @@ end Implement the `atan` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function atan(a::BareInterval{T}) where {T<:NumTypes} +function Base.atan(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a alo, ahi = bounds(a) return @round(T, atan(alo), atan(ahi)) end -function atan(a::Interval) +function Base.atan(a::Interval) r = atan(bareinterval(a)) d = min(decoration(a), decoration(r)) return _unsafe_interval(r, d, isguaranteed(a)) end -function atan(y::BareInterval{T}, x::BareInterval{S}) where {T<:NumTypes,S<:NumTypes} +function Base.atan(y::BareInterval{T}, x::BareInterval{S}) where {T<:NumTypes,S<:NumTypes} F = BareInterval{promote_type(T, S)} (isempty_interval(y) || isempty_interval(x)) && return emptyinterval(F) return F(atan(_bigequiv(y), _bigequiv(x))) end -function atan(y::BareInterval{BigFloat}, x::BareInterval{BigFloat}) +function Base.atan(y::BareInterval{BigFloat}, x::BareInterval{BigFloat}) isempty_interval(y) && return y isempty_interval(x) && return x @@ -587,7 +587,7 @@ function atan(y::BareInterval{BigFloat}, x::BareInterval{BigFloat}) end end -function atan(b::Interval, a::Interval) +function Base.atan(b::Interval, a::Interval) y = bareinterval(b) x = bareinterval(a) r = atan(y, x) @@ -601,11 +601,13 @@ end """ acot(a::BareInterval) + acot(a::Interval) Implement the `acot` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function acot(a::BareInterval{T}) where {T<:NumTypes} +function Base.acot(a::BareInterval{T}) where {T<:NumTypes} isempty_interval(a) && return a - return atomic(T, bareinterval(T, acot(_bigequiv(sup(a))), acot(_bigequiv(inf(a))))) - # return atomic(T, @round(BigFloat, acot(_bigequiv(sup(a))), acot(_bigequiv(inf(a))))) + return BareInterval{T}(@round(BigFloat, acot(_bigequiv(sup(a))), acot(_bigequiv(inf(a))))) end + +# automatically defined for `Interval` since it is a subtype of `Real` diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 11add2562..93a8e8010 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -16,6 +16,7 @@ Return the default bound type used in [`promote_numtype`](@ref). By default, function, however it should be set to a concrete subtype of [`NumTypes`](@ref). # Examples + ```jldoctest julia> IntervalArithmetic.default_numtype() = Float32 @@ -82,16 +83,6 @@ struct BareInterval{T<:NumTypes} # need explicit signatures to avoid method ambiguities - """ - _unsafe_bareinterval(::Type{<:NumTypes}, lo, hi) - - Internal constructor which assumes that `is_valid_interval(lo, hi) == true`. - - !!! warning - This constructor is *not* compliant with the IEEE Standard 1788-2015. - Since misuse of this function can deeply corrupt code, its usage is - *strongly discouraged* in favour of [`bareinterval`](@ref). - """ global _unsafe_bareinterval(::Type{T}, a::T, b::T) where {S<:Integer,T<:Rational{S}} = new{T}(_normalisezero(a), _normalisezero(b)) _unsafe_bareinterval(::Type{T}, a::T, b::T) where {S<:Union{Int8,UInt8},T<:Rational{S}} = @@ -103,7 +94,25 @@ struct BareInterval{T<:NumTypes} new{T}(_normalisezero(a), _normalisezero(b)) end +""" + _unsafe_bareinterval(T<:NumTypes, lo, hi) + +Internal constructor which assumes that `is_valid_interval(lo, hi) == true`. + +!!! danger + This constructor is **not** compliant with the IEEE Standard 1788-2015. + Since misuse of this function can deeply corrupt code, its usage is + **strongly discouraged** in favour of [`bareinterval`](@ref). +""" +_unsafe_bareinterval + _normalisezero(a) = ifelse(iszero(a), zero(a), a) +# used only to construct intervals +_inf(a::BareInterval) = a.lo +_sup(a::BareInterval) = a.hi +_inf(a::Real) = a +_sup(a::Real) = a +# _unsafe_bareinterval(::Type{T}, a::Rational, b::Rational) where {S<:Integer,T<:Rational{S}} = _unsafe_bareinterval(T, T(a), T(b)) @@ -158,17 +167,18 @@ BareInterval{T}(x::BareInterval) where {T<:NumTypes} = bareinterval(T, x) Create the bare interval ``[a, b]`` according to the IEEE Standard 1788-2015. The validity of the interval is checked by [`is_valid_interval`](@ref): if -`true` then a `BareInterval{T}` is constructed, otherwise a warning is printed -and the empty interval is returned. +`true` then a `BareInterval{T}` is constructed, otherwise an empty interval is +returned. -!!! warning +!!! danger Nothing is done to compensate for the fact that floating point literals are - rounded to the nearest when parsed (e.g. 0.1). In such cases, use the string - macro [`@I_str`](@ref) to ensure tight enclosure around the typed numbers. + rounded to the nearest when parsed (e.g. `0.1`). In such cases, parse the + string containing the desired value to ensure its tight enclosure. See also: [`interval`](@ref), [`±`](@ref), [`..`](@ref) and [`@I_str`](@ref). # Examples + ```jldoctest julia> setdisplay(:full); @@ -186,9 +196,10 @@ BareInterval{BigFloat}(1.0, 3.14159265358979323846264338327950288419716939937510 ``` """ function bareinterval(::Type{T}, a, b) where {T<:NumTypes} - lo = inf(a) - hi = sup(b) + lo = _inf(a) + hi = _sup(b) is_valid_interval(lo, hi) && return _unsafe_bareinterval(T, lo, hi) + @warn "invalid interval, empty interval is returned" return emptyinterval(BareInterval{T}) end bareinterval(a, b) = bareinterval(promote_numtype(numtype(a), numtype(b)), a, b) @@ -197,7 +208,7 @@ bareinterval(::Type{T}, a) where {T<:NumTypes} = bareinterval(T, a, a) bareinterval(a) = bareinterval(promote_numtype(numtype(a), numtype(a)), a) bareinterval(::Type{T}, a::BareInterval) where {T<:NumTypes} = - _unsafe_bareinterval(T, inf(a), sup(a)) # assumes valid interval + _unsafe_bareinterval(T, _inf(a), _sup(a)) # assumes valid interval # some useful extra constructor bareinterval(::Type{T}, a::Tuple) where {T<:NumTypes} = bareinterval(T, a...) @@ -219,42 +230,7 @@ Base.promote_rule(::Type{BareInterval{T}}, ::Type{BareInterval{S}}) where {T<:Nu Base.convert(::Type{BareInterval{T}}, a::BareInterval) where {T<:NumTypes} = bareinterval(T, a) -""" - atomic(T<:Union{Rational,AbstractFloat}, a) -Create an interval according to the IEEE Standard 1788-2015. The returned -`Interval{T}` always contains the value `a` but its construction depends on its -type. If `a` is an `AbstractString`, then the interval is constructed by calling -[`parse`](@ref). If `a` is an `AbstractFloat`, the interval is widen to two eps -to be sure to contain the number that was typed in. In all other cases, this is -semantically equivalent to `bareinterval(T, a)`. - -# Examples -```jldoctest -julia> setdisplay(:full); - -julia> IntervalArithmetic.atomic(Float64, 0.1) -BareInterval{Float64}(0.09999999999999999, 0.10000000000000002) - -julia> IntervalArithmetic.atomic(Float64, 0.3) -BareInterval{Float64}(0.29999999999999993, 0.30000000000000004) -``` -""" -atomic(::Type{T}, a) where {T<:NumTypes} = bareinterval(T, a) - -atomic(::Type{T}, a::AbstractString) where {T<:NumTypes} = parse(BareInterval{T}, a) - -function atomic(::Type{T}, a::AbstractFloat) where {T<:AbstractFloat} - lo = T(a, RoundDown) - hi = T(a, RoundUp) - if a == lo - lo = prevfloat(lo) - end - if a == hi - hi = nextfloat(hi) - end - return _unsafe_bareinterval(T, lo, hi) -end @@ -265,13 +241,19 @@ end Enumeration constant for the types of interval decorations described in Section 11.2 of the IEEE Standard 1788-2015: -- `com -> 4`: non-empty, continuous and bounded (common) -- `dac -> 3`: non-empty and continuous (defined and continuous) -- `def -> 2`: non-empty (defined) -- `trv -> 1`: always true (trivial) -- `ill -> 0`: not an interval (ill-formed) +- `com -> 4` (common): non-empty, continuous and bounded interval. +- `dac -> 3` (defined and continuous): non-empty and continuous interval. +- `def -> 2` (defined): non-empty interval. +- `trv -> 1` (trivial): meaningless interval. +- `ill -> 0` (ill-formed): not an interval (NaI). """ -@enum Decoration ill=0 trv=1 def=2 dac=3 com=4 +@enum Decoration begin + ill = 0 + trv + def + dac + com +end # note: `isless`, and hence `<`, `min` and `max`, are automatically defined function decoration(x::BareInterval) @@ -292,8 +274,7 @@ end Interval type for guaranteed computation with interval arithmetic according to the IEEE Standard 1788-2015. This structure combines a [`BareInterval`](@ref) -together with a [`Decoration`](@ref). The decoration records the validity of the -operations that produced this interval. +together with a [`Decoration`](@ref). Fields: - `bareinterval :: BareInterval{T}` @@ -313,128 +294,216 @@ struct Interval{T<:NumTypes} <: Real decoration :: Decoration isguaranteed :: Bool - """ - _unsafe_interval(bareinterval::BareInterval, ::Decoration, ::Bool) - - Internal constructor which assumes that `bareinterval` is an interval - compliant with the IEEE Standard 1788-2015. - - !!! warning - This constructor is *not* compliant with the IEEE Standard 1788-2015. - Since misuse of this function can deeply corrupt code, its usage is - *strongly discouraged* in favour of [`interval`](@ref). - """ global _unsafe_interval(bareinterval::BareInterval{T}, decoration::Decoration, isguaranteed::Bool) where {T<:NumTypes} = new{T}(bareinterval, decoration, isguaranteed) end -bareinterval(x::Interval) = x.bareinterval +""" + _unsafe_interval(bareinterval::BareInterval, decoration::Decoration, isguaranteed::Bool) + +Internal constructor which assumes that `bareinterval` and its decoration +`decoration` are compliant with the IEEE Standard 1788-2015. + +!!! danger + This constructor is **not** compliant with the IEEE Standard 1788-2015. + Since misuse of this function can deeply corrupt code, its usage is + **strongly discouraged** in favour of [`interval`](@ref). +""" +_unsafe_interval + +# used only to construct intervals +_inf(a::Interval) = a.bareinterval.lo +_sup(a::Interval) = a.bareinterval.hi +# + +function bareinterval(x::Interval) + decoration(x) == ill && @warn "interval part of NaI" + return x.bareinterval +end bareinterval(::Type{T}, x::Interval) where {T<:NumTypes} = bareinterval(T, bareinterval(x)) decoration(x::Interval) = x.decoration """ - isguaranteed(::Interval) - isguaranteed(::BareInterval) - isguaranteed(::Complex{<:Interval}) + isguaranteed(x::BareInterval) + isguaranteed(x::Interval) + isguaranteed(x::Complex{<:Interval}) Test whether the interval is not guaranteed to encompass all possible numerical -errors. This happens whenever an `Interval` is constructed using -`convert(::Type{<:Interval}, ::Number)`, for instance when operations mix -intervals and other `Number` types. +errors. This happens whenever an [`Interval`](@ref) is constructed using +`convert(::Type{<:Interval}, ::Real)`, which may occur implicitly when mixing +intervals and `Real` types. Since conversion between `BareInterval` and `Number` is prohibited, this implies that `isguaranteed(::BareInterval) == true`. In the case of a complex interval `x`, this is semantically equivalent to -`isguaranteed(x) == isguaranteed(real(x)) & isguaranteed(imag(x))`. +`isguaranteed(real(x)) & isguaranteed(imag(x))`. + +# Examples + +```jldoctest +julia> isguaranteed(bareinterval(1)) +true + +julia> isguaranteed(interval(1)) +true + +julia> isguaranteed(convert(Interval{Float64}, 1)) +false + +julia> isguaranteed(interval(1) + 0) +false +``` """ isguaranteed(x::Interval) = x.isguaranteed isguaranteed(::BareInterval) = true isguaranteed(x::Complex{<:Interval}) = isguaranteed(real(x)) & isguaranteed(imag(x)) -Interval{T}(a::Union{BareInterval,Interval}, d::Decoration) where {T<:NumTypes} = interval(T, bareinterval(T, a), d) -Interval{T}(a::Union{BareInterval,Interval}) where {T<:NumTypes} = interval(T, bareinterval(T, a)) -Interval(a::Union{BareInterval,Interval}, d::Decoration) = interval(bareinterval(a), d) -Interval(a::Union{BareInterval,Interval}) = interval(bareinterval(a)) +Interval{T}(x::Union{BareInterval,Interval}, d::Decoration) where {T<:NumTypes} = interval(T, bareinterval(T, x), d) +Interval{T}(x::Union{BareInterval,Interval}) where {T<:NumTypes} = interval(T, bareinterval(T, x)) +Interval(x::Union{BareInterval,Interval}, d::Decoration) = interval(bareinterval(x), d) +Interval(x::Union{BareInterval,Interval}) = interval(bareinterval(x)) # -function interval(::Type{T}, a, b, d::Decoration; format::Symbol = :standard) where {T<:NumTypes} - format === :standard && return _interval_standard(T, a, b, d) +""" + interval([T<:Union{Rational,AbstractFloat}=default_numtype()], a, b, [d::Decoration]) + +Create the interval ``[a, b]`` according to the IEEE Standard 1788-2015. The +validity of the interval is checked by [`is_valid_interval`](@ref): if `true` +then an `Interval{T}` is constructed, otherwise an NaI (Not an Interval) is +returned. + +!!! danger + Nothing is done to compensate for the fact that floating point literals are + rounded to the nearest when parsed (e.g. `0.1`). In such cases, parse the + string containing the desired value to ensure its tight enclosure. + +See also: [`±`](@ref), [`..`](@ref) and [`@I_str`](@ref). + +# Examples + +```jldoctest +julia> setdisplay(:full); + +julia> interval(1//1, π) +Interval{Rational{Int64}}(1//1, 85563208//27235615, com) + +julia> interval(Rational{Int32}, 1//1, π) +Interval{Rational{Int32}}(1//1, 85563208//27235615, com) + +julia> interval(1, π) +Interval{Float64}(1.0, 3.1415926535897936, com) + +julia> interval(BigFloat, 1, π) +Interval{BigFloat}(1.0, 3.141592653589793238462643383279502884197169399375105820974944592307816406286233) +``` +""" +function interval(::Type{T}, a, b, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} + format === :infsup && return _interval_infsup(T, a, b, d) format === :midpoint && return _interval_midpoint(T, a, b, d) - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -interval(a, b, d::Decoration; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(b)), a, b, d; format = format) +interval(a, b, d::Decoration; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(b)), a, b, d; format = format) -function interval(::Type{T}, a, b; format::Symbol = :standard) where {T<:NumTypes} - format === :standard && return _interval_standard(T, a, b) +function interval(::Type{T}, a, b; format::Symbol = :infsup) where {T<:NumTypes} + format === :infsup && return _interval_infsup(T, a, b) format === :midpoint && return _interval_midpoint(T, a, b) - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -interval(a, b; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(b)), a, b; format = format) +interval(a, b; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(b)), a, b; format = format) -function interval(::Type{T}, a, d::Decoration; format::Symbol = :standard) where {T<:NumTypes} - ((format === :standard) | (format === :midpoint)) && return _interval_standard(T, a, a, d) - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) +function interval(::Type{T}, a, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} + (format === :infsup) | (format === :midpoint) && return _interval_infsup(T, a, a, d) + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -function interval(::Type{T}, x::Union{BareInterval,Interval}, d::Decoration; format::Symbol = :standard) where {T<:NumTypes} - ((format === :standard) | (format === :midpoint)) && return _unsafe_interval(bareinterval(T, x), min(decoration(x), d), isguaranteed(x)) # assumes valid interval - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) +function interval(::Type{T}, x::BareInterval, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} + if d == ill + @warn "invalid interval, NaI is returned" + return nai(T) + else + (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x), min(decoration(x), d), isguaranteed(x)) # assumes valid interval + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) + end end -interval(a, d::Decoration; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(a)), a, d; format = format) +function interval(::Type{T}, x::Interval, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} + if d == ill + @warn "invalid interval, NaI is returned" + return nai(T) + else + # use `x.bareinterval` to not print a warning if `x` is an NaI + (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x.bareinterval), min(decoration(x), d), isguaranteed(x)) # assumes valid interval + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) + end +end +interval(a, d::Decoration; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(a)), a, d; format = format) -function interval(::Type{T}, a; format::Symbol = :standard) where {T<:NumTypes} - ((format === :standard) | (format === :midpoint)) && return _interval_standard(T, a, a) - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) +function interval(::Type{T}, a; format::Symbol = :infsup) where {T<:NumTypes} + (format === :infsup) | (format === :midpoint) && return _interval_infsup(T, a, a) + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) +end +function interval(::Type{T}, x::BareInterval; format::Symbol = :infsup) where {T<:NumTypes} + (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x), decoration(x), isguaranteed(x)) # assumes valid interval + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -function interval(::Type{T}, x::Union{BareInterval,Interval}; format::Symbol = :standard) where {T<:NumTypes} - ((format === :standard) | (format === :midpoint)) && return _unsafe_interval(bareinterval(T, x), decoration(x), isguaranteed(x)) # assumes valid interval - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) +function interval(::Type{T}, x::Interval; format::Symbol = :infsup) where {T<:NumTypes} + # use `x.bareinterval` to not print warning if `x` is an NaI + (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x.bareinterval), decoration(x), isguaranteed(x)) # assumes valid interval + return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -interval(a; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(a)), a; format = format) +interval(a; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(a)), a; format = format) # some useful extra constructor -interval(::Type{T}, a::Tuple, d::Decoration; format::Symbol = :standard) where {T<:NumTypes} = interval(T, a..., d; format = format) -interval(a::Tuple, d::Decoration; format::Symbol = :standard) = interval(a..., d; format = format) -interval(::Type{T}, a::Tuple; format::Symbol = :standard) where {T<:NumTypes} = interval(T, a...; format = format) -interval(a::Tuple; format::Symbol = :standard) = interval(a...; format = format) +interval(::Type{T}, a::Tuple, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} = interval(T, a..., d; format = format) +interval(a::Tuple, d::Decoration; format::Symbol = :infsup) = interval(a..., d; format = format) +interval(::Type{T}, a::Tuple; format::Symbol = :infsup) where {T<:NumTypes} = interval(T, a...; format = format) +interval(a::Tuple; format::Symbol = :infsup) = interval(a...; format = format) +interval(A::AbstractArray; format::Symbol = :infsup) = interval.(A; format = format) # standard format """ - _interval_standard(T<:NumTypes, a, b, [d::Decoration]) + _interval_infsup(T<:NumTypes, a, b, [d::Decoration]) Internal constructor for intervals described by their lower and upper bounds, i.e. of the form ``[a, b]``. """ -function _interval_standard(::Type{T}, a, b, d::Decoration) where {T<:NumTypes} - lo = inf(a) - hi = sup(b) - !is_valid_interval(lo, hi) && return nai(T) - x = _unsafe_bareinterval(T, lo, hi) - return _unsafe_interval(x, min(decoration(x), d), true) -end -function _interval_standard(::Type{T}, a, b) where {T<:NumTypes} - lo = inf(a) - hi = sup(b) - !is_valid_interval(lo, hi) && return nai(T) - x = _unsafe_bareinterval(T, lo, hi) - return _unsafe_interval(x, decoration(x), true) -end - -_interval_standard(::Type{T}, a::Complex, b::Complex, d::Decoration) where {T<:NumTypes} = - complex(_interval_standard(T, real(a), real(b), d), _interval_standard(T, imag(a), imag(b), d)) -_interval_standard(::Type{T}, a::Complex, b, d::Decoration) where {T<:NumTypes} = - complex(_interval_standard(T, real(a), b, d), _interval_standard(T, imag(a), d)) -_interval_standard(::Type{T}, a, b::Complex, d::Decoration) where {T<:NumTypes} = - complex(_interval_standard(T, a, real(b), d), _interval_standard(T, imag(b), d)) - -_interval_standard(::Type{T}, a::Complex, b::Complex) where {T<:NumTypes} = - complex(_interval_standard(T, real(a), real(b)), _interval_standard(T, imag(a), imag(b))) -_interval_standard(::Type{T}, a::Complex, b) where {T<:NumTypes} = - complex(_interval_standard(T, real(a), b), _interval_standard(T, imag(a))) -_interval_standard(::Type{T}, a, b::Complex) where {T<:NumTypes} = - complex(_interval_standard(T, a, real(b)), _interval_standard(T, imag(b))) +function _interval_infsup(::Type{T}, a, b, d::Decoration) where {T<:NumTypes} + lo = _inf(a) + hi = _sup(b) + if !is_valid_interval(lo, hi) || d == ill + @warn "invalid interval, NaI is returned" + return nai(T) + else + x = _unsafe_bareinterval(T, lo, hi) + return _unsafe_interval(x, min(decoration(x), d), true) + end +end +function _interval_infsup(::Type{T}, a, b) where {T<:NumTypes} + lo = _inf(a) + hi = _sup(b) + if !is_valid_interval(lo, hi) + @warn "invalid interval, NaI is returned" + return nai(T) + else + x = _unsafe_bareinterval(T, lo, hi) + return _unsafe_interval(x, decoration(x), true) + end +end + +_interval_infsup(::Type{T}, a::Complex, b::Complex, d::Decoration) where {T<:NumTypes} = + complex(_interval_infsup(T, real(a), real(b), d), _interval_infsup(T, imag(a), imag(b), d)) +_interval_infsup(::Type{T}, a::Complex, b, d::Decoration) where {T<:NumTypes} = + complex(_interval_infsup(T, real(a), b, d), _interval_infsup(T, imag(a), d)) +_interval_infsup(::Type{T}, a, b::Complex, d::Decoration) where {T<:NumTypes} = + complex(_interval_infsup(T, a, real(b), d), _interval_infsup(T, imag(b), d)) + +_interval_infsup(::Type{T}, a::Complex, b::Complex) where {T<:NumTypes} = + complex(_interval_infsup(T, real(a), real(b)), _interval_infsup(T, imag(a), imag(b))) +_interval_infsup(::Type{T}, a::Complex, b) where {T<:NumTypes} = + complex(_interval_infsup(T, real(a), b), _interval_infsup(T, imag(a))) +_interval_infsup(::Type{T}, a, b::Complex) where {T<:NumTypes} = + complex(_interval_infsup(T, a, real(b)), _interval_infsup(T, imag(b))) # midpoint constructors @@ -445,12 +514,12 @@ Internal constructor for intervals described by their midpoint and radius, i.e. of the form ``m \\pm r`. """ function _interval_midpoint(::Type{T}, m, r, d::Decoration) where {T<:NumTypes} - x = _interval_standard(T, m, m, d) - return _interval_standard(T, inf(x - r), sup(x + r), d) + x = _interval_infsup(T, m, m, d) + return _interval_infsup(T, _inf(x - r), _sup(x + r), d) end function _interval_midpoint(::Type{T}, m, r) where {T<:NumTypes} - x = _interval_standard(T, m, m) - return _interval_standard(T, inf(x - r), sup(x + r)) + x = _interval_infsup(T, m, m) + return _interval_infsup(T, _inf(x - r), _sup(x + r)) end _interval_midpoint(::Type{T}, m::Complex, r, d::Decoration) where {T<:NumTypes} = @@ -459,38 +528,38 @@ _interval_midpoint(::Type{T}, m::Complex, r) where {T<:NumTypes} = complex(_interval_midpoint(T, real(m), r), _interval_midpoint(T, imag(m), r)) function _interval_midpoint(::Type{T}, m, r::Complex{<:Interval}, d::Decoration) where {T<:NumTypes} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end function _interval_midpoint(::Type{T}, m, r::Complex{<:Interval}) where {T<:NumTypes} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r)) end function _interval_midpoint(::Type{T}, m, r::Complex, d::Decoration) where {T<:NumTypes} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end function _interval_midpoint(::Type{T}, m, r::Complex) where {T<:NumTypes} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r)) end function _interval_midpoint(::Type{T}, m::Complex, r::Complex{<:Interval}, d::Decoration) where {T<:NumTypes} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end function _interval_midpoint(::Type{T}, m::Complex, r::Complex{<:Interval}) where {T<:NumTypes} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r)) end function _interval_midpoint(::Type{T}, m::Complex, r::Complex, d::Decoration) where {T<:NumTypes} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end function _interval_midpoint(::Type{T}, m::Complex, r::Complex) where {T<:NumTypes} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) + iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r)) end @@ -524,7 +593,7 @@ Base.promote_rule(::Type{T}, ::Type{Interval{S}}) where {T<:AbstractIrrational,S Base.convert(::Type{Interval{T}}, x::Interval) where {T<:NumTypes} = interval(T, x) function Base.convert(::Type{Interval{T}}, x::Complex{<:Interval}) where {T<:NumTypes} - isthinzero(imag(x)) || return throw(DomainError(x, "imaginary part must be zero.")) + isthinzero(imag(x)) || return throw(DomainError(x, "imaginary part must be zero")) return convert(Interval{T}, real(x)) end @@ -534,6 +603,6 @@ function Base.convert(::Type{Interval{T}}, x::Real) where {T<:NumTypes} end function Base.convert(::Type{Interval{T}}, x::Complex) where {T<:NumTypes} - iszero(imag(x)) || return throw(DomainError(x, "imaginary part must be zero.")) + iszero(imag(x)) || return throw(DomainError(x, "imaginary part must be zero")) return convert(Interval{T}, real(x)) end diff --git a/src/intervals/flavors.jl b/src/intervals/flavors.jl index 525267236..226d9bbad 100644 --- a/src/intervals/flavors.jl +++ b/src/intervals/flavors.jl @@ -1,71 +1,95 @@ """ Flavor{F} -Super type of all interval flavors. - -A flavor defines (following the IEEE Std 1788-2015) how an interval behaves -in edge cases. This mostly makes a difference when dealing with -infinity and division by zero. - -Currently only Flavor{:set_based} is supported. - -- `:set_based` (default) : Elements of an interval are real number. - In particular, infinity is never part of an interval and is only used as a - shorthand. - For example, the interval `(2..Inf)` contain all real number greater than 2. - In particular, this means that `(Inf..Inf)` is an empty interval, and division - by a thin zero returns the empty interval. - The edge cases are - - `isequal_interval(x/(0..0), ∅)` - - `isequal_interval((0..0)/(0..0), ∅)` - - `isequal_interval((0..0)*(-Inf..Inf), 0)` - - `in_interval(Inf, (0..Inf)) == false` - This flavor is described and required in part 2 of the IEEE Std 1799-2015. -- `:cset` (not implemented) : Elements of an interval are either real numbers - or `±Inf`, applying standard rule for arithmetic with infinity. - The edge cases are - - `isequal_interval(x/(0..0), (-Inf..Inf))` - - `isequal_interval((0..0)/(0..0), (-Inf..Inf))` - - `isequal_interval((0..0)*(-Inf..Inf), (-Inf..Inf))` - - `in_interval(Inf, (0..Inf)) == true` +A flavor defining how an interval behaves in edge cases. For instance, infinity +may or not be considered part of unbounded intervals. + +Some flavors `F` include: +- `:set_based` (default): elements of an interval are real numbers. In + particular, infinity is never part of an interval. This flavor is described + and required in Part 2 of the IEEE Standard 1788-2015. + Edge cases: + - any unbounded interval does not contain infinity. + - ``[0, 0] / [0, 0] = \\emptyset``. + - ``x / [0, 0] = \\emptyset`` for any interval ``x``. + - ``x \\times [0, 0] = [0, 0]`` for any interval ``x``. +- `:cset`: elements of an interval are either real numbers, + or ``\\pm \\infty``, applying standard rule for arithmetic with infinity. + Edge cases: + - any unbounded interval contains infinity. + - ``[0, 0] / [0, 0] = [-\\infty, \\infty]``. + - ``x / [0, 0] = [-\\infty, \\infty]`` for any interval ``x``. + - ``x \\times [0, 0] = [-\\infty, \\infty]`` for any unbounded interval + ``x``. + +!!! note + Currently only the flavor `:set_based` is supported and implemented. + +# Examples + +```jldoctest +julia> IntervalArithmetic.default_flavor() +IntervalArithmetic.Flavor{:set_based}() + +julia> isempty_interval(bareinterval(Inf, Inf)) +true + +julia> isempty_interval(bareinterval(0)/bareinterval(0)) +true + +julia> isempty_interval(bareinterval(1)/bareinterval(0)) +true + +julia> isempty_interval(bareinterval(-Inf, Inf)/bareinterval(0)) +true + +julia> isthinzero(bareinterval(0)*bareinterval(-Inf, Inf)) +true +``` """ struct Flavor{F} end -default_flavor() = Flavor{:set_based}() +""" + default_flavor() -# :set_based +Return the default flavor used to handle edge cases. +""" +default_flavor() = Flavor{:set_based}() """ - zero_times_infinity(::Flavor, ::Type{T}) + zero_times_infinity([F::Flavor=default_flavor()], T<:NumTypes) -Return the result of zero times positive infinity for the given flavor -and number type `T`. +For the given flavor `F`, return ``0 \\times \\infty`` as an instance of type +`T`. """ zero_times_infinity(::Flavor{:set_based}, ::Type{T}) where {T<:NumTypes} = zero(T) zero_times_infinity(::Type{T}) where {T<:NumTypes} = zero_times_infinity(default_flavor(), T) """ - div_by_thin_zero(::Flavor, x::BareInterval) + div_by_thin_zero([F::Flavor=default_flavor()], x::BareInterval) -Divide `x` by the interval containing only `0`. +For the given flavor `F`, divide `x` by the interval containing only ``0``. """ div_by_thin_zero(::Flavor{:set_based}, ::BareInterval{T}) where {T<:NumTypes} = emptyinterval(BareInterval{T}) div_by_thin_zero(x::BareInterval) = div_by_thin_zero(default_flavor(), x) +""" + contains_infinity([F::Flavor=default_flavor()], x::BareInterval) + +For the given flavor `F`, test whether `x` contains infinity. +""" contains_infinity(::Flavor{:set_based}, ::BareInterval) = false contains_infinity(x::BareInterval) = contains_infinity(default_flavor(), x) """ - is_valid_interval(a, b) + is_valid_interval([F::Flavor=default_flavor()], a::Real, b::Real) -Check if `(a, b)` constitute a valid interval. +For the given flavor `F`, test whether ``[a, b]`` is a valid interval. """ -is_valid_interval(::Flavor{:set_based}, a, b) = b - a ≥ 0 - -is_valid_interval(a, b) = is_valid_interval(default_flavor(), a, b) +is_valid_interval(::Flavor{:set_based}, a::Real, b::Real) = b - a ≥ 0 -is_valid_interval(a) = is_valid_interval(a, a) +is_valid_interval(a::Real, b::Real) = is_valid_interval(default_flavor(), a, b) diff --git a/src/intervals/interval_operations/bisect.jl b/src/intervals/interval_operations/bisect.jl index ddac0aefd..9e86e9cd9 100644 --- a/src/intervals/interval_operations/bisect.jl +++ b/src/intervals/interval_operations/bisect.jl @@ -1,29 +1,43 @@ """ - bisect(x::BareInterval, α::Real=0.49609375) - bisect(x::Interval, α::Real=0.49609375) + bisect(x, α=0.5) + bisect(x, i, α=0.5) -Split the interval `x` at position `α`, where `α = 0.5` corresponds to the -midpoint. +Split an interval `x` at a relative position `α`, where `α = 0.5` corresponds +to the midpoint. + +Split the `i`-th component of a vector `x` at a relative position `α`, where +`α = 0.5` corresponds to the midpoint. """ -function bisect(x::BareInterval{T}, α::Real=0.49609375) where {T<:NumTypes} - 0 ≤ α ≤ 1 || return throw(DomainError(α, "bisect only accepts a relative position α between 0 and 1.")) +function bisect(x::BareInterval{T}, α::Real=0.5) where {T<:NumTypes} + 0 ≤ α ≤ 1 || return throw(DomainError(α, "bisect only accepts a relative position α between 0 and 1")) + isatomic(x) && return (x, emptyinterval(BareInterval{T})) m = scaled_mid(x, α) return (_unsafe_bareinterval(T, inf(x), m), _unsafe_bareinterval(T, m, sup(x))) end -function bisect(x::Interval, α::Real=0.49609375) +function bisect(x::Interval, α::Real=0.5) bx = bareinterval(x) - r1, r2 = bisect(bx, α) - d1, d2 = min(decoration(x), decoration(r1), trv), min(decoration(x), decoration(r2), trv) + r₁, r₂ = bisect(bx, α) + d₁, d₂ = min(decoration(x), decoration(r₁), trv), min(decoration(x), decoration(r₂), trv) t = isguaranteed(x) - return (_unsafe_interval(r1, d1, t), _unsafe_interval(r2, d2, t)) + return (_unsafe_interval(r₁, d₁, t), _unsafe_interval(r₂, d₂, t)) +end + +function bisect(x::AbstractVector, i::Integer, α::Real=0.5) + x₁ = copy(x) + x₂ = copy(x) + x₁[i], x₂[i] = bisect(x[i], α) + return (x₁, x₂) end """ - mince(x::BareInterval, n::Integer) - mince(x::Interval, n::Integer) + mince(x, n) + +Split an interval `x` in `n` intervals of the same diameter. -Split `x` in `n` intervals of the same diameter. +Split the `i`-th component of a vector `x` in `n[i]` intervals of the +same diameter; `n` can be a tuple of integers, or a single integer in which case +the same `n` is used for all the components of `x`. """ function mince(x::BareInterval{T}, n::Integer) where {T<:NumTypes} nodes = LinRange(inf(x), sup(x), n+1) @@ -42,3 +56,29 @@ function mince(x::Interval{T}, n::Integer) where {T<:NumTypes} end return v end + +mince(x::AbstractVector, n::Integer) = mince(x, ntuple(_ -> n, length(x))) + +mince(x::AbstractVector, n::NTuple{N,Integer}) where {N} = mince!(Vector{typeof(x)}(undef, prod(n)), x, n) + +""" + mince!(v, x, n) + +In-place version of [`mince`](@ref). +""" +mince!(v::AbstractVector, x::AbstractVector, n::Integer) = mince!(v, x, ntuple(_ -> n, length(x))) + +function mince!(v::AbstractVector, x::AbstractVector, n::NTuple{N,Integer}) where {N} + len = length(x) + len == N || return throw(DimensionMismatch("x has length $len, n has length $N")) + @inbounds minced_intervals = [mince(xᵢ, nᵢ) for (xᵢ, nᵢ) ∈ zip(x, n)] + resize!(v, prod(n)) + @inbounds for (k, cut_indices) ∈ enumerate(CartesianIndices(n)) + y = similar(x, N) + @inbounds for (i, j) ∈ enumerate(eachindex(y)) + y[j] = minced_intervals[i][cut_indices[i]] + end + v[k] = y + end + return v +end diff --git a/src/intervals/interval_operations/boolean.jl b/src/intervals/interval_operations/boolean.jl index 72a92ef54..0dacb5a41 100644 --- a/src/intervals/interval_operations/boolean.jl +++ b/src/intervals/interval_operations/boolean.jl @@ -1,18 +1,14 @@ # This file contains the functions described as "Boolean functions of intervals" # in Section 9.5 of the IEEE Standard 1788-2015 and required for set-based # flavor in Section 10.5.9 -# Some other (non required) related functions are also present, as well as some of -# the "Recommended operations" (Section 10.6.3) +# Some other (non required) related functions are also present, as well as some +# of the "Recommended operations" (Section 10.6.3) -# equivalent to `<` but with `(Inf < Inf) == true` -function _strictlessprime(x::Real, y::Real) - (isinf(x) || isinf(y)) && x == y && return true - return x < y -end +# used internally, equivalent to `<` but with `(Inf < Inf) == true` +_strictlessprime(x::Real, y::Real) = (x < y) | ((isinf(x) | isinf(y)) & (x == y)) """ - isequal_interval(x::BareInterval, y::BareInterval) - isequal_interval(x::Interval, y::Interval) + isequal_interval(x, y) Test whether `x` and `y` are identical. @@ -21,80 +17,115 @@ Implement the `equal` function of the IEEE Standard 1788-2015 (Table 9.3). isequal_interval(x::BareInterval, y::BareInterval) = (inf(x) == inf(y)) & (sup(x) == sup(y)) function isequal_interval(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return isequal_interval(bareinterval(x), bareinterval(y)) end +isequal_interval(x, y, z, w...) = isequal_interval(x, y) & isequal_interval(y, z, w...) +isequal_interval(x::Complex, y::Complex) = isequal_interval(real(x), real(y)) & isequal_interval(imag(x), imag(y)) +isequal_interval(x::Complex, y::Real) = isequal_interval(real(x), y) & isthinzero(imag(x)) +isequal_interval(x::Real, y::Complex) = isequal_interval(x, real(y)) & isthinzero(imag(y)) + """ - issubset_interval(x::BareInterval, y::BareInterval) - issubset_interval(x::Interval, y::Interval) + issubset_interval(x, y) Test whether `x` is contained in `y`. Implement the `subset` function of the IEEE Standard 1788-2015 (Table 9.3). """ -issubset_interval(x::BareInterval, y::BareInterval) = - (inf(y) ≤ inf(x)) & (sup(x) ≤ sup(y)) +issubset_interval(x::BareInterval, y::BareInterval) = (inf(y) ≤ inf(x)) & (sup(x) ≤ sup(y)) function issubset_interval(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return issubset_interval(bareinterval(x), bareinterval(y)) end -""" - isstrictsubset_interval(x::BareInterval, y::BareInterval) - isstrictsubset_interval(x::Interval, y::Interval) +issubset_interval(x, y, z, w...) = issubset_interval(x, y) & issubset_interval(y, z, w...) +issubset_interval(x::Complex, y::Complex) = issubset_interval(real(x), real(y)) & issubset_interval(imag(x), imag(y)) +issubset_interval(x::Complex, y::Real) = issubset_interval(real(x), y) & isthinzero(imag(x)) +issubset_interval(x::Real, y::Complex) = issubset_interval(x, real(y)) & in_interval(0, imag(y)) +""" + isinterior(x, y) Test whether `x` is in the interior of `y`. Implement the `interior` function of the IEEE Standard 1788-2015 (Table 9.3). + +See also: [`isstrictsubset`](@ref). """ -isstrictsubset_interval(x::BareInterval, y::BareInterval) = +isinterior(x::BareInterval, y::BareInterval) = _strictlessprime(inf(y), inf(x)) & _strictlessprime(sup(x), sup(y)) -function isstrictsubset_interval(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false - return isstrictsubset_interval(bareinterval(x), bareinterval(y)) +function isinterior(x::Interval, y::Interval) + isnai(x) | isnai(y) && return false + return isinterior(bareinterval(x), bareinterval(y)) end +isinterior(x::AbstractVector, y::AbstractVector) = all(t -> isinterior(t[1], t[2]), zip(x, y)) + +isinterior(x, y, z, w...) = isinterior(x, y) & isinterior(y, z, w...) +isinterior(x::Complex, y::Complex) = + (isinterior(real(x), real(y)) & issubset_interval(imag(x), imag(y))) | + (issubset_interval(real(x), real(y)) & isinterior(imag(x), imag(y))) +isinterior(x::Complex, y::Real) = isinterior(real(x), y) & isthinzero(imag(x)) +isinterior(x::Real, y::Complex) = isinterior(x, real(y)) & in_interval(0, imag(y)) + +""" + isstrictsubset(x, y) + +Test whether `x` is a strict subset of `y`. If `x` and `y` are intervals, this +is semantically equivalent to `isinterior(x, y)`. If `x` and `y` are vectors, at +least one component of `x` must be in the interior of `y`. + +See also: [`isinterior`](@ref). """ - isweakless(x::BareInterval, y::BareInterval) - isweakless(x::Interval, y::Interval) +isstrictsubset(x::BareInterval, y::BareInterval) = isinterior(x, y) + +isstrictsubset(x::Interval, y::Interval) = isinterior(x, y) + +isstrictsubset(x::AbstractVector, y::AbstractVector) = any(t -> isinterior(t[1], t[2]), zip(x, y)) + +isstrictsubset(x, y, z, w...) = isstrictsubset(x, y) & isstrictsubset(y, z, w...) +isstrictsubset(x::Complex, y::Complex) = + (isstrictsubset(real(x), real(y)) & issubset_interval(imag(x), imag(y))) | + (issubset_interval(real(x), real(y)) & isstrictsubset(imag(x), imag(y))) +isstrictsubset(x::Complex, y::Real) = isstrictsubset(real(x), y) & isthinzero(imag(x)) +isstrictsubset(x::Real, y::Complex) = isstrictsubset(x, real(y)) & in_interval(0, imag(y)) + +""" + isweakless(x, y) Test whether `inf(x) ≤ inf(y)` and `sup(x) ≤ sup(y)`, where `<` is replaced by `≤` for infinite values. Implement the `less` function of the IEEE Standard 1788-2015 (Table 10.3). """ -isweakless(x::BareInterval, y::BareInterval) = - (inf(x) ≤ inf(y)) & (sup(x) ≤ sup(y)) +isweakless(x::BareInterval, y::BareInterval) = (inf(x) ≤ inf(y)) & (sup(x) ≤ sup(y)) function isweakless(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return isweakless(bareinterval(x), bareinterval(y)) end """ - isstrictless(x::BareInterval, y::BareInterval) - isstrictless(x::Interval, y::Interval) + isstrictless(x, y) Test whether `inf(x) < inf(y)` and `sup(x) < sup(y)`, where `<` is replaced by `≤` for infinite values. Implement the `strictLess` function of the IEEE Standard 1788-2015 (Table 10.3). """ -isstrictless(x::BareInterval, y::BareInterval) = +isstrictless(x::BareInterval, y::BareInterval) = # this may be flavor dependent? Should _strictlessprime be < for cset flavor? _strictlessprime(inf(x), inf(y)) & _strictlessprime(sup(x), sup(y)) function isstrictless(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return isstrictless(bareinterval(x), bareinterval(y)) end """ - precedes(x::BareInterval, y::BareInterval) - precedes(x::Interval, y::Interval) + precedes(x, y) Test whether any element of `x` is lesser or equal to every elements of `y`. @@ -103,49 +134,44 @@ Implement the `precedes` function of the IEEE Standard 1788-2015 (Table 10.3). precedes(x::BareInterval, y::BareInterval) = sup(x) ≤ inf(y) function precedes(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return precedes(bareinterval(x), bareinterval(y)) end """ - strictprecedes(x::BareInterval, y::BareInterval) - strictprecedes(x::Interval, y::Interval) + strictprecedes(x, y) Test whether any element of `x` is strictly lesser than every elements of `y`. Implement the `strictPrecedes` function of the IEEE Standard 1788-2015 (Table 10.3). """ -function strictprecedes(x::BareInterval, y::BareInterval) - (isempty_interval(x) | isempty_interval(y)) && return true - return sup(x) < inf(y) -end +strictprecedes(x::BareInterval, y::BareInterval) = isempty_interval(x) | isempty_interval(y) | (sup(x) < inf(y)) function strictprecedes(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return strictprecedes(bareinterval(x), bareinterval(y)) end """ - isdisjoint_interval(x::BareInterval, y::BareInterval) - isdisjoint_interval(x::Interval, y::Interval) + isdisjoint_interval(x, y) Test whether `x` and `y` have no common elements. Implement the `disjoint` function of the IEEE Standard 1788-2015 (Table 9.3). """ -function isdisjoint_interval(a::BareInterval, b::BareInterval) - (isempty_interval(a) | isempty_interval(b)) && return true - return _strictlessprime(sup(b), inf(a)) | _strictlessprime(sup(a), inf(b)) -end +isdisjoint_interval(a::BareInterval, b::BareInterval) = + isempty_interval(a) | isempty_interval(b) | _strictlessprime(sup(b), inf(a)) | _strictlessprime(sup(a), inf(b)) function isdisjoint_interval(x::Interval, y::Interval) - (isnai(x) | isnai(y)) && return false + isnai(x) | isnai(y) && return false return isdisjoint_interval(bareinterval(x), bareinterval(y)) end +isdisjoint_interval(x::Complex, y::Complex) = + isdisjoint_interval(real(x), real(y)) | isdisjoint_interval(imag(x), imag(y)) + """ - in_interval(x::Real, y::BareInterval) - in_interval(x::Real, y::Interval) + in_interval(x, y) Test whether `x` is an element of `y`. @@ -162,46 +188,60 @@ function in_interval(x::Real, y::Interval) end in_interval(::BareInterval, ::BareInterval) = - throw(ArgumentError("`in_interval` is purposely not supported for two interval arguments. See instead `issubset_interval`.")) + throw(ArgumentError("`in_interval` is purposely not supported for two interval arguments. See instead `issubset_interval`")) in_interval(::Interval, ::Interval) = - throw(ArgumentError("`in_interval` is purposely not supported for two interval arguments. See instead `issubset_interval`.")) + throw(ArgumentError("`in_interval` is purposely not supported for two interval arguments. See instead `issubset_interval`")) + +in_interval(x::Complex, y::Complex) = in_interval(real(x), real(y)) & in_interval(imag(x), imag(y)) +in_interval(x::Complex, y::Real) = in_interval(real(x), y) & isthinzero(imag(x)) +in_interval(x::Real, y::Complex) = in_interval(x, real(y)) & in_interval(0, imag(y)) """ - isempty_interval(x::BareInterval) - isempty_interval(x::Interval) + isempty_interval(x) Test whether `x` contains no elements. Implement the `isEmpty` function of the IEEE Standard 1788-2015 (Section 10.6.3). """ -isempty_interval(x::BareInterval{T}) where {T<:NumTypes} = - (inf(x) == typemax(T)) & (sup(x) == typemin(T)) +isempty_interval(x::BareInterval{T}) where {T<:NumTypes} = (inf(x) == typemax(T)) & (sup(x) == typemin(T)) function isempty_interval(x::Interval) isnai(x) && return false return isempty_interval(bareinterval(x)) end +isempty_interval(x::Complex) = isempty_interval(real(x)) & isempty_interval(imag(x)) + """ - isentire_interval(x::BareInterval) - isentire_interval(x::Interval) + isentire_interval(x) Test whether `x` is the entire real line. Implement the `isEntire` function of the IEEE Standard 1788-2015 (Section 10.6.3). """ -isentire_interval(x::BareInterval{T}) where {T<:NumTypes} = - (inf(x) == typemin(T)) & (sup(x) == typemax(T)) +isentire_interval(x::BareInterval{T}) where {T<:NumTypes} = (inf(x) == typemin(T)) & (sup(x) == typemax(T)) function isentire_interval(x::Interval) isnai(x) && return false return isentire_interval(bareinterval(x)) end +isentire_interval(x::Complex) = isentire_interval(real(x)) & isentire_interval(imag(x)) + """ - isbounded(x::BareInterval) - isbounded(x::Interval) + isnai(x) + +Test whether `x` is an NaI (Not an Interval). +""" +isnai(::BareInterval) = false + +isnai(x::Interval) = decoration(x) == ill + +isnai(x::Complex) = isnai(real(x)) & isnai(imag(x)) + +""" + isbounded(x) Test whether `x` is empty or has finite bounds. """ @@ -212,9 +252,10 @@ function isbounded(x::Interval) return isbounded(bareinterval(x)) end +isbounded(x::Complex) = isbounded(real(x)) & isbounded(imag(x)) + """ - isbounded(x::BareInterval) - isbounded(x::Interval) + isunbounded(x) Test whether `x` is not empty and has infinite bounds. """ @@ -225,21 +266,15 @@ function isunbounded(x::Interval) return isunbounded(bareinterval(x)) end -""" - isnai(x::BareInterval) - isnai(x::Interval) +isunbounded(x::Complex) = isunbounded(real(x)) | isunbounded(imag(x)) -Test whether `x` is an NaI. """ -isnai(::BareInterval) = false - -isnai(x::Interval) = decoration(x) == ill + iscommon(x) -""" - iscommon(x::BareInterval) - iscommon(x::Interval) +Test whether `x` is not empty and bounded. -Test whether `x` is non-empty and bounded. +!!! note + This is does not take into consideration the decoration of the interval. """ iscommon(x::BareInterval) = !(isentire_interval(x) | isempty_interval(x) | isunbounded(x)) @@ -248,24 +283,27 @@ function iscommon(x::Interval) return iscommon(bareinterval(x)) end +iscommon(x::Complex) = iscommon(real(x)) & iscommon(imag(x)) + """ - isatomic(x::BareInterval) - isatomic(x::Interval) + isatomic(x) -Test whether `x` is unable to be split. This occurs when the interval is empty, -or when the upper bound equals the lower bound or the bounds are consecutive +Test whether `x` is unable to be split. This occurs if the interval is empty, +or if its lower and upper bounds are equal, or if the bounds are consecutive floating-point numbers. """ -isatomic(x::BareInterval) = isempty_interval(x) | (inf(x) == sup(x)) | (sup(x) == nextfloat(inf(x))) +isatomic(x::BareInterval{<:AbstractFloat}) = isempty_interval(x) | (inf(x) == sup(x)) | (sup(x) == nextfloat(inf(x))) +isatomic(x::BareInterval{<:Rational}) = isempty_interval(x) | (inf(x) == sup(x)) function isatomic(x::Interval) isnai(x) && return false return isatomic(bareinterval(x)) end +isatomic(x::Complex) = isatomic(real(x)) & isatomic(imag(x)) + """ - isthin(x::BareInterval) - isthin(x::Interval) + isthin(x) Test whether `x` contains only a real. @@ -278,9 +316,10 @@ function isthin(x::Interval) return isthin(bareinterval(x)) end +isthin(x::Complex) = isthin(real(x)) & isthin(imag(x)) + """ - isthin(x::BareInterval, y::Number) - isthin(x::Interval, y::Number) + isthin(x, y) Test whether `x` contains only `y`. """ @@ -291,9 +330,10 @@ function isthin(x::Interval, y::Number) return isthin(bareinterval(x), y) end +isthin(x::Complex, y::Number) = isthin(real(x), y) & isthin(imag(x), y) + """ - isthinzero(x::BareInterval) - isthinzero(x::Interval) + isthinzero(x) Test whether `x` contains only zero. """ @@ -304,9 +344,10 @@ function isthinzero(x::Interval) return isthinzero(bareinterval(x)) end +isthinzero(x::Complex) = isthinzero(real(x)) & isthinzero(imag(x)) + """ - isthininteger(x::BareInterval) - isthininteger(x::Interval) + isthininteger(x) Test whether `x` contains only an integer. """ @@ -317,18 +358,4 @@ function isthininteger(x::Interval) return isthininteger(bareinterval(x)) end - - -# extension - -isequal_interval(x, y, z, w...) = isequal_interval(x, y) & isequal_interval(y, z, w...) -isequal_interval(x::Complex, y::Complex) = isequal_interval(real(x), real(y)) & isequal_interval(imag(x), imag(y)) -isequal_interval(x::Complex, y::Real) = isequal_interval(real(x), y) & isthinzero(imag(x)) -isequal_interval(x::Real, y::Complex) = isequal_interval(x, real(y)) & isthinzero(imag(y)) - -isdisjoint_interval(x::Complex, y::Complex) = - isdisjoint_interval(real(x), real(y)) | isdisjoint_interval(imag(x), imag(y)) - -in_interval(x::Complex, y::Complex) = in_interval(real(x), real(y)) & in_interval(imag(x), imag(y)) -in_interval(x::Complex, y::Real) = in_interval(real(x), y) & in_interval(imag(x), 0) -in_interval(x::Real, y::Complex) = in_interval(x, real(y)) & in_interval(0, imag(y)) +isthininteger(x::Complex) = isthininteger(real(x)) & isthininteger(imag(x)) diff --git a/src/intervals/interval_operations/cancellative.jl b/src/intervals/interval_operations/cancellative.jl index 4119808b8..3b2e71e46 100644 --- a/src/intervals/interval_operations/cancellative.jl +++ b/src/intervals/interval_operations/cancellative.jl @@ -2,70 +2,57 @@ # "Cancellative addition and subtraction" in Section 9.2 of the # IEEE Standard 1788-2015 and required for set-based flavor in Section 10.5.6 - - -# bare intervals - """ - cancelminus(a, b) + cancelminus(x, y) -Return the unique interval `c` such that `b + c = a`. +Compute the unique interval `z` such that `y + z == x`. + +The result is decorated by at most `trv` (Section 11.7.1). Implement the `cancelMinus` function of the IEEE Standard 1788-2015 (Section 9.2). """ -function cancelminus(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - (isempty_interval(a) && (isempty_interval(b) || !isunbounded(b))) && return emptyinterval(BareInterval{T}) +function cancelminus(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) & (isempty_interval(y) | !isunbounded(y)) && return emptyinterval(BareInterval{T}) + + isunbounded(x) | isunbounded(y) | isempty_interval(y) && return entireinterval(BareInterval{T}) - (isunbounded(a) || isunbounded(b) || isempty_interval(b)) && return entireinterval(BareInterval{T}) + diam(x) < diam(y) && return entireinterval(BareInterval{T}) - diam(a) < diam(b) && return entireinterval(BareInterval{T}) + z_lo, z_hi = bounds(@round(T, inf(x) - inf(y), sup(x) - sup(y))) + z_lo > z_hi && return entireinterval(BareInterval{T}) - c_lo, c_hi = bounds(@round(T, inf(a) - inf(b), sup(a) - sup(b))) - c_lo > c_hi && return entireinterval(BareInterval{T}) + # corner case 2 (page 62), involving unbounded z + z_lo == typemax(T) && return _unsafe_bareinterval(T, prevfloat(z_lo), z_hi) + z_hi == typemin(T) && return _unsafe_bareinterval(T, z_lo, nextfloat(z_hi)) - # Corner case 2 (page 62), involving unbounded c - c_lo == typemax(T) && return _unsafe_bareinterval(T, prevfloat(c_lo), c_hi) - c_hi == typemin(T) && return _unsafe_bareinterval(T, c_lo, nextfloat(c_hi)) + z = _unsafe_bareinterval(T, z_lo, z_hi) + isunbounded(z) && return z - c = _unsafe_bareinterval(T, c_lo, c_hi) - isunbounded(c) && return c + # Corner case 1 (page 62) involving finite precision for diam(x) and diam(y) + w_lo, w_hi = bounds(@round(T, inf(y) + z_lo, sup(y) + z_hi)) + (diam(x) == diam(y)) & ((prevfloat(inf(x)) > w_lo) | (nextfloat(sup(x)) < w_hi)) && return entireinterval(BareInterval{T}) - # Corner case 1 (page 62) involving finite precision for diam(a) and diam(b) - a_lo, a_hi = bounds(@round(T, inf(b) + c_lo, sup(b) + c_hi)) - (diam(a) == diam(b)) && (nextfloat(sup(a)) < a_hi || prevfloat(inf(a)) > a_lo) && return entireinterval(BareInterval{T}) + return z +end +cancelminus(x::BareInterval, y::BareInterval) = cancelminus(promote(x, y)...) - return c +function cancelminus(x::Interval, y::Interval) + r = cancelminus(bareinterval(x), bareinterval(y)) + d = min(decoration(x), decoration(y), decoration(r), trv) + t = isguaranteed(x) & isguaranteed(y) + return _unsafe_interval(r, d, t) end -cancelminus(a::BareInterval, b::BareInterval) = cancelminus(promote(a, b)...) """ - cancelplus(a, b) + cancelplus(x, y) -Return the unique interval `c` such that `b - c = a`. +Compute the unique interval `z` such that `y - z == x`; this is semantically +equivalent to `cancelminus(x, -y)`. -Equivalent to `cancelminus(a, -b)`. +The result is decorated by at most `trv` (Section 11.7.1). Implement the `cancelPlus` function of the IEEE Standard 1788-2015 (Section 9.2). """ -cancelplus(a::BareInterval, b::BareInterval) = cancelminus(a, -b) +cancelplus(x::BareInterval, y::BareInterval) = cancelminus(x, -y) - - -# decorated intervals - -for f ∈ (:cancelplus, :cancelminus) - @eval begin - """ - $($f)(x, y) - - Decorated interval extension; the result is decorated by at most `trv`, - following the IEEE-1788 Standard (see Sect. 11.7.1, pp 47). - """ - function $f(x::Interval, y::Interval) - r = $f(bareinterval(x), bareinterval(y)) - d = min(decoration(x), decoration(y), decoration(r), trv) - t = isguaranteed(x) & isguaranteed(y) - return _unsafe_interval(r, d, t) - end - end -end +cancelplus(x::Interval, y::Interval) = cancelminus(x, -y) diff --git a/src/intervals/interval_operations/constants.jl b/src/intervals/interval_operations/constants.jl index 2e4f35653..ecc541e7a 100644 --- a/src/intervals/interval_operations/constants.jl +++ b/src/intervals/interval_operations/constants.jl @@ -2,7 +2,7 @@ # IEEE Standard 1788-2015 """ - emptyinterval + emptyinterval(T=default_numtype()) Create an empty interval. This interval is an exception to the fact that the lower bound is larger than the upper one. @@ -21,10 +21,14 @@ emptyinterval(::Type{Complex{T}}) where {T<:Real} = complex(emptyinterval(T), em emptyinterval(::T) where {T} = emptyinterval(T) """ - entireinterval + entireinterval(T=default_numtype()) -Create an interval representing the entire real line. Depending on the flavor, -`-Inf` and `Inf` may or may not be considerd inside this interval. +Create an interval representing the entire real line, or the entire complex +plane if `T` is complex. + +!!! note + Depending on the flavor, infinity may or may not be considered part of the + interval. Implement the `entire` function of the IEEE Standard 1788-2015 (Section 10.5.2). """ @@ -36,9 +40,9 @@ entireinterval(::Type{Complex{T}}) where {T<:Real} = complex(entireinterval(T), entireinterval(::T) where {T} = entireinterval(T) """ - nai + nai(T=default_numtype()) -Create an NaI. +Create an NaI (Not an Interval). """ nai(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval(emptyinterval(BareInterval{T}), ill, true) nai(::Type{T}=default_numtype()) where {T<:NumTypes} = nai(Interval{T}) diff --git a/src/intervals/interval_operations/extended_div.jl b/src/intervals/interval_operations/extended_div.jl index 53e2b5cc7..359acd951 100644 --- a/src/intervals/interval_operations/extended_div.jl +++ b/src/intervals/interval_operations/extended_div.jl @@ -1,42 +1,28 @@ # This file contains the two-output division requested for set-based flavor in # Section 10.5.5 of the IEEE Standard 1788-2015 - - -# bare intervals - """ - extended_div(a::BareInterval, b::BareInterval) + extended_div(x, y) Two-output division. Implement the `mulRevToPair` function of the IEEE Standard 1788-2015 (Section 10.5.5). """ -function extended_div(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - alo, ahi = bounds(a) - blo, bhi = bounds(b) - z = zero(T) - if 0 < bhi && 0 > blo && !in_interval(0, a) - if ahi < 0 - return (a / _unsafe_bareinterval(T, z, bhi), a / _unsafe_bareinterval(T, blo, z)) - # return (_unsafe_bareinterval(T, T(-Inf), ahi / bhi), _unsafe_bareinterval(T, ahi / blo, T(Inf))) - elseif alo > 0 - return (a / _unsafe_bareinterval(T, blo, z), a / _unsafe_bareinterval(T, z, bhi)) - # return (_unsafe_bareinterval(T, T(-Inf), alo / blo), _unsafe_bareinterval(T, alo / bhi, T(Inf))) +function extended_div(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + ylo, yhi = bounds(y) + if 0 < yhi && 0 > ylo && !in_interval(0, x) + if sup(x) < 0 + return (x / _unsafe_bareinterval(T, zero(T), yhi), x / _unsafe_bareinterval(T, ylo, zero(T))) + elseif inf(x) > 0 + return (x / _unsafe_bareinterval(T, ylo, zero(T)), x / _unsafe_bareinterval(T, zero(T), yhi)) end - - elseif in_interval(0, a) && in_interval(0, b) + elseif in_interval(0, x) && in_interval(0, y) return (entireinterval(BareInterval{T}), emptyinterval(BareInterval{T})) - else - return (a / b, emptyinterval(BareInterval{T})) + return (x / y, emptyinterval(BareInterval{T})) end end - - -# decorated intervals - function extended_div(x::Interval, y::Interval) bx = bareinterval(x) by = bareinterval(y) diff --git a/src/intervals/interval_operations/numeric.jl b/src/intervals/interval_operations/numeric.jl index 2533e1719..7d2ed10b9 100644 --- a/src/intervals/interval_operations/numeric.jl +++ b/src/intervals/interval_operations/numeric.jl @@ -26,7 +26,7 @@ function inf(x::Interval{<:Rational}) return inf(bareinterval(x)) end -inf(x::Real) = x +inf(x::Real) = inf(interval(x)) """ sup(x) @@ -50,7 +50,7 @@ function sup(x::Interval{<:Rational}) return sup(bareinterval(x)) end -sup(x::Real) = x +sup(x::Real) = sup(interval(x)) """ bounds(x) @@ -73,7 +73,7 @@ function bounds(x::Interval{<:Rational}) return bounds(bareinterval(x)) end -bounds(x::Real) = (x, x) +bounds(x::Real) = bounds(interval(x)) """ mid(x) @@ -121,7 +121,7 @@ function mid(x::Interval{<:Rational}) return mid(bareinterval(x)) end -mid(x::Real) = x +mid(x::Real) = mid(interval(x)) mid(x::Complex) = complex(mid(real(x)), mid(imag(x))) """ @@ -175,7 +175,7 @@ function scaled_mid(x::Interval{<:Rational}, α::Real) return scaled_mid(bareinterval(x), α) end -scaled_mid(x::Real, ::Real) = x +scaled_mid(x::Real, α::Real) = scaled_mid(interval(x), α) scaled_mid(x::Complex, α::Real) = complex(scaled_mid(real(x), α), scaled_mid(imag(x), α)) """ @@ -207,7 +207,7 @@ function diam(x::Interval{<:Rational}) return diam(bareinterval(x)) end -diam(x::Real) = zero(x) +diam(x::Real) = diam(interval(x)) diam(x::Complex) = max(diam(real(x)), diam(imag(x))) """ @@ -236,7 +236,7 @@ function radius(x::Interval{<:Rational}) return radius(bareinterval(x)) end -radius(x::Real) = zero(x) +radius(x::Real) = radius(interval(x)) radius(x::Complex) = max(radius(real(x)), radius(imag(x))) """ @@ -264,7 +264,7 @@ function midradius(x::Interval{<:Rational}) return midradius(bareinterval(x)) end -midradius(x::Real) = (mid(x), radius(x)) +midradius(x::Real) = midradius(interval(x)) midradius(x::Complex) = (mid(x), radius(x)) """ @@ -294,7 +294,7 @@ function mag(x::Interval{<:Rational}) return mag(bareinterval(x)) end -mag(x::Real) = abs(x) +mag(x::Real) = mag(interval(x)) mag(x::Complex) = max(mag(real(x)), mag(imag(x))) """ @@ -326,8 +326,8 @@ function mig(x::Interval{<:Rational}) return mig(bareinterval(x)) end -mig(x::Real) = abs(x) -mig(x::Complex) = min(mag(real(x)), mag(imag(x))) +mig(x::Real) = mig(interval(x)) +mig(x::Complex) = min(mig(real(x)), mig(imag(x))) """ dist(x, y) diff --git a/src/intervals/interval_operations/overlap.jl b/src/intervals/interval_operations/overlap.jl index 31f37acd9..3e1ee788a 100644 --- a/src/intervals/interval_operations/overlap.jl +++ b/src/intervals/interval_operations/overlap.jl @@ -1,67 +1,62 @@ # This file contains the `overlap` function required for set-based flavor in -# Section 10.6.4 of the IEEE Standard 1788-2015. +# Section 10.6.4 of the IEEE Standard 1788-2015 """ - Overlap <: EnumX{Int32} + Overlap -Struct containing the `overlap` instances included in the IEEE Standard 1788-2015. -They are numerated starting on 1. To see the distinct instances, type -`IntervalArithmetic.Overlap.T`. +Module containing the enumeration constant `State` described in Section 10.6.4 +of the IEEE Standard 1788-2015. """ -@enumx Overlap begin - both_empty = 1 - first_empty - second_empty - before - meets - overlaps - starts - contained_by - finishes - equals - finished_by - contains - started_by - overlapped_by - met_by - after +module Overlap + @enum State begin + both_empty = 1 + first_empty + second_empty + before + meets + overlaps + starts + contained_by + finishes + equals + finished_by + contains + started_by + overlapped_by + met_by + after + end end - - -# bare intervals - """ - overlap(a, b) + overlap(x::BareInterval, y::BareInterval) + overlap(x::Interval, y::Interval) -Implement the `overlap` function according to the IEEE Standard 1788-2015 -(Section 10.6.4 and Table 10.7). +Implement the `overlap` function of the IEEE Standard 1788-2015 (Table 10.7). """ -function overlap(a::BareInterval, b::BareInterval) - # At least one interval is empty - isempty_interval(a) && isempty_interval(b) && return Overlap.both_empty - isempty_interval(a) && return Overlap.first_empty - isempty_interval(b) && return Overlap.second_empty - - # States with both intervals non-empty - sup(a) < inf(b) && return Overlap.before - inf(a) != sup(a) && inf(b) != sup(b) && sup(a) == inf(b) && return Overlap.meets - inf(a) < inf(b) && sup(a) < sup(b) && sup(a) > inf(b) && return Overlap.overlaps - inf(a) == inf(b) && sup(a) < sup(b) && return Overlap.starts - inf(b) < inf(a) && sup(a) < sup(b) && return Overlap.contained_by - inf(b) < inf(a) && sup(a) == sup(b) && return Overlap.finishes - isequal_interval(a, b) && return Overlap.equals - inf(a) < inf(b) && sup(a) == sup(b) && return Overlap.finished_by - inf(b) > inf(a) && sup(a) > sup(b) && return Overlap.contains - inf(a) == inf(b) && sup(a) > sup(b) && return Overlap.started_by - inf(a) > inf(b) && sup(a) > sup(b) && inf(a) < sup(b) && return Overlap.overlapped_by - inf(a) != sup(a) && inf(b) != sup(b) && inf(a) == sup(b) && return Overlap.met_by - sup(b) < sup(a) && return Overlap.after +function overlap(x::BareInterval, y::BareInterval) + # at least one interval is empty + isempty_interval(x) & isempty_interval(y) && return Overlap.both_empty + isempty_interval(x) && return Overlap.first_empty + isempty_interval(y) && return Overlap.second_empty + + # states with both intervals non-empty + sup(x) < inf(y) && return Overlap.before + (inf(x) != sup(x)) & (inf(y) != sup(y)) & (sup(x) == inf(y)) && return Overlap.meets + (inf(x) < inf(y)) & (sup(x) < sup(y)) & (sup(x) > inf(y)) && return Overlap.overlaps + (inf(x) == inf(y)) & (sup(x) < sup(y)) && return Overlap.starts + (inf(y) < inf(x)) & (sup(x) < sup(y)) && return Overlap.contained_by + (inf(y) < inf(x)) & (sup(x) == sup(y)) && return Overlap.finishes + isequal_interval(x, y) && return Overlap.equals + (inf(x) < inf(y)) & (sup(x) == sup(y)) && return Overlap.finished_by + (inf(y) > inf(x)) & (sup(x) > sup(y)) && return Overlap.contains + (inf(x) == inf(y)) & (sup(x) > sup(y)) && return Overlap.started_by + (inf(x) > inf(y)) & (sup(x) > sup(y)) & (inf(x) < sup(y)) && return Overlap.overlapped_by + (inf(x) != sup(x)) & (inf(y) != sup(y)) & (inf(x) == sup(y)) && return Overlap.met_by + (sup(y) < sup(x)) && return Overlap.after end - - -# decorated intervals -# TODO: handle NaI differently - -overlap(x::Interval, y::Interval) = overlap(bareinterval(x), bareinterval(y)) +function overlap(x::Interval, y::Interval) + isnai(x) | isnai(y) && return throw(ArgumentError("overlap is not defined for NaI")) + return overlap(bareinterval(x), bareinterval(y)) +end diff --git a/src/intervals/interval_operations/set_operations.jl b/src/intervals/interval_operations/set_operations.jl index baf4cc07a..7440ac82e 100644 --- a/src/intervals/interval_operations/set_operations.jl +++ b/src/intervals/interval_operations/set_operations.jl @@ -1,99 +1,139 @@ # This file contains the functions described as "Set operations" in Section 9.3 # of the IEEE Std 1788-2015 and required for set-based flavor in Section 10.5.7 -# Some other related functions are also present - - - -# bare intervals +# Some other (non required) related functions are also present """ - intersect_interval(a, b) + intersect_interval(x, y) + +Returns the intersection of the intervals `x` and `y`, considered as (extended) +sets of real numbers. That is, the set that contains the points common in `x` +and `y`. -Returns the intersect_interval of the intervals `a` and `b`, considered as -(extended) sets of real numbers. That is, the set that contains -the points common in `a` and `b`. +The result is decorated by at most `trv` (Section 11.7.1). Implement the `intersection` function of the IEEE Standard 1788-2015 (Section 9.3). """ -function intersect_interval(a::BareInterval{T}, b::BareInterval{S}) where {T<:NumTypes,S<:NumTypes} - R = promote_numtype(T, S) - isdisjoint_interval(a, b) && return emptyinterval(BareInterval{R}) - return _unsafe_bareinterval(R, max(inf(a), inf(b)), min(sup(a), sup(b))) +function intersect_interval(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isdisjoint_interval(x, y) && return emptyinterval(BareInterval{T}) + return _unsafe_bareinterval(T, max(inf(x), inf(y)), min(sup(x), sup(y))) end +intersect_interval(x::BareInterval, y::BareInterval) = intersect_interval(promote(x, y)...) -""" - hull(a, b) +function intersect_interval(x::Interval, y::Interval) + r = intersect_interval(bareinterval(x), bareinterval(y)) + d = min(decoration(x), decoration(y), decoration(r), trv) + t = isguaranteed(x) & isguaranteed(y) + return _unsafe_interval(r, d, t) +end -Return the "interval hull" of the intervals `a` and `b`, considered as -(extended) sets of real numbers, i.e. the smallest interval that contains -all of `a` and `b`. +intersect_interval(x, y, z, w...) = reduce(intersect_interval, (x, y, z, w...)) +intersect_interval(x::Complex, y::Complex) = complex(intersect_interval(real(x), real(y)), intersect_interval(imag(x), imag(y))) +intersect_interval(x::Real, y::Complex) = complex(intersect_interval(x, real(y)), intersect_interval(zero(x), imag(y))) +intersect_interval(x::Complex, y::Real) = complex(intersect_interval(real(x), y), intersect_interval(imag(x), zero(y))) -Implement the `convexHull` function of the IEEE Standard 1788-2015 (Section 9.3). """ -hull(a::BareInterval{T}, b::BareInterval{S}) where {T<:NumTypes,S<:NumTypes} = - _unsafe_bareinterval(promote_numtype(T, S), min(inf(a), inf(b)), max(sup(a), sup(b))) + hull(x, y) +Return the interval hull of the intervals `x` and `y`, considered as (extended) +sets of real numbers, i.e. the smallest interval that contains all of `x` and +`y`. + +The result is decorated by at most `trv` (Section 11.7.1). + +Implement the `convexHull` function of the IEEE Standard 1788-2015 (Section 9.3). """ - setdiff_interval(x::BareInterval, y::BareInterval) +function hull(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) & isempty_interval(y) && return x + return _unsafe_bareinterval(T, min(inf(x), inf(y)), max(sup(x), sup(y))) +end +hull(x::BareInterval, y::BareInterval) = hull(promote(x, y)...) -Calculate the set difference `x ∖ y`, i.e. the set of values -that are inside the interval `x` but not inside `y`. +function hull(x::Interval, y::Interval) + r = hull(bareinterval(x), bareinterval(y)) + d = min(decoration(x), decoration(y), decoration(r), trv) + t = isguaranteed(x) & isguaranteed(y) + return _unsafe_interval(r, d, t) +end -Returns an array of intervals. -The array may: +hull(x, y, z, w...) = reduce(hull, (x, y, z, w...)) +hull(x::Complex, y::Complex) = complex(hull(real(x), real(y)), hull(imag(x), imag(y))) +hull(x::Real, y::Complex) = complex(hull(x, real(y)), hull(zero(x), imag(y))) +hull(x::Complex, y::Real) = complex(hull(real(x), y), hull(imag(x), zero(y))) -- be empty if `x ⊆ y`; -- contain a single interval, if `y` overlaps `x` -- contain two intervals, if `y` is strictly contained within `x`. """ -function setdiff_interval(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} - inter = intersect_interval(x, y) + interiordiff(x, y) - isempty_interval(inter) && return [x] - isequal_interval(inter, x) && return BareInterval{T}[] # x is subset of y; setdiff is empty +Remove the interior of `y` from `x`. If `x` and `y` are vectors, then they are +treated as multi-dimensional intervals. +""" +function interiordiff(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isinterior(x, y) && return BareInterval{T}[] # or `[emptyinterval(BareInterval{T})]`? + isdisjoint_interval(x, y) && return [x] + isequal_interval(x, y) && return [_unsafe_bareinterval(T, inf(x), inf(x)), _unsafe_bareinterval(T, sup(x), sup(x))] + inter = intersect_interval(x, y) inf(x) == inf(inter) && return [_unsafe_bareinterval(T, sup(inter), sup(x))] sup(x) == sup(inter) && return [_unsafe_bareinterval(T, inf(x), inf(inter))] return [_unsafe_bareinterval(T, inf(x), inf(y)), _unsafe_bareinterval(T, sup(y), sup(x))] end +interiordiff(x::BareInterval, y::BareInterval) = interiordiff(promote(x, y)...) + +function interiordiff(x::Interval, y::Interval) + r = interiordiff(bareinterval(x), bareinterval(y)) + t = isguaranteed(x) & isguaranteed(y) + return _unsafe_interval.(r, min.(decoration(x), decoration(y), decoration.(r), trv), t) +end +function interiordiff(x::AbstractVector, y::AbstractVector) + # start from the total overlap (in all directions); expand each direction in turn + N = length(x) + len = length(y) + N == len || return throw(DimensionMismatch("x has length $N, y has length $len")) -# decorated intervals + T = promote_type(typeof(x), typeof(y)) -for f ∈ (:intersect_interval, :hull) - @eval begin - """ - $($f)(x, y) + any(t -> isdisjoint_interval(t[1], t[2]), zip(x, y)) && return T[x] - Decorated interval extension; the result is decorated by at most `trv`, - following the IEEE-1788 Standard (see Sect. 11.7.1, pp 47). - """ - function $f(x::Interval, y::Interval) - r = $f(bareinterval(x), bareinterval(y)) - d = min(decoration(x), decoration(y), decoration(r), trv) - t = isguaranteed(x) & isguaranteed(y) - return _unsafe_interval(r, d, t) + result_list = Vector{T}(undef, 2*N) + offset = 0 + x_bis = copy(x) + + @inbounds for i ∈ eachindex(x, y) + h₁, h₂, inter = _interiordiff(x[i], y[i]) + u = similar(T, N) + v = similar(T, N) + @inbounds for j ∈ eachindex(u) + u[j] = ifelse(j == i, h₁, x_bis[j]) + v[j] = ifelse(j == i, h₂, x_bis[j]) end + result_list[begin+offset] = u + result_list[begin+1+offset] = v + offset += 2 + x_bis[i] = inter end -end -function setdiff_interval(x::Interval, y::Interval) - r = setdiff_interval(bareinterval(x), bareinterval(y)) - t = isguaranteed(x) & isguaranteed(y) - return _unsafe_interval.(r, min.(decoration(x), decoration(y), decoration.(r), trv), t) + return filter!(z -> !any(x -> isempty_interval(x) | isnai(x), z), result_list) end +function _interiordiff(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isdisjoint_interval(x, y) && return (x, emptyinterval(BareInterval{T}), emptyinterval(BareInterval{T})) + inter = intersect_interval(x, y) + isinterior(x, y) && return (emptyinterval(BareInterval{T}), emptyinterval(BareInterval{T}), inter) + isequal_interval(x, y) && return (_unsafe_bareinterval(T, inf(x), inf(x)), _unsafe_bareinterval(T, sup(x), sup(x)), inter) -# extension + inf(x) == inf(inter) && return (_unsafe_bareinterval(T, sup(inter), sup(x)), emptyinterval(BareInterval{T}), inter) + sup(x) == sup(inter) && return (_unsafe_bareinterval(T, inf(x), inf(inter)), emptyinterval(BareInterval{T}), inter) -for f ∈ (:intersect_interval, :hull) - @eval begin - $f(x, y, z, w...) = reduce($f, (x, y, z, w...)) - $f(x::Complex, y::Complex) = complex($f(real(x), real(y)), $f(imag(x), imag(y))) - $f(x::Real, y::Complex) = complex($f(x, real(y)), $f(zero(x), imag(y))) - $f(x::Complex, y::Real) = complex($f(real(x), y), $f(imag(x), zero(y))) - end + return (_unsafe_bareinterval(T, inf(x), inf(y)), _unsafe_bareinterval(T, sup(y), sup(x)), inter) +end +_interiordiff(x::BareInterval, y::BareInterval) = _interiordiff(promote(x, y)...) + +function _interiordiff(x::Interval, y::Interval) + h₁, h₂, inter = _interiordiff(bareinterval(x), bareinterval(y)) + d = min(decoration(x), decoration(y), trv) + t = isguaranteed(x) & isguaranteed(y) + return (_unsafe_interval(h₁, d, t), _unsafe_interval(h₂, d, t), _unsafe_interval(inter, d, t)) end diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index b116493b0..1565f2498 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -1,10 +1,13 @@ # Construction and composability with numbers include("construction.jl") + export BareInterval, bareinterval, decoration, ill, trv, def, dac, com, + Interval, interval, isguaranteed, @I_str include("parsing.jl") include("real_interface.jl") # Rounding include("rounding.jl") + export IntervalRounding include("rounding_macros.jl") # Flavors @@ -16,17 +19,26 @@ include("arithmetic/basic.jl") include("arithmetic/hyperbolic.jl") include("arithmetic/integer.jl") include("arithmetic/power.jl") + export rootn, pown, fastpow include("arithmetic/trigonometric.jl") # Other functions include("interval_operations/cancellative.jl") + export cancelminus, cancelplus include("interval_operations/constants.jl") + export emptyinterval, entireinterval, nai include("interval_operations/extended_div.jl") + export extended_div include("interval_operations/boolean.jl") + export isempty_interval, isentire_interval, isequal_interval, in_interval, + issubset_interval, isinterior, precedes, strictprecedes, + isdisjoint_interval, isweakless, isstrictless, isthin, isthinzero, + isbounded, isunbounded, isnai, iscommon, isatomic include("interval_operations/overlap.jl") + export Overlap, overlap include("interval_operations/numeric.jl") + export inf, sup, bounds, mid, scaled_mid, diam, radius, midradius, mag, mig, dist include("interval_operations/set_operations.jl") + export intersect_interval, hull, interiordiff include("interval_operations/bisect.jl") - -# Multidimensional functions -include("multidim.jl") + export bisect, mince diff --git a/src/intervals/multidim.jl b/src/intervals/multidim.jl deleted file mode 100644 index 179a86a35..000000000 --- a/src/intervals/multidim.jl +++ /dev/null @@ -1,97 +0,0 @@ -""" - bisect(x::AbstractVector, i::Integer, α=0.49609375) - -Bisect the `IntervalBox` in side number `i`. -""" -function bisect(x::AbstractVector, i::Integer, α=0.49609375) - y1, y2 = bisect(x[i], α) - x1 = copy(x) - x1[i] = y1 - x2 = copy(x) - x2[i] = y2 - return (x1, x2) -end - -""" - mince(x::AbstractVector, n::Integer) - -Splits `x` in `n` intervals in each dimension of the same diameter. These -intervals are combined in all possible intervals, which are returned -as a vector. -""" -mince(x::AbstractVector, n::Integer) = mince(x, ntuple(_ -> n, length(x))) - -""" - mince(x::AbstractVector, n::NTuple{N,Integer}) - -Splits `x[i]` in `n[i]` intervals . These intervals are -combined in all possible intervals, which are returned -as a vector. -""" -function mince(x::AbstractVector, n::NTuple{N,Integer}) where {N} - length(x) == N || return throw(DimensionMismatch("x and n must have the same length")) - minced_intervals = [mince(x[i], n[i]) for i ∈ 1:N] - minced_boxes = Vector{typeof(x)}(undef, prod(n)) - for (k, cut_indices) ∈ enumerate(CartesianIndices(n)) - y = similar(x, N) - for (i, j) ∈ zip(1:N, eachindex(y)) - y[j] = minced_intervals[i][cut_indices[i]] - end - minced_boxes[k] = y - end - return minced_boxes -end - -""" - setdiff_interval(A::AbstractVector, B::AbstractVector) - -Returns a vector of `IntervalBox`es that are in the set difference `A ∖ B`, -i.e. the set of `x` that are in `A` but not in `B`. - -Algorithm: Start from the total overlap (in all directions); -expand each direction in turn. -""" -function setdiff_interval(A::T, B::T) where {T<:AbstractVector} - N = length(A) - (length(B) == N) || return throw(DimensionMismatch("A and B must have the same length")) - inter = intersect_interval.(A, B) - any(x -> isempty_interval(x) | isnai(x), inter) && return [A] - result_list = Vector{T}(undef, 2*N) - offset = 0 - x = copy(A) - @inbounds for i ∈ 1:N - h1, h2 = _setdiff_interval(A[i], B[i]) - y = similar(T, N) - z = similar(T, N) - for (j, k) ∈ enumerate(eachindex(y)) - y[k] = ifelse(j == i, h1, x[k]) - z[k] = ifelse(j == i, h2, x[k]) - end - result_list[offset+1] = y - result_list[offset+2] = z - offset += 2 - x[i] = inter[i] - end - return filter!(x -> !any(x -> isempty_interval(x) | isnai(x), x), result_list) -end - -# Computes the set difference x\\y and always returns a tuple of two intervals. -# If the set difference is only one interval or is empty, then the returned tuple contains 1 -# or 2 empty intervals. -function _setdiff_interval(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} - inter = intersect_interval(x, y) - isempty_interval(inter) && return (x, emptyinterval(BareInterval{T})) - isequal_interval(inter, x) && return (emptyinterval(BareInterval{T}), emptyinterval(BareInterval{T})) # x is subset of y; setdiff is empty - xlo, xhi = bounds(x) - ylo, yhi = bounds(y) - interlo, interhi = bounds(inter) - xlo == interlo && return (_unsafe_bareinterval(T, interhi, xhi), emptyinterval(BareInterval{T})) - xhi == interhi && return (_unsafe_bareinterval(T, xlo, interlo), emptyinterval(BareInterval{T})) - return (_unsafe_bareinterval(T, xlo, ylo), _unsafe_bareinterval(T, yhi, xhi)) -end - -function _setdiff_interval(x::Interval{T}, y::Interval{T}) where {T<:NumTypes} - h1, h2 = _setdiff_interval(bareinterval(x), bareinterval(y)) - t = isguaranteed(x) & isguaranteed(y) - return (_unsafe_interval(h1, trv, t), _unsafe_interval(h2, trv, t)) -end diff --git a/src/intervals/parsing.jl b/src/intervals/parsing.jl index 8f42f164f..d8fce7da4 100644 --- a/src/intervals/parsing.jl +++ b/src/intervals/parsing.jl @@ -1,10 +1,11 @@ """ I"str" -Create an interval according to the IEEE Standard 1788-2015. This is -semantically equivalent to `parse(Interval{default_numtype()}, str)`. +Create an interval by parsing the string `"str"`; this is semantically +equivalent to `parse(Interval{default_numtype()}, "str")`. # Examples + ```jldoctest julia> setdisplay(:full); @@ -13,22 +14,29 @@ Interval{Float64}(3.0, 4.0, com) julia> I"0.1" Interval{Float64}(0.09999999999999999, 0.1, com) + +julia> in_interval(1//10, I"0.1") +true ``` """ macro I_str(str) return parse(Interval{default_numtype()}, str) end -# - """ - parse(BareInterval, s::AbstractString) + parse(T<:BareInterval, str) + parse(T<:Interval, str) Create an interval according to the IEEE Standard 1788-2015. In contrast with constructors that do not use strings, this constructor guarantees that the returned interval tightly encloses the values described by the string, including numbers that have no exact float representation (e.g. 0.1). +Parse a string of the form `"[a, b]_dec"` as an `Interval` with decoration `dec`. +If the decoration is not specified, it is computed based on the parsed interval. +If the input is an invalid string, a warning is printed and NaI is returned. The +parser is case unsensitive. + Examples of allowed string formats: - `I"[1.33]"` or `I"1.33"`: the interval containing ``1.33``. - `I"[1.44, 2.78]"`: the interval ``[1.44, 2.78]``. @@ -47,15 +55,13 @@ Examples of allowed string formats: For more details, see sections 9.7 and 12.11 of the IEEE Standard 1788-2015. # Examples + ```jldoctest julia> setdisplay(:full); julia> parse(BareInterval{Float64}, "[1, 2]") BareInterval{Float64}(1.0, 2.0) -julia> parse(BareInterval{Float64}, "[1, 2]") -BareInterval{Float64}(1.0, 2.0) - julia> parse(BareInterval{Float64}, "[1,]") BareInterval{Float64}(1.0, Inf) @@ -64,151 +70,135 @@ BareInterval{Float64}(-Inf, Inf) julia> parse(BareInterval{Float64}, "6.42?2e2") BareInterval{Float64}(640.0, 644.0) -``` -""" -function parse(::Type{BareInterval{T}}, str::AbstractString) where {T<:NumTypes} - str = lowercase(strip(str)) - try - ival, _ = _parse(BareInterval{T}, str) - return ival - catch e - if e isa ArgumentError - @warn "invalid input, empty bare interval is returned" - return emptyinterval(BareInterval{T}) - else - rethrow(e) - end - end -end - -""" - parse(Interval, s::AbstractString) - -Parse a string of the form `"[a, b]_dec"` as an `Interval` with decoration `dec`. -If the decoration is not specified, it is computed based on the parsed interval. -If the input is an invalid string, a warning is printed and NaI is returned. The parser is -case unsensitive. - -# Examples -```jldoctest -julia> setdisplay(:full); julia> parse(Interval{Float64}, "[1, 2]") Interval{Float64}(1.0, 2.0, com) julia> parse(Interval{Float64}, "[1, 2]_def") Interval{Float64}(1.0, 2.0, def) + +julia> parse(Interval{Float64}, "[1, 1e400]_com") +Interval{Float64}(1.0, Inf, dac) ``` """ -function parse(::Type{Interval{T}}, s::AbstractString) where {T<:NumTypes} - s = lowercase(strip(s)) - s == "[nai]" && return nai(T) - try - if '_' ∉ s - ival, _ = _parse(BareInterval{T}, s) - return interval(T, ival) - end - - decorations = Dict{String,Decoration}( - "ill" => ill, - "trv" => trv, - "def" => def, - "dac" => dac, - "com" => com) - - interval_string, dec = split(s, "_") - - ival, isnotcom = _parse(BareInterval{T}, interval_string) - dec_calc = decoration(ival) - - haskey(decorations, dec) || return throw(ArgumentError("invalid decoration $dec")) - dec_given = decorations[dec] - - #= - If I try to give a decoration that is too high, e.g. [1, Inf]_com, then it - should error and return NaI. Exception to this is if the interval would be com - but becomes dac because of finite precision, e.g. "[1e403]_com" when parse to - Interval{Float64} is allowed to become [prevfloat(Inf), Inf]_dac without erroring. - The isnotcom flag returned by _parse is used to track if the interval was originally - smaller than com or became dac because of overflow. - =# - dec_given > dec_calc && isnotcom && return throw(ArgumentError("invalid decoration $dec for $ival")) +function Base.parse(::Type{BareInterval{T}}, str::AbstractString) where {T<:NumTypes} + if '_' ∈ str + @warn "failed to parse a decorated interval as a `BareInterval`, empty interval is returned" + return emptyinterval(BareInterval{T}) + else + str = lowercase(strip(str)) + x, _, isexactnai, iserror = _parse(T, str) # `isexactnai == true` for string of the form [ nai ] + iserror && @warn "parsing error, empty interval is returned" + isexactnai && @warn "parsed NaI, empty interval is returned" + return x.bareinterval # use `x.bareinterval` to not print a warning if `x` is an NaI + end +end - return interval(T, ival, min(dec_given, dec_calc)) - catch e - if e isa ArgumentError - @warn "invalid input, NaI is returned" - return nai(T) +function Base.parse(::Type{Interval{T}}, str::AbstractString) where {T<:NumTypes} + str = lowercase(strip(str)) + if '_' ∉ str + x, _, _, iserror = _parse(T, str) + iserror && @warn "parsing error, NaI is returned" + return x + else + bx_str, d_str = split(str, '_'; keepempty = true, limit = 2) + decorations = Dict{String,Decoration}("ill" => ill, "trv" => trv, "def" => def, "dac" => dac, "com" => com) + if haskey(decorations, d_str) + d_given = decorations[d_str] + x, flag, _, iserror = _parse(T, bx_str) # `flag == true` if the parse interval is unbounded due to the precision + if iserror + @warn "parsing error, NaI is returned" + return x + else + d = decoration(x) + if d_given > d && flag + @warn "parsed interval $x is incompatible with parsed decoration $d_given, NaI is returned" + return nai(T) + else + return interval(T, x, d_given) # warning is printed if `d_given == ill` + end + end else - rethrow(e) + @warn "failed to parse the decoration, NaI is returned" + return nai(T) end end end -""" - _parse(::Type{Interval{T}}, s::AbstractString) where T - -Try to parse the string `s` to an interval of type `Interval{T}` and throws an argument -error if an invalid string is given. - -### Output - -- the parsed interval -- a flag `isnotcom`, which is set to true if the input interval is not `com` and to false - otherwise. This is used to distinguish the case when an interval is supposed to be - unbounded (e.g. input `"[3, infinity]"`) or becomes unbounded because of overflow - (e.g. the input `"[3, 1e400]", which is parse to `[3, ∞]` when using `Float64`). -""" -function _parse(::Type{BareInterval{T}}, s::AbstractString) where {T<:NumTypes} - isnotcom = occursin("inf", s) - if startswith(s, '[') && endswith(s, ']') # parse as interval - s = strip(s[2:end-1]) - if ',' in s # inf-sup interval - lo, hi = strip.(split(s, ',')) - isempty(lo) && (lo = "-inf"; isnotcom = true) - isempty(hi) && (hi = "inf"; isnotcom = true) - lo = _parse_num(T, lo, RoundDown) - hi = _parse_num(T, hi, RoundUp) +function _parse(::Type{T}, str::AbstractString) where {T<:NumTypes} + if startswith(str, '[') && endswith(str, ']') + s = strip(view(str, 2:length(str)-1)) + if ',' ∈ s # inf-sup interval + lo_str, hi_str = strip.(split(s, ','; keepempty = true, limit = 2)) + if isempty(lo_str) + lo_str = "-inf" + end + if isempty(hi_str) + hi_str = "inf" + end + try + lo = _parse_num(T, lo_str, RoundDown) + hi = _parse_num(T, hi_str, RoundUp) + flag = !((isinf(lo) & !occursin("inf", lo_str)) | (isinf(hi) & !occursin("inf", hi_str))) + x = interval(T, lo, hi) + isatomic(x) & !isempty_interval(x) & !isthin(x) && @warn "$str is parsed as an atomic interval, something wrong may have happened" + return x, flag, false, false + catch + return nai(T), false, false, true + end else # point interval - - (s == "empty" || isempty(s)) && return emptyinterval(BareInterval{T}), true - s == "entire" && return entireinterval(BareInterval{T}), true - lo = _parse_num(T, s, RoundDown) - hi = _parse_num(T, s, RoundUp) + s == "nai" && return nai(T), true, true, false # no warning is printed + (s == "empty") | isempty(s) && return emptyinterval(T), true, false, false # no warning is printed + s == "entire" && return entireinterval(T), true, false, false # no warning is printed + try + lo = _parse_num(T, s, RoundDown) + hi = _parse_num(T, s, RoundUp) + flag = !((isinf(lo) & !occursin("inf", s)) | (isinf(hi) & !occursin("inf", s))) + return interval(T, lo, hi), flag, false, false + catch + return nai(T), false, false, true + end end - elseif '?' in s # uncertainty interval - if occursin("??", s) # unbounded interval - isnotcom = true - m, _ = split(s, "??") - if 'u' in s # interval in the form [m, Inf] - lo = parse(T, m, RoundDown) - hi = typemax(T) - elseif 'd' in s # interval in the form [-Inf, m] - lo = typemin(T) - hi = parse(T, m, RoundUp) - else - return entireinterval(BareInterval{T}), true + elseif '?' ∈ str # uncertainty interval + if occursin("??", str) # unbounded interval + m, vde = split(str, "??"; keepempty = true, limit = 2) + if vde == "d" # [-inf, m] + lo_str = "-inf" + hi_str = m + elseif vde == "u" # [m, inf] + lo_str = m + hi_str = "inf" + elseif isempty(vde) # [-inf, inf] + return entireinterval(T), true, false, false # no warning is printed + end + try + lo = _parse_num(T, lo_str, RoundDown) + hi = _parse_num(T, hi_str, RoundUp) + flag = !((isinf(lo) & !occursin("inf", lo_str)) | (isinf(hi) & !occursin("inf", hi_str))) + return interval(T, lo, hi), flag, false, false + catch + return nai(T), false, false, true end else - m , vde = split(s, '?') + m, vde = split(str, '?'; keepempty = true, limit = 2) # ulp computation - if '.' in m # ulp is last decimal position - ulp = 1/(big(10.0)^length(split(m, '.')[2])) + if '.' ∈ m # ulp is last decimal position + ulp = inv(big(10.0) ^ length(split(m, '.')[2])) else # no decimal, hence ulp is unit ulp = big(1.0) end m = parse(BigFloat, m) - if 'e' in vde + if 'e' ∈ vde vd, e = split(vde, 'e') - e = big(10.0) ^ parse(Int, e) + e = big(10.0) ^ parse(BigInt, e) else vd = vde e = big(1.0) end - if 'u' in vd || 'd' in vd + if 'u' ∈ vd || 'd' ∈ vd d = last(vd) v = vd[1:end-1] else @@ -227,18 +217,30 @@ function _parse(::Type{BareInterval{T}}, s::AbstractString) where {T<:NumTypes} lo = T((m - v * ulp) * e, RoundDown) hi = T((m + v * ulp) * e, RoundUp) end + + flag = !(isinf(lo) | isinf(hi)) + return interval(T, lo, hi), flag, false, false end else # number - lo = _parse_num(T, s, RoundDown) - hi = _parse_num(T, s, RoundUp) + try + lo = _parse_num(T, str, RoundDown) + hi = _parse_num(T, str, RoundUp) + flag = !((isinf(lo) & !occursin("inf", str)) | (isinf(hi) & !occursin("inf", str))) + return interval(T, lo, hi), flag, false, false + catch + return nai(T), false, false, true + end end - is_valid_interval(lo, hi) && return _unsafe_bareinterval(T, lo, hi), isnotcom - return throw(ArgumentError("input $s can not be parsed as an interval.")) end -""" -Same as `parse(T, s, rounding_mode)`, but also accept string representing rational numbers. -""" +function _parse_num(::Type{T}, str::AbstractString, rounding_mode::RoundingMode) where {T<:AbstractFloat} + if '/' ∈ str + num, denum = parse.(BigInt, split(str, '/'; keepempty = false)) + return T(num//denum, rounding_mode) + end + return T(parse(BigFloat, str), rounding_mode) +end + function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Down}) where {S<:Integer,T<:Rational{S}} '/' ∈ str && return parse(T, str) x = parse(BigFloat, str) @@ -247,6 +249,7 @@ function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Down}) where z < x && return z return rationalize(S, prevfloat(y)) end + function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Up}) where {S<:Integer,T<:Rational{S}} '/' ∈ str && return parse(T, str) x = parse(BigFloat, str) @@ -255,10 +258,3 @@ function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Up}) where { z > x && return z return rationalize(S, nextfloat(y)) end -function _parse_num(::Type{T}, str::AbstractString, rounding_mode::RoundingMode) where {T<:AbstractFloat} - if '/' ∈ str - num, denum = parse.(BigInt, split(str, '/'; keepempty = false)) - return T(num//denum, rounding_mode) - end - return T(parse(BigFloat, str), rounding_mode) -end diff --git a/src/intervals/real_interface.jl b/src/intervals/real_interface.jl index 3d4cccd90..9f5d7eceb 100644 --- a/src/intervals/real_interface.jl +++ b/src/intervals/real_interface.jl @@ -118,8 +118,8 @@ for T ∈ (:BareInterval, :Interval) throw(ArgumentError("`union!` is purposely not supported for intervals. See instead `hull`")) Base.setdiff(::$T) = - throw(ArgumentError("`setdiff` is purposely not supported for intervals. See instead `setdiff_interval`")) + throw(ArgumentError("`setdiff` is purposely not supported for intervals. See instead `interiordiff`")) Base.setdiff!(::AbstractSet, ::$T) = - throw(ArgumentError("`setdiff!` is purposely not supported for intervals. See instead `setdiff_interval`")) + throw(ArgumentError("`setdiff!` is purposely not supported for intervals. See instead `interiordiff`")) end end diff --git a/src/intervals/rounding.jl b/src/intervals/rounding.jl index 8bdac0b02..dbfcf0428 100644 --- a/src/intervals/rounding.jl +++ b/src/intervals/rounding.jl @@ -57,13 +57,13 @@ Base.convert(::Type{BigFloat}, x, rounding_mode::RoundingMode) = end # Parsing from string -parse(::Type{T}, x::AbstractString, rounding_mode::RoundingMode) where T = setrounding(Float64, rounding_mode) do +Base.parse(::Type{T}, x::AbstractString, rounding_mode::RoundingMode) where T = setrounding(Float64, rounding_mode) do return float(parse(T, x)) end # use higher precision float parser to get round issues on Windows @static if Sys.iswindows() - function parse(::Type{Float64}, s::AbstractString, r::RoundingMode) + function Base.parse(::Type{Float64}, s::AbstractString, r::RoundingMode) a = setprecision(BigFloat, 53) do setrounding(BigFloat, r) do parse(BigFloat, s) # correctly takes account of rounding mode @@ -73,36 +73,36 @@ end return Float64(a, r) end - function parse(::Type{T}, s::AbstractString, r::RoundingMode) where {T <: Union{Float16, Float32}} + function Base.parse(::Type{T}, s::AbstractString, r::RoundingMode) where {T <: Union{Float16, Float32}} return T(parse(Float64, s, r), r) end end ## Functions that are the same for all rounding types: -+(a::T, ::RoundingMode) where {T<:AbstractFloat} = a # ignore rounding --(a::T, ::RoundingMode) where {T<:AbstractFloat} = -a # ignore rounding -zero(a::Interval{T}, ::RoundingMode) where {T<:AbstractFloat} = zero(T) -zero(::Type{T}, ::RoundingMode) where {T<:AbstractFloat} = zero(T) +Base.:+(a::T, ::RoundingMode) where {T<:AbstractFloat} = a # ignore rounding +Base.:-(a::T, ::RoundingMode) where {T<:AbstractFloat} = -a # ignore rounding +Base.zero(::Interval{T}, ::RoundingMode) where {T<:AbstractFloat} = zero(T) +Base.zero(::Type{T}, ::RoundingMode) where {T<:AbstractFloat} = zero(T) ## Rationals # TODO Restore full support for rational intervals # no-ops for rational rounding: -for f in (:+, :-, :*, :/) - @eval $f(a::T, b::T, ::RoundingMode) where {T<:Rational} = $f(a, b) +for f ∈ (:+, :-, :*, :/) + @eval Base.$f(a::T, b::T, ::RoundingMode) where {T<:Rational} = $f(a, b) end -function sqrt(a::T, rounding_mode::RoundingMode) where {T<:Rational} +function Base.sqrt(a::T, rounding_mode::RoundingMode) where {T<:Rational} setrounding(float(T), rounding_mode) do return sqrt(float(a)) end end -for f in (:exp2, :exp10, :cbrt) - @eval function ($f)(x::BigFloat, r::RoundingMode) # add BigFloat functions with rounding: +for f ∈ (:exp2, :exp10, :cbrt) + @eval function Base.$f(x::BigFloat, r::RoundingMode) # add BigFloat functions with rounding: setrounding(BigFloat, r) do - ($f)(x) + $f(x) end end end @@ -113,16 +113,16 @@ rounding_directions = [ (:up, RoundingMode{:Up}, nextfloat) ] -for (dir, RoundingDirection, outfloat) in rounding_directions +for (dir, RoundingDirection, outfloat) ∈ rounding_directions #= :fast and :tight for functions supported by FastRounding.jl and RoundingEmulator.jl respectively =# # NOTE RoundingEmulator.jl only works with Float32 and Float64 - for (op, f) in ( (:+, :add), (:-, :sub), (:*, :mul), (:/, :div) ) - @eval function $op(::IntervalRounding{:fast}, a, b, ::$RoundingDirection) + for (op, f) ∈ ( (:+, :add), (:-, :sub), (:*, :mul), (:/, :div) ) + @eval function Base.$op(::IntervalRounding{:fast}, a, b, ::$RoundingDirection) return FastRounding.$(Symbol(f, "_round"))(a, b, $RoundingDirection()) end - @eval function $op( + @eval function Base.$op( ::IntervalRounding{:tight}, a::T, b::T, ::$RoundingDirection) where {T<:Union{Float32, Float64}} return RoundingEmulator.$(Symbol(f, "_", dir))(a, b) @@ -130,49 +130,49 @@ for (dir, RoundingDirection, outfloat) in rounding_directions end # Sqrt - @eval function sqrt(::IntervalRounding{:fast}, a, ::$RoundingDirection) + @eval function Base.sqrt(::IntervalRounding{:fast}, a, ::$RoundingDirection) return FastRounding.sqrt_round(a, $dir) end - @eval function sqrt(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) + @eval function Base.sqrt(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) return RoundingEmulator.$(Symbol("sqrt_", dir))(a) end # Inverse - @eval function inv(::IntervalRounding{:fast}, a, ::$RoundingDirection) + @eval function Base.inv(::IntervalRounding{:fast}, a, ::$RoundingDirection) return FastRounding.inv_round(a, $dir) end - @eval function inv(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) + @eval function Base.inv(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) return RoundingEmulator.$(Symbol("div_", dir))(one(a), a) end #= :accurate and :slow =# # Power - @eval function ^(::IntervalRounding{:accurate}, a::AbstractFloat, b, ::$RoundingDirection) + @eval function Base.:^(::IntervalRounding{:accurate}, a::AbstractFloat, b, ::$RoundingDirection) return $outfloat(a^b) end - @eval function ^(::IntervalRounding{:slow}, a::BigFloat, b::AbstractFloat, ::$RoundingDirection) + @eval function Base.:^(::IntervalRounding{:slow}, a::BigFloat, b::AbstractFloat, ::$RoundingDirection) setrounding(BigFloat, $RoundingDirection()) do return a^b end end # Correct rounding of other floats must pass through BigFloat - @eval function ^(::IntervalRounding{:slow}, a::T, b, ::$RoundingDirection) where {T<:AbstractFloat} + @eval function Base.:^(::IntervalRounding{:slow}, a::T, b, ::$RoundingDirection) where {T<:AbstractFloat} setprecision(BigFloat, 53) do return T(^(IntervalRounding{:slow}, BigFloat(a), b, $RoundingDirection())) end end # Binary function - for f in (:+, :-, :*, :/, :^, :atan) - @eval function $f(::IntervalRounding{:accurate}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} + for f ∈ (:+, :-, :*, :/, :^, :atan) + @eval function Base.$f(::IntervalRounding{:accurate}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} return $outfloat($f(a, b)) end - @eval function $f(::IntervalRounding{:slow}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} + @eval function Base.$f(::IntervalRounding{:slow}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} setrounding(T, $RoundingDirection()) do return $f(a, b) end @@ -180,13 +180,13 @@ for (dir, RoundingDirection, outfloat) in rounding_directions end # Unary functions not in CRlibm - for f in (:sqrt, :inv, :cot, :sec, :csc, :acot, + for f ∈ (:sqrt, :inv, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth) - @eval function $f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) + @eval function Base.$f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) return $outfloat($f(a)) end - @eval function $f(::IntervalRounding{:slow}, a::T, ::$RoundingDirection) where {T<:AbstractFloat} + @eval function Base.$f(::IntervalRounding{:slow}, a::T, ::$RoundingDirection) where {T<:AbstractFloat} setrounding(T, $RoundingDirection()) do return $f(a) end @@ -194,50 +194,74 @@ for (dir, RoundingDirection, outfloat) in rounding_directions end # Functions defined in CRlibm - for f in CRlibm.functions - @eval function $f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) - return $outfloat($f(a)) - end + for f ∈ CRlibm.functions + if isdefined(Base, f) + @eval function Base.$f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) + return $outfloat($f(a)) + end + + @eval function Base.$f(::IntervalRounding{:slow}, a::AbstractFloat, ::$RoundingDirection) + return CRlibm.$f(a, $RoundingDirection()) + end + else + @eval function $f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) + return $outfloat($f(a)) + end - @eval function $f(::IntervalRounding{:slow}, a::AbstractFloat, ::$RoundingDirection) - return CRlibm.$f(a, $RoundingDirection()) + @eval function $f(::IntervalRounding{:slow}, a::AbstractFloat, ::$RoundingDirection) + return CRlibm.$f(a, $RoundingDirection()) + end end end end #= Default definitions, fallback and :none =# # Unary functions -for f in vcat(CRlibm.functions, [:sqrt, :inv, :cot, :sec, :csc, :acot, - :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth]) - @eval $f(a::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), a, r) - @eval $f(a::Real, r::RoundingMode) = $f(interval_rounding(), float(a), r) +for f ∈ vcat(CRlibm.functions, [:sqrt, :inv, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth]) + if isdefined(Base, f) + @eval Base.$f(a::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), a, r) + @eval Base.$f(a::Real, r::RoundingMode) = $f(interval_rounding(), float(a), r) + + # Fallback to :slow if the requested interval rounding is unavailable + @eval function Base.$f(::IntervalRounding, a, r::RoundingMode) + return $f(IntervalRounding{:slow}(), a, r) + end - # Fallback to :slow if the requested interval rounding is unavailable - @eval function $f(::IntervalRounding, a, r::RoundingMode) - return $f(IntervalRounding{:slow}(), a, r) - end + # No rounding + @eval function Base.$f(::IntervalRounding{:none}, a, r::RoundingMode) + return $f(a) + end + else + @eval $f(a::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), a, r) + @eval $f(a::Real, r::RoundingMode) = $f(interval_rounding(), float(a), r) - # No rounding - @eval function $f(::IntervalRounding{:none}, a, r::RoundingMode) - return $f(a) + # Fallback to :slow if the requested interval rounding is unavailable + @eval function $f(::IntervalRounding, a, r::RoundingMode) + return $f(IntervalRounding{:slow}(), a, r) + end + + # No rounding + @eval function $f(::IntervalRounding{:none}, a, r::RoundingMode) + return $f(a) + end end end # Binary functions -for f in (:+, :-, :*, :/, :^, :atan) - @eval $f(a::T, b::T, r::RoundingMode) where {T<:AbstractFloat} = $f(interval_rounding(), a, b, r) - @eval $f(a::Real, b::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) - @eval $f(a::AbstractFloat, b::Real, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) - @eval $f(a::AbstractFloat, b::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) - @eval $f(a::Real, b::Real, r::RoundingMode) = $f(interval_rounding(), float(a), float(b), r) +for f ∈ (:+, :-, :*, :/, :^, :atan) + @eval Base.$f(a::T, b::T, r::RoundingMode) where {T<:AbstractFloat} = $f(interval_rounding(), a, b, r) + @eval Base.$f(a::Real, b::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) + @eval Base.$f(a::AbstractFloat, b::Real, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) + @eval Base.$f(a::AbstractFloat, b::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) + @eval Base.$f(a::Real, b::Real, r::RoundingMode) = $f(interval_rounding(), float(a), float(b), r) # Fallback to :slow if the requested interval rounding is unavailable - @eval function $f(::IntervalRounding, a, b, r::RoundingMode) + @eval function Base.$f(::IntervalRounding, a, b, r::RoundingMode) return $f(IntervalRounding{:slow}(), a, b, r) end # No rounding - @eval function $f(::IntervalRounding{:none}, a, b, r::RoundingMode) + @eval function Base.$f(::IntervalRounding{:none}, a, b, r::RoundingMode) return $f(a, b) end end diff --git a/src/symbols.jl b/src/symbols.jl index af44c9180..a26734a9a 100644 --- a/src/symbols.jl +++ b/src/symbols.jl @@ -6,12 +6,18 @@ module Symbols """ ..(a, b) -Create an interval according to the IEEE Standard 1788-2015. This is +Create the interval ``[a, b]`` according to the IEEE Standard 1788-2015. This is semantically equivalent to [`interval(a, b)`](@ref). +!!! danger + Nothing is done to compensate for the fact that floating point literals are + rounded to the nearest when parsed (e.g. `0.1`). In such cases, parse the + string containing the desired value to ensure its tight enclosure. + See also: [`interval`](@ref), [`±`](@ref) and [`@I_str`](@ref). # Examples + ```jldoctest julia> using IntervalArithmetic @@ -37,14 +43,15 @@ Create the interval ``[m - r, m + r]`` according to the IEEE Standard 1788-2015. Despite using the midpoint-radius notation, the returned interval is still an [`Interval`](@ref) represented by its bounds. -!!! warning +!!! danger Nothing is done to compensate for the fact that floating point literals are - rounded to the nearest when parsed (e.g. 0.1). In such cases, use the string - macro [`@I_str`](@ref) to ensure tight enclosure around the typed numbers. + rounded to the nearest when parsed (e.g. `0.1`). In such cases, parse the + string containing the desired value to ensure its tight enclosure. See also: [`interval`](@ref), [`..`](@ref) and [`@I_str`](@ref). # Examples + ```jldoctest julia> using IntervalArithmetic @@ -78,9 +85,9 @@ Unicode alias of [`strictprecedes`](@ref). """ ⪽(a, b) -Unicode alias of [`isstrictsubset_interval`](@ref). +Unicode alias of [`isinterior`](@ref). """ -⪽ = isstrictsubset_interval +⪽ = isinterior """ ∅ diff --git a/test/ITF1788_tests/atan2.jl b/test/ITF1788_tests/atan2.jl new file mode 100644 index 000000000..8bf1fd93c --- /dev/null +++ b/test/ITF1788_tests/atan2.jl @@ -0,0 +1,79 @@ +@testset "minimal.atan2_test" begin + + @test atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0x1.921FB54442D18p1, 0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, Inf), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p0) + + @test atan(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19p0, -0x1.921FB54442D18p0) + + @test atan(bareinterval(-0x1p-1022, 0.0), bareinterval(-0x1p-1022, -0x1p-1022)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === bareinterval(0x1.2D97C7F3321D2p1, 0x1.2D97C7F3321D3p1) + + @test atan(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0)) === bareinterval(0x1.921FB54442D18p-1, 0x1.921FB54442D19p-1) + + @test atan(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === bareinterval(-0x1.921FB54442D19p-1, -0x1.921FB54442D18p-1) + + @test atan(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === bareinterval(-0x1.2D97C7F3321D3p1, -0x1.2D97C7F3321D2p1) + + @test atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, -0x1p-1022)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(0x1p-1022, 0x1p-1022)) === bareinterval(-0x1.921FB54442D19p-1, +0x1.921FB54442D19p-1) + + @test atan(bareinterval(-0x1p-1022, -0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)) === bareinterval(-0x1.2D97C7F3321D3p1, -0x1.921FB54442D18p-1) + + @test atan(bareinterval(0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)) === bareinterval(0x1.921FB54442D18p-1, 0x1.2D97C7F3321D3p1) + + @test atan(bareinterval(-2.0, 2.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 2.0), bareinterval(-3.0, -1.0)) === bareinterval(0x1.0468A8ACE4DF6p1, 0x1.921FB54442D19p1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(-3.0, -1.0)) === bareinterval(0x1.E47DF3D0DD4Dp0, 0x1.68F095FDF593Dp1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.56C6E7397F5AFp1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 2.0)) === bareinterval(0x1.DAC670561BB4Fp-2, 0x1.56C6E7397F5AFp1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(0.0, 2.0)) === bareinterval(0x1.DAC670561BB4Fp-2, 0x1.921FB54442D19p0) + + @test atan(bareinterval(1.0, 3.0), bareinterval(1.0, 3.0)) === bareinterval(0x1.4978FA3269EE1p-2, 0x1.3FC176B7A856p0) + + @test atan(bareinterval(0.0, 2.0), bareinterval(1.0, 3.0)) === bareinterval(0x0p0, 0x1.1B6E192EBBE45p0) + + @test atan(bareinterval(-2.0, 2.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.1B6E192EBBE45p0, +0x1.1B6E192EBBE45p0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.1B6E192EBBE45p0, 0x0p0) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.3FC176B7A856p0, -0x1.4978FA3269EE1p-2) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(0.0, 2.0)) === bareinterval(-0x1.921FB54442D19p0, -0x1.DAC670561BB4Fp-2) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-0x1.56C6E7397F5AFp1, -0x1.DAC670561BB4Fp-2) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.56C6E7397F5AFp1, -0x1.921FB54442D18p0) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.68F095FDF593Dp1, -0x1.E47DF3D0DD4Dp0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(-5.0, 0.0), bareinterval(-5.0, 0.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 5.0), bareinterval(-5.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 5.0), bareinterval(0.0, 5.0)) === bareinterval(0x0p0, 0x1.921FB54442D19p0) + + @test atan(bareinterval(-5.0, 0.0), bareinterval(0.0, 5.0)) === bareinterval(-0x1.921FB54442D19p0, 0x0p0) + +end diff --git a/test/ITF1788_tests/c-xsc.jl b/test/ITF1788_tests/c-xsc.jl new file mode 100644 index 000000000..0de3c91ce --- /dev/null +++ b/test/ITF1788_tests/c-xsc.jl @@ -0,0 +1,344 @@ +@testset "cxsc.intervaladdsub" begin + + @test +(bareinterval(10.0, 20.0), bareinterval(13.0, 17.0)) === bareinterval(23.0, 37.0) + + @test +(bareinterval(13.0, 17.0), bareinterval(10.0, 20.0)) === bareinterval(23.0, 37.0) + + @test -(bareinterval(10.0, 20.0), bareinterval(13.0, 16.0)) === bareinterval(-6.0, 7.0) + + @test -(bareinterval(13.0, 16.0), bareinterval(10.0, 20.0)) === bareinterval(-7.0, 6.0) + + @test -(bareinterval(10.0, 20.0)) === bareinterval(-20.0, -10.0) + + @test +(bareinterval(10.0, 20.0)) === bareinterval(10.0, 20.0) + +end +@testset "cxsc.intervalmuldiv" begin + + @test *(bareinterval(1.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(3.0, 8.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(-4.0, 8.0) + + @test *(bareinterval(-2.0, 1.0), bareinterval(3.0, 4.0)) === bareinterval(-8.0, 4.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(3.0, 4.0)) === bareinterval(-8.0, -3.0) + + @test *(bareinterval(1.0, 2.0), bareinterval(-3.0, 4.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(-3.0, 4.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(-2.0, 1.0), bareinterval(-3.0, 4.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(-3.0, 4.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(1.0, 2.0), bareinterval(-4.0, 3.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(-4.0, 3.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(-2.0, 1.0), bareinterval(-4.0, 3.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(-4.0, 3.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(1.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-8.0, -3.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-8.0, 4.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(-4.0, -3.0)) === bareinterval(3.0, 8.0) + + @test /(bareinterval(1.0, 2.0), bareinterval(4.0, 8.0)) === bareinterval(0.125, 0.5) + + @test /(bareinterval(-1.0, 2.0), bareinterval(4.0, 8.0)) === bareinterval(-0.25, 0.5) + + @test /(bareinterval(-2.0, 1.0), bareinterval(4.0, 8.0)) === bareinterval(-0.5, 0.25) + + @test /(bareinterval(-2.0, -1.0), bareinterval(4.0, 8.0)) === bareinterval(-0.5, -0.125) + + @test /(bareinterval(1.0, 2.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-1.0, 2.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, 1.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, -1.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(1.0, 2.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-1.0, 2.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, 1.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, -1.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(1.0, 2.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.5, -0.125) + + @test /(bareinterval(-1.0, 2.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.5, 0.25) + + @test /(bareinterval(-2.0, 1.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.25, 0.5) + + @test /(bareinterval(-2.0, -1.0), bareinterval(-8.0, -4.0)) === bareinterval(0.125, 0.5) + +end +@testset "cxsc.intervalsetops" begin + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)) === bareinterval(-4.0, 4.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 4.0) + + @test hull(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)) === bareinterval(-2.0, -1.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)) === bareinterval(-2.0, 2.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)) === bareinterval(1.0, 2.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, -1.0) + + @test intersect_interval(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test intersect_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test intersect_interval(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(1.0, 2.0) + + @test intersect_interval(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + +end +@testset "cxsc.intervalmixsetops" begin + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)) === bareinterval(1.0, 1.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(1.0, 1.0) + + @test intersect_interval(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + +end +@testset "cxsc.scalarmixsetops" begin + + @test hull(bareinterval(-2.0, -2.0), bareinterval(-4.0, -4.0)) === bareinterval(-4.0, -2.0) + + @test hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, -2.0) + + @test hull(bareinterval(-2.0, -2.0), bareinterval(2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, -2.0)) === bareinterval(-4.0, -2.0) + + @test hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, -2.0) + + @test hull(bareinterval(2.0, 2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, 2.0) + +end +@testset "cxsc.intervalsetcompops" begin + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === true + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === false + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test isinterior(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === true + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === true + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === true + + @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test issubset_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === true + + @test isequal_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === false + +end +@testset "cxsc.intervalscalarsetcompops" begin + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false + + @test isinterior(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false + + @test isinterior(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === false + + @test isinterior(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) === true + + @test isinterior(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === false + + @test isinterior(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === false + + @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false + + @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false + + @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true + + @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) === false + + @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test issubset_interval(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === false + + @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true + + @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false + + @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false + + @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true + +end +@testset "cxsc.intervalstdfunc" begin + + @test pown(bareinterval(11.0, 11.0), 2) === bareinterval(121.0, 121.0) + + @test pown(bareinterval(0.0, 0.0), 2) === bareinterval(0.0, 0.0) + + @test pown(bareinterval(-9.0, -9.0), 2) === bareinterval(81.0, 81.0) + + @test sqrt(bareinterval(121.0, 121.0)) === bareinterval(11.0, 11.0) + + @test sqrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sqrt(bareinterval(81.0, 81.0)) === bareinterval(9.0, 9.0) + + @test rootn(bareinterval(27.0, 27.0), 3) === bareinterval(3.0, 3.0) + + @test rootn(bareinterval(0.0, 0.0), 4) === bareinterval(0.0, 0.0) + + @test rootn(bareinterval(1024.0, 1024.0), 10) === bareinterval(2.0, 2.0) + + @test ^(bareinterval(2.0, 2.0), bareinterval(2.0, 2.0)) === bareinterval(4.0, 4.0) + + @test ^(bareinterval(4.0, 4.0), bareinterval(5.0, 5.0)) === bareinterval(1024.0, 1024.0) + + @test ^(bareinterval(2.0, 2.0), bareinterval(3.0, 3.0)) === bareinterval(8.0, 8.0) + +end diff --git a/test/ITF1788_tests/fi_lib.jl b/test/ITF1788_tests/fi_lib.jl new file mode 100644 index 000000000..c659bf418 --- /dev/null +++ b/test/ITF1788_tests/fi_lib.jl @@ -0,0 +1,1741 @@ +@testset "FI_LIB.addii" begin + + @test +(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x3.0000000000000P+0, 0x3.0000000000000P+0) + + @test +(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, -0x3.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test +(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test +(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x3.F400000000000P-1064, 0x3.F400000000000P-1064) + + @test +(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test +(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(-0x3.F400000000000P-1064, -0x3.F400000000000P-1064) + + @test +(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test +(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020) + + @test +(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020) + + @test +(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0) + + @test +(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0) + + @test +(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0) + + @test +(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0) + + @test +(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test +(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + +end +@testset "FI_LIB.subii" begin + + @test -(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test -(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0) + + @test -(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0) + + @test -(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4) + + @test -(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test -(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020) + + @test -(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020) + + @test -(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x2.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, -0x1.0000000000000P+0) + + @test -(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) + + @test -(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0) + + @test -(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x4.0000000000000P+0, -0x2.0000000000000P+0) + + @test -(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)) === bareinterval(-0xA.0000000000000P+0, -0x8.0000000000000P+0) + + @test -(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)) === bareinterval(0x8.0000000000000P+0, 0xA.0000000000000P+0) + +end +@testset "FI_LIB.mulii" begin + + @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test *(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)) === bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020) + + @test *(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)) === bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0xF.0000000000000P+0, +0x1.4000000000000P+4) + + @test *(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, +0x8.0000000000000P+0)) === bareinterval(-0x2.8000000000000P+4, +0x1.0000000000000P+4) + + @test *(bareinterval(-0x2.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0x1.4000000000000P+4, +0xF.0000000000000P+0) + + @test *(bareinterval(-0x4.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0x1.4000000000000P+4, +0x1.0000000000000P+4) + + @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x6.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(-0x4.0000000000000P-1076, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + +end +@testset "FI_LIB.divii" begin + + @test /(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test /(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test /(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test /(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020) + + @test /(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020) + + @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) + + @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) + + @test /(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0) + + @test /(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4) + + @test /(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4) + + @test /(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4) + + @test /(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4) + + @test /(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0) + + @test /(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0) + + @test /(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0) + +end +@testset "FI_LIB.unary_functions" begin + + @test exp(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(0x0.0000000000000P+0, 0x2.BA43457B11D98P-4) + + @test exp(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA38P-4) + + @test exp(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(0x0.0000000000000P+0, 0x1.5D7A2F6655DFCP-848) + + @test exp(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(0x9.34C0766401B20P-472, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x2.B7E151628AED2P+0, 0x7.63992E35376B8P+0) + + @test exp(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(0x5.E2D58D8B3BCDCP-4, 0x7.63992E35376B8P+0) + + @test exp(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x1.B993FE00D5376P-8, 0xC.BED8666758578P-8) + + @test exp(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(0x2.2A555477F0396P-4, 0x1.D27660B11A9F0P+0) + + @test exp(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test exp(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x2.B7E151628AED4P+0) + + @test exp(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) + + @test exp(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x7.6322F8540CFB4P+0) + + @test exp(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)) === bareinterval(0x2.2A577ECE59DC6P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)) === bareinterval(0x2.2A55549A958EAP-4, 0x1.0000000000001P+0) + + @test exp2(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(0x0.0000000000000P+0, 0x4.B1AC6F8470484P-4) + + @test exp2(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFC00P-4) + + @test exp2(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(0x0.0000000000000P+0, 0x1.6FB78C613E5ECP-588) + + @test exp2(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(0x8.4EB038B9B8508P-328, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0) + + @test exp2(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(0x8.0000000000000P-4, 0x4.0000000000000P+0) + + @test exp2(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x8.0000000000000P-8, 0x2.0000000000000P-4) + + @test exp2(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(0x4.0000000000000P-4, 0x1.8406003B2AE5DP+0) + + @test exp2(bareinterval(0x4.4400000000000P-1068, 0x4.48CD100000000P-1052)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test exp2(bareinterval(-0x4.8D15088880000P-1040, +0x4.8D11554000000P-1048)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) + + @test exp2(bareinterval(0xD.0888D11000000P-1044, 0x1.000003443AAAAP+0)) === bareinterval(0x1.0000000000000P+0, 0x2.0000048742860P+0) + + @test exp2(bareinterval(-0xD.15550CC880000P-1040, +0x4.8D150CC000000P-1048)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) + + @test exp2(bareinterval(-0x4.8D159E0000000P-1048, +0x1.FFFFFF0999999P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x3.FFFFFD54D58B0P+0) + + @test exp2(bareinterval(-0x1.FFFFFFFFFFFFFP+0, +0x1.14C8911540000P-1040)) === bareinterval(0x4.0000000000000P-4, 0x1.0000000000001P+0) + + @test exp10(bareinterval(-0x2.8457BC029986EP+112, -0x1.7A77BFCCF5A9EP-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x6.05C0BB1BCB730P-220, -0x3.C5EC30FBB68C8P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.9B09919BF9D9EP+272, -0xE.20FF41BD18058P-204)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.1503444763FC5P-416, -0x2.075DF98B2478CP-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x4.ECBC855871080P+332, -0x1.3A01905E36F84P+0)) === bareinterval(0x0.0000000000000P+0, 0xF.317F8555628F0P-8) + + @test exp10(bareinterval(-0x7.32EDAB7F60A50P+236, -0x2.404E44C49C644P-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x6.5263CF84EF388P+172, -0x1.63A15E999EB64P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.4171976A1CA54P-288, -0x6.941F470A70074P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x4.69BB1D34B9570P-76, -0x7.78A1F475A306CP-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.E046DB554037CP+256, -0x2.6ABC15579B2B2P-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA70P-4) + + @test exp10(bareinterval(-0xE.33C49CF5B8790P+652, -0x8.297A99ED9ED08P+8)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test exp10(bareinterval(-0x1.7AAA15EBBD3F2P+8, -0x6.3E590E626451CP-172)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.8F9204BC4041EP+988, -0x6.ACFA418D8F92CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.B00450A48D586P-148, -0x2.BB570B356C6CAP-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.9E7DDBBE00F75P+352, -0xC.41329461A0C30P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.5BD629B25AA23P-236, -0x7.DEA605DEC97CCP-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x3.AE1DC13A652CAP+168, -0x6.65D7E0A247778P-56)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFFF8P-4) + + @test exp10(bareinterval(-0xA.27B4555158148P-68, -0x5.2B55801231EC8P-344)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.D68A6BA7E617FP+12, -0x6.36B661DCE2688P-236)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.98EF0C6A8BD66P+132, -0x1.EB0E1AB78F314P-480)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.C08152CC09416P+220, -0x7.4CF193131FA64P-192)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x6.F70E0DA4D2BA0P-140, -0x1.7036C237D5B00P-672)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0xF.CC937FA330E40P+648, -0x3.A0EE84451C92CP-324)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x5.F775993940188P-120, -0x1.8BCA641025A83P-124)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test log(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0xB.47B530A1054D8P+4, +0x4.227AD8183FB70P+4) + + @test log(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x1.64CBA844FC0EAP+8, -0x9.968AD8B569FE0P+4) + + @test log(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0xA.426B5145A44A0P+4, +0xA.40B346F454218P+4) + + @test log(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x1.52D81024E4C23P+8, -0x1.3813C01ACD25CP+8) + + @test log(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4) + + @test log(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0x1.C9B8D4127E3DAP+4, +0xC.091AAD1207058P+4) + + @test log(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x1.49B9D16B7E46AP+8, +0x8.A1137BDE55CF8P+4) + + @test log(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x1.028323B4D95B4P+8, +0x6.21D80D9193AB8P+4) + + @test log(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0x2.142D983D15A28P+8, -0xE.2C8FA3F896A50P+4) + + @test log(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0x1.907255D3994FEP+8, -0x5.A87FCF5FBD800P+4) + + @test log(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4) + + @test log(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x4.425A8474E3980P+4, +0x8.DFF506FE0D9F8P+4) + + @test log(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x4.54169A4297548P+0, 0x1.9D179EA5204D0P+8) + + @test log(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0xE.CD14BEBE2CD68P+0, 0x1.B46DC0D02B874P+8) + + @test log(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0x7.9346BAB839B58P+4, -0xE.E33F2C933B990P+0) + + @test log(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0x1.83044F26AAA2BP+8, +0x2.805CE2DC91036P+8) + + @test log(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x1.4359ECD75CB6CP+8, -0x6.E715E1BA0E35CP+4) + + @test log(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x1.6F438EE9F6020P+8, +0xE.1A4A3523F2658P+4) + + @test log(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4) + + @test log(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0xE.1D2336A5BE1A8P+4, -0xA.649D44362A2F0P+4) + + @test log(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8) + + @test log(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x4.8FBAEF1169C24P+4, +0x5.F718BBF0CE2F8P+4) + + @test log(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0xF.4CD3094A3B4B8P+4, -0x3.439BFD719BAE8P+4) + + @test log(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0xA.CDC41AEE74318P+4, -0x1.681AFF89E9C89P+4) + + @test log(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x1.5ADD53379EF4DP+8, +0x3.36D2B121508A8P+4) + + @test log(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0x9.341D196AD2D58P+4, +0x8.5ADC069F618A8P+4) + + @test log(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0x1.DC410CBC8E1C8P+8, -0x6.4027B79D2EAA8P+4) + + @test log(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4) + + @test log(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0xE.9F20674285418P+4, +0x1.990C99B6124FEP+8) + + @test log(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0x7.A02728D7D3790P+4, -0x6.70DBA893A16E0P+4) + + @test log2(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0x1.04614E93EA794P+8, +0x5.F7104B04804E4P+4) + + @test log2(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x2.02BF4547CF74AP+8, -0xD.D527F669B7AA0P+4) + + @test log2(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0xE.CD1F394A2C268P+4, +0xE.CAA4613C31FD0P+4) + + @test log2(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x1.E8D93AC78E47CP+8, -0x1.C23B6E9F9BE73P+8) + + @test log2(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0xC.44A8D0A480900P+4, 0xE.30D042BD32E08P+4) + + @test log2(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0x2.945A6DE3564F2P+4, +0x1.15D18004DA527P+8) + + @test log2(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x1.DBB1A03AD9911P+8, +0xC.7305ECF8E75D8P+4) + + @test log2(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x1.74F450FB5F194P+8, +0x8.D8CE5C08208D0P+4) + + @test log2(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0x2.FFC54D5EF9E5AP+8, -0x1.472E83799CCFAP+8) + + @test log2(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0x2.41B8EC5041B68P+8, -0x8.29BE215800410P+4) + + @test log2(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x7.562AE05DF4698P+4, 0x1.15E7F7FA196AAP+8) + + @test log2(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x6.250C3695FCF20P+4, +0xC.CDBDC5938D560P+4) + + @test log2(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x6.3EA22BED11920P+0, 0x2.53F7565A6FA4CP+8) + + @test log2(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x1.55A7D090E9BC4P+4, 0x2.75A230A6EF148P+8) + + @test log2(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0xA.EDC8C6AE09A00P+4, -0x1.57A778189781EP+4) + + @test log2(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0x2.2E58E661BEF52P+8, +0x3.9BD9297418726P+8) + + @test log2(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x1.D27F4D5811EC0P+8, -0x9.F55D8E4A51F88P+4) + + @test log2(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x2.11D98CE9F01E8P+8, +0x1.4588C1B9F05FCP+8) + + @test log2(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x9.247C4A0D6A240P+4, 0xC.5C40234316DE0P+4) + + @test log2(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0x1.45CA7D7508D73P+8, -0xE.FE7480A8A6A70P+4) + + @test log2(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x1.6B54440063A2FP+8, 0x2.0FF6AC0A1DF08P+8) + + @test log2(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x6.94ADB7A807630P+4, +0x8.9B227CD69B7B0P+4) + + @test log2(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0x1.612C877FDEFC9P+8, -0x4.B58789B7D2AB8P+4) + + @test log2(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0xF.96282D809EDE0P+4, -0x2.0785B9A270C10P+4) + + @test log2(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x1.F46B75E4932F4P+8, +0x4.A3152AC221298P+4) + + @test log2(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0xD.47274C2E0B298P+4, +0xC.0DB8D252704A8P+4) + + @test log2(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0x2.AF16E4D3D6128P+8, -0x9.048930492A7A0P+4) + + @test log2(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0xC.1866CEA5B0408P+4, 0x1.0545D0C4DA7BAP+8) + + @test log2(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0x1.51830AD8B30FCP+8, +0x2.4E221EC1DB53EP+8) + + @test log2(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0xB.005C8501548A8P+4, -0x9.4ACCA02A24828P+4) + + @test log10(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0x4.E61D94C4C8D58P+4, +0x1.CBB1247192AE0P+4) + + @test log10(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x9.AF44F24283358P+4, -0x4.29FE8451F9E24P+4) + + @test log10(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0x4.74A3ADB971C48P+4, +0x4.73E4925024C64P+4) + + @test log10(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x9.32877CA0160B8P+4, -0x8.7888BDDBCE5D0P+4) + + @test log10(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x3.B16EC52507DF2P+4, 0x4.4595F97548968P+4) + + @test log10(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0xC.6C93FFEF64F78P+0, +0x5.3A1B471A21FF4P+4) + + @test log10(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x8.F32B7DBB21008P+4, +0x3.BF63BA7A3C658P+4) + + @test log10(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x7.0453C2F061648P+4, +0x2.A9C64A16830FCP+4) + + @test log10(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0xE.71F3C5029D848P+4, -0x6.27DD331C437F0P+4) + + @test log10(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0xA.DE968FD95ABE0P+4, -0x2.7513429684674P+4) + + @test log10(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x2.35627EFD00A60P+4, 0x5.3A877F4AD58E8P+4) + + @test log10(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x1.D988D7EBC5AE3P+4, +0x3.DAB2CD7F2625EP+4) + + @test log10(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x1.E13C93CF0C5D8P+0, 0xB.367584AC914D0P+4) + + @test log10(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x6.6D93B54D66420P+0, 0xB.D89E0CA927598P+4) + + @test log10(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0x3.4A378CAAD54DAP+4, -0x6.773414D886C14P+0) + + @test log10(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0xA.8144B5B8F5DD8P+4, +0x1.161B25DAC86ECP+8) + + @test log10(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x8.C6DFF01C76970P+4, -0x2.FF6F7B088B0CCP+4) + + @test log10(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x9.F802CE339E840P+4, +0x6.1FEDD0FB88D78P+4) + + @test log10(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x2.C08E6C63F32E4P+4, 0x3.B888C99289754P+4) + + @test log10(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0x6.212A6B69124F0P+4, -0x4.837D7868C93BCP+4) + + @test log10(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x6.D5F7B5F14DD48P+4, 0x9.EEED0801EA480P+4) + + @test log10(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x1.FB238786D64F9P+4, +0x2.9735AA99F42AAP+4) + + @test log10(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0x6.A50E2200DFF14P+4, -0x1.6AE688B7C8203P+4) + + @test log10(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0x4.B1282C68FE4F8P+4, -0x9.C644DFB9EE3E0P+0) + + @test log10(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x9.6A430336AD680P+4, +0x1.6558F570C1420P+4) + + @test log10(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0x3.FF3F46384E0E2P+4, +0x3.A0E51611FF75EP+4) + + @test log10(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0xC.ED5A39E5D4878P+4, -0x2.B6F044CDE4A0CP+4) + + @test log10(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x3.A41C190FE9E7AP+4, 0x4.EA6A3021E4FB8P+4) + + @test log10(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0x6.599E84FEF71BCP+4, +0xB.1A5D77BC55F98P+4) + + @test log10(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0x3.4FCF2BC10B840P+4, -0x2.CC1706E0167D2P+4) + + @test sin(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)) === bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F10P-944) + + @test sin(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)) === bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FE8P-624) + + @test sin(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test sin(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) === bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588) + + @test sin(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)) === bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025104P-564) + + @test sin(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)) === bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4DEP-412) + + @test sin(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)) === bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C80P-792) + + @test sin(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)) === bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301854P-204) + + @test sin(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)) === bareinterval(0xF.4077C7E8CD698P-268, 0x3.753426098AC5AP-80) + + @test sin(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)) === bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05AP-916) + + @test sin(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)) === bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE491D517170P-16) + + @test sin(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)) === bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B6P-576) + + @test sin(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) === bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388) + + @test sin(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)) === bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DCFF7D4P-20) + + @test sin(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)) === bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D50EP-836) + + @test sin(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)) === bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99665P-760) + + @test sin(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)) === bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0664P-780) + + @test sin(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) === bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780) + + @test sin(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) === bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664) + + @test sin(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)) === bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106CP-548) + + @test sin(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)) === bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF502P-1008) + + @test sin(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) === bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740) + + @test sin(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)) === bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E4P-928) + + @test sin(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)) === bareinterval(0x1.455801D3D2B62P-704, 0x3.A4C915783D07AP-28) + + @test sin(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) === bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772) + + @test sin(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)) === bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F44P-540) + + @test sin(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)) === bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756420P-496) + + @test sin(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)) === bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F4P-876) + + @test sin(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) === bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608) + + @test sin(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)) === bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B78P-432) + + @test cos(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)) === bareinterval(0xF.FFFFF9AB27E58P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)) === bareinterval(0xF.FFFFFFFF231A0P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tan(bareinterval(0x4.6AF931A62EB70P+4, 0x4.6C0D89ACF83F0P+4)) === bareinterval(-0x4.2B94A5B864748P+16, -0xE.CC7EFFC39BBE8P+0) + + @test tan(bareinterval(0x9.B824319678E98P+4, 0x9.B8365416B3188P+4)) === bareinterval(-0x9.517610C9FF4F0P+28, -0xE.1DCEBD0ABA128P+4) + + @test tan(bareinterval(0xE.231D6DE6B2910P+0, 0xE.232155989FD58P+0)) === bareinterval(-0x1.1A74CC770CA81P+20, -0x4.09E5FC000B430P+12) + + @test tan(bareinterval(0x3.A1E994576AF38P+4, 0x3.A1F62CB3D8B0CP+4)) === bareinterval(-0x3.EDBBE63A85A20P+12, -0x1.3EC2E09B0B82DP+8) + + @test tan(bareinterval(0x4.504512C674C88P+8, 0x4.5045147DF4570P+8)) === bareinterval(-0xC.5E819F2BCA708P+28, -0x9.51D20751384C0P+12) + + @test tan(bareinterval(0x7.DA9E8C267B000P+0, 0xA.CCC7028A13E50P+0)) === bareinterval(-0x8.CE26DA7B8CCA8P+20, +0x5.0BA299C8F763CP+0) + + @test tan(bareinterval(0xC.CA9E956E09870P+12, 0xC.CA9FEB35E8D28P+12)) === bareinterval(-0x9.40D68D3420248P+16, -0xB.F4CB43C962B98P+0) + + @test tan(bareinterval(0x2.F6B1D30E1AC2CP+8, 0x2.F6B1EAD90ED6EP+8)) === bareinterval(-0x1.1E211833A60A2P+20, -0xA.BBFD5C235E8E8P+8) + + @test tan(bareinterval(0xB.C33774AC8C510P+8, 0xB.C3378F9640B80P+8)) === bareinterval(-0x3.B8E9A3359EA76P+12, -0x8.33C065B080F78P+8) + + @test tan(bareinterval(0x4.B65F2027400ECP+0, 0x4.B65F690A4503CP+0)) === bareinterval(-0x2.D46AD27DDB548P+24, -0x3.7ECF31F99ADC4P+16) + + @test tan(bareinterval(0x3.C60A2C774D8A6P+8, 0x3.C60A76B28E42CP+8)) === bareinterval(-0x3.28E3C44C11B44P+24, -0x3.72D85B31BD660P+8) + + @test tan(bareinterval(0x7.DA9E8A5DF3B7CP+0, 0x7.DAA9CFE45466CP+0)) === bareinterval(-0x1.D9B11082E8FC3P+28, -0x1.6B6333E88C1DFP+12) + + @test tan(bareinterval(0x3.A1E953315B022P+4, 0x3.A3624FC9B84C0P+4)) === bareinterval(-0x4.91A5298A762FCP+24, -0xA.D59BACA695F48P+0) + + @test tan(bareinterval(0x7.DA9E8AB1B7B7CP+0, 0x8.E4A2BCBB988B0P+0)) === bareinterval(-0x2.C52AD8545AC54P+24, -0x9.691CCDB9751E8P-4) + + @test tan(bareinterval(0x5.48783C12B018CP+8, 0x5.487863A8A0C78P+8)) === bareinterval(-0x4.7465D978FF1E8P+4, -0x4.455187267B294P+4) + + @test tan(bareinterval(0x1.AB41B772619C2P+4, 0x1.AB96C295E1A23P+4)) === bareinterval(-0x2.55DE9F429F276P+16, -0x3.02439C1296068P+4) + + @test tan(bareinterval(0x1.87E20C8B7CCC1P+16, 0x1.87E20E060934FP+16)) === bareinterval(-0x7.5F7BB0C55311CP+28, -0xA.D1F5D5F3730E8P+4) + + @test tan(bareinterval(0x2.5BA5629043048P+16, 0x2.5BA5A6106DDF4P+16)) === bareinterval(-0x4.BDE3C915168D8P+4, -0x3.84ED584601B4CP+0) + + @test tan(bareinterval(0x1.A9AF913EE27CFP+8, 0x1.A9AFA6D06E549P+8)) === bareinterval(-0x2.CB455269CB954P+16, -0xB.ACE6E2EAA9098P+8) + + @test tan(bareinterval(0x7.64CF403A51948P+8, 0x7.64D139F1912E4P+8)) === bareinterval(-0x5.38F704820A47CP+28, -0x8.19686283B81E8P+4) + + @test tan(bareinterval(0x4.1437B08F8BA70P+16, 0x4.1439A27E86D50P+16)) === bareinterval(-0x1.3ADB30F7A9B56P+24, +0x6.48C7464A8F9A0P-4) + + @test tan(bareinterval(0x2.74518B3BAFB7CP+4, 0x2.74518DE5A60C0P+4)) === bareinterval(-0xF.8E3A10DB36640P+24, -0x5.FF456443FD8B8P+16) + + @test tan(bareinterval(0x1.DD85A7816A0FFP+4, 0x1.DD89849DFDF09P+4)) === bareinterval(-0x3.FA5C8BD1A67ECP+20, -0x4.23D96B0387510P+8) + + @test tan(bareinterval(0x1.AB41B29964887P+4, 0x1.B5CBD4ED0D1DDP+4)) === bareinterval(-0x7.FC8B577B97310P+16, -0x1.4AB8A7BB81552P+0) + + @test tan(bareinterval(0x1.19454E95BC804P+12, 0x1.194551E9AD95AP+12)) === bareinterval(-0x1.2A53ECF4C9B1AP+12, -0x3.D27F074C2DA94P+8) + + @test tan(bareinterval(0x4.C4823D2C30D00P+8, 0x4.C482DEAE395CCP+8)) === bareinterval(-0x7.F7B434A3F3544P+28, -0x1.95C659F53B09BP+8) + + @test tan(bareinterval(0x1.DD85BAAB9BAF9P+4, 0x1.DD8660423BAACP+4)) === bareinterval(-0xD.2F5338751C9C8P+12, -0x1.623D682415BE0P+12) + + @test tan(bareinterval(0x2.F798BB3536690P+16, 0x2.F79A363308C32P+16)) === bareinterval(-0x2.F8C1AC15A9CCEP+16, -0x1.731B7ACF94603P-4) + + @test tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.78FDB9F143616P+4)) === bareinterval(-0xC.9CFD638FE0A18P+24, -0xC.9CFD638FE0A10P+24) + + @test tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.79367E02D4EAAP+4)) === bareinterval(-0xC.9CFD638FE0A18P+24, -0x4.826BF805C4E68P+4) + + @test cot(bareinterval(0x4.51D73651EA89CP+4, 0x4.52EB8E58B411CP+4)) === bareinterval(0xE.CC7EFFC39DE08P+0, 0x4.2B94A5E391E20P+16) + + @test cot(bareinterval(0x9.9F02364234BC8P+4, 0x9.9F1458C26EEB8P+4)) === bareinterval(0xE.1DCEBD0AA72D0P+4, 0x9.516DD4FA21CF0P+28) + + @test cot(bareinterval(0xC.90FDB8A26FBF8P+0, 0xC.9101A0545D040P+0)) === bareinterval(0x4.09E5FC0006C38P+12, 0x1.1A74CC76B6B71P+20) + + @test cot(bareinterval(0x3.88C7990326C68P+4, 0x3.88D4315F9483CP+4)) === bareinterval(0x1.3EC2E09B0928AP+8, 0x3.EDBBE6390EF44P+12) + + @test cot(bareinterval(0x4.4EB2F3113085CP+8, 0x4.4EB2F4C8B0144P+8)) === bareinterval(0x9.51D206F220E70P+12, 0xC.5DDA26E3680B8P+28) + + @test cot(bareinterval(0x6.487ED6E2382ECP+0, 0x9.3AA74D45D1138P+0)) === bareinterval(-0x5.0BA299C8F7644P+0, +0x8.CE26D93009840P+20) + + @test cot(bareinterval(0xC.CA857372B5428P+12, 0xC.CA86C93A948E0P+12)) === bareinterval(0xB.F4CB43CC4C9E8P+0, 0x9.40D848DDFC130P+16) + + @test cot(bareinterval(0x2.F51FB358D6800P+8, 0x2.F51FCB23CA942P+8)) === bareinterval(0xA.BBFD5C1B7C1D8P+8, 0x1.1E2116D584957P+20) + + @test cot(bareinterval(0xB.C1A554F7480E0P+8, 0xB.C1A56FE0FC750P+8)) === bareinterval(0x8.33C065BCB81C8P+8, 0x3.B8E9A35DDF6BCP+12) + + @test cot(bareinterval(0x3.243F6AE2FD3D8P+0, 0x3.243FB3C602324P+0)) === bareinterval(0x3.7ECF31F964F42P+16, 0x2.D46AD05A0B746P+24) + + @test cot(bareinterval(0x3.C4780CC209478P+8, 0x3.C47856FD49FFEP+8)) === bareinterval(0x3.72D85B3269A44P+8, 0x3.28E454E439A90P+24) + + @test cot(bareinterval(0x6.487ED519B0E68P+0, 0x6.488A1AA011958P+0)) === bareinterval(0x1.6B6333E883806P+12, 0x1.D9B101DF34E20P+28) + + @test cot(bareinterval(0x3.88C757DD16D52P+4, 0x3.8A405475741F0P+4)) === bareinterval(0xA.D59BACA695410P+0, 0x4.91A509DE53224P+24) + + @test cot(bareinterval(0x6.487ED56D74E68P+0, 0x7.5283077755B9CP+0)) === bareinterval(0x9.691CCDB975190P-4, 0x2.C52AD6475D346P+24) + + @test cot(bareinterval(0x5.46E61C5D6BD60P+8, 0x5.46E643F35C84CP+8)) === bareinterval(0x4.4551872667304P+4, 0x4.7465D978E9638P+4) + + @test cot(bareinterval(0x1.921FBC1E1D6F1P+4, 0x1.9274C7419D752P+4)) === bareinterval(0x3.02439C1295BB8P+4, 0x2.55DE9F3FCCF28P+16) + + @test cot(bareinterval(0x1.87E07A6BC787DP+16, 0x1.87E07BE653F0BP+16)) === bareinterval(0xA.D1F5D5DED35E0P+4, 0x7.55F4ABD4357C8P+28) + + @test cot(bareinterval(0x2.5BA3D0708DC04P+16, 0x2.5BA413F0B89B0P+16)) === bareinterval(0x3.84ED5845DBFB2P+0, 0x4.BDE3C91120740P+4) + + @test cot(bareinterval(0x1.A81D71899E3A2P+8, 0x1.A81D871B2A11CP+8)) === bareinterval(0xB.ACE6E2E9DA370P+8, 0x2.CB45525DF368EP+16) + + @test cot(bareinterval(0x7.633D20850D51CP+8, 0x7.633F1A3C4CEB8P+8)) === bareinterval(0x8.19686283704C0P+4, 0x5.38D928BC4D11CP+28) + + @test cot(bareinterval(0x4.14361E6FD662CP+16, 0x4.1438105ED190CP+16)) === bareinterval(-0x6.48C7464AC3A74P-4, +0x1.3AD6ED9B4C193P+24) + + @test cot(bareinterval(0x2.5B2F8FE76B8ACP+4, 0x2.5B2F929161DF0P+4)) === bareinterval(0x5.FF45640D6BF8CP+16, 0xF.8E38A1B8F3CE0P+24) + + @test cot(bareinterval(0x1.C463AC2D25E2EP+4, 0x1.C4678949B9C38P+4)) === bareinterval(0x4.23D96B037E734P+8, 0x3.FA5C8B4EB13BAP+20) + + @test cot(bareinterval(0x1.921FB745205B6P+4, 0x1.9CA9D998C8F0CP+4)) === bareinterval(0x1.4AB8A7BB8153CP+0, 0x7.FC8B575A99618P+16) + + @test cot(bareinterval(0x1.192C2C9A683C1P+12, 0x1.192C2FEE59517P+12)) === bareinterval(0x3.D27F074ED4C1AP+8, 0x1.2A53ECF8BBB09P+12) + + @test cot(bareinterval(0x4.C2F01D76EC8D4P+8, 0x4.C2F0BEF8F51A0P+8)) === bareinterval(0x1.95C659F50F06FP+8, 0x7.F76EB663A7898P+28) + + @test cot(bareinterval(0x1.C463BF5757828P+4, 0x1.C46464EDF77DBP+4)) === bareinterval(0x1.623D682405E56P+12, 0xD.2F53386F7DF28P+12) + + @test cot(bareinterval(0x2.F79729158124CP+16, 0x2.F798A413537EEP+16)) === bareinterval(0x1.731B7ACF66E92P-4, 0x2.F8C19331ECBFCP+16) + + @test cot(bareinterval(0x3.371943E536E9EP+8, 0x3.371D0784693FAP+8)) === bareinterval(0x3.E06D09FC7DDC2P+4, 0x2.C1B5E6F32FDEEP+8) + + @test cot(bareinterval(0x1.5FDBBE9CFF344P+4, 0x1.601482AE90BD8P+4)) === bareinterval(0x4.826BF805C583CP+4, 0xC.9CFDB05DEF930P+24) + + @test asin(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680) + + @test asin(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640) + + @test asin(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764) + + @test asin(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976) + + @test asin(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612) + + @test asin(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536) + + @test asin(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008) + + @test asin(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796) + + @test asin(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976) + + @test asin(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948) + + @test asin(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796) + + @test asin(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556) + + @test asin(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268) + + @test asin(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232) + + @test asin(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456) + + @test asin(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C473266E68P-24) + + @test asin(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868) + + @test asin(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840) + + @test asin(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408) + + @test asin(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512) + + @test asin(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564) + + @test asin(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856) + + @test asin(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520) + + @test asin(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688) + + @test asin(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768) + + @test asin(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548) + + @test asin(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912) + + @test asin(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664) + + @test asin(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304) + + @test asin(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020) + + @test acos(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(0x1.921FA7FF368A5P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442FC7P+0) + + @test acos(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) + + @test atan(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) + + @test atan(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0xE.3062E34353278P-4, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) + + @test atan(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) + + @test atan(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0x1.920057E3A66F1P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0x1.921FB54442D13P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x1.9172A3136EB8DP+0) + + @test atan(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) + + @test atan(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) + + @test atan(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) + + @test atan(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x1.921700D14CFE5P+0) + + @test atan(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) + + @test atan(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x3.A0EE84451C92AP-324, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) + + @test acot(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x6.5B5B8AA0A6884P-116, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0x6.23FD67FFA09A4P-276, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0x6.70A3F8408ABF0P-296, 0xC.099B90EB0FA30P-256) + + @test acot(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0x3.3FB79247499D6P-336, 0xA.F1987100D9F08P-4) + + @test acot(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.38F904C465F6AP-240, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x2.87E9C09D98938P-176, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x8.3E949ACCB0F88P-316, 0x9.443E1DD721FE8P-184) + + @test acot(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x5.9028FAA64FBC8P-260, 0x1.921FB54442CF2P+0) + + @test acot(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0x1.2067D7F96AFE5P-656, 0x1.F5D609C62725FP-12) + + @test acot(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0x6.09322FE56F794P-692, 0x4.E7223FE097808P-52) + + @test acot(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0xA.D1230D418C238P-12, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.3F7C8D3DDFC74P-992, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0x9.E1C9C04F15630P-356, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x1.326922CF32B2EP-240, 0x2.7ECD966556E9CP-192) + + @test acot(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0x1.5F401B7014200P-568, 0x1.3A84A0CB7AC42P-428) + + @test acot(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x4.59002C447A028P-172, 0x1.921FB54442D18P+0) + + @test acot(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x8.B472F5D335130P-16, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0xA.042BAEF7787B8P-136, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x9.21EF65D6A5190P-224, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0x1.6F8ED062CAC9BP-328, 0x8.C7ADFB6368868P-256) + + @test acot(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x1.03413E0E19942P-652, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test sinh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)) === bareinterval(-0x3.53DC9496DE0A2P-160, -0xC.287E0E10EC1B8P-960) + + @test sinh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)) === bareinterval(-0x1.CF3637DCBCC9BP-452, -0x5.E4846462FF33CP-636) + + @test sinh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)) === bareinterval(-0x1.32197576F3697P+0, -0x3.3D2CCEF698A5AP-972) + + @test sinh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)) === bareinterval(-0x1.494A24A7585D2P-380, +0x1.A0790A9E3013FP-604) + + @test sinh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)) === bareinterval(-0x2.B64BC5E999868P-368, -0xF.0633041110C28P-572) + + @test sinh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)) === bareinterval(-0x7.56F52F4FED858P-336, -0x4.F40A3934B3354P-416) + + @test sinh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)) === bareinterval(-0xA.0E33C2BA95C90P-48, -0x1.1927CA3847669P-808) + + @test sinh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)) === bareinterval(-0x1.1BBBD6FE8B951P-208, -0x1.463A32DBA649DP-220) + + @test sinh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)) === bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C4P-96) + + @test sinh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)) === bareinterval(-0x2.E7332C654ABB8P-384, -0x1.4363967367F55P-932) + + @test sinh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)) === bareinterval(-0x1.55EBB1D70A46FP-592, +0x4.733FA51477038P-20) + + @test sinh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)) === bareinterval(-0x1.1B4B8388A3D93P-340, -0xD.51D4A3CE4C490P-600) + + @test sinh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)) === bareinterval(-0x4.21B73745BC4C4P-952, +0xD.E40D83923C3E8P-404) + + @test sinh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)) === bareinterval(-0x1.73D14FA7DA1CCP-504, +0x1.5B3AFEEB17A86P-28) + + @test sinh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)) === bareinterval(-0x3.3CD34997DF068P-320, -0x1.606C7BCE75819P-852) + + @test sinh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)) === bareinterval(-0xC.5356A56E59750P-516, -0x1.33B9A95C55513P-772) + + @test sinh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)) === bareinterval(-0x5.FA887950A63D0P-588, -0x2.B707741B15478P-800) + + @test sinh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)) === bareinterval(-0x2.9476464AAE5BCP-548, +0x4.0734E17C026D8P-784) + + @test sinh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)) === bareinterval(-0xF.A46AC05B0EAB0P-68, +0x1.EFA89F34F4189P-684) + + @test sinh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)) === bareinterval(-0x9.9488CB205AFB0P-124, -0x2.940180D1AA2AEP-556) + + @test sinh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)) === bareinterval(-0x3.F9D9FE5792CE2P-912, -0x3.F00FC8CE24ADCP-1016) + + @test sinh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)) === bareinterval(-0x7.D5A28EF80D6B4P-176, +0xC.5D2B8FFCB2AE0P-756) + + @test sinh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)) === bareinterval(-0x5.B5DCAA821A62CP-784, -0x1.48532232C10FDP-940) + + @test sinh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)) === bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C4P-44) + + @test sinh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)) === bareinterval(-0x1.4AD562C0B5179P-380, +0x3.CEB34F40EA9BCP-792) + + @test sinh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)) === bareinterval(-0x7.ED02EF56E40B4P-92, -0x1.8C80275A696B0P-552) + + @test sinh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)) === bareinterval(-0x1.56FBE834FC823P-296, -0x3.66041558BACA8P-516) + + @test sinh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)) === bareinterval(-0x6.44524F6FCCF90P-340, -0x5.3E8ED576A1334P-896) + + @test sinh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)) === bareinterval(-0x8.92F5BEDA59C80P-268, +0x2.51B11C2EC76BCP-612) + + @test sinh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)) === bareinterval(-0x4.785C46BDC2A54P-244, -0x1.BA5C062DE8F00P-432) + + @test cosh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)) === bareinterval(0x1.0000000000000P+0, 0x1.8F0A39674B193P+0) + + @test cosh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000009E6FP+0) + + @test cosh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test tanh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) + + @test tanh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) + + @test tanh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0xD.772335E624B98P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) + + @test tanh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) + + @test tanh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) + + @test tanh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) + + @test tanh(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) + + @test tanh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) + + @test tanh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x3.A0EE84451C92AP-324, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) + + @test coth(bareinterval(0x5.9D7EEEA9B9EE0P-264, 0x3.F03D06503CAA2P+92)) === bareinterval(0x1.0000000000000P+0, 0x2.D97240157D2C8P+260) + + @test coth(bareinterval(-0x3.F03D06503CAA2P+92, -0x5.9D7EEEA9B9EE0P-264)) === bareinterval(-0x2.D97240157D2C8P+260, -0x1.0000000000000P+0) + + @test coth(bareinterval(0xB.6600F238FE060P-520, 0x1.BB63631B595B0P-224)) === bareinterval(0x9.3CEA8A8C76FC0P+220, 0x1.6758D7D180F69P+516) + + @test coth(bareinterval(-0x1.BB63631B595B0P-224, -0xB.6600F238FE060P-520)) === bareinterval(-0x1.6758D7D180F69P+516, -0x9.3CEA8A8C76FC0P+220) + + @test coth(bareinterval(0x4.DC89ED0034C6CP-240, 0xD.A1D118A3891E8P+232)) === bareinterval(0x1.0000000000000P+0, 0x3.4A8AB6B06359AP+236) + + @test coth(bareinterval(-0xD.A1D118A3891E8P+232, -0x4.DC89ED0034C6CP-240)) === bareinterval(-0x3.4A8AB6B06359AP+236, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x4.7F93F879A61A4P-492, 0x1.BDC6388153882P-452)) === bareinterval(0x9.3041F45FA3D78P+448, 0x3.8E8E46D77A03EP+488) + + @test coth(bareinterval(-0x1.BDC6388153882P-452, -0x4.7F93F879A61A4P-492)) === bareinterval(-0x3.8E8E46D77A03EP+488, -0x9.3041F45FA3D78P+448) + + @test coth(bareinterval(0xF.C7C928D9BB718P+192, 0x8.41A7954605A98P+224)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0x8.41A7954605A98P+224, -0xF.C7C928D9BB718P+192)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x3.F07C0B8005270P-44, 0x2.DD3C8580FCBE0P+276)) === bareinterval(0x1.0000000000000P+0, 0x4.0FC1103283A70P+40) + + @test coth(bareinterval(-0x2.DD3C8580FCBE0P+276, -0x3.F07C0B8005270P-44)) === bareinterval(-0x4.0FC1103283A70P+40, -0x1.0000000000000P+0) + + @test coth(bareinterval(0xA.A97DED29FFF30P-480, 0x5.35EEA9C504860P+196)) === bareinterval(0x1.0000000000000P+0, 0x1.802A4F4EFE3B2P+476) + + @test coth(bareinterval(-0x5.35EEA9C504860P+196, -0xA.A97DED29FFF30P-480)) === bareinterval(-0x1.802A4F4EFE3B2P+476, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x3.CF4B727451402P-376, 0x1.759F6C21DAF9AP+140)) === bareinterval(0x1.0000000000000P+0, 0x4.33233873998C8P+372) + + @test coth(bareinterval(-0x1.759F6C21DAF9AP+140, -0x3.CF4B727451402P-376)) === bareinterval(-0x4.33233873998C8P+372, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x6.55376F4C1C50CP-772, 0x1.0120DD4EBC019P-328)) === bareinterval(0xF.EE06735C6D910P+324, 0x2.86C88F09A2CBEP+768) + + @test coth(bareinterval(-0x1.0120DD4EBC019P-328, -0x6.55376F4C1C50CP-772)) === bareinterval(-0x2.86C88F09A2CBEP+768, -0xF.EE06735C6D910P+324) + + @test coth(bareinterval(0x1.B63F1F7AED49EP-580, 0x2.245AF5BCB3356P-132)) === bareinterval(0x7.7838528478BF8P+128, 0x9.58A984202B8E8P+576) + + @test coth(bareinterval(-0x2.245AF5BCB3356P-132, -0x1.B63F1F7AED49EP-580)) === bareinterval(-0x9.58A984202B8E8P+576, -0x7.7838528478BF8P+128) + + @test coth(bareinterval(0x2.73B23CC8D8F76P+116, 0x1.F1E4F59403FC3P+276)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0x1.F1E4F59403FC3P+276, -0x2.73B23CC8D8F76P+116)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x2.5B4F5F71CA5FCP-100, 0x1.5C244CE1AC6B3P+204)) === bareinterval(0x1.0000000000000P+0, 0x6.CA09D0DDC330CP+96) + + @test coth(bareinterval(-0x1.5C244CE1AC6B3P+204, -0x2.5B4F5F71CA5FCP-100)) === bareinterval(-0x6.CA09D0DDC330CP+96, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x1.4E7212DD5ABB9P+4, 0xD.9F35E61FDF7E8P+592)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0xD.9F35E61FDF7E8P+592, -0x1.4E7212DD5ABB9P+4)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x1.271B33491E515P+20, 0x2.B3031CF3AF4ECP+628)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0x2.B3031CF3AF4ECP+628, -0x1.271B33491E515P+20)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x9.DB635E2FF52B0P-180, 0x2.AF04176524D06P-24)) === bareinterval(0x5.F646A7779F114P+20, 0x1.9F8AFAA8DBFF9P+176) + + @test coth(bareinterval(-0x2.AF04176524D06P-24, -0x9.DB635E2FF52B0P-180)) === bareinterval(-0x1.9F8AFAA8DBFF9P+176, -0x5.F646A7779F114P+20) + + @test asinh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x4.F3FA9CD060658P+4) + + @test asinh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) + + @test asinh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0xB.E2FD554E373E0P+4) + + @test asinh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) + + @test asinh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0xA.FA69A93525138P+4, 0xC.C008F1DBA8390P+4) + + @test asinh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0x1.086AFFAE230B6P+0, 0xE.8698B81E22AB0P+4) + + @test asinh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0xA.63FF3E7D6B730P+4) + + @test asinh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x7.9C22B35B1CEE0P+4) + + @test asinh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) + + @test asinh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) + + @test asinh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x7.E017D1421AED4P+4, 0xD.99E3CCF428D70P+4) + + @test asinh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0xB.331FC2BC20E70P+4) + + @test asinh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x6.A13A85E654788P+0) + + @test asinh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x2.AE767FF2330E0P+8) + + @test asinh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) + + @test asinh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0xF.529AF3B8107E0P+4) + + @test asinh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x8.4DCECB852E1E8P+4, 0xA.6DE648AA01A20P+4) + + @test asinh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) + + @test asinh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x7.671E008768830P+4) + + @test asinh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) + + @test asinh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x9.9E9F4F5A56088P+0) + + @test asinh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x5.CA82DEDB3D320P+4) + + @test asinh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x9.9BF0B87669850P+4) + + @test asinh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) + + @test asinh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0xA.FF762A8B30EA0P+4, 0xE.3AF0836B2F5B0P+4) + + @test asinh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) + + @test acosh(bareinterval(0x5.AD89AD14DDC74P+272, 0x2.6EC5D31670A5EP+860)) === bareinterval(0xB.EF73BF42C19D8P+4, 0x2.55B05064B6C2AP+8) + + @test acosh(bareinterval(0x4.A457C35864940P+344, 0x2.3ADEFB54BC048P+444)) === bareinterval(0xF.0ABC113DB1AF0P+4, 0x1.3540A29BC6B5EP+8) + + @test acosh(bareinterval(0x6.941C8B9506D90P+56, 0x3.B11D8083AE958P+744)) === bareinterval(0x2.964A9197BF832P+4, 0x2.05B3663FAE652P+8) + + @test acosh(bareinterval(0x1.09A940A083EE3P+132, 0x1.047FD514ADF08P+384)) === bareinterval(0x5.C39C22D7AA908P+4, 0x1.0AE10BDF7FE81P+8) + + @test acosh(bareinterval(0x7.710740B71A0D4P+256, 0xF.C0798D156BFA0P+560)) === bareinterval(0xB.42559B5CF34E8P+4, 0x1.879CCE87EE3A1P+8) + + @test acosh(bareinterval(0x2.3721A01F70456P+564, 0x9.C62BBF31FD290P+728)) === bareinterval(0x1.886C6F1DDDFF7P+8, 0x1.FB958311209BFP+8) + + @test acosh(bareinterval(0x6.F06D452BDCEF0P+44, 0x2.4825931366BBCP+520)) === bareinterval(0x2.120F95BD1F706P+4, 0x1.69F464545899AP+8) + + @test acosh(bareinterval(0x5.D326D4B0883D8P+76, 0x1.77175C5A113ADP+528)) === bareinterval(0x3.7226BF0157930P+4, 0x1.6F0E8DBF98710P+8) + + @test acosh(bareinterval(0x1.05ADFE119D4C2P+296, 0x2.6BCDF50E05E34P+1020)) === bareinterval(0xC.DE2FBE78FEC28P+4, 0x2.C49666459E1A4P+8) + + @test acosh(bareinterval(0xA.7F5D255B81268P+408, 0x1.9D1EDDC132B36P+864)) === bareinterval(0x1.1DD92C82827A1P+8, 0x2.580D06072BF20P+8) + + @test acosh(bareinterval(0xC.FBE4E2C6D0A80P+484, 0x4.DF75BDC17C330P+868)) === bareinterval(0x1.52BD770642386P+8, 0x2.5BEDB7E376E18P+8) + + @test acosh(bareinterval(0xB.241032F9700A0P+380, 0x1.04A65B06B2920P+640)) === bareinterval(0x1.0A7FEC190CCEEP+8, 0x1.BC5349B021815P+8) + + @test acosh(bareinterval(0x5.F207EAF5F8BB4P+608, 0xA.BC87C6F90AEE0P+648)) === bareinterval(0x1.A7E8C5069EA32P+8, 0x1.C439E5E8A511CP+8) + + @test acosh(bareinterval(0x1.BCD62C46ADFD7P+16, 0xA.CD289B35ECD00P+564)) === bareinterval(0xC.56062C0C41518P+0, 0x1.8A0201556D85AP+8) + + @test acosh(bareinterval(0x6.534BBA40A0B44P+224, 0x1.8DE35856E91FBP+452)) === bareinterval(0x9.DCD7CC0C7FFB8P+4, 0x1.3A6FC95911674P+8) + + @test acosh(bareinterval(0x2.C4F59012F4E48P+508, 0x1.1854765A9A205P+688)) === bareinterval(0x1.61D49DF92AB79P+8, 0x1.DDAB5081E5A0EP+8) + + @test acosh(bareinterval(0x8.6F890522C18B0P+44, 0x3.F87592D71E06CP+220)) === bareinterval(0x2.152F7D2DBF2BCP+4, 0x9.A907E7C701690P+4) + + @test acosh(bareinterval(0x9.2A9035A578970P+124, 0x1.35EE42DCA8B75P+608)) === bareinterval(0x5.8DBE2A7E96990P+4, 0x1.A6515B9ECF2F1P+8) + + @test acosh(bareinterval(0x5.2641115F86D38P+204, 0x7.BE33D080E6584P+252)) === bareinterval(0x8.FBBEB3B84C708P+4, 0xB.169BBE1313F68P+4) + + @test acosh(bareinterval(0xA.8746F72A1BD90P+72, 0x5.6ABE29A315520P+872)) === bareinterval(0x3.4F42DBFC0E4B4P+4, 0x2.5ECE9922C7894P+8) + + @test acosh(bareinterval(0xB.D0973FF704000P+224, 0x2.2FD9ABBD09D34P+976)) === bareinterval(0x9.E6D6EA0633070P+4, 0x2.A5FCBEDD15F2CP+8) + + @test acosh(bareinterval(0xA.C15D51DB7D9F0P+536, 0x1.7207A70831D7AP+796)) === bareinterval(0x1.76986E964982DP+8, 0x2.28CE847F69DCAP+8) + + @test acosh(bareinterval(0x4.280BEC7911E7CP+180, 0x6.B4F11E86ECA38P+792)) === bareinterval(0x7.EE261446DD5F8P+4, 0x2.27919F48F2C20P+8) + + @test acosh(bareinterval(0x3.4B22674960B0EP+468, 0xA.505A061DF4CD8P+808)) === bareinterval(0x1.4647297977E4EP+8, 0x2.3316ED57009D4P+8) + + @test acosh(bareinterval(0x2.383FC27D5E4E4P+756, 0x5.88E9C96565E54P+920)) === bareinterval(0x2.0D82822002358P+8, 0x2.801980299550CP+8) + + @test acosh(bareinterval(0x1.20E762C8AAB55P+72, 0x1.DBB7B8FE35847P+960)) === bareinterval(0x3.2B87D37C9EAFAP+4, 0x2.9ABBED2A77E62P+8) + + @test acosh(bareinterval(0x1.1265074E9E3DFP+792, 0x2.229B285A709C0P+920)) === bareinterval(0x2.25BC2FC876EBCP+8, 0x2.7F25A89FE16E6P+8) + + @test acosh(bareinterval(0x1.054DCDEF21349P+436, 0x1.618994D07D9A7P+636)) === bareinterval(0x1.2EED02D819A15P+8, 0x1.B9DB8970CC5ECP+8) + + @test acosh(bareinterval(0x4.5BE0D9A7FF0CCP+460, 0x2.6F2C55F16354AP+568)) === bareinterval(0x1.4103588C86AB6P+8, 0x1.8B4A572E180D4P+8) + + @test acosh(bareinterval(0x9.BD8B9A7FB6630P+80, 0x2.AD5F8458C8722P+768)) === bareinterval(0x3.A6BD416FCCF70P+4, 0x2.1603D4EDCB36AP+8) + + @test atanh(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680) + + @test atanh(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640) + + @test atanh(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764) + + @test atanh(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976) + + @test atanh(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612) + + @test atanh(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536) + + @test atanh(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008) + + @test atanh(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796) + + @test atanh(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976) + + @test atanh(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948) + + @test atanh(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796) + + @test atanh(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556) + + @test atanh(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268) + + @test atanh(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232) + + @test atanh(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456) + + @test atanh(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C4732686C0P-24) + + @test atanh(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868) + + @test atanh(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840) + + @test atanh(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408) + + @test atanh(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512) + + @test atanh(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564) + + @test atanh(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856) + + @test atanh(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520) + + @test atanh(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688) + + @test atanh(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768) + + @test atanh(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548) + + @test atanh(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912) + + @test atanh(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664) + + @test atanh(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304) + + @test atanh(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020) + + @test acoth(bareinterval(0x5.AD89AD14DDC78P+272, 0x2.6EC5D31670A60P+860)) === bareinterval(0x6.93B8C1A4ADA4CP-864, 0x2.D165505974CDCP-276) + + @test acoth(bareinterval(-0x2.6EC5D31670A60P+860, -0x5.AD89AD14DDC78P+272)) === bareinterval(-0x2.D165505974CDCP-276, -0x6.93B8C1A4ADA4CP-864) + + @test acoth(bareinterval(0x4.A457C35864944P+344, 0x2.3ADEFB54BC04AP+444)) === bareinterval(0x7.2CCCD8F3E4D84P-448, 0x3.726295CD6E028P-348) + + @test acoth(bareinterval(-0x2.3ADEFB54BC04AP+444, -0x4.A457C35864944P+344)) === bareinterval(-0x3.726295CD6E028P-348, -0x7.2CCCD8F3E4D84P-448) + + @test acoth(bareinterval(0x6.941C8B9506D98P+56, 0x3.B11D8083AE95CP+744)) === bareinterval(0x4.55780C09BB248P-748, 0x2.6EA0EC606D92CP-60) + + @test acoth(bareinterval(-0x3.B11D8083AE95CP+744, -0x6.941C8B9506D98P+56)) === bareinterval(-0x2.6EA0EC606D92CP-60, -0x4.55780C09BB248P-748) + + @test acoth(bareinterval(0x1.09A940A083EE4P+132, 0x1.047FD514ADF09P+384)) === bareinterval(0xF.B940FE60125C0P-388, 0xF.6B0B0DCA2D740P-136) + + @test acoth(bareinterval(-0x1.047FD514ADF09P+384, -0x1.09A940A083EE4P+132)) === bareinterval(-0xF.6B0B0DCA2D740P-136, -0xF.B940FE60125C0P-388) + + @test acoth(bareinterval(0x7.710740B71A0DCP+256, 0xF.C0798D156BFB0P+560)) === bareinterval(0x1.04086A3447A55P-564, 0x2.266CE7A905524P-260) + + @test acoth(bareinterval(-0xF.C0798D156BFB0P+560, -0x7.710740B71A0DCP+256)) === bareinterval(-0x2.266CE7A905524P-260, -0x1.04086A3447A55P-564) + + @test acoth(bareinterval(0x2.3721A01F70458P+564, 0x9.C62BBF31FD298P+728)) === bareinterval(0x1.A3110641EF7BCP-732, 0x7.38E97DB7ABD94P-568) + + @test acoth(bareinterval(-0x9.C62BBF31FD298P+728, -0x2.3721A01F70458P+564)) === bareinterval(-0x7.38E97DB7ABD94P-568, -0x1.A3110641EF7BCP-732) + + @test acoth(bareinterval(0x6.F06D452BDCEF8P+44, 0x2.4825931366BBEP+520)) === bareinterval(0x7.030E427A5F700P-524, 0x2.4E45C5E18EA0EP-48) + + @test acoth(bareinterval(-0x2.4825931366BBEP+520, -0x6.F06D452BDCEF8P+44)) === bareinterval(-0x2.4E45C5E18EA0EP-48, -0x7.030E427A5F700P-524) + + @test acoth(bareinterval(0x5.D326D4B0883DCP+76, 0x1.77175C5A113AEP+528)) === bareinterval(0xA.EB85BC1375C18P-532, 0x2.BF32E14DB1D26P-80) + + @test acoth(bareinterval(-0x1.77175C5A113AEP+528, -0x5.D326D4B0883DCP+76)) === bareinterval(-0x2.BF32E14DB1D26P-80, -0xA.EB85BC1375C18P-532) + + @test acoth(bareinterval(0x1.05ADFE119D4C3P+296, 0x2.6BCDF50E05E36P+1020)) === bareinterval(0x6.9BC8F6BE69A84P-1024, 0xF.A7190DED61120P-300) + + @test acoth(bareinterval(-0x2.6BCDF50E05E36P+1020, -0x1.05ADFE119D4C3P+296)) === bareinterval(-0xF.A7190DED61120P-300, -0x6.9BC8F6BE69A84P-1024) + + @test acoth(bareinterval(0xA.7F5D255B81270P+408, 0x1.9D1EDDC132B38P+864)) === bareinterval(0x9.EA2F16D4B51A8P-868, 0x1.8630054C790C6P-412) + + @test acoth(bareinterval(-0x1.9D1EDDC132B38P+864, -0xA.7F5D255B81270P+408)) === bareinterval(-0x1.8630054C790C6P-412, -0x9.EA2F16D4B51A8P-868) + + @test acoth(bareinterval(0xC.FBE4E2C6D0A90P+484, 0x4.DF75BDC17C334P+868)) === bareinterval(0x3.4891A2770DF7CP-872, 0x1.3B7754395DD7FP-488) + + @test acoth(bareinterval(-0x4.DF75BDC17C334P+868, -0xC.FBE4E2C6D0A90P+484)) === bareinterval(-0x1.3B7754395DD7FP-488, -0x3.4891A2770DF7CP-872) + + @test acoth(bareinterval(0xB.241032F9700A8P+380, 0x1.04A65B06B2921P+640)) === bareinterval(0xF.B6EE12E44E478P-644, 0x1.6FA7BD9AAC5D2P-384) + + @test acoth(bareinterval(-0x1.04A65B06B2921P+640, -0xB.241032F9700A8P+380)) === bareinterval(-0x1.6FA7BD9AAC5D2P-384, -0xF.B6EE12E44E478P-644) + + @test acoth(bareinterval(0x5.F207EAF5F8BB8P+608, 0xA.BC87C6F90AEE8P+648)) === bareinterval(0x1.7D8116060016CP-652, 0x2.B0EE9FA61C0DAP-612) + + @test acoth(bareinterval(-0xA.BC87C6F90AEE8P+648, -0x5.F207EAF5F8BB8P+608)) === bareinterval(-0x2.B0EE9FA61C0DAP-612, -0x1.7D8116060016CP-652) + + @test acoth(bareinterval(0x1.BCD62C46ADFD9P+16, 0xA.CD289B35ECD08P+564)) === bareinterval(0x1.7B35C74EEC020P-568, 0x9.35374E76B1BE8P-20) + + @test acoth(bareinterval(-0xA.CD289B35ECD08P+564, -0x1.BCD62C46ADFD9P+16)) === bareinterval(-0x9.35374E76B1BE8P-20, -0x1.7B35C74EEC020P-568) + + @test acoth(bareinterval(0x6.534BBA40A0B4CP+224, 0x1.8DE35856E91FDP+452)) === bareinterval(0xA.4B5AAEDFCE6A8P-456, 0x2.878CF52E5FBF8P-228) + + @test acoth(bareinterval(-0x1.8DE35856E91FDP+452, -0x6.534BBA40A0B4CP+224)) === bareinterval(-0x2.878CF52E5FBF8P-228, -0xA.4B5AAEDFCE6A8P-456) + + @test expm1(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(-0x1.0000000000000P+0, -0x1.B3E4076622F03P-232) + + @test expm1(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0506P-508) + + @test expm1(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(-0x1.0000000000000P+0, -0x1.5D74CFDA6B291P-200) + + @test expm1(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3470P-456) + + @test expm1(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(-0x1.0000000000000P+0, -0xD.45BCBA84EE268P-4) + + @test expm1(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(-0x1.0000000000000P+0, -0x4.F0F28370909F8P-440) + + @test expm1(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(-0x1.0000000000000P+0, -0x1.EB095183538C7P-344) + + @test expm1(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE88P-756) + + @test expm1(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357A8P-564) + + @test expm1(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(-0x1.0000000000000P+0, -0x5.CBE2BD423AF1CP-48) + + @test expm1(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4) + + @test expm1(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(-0x1.0000000000000P+0, -0x2.581DAD9AFE6DAP-172) + + @test expm1(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(-0x1.0000000000000P+0, -0x7.19390F862F498P-544) + + @test expm1(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57190P-440) + + @test expm1(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(-0x1.0000000000000P+0, -0xF.13E388B2165E8P-512) + + @test expm1(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED014P-316) + + @test expm1(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.B7E151628AED2P+0, 0x6.63992E35376B8P+0) + + @test expm1(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(-0xA.1D2A7274C4328P-4, +0x6.63992E35376B8P+0) + + @test expm1(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(-0xF.E466C01FF2AD0P-4, -0xF.341279998A7A8P-4) + + @test expm1(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(-0xD.D5AAAB880FC70P-4, +0xD.27660B11A9EF8P-4) + + @test expm1(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)) === bareinterval(0x4.0000000000000P-1076, 0x4.4444800000000P-1056) + + @test expm1(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)) === bareinterval(0x4.4440000000000P-1064, 0x1.B7E151628AED3P+0) + + @test expm1(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)) === bareinterval(-0x4.4444000000000P-1060, +0x4.4448000000000P-1060) + + @test expm1(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)) === bareinterval(-0x4.4400000000000P-1068, +0x6.6322F8540CFB4P+0) + + @test expm1(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)) === bareinterval(-0xD.D5A88131A6240P-4, -0x8.8888840000000P-1052) + + @test expm1(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)) === bareinterval(-0xD.D5AAAB656A718P-4, +0x8.CD11555800000P-1044) + + @test log1p(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(0xC.4B4A6EB6B3AE8P-264, 0x4.227AD8183FB70P+4) + + @test log1p(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(0x2.6213E21B14892P-516, 0x6.6606F0995E5F4P-224) + + @test log1p(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(0x9.0FF2CAA1B3040P-240, 0xA.40B346F454218P+4) + + @test log1p(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(0x8.E2ADA8DFBE930P-492, 0x3.67CB3BE0BB146P-452) + + @test log1p(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4) + + @test log1p(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(0x6.A000A1283845CP-44, 0xC.091AAD1207058P+4) + + @test log1p(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(0x1.3C84E4F9C80CDP-476, 0x8.A1137BDE55CF8P+4) + + @test log1p(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(0x8.41D2DB6D93540P-376, 0x6.21D80D9193AB8P+4) + + @test log1p(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(0x1.2C18FEEBCAEADP-768, 0x1.C369E759DF5E3P-328) + + @test log1p(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(0x4.D94E91619D3ECP-580, 0x2.9F6CAF6B5513EP-132) + + @test log1p(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4) + + @test log1p(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(0x3.36DE5C55594ECP-100, 0x8.DFF506FE0D9F8P+4) + + @test log1p(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x4.5771391F308D8P+0, 0x1.9D179EA5204D0P+8) + + @test log1p(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0xE.CD14C501247C0P+0, 0x1.B46DC0D02B874P+8) + + @test log1p(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(0x2.33950F38F830CP-176, 0x5.BE0377E504F78P-24) + + @test log1p(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(0x3.24F03DF33568AP-560, 0x2.805CE2DC91036P+8) + + @test log1p(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(0x2.D572639DC5FA6P-468, 0x1.95CF42AA171CDP-160) + + @test log1p(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(0x4.705A028302DACP-532, 0xE.1A4A3523F2658P+4) + + @test log1p(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4) + + @test log1p(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(0x4.9FA5A1E4DF73CP-328, 0x1.11B85141B78F6P-240) + + @test log1p(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8) + + @test log1p(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(0x6.88441038D56B4P-108, 0x5.F718BBF0CE2F8P+4) + + @test log1p(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(0x7.1761CAB055130P-356, 0x1.92EFD09488689P-76) + + @test log1p(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(0x6.2085E427413C4P-252, 0xB.8CDD3AFE235D0P-36) + + @test log1p(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(0xB.F5F1C0FA33970P-504, 0x3.36D2B121508A8P+4) + + @test log1p(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(0xB.BC7E37EB2D380P-216, 0x8.5ADC069F618A8P+4) + + @test log1p(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(0x1.E139DD116F867P-688, 0xD.2545346D68FD0P-148) + + @test log1p(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4) + + @test log1p(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(0x5.9C4642ED78BC4P-340, 0x1.990C99B6124FEP+8) + + @test log1p(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(0xF.C05EA810DFE80P-180, 0xA.05884FBED5F48P-152) + + @test sqrt(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(0x3.819C8C44FCAE8P-132, 0xD.2F2830FA93228P+44) + + @test sqrt(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(0x6.2CC8B5D1B7648P-260, 0x2.878F8E10E2752P-112) + + @test sqrt(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(0x3.02A74AB0BBF36P-120, 0x5.0979194446A10P+116) + + @test sqrt(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(0xB.EC63BFE10BCC8P-248, 0x7.61AC89CF17804P-228) + + @test sqrt(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x4.6CBEB2D8F6718P+96, 0x2.E0F32319AC30AP+112) + + @test sqrt(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(0xA.4BAEE7F482900P-24, 0x7.830C8D5A5F3D8P+136) + + @test sqrt(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(0x4.729F7C344CE30P-240, 0xC.14519D6697FF0P+96) + + @test sqrt(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(0x2.DF9F14A64C77AP-188, 0x6.D87D667089BD8P+68) + + @test sqrt(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(0x1.152C585EDDB6AP-384, 0x1.53F1A81CAA4A0P-164) + + @test sqrt(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(0x8.CEDC2135E05E8P-292, 0x6.7A5BEF2579C34P-68) + + @test sqrt(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x6.7722C88D985D8P+56, 0x7.BE7173245A668P+136) + + @test sqrt(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(0x7.2BE248A308D24P-52, 0x5.630224B50BCF8P+100) + + @test sqrt(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x8.B53B61217B4F8P+0, 0x3.F40FA54A699E2P+296) + + @test sqrt(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x6.64E1F64817930P+8, 0x7.0BBE006E8934CP+312) + + @test sqrt(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(0x1.7BD69462CDAD2P-88, 0x2.6573BFB248EF0P-12) + + @test sqrt(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(0x1.C5F168118C2B1P-280, 0x3.CB8CCAD62ED10P+460) + + @test sqrt(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(0x6.BBC8A036CC930P-236, 0x1.4250C275A7B2BP-80) + + @test sqrt(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(0x8.6D6D9A3EA2160P-268, 0x6.CEB17F56F1B50P+160) + + @test sqrt(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x2.343E215EB2264P+72, 0x7.603E67F0E1DD0P+96) + + @test sqrt(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(0x2.26777C4E368BEP-164, 0x1.08B63617A4210P-120) + + @test sqrt(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x3.2B934CDCC29E0P+180, 0xF.CC99981010AD0P+260) + + @test sqrt(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(0xA.392C9B2283838P-56, 0x1.CCC9C68E6B873P+68) + + @test sqrt(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(0xA.A6DE001E1A878P-180, 0x5.04B0B42B185F4P-40) + + @test sqrt(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(0x9.E6B17DD90B818P-128, 0xD.9821AE0A3F288P-20) + + @test sqrt(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(0x3.755B7F9B147FCP-252, 0x2.235AF64AA2532P+36) + + @test sqrt(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(0x3.6D0318CB65970P-108, 0x1.589B93C7CC280P+96) + + @test sqrt(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(0x1.5EFD65C23F515P-344, 0xE.80B36809CA340P-76) + + @test sqrt(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x1.B24CEBB3D4B84P+96, 0x6.37B4CD9068634P+128) + + @test sqrt(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(0x9.797C4D6802170P-172, 0x8.60D1F01F1A8D8P+292) + + @test sqrt(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(0xF.E00F72E6C82F8P-92, 0x3.2A6AD8ACFCBB0P-76) + + @test pown(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944), 2) === bareinterval(0x0.0000000000000P+0, 0x6.BFD4840B33478P-300) + + @test pown(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624), 2) === bareinterval(0x0.0000000000000P+0, 0x2.A05EA84E4893CP-872) + + @test pown(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960), 2) === bareinterval(0x0.0000000000000P+0, 0x1.D1A144EFBEB44P+12) + + @test pown(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588), 2) === bareinterval(0x0.0000000000000P+0, 0x2.8817BFAFBDF18P-744) + + @test pown(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564), 2) === bareinterval(0x0.0000000000000P+0, 0xB.051CC05C2EBE0P-712) + + @test pown(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412), 2) === bareinterval(0x4.5E83E96FF693CP-824, 0xA.548CA7F8C13A0P-660) + + @test pown(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792), 2) === bareinterval(0x0.0000000000000P+0, 0x1.6EBF489D48CA5P-80) + + @test pown(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204), 2) === bareinterval(0x8.C23056BA480A8P-408, 0x1.90CBA74D12CF4P-396) + + @test pown(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80), 2) === bareinterval(0xE.89E458947EFA8P-532, 0xB.F4E1999D73020P-160) + + @test pown(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916), 2) === bareinterval(0x0.0000000000000P+0, 0x8.8D07F2E827770P-748) + + @test pown(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16), 2) === bareinterval(0x0.0000000000000P+0, 0xC.A9B03500DD578P-28) + + @test pown(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576), 2) === bareinterval(0x0.0000000000000P+0, 0x5.F6582538F0F44P-668) + + @test pown(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388), 2) === bareinterval(0x0.0000000000000P+0, 0x2.52887FE100FF0P-772) + + @test pown(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20), 2) === bareinterval(0x0.0000000000000P+0, 0x1.B9CBC9B69E7BFP-36) + + @test pown(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836), 2) === bareinterval(0x0.0000000000000P+0, 0x4.377B251ABDCC0P-604) + + @test pown(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760), 2) === bareinterval(0x0.0000000000000P+0, 0x2.D668271745A42P-996) + + @test pown(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664), 2) === bareinterval(0x0.0000000000000P+0, 0x9.7A69470135FA8P-100) + + @test pown(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548), 2) === bareinterval(0x0.0000000000000P+0, 0x6.57CBD208B34ACP-244) + + @test pown(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740), 2) === bareinterval(0x0.0000000000000P+0, 0x8.CC15E342FC8D8P-332) + + @test pown(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28), 2) === bareinterval(0x0.0000000000000P+0, 0xD.46C8C24634FC8P-56) + + @test pown(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772), 2) === bareinterval(0x0.0000000000000P+0, 0x4.264E23607BEA8P-752) + + @test pown(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540), 2) === bareinterval(0x0.0000000000000P+0, 0x2.3A3F453ECAFB4P-168) + + @test pown(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496), 2) === bareinterval(0xE.FCF2D2F52B4C0P-992, 0x1.0FE5AD9038BC9P-548) + + @test pown(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876), 2) === bareinterval(0x0.0000000000000P+0, 0x3.ECDBE373EAC94P-652) + + @test pown(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608), 2) === bareinterval(0x0.0000000000000P+0, 0x9.29DBB2B42A988P-508) + + @test pown(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432), 2) === bareinterval(0xC.FE1B0DE21E568P-860, 0x8.B6138BE0C5B78P-468) + +end diff --git a/test/ITF1788_tests/ieee1788-constructors.jl b/test/ITF1788_tests/ieee1788-constructors.jl new file mode 100644 index 000000000..cff337fbc --- /dev/null +++ b/test/ITF1788_tests/ieee1788-constructors.jl @@ -0,0 +1,107 @@ +@testset "IEEE1788.a" begin + + @test bareinterval(-Inf,Inf) === entireinterval(BareInterval{Float64}) + +end +@testset "IEEE1788.b" begin + + @test parse(BareInterval{Float64}, "[1.2345]") === bareinterval(0x1.3C083126E978DP+0, 0x1.3C083126E978EP+0) + + @test parse(BareInterval{Float64}, "[1,+infinity]") === bareinterval(1.0, Inf) + + @test parse(Interval{Float64}, "[1,1e3]_com") === interval(bareinterval(1.0, 1000.0), com) + + @test parse(Interval{Float64}, "[1,1E3]_COM") === interval(bareinterval(1.0, 1000.0), com) + +end +@testset "IEEE1788.c" begin + + @test parse(BareInterval{Float64}, "[1.e-3, 1.1e-3]") === bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12) + + @test parse(BareInterval{Float64}, "[-0x1.3p-1, 2/3]") === bareinterval(-0x9.8000000000000P-4, +0xA.AAAAAAAAAAAB0P-4) + + @test parse(BareInterval{Float64}, "[3.56]") === bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8F5C28F5C28F6P+0) + + @test parse(BareInterval{Float64}, "3.56?1") === bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0) + + @test parse(BareInterval{Float64}, "3.56?1e2") === bareinterval(355.0, 357.0) + + @test parse(BareInterval{Float64}, "3.560?2") === bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0) + + @test parse(BareInterval{Float64}, "3.56?") === bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0) + + @test parse(BareInterval{Float64}, "3.560?2u") === bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0) + + @test parse(BareInterval{Float64}, "-10?") === bareinterval(-10.5, -9.5) + + @test parse(BareInterval{Float64}, "-10?u") === bareinterval(-10.0, -9.5) + + @test parse(BareInterval{Float64}, "-10?12") === bareinterval(-22.0, 2.0) + +end +@testset "IEEE1788.d" begin + + @test parse(BareInterval{Float64}, "[1.234e5,Inf]") === bareinterval(123400.0, Inf) + + @test parse(BareInterval{Float64}, "3.1416?1") === bareinterval(0x3.24395810624DCP+0, 0x3.24467381D7DC0P+0) + + @test parse(BareInterval{Float64}, "[Empty]") === emptyinterval(BareInterval{Float64}) + +end +@testset "IEEE1788.e" begin + + @test_logs (:warn,) @test isnai(interval(2,1)) + +end +@testset "IEEE1788.e" begin + + @test parse(Interval{Float64}, "[ ]") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[entire]") === interval(bareinterval(-Inf, +Inf), dac) + + @test parse(Interval{Float64}, "[1.e-3, 1.1e-3]") === interval(bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12), com) + + @test parse(Interval{Float64}, "[-Inf, 2/3]") === interval(bareinterval(-Inf, +0xA.AAAAAAAAAAAB0P-4), dac) + + @test parse(Interval{Float64}, "[0x1.3p-1,]") === interval(bareinterval(0x1.3p-1, Inf), dac) + + @test parse(Interval{Float64}, "[,]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "3.56?1") === interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), com) + + @test parse(Interval{Float64}, "3.56?1e2") === interval(bareinterval(355.0, 357.0), com) + + @test parse(Interval{Float64}, "3.560?2") === interval(bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0), com) + + @test parse(Interval{Float64}, "3.56?") === interval(bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0), com) + + @test parse(Interval{Float64}, "3.560?2u") === interval(bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0), com) + + @test parse(Interval{Float64}, "-10?") === interval(bareinterval(-10.5, -9.5), com) + + @test parse(Interval{Float64}, "-10?u") === interval(bareinterval(-10.0, -9.5), com) + + @test parse(Interval{Float64}, "-10?12") === interval(bareinterval(-22.0, 2.0), com) + + @test parse(Interval{Float64}, "-10??u") === interval(bareinterval(-10.0, Inf), dac) + + @test parse(Interval{Float64}, "-10??") === interval(bareinterval(-Inf, Inf), dac) + + @test isnai(parse(Interval{Float64}, "[nai]")) + + @test parse(Interval{Float64}, "3.56?1_def") === interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), def) + +end +@testset "IEEE1788.f" begin + + @test parse(BareInterval{Float64}, "[]") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[empty]") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ empty ]") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[,]") === entireinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ entire ]") === entireinterval(BareInterval{Float64}) + +end diff --git a/test/ITF1788_tests/ieee1788-exceptions.jl b/test/ITF1788_tests/ieee1788-exceptions.jl new file mode 100644 index 000000000..318563bfa --- /dev/null +++ b/test/ITF1788_tests/ieee1788-exceptions.jl @@ -0,0 +1,11 @@ +@testset "exceptions" begin + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[+infinity]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(+Inf,-Inf) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(nai()) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[1.0000000000000001, 1.0000000000000002]") === bareinterval(1.0, 0x1.0000000000001p+0) + +end diff --git a/test/ITF1788_tests/libieeep1788_bool.jl b/test/ITF1788_tests/libieeep1788_bool.jl new file mode 100644 index 000000000..938739981 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_bool.jl @@ -0,0 +1,847 @@ +@testset "minimal_is_empty_test" begin + + @test isempty_interval(emptyinterval(BareInterval{Float64})) === true + + @test isempty_interval(bareinterval(-Inf,+Inf)) === false + + @test isempty_interval(bareinterval(1.0,2.0)) === false + + @test isempty_interval(bareinterval(-1.0,2.0)) === false + + @test isempty_interval(bareinterval(-3.0,-2.0)) === false + + @test isempty_interval(bareinterval(-Inf,2.0)) === false + + @test isempty_interval(bareinterval(-Inf,0.0)) === false + + @test isempty_interval(bareinterval(-Inf,-0.0)) === false + + @test isempty_interval(bareinterval(0.0,Inf)) === false + + @test isempty_interval(bareinterval(-0.0,Inf)) === false + + @test isempty_interval(bareinterval(-0.0,0.0)) === false + + @test isempty_interval(bareinterval(0.0,-0.0)) === false + + @test isempty_interval(bareinterval(0.0,0.0)) === false + + @test isempty_interval(bareinterval(-0.0,-0.0)) === false + +end +@testset "minimal_is_empty_dec_test" begin + + @test isempty_interval(nai()) === false + + @test isempty_interval(interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isempty_interval(interval(bareinterval(-Inf,+Inf), def)) === false + + @test isempty_interval(interval(bareinterval(1.0,2.0), com)) === false + + @test isempty_interval(interval(bareinterval(-1.0,2.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-3.0,-2.0), dac)) === false + + @test isempty_interval(interval(bareinterval(-Inf,2.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-Inf,0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-Inf,-0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(0.0,Inf), def)) === false + + @test isempty_interval(interval(bareinterval(-0.0,Inf), trv)) === false + + @test isempty_interval(interval(bareinterval(-0.0,0.0), com)) === false + + @test isempty_interval(interval(bareinterval(0.0,-0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(0.0,0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-0.0,-0.0), trv)) === false + +end +@testset "minimal_is_entire_test" begin + + @test isentire_interval(emptyinterval(BareInterval{Float64})) === false + + @test isentire_interval(bareinterval(-Inf,+Inf)) === true + + @test isentire_interval(bareinterval(1.0,2.0)) === false + + @test isentire_interval(bareinterval(-1.0,2.0)) === false + + @test isentire_interval(bareinterval(-3.0,-2.0)) === false + + @test isentire_interval(bareinterval(-Inf,2.0)) === false + + @test isentire_interval(bareinterval(-Inf,0.0)) === false + + @test isentire_interval(bareinterval(-Inf,-0.0)) === false + + @test isentire_interval(bareinterval(0.0,Inf)) === false + + @test isentire_interval(bareinterval(-0.0,Inf)) === false + + @test isentire_interval(bareinterval(-0.0,0.0)) === false + + @test isentire_interval(bareinterval(0.0,-0.0)) === false + + @test isentire_interval(bareinterval(0.0,0.0)) === false + + @test isentire_interval(bareinterval(-0.0,-0.0)) === false + +end +@testset "minimal_is_entire_dec_test" begin + + @test isentire_interval(nai()) === false + + @test isentire_interval(interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isentire_interval(interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isentire_interval(interval(bareinterval(-Inf,+Inf), def)) === true + + @test isentire_interval(interval(bareinterval(-Inf,+Inf), dac)) === true + + @test isentire_interval(interval(bareinterval(1.0,2.0), com)) === false + + @test isentire_interval(interval(bareinterval(-1.0,2.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-3.0,-2.0), dac)) === false + + @test isentire_interval(interval(bareinterval(-Inf,2.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-Inf,0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-Inf,-0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(0.0,Inf), def)) === false + + @test isentire_interval(interval(bareinterval(-0.0,Inf), trv)) === false + + @test isentire_interval(interval(bareinterval(-0.0,0.0), com)) === false + + @test isentire_interval(interval(bareinterval(0.0,-0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(0.0,0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-0.0,-0.0), trv)) === false + +end +@testset "minimal_is_nai_dec_test" begin + + @test isnai(nai()) === true + + @test isnai(interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isnai(interval(bareinterval(-Inf,+Inf), def)) === false + + @test isnai(interval(bareinterval(-Inf,+Inf), dac)) === false + + @test isnai(interval(bareinterval(1.0,2.0), com)) === false + + @test isnai(interval(bareinterval(-1.0,2.0), trv)) === false + + @test isnai(interval(bareinterval(-3.0,-2.0), dac)) === false + + @test isnai(interval(bareinterval(-Inf,2.0), trv)) === false + + @test isnai(interval(bareinterval(-Inf,0.0), trv)) === false + + @test isnai(interval(bareinterval(-Inf,-0.0), trv)) === false + + @test isnai(interval(bareinterval(0.0,Inf), def)) === false + + @test isnai(interval(bareinterval(-0.0,Inf), trv)) === false + + @test isnai(interval(bareinterval(-0.0,0.0), com)) === false + + @test isnai(interval(bareinterval(0.0,-0.0), trv)) === false + + @test isnai(interval(bareinterval(0.0,0.0), trv)) === false + + @test isnai(interval(bareinterval(-0.0,-0.0), trv)) === false + +end +@testset "minimal_equal_test" begin + + @test isequal_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true + + @test isequal_interval(bareinterval(1.0,2.1), bareinterval(1.0,2.0)) === false + + @test isequal_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isequal_interval(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false + + @test isequal_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isequal_interval(bareinterval(1.0,2.4), bareinterval(-Inf,+Inf)) === false + + @test isequal_interval(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === true + + @test isequal_interval(bareinterval(1.0,2.4), bareinterval(1.0,Inf)) === false + + @test isequal_interval(bareinterval(-Inf,2.0), bareinterval(-Inf,2.0)) === true + + @test isequal_interval(bareinterval(-Inf,2.4), bareinterval(-Inf,2.0)) === false + + @test isequal_interval(bareinterval(-2.0,0.0), bareinterval(-2.0,0.0)) === true + + @test isequal_interval(bareinterval(-0.0,2.0), bareinterval(0.0,2.0)) === true + + @test isequal_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test isequal_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test isequal_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + +end +@testset "minimal_equal_dec_test" begin + + @test isequal_interval(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,2.0), trv)) === true + + @test isequal_interval(interval(bareinterval(1.0,2.1), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false + + @test isequal_interval(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isequal_interval(nai(), nai()) === false + + @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isequal_interval(nai(), interval(bareinterval(1.0,2.0), trv)) === false + + @test isequal_interval(interval(bareinterval(-Inf,+Inf), def), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isequal_interval(interval(bareinterval(1.0,2.4), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isequal_interval(interval(bareinterval(1.0,Inf), trv), interval(bareinterval(1.0,Inf), trv)) === true + + @test isequal_interval(interval(bareinterval(1.0,2.4), def), interval(bareinterval(1.0,Inf), trv)) === false + + @test isequal_interval(interval(bareinterval(-Inf,2.0), trv), interval(bareinterval(-Inf,2.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-Inf,2.4), def), interval(bareinterval(-Inf,2.0), trv)) === false + + @test isequal_interval(interval(bareinterval(-2.0,0.0), trv), interval(bareinterval(-2.0,0.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-0.0,2.0), def), interval(bareinterval(0.0,2.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-0.0,0.0), def), interval(bareinterval(0.0,0.0), trv)) === true + + @test isequal_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + +end +@testset "minimal_subset_test" begin + + @test issubset_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,4.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,1.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,0.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,-0.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(-0.0,4.0), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(-Inf,+Inf), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(-0.0,4.0), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(-0.1,1.0), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true + + @test issubset_interval(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) === true + + @test issubset_interval(bareinterval(1.0,2.0), bareinterval(-0.0,4.0)) === true + + @test issubset_interval(bareinterval(0.1,0.2), bareinterval(0.0,4.0)) === true + + @test issubset_interval(bareinterval(0.1,0.2), bareinterval(-0.0,4.0)) === true + + @test issubset_interval(bareinterval(-0.1,-0.1), bareinterval(-4.0, 3.4)) === true + + @test issubset_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true + + @test issubset_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true + + @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true + +end +@testset "minimal_subset_dec_test" begin + + @test issubset_interval(nai(), nai()) === false + + @test issubset_interval(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(nai(), interval(bareinterval(0.0,4.0), trv)) === false + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0,4.0), def)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,1.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,0.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,-0.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(-0.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(-0.1,1.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(-Inf,+Inf), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.1,1.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true + + @test issubset_interval(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test issubset_interval(interval(bareinterval(1.0,2.0), def), interval(bareinterval(-0.0,4.0), def)) === true + + @test issubset_interval(interval(bareinterval(0.1,0.2), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test issubset_interval(interval(bareinterval(0.1,0.2), trv), interval(bareinterval(-0.0,4.0), def)) === true + + @test issubset_interval(interval(bareinterval(-0.1,-0.1), trv), interval(bareinterval(-4.0, 3.4), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true + + @test issubset_interval(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,-0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,-0.0), def), interval(bareinterval(0.0,0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true + +end +@testset "minimal_less_test" begin + + @test isweakless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isweakless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === false + + @test isweakless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isweakless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isweakless(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isweakless(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(0.0,2.0)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-0.0,2.0)) === false + + @test isweakless(bareinterval(0.0,2.0), bareinterval(0.0,2.0)) === true + + @test isweakless(bareinterval(0.0,2.0), bareinterval(-0.0,2.0)) === true + + @test isweakless(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === true + + @test isweakless(bareinterval(-0.0,2.0), bareinterval(1.0,2.0)) === true + + @test isweakless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true + + @test isweakless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test isweakless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === true + + @test isweakless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === true + + @test isweakless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) === true + + @test isweakless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) === true + + @test isweakless(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true + + @test isweakless(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true + + @test isweakless(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test isweakless(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true + +end +@testset "minimal_less_dec_test" begin + + @test isweakless(nai(), nai()) === false + + @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false + + @test isweakless(interval(bareinterval(1.0,2.0), trv), nai()) === false + + @test isweakless(nai(), interval(bareinterval(1.0,2.0), def)) === false + + @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), def), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isweakless(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(0.0,2.0), def)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-0.0,2.0), trv)) === false + + @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(0.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-0.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,2.0), def), interval(bareinterval(1.0,2.0), def)) === true + + @test isweakless(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test isweakless(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test isweakless(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test isweakless(interval(bareinterval(-2.0,-1.0), trv), interval(bareinterval(-2.0,-1.0), trv)) === true + + @test isweakless(interval(bareinterval(-3.0,-1.5), trv), interval(bareinterval(-2.0,-1.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true + + @test isweakless(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true + + @test isweakless(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test isweakless(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,-0.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,-0.0), def), interval(bareinterval(0.0,0.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true + +end +@testset "minimal_precedes_test" begin + + @test precedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true + + @test precedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true + + @test precedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test precedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test precedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test precedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === true + + @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,0.0)) === true + + @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,-0.0)) === true + + @test precedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === false + + @test precedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false + + @test precedes(bareinterval(-3.0, -0.1), bareinterval(-1.0,0.0)) === false + + @test precedes(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true + + @test precedes(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true + + @test precedes(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test precedes(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true + +end +@testset "minimal_precedes_dec_test" begin + + @test precedes(nai(), interval(bareinterval(3.0,4.0), def)) === false + + @test precedes(interval(bareinterval(3.0,4.0), trv), nai()) === false + + @test precedes(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test precedes(nai(), nai()) === false + + @test precedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test precedes(interval(bareinterval(3.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test precedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test precedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test precedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test precedes(interval(bareinterval(1.0,3.0), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test precedes(interval(bareinterval(-3.0, -1.0), def), interval(bareinterval(-1.0,0.0), trv)) === true + + @test precedes(interval(bareinterval(-3.0, -1.0), trv), interval(bareinterval(-1.0,-0.0), trv)) === true + + @test precedes(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === false + + @test precedes(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), trv)) === false + + @test precedes(interval(bareinterval(-3.0, -0.1), trv), interval(bareinterval(-1.0,0.0), trv)) === false + + @test precedes(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true + + @test precedes(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true + + @test precedes(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test precedes(interval(bareinterval(-0.0,0.0), def), interval(bareinterval(0.0,-0.0), trv)) === true + + @test precedes(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test precedes(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true + +end +@testset "minimal_interior_test" begin + + @test isinterior(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isinterior(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) === true + + @test isinterior(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) === false + + @test isinterior(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isinterior(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) === true + + @test isinterior(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) === true + + @test isinterior(bareinterval(-Inf,+Inf), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) === true + + @test isinterior(bareinterval(-2.0,2.0), bareinterval(-2.0,4.0)) === false + + @test isinterior(bareinterval(-0.0,-0.0), bareinterval(-2.0,4.0)) === true + + @test isinterior(bareinterval(0.0,0.0), bareinterval(-2.0,4.0)) === true + + @test isinterior(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === false + + @test isinterior(bareinterval(0.0,4.4), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(-1.0,-1.0), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(2.0,2.0), bareinterval(-2.0,-1.0)) === false + +end +@testset "minimal_interior_dec_test" begin + + @test isinterior(nai(), nai()) === false + + @test isinterior(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isinterior(nai(), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(0.0,4.0), def), nai()) === false + + @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(0.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isinterior(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isinterior(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isinterior(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(1.0,2.0), def), interval(bareinterval(0.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(-2.0,2.0), trv), interval(bareinterval(-2.0,4.0), def)) === false + + @test isinterior(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(-2.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(0.0,0.0), def), interval(bareinterval(-2.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === false + + @test isinterior(interval(bareinterval(0.0,4.4), trv), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(-1.0,-1.0), trv), interval(bareinterval(0.0,4.0), def)) === false + + @test isinterior(interval(bareinterval(2.0,2.0), def), interval(bareinterval(-2.0,-1.0), trv)) === false + +end +@testset "minimal_strictly_less_test" begin + + @test isstrictless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isstrictless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === false + + @test isstrictless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false + + @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isstrictless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test isstrictless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === false + + @test isstrictless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test isstrictless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === true + + @test isstrictless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false + + @test isstrictless(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) === false + + @test isstrictless(bareinterval(-0.0,4.0), bareinterval(0.0,4.0)) === false + + @test isstrictless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) === false + + @test isstrictless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) === true + +end +@testset "minimal_strictly_less_dec_test" begin + + @test isstrictless(nai(), nai()) === false + + @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), nai()) === false + + @test isstrictless(nai(), interval(bareinterval(1.0,2.0), def)) === false + + @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), def)) === false + + @test isstrictless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isstrictless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,3.5), def), interval(bareinterval(3.0,4.0), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), def)) === false + + @test isstrictless(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(0.0,4.0), def)) === false + + @test isstrictless(interval(bareinterval(-0.0,4.0), def), interval(bareinterval(0.0,4.0), trv)) === false + + @test isstrictless(interval(bareinterval(-2.0,-1.0), def), interval(bareinterval(-2.0,-1.0), def)) === false + + @test isstrictless(interval(bareinterval(-3.0,-1.5), trv), interval(bareinterval(-2.0,-1.0), trv)) === true + +end +@testset "minimal_strictly_precedes_test" begin + + @test strictprecedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true + + @test strictprecedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true + + @test strictprecedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test strictprecedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false + + @test strictprecedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test strictprecedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === false + + @test strictprecedes(bareinterval(-3.0,-1.0), bareinterval(-1.0,0.0)) === false + + @test strictprecedes(bareinterval(-3.0,-0.0), bareinterval(0.0,1.0)) === false + + @test strictprecedes(bareinterval(-3.0,0.0), bareinterval(-0.0,1.0)) === false + + @test strictprecedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === false + + @test strictprecedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false + + @test strictprecedes(bareinterval(-3.0,-0.1), bareinterval(-1.0,0.0)) === false + +end +@testset "minimal_strictly_precedes_dec_test" begin + + @test strictprecedes(nai(), interval(bareinterval(3.0,4.0), trv)) === false + + @test strictprecedes(interval(bareinterval(3.0,4.0), def), nai()) === false + + @test strictprecedes(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test strictprecedes(nai(), nai()) === false + + @test strictprecedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test strictprecedes(interval(bareinterval(3.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test strictprecedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test strictprecedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test strictprecedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test strictprecedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test strictprecedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test strictprecedes(interval(bareinterval(1.0,3.0), def), interval(bareinterval(3.0,4.0), trv)) === false + + @test strictprecedes(interval(bareinterval(-3.0,-1.0), trv), interval(bareinterval(-1.0,0.0), def)) === false + + @test strictprecedes(interval(bareinterval(-3.0,-0.0), def), interval(bareinterval(0.0,1.0), trv)) === false + + @test strictprecedes(interval(bareinterval(-3.0,0.0), trv), interval(bareinterval(-0.0,1.0), trv)) === false + + @test strictprecedes(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === false + + @test strictprecedes(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), def)) === false + + @test strictprecedes(interval(bareinterval(-3.0,-0.1), trv), interval(bareinterval(-1.0,0.0), trv)) === false + +end +@testset "minimal_disjoint_test" begin + + @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true + + @test isdisjoint_interval(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true + + @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === true + + @test isdisjoint_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === false + + @test isdisjoint_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === false + + @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,7.0)) === false + + @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(-Inf,+Inf)) === false + + @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(1.0,7.0)) === false + + @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false + +end +@testset "minimal_disjoint_dec_test" begin + + @test isdisjoint_interval(nai(), interval(bareinterval(3.0,4.0), def)) === false + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), nai()) === false + + @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false + + @test isdisjoint_interval(nai(), nai()) === false + + @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(1.0,2.0), def)) === true + + @test isdisjoint_interval(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), def), interval(bareinterval(1.0,7.0), def)) === false + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,7.0), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + +end diff --git a/test/ITF1788_tests/libieeep1788_cancel.jl b/test/ITF1788_tests/libieeep1788_cancel.jl new file mode 100644 index 000000000..df879daed --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_cancel.jl @@ -0,0 +1,496 @@ +@testset "minimal_cancel_plus_test" begin + + @test cancelplus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-Inf, -1.0), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0, Inf), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0,5.0), bareinterval(1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0,5.0), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(1.0,5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0,10.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,10.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.1,-0.0), bareinterval(0.0,5.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelplus(bareinterval(-5.1,-1.0), bareinterval(1.0,5.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelplus(bareinterval(-5.0,-0.9), bareinterval(1.0,5.0)) === bareinterval(0.0, 0x1.9999999999998P-4) + + @test cancelplus(bareinterval(-5.1,-0.9), bareinterval(1.0,5.0)) === bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4) + + @test cancelplus(bareinterval(-5.0,-1.0), bareinterval(1.0,5.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(-10.1, 5.0), bareinterval(-5.0,10.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelplus(bareinterval(-10.0, 5.1), bareinterval(-5.0,10.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelplus(bareinterval(-10.1, 5.1), bareinterval(-5.0,10.0)) === bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(0.9, 5.0), bareinterval(-5.0,-1.0)) === bareinterval(-0x1.9999999999998P-4,0.0) + + @test cancelplus(bareinterval(1.0, 5.1), bareinterval(-5.0,-1.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelplus(bareinterval(0.0, 5.1), bareinterval(-5.0,-0.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelplus(bareinterval(0.9, 5.1), bareinterval(-5.0,-1.0)) === bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-1.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(0.0, 5.0), bareinterval(-5.0,-0.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test cancelplus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,0.01)) === bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0) + + @test cancelplus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1P+971) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)) === bareinterval(-0x1P+971,0.0) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53)) === bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1) + + @test cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53)) === entireinterval(BareInterval{Float64}) + +end +@testset "minimal_cancel_plus_dec_test" begin + + @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0, Inf), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(bareinterval(-5.0,1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0, Inf), trv), interval(bareinterval(-5.0,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-5.0,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0, Inf), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0, Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,1.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0,5.0), dac), interval(bareinterval(1.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0,5.0), def), interval(bareinterval(-Inf,1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0,5.0), com), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-Inf,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.0, -1.0), com), interval(bareinterval(1.0,5.1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.0, -1.0), dac), interval(bareinterval(0.9,5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.0, -1.0), def), interval(bareinterval(0.9,5.1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), trv), interval(bareinterval(-5.0,10.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-5.1,10.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), dac), interval(bareinterval(-5.1,10.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), def), interval(bareinterval(-5.0,-0.9), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), trv), interval(bareinterval(-5.1,-1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(-5.1,-0.9), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, -1.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,10.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-5.0,10.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-5.0,-1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.1,-0.0), com), interval(bareinterval(0.0,5.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(-5.1,-1.0), com), interval(bareinterval(1.0,5.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(-5.0,-0.9), com), interval(bareinterval(1.0,5.0), def)) === interval(bareinterval(0.0, 0x1.9999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-5.1,-0.9), dac), interval(bareinterval(1.0,5.0), trv)) === interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-5.0,-1.0), dac), interval(bareinterval(1.0,5.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(-10.1, 5.0), dac), interval(bareinterval(-5.0,10.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.1), def), interval(bareinterval(-5.0,10.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-10.1, 5.1), def), interval(bareinterval(-5.0,10.0), trv)) === interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), def), interval(bareinterval(-5.0,10.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(0.9, 5.0), trv), interval(bareinterval(-5.0,-1.0), dac)) === interval(bareinterval(-0x1.9999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.1), trv), interval(bareinterval(-5.0,-1.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(0.0, 5.1), trv), interval(bareinterval(-5.0,-0.0), trv)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(0.9, 5.1), com), interval(bareinterval(-5.0,-1.0), com)) === interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(-5.0,-1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(0.0, 5.0), def), interval(bareinterval(-5.0,-0.0), trv)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), com), interval(bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4), com)) === interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), trv) + + @test cancelplus(interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), dac), interval(bareinterval(-0x1.999999999999AP-4,0.01), com)) === interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), trv) + + @test cancelplus(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac), interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0x1P+971), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com)) === interval(bareinterval(-0x1P+971,0.0), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), dac), interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), com)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), trv) + + @test cancelplus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), def), interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), com)) === interval(entireinterval(BareInterval{Float64}), trv) + +end +@testset "minimal_cancel_minus_test" begin + + @test cancelminus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-Inf, -1.0), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0, Inf), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0,5.0), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.0,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, -1.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, 5.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, 5.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.1,-0.0), bareinterval(-5.0, 0.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelminus(bareinterval(-5.1,-1.0), bareinterval(-5.0, -1.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelminus(bareinterval(-5.0,-0.9), bareinterval(-5.0, -1.0)) === bareinterval(0.0, 0x1.9999999999998P-4) + + @test cancelminus(bareinterval(-5.1,-0.9), bareinterval(-5.0, -1.0)) === bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4) + + @test cancelminus(bareinterval(-5.0,-1.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(-10.1, 5.0), bareinterval(-10.0, 5.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelminus(bareinterval(-10.0, 5.1), bareinterval(-10.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelminus(bareinterval(-10.1, 5.1), bareinterval(-10.0, 5.0)) === bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.0)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(0.9, 5.0), bareinterval(1.0, 5.0)) === bareinterval(-0x1.9999999999998P-4,0.0) + + @test cancelminus(bareinterval(-0.0, 5.1), bareinterval(0.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelminus(bareinterval(1.0, 5.1), bareinterval(1.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelminus(bareinterval(0.9, 5.1), bareinterval(1.0, 5.0)) === bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.0)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(-5.0, 1.0), bareinterval(-1.0, 5.0)) === bareinterval(-4.0,-4.0) + + @test cancelminus(bareinterval(-5.0, 0.0), bareinterval(-0.0, 5.0)) === bareinterval(-5.0,-5.0) + + @test cancelminus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test cancelminus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0.01,0x1.999999999999AP-4)) === bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0) + + @test cancelminus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)) === bareinterval(0.0,0x1P+971) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1P+971,0.0) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) === bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022) + + @test cancelminus(bareinterval(0x1P-1022,0x1.0000000000002P-1022), bareinterval(0x1P-1022,0x1.0000000000001P-1022)) === bareinterval(0.0,0x0.0000000000001P-1022) + + @test cancelminus(bareinterval(0x1P-1022,0x1.0000000000001P-1022), bareinterval(0x1P-1022,0x1.0000000000002P-1022)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0)) === bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1) + + @test cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0)) === entireinterval(BareInterval{Float64}) + +end +@testset "minimal_cancel_minus_dec_test" begin + + @test cancelminus(interval(bareinterval(-Inf, -1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0, Inf), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-Inf, -1.0), trv), interval(bareinterval(-1.0,5.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0, Inf), dac), interval(bareinterval(-1.0,5.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-1.0,5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-Inf, -1.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0, Inf), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf, -1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-1.0, Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0,5.0), dac), interval(bareinterval(-Inf, -1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0,5.0), def), interval(bareinterval(-1.0, Inf), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0,5.0), com), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-Inf, -1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-1.0, Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.0, -1.0), com), interval(bareinterval(-5.1,-1.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.0, -1.0), dac), interval(bareinterval(-5.0,-0.9), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.0, -1.0), def), interval(bareinterval(-5.1,-0.9), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), trv), interval(bareinterval(-10.1, 5.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-10.0, 5.1), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), dac), interval(bareinterval(-10.1, 5.1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), def), interval(bareinterval(0.9, 5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), trv), interval(bareinterval(1.0, 5.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), com), interval(bareinterval(0.9, 5.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, -1.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-10.0, -1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-10.0, 5.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0, 5.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.1,-0.0), com), interval(bareinterval(-5.0, 0.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-5.1,-1.0), dac), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-5.0,-0.9), def), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(0.0, 0x1.9999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-5.1,-0.9), trv), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-5.0,-1.0), com), interval(bareinterval(-5.0, -1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(-10.1, 5.0), dac), interval(bareinterval(-10.0, 5.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.1), def), interval(bareinterval(-10.0, 5.0), dac)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-10.1, 5.1), trv), interval(bareinterval(-10.0, 5.0), def)) === interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-10.0, 5.0), def)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(0.9, 5.0), dac), interval(bareinterval(1.0, 5.0), def)) === interval(bareinterval(-0x1.9999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-0.0, 5.1), def), interval(bareinterval(0.0, 5.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.1), trv), interval(bareinterval(1.0, 5.0), trv)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(0.9, 5.1), com), interval(bareinterval(1.0, 5.0), trv)) === interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(1.0, 5.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(-5.0, 1.0), def), interval(bareinterval(-1.0, 5.0), def)) === interval(bareinterval(-4.0,-4.0), trv) + + @test cancelminus(interval(bareinterval(-5.0, 0.0), trv), interval(bareinterval(-0.0, 5.0), trv)) === interval(bareinterval(-5.0,-5.0), trv) + + @test cancelminus(interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), com), interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), com)) === interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), trv) + + @test cancelminus(interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), def), interval(bareinterval(-0.01,0x1.999999999999AP-4), dac)) === interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), trv) + + @test cancelminus(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com)) === interval(bareinterval(0.0,0x1P+971), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1P+971,0.0), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com), interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com), interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), dac)) === interval(bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022), trv) + + @test cancelminus(interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), dac), interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), dac)) === interval(bareinterval(0.0,0x0.0000000000001P-1022), trv) + + @test cancelminus(interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), def), interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), com), interval(bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0), dac)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), trv) + + @test cancelminus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), def), interval(bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + +end diff --git a/test/ITF1788_tests/libieeep1788_class.jl b/test/ITF1788_tests/libieeep1788_class.jl new file mode 100644 index 000000000..652936445 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_class.jl @@ -0,0 +1,444 @@ +@testset "minimal_nums_to_interval_test" begin + + @test bareinterval(-1.0,1.0) === bareinterval(-1.0,1.0) + + @test bareinterval(-Inf,1.0) === bareinterval(-Inf,1.0) + + @test bareinterval(-1.0,Inf) === bareinterval(-1.0,Inf) + + @test bareinterval(-Inf,Inf) === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test bareinterval(NaN,NaN) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(1.0,-1.0) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(-Inf,-Inf) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(Inf,Inf) === emptyinterval(BareInterval{Float64}) + +end +@testset "minimal_nums_to_decorated_interval_test" begin + + @test interval(-1.0,1.0) === interval(bareinterval(-1.0,1.0), com) + + @test interval(-Inf,1.0) === interval(bareinterval(-Inf,1.0), dac) + + @test interval(-1.0,Inf) === interval(bareinterval(-1.0,Inf), dac) + + @test interval(-Inf,Inf) === interval(bareinterval(-Inf,Inf), dac) + + @test_logs (:warn,) @test isnai(interval(NaN,NaN)) + + @test_logs (:warn,) @test isnai(interval(1.0,-1.0)) + + @test_logs (:warn,) @test isnai(interval(-Inf,-Inf)) + + @test_logs (:warn,) @test isnai(interval(Inf,Inf)) + +end +@testset "minimal_text_to_interval_test" begin + + @test parse(BareInterval{Float64}, "[ Empty ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Empty ]_trv") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ]_trv") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[,]") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[,]_trv") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ entire ]") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ENTIRE ]_dac") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ ENTIRE ]") === bareinterval(-Inf,Inf) + + @test parse(BareInterval{Float64}, "[ -inf , INF ]") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -inf, INF ]_def") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[-1.0,1.0]") === bareinterval(-1.0,1.0) + + @test parse(BareInterval{Float64}, "[ -1.0 , 1.0 ]") === bareinterval(-1.0,1.0) + + @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]") === bareinterval(-1.0,1.0) + + @test parse(BareInterval{Float64}, "[-1,]") === bareinterval(-1.0,Inf) + + @test parse(BareInterval{Float64}, "[-1.0, +inf]") === bareinterval(-1.0,Inf) + + @test parse(BareInterval{Float64}, "[-1.0, +infinity]") === bareinterval(-1.0,Inf) + + @test parse(BareInterval{Float64}, "[-Inf, 1.000 ]") === bareinterval(-Inf,1.0) + + @test parse(BareInterval{Float64}, "[-Infinity, 1.000 ]") === bareinterval(-Inf,1.0) + + @test parse(BareInterval{Float64}, "[1.0E+400 ]") === bareinterval(0x1.fffffffffffffp+1023,Inf) + + @test parse(BareInterval{Float64}, "[ -4/2, 10/5 ]") === bareinterval(-2.0,2.0) + + @test parse(BareInterval{Float64}, "[ -1/10, 1/10 ]") === bareinterval(-0.1,0.1) + + @test parse(BareInterval{Float64}, "0.0?") === bareinterval(-0.05,0.05) + + @test parse(BareInterval{Float64}, "0.0?u") === bareinterval(0.0,0.05) + + @test parse(BareInterval{Float64}, "0.0?d") === bareinterval(-0.05,0.0) + + @test parse(BareInterval{Float64}, "2.5?") === bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1) + + @test parse(BareInterval{Float64}, "2.5?u") === bareinterval(2.5,0x1.4666666666667p+1) + + @test parse(BareInterval{Float64}, "2.5?d") === bareinterval(0x1.3999999999999p+1,2.5) + + @test parse(BareInterval{Float64}, "0.000?5") === bareinterval(-0.005,0.005) + + @test parse(BareInterval{Float64}, "0.000?5u") === bareinterval(0.0,0.005) + + @test parse(BareInterval{Float64}, "0.000?5d") === bareinterval(-0.005,0.0) + + @test parse(BareInterval{Float64}, "2.500?5") === bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1) + + @test parse(BareInterval{Float64}, "2.500?5u") === bareinterval(2.5,0x1.40a3d70a3d70bp+1) + + @test parse(BareInterval{Float64}, "2.500?5d") === bareinterval(0x1.3f5c28f5c28f5p+1,2.5) + + @test parse(BareInterval{Float64}, "0.0??") === bareinterval(-Inf,Inf) + + @test parse(BareInterval{Float64}, "0.0??u") === bareinterval(0.0,Inf) + + @test parse(BareInterval{Float64}, "0.0??d") === bareinterval(-Inf,0.0) + + @test parse(BareInterval{Float64}, "2.5??") === bareinterval(-Inf,Inf) + + @test parse(BareInterval{Float64}, "2.5??u") === bareinterval(2.5,Inf) + + @test parse(BareInterval{Float64}, "2.5??d") === bareinterval(-Inf,2.5) + + @test parse(BareInterval{Float64}, "2.500?5e+27") === bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91) + + @test parse(BareInterval{Float64}, "2.500?5ue4") === bareinterval(0x1.86ap+14,0x1.8768p+14) + + @test parse(BareInterval{Float64}, "2.500?5de-5") === bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16) + + @test parse(BareInterval{Float64}, "10?3") === bareinterval(7.0,13.0) + + @test parse(BareInterval{Float64}, "10?3e380") === bareinterval(0x1.fffffffffffffp+1023,Inf) + + @test parse(BareInterval{Float64}, "1.0000000000000001?1") === bareinterval(1.0,0x1.0000000000001p+0) + + @test parse(BareInterval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]_trv") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Empty ]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[,]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Entire ]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -inf , INF ]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_fooo") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_da") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-1.0,]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf, 1.000 ]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-I nf, 1.000 ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf, 1.0 00 ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[Inf , INF]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ foo ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[1.0000000000000002,1.0000000000000001]") === bareinterval(1.0,0x1.0000000000001p+0) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]") === bareinterval(1.0,0x1.0000000000001p+0) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]") === bareinterval(1.0,0x1.0000000000001p+0) + +end +@testset "minimal_text_to_decorated_interval_test" begin + + @test parse(Interval{Float64}, "[ Empty ]") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ Empty ]_trv") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ ]") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ ]_trv") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[,]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[,]_trv") === interval(entireinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ entire ]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[ ENTIRE ]_dac") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[ -inf , INF ]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[ -inf, INF ]_def") === interval(entireinterval(BareInterval{Float64}), def) + + @test parse(Interval{Float64}, "[-1.0,1.0]") === interval(bareinterval(-1.0,1.0), com) + + @test parse(Interval{Float64}, "[ -1.0 , 1.0 ]_com") === interval(bareinterval(-1.0,1.0), com) + + @test parse(Interval{Float64}, "[ -1.0 , 1.0]_trv") === interval(bareinterval(-1.0,1.0), trv) + + @test parse(Interval{Float64}, "[-1,]") === interval(bareinterval(-1.0,Inf), dac) + + @test parse(Interval{Float64}, "[-1.0, +inf]_def") === interval(bareinterval(-1.0,Inf), def) + + @test parse(Interval{Float64}, "[-1.0, +infinity]_def") === interval(bareinterval(-1.0,Inf), def) + + @test parse(Interval{Float64}, "[-Inf, 1.000 ]") === interval(bareinterval(-Inf,1.0), dac) + + @test parse(Interval{Float64}, "[-Infinity, 1.000 ]_trv") === interval(bareinterval(-Inf,1.0), trv) + + @test parse(Interval{Float64}, "[1.0E+400 ]_com") === interval(bareinterval(0x1.fffffffffffffp+1023,Inf), dac) + + @test parse(Interval{Float64}, "[ -4/2, 10/5 ]_com") === interval(bareinterval(-2.0,2.0), com) + + @test parse(Interval{Float64}, "[ -1/10, 1/10 ]_com") === interval(bareinterval(-0.1,0.1), com) + + @test parse(Interval{Float64}, "0.0?") === interval(bareinterval(-0.05,0.05), com) + + @test parse(Interval{Float64}, "0.0?u_trv") === interval(bareinterval(0.0,0.05), trv) + + @test parse(Interval{Float64}, "0.0?d_dac") === interval(bareinterval(-0.05,0.0), dac) + + @test parse(Interval{Float64}, "2.5?") === interval(bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1), com) + + @test parse(Interval{Float64}, "2.5?u") === interval(bareinterval(2.5,0x1.4666666666667p+1), com) + + @test parse(Interval{Float64}, "2.5?d_trv") === interval(bareinterval(0x1.3999999999999p+1,2.5), trv) + + @test parse(Interval{Float64}, "0.000?5") === interval(bareinterval(-0.005,0.005), com) + + @test parse(Interval{Float64}, "0.000?5u_def") === interval(bareinterval(0.0,0.005), def) + + @test parse(Interval{Float64}, "0.000?5d") === interval(bareinterval(-0.005,0.0), com) + + @test parse(Interval{Float64}, "2.500?5") === interval(bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1), com) + + @test parse(Interval{Float64}, "2.500?5u") === interval(bareinterval(2.5,0x1.40a3d70a3d70bp+1), com) + + @test parse(Interval{Float64}, "2.500?5d") === interval(bareinterval(0x1.3f5c28f5c28f5p+1,2.5), com) + + @test parse(Interval{Float64}, "0.0??_dac") === interval(bareinterval(-Inf,Inf), dac) + + @test parse(Interval{Float64}, "0.0??u_trv") === interval(bareinterval(0.0,Inf), trv) + + @test parse(Interval{Float64}, "0.0??d") === interval(bareinterval(-Inf,0.0), dac) + + @test parse(Interval{Float64}, "2.5??") === interval(bareinterval(-Inf,Inf), dac) + + @test parse(Interval{Float64}, "2.5??u_def") === interval(bareinterval(2.5,Inf), def) + + @test parse(Interval{Float64}, "2.5??d_dac") === interval(bareinterval(-Inf,2.5), dac) + + @test parse(Interval{Float64}, "2.500?5e+27") === interval(bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91), com) + + @test parse(Interval{Float64}, "2.500?5ue4_def") === interval(bareinterval(0x1.86ap+14,0x1.8768p+14), def) + + @test parse(Interval{Float64}, "2.500?5de-5") === interval(bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16), com) + + @test isnai(parse(Interval{Float64}, "[ Nai ]")) + + @test parse(Interval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_com") === interval(bareinterval(-Inf,Inf), dac) + + @test parse(Interval{Float64}, "10?3_com") === interval(bareinterval(7.0,13.0), com) + + @test parse(Interval{Float64}, "10?3e380_com") === interval(bareinterval(0x1.fffffffffffffp+1023,Inf), dac) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Nai ]_ill")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Nai ]_trv")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Empty ]_ill")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ ]_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[,]_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Entire ]_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -inf , INF ]_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_ill")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_fooo")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_da")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-1.0,]_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-Inf, 1.000 ]_ill")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-I nf, 1.000 ]")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-Inf, 1.0 00 ]")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-Inf ]")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[Inf , INF]")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ foo ]")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??u_ill")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??d_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??_com")) + + @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[1.0,2.0")) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[1.0000000000000002,1.0000000000000001]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) + +end +@testset "minimal_interval_part_test" begin + + @test bareinterval(interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv)) === bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4) + + @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com)) === bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4) + + @test bareinterval(interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac)) === bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4) + + @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def)) === bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4) + + @test bareinterval(interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv)) === bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022) + + @test bareinterval(interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), trv)) === bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022) + + @test bareinterval(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), trv)) === bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022) + + @test bareinterval(interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), trv)) === bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023) + + @test bareinterval(interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv)) === bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023) + + @test bareinterval(interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv)) === bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023) + + @test bareinterval(interval(bareinterval(-Inf,Inf), trv)) === bareinterval(-Inf,Inf) + + @test bareinterval(interval(emptyinterval(BareInterval{Float64}), trv)) === emptyinterval(BareInterval{Float64}) + + @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com)) === bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4) + + @test_logs (:warn,) @test bareinterval(nai()) === emptyinterval(BareInterval{Float64}) + +end +@testset "minimal_new_dec_test" begin + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), com) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4)) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), com) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), com) + + @test interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) === interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), com) + + @test interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), com) + + @test interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023)) === interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) === interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) === interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(-Inf,Inf)) === interval(bareinterval(-Inf,Inf), dac) + + @test interval(emptyinterval(BareInterval{Float64})) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + +end +@testset "minimal_set_dec_test" begin + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def) + + @test interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv) === interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv) + + @test interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), def) === interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), def) + + @test interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), dac) === interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), dac) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) === interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), def) === interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), def) + + @test interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv) === interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv) + + @test interval(bareinterval(-Inf,Inf), dac) === interval(bareinterval(-Inf,Inf), dac) + + @test interval(emptyinterval(BareInterval{Float64}), trv) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + + @test interval(emptyinterval(BareInterval{Float64}), def) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(emptyinterval(BareInterval{Float64}), dac) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(emptyinterval(BareInterval{Float64}), com) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(bareinterval(1.0,Inf), com) === interval(bareinterval(1.0,Inf), dac) + + @test interval(bareinterval(-Inf,3.0), com) === interval(bareinterval(-Inf,3.0), dac) + + @test interval(bareinterval(-Inf,Inf), com) === interval(bareinterval(-Inf,Inf), dac) + + @test_logs (:warn,) @test isnai(interval(emptyinterval(BareInterval{Float64}), ill)) + + @test_logs (:warn,) @test isnai(interval(bareinterval(-Inf,3.0), ill)) + + @test_logs (:warn,) @test isnai(interval(bareinterval(-1.0,3.0), ill)) + +end +@testset "minimal_decoration_part_test" begin + + @test decoration(nai()) === ill + + @test decoration(interval(emptyinterval(BareInterval{Float64}), trv)) === trv + + @test decoration(interval(bareinterval(-1.0,3.0), trv)) === trv + + @test decoration(interval(bareinterval(-1.0,3.0), def)) === def + + @test decoration(interval(bareinterval(-1.0,3.0), dac)) === dac + + @test decoration(interval(bareinterval(-1.0,3.0), com)) === com + +end diff --git a/test/ITF1788_tests/libieeep1788_elem.jl b/test/ITF1788_tests/libieeep1788_elem.jl new file mode 100644 index 000000000..d8ad7baa8 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_elem.jl @@ -0,0 +1,7876 @@ +@testset "minimal_pos_test" begin + + @test +(bareinterval(1.0,2.0)) === bareinterval(1.0,2.0) + + @test +(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) + + @test +(bareinterval(-Inf,-1.0)) === bareinterval(-Inf,-1.0) + + @test +(bareinterval(0.0,2.0)) === bareinterval(0.0,2.0) + + @test +(bareinterval(-0.0,2.0)) === bareinterval(0.0,2.0) + + @test +(bareinterval(-2.5,-0.0)) === bareinterval(-2.5,0.0) + + @test +(bareinterval(-2.5,0.0)) === bareinterval(-2.5,0.0) + + @test +(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test +(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + +end +@testset "minimal_pos_dec_test" begin + + @test isnai(+(nai())) + + @test +(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test +(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test +(interval(bareinterval(1.0, 2.0), com)) === interval(bareinterval(1.0, 2.0), com) + +end +@testset "minimal_neg_test" begin + + @test -(bareinterval(1.0,2.0)) === bareinterval(-2.0,-1.0) + + @test -(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(1.0,Inf)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(-Inf,1.0)) === bareinterval(-1.0,Inf) + + @test -(bareinterval(0.0,2.0)) === bareinterval(-2.0,0.0) + + @test -(bareinterval(-0.0,2.0)) === bareinterval(-2.0,0.0) + + @test -(bareinterval(-2.0,0.0)) === bareinterval(0.0,2.0) + + @test -(bareinterval(-2.0,-0.0)) === bareinterval(0.0,2.0) + + @test -(bareinterval(0.0,-0.0)) === bareinterval(0.0,0.0) + + @test -(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + +end +@testset "minimal_neg_dec_test" begin + + @test isnai(-(nai())) + + @test -(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test -(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test -(interval(bareinterval(1.0, 2.0), com)) === interval(bareinterval(-2.0, -1.0), com) + +end +@testset "minimal_add_test" begin + + @test +(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test +(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === bareinterval(4.0,6.0) + + @test +(bareinterval(1.0,2.0), bareinterval(3.0,Inf)) === bareinterval(4.0,Inf) + + @test +(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,Inf), bareinterval(3.0,4.0)) === bareinterval(4.0,Inf) + + @test +(bareinterval(1.0,Inf), bareinterval(3.0,Inf)) === bareinterval(4.0,Inf) + + @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(3.0,4.0)) === bareinterval(4.0,Inf) + + @test +(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test +(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)) === bareinterval(-3.0,4.0) + + @test +(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023) + + @test +(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1) + + @test +(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test +(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.E666666666657P+0,0x1.0CCCCCCCCCCC5P+1) + +end +@testset "minimal_add_dec_test" begin + + @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(6.0,9.0), com) + + @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(6.0,9.0), def) + + @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(6.0,Inf), dac) + + @test +(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-0.1, 5.0), com)) === interval(bareinterval(-Inf,7.0), dac) + + @test +(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test isnai(+(nai(), interval(bareinterval(1.0,2.0), trv))) + +end +@testset "minimal_sub_test" begin + + @test -(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test -(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === bareinterval(-3.0,-1.0) + + @test -(bareinterval(1.0,2.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(1.0,Inf), bareinterval(3.0,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(1.0,Inf), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-3.0,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-0x1.FFFFFFFFFFFFFp1023,4.0)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test -(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)) === bareinterval(-4.0,3.0) + + @test -(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.FFFFFFFFFFFFFp1023,3.0) + + @test -(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test -(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1) + + @test -(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.0CCCCCCCCCCC5P+1,0x1.E666666666657P+0) + +end +@testset "minimal_sub_dec_test" begin + + @test -(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(-6.0,-3.0), com) + + @test -(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(-6.0,-3.0), def) + + @test -(interval(bareinterval(-1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-Inf,-3.0), dac) + + @test -(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-1.0, 5.0), com)) === interval(bareinterval(-Inf,3.0), dac) + + @test -(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test isnai(-(nai(), interval(bareinterval(1.0,2.0), trv))) + +end +@testset "minimal_mul_test" begin + + @test *(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test *(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0)) === bareinterval(-Inf,-1.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(1.0, 3.0)) === bareinterval(1.0,Inf) + + @test *(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0)) === bareinterval(-Inf,-1.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0,Inf) + + @test *(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0)) === bareinterval(-Inf,5.0) + + @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0)) === bareinterval(-3.0,Inf) + + @test *(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0)) === bareinterval(-15.0,Inf) + + @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,9.0) + + @test *(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0)) === bareinterval(3.0,Inf) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,-3.0) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0)) === bareinterval(3.0,Inf) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf)) === bareinterval(-Inf,-3.0) + + @test *(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(1.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-5.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(1.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0)) === bareinterval(-25.0,-1.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0)) === bareinterval(-25.0,15.0) + + @test *(bareinterval(1.0,5.0), bareinterval(1.0, 3.0)) === bareinterval(1.0,15.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0)) === bareinterval(-Inf,-1.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0)) === bareinterval(-Inf,15.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-5.0, Inf)) === bareinterval(-25.0,Inf) + + @test *(bareinterval(1.0,5.0), bareinterval(1.0, Inf)) === bareinterval(1.0,Inf) + + @test *(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0)) === bareinterval(-25.0,5.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0)) === bareinterval(-25.0,15.0) + + @test *(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0)) === bareinterval(-30.0,50.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0)) === bareinterval(-10.0,50.0) + + @test *(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0)) === bareinterval(-10.0,10.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0)) === bareinterval(-3.0,15.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0)) === bareinterval(5.0,50.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0)) === bareinterval(-30.0,50.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0)) === bareinterval(-30.0,-5.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0)) === bareinterval(5.0,Inf) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0)) === bareinterval(-30.0,Inf) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf)) === bareinterval(-Inf,50.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf)) === bareinterval(-Inf,-5.0) + + @test *(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0, Inf)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,Inf) + + @test *(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,0x1.999999999998EP-3) + + @test *(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4), bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)) === bareinterval(-0x1.999999999998EP-3,0x1.999999999998EP-3) + + @test *(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4), bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,-0x1.47AE147AE147BP-7) + +end +@testset "minimal_mul_dec_test" begin + + @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(5.0,14.0), com) + + @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(5.0,14.0), def) + + @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(5.0,Inf), dac) + + @test *(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-1.0, 5.0), com)) === interval(bareinterval(-Inf,0x1.FFFFFFFFFFFFFp1023), dac) + + @test *(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test isnai(*(nai(), interval(bareinterval(1.0,2.0), trv))) + +end +@testset "minimal_div_test" begin + + @test /(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(0.1,1.0)) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-5.0, -3.0)) === bareinterval(3.0,10.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,-3.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, 0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, -0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-5.0, -3.0)) === bareinterval(-5.0,10.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,5.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, -3.0)) === bareinterval(-5.0,10.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,5.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,-3.0) + + @test /(bareinterval(15.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(3.0,10.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(15.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) + + @test /(bareinterval(15.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(3.0,Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(3.0,Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-5.0, -3.0)) === bareinterval(3.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,-3.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, 0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, -0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-5.0, -3.0)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-Inf,15.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, -3.0)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-Inf,15.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-Inf,15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-15.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-15.0,Inf), bareinterval(3.0,Inf)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-15.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,-3.0) + + @test /(bareinterval(15.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(3.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) + + @test /(bareinterval(0.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0,-1.0), bareinterval(-10.0, -3.0)) === bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1) + + @test /(bareinterval(-2.0,-1.0), bareinterval(0.0, 10.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test /(bareinterval(-2.0,-1.0), bareinterval(-0.0, 10.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test /(bareinterval(-1.0,2.0), bareinterval(10.0,Inf)) === bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-3) + + @test /(bareinterval(1.0,3.0), bareinterval(-Inf, -10.0)) === bareinterval(-0x1.3333333333334P-2,0.0) + + @test /(bareinterval(-Inf,-1.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,-0x1.5555555555555P-2) + +end +@testset "minimal_div_dec_test" begin + + @test /(interval(bareinterval(-2.0,-1.0), com), interval(bareinterval(-10.0, -3.0), com)) === interval(bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1), com) + + @test /(interval(bareinterval(-200.0,-1.0), com), interval(bareinterval(0x0.0000000000001p-1022, 10.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), dac) + + @test /(interval(bareinterval(-2.0,-1.0), com), interval(bareinterval(0.0, 10.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), trv) + + @test /(interval(bareinterval(1.0,3.0), def), interval(bareinterval(-Inf, -10.0), dac)) === interval(bareinterval(-0x1.3333333333334P-2,0.0), def) + + @test /(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test isnai(/(nai(), interval(bareinterval(1.0,2.0), trv))) + +end +@testset "minimal_recip_test" begin + + @test inv(bareinterval(-50.0, -10.0)) === bareinterval(-0x1.999999999999AP-4,-0x1.47AE147AE147AP-6) + + @test inv(bareinterval(10.0, 50.0)) === bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4) + + @test inv(bareinterval(-Inf, -10.0)) === bareinterval(-0x1.999999999999AP-4,0.0) + + @test inv(bareinterval(10.0,Inf)) === bareinterval(0.0,0x1.999999999999AP-4) + + @test inv(bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test inv(bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test inv(bareinterval(-10.0, 0.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test inv(bareinterval(-10.0, -0.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test inv(bareinterval(-10.0, 10.0)) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, 10.0)) === bareinterval(0x1.9999999999999P-4,Inf) + + @test inv(bareinterval(-0.0, 10.0)) === bareinterval(0x1.9999999999999P-4,Inf) + + @test inv(bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test inv(bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test inv(bareinterval(-Inf, 10.0)) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(-10.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test inv(bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test inv(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + +end +@testset "minimal_recip_dec_test" begin + + @test inv(interval(bareinterval(10.0, 50.0), com)) === interval(bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4), com) + + @test inv(interval(bareinterval(-Inf, -10.0), dac)) === interval(bareinterval(-0x1.999999999999AP-4,0.0), dac) + + @test inv(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, -0x0.0000000000001p-1022), def)) === interval(bareinterval(-Inf,-0x0.4P-1022), def) + + @test inv(interval(bareinterval(0.0,0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test inv(interval(bareinterval(-10.0, 0.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), trv) + + @test inv(interval(bareinterval(-10.0, Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test inv(interval(bareinterval(-0.0, Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test inv(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + +end +@testset "minimal_sqr_test" begin + + @test pown(emptyinterval(BareInterval{Float64}), 2) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0x0.0000000000001p-1022), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-1.0,1.0), 2) === bareinterval(0.0,1.0) + + @test pown(bareinterval(0.0,1.0), 2) === bareinterval(0.0,1.0) + + @test pown(bareinterval(-0.0,1.0), 2) === bareinterval(0.0,1.0) + + @test pown(bareinterval(-5.0,3.0), 2) === bareinterval(0.0,25.0) + + @test pown(bareinterval(-5.0,0.0), 2) === bareinterval(0.0,25.0) + + @test pown(bareinterval(-5.0,-0.0), 2) === bareinterval(0.0,25.0) + + @test pown(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), 2) === bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4), 2) === bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.FFFFFFFFFFFFP+0), 2) === bareinterval(0x1.FFFFFFFFFFFEP+1,0x1.FFFFFFFFFFFE1P+1) + +end +@testset "minimal_sqr_dec_test" begin + + @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x0.0000000000001p-1022), com), 2) === interval(bareinterval(0.0,Inf), dac) + + @test pown(interval(bareinterval(-1.0,1.0), def), 2) === interval(bareinterval(0.0,1.0), def) + + @test pown(interval(bareinterval(-5.0,3.0), com), 2) === interval(bareinterval(0.0,25.0), com) + + @test pown(interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), com), 2) === interval(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), com) + +end +@testset "minimal_sqrt_test" begin + + @test sqrt(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sqrt(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test sqrt(bareinterval(-Inf,-0x0.0000000000001p-1022)) === emptyinterval(BareInterval{Float64}) + + @test sqrt(bareinterval(-1.0,1.0)) === bareinterval(0.0,1.0) + + @test sqrt(bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test sqrt(bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test sqrt(bareinterval(-5.0,25.0)) === bareinterval(0.0,5.0) + + @test sqrt(bareinterval(0.0,25.0)) === bareinterval(0.0,5.0) + + @test sqrt(bareinterval(-0.0,25.0)) === bareinterval(0.0,5.0) + + @test sqrt(bareinterval(-5.0,Inf)) === bareinterval(0.0,Inf) + + @test sqrt(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.43D136248490FP-2,0x1.43D136248491P-2) + + @test sqrt(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)) === bareinterval(0.0,0x1.43D136248491P-2) + + @test sqrt(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)) === bareinterval(0x1.43D136248490FP-2,0x1.6A09E667F3BC7P+0) + +end +@testset "minimal_sqrt_dec_test" begin + + @test sqrt(interval(bareinterval(1.0,4.0), com)) === interval(bareinterval(1.0,2.0), com) + + @test sqrt(interval(bareinterval(-5.0,25.0), com)) === interval(bareinterval(0.0,5.0), trv) + + @test sqrt(interval(bareinterval(0.0,25.0), def)) === interval(bareinterval(0.0,5.0), def) + + @test sqrt(interval(bareinterval(-5.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + +end +@testset "minimal_fma_test" begin + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,7.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,11.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,7.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,12.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-3.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-3.0) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,7.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-5.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-17.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,11.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-1.0,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,7.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,17.0) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,52.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,2.0)) === bareinterval(-12.0,52.0) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-12.0,12.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-5.0,17.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(3.0,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,-3.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(3.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-3.0) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-5.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-17.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,Inf)) === bareinterval(-12.0,Inf) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-12.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-5.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(3.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(3.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.1,0.5), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.4CCCCCCCCCCCDP+1,0x1.999999999999AP+0) + + @test fma(bareinterval(-0.5,0.2), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,0x1.4CCCCCCCCCCCDP+1) + + @test fma(bareinterval(-0.5,-0.1), bareinterval(2.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,-0x1.999999999999AP-4) + + @test fma(bareinterval(-0.5,-0.1), bareinterval(-Inf, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,Inf) + +end +@testset "minimal_fma_dec_test" begin + + @test fma(interval(bareinterval(-0.5,-0.1), com), interval(bareinterval(-Inf, 3.0), dac), interval(bareinterval(-0.1,0.1), com)) === interval(bareinterval(-0x1.999999999999AP+0,Inf), dac) + + @test fma(interval(bareinterval(1.0,2.0), com), interval(bareinterval(1.0, 0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(1.0,Inf), dac) + + @test fma(interval(bareinterval(1.0,2.0), com), interval(bareinterval(1.0, 2.0), com), interval(bareinterval(2.0,5.0), com)) === interval(bareinterval(3.0,9.0), com) + +end +@testset "minimal_pown_test" begin + + @test pown(emptyinterval(BareInterval{Float64}), 0) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(0.0,0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-0.0,-0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(13.1,13.1), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-7451.145,-7451.145), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(0.0,Inf), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-0.0,Inf), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-Inf,0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-Inf,-0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-324.3,2.5), 0) === bareinterval(1.0,1.0) + + @test pown(emptyinterval(BareInterval{Float64}), 2) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), 2) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 2) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 2) === bareinterval(0x1.573851EB851EBP+7,0x1.573851EB851ECP+7) + + @test pown(bareinterval(-7451.145,-7451.145), 2) === bareinterval(0x1.A794A4E7CFAADP+25,0x1.A794A4E7CFAAEP+25) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 2) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 2) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(0.0,Inf), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), 2) === bareinterval(0.0,0x1.9AD27D70A3D72P+16) + + @test pown(bareinterval(0.01,2.33), 2) === bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2) + + @test pown(bareinterval(-1.9,-0.33), 2) === bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1) + + @test pown(emptyinterval(BareInterval{Float64}), 8) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), 8) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 8) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 8) === bareinterval(0x1.9D8FD495853F5P+29,0x1.9D8FD495853F6P+29) + + @test pown(bareinterval(-7451.145,-7451.145), 8) === bareinterval(0x1.DFB1BB622E70DP+102,0x1.DFB1BB622E70EP+102) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 8) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 8) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(0.0,Inf), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), 8) === bareinterval(0.0,0x1.A87587109655P+66) + + @test pown(bareinterval(0.01,2.33), 8) === bareinterval(0x1.CD2B297D889BDP-54,0x1.B253D9F33CE4DP+9) + + @test pown(bareinterval(-1.9,-0.33), 8) === bareinterval(0x1.26F1FCDD502A3P-13,0x1.53ABD7BFC4FC6P+7) + + @test pown(emptyinterval(BareInterval{Float64}), 1) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 1) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), 1) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 1) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 1) === bareinterval(13.1,13.1) + + @test pown(bareinterval(-7451.145,-7451.145), 1) === bareinterval(-7451.145,-7451.145) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 1) === bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 1) === bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(0.0,Inf), 1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), 1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), 1) === bareinterval(-324.3,2.5) + + @test pown(bareinterval(0.01,2.33), 1) === bareinterval(0.01,2.33) + + @test pown(bareinterval(-1.9,-0.33), 1) === bareinterval(-1.9,-0.33) + + @test pown(emptyinterval(BareInterval{Float64}), 3) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 3) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), 3) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 3) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 3) === bareinterval(0x1.1902E978D4FDEP+11,0x1.1902E978D4FDFP+11) + + @test pown(bareinterval(-7451.145,-7451.145), 3) === bareinterval(-0x1.81460637B9A3DP+38,-0x1.81460637B9A3CP+38) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 3) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 3) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(0.0,Inf), 3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), 3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), 3) === bareinterval(-0x1.0436D2F418938P+25,0x1.F4P+3) + + @test pown(bareinterval(0.01,2.33), 3) === bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3) + + @test pown(bareinterval(-1.9,-0.33), 3) === bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5) + + @test pown(emptyinterval(BareInterval{Float64}), 7) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 7) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), 7) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 7) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 7) === bareinterval(0x1.F91D1B185493BP+25,0x1.F91D1B185493CP+25) + + @test pown(bareinterval(-7451.145,-7451.145), 7) === bareinterval(-0x1.07B1DA32F9B59P+90,-0x1.07B1DA32F9B58P+90) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 7) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 7) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(0.0,Inf), 7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), 7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), 7) === bareinterval(-0x1.4F109959E6D7FP+58,0x1.312DP+9) + + @test pown(bareinterval(0.01,2.33), 7) === bareinterval(0x1.6849B86A12B9BP-47,0x1.74D0373C76313P+8) + + @test pown(bareinterval(-1.9,-0.33), 7) === bareinterval(-0x1.658C775099757P+6,-0x1.BEE30301BF47AP-12) + + @test pown(emptyinterval(BareInterval{Float64}), -2) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), -2) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -2) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -2) === bareinterval(0x1.7DE3A077D1568P-8,0x1.7DE3A077D1569P-8) + + @test pown(bareinterval(-7451.145,-7451.145), -2) === bareinterval(0x1.3570290CD6E14P-26,0x1.3570290CD6E15P-26) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -2) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -2) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(0.0,Inf), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), -2) === bareinterval(0x1.3F0C482C977C9P-17,Inf) + + @test pown(bareinterval(0.01,2.33), -2) === bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13) + + @test pown(bareinterval(-1.9,-0.33), -2) === bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3) + + @test pown(emptyinterval(BareInterval{Float64}), -8) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), -8) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -8) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -8) === bareinterval(0x1.3CEF39247CA6DP-30,0x1.3CEF39247CA6EP-30) + + @test pown(bareinterval(-7451.145,-7451.145), -8) === bareinterval(0x1.113D9EF0A99ACP-103,0x1.113D9EF0A99ADP-103) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -8) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -8) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(0.0,Inf), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), -8) === bareinterval(0x1.34CC3764D1E0CP-67,Inf) + + @test pown(bareinterval(0.01,2.33), -8) === bareinterval(0x1.2DC80DB11AB7CP-10,0x1.1C37937E08P+53) + + @test pown(bareinterval(-1.9,-0.33), -8) === bareinterval(0x1.81E104E61630DP-8,0x1.BC64F21560E34P+12) + + @test pown(emptyinterval(BareInterval{Float64}), -1) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -1) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), -1) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -1) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -1) === bareinterval(0x1.38ABF82EE6986P-4,0x1.38ABF82EE6987P-4) + + @test pown(bareinterval(-7451.145,-7451.145), -1) === bareinterval(-0x1.197422C9048BFP-13,-0x1.197422C9048BEP-13) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -1) === bareinterval(0x0.4P-1022,0x0.4000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -1) === bareinterval(-0x0.4000000000001P-1022,-0x0.4P-1022) + + @test pown(bareinterval(0.0,Inf), -1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), -1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), -1) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.01,2.33), -1) === bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6) + + @test pown(bareinterval(-1.9,-0.33), -1) === bareinterval(-0x1.83E0F83E0F83EP+1,-0x1.0D79435E50D79P-1) + + @test pown(emptyinterval(BareInterval{Float64}), -3) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -3) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), -3) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -3) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -3) === bareinterval(0x1.D26DF4D8B1831P-12,0x1.D26DF4D8B1832P-12) + + @test pown(bareinterval(-7451.145,-7451.145), -3) === bareinterval(-0x1.54347DED91B19P-39,-0x1.54347DED91B18P-39) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -3) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -3) === bareinterval(-0x0.0000000000001P-1022,-0x0P+0) + + @test pown(bareinterval(0.0,Inf), -3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), -3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), -3) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.01,2.33), -3) === bareinterval(0x1.43CFBA61AACABP-4,0x1.E848P+19) + + @test pown(bareinterval(-1.9,-0.33), -3) === bareinterval(-0x1.BD393CE9E8E7CP+4,-0x1.2A95F6F7C066CP-3) + + @test pown(emptyinterval(BareInterval{Float64}), -7) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -7) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), -7) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -7) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -7) === bareinterval(0x1.037D76C912DBCP-26,0x1.037D76C912DBDP-26) + + @test pown(bareinterval(-7451.145,-7451.145), -7) === bareinterval(-0x1.F10F41FB8858FP-91,-0x1.F10F41FB8858EP-91) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -7) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -7) === bareinterval(-0x0.0000000000001P-1022,-0x0P+0) + + @test pown(bareinterval(0.0,Inf), -7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), -7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), -7) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.01,2.33), -7) === bareinterval(0x1.5F934D64162A9P-9,0x1.6BCC41E9P+46) + + @test pown(bareinterval(-1.9,-0.33), -7) === bareinterval(-0x1.254CDD3711DDBP+11,-0x1.6E95C4A761E19P-7) + +end +@testset "minimal_pown_dec_test" begin + + @test pown(interval(bareinterval(-5.0,10.0), com), 0) === interval(bareinterval(1.0,1.0), com) + + @test pown(interval(bareinterval(-Inf,15.0), dac), 0) === interval(bareinterval(1.0,1.0), dac) + + @test pown(interval(bareinterval(-3.0,5.0), def), 2) === interval(bareinterval(0.0,25.0), def) + + @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), 2) === interval(bareinterval(0.0,Inf), dac) + + @test pown(interval(bareinterval(-3.0,5.0), dac), 3) === interval(bareinterval(-27.0,125.0), dac) + + @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), 3) === interval(bareinterval(-Inf, 8.0), dac) + + @test pown(interval(bareinterval(3.0,5.0), com), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), com) + + @test pown(interval(bareinterval(-5.0,-3.0), def), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), def) + + @test pown(interval(bareinterval(-5.0,3.0), com), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,Inf), trv) + + @test pown(interval(bareinterval(3.0,5.0), dac), -3) === interval(bareinterval(0x1.0624DD2F1A9FBP-7 ,0x1.2F684BDA12F69P-5), dac) + + @test pown(interval(bareinterval(-3.0,5.0), com), -3) === interval(entireinterval(BareInterval{Float64}), trv) + +end +@testset "minimal_pow_test" begin + + @test ^(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-3.0,5.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-5.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(emptyinterval(BareInterval{Float64}), bareinterval(5.0,5.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.1,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0x1P-1) + + @test ^(bareinterval(0.1,0.5), bareinterval(2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(0.1,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,0.1)) === bareinterval(0x1.96B230BCDC434P-1,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,1.0)) === bareinterval(0x1.999999999999AP-4,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,Inf) + + @test ^(bareinterval(0.1,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,0x1.4P+3) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(0.1,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.1,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(1.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,0.1)) === bareinterval(0x1.96B230BCDC434P-1,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,1.0)) === bareinterval(0x1.999999999999AP-4,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,Inf) + + @test ^(bareinterval(0.1,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,0x1.4P+3) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.5,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.0,1.0)) === bareinterval(0.5,1.5) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.5,1.5) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.1,1.0)) === bareinterval(0.5,1.5) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(1.0,1.0)) === bareinterval(0.5,1.5) + + @test ^(bareinterval(0.5,1.5), bareinterval(1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,0x1.125FBEE250665P+0) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1P-1,0x1.8P+0) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1P-1,0x1P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.125FBEE250665P+0) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(0.5,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.5,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.5,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.1,1.0)) === bareinterval(0.5,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(1.0,1.0)) === bareinterval(0.5,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,0x1P+1) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,0x1P+1) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,0x1.125FBEE250665P+0) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,0x1P+1) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,0x1P+1) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test ^(bareinterval(1.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.1,0.1)) === bareinterval(1.0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.1,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.1,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(0.1,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(1.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(1.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(2.5,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(2.5,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.5555555555555P-1,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,0x1.8P+0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.0,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.1,0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.1,1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.1,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(0.1,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(1.0,1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(1.0,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(2.5,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(2.5,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.1,0.1)) === bareinterval(0x1.02739C65D58BFP+0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.1,1.0)) === bareinterval(0x1.02739C65D58BFP+0,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.1,2.5)) === bareinterval(0x1.02739C65D58BFP+0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(0.1,Inf)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(1.0,1.0)) === bareinterval(0x1.199999999999AP+0,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(1.0,2.5)) === bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(1.0,Inf)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(2.5,2.5)) === bareinterval(0x1.44E1080833B25P+0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(2.5,Inf)) === bareinterval(0x1.44E1080833B25P+0,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.5555555555555P-1,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,0x1.8P+0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(1.1,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,0x1.D1745D1745D17P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.D1745D1745D17P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.9372D999784C8P-1) + + @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) + + @test ^(bareinterval(1.1,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.0,1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.0,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.1,0.1)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.1,1.0)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.1,2.5)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(0.1,Inf)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(1.0,1.0)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(1.0,2.5)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(1.0,Inf)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(2.5,2.5)) === bareinterval(0x1.44E1080833B25P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(2.5,Inf)) === bareinterval(0x1.44E1080833B25P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) + + @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) + + @test ^(bareinterval(0.0,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.0,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(0.0,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(0.0,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(0.0,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(0.0,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(0.0,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(0.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(0.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.0,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(0.0,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.0,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(0.0,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.0,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(-0.0,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(-0.0,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(-0.0,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(-0.0,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(-0.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.0,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.0,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.0,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test ^(bareinterval(-0.1,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(-0.1,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(-0.1,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) + + @test ^(bareinterval(-0.1,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(-0.1,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test ^(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test ^(bareinterval(-0.1,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) + + @test ^(bareinterval(-0.1,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.1,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test ^(bareinterval(-0.1,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) + + @test ^(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(1.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(2.5,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(2.5,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,Inf)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + +end +@testset "minimal_pow_dec_test" begin + + @test ^(interval(bareinterval(0.1,0.5), com), interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(0x1.999999999999AP-4,1.0), com) + + @test ^(interval(bareinterval(0.1,0.5), com), interval(bareinterval(0.1,0.1), def)) === interval(bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1), def) + + @test ^(interval(bareinterval(0.1,0.5), trv), interval(bareinterval(-2.5,2.5), dac)) === interval(bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8), trv) + + @test ^(interval(bareinterval(0.1,0.5), com), interval(bareinterval(-2.5,Inf), dac)) === interval(bareinterval(0.0,0x1.3C3A4EDFA9758P+8), dac) + + @test ^(interval(bareinterval(0.1,0.5), trv), interval(bareinterval(-Inf,0.1), dac)) === interval(bareinterval(0x1.96B230BCDC434P-1,Inf), trv) + + @test ^(interval(bareinterval(0.1,1.0), com), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0x1.9E7C6E43390B7P-9,1.0), com) + + @test ^(interval(bareinterval(0.1,1.0), def), interval(bareinterval(1.0,1.0), dac)) === interval(bareinterval(0x1.999999999999AP-4,1.0), def) + + @test ^(interval(bareinterval(0.1,1.0), trv), interval(bareinterval(-2.5,1.0), def)) === interval(bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8), trv) + + @test ^(interval(bareinterval(0.5,1.5), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0), dac) + + @test ^(interval(bareinterval(0.5,1.5), def), interval(bareinterval(-2.5,0.1), trv)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), trv) + + @test ^(interval(bareinterval(0.5,1.5), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), com) + + @test ^(interval(bareinterval(0.5,Inf), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0x1.DDB680117AB12P-1,Inf), dac) + + @test ^(interval(bareinterval(0.5,Inf), def), interval(bareinterval(-2.5,-0.0), com)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP+2), def) + + @test ^(interval(bareinterval(1.0,1.5), com), interval(bareinterval(-0.1,0.1), def)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0), def) + + @test ^(interval(bareinterval(1.0,1.5), trv), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,1.0), trv) + + @test ^(interval(bareinterval(1.0,Inf), dac), interval(bareinterval(1.0,1.0), dac)) === interval(bareinterval(1.0,Inf), dac) + + @test ^(interval(bareinterval(1.0,Inf), def), interval(bareinterval(-1.0,-0.0), dac)) === interval(bareinterval(0x0P+0,1.0), def) + + @test ^(interval(bareinterval(1.1,1.5), def), interval(bareinterval(1.0,2.5), com)) === interval(bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1), def) + + @test ^(interval(bareinterval(1.1,1.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1), com) + + @test ^(interval(bareinterval(1.1,Inf), dac), interval(bareinterval(0.1,Inf), dac)) === interval(bareinterval(0x1.02739C65D58BFP+0,Inf), dac) + + @test ^(interval(bareinterval(1.1,Inf), def), interval(bareinterval(-2.5,Inf), dac)) === interval(bareinterval(0x0P+0,Inf), def) + + @test ^(interval(bareinterval(1.1,Inf), trv), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0x0P+0,0x1.D1745D1745D17P-1), trv) + + @test ^(interval(bareinterval(0.0,0.5), com), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), com) + + @test ^(interval(bareinterval(0.0,0.5), com), interval(bareinterval(2.5,Inf), dac)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), dac) + + @test ^(interval(bareinterval(0.0,0.5), com), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.0), com), interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(1.0,1.0), trv) + + @test ^(interval(bareinterval(0.0,1.0), def), interval(bareinterval(0.0,2.5), dac)) === interval(bareinterval(0.0,1.0), trv) + + @test ^(interval(bareinterval(0.0,1.0), dac), interval(bareinterval(1.0,2.5), com)) === interval(bareinterval(0.0,1.0), dac) + + @test ^(interval(bareinterval(0.0,1.0), com), interval(bareinterval(-2.5,0.1), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.0), def), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.0), dac), interval(bareinterval(-0.1,0.0), com)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.0), com), interval(bareinterval(-Inf,0.0), dac)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.0), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.5), com), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) + + @test ^(interval(bareinterval(0.0,1.5), def), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), def) + + @test ^(interval(bareinterval(0.0,1.5), dac), interval(bareinterval(-1.0,0.0), com)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) + + @test ^(interval(bareinterval(0.0,1.5), com), interval(bareinterval(-2.5,-2.5), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test ^(interval(bareinterval(0.0,Inf), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0.0,Inf), dac) + + @test ^(interval(bareinterval(0.0,Inf), def), interval(bareinterval(-1.0,1.0), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,Inf), trv), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,Inf), dac), interval(bareinterval(-2.5,-2.5), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,0.5), com), interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,1.0), trv) + + @test ^(interval(bareinterval(-0.0,0.5), def), interval(bareinterval(0.1,Inf), def)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), def) + + @test ^(interval(bareinterval(-0.0,0.5), dac), interval(bareinterval(2.5,2.5), com)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), dac) + + @test ^(interval(bareinterval(-0.0,0.5), trv), interval(bareinterval(-2.5,-0.0), dac)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,0.5), com), interval(bareinterval(-Inf,-0.1), def)) === interval(bareinterval(0x1.125FBEE250664P+0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,0.5), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.0), com), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,1.0), dac) + + @test ^(interval(bareinterval(-0.0,1.0), dac), interval(bareinterval(-1.0,Inf), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.0), com), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.0), def), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.0), dac), interval(bareinterval(-Inf,-2.5), def)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.5), com), interval(bareinterval(0.1,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), dac) + + @test ^(interval(bareinterval(-0.0,1.5), def), interval(bareinterval(-1.0,0.0), trv)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.5), dac), interval(bareinterval(-2.5,-0.1), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.5), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test ^(interval(bareinterval(-0.0,1.5), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,Inf), dac), interval(bareinterval(-0.1,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,Inf), def), interval(bareinterval(-2.5,-0.0), com)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,Inf), trv), interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,Inf), dac), interval(bareinterval(-Inf,-0.0), trv)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.0,Inf), def), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,0.5), def), interval(bareinterval(0.1,Inf), dac)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), trv) + + @test ^(interval(bareinterval(-0.1,0.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.125FBEE250664P+0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,0.5), dac), interval(bareinterval(-Inf,-2.5), def)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.0), com), interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(1.0,1.0), trv) + + @test ^(interval(bareinterval(-0.1,1.0), dac), interval(bareinterval(-Inf,2.5), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.0), def), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.0), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.0), trv), interval(bareinterval(-Inf,-2.5), trv)) === interval(bareinterval(1.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.5), trv), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) + + @test ^(interval(bareinterval(-0.1,1.5), com), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) + + @test ^(interval(bareinterval(-0.1,1.5), dac), interval(bareinterval(-1.0,0.0), trv)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,Inf), trv) + + @test ^(interval(bareinterval(-0.1,1.5), def), interval(bareinterval(-2.5,-2.5), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test ^(interval(bareinterval(-0.1,Inf), dac), interval(bareinterval(-0.1,2.5), com)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,Inf), def), interval(bareinterval(-2.5,0.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(-0.1,Inf), dac), interval(bareinterval(-2.5,-2.5), trv)) === interval(bareinterval(0.0,Inf), trv) + + @test ^(interval(bareinterval(0.0,0.0), com), interval(bareinterval(1.0,Inf), dac)) === interval(bareinterval(0.0,0.0), dac) + + @test ^(interval(bareinterval(0.0,0.0), com), interval(bareinterval(-2.5,0.1), com)) === interval(bareinterval(0.0,0.0), trv) + + @test ^(interval(bareinterval(0.0,0.0), dac), interval(bareinterval(-1.0,0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test ^(interval(bareinterval(-1.0,-0.1), com), interval(bareinterval(-0.1,1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test ^(interval(bareinterval(-1.0,-0.1), dac), interval(bareinterval(-0.1,2.5), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test ^(interval(bareinterval(-1.0,-0.1), def), interval(bareinterval(-0.1,Inf), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + +end +@testset "minimal_exp_test" begin + + @test exp(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test exp(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) + + @test exp(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) + + @test exp(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test exp(bareinterval(-Inf,0x1.62E42FEFA39FP+9)) === bareinterval(0.0,Inf) + + @test exp(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9)) === bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf) + + @test exp(bareinterval(0.0,0x1.62E42FEFA39EP+9)) === bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0.0,0x1.62E42FEFA39EP+9)) === bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+9,0x1.62E42FEFA39EP+9)) === bareinterval(0x0.FFFFFFFFFFE7BP-1022,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0x1.62E42FEFA39EP+9)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,-0.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,1.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.5BF0A8B14576AP+1) + + @test exp(bareinterval(1.0,5.0)) === bareinterval(0x1.5BF0A8B145769P+1,0x1.28D389970339P+7) + + @test exp(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.2797F0A337A5FP-5,0x1.86091CC9095C5P+2) + + @test exp(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.1337E9E45812AP+1, 0x1.805A5C88021B6P+142) + + @test exp(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.EF461A783114CP+16,0x1.691D36C6B008CP+37) + +end +@testset "minimal_exp_dec_test" begin + + @test exp(interval(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9), com)) === interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), dac) + + @test exp(interval(bareinterval(0.0,0x1.62E42FEFA39EP+9), def)) === interval(bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023), def) + +end +@testset "minimal_exp2_test" begin + + @test exp2(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test exp2(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) + + @test exp2(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) + + @test exp2(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp2(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp2(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test exp2(bareinterval(-Inf,1024.0)) === bareinterval(0.0,Inf) + + @test exp2(bareinterval(1024.0,1024.0)) === bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf) + + @test exp2(bareinterval(0.0,1023.0)) === bareinterval(1.0,0x1P+1023) + + @test exp2(bareinterval(-0.0,1023.0)) === bareinterval(1.0,0x1P+1023) + + @test exp2(bareinterval(-1022.0,1023.0)) === bareinterval(0x1P-1022,0x1P+1023) + + @test exp2(bareinterval(-1022.0,0.0)) === bareinterval(0x1P-1022,1.0) + + @test exp2(bareinterval(-1022.0,-0.0)) === bareinterval(0x1P-1022,1.0) + + @test exp2(bareinterval(-1022.0,1.0)) === bareinterval(0x1P-1022,2.0) + + @test exp2(bareinterval(1.0,5.0)) === bareinterval(2.0,32.0) + + @test exp2(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.9999999999998P-4,0x1.C000000000001P+1) + + @test exp2(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98) + + @test exp2(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.AEA0000721857P+11,0x1.FCA0555555559P+25) + +end +@testset "minimal_exp2_dec_test" begin + + @test exp2(interval(bareinterval(1024.0,1024.0), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf), dac) + + @test exp2(interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), def)) === interval(bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98), def) + +end +@testset "minimal_exp10_test" begin + + @test exp10(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test exp10(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) + + @test exp10(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) + + @test exp10(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp10(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp10(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test exp10(bareinterval(-Inf,0x1.34413509F79FFP+8)) === bareinterval(0.0,Inf) + + @test exp10(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8)) === bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf) + + @test exp10(bareinterval(0.0,0x1.34413509F79FEP+8)) === bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0.0,0x1.34413509F79FEP+8)) === bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0x1.33A7146F72A42P+8,0x1.34413509F79FEP+8)) === bareinterval(0x0.FFFFFFFFFFFE3P-1022,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0x1.22P+7,0x1.34413509F79FEP+8)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0x1.22P+7,0.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0) + + @test exp10(bareinterval(-0x1.22P+7,-0.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0) + + @test exp10(bareinterval(-0x1.22P+7,1.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,10.0) + + @test exp10(bareinterval(1.0,5.0)) === bareinterval(10.0,100000.0) + + @test exp10(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.F3A8254311F9AP-12,0x1.00B18AD5B7D56P+6) + + @test exp10(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328) + + @test exp10(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.0608D2279A811P+39,0x1.43AF5D4271CB8P+86) + +end +@testset "minimal_exp10_dec_test" begin + + @test exp10(interval(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8), com)) === interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), dac) + + @test exp10(interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), def)) === interval(bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328), def) + +end +@testset "minimal_log_test" begin + + @test log(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test log(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test log(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test log(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test log(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test log(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.62E42FEFA39FP+9) + + @test log(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.62E42FEFA39FP+9) + + @test log(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1.62E42FEFA39FP+9) + + @test log(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.74385446D71C4p9, +0x1.62E42FEFA39Fp9) + + @test log(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-0x1.74385446D71C4p9,0.0) + + @test log(bareinterval(0x1.5BF0A8B145769P+1,0x1.5BF0A8B145769P+1)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test log(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1)) === bareinterval(0x1P+0,0x1.0000000000001P+0) + + @test log(bareinterval(0x0.0000000000001p-1022,0x1.5BF0A8B14576AP+1)) === bareinterval(-0x1.74385446D71C4p9,0x1.0000000000001P+0) + + @test log(bareinterval(0x1.5BF0A8B145769P+1,32.0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1.BB9D3BEB8C86CP+1) + + @test log(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1.26BB1BBB55516P+1,0x1.40B512EB53D6P+0) + + @test log(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.0FAE81914A99P-1,0x1.120627F6AE7F1P+6) + + @test log(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.04A1363DB1E63P+3,0x1.203E52C0256B5P+4) + +end +@testset "minimal_log_dec_test" begin + + @test log(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.74385446D71C4p9,0x1.62E42FEFA39FP+9), com) + + @test log(interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(-Inf,0.0), trv) + + @test log(interval(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1), def)) === interval(bareinterval(0x1P+0,0x1.0000000000001P+0), def) + +end +@testset "minimal_log2_test" begin + + @test log2(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test log2(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test log2(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test log2(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log2(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log2(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test log2(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log2(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log2(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test log2(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,1024.0) + + @test log2(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,1024.0) + + @test log2(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,1024.0) + + @test log2(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-1074.0,1024.0) + + @test log2(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-1074.0,0.0) + + @test log2(bareinterval(0x0.0000000000001p-1022,2.0)) === bareinterval(-1074.0,1.0) + + @test log2(bareinterval(2.0,32.0)) === bareinterval(1.0,5.0) + + @test log2(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0) + + @test log2(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6) + + @test log2(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4) + +end +@testset "minimal_log2_dec_test" begin + + @test log2(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-1074.0,1024.0), com) + + @test log2(interval(bareinterval(0x0.0000000000001p-1022,Inf), dac)) === interval(bareinterval(-1074.0,Inf), dac) + + @test log2(interval(bareinterval(2.0,32.0), def)) === interval(bareinterval(1.0,5.0), def) + + @test log2(interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-Inf,1024.0), trv) + +end +@testset "minimal_log10_test" begin + + @test log10(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test log10(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test log10(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test log10(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log10(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log10(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test log10(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log10(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log10(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test log10(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.34413509F79FFP+8) + + @test log10(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.34413509F79FFP+8) + + @test log10(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1.34413509F79FFP+8) + + @test log10(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.434E6420F4374p+8, +0x1.34413509F79FFp+8) + + @test log10(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-0x1.434E6420F4374p+8 ,0.0) + + @test log10(bareinterval(0x0.0000000000001p-1022,10.0)) === bareinterval(-0x1.434E6420F4374p+8 ,1.0) + + @test log10(bareinterval(10.0,100000.0)) === bareinterval(1.0,5.0) + + @test log10(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1P+0,0x1.1690163290F4P-1) + + @test log10(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test log10(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.D7F59AA5BECB9P-3,0x1.DC074D84E5AABP+4) + + @test log10(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.C4C29DD829191P+1,0x1.F4BAEBBA4FA4P+2) + +end +@testset "minimal_log10_dec_test" begin + + @test log10(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.434E6420F4374p+8,0x1.34413509F79FFP+8), com) + + @test log10(interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), dac)) === interval(bareinterval(-Inf,0x1.34413509F79FFP+8), trv) + +end +@testset "minimal_sin_test" begin + + @test sin(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sin(bareinterval(0.0,Inf)) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(-0.0,Inf)) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(-Inf,0.0)) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,1.0) + + @test sin(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test sin(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test sin(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(0.0,0x1.921FB54442D19P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D19P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53) + + @test sin(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52) + + @test sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1.1A62633145C07P-53) + + @test sin(bareinterval(0.0,0x1.921FB54442D18P+1)) === bareinterval(0.0,1.0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D18P+1)) === bareinterval(0.0,1.0) + + @test sin(bareinterval(0.0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,1.0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,1.0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,-0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,-0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)) === bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,0.0)) === bareinterval(-1.0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0.0)) === bareinterval(-1.0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,0.0)) === bareinterval(-1.0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0.0)) === bareinterval(-1.0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.1A62633145C06P-53) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,-0x1.1A62633145C06P-53) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0.7,0.1)) === bareinterval(-0x1.49D6E694619B9P-1,0x1.98EAECB8BCB2DP-4) + + @test sin(bareinterval(1.0,2.0)) === bareinterval(0x1.AED548F090CEEP-1,1.0) + + @test sin(bareinterval(-3.2,-2.9)) === bareinterval(-0x1.E9FB8D64830E3P-3,0x1.DE33739E82D33P-5) + + @test sin(bareinterval(2.0,3.0)) === bareinterval(0x1.210386DB6D55BP-3,0x1.D18F6EAD1B446P-1) + +end +@testset "minimal_sin_dec_test" begin + + @test sin(interval(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0), def)) === interval(bareinterval(-0x1P+0,-0x1.1A62633145C06P-53), def) + + @test sin(interval(bareinterval(-Inf,-0.0), trv)) === interval(bareinterval(-1.0,1.0), trv) + + @test sin(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) + +end +@testset "minimal_cos_test" begin + + @test cos(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cos(bareinterval(0.0,Inf)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0.0,Inf)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-Inf,0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,1.0) + + @test cos(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test cos(bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(0.0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(0.0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(0.0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,0.0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,-0.0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,0.0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,-0.0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0.7,0.1)) === bareinterval(0x1.87996529F9D92P-1,1.0) + + @test cos(bareinterval(1.0,2.0)) === bareinterval(-0x1.AA22657537205P-2,0x1.14A280FB5068CP-1) + + @test cos(bareinterval(-3.2,-2.9)) === bareinterval(-1.0,-0x1.F1216DBA340C8P-1) + + @test cos(bareinterval(2.0,3.0)) === bareinterval(-0x1.FAE04BE85E5D3P-1,-0x1.AA22657537204P-2) + +end +@testset "minimal_cos_dec_test" begin + + @test cos(interval(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0), trv)) === interval(bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54), trv) + + @test cos(interval(bareinterval(-Inf,-0.0), def)) === interval(bareinterval(-1.0,1.0), def) + + @test cos(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) + +end +@testset "minimal_tan_test" begin + + @test tan(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf,0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf,-0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test tan(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52) + + @test tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53) + + @test tan(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52) + + @test tan(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(0.0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-51,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-51,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-52,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-52,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4)) === bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4) + + @test tan(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12)) === bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0) + + @test tan(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0)) === bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0) + +end +@testset "minimal_tan_dec_test" begin + + @test tan(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-Inf,0.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-Inf,-0.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test tan(interval(bareinterval(-0.0,-0.0), def)) === interval(bareinterval(0.0,0.0), def) + + @test tan(interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53), com) + + @test tan(interval(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), def)) === interval(bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52), def) + + @test tan(interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1), trv)) === interval(bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53), trv) + + @test tan(interval(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1), com)) === interval(bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52), com) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D18P+0), dac)) === interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), dac) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), com) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D19P+0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D18P+1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D18P+1), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D19P+1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-51,0x1.921FB54442D18P+1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-51,0x1.921FB54442D19P+1), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-52,0x1.921FB54442D18P+1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-52,0x1.921FB54442D19P+1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53), com) + + @test tan(interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4), com)) === interval(bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4), com) + + @test tan(interval(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12), dac)) === interval(bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0), dac) + + @test tan(interval(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0), trv)) === interval(bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0), trv) + +end +@testset "minimal_asin_test" begin + + @test asin(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test asin(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-Inf,0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test asin(bareinterval(-Inf,-0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test asin(entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-1.0,1.0)) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-Inf,-1.0)) === bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0) + + @test asin(bareinterval(1.0,Inf)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-1.0,-1.0)) === bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0) + + @test asin(bareinterval(1.0,1.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test asin(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test asin(bareinterval(-Inf,-0x1.0000000000001P+0)) === emptyinterval(BareInterval{Float64}) + + @test asin(bareinterval(0x1.0000000000001P+0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test asin(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.9A49276037885P-4,0x1.9A49276037885P-4) + + @test asin(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0) + + @test asin(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(-0x1.921FB50442D19P+0,0x1.921FB50442D19P+0) + +end +@testset "minimal_asin_dec_test" begin + + @test asin(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test asin(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0,0.0), trv) + + @test asin(interval(bareinterval(-1.0,1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), com) + + @test asin(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), trv) + + @test asin(interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), def)) === interval(bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0), def) + +end +@testset "minimal_acos_test" begin + + @test acos(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test acos(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-Inf,0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1) + + @test acos(bareinterval(-Inf,-0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1) + + @test acos(entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test acos(bareinterval(-1.0,1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test acos(bareinterval(-Inf,-1.0)) === bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1) + + @test acos(bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test acos(bareinterval(-1.0,-1.0)) === bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1) + + @test acos(bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test acos(bareinterval(0.0,0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0.0,-0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-Inf,-0x1.0000000000001P+0)) === emptyinterval(BareInterval{Float64}) + + @test acos(bareinterval(0x1.0000000000001P+0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test acos(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.787B22CE3F59P+0,0x1.ABC447BA464A1P+0) + + @test acos(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1P-26,0x1.E837B2FD13428P+0) + + @test acos(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1P-26,0x1.921FB52442D19P+1) + +end +@testset "minimal_acos_dec_test" begin + + @test acos(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test acos(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1), trv) + + @test acos(interval(bareinterval(-1.0,1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), com) + + @test acos(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test acos(interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), def)) === interval(bareinterval(0x1P-26,0x1.E837B2FD13428P+0), def) + +end +@testset "minimal_atan_test" begin + + @test atan(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-Inf,0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test atan(bareinterval(-Inf,-0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test atan(entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(1.0,0x1.4C2463567C5ACP+25)) === bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0) + + @test atan(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0) + +end +@testset "minimal_atan_dec_test" begin + + @test atan(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), dac) + + @test atan(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0,0.0), def) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), dac) + + @test atan(interval(bareinterval(1.0,0x1.4C2463567C5ACP+25), trv)) === interval(bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0), trv) + + @test atan(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0), com) + +end +@testset "minimal_atan2_test" begin + + @test atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-2.0, -0.1), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, -0.1), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1,0.0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0.0) + + @test atan(bareinterval(-2.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0.0) + + @test atan(bareinterval(-2.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0) + + @test atan(bareinterval(-0.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0.0, 0x1.789BD2C160054P+0) + + @test atan(bareinterval(0.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0x1.789BD2C160054P+0) + + @test atan(bareinterval(0.1, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.1, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0) + +end +@testset "minimal_atan2_dec_test" begin + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, -0.1), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, 1.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, 1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.1, 1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), dac) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), def), interval(bareinterval(0.0, 0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), def), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), def), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(-0.0, 0.0), trv), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), def), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), trv), interval(bareinterval(-0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), dac), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), dac), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(0.0, 1.0), trv)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(0.1, 1.0), def)) === interval(bareinterval(0.0,0.0), def) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-0.0, 0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), def), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), def), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1,0.0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), trv), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), dac) + + @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(bareinterval(-0.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), def), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), trv), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), def), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), def) + + @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), dac) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4), com) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), dac), interval(bareinterval(0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-2.0, 0.0), dac), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), trv), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0.0), com) + + @test atan(interval(bareinterval(-2.0, -0.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), trv), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0.0), com) + + @test atan(interval(bareinterval(-2.0, 1.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), def), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(-0.0, -0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-2.0, 1.0), def), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0), com) + + @test atan(interval(bareinterval(-0.0, 1.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), com), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), com), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0, 0x1.789BD2C160054P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), trv), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), def), interval(bareinterval(-0.0, -0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.0, 1.0), def), interval(bareinterval(-2.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(0.0, 1.0), trv)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0x1.789BD2C160054P+0), com) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), trv), interval(bareinterval(-0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.1, 1.0), trv), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, -0.1), trv)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1), trv) + + @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), dac) + + @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), dac) + + @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(-2.0, 1.0), dac)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1), def) + + @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(0.1, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0), def) + +end +@testset "minimal_sinh_test" begin + + @test sinh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sinh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test sinh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test sinh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) + + @test sinh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) + + @test sinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test sinh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test sinh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test sinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432) + + @test sinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-Inf,-0x1.53045B4F849DEP+815) + + @test sinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.55ECFE1B2B215P+0,0x1.3BF72EA61AF1BP+2) + +end +@testset "minimal_sinh_dec_test" begin + + @test sinh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test sinh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + + @test sinh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-Inf,0.0), def) + + @test sinh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432), com) + + @test sinh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(-Inf,-0x1.53045B4F849DEP+815), dac) + +end +@testset "minimal_cosh_test" begin + + @test cosh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cosh(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test cosh(entireinterval(BareInterval{Float64})) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test cosh(bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test cosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432) + + @test cosh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(0x1.53045B4F849DEP+815,Inf) + + @test cosh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(1.0,0x1.4261D2B7D6181P+2) + +end +@testset "minimal_cosh_dec_test" begin + + @test cosh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(1.0,Inf), dac) + + @test cosh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(1.0,Inf), def) + + @test cosh(interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(1.0,Inf), def) + + @test cosh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), def)) === interval(bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), def) + + @test cosh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(0x1.53045B4F849DEP+815,Inf), dac) + +end +@testset "minimal_tanh_test" begin + + @test tanh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test tanh(bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test tanh(bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test tanh(bareinterval(-Inf,0.0)) === bareinterval(-1.0,0.0) + + @test tanh(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,0.0) + + @test tanh(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + + @test tanh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test tanh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test tanh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.85EFAB514F394P-1,0x1P+0) + + @test tanh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test tanh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.99DB01FDE2406P-1,0x1.F5CF31E1C8103P-1) + +end +@testset "minimal_tanh_dec_test" begin + + @test tanh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,1.0), dac) + + @test tanh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-1.0,0.0), def) + + @test tanh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) + + @test tanh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.85EFAB514F394P-1,0x1P+0), com) + + @test tanh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), trv)) === interval(bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), trv) + +end +@testset "minimal_asinh_test" begin + + @test asinh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test asinh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test asinh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test asinh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) + + @test asinh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) + + @test asinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test asinh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test asinh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test asinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2) + + @test asinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2) + + @test asinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.E693DF6EDF1E7P-1,0x1.91FDC64DE0E51P+0) + +end +@testset "minimal_asinh_dec_test" begin + + @test asinh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + + @test asinh(interval(bareinterval(-Inf,0.0), trv)) === interval(bareinterval(-Inf,0.0), trv) + + @test asinh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test asinh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2), com) + + @test asinh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), def)) === interval(bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2), def) + +end +@testset "minimal_acosh_test" begin + + @test acosh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test acosh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test acosh(bareinterval(-Inf,0x1.FFFFFFFFFFFFFP-1)) === emptyinterval(BareInterval{Float64}) + + @test acosh(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test acosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0.0,0x1.9985FB3D532AFP+2) + + @test acosh(bareinterval(0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(0x1.C636C1A882F2CP-2,0x1.799C88E79140DP+0) + + @test acosh(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29)) === bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4) + +end +@testset "minimal_acosh_dec_test" begin + + @test acosh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test acosh(interval(bareinterval(1.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + + @test acosh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test acosh(interval(bareinterval(1.0,1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test acosh(interval(bareinterval(0.9,1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test acosh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), dac)) === interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), dac) + + @test acosh(interval(bareinterval(0.9,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), trv) + + @test acosh(interval(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29), def)) === interval(bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4), def) + +end +@testset "minimal_atanh_test" begin + + @test atanh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test atanh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test atanh(bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) + + @test atanh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) + + @test atanh(bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test atanh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test atanh(bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test atanh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4) + + @test atanh(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4)) === bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4) + +end +@testset "minimal_atanh_dec_test" begin + + @test atanh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test atanh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-Inf,0.0), trv) + + @test atanh(interval(bareinterval(-1.0,1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test atanh(interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atanh(interval(bareinterval(1.0,1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atanh(interval(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1), com)) === interval(bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4), com) + + @test atanh(interval(bareinterval(-1.0,0x1.FFFFFFFFFFFFFP-1), com)) === interval(bareinterval(-Inf,0x1.2B708872320E2P+4), trv) + + @test atanh(interval(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4), def)) === interval(bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4), def) + + @test atanh(interval(bareinterval(-0x1.FFB88E9EB6307P-1,1.0), com)) === interval(bareinterval(-0x1.06A3A97D7979CP+2,Inf), trv) + +end +@testset "minimal_sign_test" begin + + @test sign(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sign(bareinterval(1.0,2.0)) === bareinterval(1.0,1.0) + + @test sign(bareinterval(-1.0,2.0)) === bareinterval(-1.0,1.0) + + @test sign(bareinterval(-1.0,0.0)) === bareinterval(-1.0,0.0) + + @test sign(bareinterval(0.0,2.0)) === bareinterval(0.0,1.0) + + @test sign(bareinterval(-0.0,2.0)) === bareinterval(0.0,1.0) + + @test sign(bareinterval(-5.0,-2.0)) === bareinterval(-1.0,-1.0) + + @test sign(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test sign(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test sign(bareinterval(-0.0,0.0)) === bareinterval(0.0,0.0) + + @test sign(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + +end +@testset "minimal_sign_dec_test" begin + + @test sign(interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(1.0,1.0), com) + + @test sign(interval(bareinterval(-1.0,2.0), com)) === interval(bareinterval(-1.0,1.0), def) + + @test sign(interval(bareinterval(-1.0,0.0), com)) === interval(bareinterval(-1.0,0.0), def) + + @test sign(interval(bareinterval(0.0,2.0), com)) === interval(bareinterval(0.0,1.0), def) + + @test sign(interval(bareinterval(-0.0,2.0), def)) === interval(bareinterval(0.0,1.0), def) + + @test sign(interval(bareinterval(-5.0,-2.0), trv)) === interval(bareinterval(-1.0,-1.0), trv) + + @test sign(interval(bareinterval(0.0,0.0), dac)) === interval(bareinterval(0.0,0.0), dac) + +end +@testset "minimal_ceil_test" begin + + @test ceil(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ceil(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test ceil(bareinterval(1.1,2.0)) === bareinterval(2.0,2.0) + + @test ceil(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) + + @test ceil(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) + + @test ceil(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) + + @test ceil(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) + + @test ceil(bareinterval(-1.9,2.2)) === bareinterval(-1.0,3.0) + + @test ceil(bareinterval(-1.0,2.2)) === bareinterval(-1.0,3.0) + + @test ceil(bareinterval(0.0,2.2)) === bareinterval(0.0,3.0) + + @test ceil(bareinterval(-0.0,2.2)) === bareinterval(0.0,3.0) + + @test ceil(bareinterval(-1.5,Inf)) === bareinterval(-1.0,Inf) + + @test ceil(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test ceil(bareinterval(-Inf,2.2)) === bareinterval(-Inf,3.0) + + @test ceil(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) + +end +@testset "minimal_ceil_dec_test" begin + + @test ceil(interval(bareinterval(1.1,2.0), com)) === interval(bareinterval(2.0,2.0), dac) + + @test ceil(interval(bareinterval(-1.1,2.0), com)) === interval(bareinterval(-1.0,2.0), def) + + @test ceil(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(-1.0,0.0), def) + + @test ceil(interval(bareinterval(-1.1,-0.0), trv)) === interval(bareinterval(-1.0,0.0), trv) + + @test ceil(interval(bareinterval(-1.1,-0.4), dac)) === interval(bareinterval(-1.0,0.0), def) + + @test ceil(interval(bareinterval(-1.9,2.2), com)) === interval(bareinterval(-1.0,3.0), def) + + @test ceil(interval(bareinterval(-1.0,2.2), dac)) === interval(bareinterval(-1.0,3.0), def) + + @test ceil(interval(bareinterval(0.0,2.2), trv)) === interval(bareinterval(0.0,3.0), trv) + + @test ceil(interval(bareinterval(-0.0,2.2), def)) === interval(bareinterval(0.0,3.0), def) + + @test ceil(interval(bareinterval(-1.5,Inf), trv)) === interval(bareinterval(-1.0,Inf), trv) + + @test ceil(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), dac)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), def) + + @test ceil(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac) + + @test ceil(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,3.0), trv) + + @test ceil(interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), dac)) === interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), def) + +end +@testset "minimal_floor_test" begin + + @test floor(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test floor(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test floor(bareinterval(1.1,2.0)) === bareinterval(1.0,2.0) + + @test floor(bareinterval(-1.1,2.0)) === bareinterval(-2.0,2.0) + + @test floor(bareinterval(-1.1,0.0)) === bareinterval(-2.0,0.0) + + @test floor(bareinterval(-1.1,-0.0)) === bareinterval(-2.0,0.0) + + @test floor(bareinterval(-1.1,-0.4)) === bareinterval(-2.0,-1.0) + + @test floor(bareinterval(-1.9,2.2)) === bareinterval(-2.0,2.0) + + @test floor(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) + + @test floor(bareinterval(0.0,2.2)) === bareinterval(0.0,2.0) + + @test floor(bareinterval(-0.0,2.2)) === bareinterval(0.0,2.0) + + @test floor(bareinterval(-1.5,Inf)) === bareinterval(-2.0,Inf) + + @test floor(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) + +end +@testset "minimal_floor_dec_test" begin + + @test floor(interval(bareinterval(1.1,2.0), com)) === interval(bareinterval(1.0,2.0), def) + + @test floor(interval(bareinterval(-1.1,2.0), def)) === interval(bareinterval(-2.0,2.0), def) + + @test floor(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(-2.0,0.0), def) + + @test floor(interval(bareinterval(-1.2,-1.1), com)) === interval(bareinterval(-2.0,-2.0), com) + + @test floor(interval(bareinterval(-1.1,-0.4), def)) === interval(bareinterval(-2.0,-1.0), def) + + @test floor(interval(bareinterval(-1.9,2.2), com)) === interval(bareinterval(-2.0,2.0), def) + + @test floor(interval(bareinterval(-1.0,2.2), trv)) === interval(bareinterval(-1.0,2.0), trv) + + @test floor(interval(bareinterval(0.0,2.2), trv)) === interval(bareinterval(0.0,2.0), trv) + + @test floor(interval(bareinterval(-0.0,2.2), com)) === interval(bareinterval(0.0,2.0), def) + + @test floor(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-2.0,Inf), def) + + @test floor(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) + + @test floor(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), dac) + +end +@testset "minimal_trunc_test" begin + + @test trunc(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test trunc(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test trunc(bareinterval(1.1,2.1)) === bareinterval(1.0,2.0) + + @test trunc(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) + + @test trunc(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) + + @test trunc(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) + + @test trunc(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) + + @test trunc(bareinterval(-1.9,2.2)) === bareinterval(-1.0,2.0) + + @test trunc(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) + + @test trunc(bareinterval(0.0,2.2)) === bareinterval(0.0,2.0) + + @test trunc(bareinterval(-0.0,2.2)) === bareinterval(0.0,2.0) + + @test trunc(bareinterval(-1.5,Inf)) === bareinterval(-1.0,Inf) + + @test trunc(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) + +end +@testset "minimal_trunc_dec_test" begin + + @test trunc(interval(bareinterval(1.1,2.1), com)) === interval(bareinterval(1.0,2.0), def) + + @test trunc(interval(bareinterval(1.1,1.9), com)) === interval(bareinterval(1.0,1.0), com) + + @test trunc(interval(bareinterval(-1.1,2.0), dac)) === interval(bareinterval(-1.0,2.0), def) + + @test trunc(interval(bareinterval(-1.1,0.0), trv)) === interval(bareinterval(-1.0,0.0), trv) + + @test trunc(interval(bareinterval(-1.1,-0.0), def)) === interval(bareinterval(-1.0,0.0), def) + + @test trunc(interval(bareinterval(-1.1,-0.4), com)) === interval(bareinterval(-1.0,0.0), def) + + @test trunc(interval(bareinterval(-1.9,2.2), def)) === interval(bareinterval(-1.0,2.0), def) + + @test trunc(interval(bareinterval(-1.0,2.2), dac)) === interval(bareinterval(-1.0,2.0), def) + + @test trunc(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-1.0,Inf), def) + + @test trunc(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) + + @test trunc(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac) + + @test trunc(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), dac)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), def) + +end +@testset "minimal_round_ties_to_even_test" begin + + @test round(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test round(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test round(bareinterval(1.1,2.1)) === bareinterval(1.0,2.0) + + @test round(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) + + @test round(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.9,2.2)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) + + @test round(bareinterval(1.5,2.1)) === bareinterval(2.0,2.0) + + @test round(bareinterval(-1.5,2.0)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.1,-0.5)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.9,2.5)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(0.0,2.5)) === bareinterval(0.0,2.0) + + @test round(bareinterval(-0.0,2.5)) === bareinterval(0.0,2.0) + + @test round(bareinterval(-1.5,2.5)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.5,Inf)) === bareinterval(-2.0,Inf) + + @test round(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) + +end +@testset "minimal_round_ties_to_even_dec_test" begin + + @test round(interval(bareinterval(1.1,2.1), com)) === interval(bareinterval(1.0,2.0), def) + + @test round(interval(bareinterval(-1.1,2.0), trv)) === interval(bareinterval(-1.0,2.0), trv) + + @test round(interval(bareinterval(-1.6,-1.5), com)) === interval(bareinterval(-2.0,-2.0), dac) + + @test round(interval(bareinterval(-1.6,-1.4), com)) === interval(bareinterval(-2.0,-1.0), def) + + @test round(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-2.0,Inf), def) + + @test round(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) + +end +@testset "minimal_round_ties_to_away_test" begin + + @test round(emptyinterval(BareInterval{Float64}), RoundNearestTiesAway) === emptyinterval(BareInterval{Float64}) + + @test round(entireinterval(BareInterval{Float64}), RoundNearestTiesAway) === entireinterval(BareInterval{Float64}) + + @test round(bareinterval(1.1,2.1), RoundNearestTiesAway) === bareinterval(1.0,2.0) + + @test round(bareinterval(-1.1,2.0), RoundNearestTiesAway) === bareinterval(-1.0,2.0) + + @test round(bareinterval(-1.1,0.0), RoundNearestTiesAway) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.1,-0.0), RoundNearestTiesAway) === bareinterval(-1.0,-0.0) + + @test round(bareinterval(-1.1,-0.4), RoundNearestTiesAway) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.9,2.2), RoundNearestTiesAway) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.0,2.2), RoundNearestTiesAway) === bareinterval(-1.0,2.0) + + @test round(bareinterval(0.5,2.1), RoundNearestTiesAway) === bareinterval(1.0,2.0) + + @test round(bareinterval(-2.5,2.0), RoundNearestTiesAway) === bareinterval(-3.0,2.0) + + @test round(bareinterval(-1.1,-0.5), RoundNearestTiesAway) === bareinterval(-1.0,-1.0) + + @test round(bareinterval(-1.9,2.5), RoundNearestTiesAway) === bareinterval(-2.0,3.0) + + @test round(bareinterval(-1.5,2.5), RoundNearestTiesAway) === bareinterval(-2.0,3.0) + + @test round(bareinterval(0.0,2.5), RoundNearestTiesAway) === bareinterval(0.0,3.0) + + @test round(bareinterval(-0.0,2.5), RoundNearestTiesAway) === bareinterval(0.0,3.0) + + @test round(bareinterval(-1.5,Inf), RoundNearestTiesAway) === bareinterval(-2.0,Inf) + + @test round(bareinterval(-Inf,2.2), RoundNearestTiesAway) === bareinterval(-Inf,2.0) + +end +@testset "minimal_round_ties_to_away_dec_test" begin + + @test round(interval(bareinterval(1.1,2.1), com), RoundNearestTiesAway) === interval(bareinterval(1.0,2.0), def) + + @test round(interval(bareinterval(-1.9,2.2), com), RoundNearestTiesAway) === interval(bareinterval(-2.0,2.0), def) + + @test round(interval(bareinterval(1.9,2.2), com), RoundNearestTiesAway) === interval(bareinterval(2.0,2.0), com) + + @test round(interval(bareinterval(-1.0,2.2), trv), RoundNearestTiesAway) === interval(bareinterval(-1.0,2.0), trv) + + @test round(interval(bareinterval(2.5,2.6), com), RoundNearestTiesAway) === interval(bareinterval(3.0,3.0), dac) + + @test round(interval(bareinterval(-1.5,Inf), dac), RoundNearestTiesAway) === interval(bareinterval(-2.0,Inf), def) + + @test round(interval(bareinterval(-Inf,2.2), def), RoundNearestTiesAway) === interval(bareinterval(-Inf,2.0), def) + +end +@testset "minimal_abs_test" begin + + @test abs(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test abs(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test abs(bareinterval(1.1,2.1)) === bareinterval(1.1,2.1) + + @test abs(bareinterval(-1.1,2.0)) === bareinterval(0.0,2.0) + + @test abs(bareinterval(-1.1,0.0)) === bareinterval(0.0,1.1) + + @test abs(bareinterval(-1.1,-0.0)) === bareinterval(0.0,1.1) + + @test abs(bareinterval(-1.1,-0.4)) === bareinterval(0.4,1.1) + + @test abs(bareinterval(-1.9,0.2)) === bareinterval(0.0,1.9) + + @test abs(bareinterval(0.0,0.2)) === bareinterval(0.0,0.2) + + @test abs(bareinterval(-0.0,0.2)) === bareinterval(0.0,0.2) + + @test abs(bareinterval(-1.5,Inf)) === bareinterval(0.0,Inf) + + @test abs(bareinterval(-Inf,-2.2)) === bareinterval(2.2,Inf) + +end +@testset "minimal_abs_dec_test" begin + + @test abs(interval(bareinterval(-1.1,2.0), com)) === interval(bareinterval(0.0,2.0), com) + + @test abs(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(0.0,1.1), dac) + + @test abs(interval(bareinterval(-1.1,-0.0), def)) === interval(bareinterval(0.0,1.1), def) + + @test abs(interval(bareinterval(-1.1,-0.4), trv)) === interval(bareinterval(0.4,1.1), trv) + + @test abs(interval(bareinterval(-1.9,0.2), dac)) === interval(bareinterval(0.0,1.9), dac) + + @test abs(interval(bareinterval(0.0,0.2), def)) === interval(bareinterval(0.0,0.2), def) + + @test abs(interval(bareinterval(-0.0,0.2), com)) === interval(bareinterval(0.0,0.2), com) + + @test abs(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + +end +@testset "minimal_min_test" begin + + @test min(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test min(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test min(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test min(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === bareinterval(-Inf,2.0) + + @test min(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf,2.0) + + @test min(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test min(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test min(bareinterval(1.0,5.0), bareinterval(2.0,4.0)) === bareinterval(1.0,4.0) + + @test min(bareinterval(0.0,5.0), bareinterval(2.0,4.0)) === bareinterval(0.0,4.0) + + @test min(bareinterval(-0.0,5.0), bareinterval(2.0,4.0)) === bareinterval(0.0,4.0) + + @test min(bareinterval(1.0,5.0), bareinterval(2.0,8.0)) === bareinterval(1.0,5.0) + + @test min(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf,5.0) + + @test min(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,-5.0) + + @test min(bareinterval(-7.0,0.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,0.0) + + @test min(bareinterval(-7.0,-0.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,0.0) + +end +@testset "minimal_min_dec_test" begin + + @test min(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(-Inf,2.0), dac) + + @test min(interval(bareinterval(-7.0,-5.0), trv), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(-7.0,-5.0), trv) + + @test min(interval(bareinterval(-7.0,0.0), dac), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(-7.0,0.0), def) + + @test min(interval(bareinterval(-7.0,-0.0), com), interval(bareinterval(2.0,4.0), com)) === interval(bareinterval(-7.0,0.0), com) + +end +@testset "minimal_max_test" begin + + @test max(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test max(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test max(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test max(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === bareinterval(1.0,Inf) + + @test max(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0,Inf) + + @test max(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test max(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test max(bareinterval(1.0,5.0), bareinterval(2.0,4.0)) === bareinterval(2.0,5.0) + + @test max(bareinterval(1.0,5.0), bareinterval(2.0,8.0)) === bareinterval(2.0,8.0) + + @test max(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0,Inf) + + @test max(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)) === bareinterval(2.0,4.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(0.0,4.0)) === bareinterval(0.0,4.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(-0.0,4.0)) === bareinterval(0.0,4.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(-2.0,0.0)) === bareinterval(-2.0,0.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(-2.0,-0.0)) === bareinterval(-2.0,0.0) + +end +@testset "minimal_max_dec_test" begin + + @test max(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(1.0,Inf), dac) + + @test max(interval(bareinterval(-7.0,-5.0), trv), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(2.0,4.0), trv) + + @test max(interval(bareinterval(-7.0,5.0), dac), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(2.0,5.0), def) + + @test max(interval(bareinterval(3.0,3.5), com), interval(bareinterval(2.0,4.0), com)) === interval(bareinterval(3.0,4.0), com) + +end diff --git a/test/ITF1788_tests/libieeep1788_num.jl b/test/ITF1788_tests/libieeep1788_num.jl new file mode 100644 index 000000000..f4b5e07b8 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_num.jl @@ -0,0 +1,416 @@ +@testset "minimal_inf_test" begin + + @test inf(emptyinterval(BareInterval{Float64})) === +Inf + + @test inf(bareinterval(-Inf,+Inf)) === -Inf + + @test inf(bareinterval(1.0,2.0)) === 1.0 + + @test inf(bareinterval(-3.0,-2.0)) === -3.0 + + @test inf(bareinterval(-Inf,2.0)) === -Inf + + @test inf(bareinterval(-Inf,0.0)) === -Inf + + @test inf(bareinterval(-Inf,-0.0)) === -Inf + + @test inf(bareinterval(-2.0,Inf)) === -2.0 + + @test inf(bareinterval(0.0,Inf)) === -0.0 + + @test inf(bareinterval(-0.0,Inf)) === -0.0 + + @test inf(bareinterval(-0.0,0.0)) === -0.0 + + @test inf(bareinterval(0.0,-0.0)) === -0.0 + + @test inf(bareinterval(0.0,0.0)) === -0.0 + + @test inf(bareinterval(-0.0,-0.0)) === -0.0 + +end +@testset "minimal_inf_dec_test" begin + + @test isnan(inf(nai())) + + @test inf(interval(emptyinterval(BareInterval{Float64}), trv)) === +Inf + + @test inf(interval(bareinterval(-Inf,+Inf), def)) === -Inf + + @test inf(interval(bareinterval(1.0,2.0), com)) === 1.0 + + @test inf(interval(bareinterval(-3.0,-2.0), trv)) === -3.0 + + @test inf(interval(bareinterval(-Inf,2.0), dac)) === -Inf + + @test inf(interval(bareinterval(-Inf,0.0), def)) === -Inf + + @test inf(interval(bareinterval(-Inf,-0.0), trv)) === -Inf + + @test inf(interval(bareinterval(-2.0,Inf), trv)) === -2.0 + + @test inf(interval(bareinterval(0.0,Inf), def)) === -0.0 + + @test inf(interval(bareinterval(-0.0,Inf), trv)) === -0.0 + + @test inf(interval(bareinterval(-0.0,0.0), dac)) === -0.0 + + @test inf(interval(bareinterval(0.0,-0.0), trv)) === -0.0 + + @test inf(interval(bareinterval(0.0,0.0), trv)) === -0.0 + + @test inf(interval(bareinterval(-0.0,-0.0), trv)) === -0.0 + +end +@testset "minimal_sup_test" begin + + @test sup(emptyinterval(BareInterval{Float64})) === -Inf + + @test sup(bareinterval(-Inf,+Inf)) === +Inf + + @test sup(bareinterval(1.0,2.0)) === 2.0 + + @test sup(bareinterval(-3.0,-2.0)) === -2.0 + + @test sup(bareinterval(-Inf,2.0)) === 2.0 + + @test sup(bareinterval(-Inf,0.0)) === 0.0 + + @test sup(bareinterval(-Inf,-0.0)) === 0.0 + + @test sup(bareinterval(-2.0,Inf)) === Inf + + @test sup(bareinterval(0.0,Inf)) === Inf + + @test sup(bareinterval(-0.0,Inf)) === Inf + + @test sup(bareinterval(-0.0,0.0)) === 0.0 + + @test sup(bareinterval(0.0,-0.0)) === 0.0 + + @test sup(bareinterval(0.0,0.0)) === 0.0 + + @test sup(bareinterval(-0.0,-0.0)) === 0.0 + +end +@testset "minimal_sup_dec_test" begin + + @test isnan(sup(nai())) + + @test sup(interval(emptyinterval(BareInterval{Float64}), trv)) === -Inf + + @test sup(interval(bareinterval(-Inf,+Inf), def)) === +Inf + + @test sup(interval(bareinterval(1.0,2.0), com)) === 2.0 + + @test sup(interval(bareinterval(-3.0,-2.0), trv)) === -2.0 + + @test sup(interval(bareinterval(-Inf,2.0), dac)) === 2.0 + + @test sup(interval(bareinterval(-Inf,0.0), def)) === 0.0 + + @test sup(interval(bareinterval(-Inf,-0.0), trv)) === 0.0 + + @test sup(interval(bareinterval(-2.0,Inf), trv)) === Inf + + @test sup(interval(bareinterval(0.0,Inf), def)) === Inf + + @test sup(interval(bareinterval(-0.0,Inf), trv)) === Inf + + @test sup(interval(bareinterval(-0.0,0.0), dac)) === +0.0 + + @test sup(interval(bareinterval(0.0,-0.0), trv)) === +0.0 + + @test sup(interval(bareinterval(0.0,0.0), trv)) === +0.0 + + @test sup(interval(bareinterval(-0.0,-0.0), trv)) === +0.0 + +end +@testset "minimal_mid_test" begin + + @test isnan(mid(emptyinterval(BareInterval{Float64}))) + + @test mid(bareinterval(-Inf,+Inf)) === 0.0 + + @test mid(bareinterval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023)) === 0.0 + + @test mid(bareinterval(0.0,2.0)) === 1.0 + + @test mid(bareinterval(2.0,2.0)) === 2.0 + + @test mid(bareinterval(-2.0,2.0)) === 0.0 + + @test mid(bareinterval(0.0,Inf)) === 0x1.FFFFFFFFFFFFFp1023 + + @test mid(bareinterval(-Inf,1.2)) === -0x1.FFFFFFFFFFFFFp1023 + + @test mid(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0.0 + + @test mid(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0.0 + + @test mid(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023)) === 0x1.7FFFFFFFFFFFFP+1023 + + @test mid(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022)) === 0x0.0000000000002P-1022 + +end +@testset "minimal_mid_dec_test" begin + + @test isnan(mid(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(mid(nai())) + + @test mid(interval(bareinterval(-Inf,+Inf), def)) === 0.0 + + @test mid(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023), trv)) === 0.0 + + @test mid(interval(bareinterval(0.0,2.0), com)) === 1.0 + + @test mid(interval(bareinterval(2.0,2.0), dac)) === 2.0 + + @test mid(interval(bareinterval(-2.0,2.0), trv)) === 0.0 + + @test mid(interval(bareinterval(0.0,Inf), trv)) === 0x1.FFFFFFFFFFFFFp1023 + + @test mid(interval(bareinterval(-Inf,1.2), trv)) === -0x1.FFFFFFFFFFFFFp1023 + + @test mid(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv)) === 0.0 + + @test mid(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv)) === 0.0 + + @test mid(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv)) === 0x1.7FFFFFFFFFFFFP+1023 + + @test mid(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv)) === 0x0.0000000000002P-1022 + +end +@testset "minimal_rad_test" begin + + @test radius(bareinterval(0.0,2.0)) === 1.0 + + @test radius(bareinterval(2.0,2.0)) === 0.0 + + @test isnan(radius(emptyinterval(BareInterval{Float64}))) + + @test radius(bareinterval(-Inf,+Inf)) === Inf + + @test radius(bareinterval(0.0,Inf)) === Inf + + @test radius(bareinterval(-Inf, 1.2)) === Inf + + @test radius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0x0.0000000000002P-1022 + + @test radius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0x0.0000000000001P-1022 + + @test radius(bareinterval(0x1P+0,0x1.0000000000003P+0)) === 0x1P-51 + +end +@testset "minimal_rad_dec_test" begin + + @test radius(interval(bareinterval(0.0,2.0), trv)) === 1.0 + + @test radius(interval(bareinterval(2.0,2.0), com)) === 0.0 + + @test isnan(radius(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(radius(nai())) + + @test radius(interval(bareinterval(-Inf,+Inf), trv)) === Inf + + @test radius(interval(bareinterval(0.0,Inf), def)) === Inf + + @test radius(interval(bareinterval(-Inf, 1.2), trv)) === Inf + + @test radius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv)) === 0x0.0000000000002P-1022 + + @test radius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv)) === 0x0.0000000000001P-1022 + + @test radius(interval(bareinterval(0x1P+0,0x1.0000000000003P+0), trv)) === 0x1P-51 + +end +@testset "minimal_mid_rad_test" begin + + @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) + + @test midradius(bareinterval(-Inf,Inf))[1] === 0.0 && midradius(bareinterval(-Inf,Inf))[2] === Inf + + @test midradius(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[1] === 0.0 && midradius(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.FFFFFFFFFFFFFP+1023 + + @test midradius(bareinterval(0.0,2.0))[1] === 1.0 && midradius(bareinterval(0.0,2.0))[2] === 1.0 + + @test midradius(bareinterval(2.0,2.0))[1] === 2.0 && midradius(bareinterval(2.0,2.0))[2] === 0.0 + + @test midradius(bareinterval(-2.0,2.0))[1] === 0.0 && midradius(bareinterval(-2.0,2.0))[2] === 2.0 + + @test midradius(bareinterval(0.0,Inf))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(bareinterval(0.0,Inf))[2] === Inf + + @test midradius(bareinterval(-Inf, 1.2))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(bareinterval(-Inf, 1.2))[2] === Inf + + @test midradius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[1] === 0.0 && midradius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[2] === 0x0.0000000000002P-1022 + + @test midradius(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[1] === 0.0 && midradius(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[2] === 0x0.0000000000002P-1022 + + @test midradius(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.0p+1022 + + @test midradius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[1] === 0x0.0000000000002P-1022 && midradius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[2] === 0x0.0000000000001P-1022 + +end +@testset "minimal_mid_rad_dec_test" begin + + @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) + + @test isnan(midradius(nai())[1]) && isnan(midradius(nai())[2]) + + @test midradius(interval(bareinterval(-Inf,Inf), def))[1] === 0.0 && midradius(interval(bareinterval(-Inf,Inf), def))[2] === Inf + + @test midradius(interval(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), trv))[2] === 0x1.FFFFFFFFFFFFFP+1023 + + @test midradius(interval(bareinterval(0.0,2.0), com))[1] === 1.0 && midradius(interval(bareinterval(0.0,2.0), com))[2] === 1.0 + + @test midradius(interval(bareinterval(2.0,2.0), dac))[1] === 2.0 && midradius(interval(bareinterval(2.0,2.0), dac))[2] === 0.0 + + @test midradius(interval(bareinterval(-2.0,2.0), trv))[1] === 0.0 && midradius(interval(bareinterval(-2.0,2.0), trv))[2] === 2.0 + + @test midradius(interval(bareinterval(0.0,Inf), trv))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(0.0,Inf), trv))[2] === Inf + + @test midradius(interval(bareinterval(-Inf, 1.2), trv))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(-Inf, 1.2), trv))[2] === Inf + + @test midradius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv))[2] === 0x0.0000000000002P-1022 + + @test midradius(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv))[2] === 0x0.0000000000002P-1022 + + @test midradius(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv))[2] === 0x1.0p+1022 + + @test midradius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv))[1] === 0x0.0000000000002P-1022 && midradius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv))[2] === 0x0.0000000000001P-1022 + +end +@testset "minimal_wid_test" begin + + @test diam(bareinterval(2.0,2.0)) === 0.0 + + @test diam(bareinterval(1.0,2.0)) === 1.0 + + @test diam(bareinterval(1.0,Inf)) === Inf + + @test diam(bareinterval(-Inf,2.0)) === Inf + + @test diam(bareinterval(-Inf,+Inf)) === Inf + + @test isnan(diam(emptyinterval(BareInterval{Float64}))) + + @test diam(bareinterval(0x1P+0,0x1.0000000000001P+0)) === 0x1P-52 + + @test diam(bareinterval(0x1P-1022,0x1.0000000000001P-1022)) === 0x0.0000000000001P-1022 + +end +@testset "minimal_wid_dec_test" begin + + @test diam(interval(bareinterval(2.0,2.0), com)) === 0.0 + + @test diam(interval(bareinterval(1.0,2.0), trv)) === 1.0 + + @test diam(interval(bareinterval(1.0,Inf), trv)) === Inf + + @test diam(interval(bareinterval(-Inf,2.0), def)) === Inf + + @test diam(interval(bareinterval(-Inf,+Inf), trv)) === Inf + + @test isnan(diam(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(diam(nai())) + + @test diam(interval(bareinterval(0x1P+0,0x1.0000000000001P+0), trv)) === 0x1P-52 + + @test diam(interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), trv)) === 0x0.0000000000001P-1022 + +end +@testset "minimal_mag_test" begin + + @test mag(bareinterval(1.0,2.0)) === 2.0 + + @test mag(bareinterval(-4.0,2.0)) === 4.0 + + @test mag(bareinterval(-Inf,2.0)) === Inf + + @test mag(bareinterval(1.0,Inf)) === Inf + + @test mag(bareinterval(-Inf,+Inf)) === Inf + + @test isnan(mag(emptyinterval(BareInterval{Float64}))) + + @test mag(bareinterval(-0.0,0.0)) === 0.0 + + @test mag(bareinterval(-0.0,-0.0)) === 0.0 + +end +@testset "minimal_mag_dec_test" begin + + @test mag(interval(bareinterval(1.0,2.0), com)) === 2.0 + + @test mag(interval(bareinterval(-4.0,2.0), trv)) === 4.0 + + @test mag(interval(bareinterval(-Inf,2.0), trv)) === Inf + + @test mag(interval(bareinterval(1.0,Inf), def)) === Inf + + @test mag(interval(bareinterval(-Inf,+Inf), trv)) === Inf + + @test isnan(mag(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(mag(nai())) + + @test mag(interval(bareinterval(-0.0,0.0), trv)) === 0.0 + + @test mag(interval(bareinterval(-0.0,-0.0), trv)) === 0.0 + +end +@testset "minimal_mig_test" begin + + @test mig(bareinterval(1.0,2.0)) === 1.0 + + @test mig(bareinterval(-4.0,2.0)) === 0.0 + + @test mig(bareinterval(-4.0,-2.0)) === 2.0 + + @test mig(bareinterval(-Inf,2.0)) === 0.0 + + @test mig(bareinterval(-Inf,-2.0)) === 2.0 + + @test mig(bareinterval(-1.0,Inf)) === 0.0 + + @test mig(bareinterval(1.0,Inf)) === 1.0 + + @test mig(bareinterval(-Inf,+Inf)) === 0.0 + + @test isnan(mig(emptyinterval(BareInterval{Float64}))) + + @test mig(bareinterval(-0.0,0.0)) === 0.0 + + @test mig(bareinterval(-0.0,-0.0)) === 0.0 + +end +@testset "minimal_mig_dec_test" begin + + @test mig(interval(bareinterval(1.0,2.0), com)) === 1.0 + + @test mig(interval(bareinterval(-4.0,2.0), trv)) === 0.0 + + @test mig(interval(bareinterval(-4.0,-2.0), trv)) === 2.0 + + @test mig(interval(bareinterval(-Inf,2.0), def)) === 0.0 + + @test mig(interval(bareinterval(-Inf,-2.0), trv)) === 2.0 + + @test mig(interval(bareinterval(-1.0,Inf), trv)) === 0.0 + + @test mig(interval(bareinterval(1.0,Inf), trv)) === 1.0 + + @test mig(interval(bareinterval(-Inf,+Inf), trv)) === 0.0 + + @test isnan(mig(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(mig(nai())) + + @test mig(interval(bareinterval(-0.0,0.0), trv)) === 0.0 + + @test mig(interval(bareinterval(-0.0,-0.0), trv)) === 0.0 + +end diff --git a/test/ITF1788_tests/libieeep1788_overlap.jl b/test/ITF1788_tests/libieeep1788_overlap.jl new file mode 100644 index 000000000..9e467f1b8 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_overlap.jl @@ -0,0 +1,160 @@ +@testset "minimal_overlap_test" begin + + @test overlap(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.both_empty + + @test overlap(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.first_empty + + @test overlap(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.second_empty + + @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,3.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,3.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,Inf)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(-Inf,2.0), bareinterval(2.0,3.0)) === IntervalArithmetic.Overlap.meets + + @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,3.0)) === IntervalArithmetic.Overlap.meets + + @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,Inf)) === IntervalArithmetic.Overlap.meets + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.5,2.5)) === IntervalArithmetic.Overlap.overlaps + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === IntervalArithmetic.Overlap.starts + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,3.0)) === IntervalArithmetic.Overlap.starts + + @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,3.0)) === IntervalArithmetic.Overlap.starts + + @test overlap(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,3.0)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,3.0)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,3.0)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,Inf)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.finishes + + @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,2.0)) === IntervalArithmetic.Overlap.finishes + + @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,2.0)) === IntervalArithmetic.Overlap.finishes + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.equals + + @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,1.0)) === IntervalArithmetic.Overlap.equals + + @test overlap(bareinterval(-Inf,1.0), bareinterval(-Inf,1.0)) === IntervalArithmetic.Overlap.equals + + @test overlap(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.equals + + @test overlap(bareinterval(3.0,4.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,3.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,Inf), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(2.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.met_by + + @test overlap(bareinterval(2.0,3.0), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.met_by + + @test overlap(bareinterval(1.5,2.5), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.overlapped_by + + @test overlap(bareinterval(1.5,2.5), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.overlapped_by + + @test overlap(bareinterval(1.0,Inf), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.started_by + + @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.started_by + + @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,1.0)) === IntervalArithmetic.Overlap.started_by + + @test overlap(bareinterval(-Inf,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(bareinterval(0.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(bareinterval(0.0,3.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(bareinterval(-Inf,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.finished_by + + @test overlap(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.finished_by + + @test overlap(bareinterval(0.0,2.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.finished_by + +end +@testset "minimal_overlap_dec_test" begin + + @test overlap(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === IntervalArithmetic.Overlap.both_empty + + @test overlap(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), com)) === IntervalArithmetic.Overlap.first_empty + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === IntervalArithmetic.Overlap.second_empty + + @test overlap(interval(bareinterval(2.0,2.0), def), interval(bareinterval(3.0,4.0), def)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(1.0,2.0), dac), interval(bareinterval(3.0,4.0), com)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(1.0,2.0), com), interval(bareinterval(3.0,3.0), trv)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(2.0,2.0), trv), interval(bareinterval(3.0,3.0), def)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(2.0,3.0), def)) === IntervalArithmetic.Overlap.meets + + @test overlap(interval(bareinterval(1.0,2.0), dac), interval(bareinterval(1.5,2.5), def)) === IntervalArithmetic.Overlap.overlaps + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,3.0), com)) === IntervalArithmetic.Overlap.starts + + @test overlap(interval(bareinterval(1.0,1.0), trv), interval(bareinterval(1.0,3.0), def)) === IntervalArithmetic.Overlap.starts + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(0.0,3.0), dac)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(interval(bareinterval(2.0,2.0), trv), interval(bareinterval(0.0,3.0), def)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(0.0,2.0), com)) === IntervalArithmetic.Overlap.finishes + + @test overlap(interval(bareinterval(2.0,2.0), def), interval(bareinterval(0.0,2.0), dac)) === IntervalArithmetic.Overlap.finishes + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.equals + + @test overlap(interval(bareinterval(1.0,1.0), dac), interval(bareinterval(1.0,1.0), dac)) === IntervalArithmetic.Overlap.equals + + @test overlap(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(2.0,2.0), trv)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(3.0,4.0), def), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(3.0,3.0), com), interval(bareinterval(1.0,2.0), dac)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(3.0,3.0), def), interval(bareinterval(2.0,2.0), trv)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(2.0,3.0), def), interval(bareinterval(1.0,2.0), trv)) === IntervalArithmetic.Overlap.met_by + + @test overlap(interval(bareinterval(1.5,2.5), com), interval(bareinterval(1.0,2.0), com)) === IntervalArithmetic.Overlap.overlapped_by + + @test overlap(interval(bareinterval(1.0,3.0), dac), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.started_by + + @test overlap(interval(bareinterval(1.0,3.0), com), interval(bareinterval(1.0,1.0), dac)) === IntervalArithmetic.Overlap.started_by + + @test overlap(interval(bareinterval(0.0,3.0), com), interval(bareinterval(1.0,2.0), dac)) === IntervalArithmetic.Overlap.contains + + @test overlap(interval(bareinterval(0.0,3.0), com), interval(bareinterval(2.0,2.0), def)) === IntervalArithmetic.Overlap.contains + + @test overlap(interval(bareinterval(0.0,2.0), def), interval(bareinterval(1.0,2.0), trv)) === IntervalArithmetic.Overlap.finished_by + + @test overlap(interval(bareinterval(0.0,2.0), dac), interval(bareinterval(2.0,2.0), def)) === IntervalArithmetic.Overlap.finished_by + +end diff --git a/test/ITF1788_tests/libieeep1788_rec_bool.jl b/test/ITF1788_tests/libieeep1788_rec_bool.jl new file mode 100644 index 000000000..b1c5c00fc --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_rec_bool.jl @@ -0,0 +1,296 @@ +@testset "minimal_is_common_interval_test" begin + + @test iscommon(bareinterval(-27.0,-27.0)) === true + + @test iscommon(bareinterval(-27.0, 0.0)) === true + + @test iscommon(bareinterval(0.0,0.0)) === true + + @test iscommon(bareinterval(-0.0,-0.0)) === true + + @test iscommon(bareinterval(-0.0,0.0)) === true + + @test iscommon(bareinterval(0.0,-0.0)) === true + + @test iscommon(bareinterval(5.0, 12.4)) === true + + @test iscommon(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023)) === true + + @test iscommon(entireinterval(BareInterval{Float64})) === false + + @test iscommon(emptyinterval(BareInterval{Float64})) === false + + @test iscommon(bareinterval(-Inf, 0.0)) === false + + @test iscommon(bareinterval(0.0, Inf)) === false + +end +@testset "minimal_is_common_interval_dec_test" begin + + @test iscommon(interval(bareinterval(-27.0,-27.0), com)) === true + + @test iscommon(interval(bareinterval(-27.0, 0.0), com)) === true + + @test iscommon(interval(bareinterval(0.0,0.0), com)) === true + + @test iscommon(interval(bareinterval(-0.0,-0.0), com)) === true + + @test iscommon(interval(bareinterval(-0.0,0.0), com)) === true + + @test iscommon(interval(bareinterval(0.0,-0.0), com)) === true + + @test iscommon(interval(bareinterval(5.0, 12.4), com)) === true + + @test iscommon(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), com)) === true + + @test iscommon(interval(bareinterval(-27.0,-27.0), trv)) === true + + @test iscommon(interval(bareinterval(-27.0, 0.0), def)) === true + + @test iscommon(interval(bareinterval(0.0,0.0), dac)) === true + + @test iscommon(interval(bareinterval(-0.0,-0.0), trv)) === true + + @test iscommon(interval(bareinterval(-0.0,0.0), def)) === true + + @test iscommon(interval(bareinterval(0.0,-0.0), dac)) === true + + @test iscommon(interval(bareinterval(5.0, 12.4), def)) === true + + @test iscommon(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), trv)) === true + + @test iscommon(interval(entireinterval(BareInterval{Float64}), dac)) === false + + @test iscommon(nai()) === false + + @test iscommon(interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test iscommon(interval(bareinterval(-Inf, 0.0), trv)) === false + + @test iscommon(interval(bareinterval(0.0, Inf), def)) === false + +end +@testset "minimal_is_singleton_test" begin + + @test isthin(bareinterval(-27.0,-27.0)) === true + + @test isthin(bareinterval(-2.0, -2.0)) === true + + @test isthin(bareinterval(12.0,12.0)) === true + + @test isthin(bareinterval(17.1, 17.1)) === true + + @test isthin(bareinterval(-0.0,-0.0)) === true + + @test isthin(bareinterval(0.0,0.0)) === true + + @test isthin(bareinterval(-0.0, 0.0)) === true + + @test isthin(bareinterval(0.0, -0.0)) === true + + @test isthin(emptyinterval(BareInterval{Float64})) === false + + @test isthin(entireinterval(BareInterval{Float64})) === false + + @test isthin(bareinterval(-1.0, 0.0)) === false + + @test isthin(bareinterval(-1.0, -0.5)) === false + + @test isthin(bareinterval(1.0, 2.0)) === false + + @test isthin(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) === false + + @test isthin(bareinterval(-1.0,Inf)) === false + +end +@testset "minimal_is_singleton_dec_test" begin + + @test isthin(interval(bareinterval(-27.0,-27.0), def)) === true + + @test isthin(interval(bareinterval(-2.0, -2.0), trv)) === true + + @test isthin(interval(bareinterval(12.0,12.0), dac)) === true + + @test isthin(interval(bareinterval(17.1, 17.1), com)) === true + + @test isthin(interval(bareinterval(-0.0,-0.0), def)) === true + + @test isthin(interval(bareinterval(0.0,0.0), com)) === true + + @test isthin(interval(bareinterval(-0.0, 0.0), def)) === true + + @test isthin(interval(bareinterval(0.0, -0.0), dac)) === true + + @test isthin(interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isthin(nai()) === false + + @test isthin(interval(entireinterval(BareInterval{Float64}), def)) === false + + @test isthin(interval(bareinterval(-1.0, 0.0), dac)) === false + + @test isthin(interval(bareinterval(-1.0, -0.5), com)) === false + + @test isthin(interval(bareinterval(1.0, 2.0), def)) === false + + @test isthin(interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), dac)) === false + + @test isthin(interval(bareinterval(-1.0,Inf), trv)) === false + +end +@testset "minimal_is_member_test" begin + + @test in_interval(-27.0, bareinterval(-27.0,-27.0)) === true + + @test in_interval(-27.0, bareinterval(-27.0, 0.0)) === true + + @test in_interval(-7.0, bareinterval(-27.0, 0.0)) === true + + @test in_interval(0.0, bareinterval(-27.0, 0.0)) === true + + @test in_interval(-0.0, bareinterval(0.0,0.0)) === true + + @test in_interval(0.0, bareinterval(0.0,0.0)) === true + + @test in_interval(0.0, bareinterval(-0.0,-0.0)) === true + + @test in_interval(0.0, bareinterval(-0.0,0.0)) === true + + @test in_interval(0.0, bareinterval(0.0,-0.0)) === true + + @test in_interval(5.0, bareinterval(5.0, 12.4)) === true + + @test in_interval(6.3, bareinterval(5.0, 12.4)) === true + + @test in_interval(12.4, bareinterval(5.0, 12.4)) === true + + @test in_interval(0.0, entireinterval(BareInterval{Float64})) === true + + @test in_interval(5.0, entireinterval(BareInterval{Float64})) === true + + @test in_interval(6.3, entireinterval(BareInterval{Float64})) === true + + @test in_interval(12.4, entireinterval(BareInterval{Float64})) === true + + @test in_interval(0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) === true + + @test in_interval(-0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) === true + + @test in_interval(0x1.0p-1022, entireinterval(BareInterval{Float64})) === true + + @test in_interval(-0x1.0p-1022, entireinterval(BareInterval{Float64})) === true + + @test in_interval(-71.0, bareinterval(-27.0, 0.0)) === false + + @test in_interval(0.1, bareinterval(-27.0, 0.0)) === false + + @test in_interval(-0.01, bareinterval(0.0,0.0)) === false + + @test in_interval(0.000001, bareinterval(0.0,0.0)) === false + + @test in_interval(111110.0, bareinterval(-0.0,-0.0)) === false + + @test in_interval(4.9, bareinterval(5.0, 12.4)) === false + + @test in_interval(-6.3, bareinterval(5.0, 12.4)) === false + + @test in_interval(0.0, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(-4535.3, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(-Inf, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(Inf, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(NaN, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(-Inf, entireinterval(BareInterval{Float64})) === false + + @test in_interval(Inf, entireinterval(BareInterval{Float64})) === false + + @test in_interval(NaN, entireinterval(BareInterval{Float64})) === false + +end +@testset "minimal_is_member_dec_test" begin + + @test in_interval(-27.0, interval(bareinterval(-27.0,-27.0), trv)) === true + + @test in_interval(-27.0, interval(bareinterval(-27.0, 0.0), def)) === true + + @test in_interval(-7.0, interval(bareinterval(-27.0, 0.0), dac)) === true + + @test in_interval(0.0, interval(bareinterval(-27.0, 0.0), com)) === true + + @test in_interval(-0.0, interval(bareinterval(0.0,0.0), trv)) === true + + @test in_interval(0.0, interval(bareinterval(0.0,0.0), def)) === true + + @test in_interval(0.0, interval(bareinterval(-0.0,-0.0), dac)) === true + + @test in_interval(0.0, interval(bareinterval(-0.0,0.0), com)) === true + + @test in_interval(0.0, interval(bareinterval(0.0,-0.0), trv)) === true + + @test in_interval(5.0, interval(bareinterval(5.0, 12.4), def)) === true + + @test in_interval(6.3, interval(bareinterval(5.0, 12.4), dac)) === true + + @test in_interval(12.4, interval(bareinterval(5.0, 12.4), com)) === true + + @test in_interval(0.0, interval(entireinterval(BareInterval{Float64}), trv)) === true + + @test in_interval(5.0, interval(entireinterval(BareInterval{Float64}), def)) === true + + @test in_interval(6.3, interval(entireinterval(BareInterval{Float64}), dac)) === true + + @test in_interval(12.4, interval(entireinterval(BareInterval{Float64}), trv)) === true + + @test in_interval(0x1.FFFFFFFFFFFFFp1023, interval(entireinterval(BareInterval{Float64}), def)) === true + + @test in_interval(-0x1.FFFFFFFFFFFFFp1023, interval(entireinterval(BareInterval{Float64}), dac)) === true + + @test in_interval(0x1.0p-1022, interval(entireinterval(BareInterval{Float64}), trv)) === true + + @test in_interval(-0x1.0p-1022, interval(entireinterval(BareInterval{Float64}), def)) === true + + @test in_interval(-71.0, interval(bareinterval(-27.0, 0.0), trv)) === false + + @test in_interval(0.1, interval(bareinterval(-27.0, 0.0), def)) === false + + @test in_interval(-0.01, interval(bareinterval(0.0,0.0), dac)) === false + + @test in_interval(0.000001, interval(bareinterval(0.0,0.0), com)) === false + + @test in_interval(111110.0, interval(bareinterval(-0.0,-0.0), trv)) === false + + @test in_interval(4.9, interval(bareinterval(5.0, 12.4), def)) === false + + @test in_interval(-6.3, interval(bareinterval(5.0, 12.4), dac)) === false + + @test in_interval(0.0, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(0.0, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-4535.3, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-4535.3, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-Inf, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-Inf, nai()) === false + + @test in_interval(Inf, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(Inf, nai()) === false + + @test in_interval(NaN, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(NaN, nai()) === false + + @test in_interval(-Inf, interval(entireinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(Inf, interval(entireinterval(BareInterval{Float64}), def)) === false + + @test in_interval(NaN, interval(entireinterval(BareInterval{Float64}), dac)) === false + +end diff --git a/test/test_ITF1788/libieeep1788_reduction.jl b/test/ITF1788_tests/libieeep1788_reduction.jl old mode 100755 new mode 100644 similarity index 58% rename from test/test_ITF1788/libieeep1788_reduction.jl rename to test/ITF1788_tests/libieeep1788_reduction.jl index f15e3f3bd..feb2c8dea --- a/test/test_ITF1788/libieeep1788_reduction.jl +++ b/test/ITF1788_tests/libieeep1788_reduction.jl @@ -7,7 +7,6 @@ @test isnan(sum([1.0, -Inf, 2.0, Inf, 3.0])) end - @testset "minimal_sum_abs_test" begin @test sum(abs.([1.0, -2.0, 3.0])) === 6.0 @@ -17,7 +16,6 @@ end @test sum(abs.([1.0, -Inf, 2.0, Inf, 3.0])) === Inf end - @testset "minimal_sum_sqr_test" begin @test sum([1.0, 2.0, 3.0].^2) === 14.0 @@ -27,19 +25,18 @@ end @test sum([1.0, -Inf, 2.0, Inf, 3.0].^2) === Inf end - @testset "minimal_dot_test" begin - @test sum([1.0, 2.0, 3.0] .* [1.0, 2.0, 3.0]) === 14.0 + @test sum(.*([1.0, 2.0, 3.0], [1.0, 2.0, 3.0])) === 14.0 - @test_broken sum([0x10000000000001p0, 0x1p104] .* [0x0fffffffffffffp0, -1.0]) === -1.0 + @test_broken sum(.*([0x10000000000001p0, 0x1p104], [0x0fffffffffffffp0, -1.0])) === -1.0 - @test isnan(sum([1.0, 2.0, NaN, 3.0] .* [1.0, 2.0, 3.0, 4.0])) + @test isnan(sum(.*([1.0, 2.0, NaN, 3.0], [1.0, 2.0, 3.0, 4.0]))) - @test isnan(sum([1.0, 2.0, 3.0, 4.0] .* [1.0, 2.0, NaN, 3.0])) + @test isnan(sum(.*([1.0, 2.0, 3.0, 4.0], [1.0, 2.0, NaN, 3.0]))) - @test isnan(sum([1.0, 2.0, 0.0, 4.0] .* [1.0, 2.0, Inf, 3.0])) + @test isnan(sum(.*([1.0, 2.0, 0.0, 4.0], [1.0, 2.0, Inf, 3.0]))) - @test isnan(sum([1.0, 2.0, -Inf, 4.0] .* [1.0, 2.0, 0.0, 3.0])) + @test isnan(sum(.*([1.0, 2.0, -Inf, 4.0], [1.0, 2.0, 0.0, 3.0]))) end diff --git a/test/ITF1788_tests/libieeep1788_set.jl b/test/ITF1788_tests/libieeep1788_set.jl new file mode 100644 index 000000000..76a81a39a --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_set.jl @@ -0,0 +1,52 @@ +@testset "minimal_intersection_test" begin + + @test intersect_interval(bareinterval(1.0,3.0), bareinterval(2.1,4.0)) === bareinterval(2.1,3.0) + + @test intersect_interval(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === bareinterval(3.0,3.0) + + @test intersect_interval(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0,3.0) + +end +@testset "minimal_intersection_dec_test" begin + + @test intersect_interval(interval(bareinterval(1.0,3.0), com), interval(bareinterval(2.1,4.0), com)) === interval(bareinterval(2.1,3.0), trv) + + @test intersect_interval(interval(bareinterval(1.0,3.0), dac), interval(bareinterval(3.0,4.0), def)) === interval(bareinterval(3.0,3.0), trv) + + @test intersect_interval(interval(bareinterval(1.0,3.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test intersect_interval(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test intersect_interval(interval(bareinterval(1.0,3.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(1.0,3.0), trv) + +end +@testset "minimal_convex_hull_test" begin + + @test hull(bareinterval(1.0,3.0), bareinterval(2.1,4.0)) === bareinterval(1.0,4.0) + + @test hull(bareinterval(1.0,1.0), bareinterval(2.1,4.0)) === bareinterval(1.0,4.0) + + @test hull(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})) === bareinterval(1.0,3.0) + + @test hull(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test hull(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + +end +@testset "minimal_convex_hull_dec_test" begin + + @test hull(interval(bareinterval(1.0,3.0), trv), interval(bareinterval(2.1,4.0), trv)) === interval(bareinterval(1.0,4.0), trv) + + @test hull(interval(bareinterval(1.0,1.0), trv), interval(bareinterval(2.1,4.0), trv)) === interval(bareinterval(1.0,4.0), trv) + + @test hull(interval(bareinterval(1.0,3.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(bareinterval(1.0,3.0), trv) + + @test hull(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test hull(interval(bareinterval(1.0,3.0), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + +end diff --git a/test/ITF1788_tests/mpfi.jl b/test/ITF1788_tests/mpfi.jl new file mode 100644 index 000000000..fbf5dfb72 --- /dev/null +++ b/test/ITF1788_tests/mpfi.jl @@ -0,0 +1,2935 @@ +@testset "mpfi_abs" begin + + @test abs(bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) + + @test abs(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(-Inf, +8.0)) === bareinterval(0.0, +Inf) + + @test abs(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test abs(bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test abs(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test abs(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(0x123456789p-16, 0x123456799p-16)) === bareinterval(0x123456789p-16, 0x123456799p-16) + + @test abs(bareinterval(-0x123456789p-16, 0x123456799p-16)) === bareinterval(0.0, 0x123456799p-16) + +end +@testset "mpfi_acos" begin + + @test acos(bareinterval(-1.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51) + + @test acos(bareinterval(0.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-52) + + @test acos(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test acos(bareinterval(-1.0, -0.5)) === bareinterval(0x10c152382d7365p-51, 0x1921fb54442d19p-51) + + @test acos(bareinterval(-0.75, -0.25)) === bareinterval(0x1d2cf5c7c70f0bp-52, 0x4d6749be4edb1p-49) + + @test acos(bareinterval(-0.5, 0.5)) === bareinterval(0x10c152382d7365p-52, 0x860a91c16b9b3p-50) + + @test acos(bareinterval(0.25, 0.625)) === bareinterval(0x1ca94936b98a21p-53, 0x151700e0c14b25p-52) + + @test acos(bareinterval(-1.0, 1.0)) === bareinterval(0.0, 0x1921fb54442d19p-51) + +end +@testset "mpfi_acosh" begin + + @test acosh(bareinterval(+1.0, +Inf)) === bareinterval(0.0, +Inf) + + @test acosh(bareinterval(+1.5, +Inf)) === bareinterval(0x1ecc2caec51609p-53, +Inf) + + @test acosh(bareinterval(1.0, 1.5)) === bareinterval(0.0, 0xf661657628b05p-52) + + @test acosh(bareinterval(1.5, 1.5)) === bareinterval(0x1ecc2caec51609p-53, 0xf661657628b05p-52) + + @test acosh(bareinterval(2.0, 1000.0)) === bareinterval(0x544909c66010dp-50, 0x799d4ba2a13b5p-48) + +end +@testset "mpfi_add" begin + + @test +(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, +1.0) + + @test +(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +16.0) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -7.0) + + @test +(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-7.0, +8.0) + + @test +(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test +(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test +(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(+8.0, +Inf) + + @test +(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(0.0, +8.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +16.0) + + @test +(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test +(bareinterval(0.0, +Inf), bareinterval(-7.0, +8.0)) === bareinterval(-7.0, +Inf) + + @test +(bareinterval(-0.375, -0x10187p-256), bareinterval(-0.125, 0x1p-240)) === bareinterval(-0x1p-1, -0x187p-256) + + @test +(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x10000000000000p-93, 0x789abcdp0)) === bareinterval(-0x10000000000001p-93, 0x123456789abcdp0) + + @test +(bareinterval(-4.0, +7.0), bareinterval(-0x123456789abcdp-17, 3e300)) === bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947) + + @test +(bareinterval(0x1000100010001p+8, 0x1p+60), bareinterval(0x1000100010001p0, 3.0e300)) === bareinterval(+0x1010101010101p+8, 0x8f596b3002c1bp+947) + + @test +(bareinterval(+4.0, +8.0), bareinterval(-4.0, -2.0)) === bareinterval(0.0, +6.0) + + @test +(bareinterval(+4.0, +8.0), bareinterval(-9.0, -8.0)) === bareinterval(-5.0, 0.0) + +end +@testset "mpfi_add_d" begin + + @test +(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)) === bareinterval(-Inf, -7.0) + + @test +(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, -7.0) + + @test +(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -0x1bffffffffffffp-50) + + @test +(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(-Inf, -8.0e-17) + + @test +(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test +(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0x170ef54646d497p-106) + + @test +(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-Inf, -0x16345785d89fff00p0) + + @test +(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 8.0) + + @test +(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, 0x16345785d8a00100p0) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) + + @test +(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test +(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109) + + @test +(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x114b37f4b51f71p-107, 8.0) + + @test +(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 8.0) + + @test +(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f7p-103, 0x114b37f4b51f7p-103)) === bareinterval(0x114b37f4b51f7p-103, 0x10000000000001p-49) + + @test +(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-0x50b45a75f7e81p-104, +Inf) + + @test +(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, +Inf) + + @test +(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0x142d169d7dfa03p-106, +Inf) + + @test +(bareinterval(-32.0, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) + + @test +(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) + + @test +(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) + + @test +(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) + + @test +(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) + + @test +(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) + + @test +(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)) === bareinterval(0xfff8p-4, 0x10018p-4) + + @test +(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) + + @test +(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) + + @test +(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) + + @test +(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)) === bareinterval(-0x10038p-4, -0x10018p-4) + +end +@testset "mpfi_asin" begin + + @test asin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1921fb54442d19p-52, 0.0) + + @test asin(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test asin(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test asin(bareinterval(-1.0, -0.5)) === bareinterval(-0x1921fb54442d19p-52, -0x10c152382d7365p-53) + + @test asin(bareinterval(-0.75, -0.25)) === bareinterval(-0x1b235315c680ddp-53, -0x102be9ce0b87cdp-54) + + @test asin(bareinterval(-0.5, 0.5)) === bareinterval(-0x860a91c16b9b3p-52, 0x860a91c16b9b3p-52) + + @test asin(bareinterval(0.25, 0.625)) === bareinterval(0x102be9ce0b87cdp-54, 0x159aad71ced00fp-53) + + @test asin(bareinterval(-1.0, 1.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + +end +@testset "mpfi_asinh" begin + + @test asinh(bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -0x152728c91b5f1dp-51) + + @test asinh(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test asinh(bareinterval(-Inf, +8.0)) === bareinterval(-Inf, 0x58d8dc657eaf5p-49) + + @test asinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test asinh(bareinterval(-1.0, 0.0)) === bareinterval(-0x1c34366179d427p-53, 0.0) + + @test asinh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test asinh(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1c34366179d427p-53) + + @test asinh(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x58d8dc657eaf5p-49) + + @test asinh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test asinh(bareinterval(-6.0, -4.0)) === bareinterval(-0x4fbca919fe219p-49, -0x10c1f8a6e80eebp-51) + + @test asinh(bareinterval(-2.0, -0.5)) === bareinterval(-0x2e32430627a11p-49, -0x1ecc2caec51609p-54) + + @test asinh(bareinterval(-1.0, -0.5)) === bareinterval(-0x1c34366179d427p-53, -0x1ecc2caec51609p-54) + + @test asinh(bareinterval(-0.75, -0.25)) === bareinterval(-0x162e42fefa39fp-49, -0xfd67d91ccf31bp-54) + + @test asinh(bareinterval(-0.5, 0.5)) === bareinterval(-0xf661657628b05p-53, 0xf661657628b05p-53) + + @test asinh(bareinterval(0.25, 0.625)) === bareinterval(0xfd67d91ccf31bp-54, 0x4b89d40b2fecdp-51) + + @test asinh(bareinterval(-1.0, 1.0)) === bareinterval(-0x1c34366179d427p-53, 0x1c34366179d427p-53) + + @test asinh(bareinterval(0.125, 17.0)) === bareinterval(0xff5685b4cb4b9p-55, 0xe1be0ba541ef7p-50) + + @test asinh(bareinterval(17.0, 42.0)) === bareinterval(0x1c37c174a83dedp-51, 0x8dca6976ad6bdp-49) + + @test asinh(bareinterval(-42.0, 17.0)) === bareinterval(-0x8dca6976ad6bdp-49, 0xe1be0ba541ef7p-50) + +end +@testset "mpfi_atan" begin + + @test atan(bareinterval(-Inf, -7.0)) === bareinterval(-0x1921fb54442d19p-52, -0x5b7315eed597fp-50) + + @test atan(bareinterval(-Inf, 0.0)) === bareinterval(-0x1921fb54442d19p-52, 0.0) + + @test atan(bareinterval(-Inf, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0xb924fd54cb511p-51) + + @test atan(entireinterval(BareInterval{Float64})) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + + @test atan(bareinterval(-1.0, 0.0)) === bareinterval(-0x1921fb54442d19p-53, 0.0) + + @test atan(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-53) + + @test atan(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0xb924fd54cb511p-51) + + @test atan(bareinterval(0.0, +Inf)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test atan(bareinterval(-6.0, -4.0)) === bareinterval(-0x167d8863bc99bdp-52, -0x54da32547a73fp-50) + + @test atan(bareinterval(-2.0, -0.5)) === bareinterval(-0x11b6e192ebbe45p-52, -0x1dac670561bb4fp-54) + + @test atan(bareinterval(-1.0, -0.5)) === bareinterval(-0x1921fb54442d19p-53, -0x1dac670561bb4fp-54) + + @test atan(bareinterval(-0.75, -0.25)) === bareinterval(-0xa4bc7d1934f71p-52, -0x1f5b75f92c80ddp-55) + + @test atan(bareinterval(-0.5, 0.5)) === bareinterval(-0x1dac670561bb5p-50, 0x1dac670561bb5p-50) + + @test atan(bareinterval(0.25, 0.625)) === bareinterval(0x1f5b75f92c80ddp-55, 0x47802eaf7bfadp-51) + + @test atan(bareinterval(-1.0, 1.0)) === bareinterval(-0x1921fb54442d19p-53, 0x1921fb54442d19p-53) + + @test atan(bareinterval(0.125, 17.0)) === bareinterval(0x1fd5ba9aac2f6dp-56, 0x1831516233f561p-52) + + @test atan(bareinterval(17.0, 42.0)) === bareinterval(0xc18a8b119fabp-47, 0x18c079f3350d27p-52) + + @test atan(bareinterval(-42.0, 17.0)) === bareinterval(-0x18c079f3350d27p-52, 0x1831516233f561p-52) + +end +@testset "mpfi_atan2" begin + + @test atan(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-0x6d9cc4b34bd0dp-50, -0x1700a7c5784633p-53) + + @test atan(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-0x1921fb54442d19p-52, 0.0) + + @test atan(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test atan(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test atan(bareinterval(-17.0, -5.0), bareinterval(-4002.0, -1.0)) === bareinterval(-0x191f6c4c09a81bp-51, -0x1a12a5465464cfp-52) + + @test atan(bareinterval(-17.0, -5.0), bareinterval(1.0, 4002.0)) === bareinterval(-0x1831516233f561p-52, -0xa3c20ea13f5e5p-61) + + @test atan(bareinterval(5.0, 17.0), bareinterval(1.0, 4002.0)) === bareinterval(0xa3c20ea13f5e5p-61, 0x1831516233f561p-52) + + @test atan(bareinterval(5.0, 17.0), bareinterval(-4002.0, -1.0)) === bareinterval(0x1a12a5465464cfp-52, 0x191f6c4c09a81bp-51) + + @test atan(bareinterval(-17.0, 5.0), bareinterval(-4002.0, 1.0)) === bareinterval(-0x1921fb54442d19p-51, 0x1921fb54442d19p-51) + +end +@testset "mpfi_atanh" begin + + @test atanh(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test atanh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test atanh(bareinterval(0.0, +1.0)) === bareinterval(0.0, +Inf) + + @test atanh(bareinterval(-1.0, -0.5)) === bareinterval(-Inf, -0x8c9f53d568185p-52) + + @test atanh(bareinterval(-0.75, -0.25)) === bareinterval(-0x3e44e55c64b4bp-50, -0x1058aefa811451p-54) + + @test atanh(bareinterval(-0.5, 0.5)) === bareinterval(-0x1193ea7aad030bp-53, 0x1193ea7aad030bp-53) + + @test atanh(bareinterval(0.25, 0.625)) === bareinterval(0x1058aefa811451p-54, 0x2eec3bb76c2b3p-50) + + @test atanh(bareinterval(-1.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0.125, 1.0)) === bareinterval(0x1015891c9eaef7p-55, +Inf) + +end +@testset "mpfi_bounded_p" begin + + @test iscommon(bareinterval(-Inf, -8.0)) === false + + @test iscommon(bareinterval(-Inf, 0.0)) === false + + @test iscommon(bareinterval(-Inf, 5.0)) === false + + @test iscommon(entireinterval(BareInterval{Float64})) === false + + @test iscommon(bareinterval(-8.0, 0.0)) === true + + @test iscommon(bareinterval(0.0, 0.0)) === true + + @test iscommon(bareinterval(0.0, 5.0)) === true + + @test iscommon(bareinterval(0.0, +Inf)) === false + + @test iscommon(bareinterval(5.0, +Inf)) === false + + @test iscommon(bareinterval(-34.0, -17.0)) === true + + @test iscommon(bareinterval(-8.0, -1.0)) === true + + @test iscommon(bareinterval(-34.0, 17.0)) === true + + @test iscommon(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test iscommon(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test iscommon(bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test iscommon(bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end +@testset "mpfi_cbrt" begin + + @test cbrt(bareinterval(-Inf, -125.0)) === bareinterval(-Inf, -5.0) + + @test cbrt(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test cbrt(bareinterval(-Inf, +64.0)) === bareinterval(-Inf, +4.0) + + @test cbrt(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cbrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test cbrt(bareinterval(0.0, +27.0)) === bareinterval(0.0, +3.0) + + @test cbrt(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test cbrt(bareinterval(0x40p0, 0x7dp0)) === bareinterval(4.0, 5.0) + + @test cbrt(bareinterval(-0x1856e4be527197p-354, 0xd8p0)) === bareinterval(-0x2e5e58c0083b7bp-154, 6.0) + + @test cbrt(bareinterval(0x141a9019a2184dp-1047, 0xc29c78c66ac0fp-678)) === bareinterval(0x2b8172e535d44dp-385, 0x24cbd1c55aaa1p-258) + +end +@testset "mpfi_cos" begin + + @test cos(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-Inf, +8.0)) === bareinterval(-1.0, 1.0) + + @test cos(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-1.0, 0.0)) === bareinterval(0x114a280fb5068bp-53, 1.0) + + @test cos(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test cos(bareinterval(0.0, +1.0)) === bareinterval(0x114a280fb5068bp-53, 1.0) + + @test cos(bareinterval(0.0, +8.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(0.0, +Inf)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-2.0, -0.5)) === bareinterval(-0x1aa22657537205p-54, 0x1c1528065b7d5p-49) + + @test cos(bareinterval(-1.0, -0.25)) === bareinterval(0x114a280fb5068bp-53, 0xf80aa4fbef751p-52) + + @test cos(bareinterval(-0.5, 0.5)) === bareinterval(0x1c1528065b7d4fp-53, 1.0) + + @test cos(bareinterval(-4.5, 0.625)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(1.0, 0x3243f6a8885a3p-48)) === bareinterval(-1.0, 0x4528a03ed41a3p-51) + + @test cos(bareinterval(0.125, 17.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(17.0, 42.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -2.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -3.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 1.0) + + @test cos(bareinterval(-7.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 1.0) + + @test cos(bareinterval(-7.0, -6.0)) === bareinterval(0x181ff79ed92017p-53, 1.0) + + @test cos(bareinterval(-7.0, -7.0)) === bareinterval(0x181ff79ed92017p-53, 0x181ff79ed92018p-53) + + @test cos(bareinterval(-6.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-6.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-6.0, -1.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -2.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -3.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -6.0)) === bareinterval(0x1eb9b7097822f5p-53, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-5.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-5.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-5.0, -1.0)) === bareinterval(-1.0, 0x114a280fb5068cp-53) + + @test cos(bareinterval(-5.0, -2.0)) === bareinterval(-1.0, 0x122785706b4adap-54) + + @test cos(bareinterval(-5.0, -3.0)) === bareinterval(-1.0, 0x122785706b4adap-54) + + @test cos(bareinterval(-5.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 0x122785706b4adap-54) + + @test cos(bareinterval(-5.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 0x122785706b4adap-54) + + @test cos(bareinterval(-4.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-4.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-4.0, -1.0)) === bareinterval(-1.0, 0x114a280fb5068cp-53) + + @test cos(bareinterval(-4.0, -2.0)) === bareinterval(-1.0, -0x1aa22657537204p-54) + + @test cos(bareinterval(-4.0, -3.0)) === bareinterval(-1.0, -0x14eaa606db24c0p-53) + + @test cos(bareinterval(-4.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, -0x14eaa606db24c0p-53) + +end +@testset "mpfi_cosh" begin + + @test cosh(bareinterval(-Inf, -7.0)) === bareinterval(0x11228949ba3a8bp-43, +Inf) + + @test cosh(bareinterval(-Inf, 0.0)) === bareinterval(1.0, +Inf) + + @test cosh(bareinterval(-Inf, +8.0)) === bareinterval(1.0, +Inf) + + @test cosh(entireinterval(BareInterval{Float64})) === bareinterval(1.0, +Inf) + + @test cosh(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x18b07551d9f551p-52) + + @test cosh(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test cosh(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x18b07551d9f551p-52) + + @test cosh(bareinterval(0.0, +8.0)) === bareinterval(1.0, 0x1749eaa93f4e77p-42) + + @test cosh(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test cosh(bareinterval(-0.125, 0.0)) === bareinterval(1.0, 0x10200aac16db6fp-52) + + @test cosh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(1.0, 0x120ac1862ae8d1p-52) + + @test cosh(bareinterval(-4.5, -0.625)) === bareinterval(0x99d310a496b6dp-51, 0x1681ceb0641359p-47) + + @test cosh(bareinterval(1.0, 3.0)) === bareinterval(0x18b07551d9f55p-48, 0x1422a497d6185fp-49) + + @test cosh(bareinterval(17.0, 0xb145bb71d3dbp-38)) === bareinterval(0x1709348c0ea503p-29, 0x3ffffffffffa34p+968) + +end +@testset "mpfi_cot" begin + + @test cot(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test cot(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, 0xe07cf2eb32f0bp-49) + + @test cot(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x148c05d04e1cfdp-53) + + @test cot(bareinterval(0.0, +1.0)) === bareinterval(0x148c05d04e1cfdp-53, +Inf) + + @test cot(bareinterval(0.0, +3.0)) === bareinterval(-0xe07cf2eb32f0bp-49, +Inf) + + @test cot(bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-3.0, -2.0)) === bareinterval(0x1d4a42e92faa4dp-54, 0xe07cf2eb32f0bp-49) + + @test cot(bareinterval(-3.0, -0x1921fb54442d19p-52)) === bareinterval(0x5cb3b399d747fp-103, 0xe07cf2eb32f0bp-49) + + @test cot(bareinterval(-2.0, 0x1921fb54442d19p-52)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(0.125, 0.5)) === bareinterval(0xea4d6bf23e051p-51, 0x1fd549f047f2bbp-50) + + @test cot(bareinterval(0.125, 0x1921fb54442d19p-52)) === bareinterval(-0x172cece675d1fdp-105, 0x1fd549f047f2bbp-50) + + @test cot(bareinterval(0x1921fb54442d19p-52, 4.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(4.0, 0x3243f6a8885a3p-47)) === bareinterval(-0x1d02967c31cdb5p-1, 0x1ba35ba1c6b75dp-53) + + @test cot(bareinterval(0x13a28c59d5433bp-44, 0x9d9462ceaa19dp-43)) === bareinterval(0x148c05d04e1fb7p-53, 0x1cefdde7c84c27p-4) + +end +@testset "mpfi_coth" begin + + @test coth(bareinterval(-Inf, -7.0)) === bareinterval(-0x100001be6c882fp-52, -1.0) + + @test coth(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) + + @test coth(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test coth(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test coth(bareinterval(-8.0, 0.0)) === bareinterval(-Inf, -0x1000003c6ab7e7p-52) + + @test coth(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -0x10145b3cc9964bp-52) + + @test coth(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x150231499b6b1dp-52) + + @test coth(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test coth(bareinterval(0.0, +1.0)) === bareinterval(0x150231499b6b1dp-52, +Inf) + + @test coth(bareinterval(0.0, +3.0)) === bareinterval(0x10145b3cc9964bp-52, +Inf) + + @test coth(bareinterval(0.0, +8.0)) === bareinterval(0x1000003c6ab7e7p-52, +Inf) + + @test coth(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test coth(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test coth(bareinterval(-10.0, -8.0)) === bareinterval(-0x1000003c6ab7e8p-52, -0x100000011b4865p-52) + + @test coth(bareinterval(7.0, 17.0)) === bareinterval(0x1000000000000fp-52, 0x100001be6c882fp-52) + + @test coth(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)) === bareinterval(0x114fc6ceb099bdp-51, 0x10005554fa502fp-46) + +end +@testset "mpfi_csc" begin + + @test csc(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test csc(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -1.0) + + @test csc(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1303aa9620b223p-52) + + @test csc(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test csc(bareinterval(0.0, +1.0)) === bareinterval(0x1303aa9620b223p-52, +Inf) + + @test csc(bareinterval(0.0, 3.0)) === bareinterval(1.0, +Inf) + + @test csc(bareinterval(0.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -4.0)) === bareinterval(1.0, 0x1ca19615f903dap-51) + + @test csc(bareinterval(-6.0, -5.0)) === bareinterval(0x10af73f9df86b7p-52, 0x1ca19615f903dap-51) + + @test csc(bareinterval(-6.0, -6.0)) === bareinterval(0x1ca19615f903d9p-51, 0x1ca19615f903dap-51) + + @test csc(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -4.0)) === bareinterval(1.0, 0x15243e8b2f4642p-52) + + @test csc(bareinterval(-5.0, -5.0)) === bareinterval(0x10af73f9df86b7p-52, 0x10af73f9df86b8p-52) + + @test csc(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -4.0)) === bareinterval(0x15243e8b2f4641p-52, 0x15243e8b2f4642p-52) + + @test csc(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -1.0) + + @test csc(bareinterval(-3.0, -1.0)) === bareinterval(-0x1c583c440ab0dap-50, -1.0) + + @test csc(bareinterval(-3.0, -2.0)) === bareinterval(-0x1c583c440ab0dap-50, -0x119893a272f912p-52) + + @test csc(bareinterval(-3.0, -3.0)) === bareinterval(-0x1c583c440ab0dap-50, -0x1c583c440ab0d9p-50) + + @test csc(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 0.0)) === bareinterval(-Inf, -1.0) + + @test csc(bareinterval(-2.0, -1.0)) === bareinterval(-0x1303aa9620b224p-52, -1.0) + + @test csc(bareinterval(-2.0, -2.0)) === bareinterval(-0x119893a272f913p-52, -0x119893a272f912p-52) + + @test csc(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1303aa9620b223p-52) + + @test csc(bareinterval(-1.0, -1.0)) === bareinterval(-0x1303aa9620b224p-52, -0x1303aa9620b223p-52) + + @test csc(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 3.0)) === bareinterval(1.0, 0x1c583c440ab0dap-50) + + @test csc(bareinterval(1.0, 2.0)) === bareinterval(1.0, 0x1303aa9620b224p-52) + + @test csc(bareinterval(1.0, 1.0)) === bareinterval(0x1303aa9620b223p-52, 0x1303aa9620b224p-52) + + @test csc(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 3.0)) === bareinterval(0x119893a272f912p-52, 0x1c583c440ab0dap-50) + + @test csc(bareinterval(2.0, 2.0)) === bareinterval(0x119893a272f912p-52, 0x119893a272f913p-52) + + @test csc(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 3.0)) === bareinterval(0x1c583c440ab0d9p-50, 0x1c583c440ab0dap-50) + + @test csc(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(4.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -1.0) + + @test csc(bareinterval(4.0, 5.0)) === bareinterval(-0x15243e8b2f4642p-52, -1.0) + + @test csc(bareinterval(4.0, 4.0)) === bareinterval(-0x15243e8b2f4642p-52, -0x15243e8b2f4641p-52) + + @test csc(bareinterval(5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(5.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -0x10af73f9df86b7p-52) + + @test csc(bareinterval(5.0, 5.0)) === bareinterval(-0x10af73f9df86b8p-52, -0x10af73f9df86b7p-52) + + @test csc(bareinterval(6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(6.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -0x1ca19615f903d9p-51) + + @test csc(bareinterval(7.0, 7.0)) === bareinterval(+0x185a86a4ceb06cp-52, +0x185a86a4ceb06dp-52) + +end +@testset "mpfi_csch" begin + + @test csch(bareinterval(-Inf, -7.0)) === bareinterval(-0x1de16d3cffcd54p-62, 0.0) + + @test csch(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test csch(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test csch(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test csch(bareinterval(-8.0, 0.0)) === bareinterval(-Inf, -0x15fc212d92371ap-63) + + @test csch(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -0x198de80929b901p-56) + + @test csch(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1b3ab8a78b90c0p-53) + + @test csch(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test csch(bareinterval(0.0, +1.0)) === bareinterval(0x1b3ab8a78b90c0p-53, +Inf) + + @test csch(bareinterval(0.0, +3.0)) === bareinterval(0x198de80929b901p-56, +Inf) + + @test csch(bareinterval(0.0, +8.0)) === bareinterval(0x15fc212d92371ap-63, +Inf) + + @test csch(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test csch(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csch(bareinterval(-10.0, -8.0)) === bareinterval(-0x15fc212d92371bp-63, -0x17cd79b63733a0p-66) + + @test csch(bareinterval(7.0, 17.0)) === bareinterval(0x1639e3175a68a7p-76, 0x1de16d3cffcd54p-62) + + @test csch(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)) === bareinterval(0x1eb45dc88defeap-52, 0x3fff555693e722p-48) + +end +@testset "mpfi_d_div" begin + + @test /(bareinterval(-0x170ef54646d496p-107, -0x170ef54646d496p-107), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1a5a3ce29a1787p-110) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x170ef54646d496p-107, 0x170ef54646d496p-107), bareinterval(-Inf, -7.0)) === bareinterval(-0x1a5a3ce29a1787p-110, 0.0) + + @test /(bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106), bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test /(bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)) === bareinterval(-Inf, -0x13c3ada9f391a5p-110) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, 7.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)) === bareinterval(0x13c3ada9f391a5p-110, +Inf) + + @test /(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-2.5, -2.5), bareinterval(-8.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.5, -2.5), bareinterval(-8.0, -5.0)) === bareinterval(0x5p-4, 0.5) + + @test /(bareinterval(-2.5, -2.5), bareinterval(25.0, 40.0)) === bareinterval(-0x1999999999999ap-56, -0x1p-4) + + @test /(bareinterval(-2.5, -2.5), bareinterval(-16.0, -7.0)) === bareinterval(0x5p-5, 0x16db6db6db6db7p-54) + + @test /(bareinterval(-2.5, -2.5), bareinterval(11.0, 143.0)) === bareinterval(-0x1d1745d1745d18p-55, -0x11e6efe35b4cfap-58) + + @test /(bareinterval(33.125, 33.125), bareinterval(8.28125, 530.0)) === bareinterval(0x1p-4, 4.0) + + @test /(bareinterval(33.125, 33.125), bareinterval(-530.0, -496.875)) === bareinterval(-0x11111111111112p-56, -0x1p-4) + + @test /(bareinterval(33.125, 33.125), bareinterval(54.0, 265.0)) === bareinterval(0.125, 0x13a12f684bda13p-53) + + @test /(bareinterval(33.125, 33.125), bareinterval(52.0, 54.0)) === bareinterval(0x13a12f684bda12p-53, 0x14627627627628p-53) + +end +@testset "mpfi_diam_abs" begin + + @test diam(bareinterval(-Inf, -8.0)) === +Inf + + @test diam(bareinterval(-Inf, 0.0)) === +Inf + + @test diam(bareinterval(-Inf, 5.0)) === +Inf + + @test diam(entireinterval(BareInterval{Float64})) === +Inf + + @test diam(bareinterval(-Inf, 0.0)) === +Inf + + @test diam(bareinterval(-8.0, 0.0)) === +8.0 + + @test diam(bareinterval(0.0, 0.0)) === 0.0 + + @test diam(bareinterval(0.0, 5.0)) === +5.0 + + @test diam(bareinterval(0.0, +Inf)) === +Inf + + @test diam(bareinterval(-34.0, -17.0)) === 17.0 + +end +@testset "mpfi_div" begin + + @test /(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-0x75bcd15p0, -0x754ep0), bareinterval(-0x11ep0, -0x9p0)) === bareinterval(0x69p0, 0xd14fadp0) + + @test /(bareinterval(-0x75bcd15p0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+4, -0x9p0)) === bareinterval(0x7.0ef61537b1704p-12, 0xd14fadp0) + + @test /(bareinterval(-0x1.02f0415f9f596p+0, -0x754ep-16), bareinterval(-0x11ep0, -0x7.62ce64fbacd2cp-8)) === bareinterval(0x69p-16, 0x2.30ee5eef9c36cp+4) + + @test /(bareinterval(-0x1.02f0415f9f596p+0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+0, -0x7.62ce64fbacd2cp-8)) === bareinterval(0x7.0ef61537b1704p-8, 0x2.30ee5eef9c36cp+4) + + @test /(bareinterval(-0xacbp+256, -0x6f9p0), bareinterval(-0x7p0, 0.0)) === bareinterval(0xffp0, +Inf) + + @test /(bareinterval(-0x100p0, -0xe.bb80d0a0824ep-4), bareinterval(-0x1.7c6d760a831fap+0, 0.0)) === bareinterval(0x9.e9f24790445fp-4, +Inf) + + @test /(bareinterval(-0x1.25f2d73472753p+0, -0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-100.0, -15.0), bareinterval(0.0, +3.0)) === bareinterval(-Inf, -5.0) + + @test /(bareinterval(-2.0, -0x1.25f2d73472753p+0), bareinterval(0.0, +0x9.3b0c8074ccc18p-4)) === bareinterval(-Inf, -0x1.fd8457415f917p+0) + + @test /(bareinterval(-0x123456789p0, -0x754ep+4), bareinterval(0x40bp0, 0x11ep+4)) === bareinterval(-0x480b3bp0, -0x69p0) + + @test /(bareinterval(-0xd.67775e4b8588p-4, -0x754ep-53), bareinterval(0x4.887091874ffc8p+0, 0x11ep+201)) === bareinterval(-0x2.f5008d2df94ccp-4, -0x69p-254) + + @test /(bareinterval(-0x123456789p0, -0x1.b0a62934c76e9p+0), bareinterval(0x40bp-17, 0x2.761ec797697a4p-4)) === bareinterval(-0x480b3bp+17, -0xa.fc5e7338f3e4p+0) + + @test /(bareinterval(-0xd.67775e4b8588p+0, -0x1.b0a62934c76e9p+0), bareinterval(0x4.887091874ffc8p-4, 0x2.761ec797697a4p+4)) === bareinterval(-0x2.f5008d2df94ccp+4, -0xa.fc5e7338f3e4p-8) + + @test /(bareinterval(-0x75bcd15p0, 0.0), bareinterval(-0x90p0, -0x9p0)) === bareinterval(0.0, 0xd14fadp0) + + @test /(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(-0x1p-8, -0xf.5e4900c9c19fp-12)) === bareinterval(0.0, 0x1.4fdb41a33d6cep+4) + + @test /(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(-0xaaaaaaaaap0, 0.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-0x1.25f2d73472753p+0, 0.0), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(0.0, +0x3p0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-0x75bcd15p0, 0.0), bareinterval(0x9p0, 0x90p0)) === bareinterval(-0xd14fadp0, 0.0) + + @test /(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(0xf.5e4900c9c19fp-12, 0x9p0)) === bareinterval(-0x1.4fdb41a33d6cep+4, 0.0) + + @test /(bareinterval(-0x75bcd15p0, 0xa680p0), bareinterval(-0xaf6p0, -0x9p0)) === bareinterval(-0x1280p0, 0xd14fadp0) + + @test /(bareinterval(-0x12p0, 0x10p0), bareinterval(-0xbbbbbbbbbbp0, -0x9p0)) === bareinterval(-0x1.c71c71c71c71dp0, 2.0) + + @test /(bareinterval(-0x1p0, 0x754ep-16), bareinterval(-0xccccccccccp0, -0x11ep0)) === bareinterval(-0x69p-16, 0xe.525982af70c9p-12) + + @test /(bareinterval(-0xb.5b90b4d32136p-4, 0x6.e694ac6767394p+0), bareinterval(-0xdddddddddddp0, -0xc.f459be9e80108p-4)) === bareinterval(-0x8.85e40b3c3f63p+0, 0xe.071cbfa1de788p-4) + + @test /(bareinterval(-0xacbp+256, 0x6f9p0), bareinterval(-0x7p0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x1.25f2d73472753p+0, +0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, +15.0), bareinterval(-3.0, +3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x754ep0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0x69p0, 0xbaffep+12) + + @test /(bareinterval(-0x10p0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0xe.525982af70c9p-8, 0xbaffep+12) + + @test /(bareinterval(-0x754ep0, 0x1p+10), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0x69p0, 0xe.525982af70c9p-2) + + @test /(bareinterval(-0x1.18333622af827p+0, 0x2.14b836907297p+0), bareinterval(0x1.263147d1f4bcbp+0, 0x111p0)) === bareinterval(-0xf.3d2f5db8ec728p-4, 0x1.cf8fa732de129p+0) + + @test /(bareinterval(0.0, 0x75bcd15p0), bareinterval(-0xap0, -0x9p0)) === bareinterval(-0xd14fadp0, 0.0) + + @test /(bareinterval(0.0, 0x1.acbf1702af6edp+0), bareinterval(-0x0.fp0, -0xe.3d7a59e2bdacp-4)) === bareinterval(-0x1.e1bb896bfda07p+0, 0.0) + + @test /(bareinterval(0.0, 0xap0), bareinterval(-0x9p0, 0.0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, 0xap0), bareinterval(-1.0, +1.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0x75bcd15p0), bareinterval(+0x9p0, +0xap0)) === bareinterval(0.0, 0xd14fadp0) + + @test /(bareinterval(0.0, 0x1.5f6b03dc8c66fp+0), bareinterval(+0x2.39ad24e812dcep+0, 0xap0)) === bareinterval(0.0, 0x9.deb65b02baep-4) + + @test /(bareinterval(0x754ep0, 0x75bcd15p0), bareinterval(-0x11ep0, -0x9p0)) === bareinterval(-0xd14fadp0, -0x69p0) + + @test /(bareinterval(0x754ep-16, 0x1.008a3accc766dp+4), bareinterval(-0x11ep0, -0x2.497403b31d32ap+0)) === bareinterval(-0x7.02d3edfbc8b6p+0, -0x69p-16) + + @test /(bareinterval(0x9.ac412ff1f1478p-4, 0x75bcd15p0), bareinterval(-0x1.5232c83a0e726p+4, -0x9p0)) === bareinterval(-0xd14fadp0, -0x7.52680a49e5d68p-8) + + @test /(bareinterval(0xe.1552a314d629p-4, 0x1.064c5adfd0042p+0), bareinterval(-0x5.0d4d319a50b04p-4, -0x2.d8f51df1e322ep-4)) === bareinterval(-0x5.c1d97d57d81ccp+0, -0x2.c9a600c455f5ap+0) + + @test /(bareinterval(0x754ep0, 0xeeeep0), bareinterval(-0x11ep0, 0.0)) === bareinterval(-Inf, -0x69p0) + + @test /(bareinterval(0x1.a9016514490e6p-4, 0xeeeep0), bareinterval(-0xe.316e87be0b24p-4, 0.0)) === bareinterval(-Inf, -0x1.df1cc82e6a583p-4) + + @test /(bareinterval(5.0, 6.0), bareinterval(-0x5.0d4d319a50b04p-4, 0x2.d8f51df1e322ep-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0x754ep0, +0xeeeeep0), bareinterval(0.0, +0x11ep0)) === bareinterval(0x69p0, +Inf) + + @test /(bareinterval(0x1.7f03f2a978865p+0, 0xeeeeep0), bareinterval(0.0, 0x1.48b08624606b9p+0)) === bareinterval(0x1.2a4fcda56843p+0, +Inf) + + @test /(bareinterval(0x5efc1492p0, 0x1ba2dc763p0), bareinterval(0x2fdd1fp0, 0x889b71p0)) === bareinterval(0xb2p0, 0x93dp0) + + @test /(bareinterval(0x1.d7c06f9ff0706p-8, 0x1ba2dc763p0), bareinterval(0x2fdd1fp-20, 0xe.3d7a59e2bdacp+0)) === bareinterval(0x2.120d75be74b54p-12, 0x93dp+20) + + @test /(bareinterval(0x5.efc1492p-4, 0x1.008a3accc766dp+0), bareinterval(0x2.497403b31d32ap+0, 0x8.89b71p+0)) === bareinterval(0xb.2p-8, 0x7.02d3edfbc8b6p-4) + + @test /(bareinterval(0x8.440e7d65be6bp-8, 0x3.99982e9eae09ep+0), bareinterval(0x8.29fa8d0659e48p-4, 0xc.13d2fd762e4a8p-4)) === bareinterval(0xa.f3518768b206p-8, 0x7.0e2acad54859cp+0) + +end +@testset "mpfi_div_d" begin + + @test /(bareinterval(-Inf, -7.0), bareinterval(-7.0, -7.0)) === bareinterval(1.0, +Inf) + + @test /(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf, -7.0), bareinterval(7.0, 7.0)) === bareinterval(-Inf, -1.0) + + @test /(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-Inf, 8.0), bareinterval(-3.0, -3.0)) === bareinterval(-0x15555555555556p-51, +Inf) + + @test /(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf, 8.0), bareinterval(3.0, 3.0)) === bareinterval(-Inf, 0x15555555555556p-51) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x1d9b1f5d20d556p+5, 0.0) + + @test /(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)) === bareinterval(0.0, 0x1d9b1f5d20d556p+5) + + @test /(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-0x10000000000001p-20, -0x10000000000001p-53), bareinterval(-1.0, -1.0)) === bareinterval(0x10000000000001p-53, 0x10000000000001p-20) + + @test /(bareinterval(-0x10000000000002p-20, -0x10000000000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x10000000000001p-19, -1.0) + + @test /(bareinterval(-0x10000000000001p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x1p+33, -0x1000001fffffffp-52) + + @test /(bareinterval(-0x10000000000002p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x10000000000001p-19, -0x1000001fffffffp-52) + + @test /(bareinterval(-0x123456789abcdfp-53, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1p-7, 0x1p-53) + + @test /(bareinterval(-0x123456789abcdfp-53, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1c200000000002p-106, 0x1p-53) + + @test /(bareinterval(-1.0, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1p-7, 0x1c200000000001p-105) + + @test /(bareinterval(-1.0, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1c200000000002p-106, 0x1c200000000001p-105) + +end +@testset "mpfi_d_sub" begin + + @test -(bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107), bareinterval(-Inf, -7.0)) === bareinterval(0x1bffffffffffffp-50, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) + + @test -(bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) + + @test -(bareinterval(-0x170ef54646d497p-96, -0x170ef54646d497p-96), bareinterval(-Inf, 0.0)) === bareinterval(-0x170ef54646d497p-96, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test -(bareinterval(0x170ef54646d497p-96, 0x170ef54646d497p-96), bareinterval(-Inf, 0.0)) === bareinterval(0x170ef54646d497p-96, +Inf) + + @test -(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === bareinterval(-0x16345785d8a00100p0, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)) === bareinterval(-8.0, +Inf) + + @test -(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === bareinterval(0x16345785d89fff00p0, +Inf) + + @test -(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0x170ef54646d497p-105, 0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109) + + @test -(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)) === bareinterval(-0x10000000000001p-49, -0x114b37f4b51f71p-107) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)) === bareinterval(-8.0, 0.0) + + @test -(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)) === bareinterval(-8.0, 0x114b37f4b51f71p-107) + + @test -(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)) === bareinterval(-Inf, -0x50b45a75f7e81p-104) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test -(bareinterval(-0x142d169d7dfa03p-106, -0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)) === bareinterval(-Inf, -0x142d169d7dfa03p-106) + + @test -(bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47), bareinterval(17.0, 32.0)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) + + @test -(bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47), bareinterval(17.0, 0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) + + @test -(bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 32.0)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) + + @test -(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) + + @test -(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) + + @test -(bareinterval(256.5, 256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) + + @test -(bareinterval(4097.5, 4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)) === bareinterval(0xfff8p-4, 0x10018p-4) + + @test -(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) + + @test -(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) + + @test -(bareinterval(-256.5, -256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) + + @test -(bareinterval(-4097.5, -4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)) === bareinterval(-0x10038p-4, -0x10018p-4) + +end +@testset "mpfi_exp" begin + + @test exp(bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1de16b9c24a98fp-63) + + @test exp(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) + + @test exp(bareinterval(-Inf, +1.0)) === bareinterval(0.0, 0x15bf0a8b14576ap-51) + + @test exp(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test exp(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test exp(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x15bf0a8b14576ap-51) + + @test exp(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test exp(bareinterval(-123.0, -17.0)) === bareinterval(0x1766b45dd84f17p-230, 0x1639e3175a689dp-77) + + @test exp(bareinterval(-0.125, 0.25)) === bareinterval(0x1c3d6a24ed8221p-53, 0x148b5e3c3e8187p-52) + + @test exp(bareinterval(-0.125, 0.0)) === bareinterval(0x1c3d6a24ed8221p-53, 1.0) + + @test exp(bareinterval(0.0, 0.25)) === bareinterval(1.0, 0x148b5e3c3e8187p-52) + + @test exp(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x10000000000140p-52, 0x10000000000161p-52) + +end +@testset "mpfi_exp2" begin + + @test exp2(bareinterval(-Inf, -1.0)) === bareinterval(0.0, 0.5) + + @test exp2(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) + + @test exp2(bareinterval(-Inf, 1.0)) === bareinterval(0.0, 2.0) + + @test exp2(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test exp2(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test exp2(bareinterval(0.0, +1.0)) === bareinterval(1.0, 2.0) + + @test exp2(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test exp2(bareinterval(-123.0, -17.0)) === bareinterval(0x1p-123, 0x1p-17) + + @test exp2(bareinterval(-7.0, 7.0)) === bareinterval(0x1p-7, 0x1p+7) + + @test exp2(bareinterval(-0.125, 0.25)) === bareinterval(0x1d5818dcfba487p-53, 0x1306fe0a31b716p-52) + + @test exp2(bareinterval(-0.125, 0.0)) === bareinterval(0x1d5818dcfba487p-53, 1.0) + + @test exp2(bareinterval(0.0, 0.25)) === bareinterval(1.0, 0x1306fe0a31b716p-52) + + @test exp2(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x100000000000ddp-52, 0x100000000000f4p-52) + +end +@testset "mpfi_expm1" begin + + @test expm1(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, -0x1ff887a518f6d5p-53) + + @test expm1(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 0.0) + + @test expm1(bareinterval(-Inf, 1.0)) === bareinterval(-1.0, 0x1b7e151628aed3p-52) + + @test expm1(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, +Inf) + + @test expm1(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test expm1(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1b7e151628aed3p-52) + + @test expm1(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test expm1(bareinterval(-36.0, -36.0)) === bareinterval(-0x1ffffffffffffep-53, -0x1ffffffffffffdp-53) + + @test expm1(bareinterval(-0.125, 0.25)) === bareinterval(-0x1e14aed893eef4p-56, 0x122d78f0fa061ap-54) + + @test expm1(bareinterval(-0.125, 0.0)) === bareinterval(-0x1e14aed893eef4p-56, 0.0) + + @test expm1(bareinterval(0.0, 0.25)) === bareinterval(0.0, 0x122d78f0fa061ap-54) + + @test expm1(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x140000000000c8p-96, 0x160000000000f3p-96) + +end +@testset "mpfi_hypot" begin + + @test hypot(bareinterval(-Inf, -7.0), bareinterval(-1.0, 8.0)) === bareinterval(7.0, +Inf) + + @test hypot(bareinterval(-Inf, 0.0), bareinterval(8.0, +Inf)) === bareinterval(8.0, +Inf) + + @test hypot(bareinterval(-Inf, 8.0), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(entireinterval(BareInterval{Float64}), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) + + @test hypot(bareinterval(0.0, 3.0), bareinterval(-4.0, 0.0)) === bareinterval(0.0, 5.0) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)) === bareinterval(0.0, 8.0) + + @test hypot(bareinterval(0.0, +Inf), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(8.0, +Inf)) === bareinterval(8.0, +Inf) + + @test hypot(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(0.0, 5.0), bareinterval(0.0, 12.0)) === bareinterval(0.0, 13.0) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test hypot(bareinterval(0.0, +Inf), bareinterval(-7.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(-12.0, -5.0), bareinterval(-35.0, -12.0)) === bareinterval(13.0, 37.0) + + @test hypot(bareinterval(6.0, 7.0), bareinterval(1.0, 24.0)) === bareinterval(0x1854bfb363dc39p-50, 25.0) + + @test hypot(bareinterval(-4.0, +7.0), bareinterval(-25.0, 3.0)) === bareinterval(0.0, 0x19f625847a5899p-48) + + @test hypot(bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48), bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48)) === bareinterval(0x113463fa37014dp-49, 0x125b89092b8fc0p-47) + +end +@testset "mpfi_intersect" begin + + @test intersect_interval(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)) === bareinterval(0x12p0, 0x34p0) + +end +@testset "mpfi_inv" begin + + @test inv(bareinterval(-Inf, -.25)) === bareinterval(-4.0, 0.0) + + @test inv(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test inv(bareinterval(-Inf, +4.0)) === entireinterval(BareInterval{Float64}) + + @test inv(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, +2.0)) === bareinterval(+.5, +Inf) + + @test inv(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test inv(bareinterval(-8.0, -2.0)) === bareinterval(-.5, -0.125) + + @test inv(bareinterval(0x1p-4, 0x1440c131282cd9p-53)) === bareinterval(0x1947bfce1bc417p-52, 0x10p0) + + @test inv(bareinterval(0x19f1a539c91fddp-55, +64.0)) === bareinterval(0.015625, 0x13bc205a76b3fdp-50) + + @test inv(bareinterval(-0xae83b95effd69p-52, -0x63e3cb4ed72a3p-53)) === bareinterval(-0x1480a9b5772a23p-50, -0x177887d65484c9p-52) + +end +@testset "mpfi_is_neg" begin + + @test precedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false + + @test precedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false + +end +@testset "mpfi_is_nonneg" begin + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end +@testset "mpfi_is_nonpos" begin + + @test isweakless(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false + + @test isweakless(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(8.0, 0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false + +end +@testset "mpfi_is_pos" begin + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false + + @test precedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end +@testset "mpfi_is_strictly_neg" begin + + @test strictprecedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true + + @test strictprecedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true + + @test strictprecedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true + + @test strictprecedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false + +end +@testset "mpfi_is_strictly_pos" begin + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end +@testset "mpfi_log" begin + + @test log(bareinterval(0.0, +1.0)) === bareinterval(-Inf, 0.0) + + @test log(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test log(bareinterval(+1.0, +1.0)) === bareinterval(0.0, 0.0) + + @test log(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)) === bareinterval(0xc6dc8a2928579p-47, 0x1a9500bc7ffcc5p-48) + + @test log(bareinterval(0xb616ab8b683b5p-52, +1.0)) === bareinterval(-0x2b9b8b1fb2fb9p-51, 0.0) + + @test log(bareinterval(+1.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x5380455576989p-46) + + @test log(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0xbdee7228cfedfp-47, 0x1b3913fc99f555p-48) + +end +@testset "mpfi_log1p" begin + + @test log1p(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test log1p(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test log1p(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x162e42fefa39f0p-53) + + @test log1p(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test log1p(bareinterval(-0xb616ab8b683b5p-52, 0.0)) === bareinterval(-0x13e080325bab7bp-52, 0.0) + + @test log1p(bareinterval(0.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x14e0115561569cp-48) + + @test log1p(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x17bdce451a337fp-48, 0x1b3913fc99f6fcp-48) + +end +@testset "mpfi_log2" begin + + @test log2(bareinterval(0.0, +1.0)) === bareinterval(-Inf, 0.0) + + @test log2(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test log2(bareinterval(1.0, 1.0)) === bareinterval(0.0, 0.0) + + @test log2(bareinterval(0xb616ab8b683b5p-52, 1.0)) === bareinterval(-0x1f74cb5d105b3ap-54, 0.0) + + @test log2(bareinterval(1.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x1e1ddc27c2c70fp-48) + + @test log2(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x112035c9390c07p-47, 0x13a3208f61f10cp-47) + +end +@testset "mpfi_log10" begin + + @test log10(bareinterval(0.0, 1.0)) === bareinterval(-Inf, 0.0) + + @test log10(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test log10(bareinterval(1.0, 1.0)) === bareinterval(0.0, 0.0) + + @test log10(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)) === bareinterval(0x159753104a9401p-49, 0x1716c01a04b570p-49) + + @test log10(bareinterval(0xb616ab8b683b5p-52, 1.0)) === bareinterval(-0x12f043ec00f8d6p-55, 0.0) + + @test log10(bareinterval(100.0, 0x8ac74d932fae3p-21)) === bareinterval(2.0, 0x1221cc590b9946p-49) + + @test log10(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x149f1d70168f49p-49, 0x17a543a94fb65ep-49) + +end +@testset "mpfi_mag" begin + + @test mag(bareinterval(-Inf, -8.0)) === +Inf + + @test mag(bareinterval(-Inf, 0.0)) === +Inf + + @test mag(bareinterval(-Inf, 5.0)) === +Inf + + @test mag(entireinterval(BareInterval{Float64})) === +Inf + + @test mag(bareinterval(-Inf, 0.0)) === +Inf + + @test mag(bareinterval(-8.0, 0.0)) === +8.0 + + @test mag(bareinterval(0.0, 0.0)) === +0.0 + + @test mag(bareinterval(0.0, 5.0)) === +5.0 + + @test mag(bareinterval(0.0, +Inf)) === +Inf + + @test mag(bareinterval(-34.0, -17.0)) === 34.0 + +end +@testset "mpfi_mid" begin + + @test mid(bareinterval(-8.0, 0.0)) === -4.0 + + @test mid(bareinterval(0.0, 0.0)) === +0.0 + + @test mid(bareinterval(0.0, 5.0)) === +2.5 + + @test mid(bareinterval(-34.0, -17.0)) === -0x33p-1 + + @test mid(bareinterval(-34.0, 17.0)) === -8.5 + + @test mid(bareinterval(0.0, +0x123456789abcdp-2)) === +0x123456789abcdp-3 + + @test mid(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === 0x1921fb54442d18p-51 + + @test mid(bareinterval(-0x1921fb54442d19p-51, -0x1921fb54442d18p-51)) === -0x1921fb54442d18p-51 + + @test mid(bareinterval(-4.0, -0x7fffffffffffdp-51)) === -0x27fffffffffffbp-52 + + @test mid(bareinterval(-8.0, -0x7fffffffffffbp-51)) === -0x47fffffffffffbp-52 + + @test mid(bareinterval(-0x1fffffffffffffp-53, 2.0)) === 0.5 + +end +@testset "mpfi_mig" begin + + @test mig(bareinterval(-Inf, -8.0)) === 8.0 + + @test mig(bareinterval(-Inf, 0.0)) === +0.0 + + @test mig(bareinterval(-Inf, 5.0)) === +0.0 + + @test mig(entireinterval(BareInterval{Float64})) === +0.0 + + @test mig(bareinterval(-Inf, 0.0)) === +0.0 + + @test mig(bareinterval(-8.0, 0.0)) === +0.0 + + @test mig(bareinterval(0.0, 0.0)) === +0.0 + + @test mig(bareinterval(0.0, 5.0)) === +0.0 + + @test mig(bareinterval(0.0, +Inf)) === +0.0 + + @test mig(bareinterval(-34.0, -17.0)) === 17.0 + +end +@testset "mpfi_mul" begin + + @test *(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test *(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +64.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-56.0, 0.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-56.0, +64.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(-3.0, +7.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-0x0dp0, -0x09p0), bareinterval(-0x04p0, -0x02p0)) === bareinterval(0x12p0, 0x34p0) + + @test *(bareinterval(-0x0dp0, -0xd.f0e7927d247cp-4), bareinterval(-0x04p0, -0xa.41084aff48f8p-8)) === bareinterval(0x8.ef3aa21dba748p-8, 0x34p0) + + @test *(bareinterval(-0xe.26c9e9eb67b48p-4, -0x8.237d2eb8b1178p-4), bareinterval(-0x5.8c899a0706d5p-4, -0x3.344e57a37b5e8p-4)) === bareinterval(0x1.a142a930de328p-4, 0x4.e86c3434cd924p-4) + + @test *(bareinterval(-0x37p0, -0x07p0), bareinterval(-0x01p0, 0x22p0)) === bareinterval(-0x74ep0, 0x37p0) + + @test *(bareinterval(-0xe.063f267ed51ap-4, -0x0.33p0), bareinterval(-0x01p0, 0x1.777ab178b4a1ep+0)) === bareinterval(-0x1.491df346a9f15p+0, 0xe.063f267ed51ap-4) + + @test *(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x01p0)) === bareinterval(-0x1.cb540b71699a8p+4, 0x2.804cce4a3f42ep+4) + + @test *(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x1.eb67a1a6ef725p+4)) === bareinterval(-0x3.71b422ce817f4p+8, 0x2.804cce4a3f42ep+4) + + @test *(bareinterval(-0x123456789ap0, -0x01p0), bareinterval(0x01p0, 0x10p0)) === bareinterval(-0x123456789a0p0, -0x01p0) + + @test *(bareinterval(-0xb.6c67d3a37d54p-4, -0x0.8p0), bareinterval(0x02p0, 0x2.0bee4e8bb3dfp+0)) === bareinterval(-0x1.7611a672948a5p+0, -0x01p0) + + @test *(bareinterval(-0x04p0, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x04p0)) === bareinterval(-0x10p0, -0x7.99b990532d434p-8) + + @test *(bareinterval(-0xb.6c67d3a37d54p-4, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x2.0bee4e8bb3dfp+0)) === bareinterval(-0x1.7611a672948a5p+0, -0x7.99b990532d434p-8) + + @test *(bareinterval(-0x01p0, 0x11p0), bareinterval(-0x07p0, -0x04p0)) === bareinterval(-0x77p0, 0x07p0) + + @test *(bareinterval(-0x01p0, 0xe.ca7ddfdb8572p-4), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.101b41d3d48b8p+0, 0x2.3b46226145234p+0) + + @test *(bareinterval(-0x1.1d069e75e8741p+8, 0x01p0), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.3b46226145234p+0, 0x2.7c0bd9877f404p+8) + + @test *(bareinterval(-0xe.ca7ddfdb8572p-4, 0x1.1d069e75e8741p+8), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.7c0bd9877f404p+8, 0x2.101b41d3d48b8p+0) + + @test *(bareinterval(-0x01p0, 0x10p0), bareinterval(-0x02p0, 0x03p0)) === bareinterval(-0x20p0, 0x30p0) + + @test *(bareinterval(-0x01p0, 0x2.db091cea593fap-4), bareinterval(-0x2.6bff2625fb71cp-4, 0x1p-8)) === bareinterval(-0x6.ea77a3ee43de8p-8, 0x2.6bff2625fb71cp-4) + + @test *(bareinterval(-0x01p0, 0x6.e211fefc216ap-4), bareinterval(-0x1p-4, 0x1.8e3fe93a4ea52p+0)) === bareinterval(-0x1.8e3fe93a4ea52p+0, 0xa.b52fe22d72788p-4) + + @test *(bareinterval(-0x1.15e079e49a0ddp+0, 0x1p-8), bareinterval(-0x2.77fc84629a602p+0, 0x8.3885932f13fp-4)) === bareinterval(-0x8.ec5de73125be8p-4, 0x2.adfe651d3b19ap+0) + + @test *(bareinterval(-0x07p0, 0x07p0), bareinterval(0x13p0, 0x24p0)) === bareinterval(-0xfcp0, 0xfcp0) + + @test *(bareinterval(-0xa.8071f870126cp-4, 0x10p0), bareinterval(0x02p0, 0x2.3381083e7d3b4p+0)) === bareinterval(-0x1.71dc5b5607781p+0, 0x2.3381083e7d3b4p+4) + + @test *(bareinterval(-0x01p0, 0x1.90aa487ecf153p+0), bareinterval(0x01p-53, 0x1.442e2695ac81ap+0)) === bareinterval(-0x1.442e2695ac81ap+0, 0x1.fb5fbebd0cbc6p+0) + + @test *(bareinterval(-0x1.c40db77f2f6fcp+0, 0x1.8eb70bbd94478p+0), bareinterval(0x02p0, 0x3.45118635235c6p+0)) === bareinterval(-0x5.c61fcad908df4p+0, 0x5.17b7c49130824p+0) + + @test *(bareinterval(0xcp0, 0x2dp0), bareinterval(-0x679p0, -0xe5p0)) === bareinterval(-0x12345p0, -0xabcp0) + + @test *(bareinterval(0xcp0, 0x1.1833fdcab4c4ap+10), bareinterval(-0x2.4c0afc50522ccp+40, -0xe5p0)) === bareinterval(-0x2.83a3712099234p+50, -0xabcp0) + + @test *(bareinterval(0xb.38f1fb0ef4308p+0, 0x2dp0), bareinterval(-0x679p0, -0xa.4771d7d0c604p+0)) === bareinterval(-0x12345p0, -0x7.35b3c8400ade4p+4) + + @test *(bareinterval(0xf.08367984ca1cp-4, 0xa.bcf6c6cbe341p+0), bareinterval(-0x5.cbc445e9952c4p+0, -0x2.8ad05a7b988fep-8)) === bareinterval(-0x3.e3ce52d4a139cp+4, -0x2.637164cf2f346p-8) + + @test *(bareinterval(0x01p0, 0xcp0), bareinterval(-0xe5p0, 0x01p0)) === bareinterval(-0xabcp0, 0xcp0) + + @test *(bareinterval(0x123p-52, 0x1.ec24910ac6aecp+0), bareinterval(-0xa.a97267f56a9b8p-4, 0x1p+32)) === bareinterval(-0x1.47f2dbe4ef916p+0, 0x1.ec24910ac6aecp+32) + + @test *(bareinterval(0x03p0, 0x7.2bea531ef4098p+0), bareinterval(-0x01p0, 0xa.a97267f56a9b8p-4)) === bareinterval(-0x7.2bea531ef4098p+0, 0x4.c765967f9468p+0) + + @test *(bareinterval(0x0.3p0, 0xa.a97267f56a9b8p-4), bareinterval(-0x1.ec24910ac6aecp+0, 0x7.2bea531ef4098p+0)) === bareinterval(-0x1.47f2dbe4ef916p+0, 0x4.c765967f9468p+0) + + @test *(bareinterval(0x3p0, 0x7p0), bareinterval(0x5p0, 0xbp0)) === bareinterval(0xfp0, 0x4dp0) + + @test *(bareinterval(0x2.48380232f6c16p+0, 0x7p0), bareinterval(0x3.71cb6c53e68eep+0, 0xbp0)) === bareinterval(0x7.dc58fb323ad78p+0, 0x4dp0) + + @test *(bareinterval(0x3p0, 0x3.71cb6c53e68eep+0), bareinterval(0x5p-25, 0x2.48380232f6c16p+0)) === bareinterval(0xfp-25, 0x7.dc58fb323ad7cp+0) + + @test *(bareinterval(0x3.10e8a605572p-4, 0x2.48380232f6c16p+0), bareinterval(0xc.3d8e305214ecp-4, 0x2.9e7db05203c88p+0)) === bareinterval(0x2.587a32d02bc04p-4, 0x5.fa216b7c20c6cp+0) + +end +@testset "mpfi_mul_d" begin + + @test *(bareinterval(-Inf, -7.0), bareinterval(-0x17p0, -0x17p0)) === bareinterval(+0xa1p0, +Inf) + + @test *(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -0xa168b4ebefd020p-107) + + @test *(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0.0) + + @test *(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-0xb1a2bc2ec5000000p0, +Inf) + + @test *(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, 0xb1a2bc2ec5000000p0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === bareinterval(0.0, 0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 7.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x790e87b0f3dc18p-107, 0.0) + + @test *(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 9.0), bareinterval(0x114b37f4b51f71p-103, 0x114b37f4b51f71p-103)) === bareinterval(0.0, 0x9ba4f79a5e1b00p-103) + + @test *(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-Inf, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)) === bareinterval(0xfffffffffffffp-123, 0x22a2a28p0) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(-1.5, -1.5)) === bareinterval(-0x22a2a28p+401, 0xfffffffffffffp0) + + @test *(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)) === bareinterval(-0x1222222222221p+654, -0x22000000000022p0) + + @test *(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x22a2a28p0, -0xfffffffffffffp-123) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(1.5, 1.5)) === bareinterval(-0xfffffffffffffp0, 0x22a2a28p+401) + + @test *(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000022p0, 0x1222222222221p+654) + + @test *(bareinterval(-0x1717170p+36, -0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(0x18000000000001p0, 0x22a2a28p+36) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(-0x18000000000002p0, 0xfffffffffffffp0) + + @test *(bareinterval(0x10000000000010p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)) === bareinterval(-0x12222222222223p+1, -0x22000000000022p0) + + @test *(bareinterval(-0x10000000000001p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x18000000000002p0, -0xfffffffffffffp-123) + + @test *(bareinterval(-0xaaaaaaaaaaaabp0, 0x1717170p+401), bareinterval(1.5, 1.5)) === bareinterval(-0x10000000000001p0, 0x22a2a28p+401) + + @test *(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000002p0, 0x1222222222221p+654) + + @test *(bareinterval(-0x11717171717171p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)) === bareinterval(0xfffffffffffffp-123, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(-0x10000000000001p0, 0x1717170p+401), bareinterval(-1.5, -1.5)) === bareinterval(-0x22a2a28p+401, 0x18000000000002p0) + + @test *(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)) === bareinterval(-0x1222222222221p+654, -0x22000000000002p0) + + @test *(bareinterval(-0x1717170p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x22a2a28p0, -0x27fffffffffffep-123) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x11717171717171p0), bareinterval(1.5, 1.5)) === bareinterval(-0xfffffffffffffp0, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(0x10000000000010p0, 0x18888888888889p0), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000022p0, 0x34222222222224p0) + + @test *(bareinterval(-0x11717171717171p0, -0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(0x18000000000001p0, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(-0x10000000000001p0, 0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(-0x18000000000002p0, 0x18000000000002p0) + + @test *(bareinterval(0x10000000000001p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)) === bareinterval(-0x12222222222223p+1, -0x22000000000002p0) + + @test *(bareinterval(-0x10000000000001p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x18000000000002p0, -0x27fffffffffffep-123) + + @test *(bareinterval(-0xaaaaaaaaaaaabp0, 0x11717171717171p0), bareinterval(1.5, 1.5)) === bareinterval(-0x10000000000001p0, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(0x10000000000001p0, 0x18888888888889p0), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000002p0, 0x34222222222224p0) + +end +@testset "mpfi_neg" begin + + @test -(bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) + + @test -(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test -(bareinterval(-Inf, +8.0)) === bareinterval(-8.0, +Inf) + + @test -(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0.0, +8.0)) === bareinterval(-8.0, 0.0) + + @test -(bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test -(bareinterval(0x123456789p-16, 0x123456799p-16)) === bareinterval(-0x123456799p-16, -0x123456789p-16) + +end +@testset "mpfi_put_d" begin + + @test hull(bareinterval(0.0, 0.0), bareinterval(-8.0, -8.0)) === bareinterval(-8.0, 0.0) + + @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test hull(bareinterval(+5.0, +5.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, +5.0) + +end +@testset "mpfi_sec" begin + + @test sec(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test sec(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test sec(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(0.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -5.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51) + + @test sec(bareinterval(-6.0, -6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52) + + @test sec(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -5.0)) === bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51) + + @test sec(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -1.0) + + @test sec(bareinterval(-4.0, -3.0)) === bareinterval(-0x187a6961d2485fp-52, -1.0) + + @test sec(bareinterval(-4.0, -4.0)) === bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52) + + @test sec(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52) + + @test sec(bareinterval(-3.0, -3.0)) === bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52) + + @test sec(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51) + + @test sec(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 1.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(-1.0, -1.0)) === bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 1.0)) === bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(2.0, 4.0)) === bareinterval(-0x133956fecf9e49p-51, -1.0) + + @test sec(bareinterval(2.0, 3.0)) === bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52) + + @test sec(bareinterval(2.0, 2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51) + + @test sec(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(3.0, 4.0)) === bareinterval(-0x187a6961d2485fp-52, -1.0) + + @test sec(bareinterval(3.0, 3.0)) === bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52) + + @test sec(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(4.0, 4.0)) === bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52) + + @test sec(bareinterval(5.0, 7.0)) === bareinterval(1.0, 0x1c33db0464189bp-51) + + @test sec(bareinterval(5.0, 6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51) + + @test sec(bareinterval(5.0, 5.0)) === bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51) + + @test sec(bareinterval(6.0, 7.0)) === bareinterval(1.0, 0x153910a80e7db5p-52) + + @test sec(bareinterval(6.0, 6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52) + + @test sec(bareinterval(7.0, 7.0)) === bareinterval(0x153910a80e7db4p-52, 0x153910a80e7db5p-52) + +end +@testset "mpfi_sech" begin + + @test sech(bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1de169fb49b339p-62) + + @test sech(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) + + @test sech(bareinterval(-Inf, +8.0)) === bareinterval(0.0, 1.0) + + @test sech(entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) + + @test sech(bareinterval(-1.0, 0.0)) === bareinterval(0x14bcdc50ed6be7p-53, 1.0) + + @test sech(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test sech(bareinterval(0.0, +1.0)) === bareinterval(0x14bcdc50ed6be7p-53, 1.0) + + @test sech(bareinterval(0.0, +8.0)) === bareinterval(0x15fc20da8e18dbp-63, 1.0) + + @test sech(bareinterval(0.0, +Inf)) === bareinterval(0.0, 1.0) + + @test sech(bareinterval(-0.125, 0.0)) === bareinterval(0x1fc069fe3f72bep-53, 1.0) + + @test sech(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0x1c60d1ff040dcfp-53, 1.0) + + @test sech(bareinterval(-4.5, -0.625)) === bareinterval(0x16bf984a9a2355p-58, 0x1aa0b464a5e24ap-53) + + @test sech(bareinterval(1.0, 3.0)) === bareinterval(0x196d8e17d88eb1p-56, 0x14bcdc50ed6be8p-53) + + @test sech(bareinterval(17.0, 0xb145bb71d3dbp-38)) === bareinterval(0x10000000000173p-1074, 0x1639e3175a6893p-76) + +end +@testset "mpfi_sin" begin + + @test sin(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-Inf, +8.0)) === bareinterval(-1.0, 1.0) + + @test sin(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1aed548f090cefp-53, 0.0) + + @test sin(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sin(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(0.0, +8.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(0.0, +Inf)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(0.125, 17.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)) === bareinterval(0x1fffffffffffffp-53, 1.0) + + @test sin(bareinterval(-2.0, -0.5)) === bareinterval(-1.0, -0x1eaee8744b05efp-54) + + @test sin(bareinterval(-4.5, 0.625)) === bareinterval(-1.0, 0x1f47ed3dc74081p-53) + + @test sin(bareinterval(-1.0, -0.25)) === bareinterval(-0x1aed548f090cefp-53, -0x1faaeed4f31576p-55) + + @test sin(bareinterval(-0.5, 0.5)) === bareinterval(-0x1eaee8744b05f0p-54, 0x1eaee8744b05f0p-54) + + @test sin(bareinterval(0x71p+76, 0x71p+76)) === bareinterval(0x1bde6c11cbfc46p-55, 0x1bde6c11cbfc47p-55) + + @test sin(bareinterval(-7.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) + + @test sin(bareinterval(-7.0, -3.0)) === bareinterval(-0x150608c26d0a09p-53, 1.0) + + @test sin(bareinterval(-7.0, -4.0)) === bareinterval(-0x150608c26d0a09p-53, 1.0) + + @test sin(bareinterval(-7.0, -5.0)) === bareinterval(-0x150608c26d0a09p-53, 0x1eaf81f5e09934p-53) + + @test sin(bareinterval(-7.0, -6.0)) === bareinterval(-0x150608c26d0a09p-53, 0x11e1f18ab0a2c1p-54) + + @test sin(bareinterval(-7.0, -7.0)) === bareinterval(-0x150608c26d0a09p-53, -0x150608c26d0a08p-53) + + @test sin(bareinterval(-6.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) + + @test sin(bareinterval(-6.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 1.0) + + @test sin(bareinterval(-6.0, -4.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 1.0) + + @test sin(bareinterval(-6.0, -5.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 0x1eaf81f5e09934p-53) + + @test sin(bareinterval(-6.0, -6.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 0x11e1f18ab0a2c1p-54) + + @test sin(bareinterval(-5.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) + + @test sin(bareinterval(-5.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 1.0) + + @test sin(bareinterval(-5.0, -4.0)) === bareinterval(0x1837b9dddc1eaep-53, 1.0) + + @test sin(bareinterval(-5.0, -5.0)) === bareinterval(0x1eaf81f5e09933p-53, 0x1eaf81f5e09934p-53) + + @test sin(bareinterval(-4.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-4.0, 0.0)) === bareinterval(-1.0, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -1.0)) === bareinterval(-1.0, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -4.0)) === bareinterval(0x1837b9dddc1eaep-53, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-3.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-3.0, 0.0)) === bareinterval(-1.0, 0.0) + + @test sin(bareinterval(-3.0, -1.0)) === bareinterval(-1.0, -0x1210386db6d55bp-55) + + @test sin(bareinterval(-3.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, -0x1210386db6d55bp-55) + + @test sin(bareinterval(-3.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, -0x1210386db6d55bp-55) + + @test sin(bareinterval(-2.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-2.0, 0.0)) === bareinterval(-1.0, 0.0) + + @test sin(bareinterval(-2.0, -1.0)) === bareinterval(-1.0, -0x1aed548f090ceep-53) + + @test sin(bareinterval(-2.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, -0x1d18f6ead1b445p-53) + + @test sin(bareinterval(-1.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 4.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) + + @test sin(bareinterval(-1.0, 3.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) + + @test sin(bareinterval(-1.0, 2.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) + + @test sin(bareinterval(-1.0, 1.0)) === bareinterval(-0x1aed548f090cefp-53, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1aed548f090cefp-53, 0.0) + + @test sin(bareinterval(-1.0, -1.0)) === bareinterval(-0x1aed548f090cefp-53, -0x1aed548f090ceep-53) + + @test sin(bareinterval(1.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(1.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(1.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(1.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 1.0) + + @test sin(bareinterval(1.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 1.0) + + @test sin(bareinterval(1.0, 2.0)) === bareinterval(0x1aed548f090ceep-53, 1.0) + + @test sin(bareinterval(1.0, 1.0)) === bareinterval(0x1aed548f090ceep-53, 0x1aed548f090cefp-53) + + @test sin(bareinterval(2.0, 7.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 6.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 5.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 2.0)) === bareinterval(0x1d18f6ead1b445p-53, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(3.0, 7.0)) === bareinterval(-1.0, 0x150608c26d0a09p-53) + + @test sin(bareinterval(3.0, 6.0)) === bareinterval(-1.0, 0x1210386db6d55cp-55) + + @test sin(bareinterval(3.0, 5.0)) === bareinterval(-1.0, 0x1210386db6d55cp-55) + + @test sin(bareinterval(3.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 0x1210386db6d55cp-55) + + @test sin(bareinterval(3.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 0x1210386db6d55cp-55) + + @test sin(bareinterval(4.0, 7.0)) === bareinterval(-1.0, 0x150608c26d0a09p-53) + + @test sin(bareinterval(4.0, 6.0)) === bareinterval(-1.0, -0x11e1f18ab0a2c0p-54) + + @test sin(bareinterval(4.0, 5.0)) === bareinterval(-1.0, -0x1837b9dddc1eaep-53) + + @test sin(bareinterval(4.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, -0x1837b9dddc1eaep-53) + + @test sin(bareinterval(5.0, 7.0)) === bareinterval(-0x1eaf81f5e09934p-53, 0x150608c26d0a09p-53) + + @test sin(bareinterval(5.0, 6.0)) === bareinterval(-0x1eaf81f5e09934p-53, -0x11e1f18ab0a2c0p-54) + + @test sin(bareinterval(5.0, 5.0)) === bareinterval(-0x1eaf81f5e09934p-53, -0x1eaf81f5e09933p-53) + + @test sin(bareinterval(6.0, 7.0)) === bareinterval(-0x11e1f18ab0a2c1p-54, 0x150608c26d0a09p-53) + + @test sin(bareinterval(6.0, 6.0)) === bareinterval(-0x11e1f18ab0a2c1p-54, -0x11e1f18ab0a2c0p-54) + + @test sin(bareinterval(7.0, 7.0)) === bareinterval(0x150608c26d0a08p-53, 0x150608c26d0a09p-53) + +end +@testset "mpfi_sinh" begin + + @test sinh(bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -0x1122876ba380c9p-43) + + @test sinh(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test sinh(bareinterval(-Inf, +8.0)) === bareinterval(-Inf, 0x1749ea514eca66p-42) + + @test sinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test sinh(bareinterval(-1.0, 0.0)) === bareinterval(-0x12cd9fc44eb983p-52, 0.0) + + @test sinh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sinh(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x12cd9fc44eb983p-52) + + @test sinh(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1749ea514eca66p-42) + + @test sinh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test sinh(bareinterval(-0.125, 0.0)) === bareinterval(-0x100aaccd00d2f1p-55, 0.0) + + @test sinh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0.0, 0x10acd00fe63b98p-53) + + @test sinh(bareinterval(-4.5, -0.625)) === bareinterval(-0x168062ab5fa9fdp-47, -0x1553e795dc19ccp-53) + + @test sinh(bareinterval(1.0, 3.0)) === bareinterval(0x12cd9fc44eb982p-52, 0x140926e70949aep-49) + +end +@testset "mpfi_sqr" begin + + @test pown(bareinterval(-Inf, -7.0), 2) === bareinterval(+49.0, +Inf) + + @test pown(bareinterval(-Inf, 0.0), 2) === bareinterval(0.0, +Inf) + + @test pown(bareinterval(-Inf, +8.0), 2) === bareinterval(0.0, +Inf) + + @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0, +Inf) + + @test pown(bareinterval(0.0, 0.0), 2) === bareinterval(0.0, 0.0) + + @test pown(bareinterval(0.0, +8.0), 2) === bareinterval(0.0, +64.0) + + @test pown(bareinterval(0.0, +Inf), 2) === bareinterval(0.0, +Inf) + + @test pown(bareinterval(0x8.6374d8p-4, 0x3.f1d929p+8), 2) === bareinterval(0x4.65df11464764p-4, 0xf.8f918d688891p+16) + + @test pown(bareinterval(0x6.61485c33c0b14p+4, 0x123456p0), 2) === bareinterval(0x2.8b45c3cc03ea6p+12, 0x14b66cb0ce4p0) + + @test pown(bareinterval(-0x1.64722ad2480c9p+0, 0x1p0), 2) === bareinterval(0.0, 0x1.f04dba0302d4dp+0) + + @test pown(bareinterval(0x1.6b079248747a2p+0, 0x2.b041176d263f6p+0), 2) === bareinterval(0x2.02ce7912cddf6p+0, 0x7.3a5dee779527p+0) + +end +@testset "mpfi_sqrt" begin + + @test sqrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sqrt(bareinterval(0.0, +9.0)) === bareinterval(0.0, +3.0) + + @test sqrt(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test sqrt(bareinterval(0xaaa1p0, 0x14b66cb0ce4p0)) === bareinterval(0xd1p0, 0x123456p0) + + @test sqrt(bareinterval(0xe.49ae7969e41bp-4, 0xaaa1p0)) === bareinterval(0xf.1ea42821b27a8p-4, 0xd1p0) + + @test sqrt(bareinterval(0xa.aa1p-4, 0x1.0c348f804c7a9p+0)) === bareinterval(0xd.1p-4, 0x1.06081714eef1dp+0) + + @test sqrt(bareinterval(0xe.49ae7969e41bp-4, 0x1.0c348f804c7a9p+0)) === bareinterval(0xf.1ea42821b27a8p-4, 0x1.06081714eef1dp+0) + +end +@testset "mpfi_sub" begin + + @test -(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, -6.0) + + @test -(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, -8.0) + + @test -(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +8.0) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) + + @test -(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0.0, +15.0) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(-8.0, 0.0) + + @test -(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(-8.0, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, -8.0) + + @test -(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-8.0, +15.0) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(-8.0, +Inf) + + @test -(bareinterval(-5.0, 59.0), bareinterval(17.0, 81.0)) === bareinterval(-86.0, 42.0) + + @test -(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x789abcdp0, 0x10000000000000p-93)) === bareinterval(-0x10000000000001p-93, 0x123456789abcdp0) + + @test -(bareinterval(-4.0, 7.0), bareinterval(-3e300, 0x123456789abcdp-17)) === bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947) + + @test -(bareinterval(-0x1000100010001p+8, 0x1p+60), bareinterval(-3e300, 0x1000100010001p0)) === bareinterval(-0x10101010101011p+4, 0x8f596b3002c1bp+947) + + @test -(bareinterval(-5.0, 1.0), bareinterval(1.0, 0x1p+70)) === bareinterval(-0x10000000000001p+18, 0.0) + + @test -(bareinterval(5.0, 0x1p+70), bareinterval(3.0, 5.0)) === bareinterval(0.0, 0x1p+70) + +end +@testset "mpfi_sub_d" begin + + @test -(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)) === bareinterval(-Inf, -0x1bffffffffffffp-50) + + @test -(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, -7.0) + + @test -(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -7.0) + + @test -(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(-Inf, 0x170ef54646d497p-106) + + @test -(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test -(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, -8.0e-17) + + @test -(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-Inf, 0x16345785d8a00100p0) + + @test -(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 8.0) + + @test -(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, -0x16345785d89fff00p0) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(+0x170ef54646d497p-109, +0x170ef54646d497p-109) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) + + @test -(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(0x114b37f4b51f71p-107, 0x10000000000001p-49) + + @test -(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 8.0) + + @test -(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)) === bareinterval(-0x114b37f4b51f71p-107, 8.0) + + @test -(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(0x50b45a75f7e81p-104, +Inf) + + @test -(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, +Inf) + + @test -(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(-0x142d169d7dfa03p-106, +Inf) + + @test -(bareinterval(-32.0, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) + + @test -(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) + + @test -(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(-0xfb53d14aa9c2fp-48, -0xfb53d14aa9c2fp-48)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) + + @test -(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) + + @test -(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) + + @test -(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) + + @test -(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)) === bareinterval(0xfff8p-4, 0x10018p-4) + + @test -(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) + + @test -(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) + + @test -(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) + + @test -(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)) === bareinterval(-0x10038p-4, -0x10018p-4) + +end +@testset "mpfi_tan" begin + + @test tan(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test tan(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 0.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0.0) + + @test tan(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test tan(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x18eb245cbee3a6p-52) + + @test tan(bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.125, 17.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, -0.5)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.5, 0.625)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, -0.25)) === bareinterval(-0x18eb245cbee3a6p-52, -0x105785a43c4c55p-54) + + @test tan(bareinterval(-0.5, 0.5)) === bareinterval(-0x117b4f5bf3474bp-53, 0x117b4f5bf3474bp-53) + + @test tan(bareinterval(0x71p+76, 0x71p+76)) === bareinterval(-0x1c8dc87ddcc134p-55, -0x1c8dc87ddcc133p-55) + + @test tan(bareinterval(-7.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -5.0)) === bareinterval(-0x1be2e6e13eea79p-53, 0x1b0b4b739bbb07p-51) + + @test tan(bareinterval(-7.0, -6.0)) === bareinterval(-0x1be2e6e13eea79p-53, 0x129fd86ebb95bfp-54) + + @test tan(bareinterval(-7.0, -7.0)) === bareinterval(-0x1be2e6e13eea79p-53, -0x1be2e6e13eea78p-53) + + @test tan(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -5.0)) === bareinterval(0x129fd86ebb95bep-54, 0x1b0b4b739bbb07p-51) + + @test tan(bareinterval(-6.0, -6.0)) === bareinterval(0x129fd86ebb95bep-54, 0x129fd86ebb95bfp-54) + + @test tan(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -5.0)) === bareinterval(0x1b0b4b739bbb06p-51, 0x1b0b4b739bbb07p-51) + + @test tan(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, -2.0)) === bareinterval(-0x12866f9be4de14p-52, 0x117af62e0950f9p-51) + + @test tan(bareinterval(-4.0, -3.0)) === bareinterval(-0x12866f9be4de14p-52, 0x123ef71254b870p-55) + + @test tan(bareinterval(-4.0, -4.0)) === bareinterval(-0x12866f9be4de14p-52, -0x12866f9be4de13p-52) + + @test tan(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, -2.0)) === bareinterval(0x123ef71254b86fp-55, 0x117af62e0950f9p-51) + + @test tan(bareinterval(-3.0, -3.0)) === bareinterval(0x123ef71254b86fp-55, 0x123ef71254b870p-55) + + @test tan(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, -2.0)) === bareinterval(0x117af62e0950f8p-51, 0x117af62e0950f9p-51) + + @test tan(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 1.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0x18eb245cbee3a6p-52) + + @test tan(bareinterval(-1.0, 0.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0.0) + + @test tan(bareinterval(-1.0, -1.0)) === bareinterval(-0x18eb245cbee3a6p-52, -0x18eb245cbee3a5p-52) + + @test tan(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 1.0)) === bareinterval(0x18eb245cbee3a5p-52, 0x18eb245cbee3a6p-52) + + @test tan(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(2.0, 4.0)) === bareinterval(-0x117af62e0950f9p-51, 0x12866f9be4de14p-52) + + @test tan(bareinterval(2.0, 3.0)) === bareinterval(-0x117af62e0950f9p-51, -0x123ef71254b86fp-55) + + @test tan(bareinterval(2.0, 2.0)) === bareinterval(-0x117af62e0950f9p-51, -0x117af62e0950f8p-51) + + @test tan(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(3.0, 4.0)) === bareinterval(-0x123ef71254b870p-55, 0x12866f9be4de14p-52) + + @test tan(bareinterval(3.0, 3.0)) === bareinterval(-0x123ef71254b870p-55, -0x123ef71254b86fp-55) + + @test tan(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(4.0, 4.0)) === bareinterval(0x12866f9be4de13p-52, 0x12866f9be4de14p-52) + + @test tan(bareinterval(5.0, 7.0)) === bareinterval(-0x1b0b4b739bbb07p-51, 0x1be2e6e13eea79p-53) + + @test tan(bareinterval(5.0, 6.0)) === bareinterval(-0x1b0b4b739bbb07p-51, -0x129fd86ebb95bep-54) + + @test tan(bareinterval(5.0, 5.0)) === bareinterval(-0x1b0b4b739bbb07p-51, -0x1b0b4b739bbb06p-51) + + @test tan(bareinterval(6.0, 7.0)) === bareinterval(-0x129fd86ebb95bfp-54, 0x1be2e6e13eea79p-53) + + @test tan(bareinterval(6.0, 6.0)) === bareinterval(-0x129fd86ebb95bfp-54, -0x129fd86ebb95bep-54) + + @test tan(bareinterval(7.0, 7.0)) === bareinterval(0x1be2e6e13eea78p-53, 0x1be2e6e13eea79p-53) + +end +@testset "mpfi_tanh" begin + + @test tanh(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, -0x1ffffc832750f1p-53) + + @test tanh(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 0.0) + + @test tanh(bareinterval(-Inf, 8.0)) === bareinterval(-1.0, 0x1fffff872a91f9p-53) + + @test tanh(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, +1.0) + + @test tanh(bareinterval(-1.0, 0.0)) === bareinterval(-0x185efab514f395p-53, 0.0) + + @test tanh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test tanh(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x185efab514f395p-53) + + @test tanh(bareinterval(0.0, 8.0)) === bareinterval(0.0, 0x1fffff872a91f9p-53) + + @test tanh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +1.0) + + @test tanh(bareinterval(-0.125, 0.0)) === bareinterval(-0x1fd5992bc4b835p-56, 0.0) + + @test tanh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0.0, 0x1d9353d7568af5p-54) + + @test tanh(bareinterval(-4.5, -0.625)) === bareinterval(-0x1ffdfa72153984p-53, -0x11bf47eabb8f95p-53) + + @test tanh(bareinterval(1.0, 3.0)) === bareinterval(0x185efab514f394p-53, 0x1fd77d111a0b00p-53) + + @test tanh(bareinterval(17.0, 18.0)) === bareinterval(0x1fffffffffffe1p-53, 0x1ffffffffffffcp-53) + +end +@testset "mpfi_union" begin + + @test hull(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, +8.0) + + @test hull(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test hull(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +8.0) + + @test hull(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test hull(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(-Inf, 0.0) + + @test hull(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-7.0, +8.0) + + @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test hull(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, +Inf) + + @test hull(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test hull(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-7.0, +8.0) + + @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test hull(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)) === bareinterval(-0x0dp0, 0x90p0) + +end diff --git a/test/generate_ITF1788.jl b/test/generate_ITF1788.jl new file mode 100644 index 000000000..38db107b3 --- /dev/null +++ b/test/generate_ITF1788.jl @@ -0,0 +1,296 @@ +""" + generate(filename; ofolder="", failure=false) + +Generates the julia tests from the file filename. The tests in filename must be written +using the ITL domain specific language. The tests are written in a .jl file with the same +name of filename. The folder where to save the output file is specifified + +If failure=true, than each test is also executed before printing to the target file. If the +test fails, then the test is generated as ´@test_broken`. +""" +function generate(filename) + + # read file + src = joinpath(@__DIR__, "itl", filename) + f = open(src) + lines = readlines(f) + close(f) + + # file where to Write + dest = joinpath("ITF1788_tests", filename[1:end-4]*".jl") + mkpath("ITF1788_tests") + f = open(dest; write=true) + + # where testcase blocks start + rx_start = r"^\s*testcase\s+\S+\s+\{\s*$" + rx_end = r"^\s*\}\s*$" + block_start = findall(x -> occursin(rx_start, x), lines) + block_end = findall(x -> occursin(rx_end, x), lines) + + # check opening and closing blocks match + length(block_start) == length(block_end) || throw(ArgumentError("opening and closing braces not not much in $filename")) + + for (bstart, bend) in zip(block_start, block_end) + testset = parse_block(lines[bstart:bend]) + write(f, testset) + end + + close(f) + nothing +end + +# + +functions = Dict( + "atan2" => x -> "atan($x)", + "add" => x -> "+($x)", + "sub" => x -> "-($x)", + "pos" => x -> "+($x)", + "neg" => x -> "-($x)", + "mul" => x -> "*($x)", + "div" => x -> "/($x)", + "convexHull" => x -> "hull($x)", + "intersection" => x -> "intersect_interval($x)", + "interior" => x -> "isinterior($x)", + "subset" => x -> "issubset_interval($x)", + "equal" => x -> "isequal_interval($x)", + "sqr" => x -> "pown($x, 2)", + "pow" => x -> "^($x)", + "rootn" => x -> "rootn($x)", + "sqrt" => x -> "sqrt($x)", + "exp" => x -> "exp($x)", + "exp2" => x -> "exp2($x)", + "exp10" => x -> "exp10($x)", + "log" => x -> "log($x)", + "log2" => x -> "log2($x)", + "log10" => x -> "log10($x)", + "sin" => x -> "sin($x)", + "cos" => x -> "cos($x)", + "tan" => x -> "tan($x)", + "cot" => x -> "cot($x)", + "asin" => x -> "asin($x)", + "acos" => x -> "acos($x)", + "atan" => x -> "atan($x)", + "acot" => x -> "acot($x)", + "sinh" => x -> "sinh($x)", + "cosh" => x -> "cosh($x)", + "tanh" => x -> "tanh($x)", + "coth" => x -> "coth($x)", + "asinh" => x -> "asinh($x)", + "acosh" => x -> "acosh($x)", + "atanh" => x -> "atanh($x)", + "acoth" => x -> "acoth($x)", + "expm1" => x -> "expm1($x)", + "logp1" => x -> "log1p($x)", + "cbrt" => x -> "cbrt($x)", + "csc" => x -> "csc($x)", + "csch" => x -> "csch($x)", + "hypot" => x -> "hypot($x)", + "sec" => x -> "sec($x)", + "sech" => x -> "sech($x)", + "intervalPart" => x -> "bareinterval($x)", + "isEmpty" => x -> "isempty_interval($x)", + "isEntire" => x -> "isentire_interval($x)", + "isNaI" => x -> "isnai($x)", + "less" => x -> "isweakless($x)", + "strictLess" => x -> "isstrictless($x)", + "precedes" => x -> "precedes($x)", + "strictPrecedes" => x -> "strictprecedes($x)", + "disjoint" => x -> "isdisjoint_interval($x)", + "newDec" => x -> "interval($x)", + "setDec" => x -> "interval($x)", + "decorationPart" => x -> "decoration($x)", + "recip" => x -> "inv($x)", + "fma" => x -> "fma($x)", + "pown" => x -> "pown($x)", + "sign" => x -> "sign($x)", + "ceil" => x -> "ceil($x)", + "floor" => x -> "floor($x)", + "trunc" => x -> "trunc($x)", + "roundTiesToEven" => x -> "round($x)", + "roundTiesToAway" => x -> "round($x, RoundNearestTiesAway)", + "abs" => x -> "abs($x)", + "min" => x -> "min($x)", + "max" => x -> "max($x)", + "inf" => x -> "inf($x)", + "sup" => x -> "sup($x)", + "mid" => x -> "mid($x)", + "rad" => x -> "radius($x)", + "midRad" => x -> "midradius($x)", + "wid" => x -> "diam($x)", + "mag" => x -> "mag($x)", + "mig" => x -> "mig($x)", + "overlap" => x -> "overlap($x)", + "isCommonInterval" => x -> "iscommon($x)", + "isSingleton" => x -> "isthin($x)", + "isMember" => x -> "in_interval($x)", + "cancelPlus" => x -> "cancelplus($x)", + "cancelMinus" => x -> "cancelminus($x)", + "sum_nearest" => x -> "sum($x)", + "dot_nearest" => x -> "sum(.*($x))", + "sum_abs_nearest" => x -> "sum(abs.($x))", + "sum_sqr_nearest" => x -> "sum($x.^2)" +) + +# + +function parse_block(block) + bname = match(r"^\s*testcase\s+(\S+)\s+\{\s*$", block[1])[1] + + testset = """@testset "$bname" begin + """ + ind = " " + for i in 2:length(block)-1 + line = strip(block[i]) + (isempty(line) || startswith(line, "//")) && continue + command = parse_command(line) + testset = """$testset + $ind$command + """ + end + testset = """$testset + end + """ +end + +""" + +This function parses a line into julia code, e.g. + +``` +add [1, 2] [1, 2] = [2, 4] +``` + +is parsed into +``` +@test +(Interval(1, 2), Interval(1, 2)) === Interval(2, 4) +``` +""" +function parse_command(line) + # extract parts in line + m = match(r"^(.+)=(.+);$", line) + lhs = m[1] + rhs = m[2] + rhs = split(rhs, "signal") + warn = length(rhs) > 1 ? rhs[2] : "" + rhs = rhs[1] + + lhs = parse_lhs(lhs) + rhs = parse_rhs(rhs) + + expr = build_expression(lhs, rhs) + + # known broken test, unrelated to interval airthmetic + command = occursin("dot_nearest {0x10000000000001p0, 0x1p104} {0x0fffffffffffffp0, -1.0} = -1.0", line) ? + "@test_broken $expr" : "@test $expr" + + # try + # res = eval(Meta.parse(expr)) + # command = res ? "@test $expr" : "@test_broken $expr" + # catch + # command = "@test_broken $expr" + # end + + command = isempty(warn) ? command : "@test_logs (:warn,) $command" + + return command +end + +function parse_lhs(lhs) + lhs = strip(lhs) + m = match(r"^(\S+) (.+)$", lhs) + fname = m[1] + args = m[2] + + #special case, input text + fname == "b-textToInterval" && return "parse(BareInterval{Float64}, $args)" + fname == "d-textToInterval" && return "parse(Interval{Float64}, $args)" + + # input numbers + args = replace(args, "infinity" => "Inf") + args = replace(args, "X" => "x") + if fname == "b-numsToInterval" + args = join(split(args), ',') + return "bareinterval($args)" + end + + if fname == "d-numsToInterval" + args = join(split(args), ',') + return "interval($args)" + end + + # input intervals + rx = r"\[([^\]]+)\](?:_(\w+))?" + for m in eachmatch(rx, args) + args = replace(args, m.match => parse_interval(m[1], m[2])) + end + args = replace(args, " " => ", ") + args = replace(args, ",," => ",") + args = replace(args, "{" => "[") + args = replace(args, "}" => "]") + args = replace(args, "[Float64]" => "{Float64}") + return functions[fname](args) +end + +function int_to_float(x) + if isnothing(tryparse(Int, x)) + return x + else + return x * ".0" + end +end + +function parse_rhs(rhs) + rhs = strip(rhs) + rhs = replace(rhs, "infinity" => "Inf") + rhs = replace(rhs, "X" => "x") + rhs = replace(rhs, + "bothEmpty" => "IntervalArithmetic.Overlap.both_empty", + "firstEmpty" => "IntervalArithmetic.Overlap.first_empty", + "secondEmpty" => "IntervalArithmetic.Overlap.second_empty", + "before" => "IntervalArithmetic.Overlap.before", + "meets" => "IntervalArithmetic.Overlap.meets", + "overlaps" => "IntervalArithmetic.Overlap.overlaps", + "starts" => "IntervalArithmetic.Overlap.starts", + "containedBy" => "IntervalArithmetic.Overlap.contained_by", + "finishes" => "IntervalArithmetic.Overlap.finishes", + "equals" => "IntervalArithmetic.Overlap.equals", + "finishedBy" => "IntervalArithmetic.Overlap.finished_by", + "contains" => "IntervalArithmetic.Overlap.contains", + "startedBy" => "IntervalArithmetic.Overlap.started_by", + "overlappedBy" => "IntervalArithmetic.Overlap.overlapped_by", + "metBy" => "IntervalArithmetic.Overlap.met_by", + "after" => "IntervalArithmetic.Overlap.after") + if '[' ∉ rhs # one or more scalar/bolean values separated by space + return map(int_to_float, split(rhs)) + else # one or more intervals + rx = r"\[([^\]]+)\](?:_(\w+))?" + ivals = [parse_interval(m[1], m[2]; check=false) for m in eachmatch(rx, rhs)] + return ivals + end +end + +function parse_interval(ival, dec; check=true) + ival == "nai" && return "nai()" + if ival == "entire" + ival = "entireinterval(BareInterval{Float64})" + elseif ival == "empty" + ival = "emptyinterval(BareInterval{Float64})" + else + ival = check ? "bareinterval($ival)" : "bareinterval($ival)" + end + isnothing(dec) || (ival = "interval($ival, $dec)") + return ival +end + +function build_expression(lhs, rhs::AbstractString) + rhs == "nai()" && return "isnai($lhs)" + rhs == "NaN" && return "isnan($lhs)" + return "$lhs === $rhs" +end + +function build_expression(lhs, rhs::Vector) + length(rhs) == 1 && return build_expression(lhs, rhs[1]) + expr = [build_expression(lhs*"[$i]", r) for (i, r) in enumerate(rhs)] + return join(expr, " && ") +end diff --git a/test/interval_tests/bisect.jl b/test/interval_tests/bisect.jl index e73f7a26b..3be3e20e3 100644 --- a/test/interval_tests/bisect.jl +++ b/test/interval_tests/bisect.jl @@ -1,8 +1,15 @@ @testset "Interval" begin + x = emptyinterval() + @test all(isequal_interval.(bisect(x), (x, x))) + + x = I"0.1" + @test isatomic(x) + @test all(isequal_interval.(bisect(x), (x, emptyinterval()))) + x = interval(0, 1) @test all(isequal_interval.( bisect(x, 0.5), (interval(0, 0.5), interval(0.5, 1) ) )) @test all(isequal_interval.( bisect(x, 0.25), (interval(0, 0.25), interval(0.25, 1) ) )) - @test all(isequal_interval.( bisect(x), (interval(0.0, 0.49609375), interval(0.49609375, 1.0)) )) + @test all(isequal_interval.( bisect(x), (interval(0.0, 0.5), interval(0.5, 1.0)) )) x = interval(-Inf, Inf) @test all(isequal_interval.( bisect(x, 0.5), (interval(-Inf, 0), interval(0, Inf)) )) diff --git a/test/interval_tests/complex.jl b/test/interval_tests/complex.jl index b4be89011..7ee3a4273 100644 --- a/test/interval_tests/complex.jl +++ b/test/interval_tests/complex.jl @@ -5,7 +5,7 @@ @test a ⊂ c @test a ⊆ c - @test isstrictsubset_interval(a, c) + @test isinterior(a, c) @test (b ⊂ c) == false @test (b ⊆ c) == false diff --git a/test/interval_tests/consistency.jl b/test/interval_tests/consistency.jl index 412649e8c..407ea27ff 100644 --- a/test/interval_tests/consistency.jl +++ b/test/interval_tests/consistency.jl @@ -80,11 +80,11 @@ @test issubset_interval(emptyinterval(c), c) @test !issubset_interval(c, emptyinterval(c)) - @test isstrictsubset_interval(b, c) - @test !isstrictsubset_interval(b, b) - @test isstrictsubset_interval(emptyinterval(c), c) - @test !isstrictsubset_interval(c, emptyinterval(c)) - @test isstrictsubset_interval(emptyinterval(c), emptyinterval(c)) + @test isinterior(b, c) + @test !isinterior(b, b) + @test isinterior(emptyinterval(c), c) + @test !isinterior(c, emptyinterval(c)) + @test isinterior(emptyinterval(c), emptyinterval(c)) @test isdisjoint_interval(a, I"2.1") @test !(isdisjoint_interval(a, b)) @@ -144,7 +144,7 @@ @test isentire_interval(entireinterval(a)) @test isentire_interval(interval(-Inf, Inf)) @test !isentire_interval(a) - @test isstrictsubset_interval(interval(-Inf, Inf), interval(-Inf, Inf)) + @test isinterior(interval(-Inf, Inf), interval(-Inf, Inf)) @test !isequal_interval(nai(a), nai(a)) @test isnai(interval(NaN)) & isnai(convert(Interval{Float64}, NaN)) @@ -236,12 +236,6 @@ @test isequal_interval(cancelplus(interval(0.0), interval(1.0)), interval(1.0)) @test isequal_interval(cancelminus(interval(-5.0, 0.0), interval(0.0, 5.0)), interval(-5.0)) @test isequal_interval(cancelplus(interval(-5.0, 0.0), interval(0.0, 5.0)), interval(0.0)) - @test isequal_interval(cancelminus(bareinterval(1e308), -bareinterval(1e308)), IntervalArithmetic.atomic(Float64, Inf)) - @test isequal_interval(cancelplus(bareinterval(1e308), bareinterval(1e308)), IntervalArithmetic.atomic(Float64, Inf)) - @test isequal_interval(cancelminus(bareinterval(nextfloat(1e308)), -bareinterval(nextfloat(1e308))), IntervalArithmetic.atomic(Float64, Inf)) - @test isequal_interval(cancelplus(bareinterval(nextfloat(1e308)), bareinterval(nextfloat(1e308))), IntervalArithmetic.atomic(Float64, Inf)) - @test isequal_interval(cancelminus(bareinterval(prevfloat(big(Inf))), -bareinterval(prevfloat(big(Inf)))), IntervalArithmetic.atomic(BigFloat, Inf)) - @test isequal_interval(cancelplus(bareinterval(prevfloat(big(Inf))), bareinterval(prevfloat(big(Inf)))), IntervalArithmetic.atomic(BigFloat, Inf)) end @testset "mid and radius" begin diff --git a/test/interval_tests/display.jl b/test/interval_tests/display.jl index 40be6f4cf..0bdf876aa 100644 --- a/test/interval_tests/display.jl +++ b/test/interval_tests/display.jl @@ -1,11 +1,10 @@ setprecision(BigFloat, 256) do @testset "BareInterval" begin a = bareinterval(-floatmin(Float64), 1.3) - # large_expo = IntervalArithmetic.atomic(BigFloat, -Inf) - large_expo = bareinterval(0, big"1e123456789") # use smaller exponent, cf. JuliaLang/julia#48678 + large_expo = bareinterval(0, big"1e123456789") # use "small" exponent, cf. JuliaLang/julia#48678 @testset "Standard format" begin - setdisplay(:standard) + setdisplay(:infsup) @testset "6 significant digits" begin # `decorations` keyword has no impact for `BareInterval` @@ -60,11 +59,10 @@ setprecision(BigFloat, 256) do b16 = interval(-floatmin(Float16), parse(Float16, "1.3")) br = interval(Rational{Int64}, -11//10, 13//10) c = interval(-1, Inf) - # large_expo = IntervalArithmetic.atomic(BigFloat, -Inf) - large_expo = interval(0, big"1e123456789") # use smaller exponent, cf. JuliaLang/julia#48678 + large_expo = interval(0, big"1e123456789") # use "small" exponent, cf. JuliaLang/julia#48678 @testset "Standard format" begin - setdisplay(:standard) + setdisplay(:infsup) @testset "6 significant digits" begin setdisplay(; sigdigits = 6) @@ -181,7 +179,7 @@ setprecision(BigFloat, 256) do @testset "Standard format" begin - setdisplay(:standard) + setdisplay(:infsup) @testset "6 significant digits" begin setdisplay(; sigdigits = 6) @@ -224,5 +222,5 @@ setprecision(BigFloat, 256) do end end - setdisplay(:standard; sigdigits = 6, decorations = true) # reset to default display options + setdisplay(:infsup; sigdigits = 6, decorations = true) # reset to default display options end diff --git a/test/interval_tests/multidim.jl b/test/interval_tests/multidim.jl index 657408ec6..fe153dd0c 100644 --- a/test/interval_tests/multidim.jl +++ b/test/interval_tests/multidim.jl @@ -14,7 +14,7 @@ using IntervalArithmetic.Symbols end -@testset "setdiff_interval" begin +@testset "interiordiff" begin function sameset(A, B) length(A) != length(B) && return false for a ∈ A @@ -33,21 +33,21 @@ end X = [2..4, 3..5] Y = [3..5, 4..6] @test sameset( - setdiff_interval(X, Y), + interiordiff(X, Y), [ [3..4, 3..4], [2..3, 3..5] ]) X = [2..5, 3..6] Y = [-10..10, 4..5] @test sameset( - setdiff_interval(X, Y), + interiordiff(X, Y), [ [2..5, 3..4], [2..5, 5..6] ]) X = [2..5, 3..6] Y = [4..6, 4..5] @test sameset( - setdiff_interval(X, Y), + interiordiff(X, Y), [ [4..5, 3..4], [4..5, 5..6], [2..4, 3..6] ]) @@ -55,7 +55,7 @@ end X = [2..5, 3..6] Y = [3..4, 4..5] @test sameset( - setdiff_interval(X, Y), + interiordiff(X, Y), [ [3..4, 3..4], [3..4, 5..6], [2..3, 3..6], @@ -63,16 +63,16 @@ end X = [2..5, 3..6] Y = [2..4, 10..20] - @test sameset(setdiff_interval(X, Y), typeof(X)[X]) + @test sameset(interiordiff(X, Y), typeof(X)[X]) X = [2..5, 3..6] Y = [-10..10, -10..10] - @test sameset(setdiff_interval(X, Y), typeof(X)[]) + @test sameset(interiordiff(X, Y), typeof(X)[]) X = [1..4, 3..6, 7..10] Y = [2..3, 4..5, 8..9] @test sameset( - setdiff_interval(X, Y), + interiordiff(X, Y), [ [2..3, 4..5, 7..8], [2..3, 4..5, 9..10], [2..3, 3..4, 7..10], @@ -83,7 +83,7 @@ end X = [-Inf..Inf, 1..2] Y = [1..2, -1..1.5] @test sameset( - setdiff_interval(X, Y), + interiordiff(X, Y), [ [-Inf..1, 1..2], [2..Inf, 1..2], [1..2, 1.5..2] ]) @@ -140,11 +140,11 @@ end @test all(isequal_interval.( w[1], [interval(0, 1), interval(0, 0.5)] )) & all(isequal_interval.( w[2], [interval(0, 1), interval(0.5, 2)] )) w = bisect(v, 1) - @test all(isequal_interval.( w[1], [interval(0, 0.49609375), interval(0, 2)] )) & - all(isequal_interval.( w[2], [interval(0.49609375, 1), interval(0, 2)] )) + @test all(isequal_interval.( w[1], [interval(0, 0.5), interval(0, 2)] )) & + all(isequal_interval.( w[2], [interval(0.5, 1), interval(0, 2)] )) w = bisect(v, 2) - @test all(isequal_interval.( w[1], [interval(0, 1), interval(0.0, 0.9921875)] )) & - all(isequal_interval.( w[2], [interval(0, 1), interval(0.9921875, 2.0)] )) + @test all(isequal_interval.( w[1], [interval(0, 1), interval(0, 1)] )) & + all(isequal_interval.( w[2], [interval(0, 1), interval(1, 2)] )) v = [interval(-Inf, Inf), interval(-Inf, Inf)] w = bisect(v, 1, 0.5) diff --git a/test/interval_tests/numeric.jl b/test/interval_tests/numeric.jl index d0d2b0c3b..04399f794 100644 --- a/test/interval_tests/numeric.jl +++ b/test/interval_tests/numeric.jl @@ -78,38 +78,38 @@ end end @testset "Power tests" begin - @test isequal_interval(nthpow(interval(2,3) , 2), interval(4, 9)) - @test isequal_interval(nthpow(interval(0,3) , 2), interval(0, 9)) - @test isequal_interval(nthpow(interval(-3,0) , 2), interval(0, 9)) - @test isequal_interval(nthpow(interval(-3,-2), 2), interval(4, 9)) - @test isequal_interval(nthpow(interval(-3,2) , 2), interval(0, 9)) - @test isequal_interval(nthpow(interval(0,3) , 3), interval(0, 27)) - @test isequal_interval(nthpow(interval(2,3) , 3), interval(8, 27)) - @test isequal_interval(nthpow(interval(-3,0) , 3), interval(-27., 0.)) - @test isequal_interval(nthpow(interval(-3,-2), 3), interval(-27, -8)) - @test isequal_interval(nthpow(interval(-3,2) , 3), interval(-27., 8.)) - @test isequal_interval(nthpow(interval(0,3) , -2), interval(1/9, Inf)) - @test isequal_interval(nthpow(interval(-3,0) , -2), interval(1/9, Inf)) - @test isequal_interval(nthpow(interval(-3,2) , -2), interval(1/9, Inf)) - @test isequal_interval(nthpow(interval(2,3) , -2), interval(1/9, 1/4)) - @test isequal_interval(nthpow(interval(1,2) , -3), interval(1/8, 1.0)) - @test isequal_interval(nthpow(interval(0,3) , -3), interval(1/27, Inf)) - @test isequal_interval(nthpow(interval(-1,2) , -3), entireinterval()) - @test isequal_interval(nthpow(interval(-3,2) , 3), interval(-27, 8)) + @test isequal_interval(pown(interval(2,3) , 2), interval(4, 9)) + @test isequal_interval(pown(interval(0,3) , 2), interval(0, 9)) + @test isequal_interval(pown(interval(-3,0) , 2), interval(0, 9)) + @test isequal_interval(pown(interval(-3,-2), 2), interval(4, 9)) + @test isequal_interval(pown(interval(-3,2) , 2), interval(0, 9)) + @test isequal_interval(pown(interval(0,3) , 3), interval(0, 27)) + @test isequal_interval(pown(interval(2,3) , 3), interval(8, 27)) + @test isequal_interval(pown(interval(-3,0) , 3), interval(-27., 0.)) + @test isequal_interval(pown(interval(-3,-2), 3), interval(-27, -8)) + @test isequal_interval(pown(interval(-3,2) , 3), interval(-27., 8.)) + @test isequal_interval(pown(interval(0,3) , -2), interval(1/9, Inf)) + @test isequal_interval(pown(interval(-3,0) , -2), interval(1/9, Inf)) + @test isequal_interval(pown(interval(-3,2) , -2), interval(1/9, Inf)) + @test isequal_interval(pown(interval(2,3) , -2), interval(1/9, 1/4)) + @test isequal_interval(pown(interval(1,2) , -3), interval(1/8, 1.0)) + @test isequal_interval(pown(interval(0,3) , -3), interval(1/27, Inf)) + @test isequal_interval(pown(interval(-1,2) , -3), entireinterval()) + @test isequal_interval(pown(interval(-3,2) , 3), interval(-27, 8)) @test isequal_interval(interval(0.0) ^ interval(1.1), interval(0)) - @test isequal_interval(nthpow(interval(0.0) , 0), interval(1)) + @test isequal_interval(pown(interval(0.0) , 0), interval(1)) @test isequal_interval(interval(0.0) ^ interval(1//10), interval(0)) @test isequal_interval(interval(0.0) ^ interval(-1//10), emptyinterval()) - @test isequal_interval(nthpow(emptyinterval(), 0), emptyinterval()) - @test isequal_interval(nthpow(interval(2.5) , 3), interval(15.625, 15.625)) - @test isequal_interval(nthpow(interval(5//2), 3), interval(125//8)) + @test isequal_interval(pown(emptyinterval(), 0), emptyinterval()) + @test isequal_interval(pown(interval(2.5) , 3), interval(15.625, 15.625)) + @test isequal_interval(pown(interval(5//2), 3), interval(125//8)) x = interval(-3, 2) - @test isequal_interval(nthpow(x, 3), interval(-27, 8)) + @test isequal_interval(pown(x, 3), interval(-27, 8)) @test isequal_interval(interval(-3, 4) ^ interval(0.5), interval(0, 2)) @test isequal_interval(interval(-3, 4) ^ interval(0.5), interval(-3, 4)^(1//2)) - @test isequal_interval(nthpow(interval(-3, 2), 2), interval(0.0, 9.0)) + @test isequal_interval(pown(interval(-3, 2), 2), interval(0.0, 9.0)) @test isequal_interval(interval(-3, 4) ^ interval(0.5), interval(0, 2)) @test isequal_interval(interval(BigFloat, -3, 4) ^ interval(0.5), interval(BigFloat, 0, 2)) @@ -230,7 +230,7 @@ end x = interval(pi) @test issubset_interval(x^100, fastpow(x, 100)) @test issubset_interval(x^50, fastpow(x, 50)) - @test isstrictsubset_interval(x^50, fastpow(x, 50)) + @test isinterior(x^50, fastpow(x, 50)) x = interval(2) @test isequal_interval(fastpow(x, 2000), interval(floatmax(), Inf)) @@ -302,41 +302,41 @@ end @test isequal_interval(hull(v...), II) end -@testset "nthroot test" begin - @test isequal_interval(nthroot(emptyinterval(), 3), emptyinterval()) - @test isequal_interval(nthroot(emptyinterval(), 4), emptyinterval()) - @test isequal_interval(nthroot(emptyinterval(), -3), emptyinterval()) - @test isequal_interval(nthroot(emptyinterval(), -4), emptyinterval()) - @test isequal_interval(nthroot(interval(1, 2), 0), emptyinterval()) - @test isequal_interval(nthroot(interval(5, 8), 0), emptyinterval()) - @test isequal_interval(nthroot(interval(1, 7), 0), emptyinterval()) - @test isequal_interval(nthroot(interval(8, 27), 3), interval(2, 3)) - @test isequal_interval(nthroot(interval(0, 27), 3), interval(0, 3)) - @test isequal_interval(nthroot(interval(-27, 0), 3), interval(-3, 0)) - @test isequal_interval(nthroot(interval(-27, 27), 3), interval(-3, 3)) - @test isequal_interval(nthroot(interval(-27, -8), 3), interval(-3, -2)) - @test isequal_interval(nthroot(interval(16, 81), 4), interval(2, 3)) - @test isequal_interval(nthroot(interval(0, 81), 4), interval(0, 3)) - @test isequal_interval(nthroot(interval(-81, 0), 4), interval(0)) - @test isequal_interval(nthroot(interval(-81, 81), 4), interval(0, 3)) - @test isequal_interval(nthroot(interval(-81, -16), 4), emptyinterval()) - @test isequal_interval(nthroot(interval(8, 27), -3), interval(1/3, 1/2)) - @test isequal_interval(nthroot(interval(0, 27), -3), interval(1/3, Inf)) - @test isequal_interval(nthroot(interval(-27, 0), -3), interval(-Inf, -1/3)) - @test isequal_interval(nthroot(interval(-27, 27), -3), interval(-Inf, Inf)) - @test isequal_interval(nthroot(interval(-27, -8), -3), interval(-1/2, -1/3)) - @test isequal_interval(nthroot(interval(16, 81), -4), interval(1/3, 1/2)) - @test isequal_interval(nthroot(interval(0, 81), -4), interval(1/3, Inf)) - @test isequal_interval(nthroot(interval(-81, 0), -4), emptyinterval()) - @test isequal_interval(nthroot(interval(-81, 1), 1), interval(-81, 1)) - @test isequal_interval(nthroot(interval(-81, 81), -4), interval(1/3, Inf)) - @test isequal_interval(nthroot(interval(-81, -16), -4), emptyinterval()) - @test isequal_interval(nthroot(interval(-81, -16), 1), interval(-81, -16)) - @test isequal_interval(nthroot(interval(BigFloat, 16, 81), 4), interval(BigFloat, 2, 3)) - @test isequal_interval(nthroot(interval(BigFloat, 0, 81), 4), interval(BigFloat, 0, 3)) - @test isequal_interval(nthroot(interval(BigFloat, -81, 0), 4), interval(BigFloat, 0, 0)) - @test isequal_interval(nthroot(interval(BigFloat, -81, 81), 4), interval(BigFloat, 0, 3)) - @test isequal_interval(nthroot(interval(BigFloat, -27, 27), -3), interval(BigFloat, -Inf, Inf)) - @test isequal_interval(nthroot(interval(BigFloat, -81, -16), -4), emptyinterval()) - @test isequal_interval(nthroot(interval(BigFloat, -81, -16), 1), interval(BigFloat, -81, -16)) +@testset "rootn test" begin + @test isequal_interval(rootn(emptyinterval(), 3), emptyinterval()) + @test isequal_interval(rootn(emptyinterval(), 4), emptyinterval()) + @test isequal_interval(rootn(emptyinterval(), -3), emptyinterval()) + @test isequal_interval(rootn(emptyinterval(), -4), emptyinterval()) + @test isequal_interval(rootn(interval(1, 2), 0), emptyinterval()) + @test isequal_interval(rootn(interval(5, 8), 0), emptyinterval()) + @test isequal_interval(rootn(interval(1, 7), 0), emptyinterval()) + @test isequal_interval(rootn(interval(8, 27), 3), interval(2, 3)) + @test isequal_interval(rootn(interval(0, 27), 3), interval(0, 3)) + @test isequal_interval(rootn(interval(-27, 0), 3), interval(-3, 0)) + @test isequal_interval(rootn(interval(-27, 27), 3), interval(-3, 3)) + @test isequal_interval(rootn(interval(-27, -8), 3), interval(-3, -2)) + @test isequal_interval(rootn(interval(16, 81), 4), interval(2, 3)) + @test isequal_interval(rootn(interval(0, 81), 4), interval(0, 3)) + @test isequal_interval(rootn(interval(-81, 0), 4), interval(0)) + @test isequal_interval(rootn(interval(-81, 81), 4), interval(0, 3)) + @test isequal_interval(rootn(interval(-81, -16), 4), emptyinterval()) + @test isequal_interval(rootn(interval(8, 27), -3), interval(1/3, 1/2)) + @test isequal_interval(rootn(interval(0, 27), -3), interval(1/3, Inf)) + @test isequal_interval(rootn(interval(-27, 0), -3), interval(-Inf, -1/3)) + @test isequal_interval(rootn(interval(-27, 27), -3), interval(-Inf, Inf)) + @test isequal_interval(rootn(interval(-27, -8), -3), interval(-1/2, -1/3)) + @test isequal_interval(rootn(interval(16, 81), -4), interval(1/3, 1/2)) + @test isequal_interval(rootn(interval(0, 81), -4), interval(1/3, Inf)) + @test isequal_interval(rootn(interval(-81, 0), -4), emptyinterval()) + @test isequal_interval(rootn(interval(-81, 1), 1), interval(-81, 1)) + @test isequal_interval(rootn(interval(-81, 81), -4), interval(1/3, Inf)) + @test isequal_interval(rootn(interval(-81, -16), -4), emptyinterval()) + @test isequal_interval(rootn(interval(-81, -16), 1), interval(-81, -16)) + @test isequal_interval(rootn(interval(BigFloat, 16, 81), 4), interval(BigFloat, 2, 3)) + @test isequal_interval(rootn(interval(BigFloat, 0, 81), 4), interval(BigFloat, 0, 3)) + @test isequal_interval(rootn(interval(BigFloat, -81, 0), 4), interval(BigFloat, 0, 0)) + @test isequal_interval(rootn(interval(BigFloat, -81, 81), 4), interval(BigFloat, 0, 3)) + @test isequal_interval(rootn(interval(BigFloat, -27, 27), -3), interval(BigFloat, -Inf, Inf)) + @test isequal_interval(rootn(interval(BigFloat, -81, -16), -4), emptyinterval()) + @test isequal_interval(rootn(interval(BigFloat, -81, -16), 1), interval(BigFloat, -81, -16)) end diff --git a/test/interval_tests/parsing.jl b/test/interval_tests/parsing.jl index 2dd09d60e..54f89e8f7 100644 --- a/test/interval_tests/parsing.jl +++ b/test/interval_tests/parsing.jl @@ -1,7 +1,7 @@ @testset "BareInterval" begin for T ∈ (Float16, Float32, Float64, BigFloat) @test isequal_interval(parse(BareInterval{T}, "[1, 2]"), bareinterval(T, 1, 2)) - if T !== BigFloat + if T != BigFloat @test isequal_interval(parse(BareInterval{T}, "[1e-324, 1e400]"), bareinterval(T, 0, Inf)) else @test isequal_interval(parse(BareInterval{BigFloat}, "[1e-324, 1e400]"), bareinterval(big"1e-324", big"1e400")) @@ -17,7 +17,7 @@ end @testset "Interval" begin for T ∈ (Float16, Float32, Float64, BigFloat) @test isequal_interval(parse(Interval{T}, "[1, 2]"), interval(T, 1, 2)) - if T !== BigFloat + if T != BigFloat @test isequal_interval(parse(Interval{T}, "[1e-324, 1e400]"), interval(T, 0, Inf)) else @test isequal_interval(parse(Interval{BigFloat}, "[1e-324, 1e400]"), interval(big"1e-324", big"1e400")) diff --git a/test/interval_tests/power.jl b/test/interval_tests/power.jl index 89c5fcec1..795eb52f7 100644 --- a/test/interval_tests/power.jl +++ b/test/interval_tests/power.jl @@ -68,12 +68,12 @@ end @test isequal_interval(interval(b), sqrt(interval(0, 1))) @test decoration(b) == IntervalArithmetic.trv - @test isequal_interval(nthpow(interval(2, 3) , 2), interval(4, 9)) - @test isequal_interval(nthpow(interval(2, 3) , -2), interval(1/9, 1/4)) - @test isequal_interval(nthpow(interval(-3, 2) , 3), interval(-27, 8)) - @test isequal_interval(nthpow(interval(-3, -2), -3), interval(-1/8, -1/27)) - @test isequal_interval(nthpow(interval(0, 3) , 2), interval(0, 9)) - @test isequal_interval(nthpow(interval(0, 3) , -2), interval(1/9, Inf, IntervalArithmetic.trv)) + @test isequal_interval(pown(interval(2, 3) , 2), interval(4, 9)) + @test isequal_interval(pown(interval(2, 3) , -2), interval(1/9, 1/4)) + @test isequal_interval(pown(interval(-3, 2) , 3), interval(-27, 8)) + @test isequal_interval(pown(interval(-3, -2), -3), interval(-1/8, -1/27)) + @test isequal_interval(pown(interval(0, 3) , 2), interval(0, 9)) + @test isequal_interval(pown(interval(0, 3) , -2), interval(1/9, Inf, IntervalArithmetic.trv)) @test isequal_interval(interval(2, 3) ^ interval(0, 1), interval(1, 3)) @test isequal_interval(interval(2, 3) ^ interval(0, 1), interval(1, 3)) @test isequal_interval(interval(0, 2) ^ interval(0, 1), interval(0, 2, IntervalArithmetic.trv)) diff --git a/test/interval_tests/run_intervals.jl b/test/interval_tests/run_intervals.jl deleted file mode 100644 index 9026321b0..000000000 --- a/test/interval_tests/run_intervals.jl +++ /dev/null @@ -1,14 +0,0 @@ -include_test("construction.jl") -include_test("parsing.jl") -include_test("rounding.jl") -include_test("consistency.jl") -include_test("numeric.jl") -include_test("power.jl") -include_test("trig.jl") -include_test("hyperbolic.jl") -include_test("loops.jl") -include_test("bisect.jl") -include_test("rand.jl") -include_test("display.jl") -include_test("multidim.jl") -# include_test("complex.jl") # TODO uncomment when `Complex` support is restored diff --git a/test/interval_tests/set_operations.jl b/test/interval_tests/set_operations.jl index 5a4b8bc15..f7fdf3be2 100644 --- a/test/interval_tests/set_operations.jl +++ b/test/interval_tests/set_operations.jl @@ -11,41 +11,29 @@ @test_throws ArgumentError symdiff(interval(1), interval(2.), interval(3.)) end -@testset "setdiff_interval" begin +@testset "interiordiff" begin x = interval(2, 4) y = interval(3, 5) - d = setdiff_interval(x, y) + @test typeof(interiordiff(x, y)) == Vector{Interval{Float64}} - @test typeof(d) == Vector{Interval{Float64}} - @test length(d) == 1 - @test d == [interval(2, 3)] - @test setdiff_interval(y, x) == [interval(4, 5)] + @test all(isequal_interval.(interiordiff(x, x), [interval(2), interval(4)])) + @test all(isequal_interval.(interiordiff(x, emptyinterval(x)), [x])) + + @test all(isequal_interval.(interiordiff(x, y), [interval(2, 3)])) + @test all(isequal_interval.(interiordiff(y, x), [interval(4, 5)])) - x = interval(2, 4) y = interval(2, 5) - @test typeof(d) == Vector{Interval{Float64}} - @test length(setdiff_interval(x, y)) == 0 - @test setdiff_interval(y, x) == [interval(4, 5)] + @test all(isequal_interval.(interiordiff(x, y), [interval(4)])) + @test all(isequal_interval.(interiordiff(y, x), [interval(4, 5)])) x = interval(2, 5) y = interval(3, 4) - @test setdiff_interval(x, y) == [interval(2, 3), interval(4, 5)] -end + @test all(isequal_interval.(interiordiff(x, y), [interval(2, 3), interval(4, 5)])) -@testset "setdiff_interval tests" begin x = interval(1, 3) - y = interval(2, 4) - @test all(isequal_interval.(setdiff_interval(x, y), [interval(1, 2)])) - @test all(isequal_interval.(setdiff_interval(y, x), [interval(3, 4)])) - - @test setdiff_interval(x, x) == Interval{Float64}[] - @test setdiff_interval(x, x) == Interval{Float64}[] - - @test all(isequal_interval.(setdiff_interval(x, emptyinterval(x)), [x])) - z = interval(0, 5) - @test setdiff_interval(x, z) == Interval{Float64}[] - @test all(isequal_interval.(setdiff_interval(z, x), [interval(0, 1), interval(3, 5)])) + @test interiordiff(x, z) == Interval{Float64}[] + @test all(isequal_interval.(interiordiff(z, x), [interval(0, 1), interval(3, 5)])) end diff --git a/test/interval_tests/trig.jl b/test/interval_tests/trig.jl index 2f7e11a13..5ae7f73c7 100644 --- a/test/interval_tests/trig.jl +++ b/test/interval_tests/trig.jl @@ -224,7 +224,7 @@ end end @testset "Trig with large arguments" begin - x = nthpow(interval(2.), 1000) + x = pown(interval(2.), 1000) @test diam(x) == 0.0 @test isequal_interval(sin(x), interval(-0.15920170308624246, -0.15920170308624243)) diff --git a/test/itl/atan2.itl b/test/itl/atan2.itl new file mode 100644 index 000000000..6dc1927fb --- /dev/null +++ b/test/itl/atan2.itl @@ -0,0 +1,53 @@ +/* + +Test cases for interval inverse tangent function with two arguments. + +Copyright 2015-2016 Oliver Heimlich (oheim@posteo.de) + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. + +*/ + +testcase minimal.atan2_test { + atan2 [empty] [empty] = [empty]; + atan2 [empty] [entire] = [empty]; + atan2 [entire] [empty] = [empty]; + atan2 [0.0, 0.0] [0.0, 0.0] = [empty]; + atan2 [entire] [entire] = [-0x1.921FB54442D19p1, +0x1.921FB54442D19p1]; + atan2 [0.0, 0.0] [-infinity, 0.0] = [0x1.921FB54442D18p1, 0x1.921FB54442D19p1]; + atan2 [0.0, 0.0] [0.0, infinity] = [0.0, 0.0]; + atan2 [0.0, infinity] [0.0, 0.0] = [0x1.921FB54442D18p0, 0x1.921FB54442D19p0]; + atan2 [-infinity, 0.0] [0.0, 0.0] = [-0x1.921FB54442D19p0, -0x1.921FB54442D18p0]; + atan2 [-0x1p-1022, 0.0] [-0x1p-1022, -0x1p-1022] = [-0x1.921FB54442D19p1, +0x1.921FB54442D19p1]; + atan2 [1.0, 1.0] [-1.0, -1.0] = [0x1.2D97C7F3321D2p1, 0x1.2D97C7F3321D3p1]; + atan2 [1.0, 1.0] [1.0, 1.0] = [0x1.921FB54442D18p-1, 0x1.921FB54442D19p-1]; + atan2 [-1.0, -1.0] [1.0, 1.0] = [-0x1.921FB54442D19p-1, -0x1.921FB54442D18p-1]; + atan2 [-1.0, -1.0] [-1.0, -1.0] = [-0x1.2D97C7F3321D3p1, -0x1.2D97C7F3321D2p1]; + atan2 [-0x1p-1022, 0x1p-1022] [-0x1p-1022, -0x1p-1022] = [-0x1.921FB54442D19p1, +0x1.921FB54442D19p1]; + atan2 [-0x1p-1022, 0x1p-1022] [0x1p-1022, 0x1p-1022] = [-0x1.921FB54442D19p-1, +0x1.921FB54442D19p-1]; + atan2 [-0x1p-1022, -0x1p-1022] [-0x1p-1022, 0x1p-1022] = [-0x1.2D97C7F3321D3p1, -0x1.921FB54442D18p-1]; + atan2 [0x1p-1022, 0x1p-1022] [-0x1p-1022, 0x1p-1022] = [0x1.921FB54442D18p-1, 0x1.2D97C7F3321D3p1]; + atan2 [-2.0, 2.0] [-3.0, -1.0] = [-0x1.921FB54442D19p1, +0x1.921FB54442D19p1]; + atan2 [0.0, 2.0] [-3.0, -1.0] = [0x1.0468A8ACE4DF6p1, 0x1.921FB54442D19p1]; + atan2 [1.0, 3.0] [-3.0, -1.0] = [0x1.E47DF3D0DD4Dp0, 0x1.68F095FDF593Dp1]; + atan2 [1.0, 3.0] [-2.0, 0.0] = [0x1.921FB54442D18p0, 0x1.56C6E7397F5AFp1]; + atan2 [1.0, 3.0] [-2.0, 2.0] = [0x1.DAC670561BB4Fp-2, 0x1.56C6E7397F5AFp1]; + atan2 [1.0, 3.0] [0.0, 2.0] = [0x1.DAC670561BB4Fp-2, 0x1.921FB54442D19p0]; + atan2 [1.0, 3.0] [1.0, 3.0] = [0x1.4978FA3269EE1p-2, 0x1.3FC176B7A856p0]; + atan2 [0.0, 2.0] [1.0, 3.0] = [0x0p0, 0x1.1B6E192EBBE45p0]; + atan2 [-2.0, 2.0] [1.0, 3.0] = [-0x1.1B6E192EBBE45p0, +0x1.1B6E192EBBE45p0]; + atan2 [-2.0, 0.0] [1.0, 3.0] = [-0x1.1B6E192EBBE45p0, 0x0p0]; + atan2 [-3.0, -1.0] [1.0, 3.0] = [-0x1.3FC176B7A856p0, -0x1.4978FA3269EE1p-2]; + atan2 [-3.0, -1.0] [0.0, 2.0] = [-0x1.921FB54442D19p0, -0x1.DAC670561BB4Fp-2]; + atan2 [-3.0, -1.0] [-2.0, 2.0] = [-0x1.56C6E7397F5AFp1, -0x1.DAC670561BB4Fp-2]; + atan2 [-3.0, -1.0] [-2.0, 0.0] = [-0x1.56C6E7397F5AFp1, -0x1.921FB54442D18p0]; + atan2 [-3.0, -1.0] [-3.0, -1.0] = [-0x1.68F095FDF593Dp1, -0x1.E47DF3D0DD4Dp0]; + atan2 [-2.0, 0.0] [-3.0, -1.0] = [-0x1.921FB54442D19p1, +0x1.921FB54442D19p1]; + atan2 [-5.0, 0.0] [-5.0, 0.0] = [-0x1.921FB54442D19p1, +0x1.921FB54442D19p1]; + atan2 [0.0, 5.0] [-5.0, 0.0] = [0x1.921FB54442D18p0, 0x1.921FB54442D19p1]; + atan2 [0.0, 5.0] [0.0, 5.0] = [0x0p0, 0x1.921FB54442D19p0]; + atan2 [-5.0, 0.0] [0.0, 5.0] = [-0x1.921FB54442D19p0, 0x0p0]; +} diff --git a/test/itl/c-xsc.itl b/test/itl/c-xsc.itl new file mode 100644 index 000000000..af53dee1e --- /dev/null +++ b/test/itl/c-xsc.itl @@ -0,0 +1,228 @@ +/* + +Unit tests from C-XSC version 2.5.4 +converted into portable ITL format by Oliver Heimlich. + +Copyright 1990-2000 Institut fuer Angewandte Mathematik, + Universitaet Karlsruhe, Germany +Copyright 2000-2014 Wiss. Rechnen/Softwaretechnologie + Universitaet Wuppertal, Germany +Copyright 2015-2016 Oliver Heimlich (oheim@posteo.de) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +// Tests A+B, B+A, A-B, B-A, -A, +A +testcase cxsc.intervaladdsub { + add [10.0, 20.0] [13.0, 17.0] = [23.0, 37.0]; + add [13.0, 17.0] [10.0, 20.0] = [23.0, 37.0]; + sub [10.0, 20.0] [13.0, 16.0] = [-6.0, 7.0]; + sub [13.0, 16.0] [10.0, 20.0] = [-7.0, 6.0]; + neg [10.0, 20.0] = [-20.0, -10.0]; + pos [10.0, 20.0] = [10.0, 20.0]; +} + +// Tests A*B, B*A, A/B, B/A +testcase cxsc.intervalmuldiv { + mul [1.0, 2.0] [3.0, 4.0] = [3.0, 8.0]; + mul [-1.0, 2.0] [3.0, 4.0] = [-4.0, 8.0]; + mul [-2.0, 1.0] [3.0, 4.0] = [-8.0, 4.0]; + mul [-2.0, -1.0] [3.0, 4.0] = [-8.0, -3.0]; + mul [1.0, 2.0] [-3.0, 4.0] = [-6.0, 8.0]; + mul [-1.0, 2.0] [-3.0, 4.0] = [-6.0, 8.0]; + mul [-2.0, 1.0] [-3.0, 4.0] = [-8.0, 6.0]; + mul [-2.0, -1.0] [-3.0, 4.0] = [-8.0, 6.0]; + mul [1.0, 2.0] [-4.0, 3.0] = [-8.0, 6.0]; + mul [-1.0, 2.0] [-4.0, 3.0] = [-8.0, 6.0]; + mul [-2.0, 1.0] [-4.0, 3.0] = [-6.0, 8.0]; + mul [-2.0, -1.0] [-4.0, 3.0] = [-6.0, 8.0]; + mul [1.0, 2.0] [-4.0, -3.0] = [-8.0, -3.0]; + mul [-1.0, 2.0] [-4.0, -3.0] = [-8.0, 4.0]; + mul [-2.0, -1.0] [-4.0, -3.0] = [3.0, 8.0]; + + div [1.0, 2.0] [4.0, 8.0] = [0.125, 0.5]; + div [-1.0, 2.0] [4.0, 8.0] = [-0.25, 0.5]; + div [-2.0, 1.0] [4.0, 8.0] = [-0.5, 0.25]; + div [-2.0, -1.0] [4.0, 8.0] = [-0.5, -0.125]; + div [1.0, 2.0] [-4.0, 8.0] = [entire]; + div [-1.0, 2.0] [-4.0, 8.0] = [entire]; + div [-2.0, 1.0] [-4.0, 8.0] = [entire]; + div [-2.0, -1.0] [-4.0, 8.0] = [entire]; + div [1.0, 2.0] [-8.0, 4.0] = [entire]; + div [-1.0, 2.0] [-8.0, 4.0] = [entire]; + div [-2.0, 1.0] [-8.0, 4.0] = [entire]; + div [-2.0, -1.0] [-8.0, 4.0] = [entire]; + div [1.0, 2.0] [-8.0, -4.0] = [-0.5, -0.125]; + div [-1.0, 2.0] [-8.0, -4.0] = [-0.5, 0.25]; + div [-2.0, 1.0] [-8.0, -4.0] = [-0.25, 0.5]; + div [-2.0, -1.0] [-8.0, -4.0] = [0.125, 0.5]; +} + +// Tests A|B, B|A, A&B, B&A +testcase cxsc.intervalsetops { + convexHull [-2.0, 2.0] [-4.0, -3.0] = [-4.0, 2.0]; + convexHull [-2.0, 2.0] [-4.0, -1.0] = [-4.0, 2.0]; + convexHull [-2.0, 2.0] [-4.0, 4.0] = [-4.0, 4.0]; + convexHull [-2.0, 2.0] [-1.0, 1.0] = [-2.0, 2.0]; + convexHull [-2.0, 2.0] [1.0, 4.0] = [-2.0, 4.0]; + convexHull [-2.0, 2.0] [3.0, 4.0] = [-2.0, 4.0]; + convexHull [-4.0, -3.0] [-2.0, 2.0] = [-4.0, 2.0]; + convexHull [-4.0, -1.0] [-2.0, 2.0] = [-4.0, 2.0]; + convexHull [-4.0, 4.0] [-2.0, 2.0] = [-4.0, 4.0]; + convexHull [-1.0, 1.0] [-2.0, 2.0] = [-2.0, 2.0]; + convexHull [1.0, 4.0] [-2.0, 2.0] = [-2.0, 4.0]; + convexHull [3.0, 4.0] [-2.0, 2.0] = [-2.0, 4.0]; + + intersection [-2.0, 2.0] [-4.0, -3.0] = [empty]; + intersection [-2.0, 2.0] [-4.0, -1.0] = [-2.0, -1.0]; + intersection [-2.0, 2.0] [-4.0, 4.0] = [-2.0, 2.0]; + intersection [-2.0, 2.0] [-1.0, 1.0] = [-1.0, 1.0]; + intersection [-2.0, 2.0] [1.0, 4.0] = [1.0, 2.0]; + intersection [-2.0, 2.0] [3.0, 4.0] = [empty]; + intersection [-4.0, -3.0] [-2.0, 2.0] = [empty]; + intersection [-4.0, -1.0] [-2.0, 2.0] = [-2.0, -1.0]; + intersection [-4.0, 4.0] [-2.0, 2.0] = [-2.0, 2.0]; + intersection [-1.0, 1.0] [-2.0, 2.0] = [-1.0, 1.0]; + intersection [1.0, 4.0] [-2.0, 2.0] = [1.0, 2.0]; + intersection [3.0, 4.0] [-2.0, 2.0] = [empty]; +} + +// Tests A|B, B|A, A&B, B&A, B is scalar-type +testcase cxsc.intervalmixsetops { + convexHull [-2.0, 2.0] [-4.0, -4.0] = [-4.0, 2.0]; + convexHull [-2.0, 2.0] [1.0, 1.0] = [-2.0, 2.0]; + convexHull [-2.0, 2.0] [4.0, 4.0] = [-2.0, 4.0]; + convexHull [-4.0, -4.0] [-2.0, 2.0] = [-4.0, 2.0]; + convexHull [1.0, 1.0] [-2.0, 2.0] = [-2.0, 2.0]; + convexHull [4.0, 4.0] [-2.0, 2.0] = [-2.0, 4.0]; + + intersection [-2.0, 2.0] [-4.0, -4.0] = [empty]; + intersection [-2.0, 2.0] [1.0, 1.0] = [1.0, 1.0]; + intersection [-2.0, 2.0] [4.0, 4.0] = [empty]; + intersection [-4.0, -4.0] [-2.0, 2.0] = [empty]; + intersection [1.0, 1.0] [-2.0, 2.0] = [1.0, 1.0]; + intersection [4.0, 4.0] [-2.0, 2.0] = [empty]; +} + +// Tests A|B, B|A, A and B are scalar-type +testcase cxsc.scalarmixsetops { + convexHull [-2.0, -2.0] [-4.0, -4.0] = [-4.0, -2.0]; + convexHull [-2.0, -2.0] [-2.0, -2.0] = [-2.0, -2.0]; + convexHull [-2.0, -2.0] [2.0, 2.0] = [-2.0, 2.0]; + convexHull [-4.0, -4.0] [-2.0, -2.0] = [-4.0, -2.0]; + convexHull [-2.0, -2.0] [-2.0, -2.0] = [-2.0, -2.0]; + convexHull [2.0, 2.0] [-2.0, -2.0] = [-2.0, 2.0]; +} + +// Tests AB, A<=B, A>=B, A==B +testcase cxsc.intervalsetcompops { + interior [-1.0, 2.0] [-1.0, 2.0] = false; + interior [-2.0, 1.0] [-3.0, 2.0] = true; + interior [-2.0, 2.0] [-1.0, 1.0] = false; + interior [-2.0, 2.0] [-1.0, 2.0] = false; + interior [-2.0, 2.0] [-2.0, 1.0] = false; + interior [-2.0, 2.0] [-2.0, 3.0] = false; + interior [-2.0, 2.0] [-3.0, 2.0] = false; + interior [-1.0, 2.0] [-1.0, 2.0] = false; + interior [-3.0, 2.0] [-2.0, 1.0] = false; + interior [-1.0, 1.0] [-2.0, 2.0] = true; + interior [-1.0, 2.0] [-2.0, 2.0] = false; + interior [-2.0, 1.0] [-2.0, 2.0] = false; + interior [-2.0, 3.0] [-2.0, 2.0] = false; + interior [-3.0, 2.0] [-2.0, 2.0] = false; + + subset [-1.0, 2.0] [-1.0, 2.0] = true; + subset [-2.0, 1.0] [-3.0, 2.0] = true; + subset [-2.0, 2.0] [-1.0, 1.0] = false; + subset [-2.0, 2.0] [-1.0, 2.0] = false; + subset [-2.0, 2.0] [-2.0, 1.0] = false; + subset [-2.0, 2.0] [-2.0, 3.0] = true; + subset [-2.0, 2.0] [-3.0, 2.0] = true; + subset [-3.0, 2.0] [-2.0, 1.0] = false; + subset [-1.0, 1.0] [-2.0, 2.0] = true; + subset [-1.0, 2.0] [-2.0, 2.0] = true; + subset [-2.0, 1.0] [-2.0, 2.0] = true; + subset [-2.0, 3.0] [-2.0, 2.0] = false; + subset [-3.0, 2.0] [-2.0, 2.0] = false; + + equal [-1.0, 2.0] [-1.0, 2.0] = true; + equal [-2.0, 1.0] [-3.0, 2.0] = false; + equal [-2.0, 2.0] [-1.0, 1.0] = false; + equal [-2.0, 2.0] [-1.0, 2.0] = false; + equal [-2.0, 2.0] [-2.0, 1.0] = false; + equal [-2.0, 2.0] [-2.0, 3.0] = false; + equal [-2.0, 2.0] [-3.0, 2.0] = false; +} + +// Tests AB, A<=B, A>=B, A==B, BA, B<=A, B>=A, B==A, where B is scalar +testcase cxsc.intervalscalarsetcompops { + interior [-1.0, 2.0] [-2.0, -2.0] = false; + interior [-2.0, 2.0] [-2.0, -2.0] = false; + interior [-2.0, 2.0] [0.0, 0.0] = false; + interior [-2.0, 2.0] [2.0, 2.0] = false; + interior [-2.0, 2.0] [3.0, 3.0] = false; + interior [-1.0, -1.0] [1.0, 1.0] = false; + interior [-1.0, -1.0] [-1.0, -1.0] = false; + interior [-2.0, -2.0] [-1.0, 2.0] = false; + interior [-2.0, -2.0] [-2.0, 2.0] = false; + interior [0.0, 0.0] [-2.0, 2.0] = true; + interior [2.0, 2.0] [-2.0, 2.0] = false; + interior [3.0, 3.0] [-2.0, 2.0] = false; + interior [1.0, 1.0] [-1.0, -1.0] = false; + interior [-1.0, -1.0] [-1.0, -1.0] = false; + + subset [-1.0, 2.0] [-2.0, -2.0] = false; + subset [-2.0, 2.0] [-2.0, -2.0] = false; + subset [-2.0, 2.0] [0.0, 0.0] = false; + subset [-2.0, 2.0] [2.0, 2.0] = false; + subset [-2.0, 2.0] [3.0, 3.0] = false; + subset [-1.0, -1.0] [1.0, 1.0] = false; + subset [-1.0, -1.0] [-1.0, -1.0] = true; + subset [-2.0, -2.0] [-1.0, 2.0] = false; + subset [-2.0, -2.0] [-2.0, 2.0] = true; + subset [0.0, 0.0] [-2.0, 2.0] = true; + subset [2.0, 2.0] [-2.0, 2.0] = true; + subset [3.0, 3.0] [-2.0, 2.0] = false; + subset [1.0, 1.0] [-1.0, -1.0] = false; + subset [-1.0, -1.0] [-1.0, -1.0] = true; + + equal [-1.0, 2.0] [-2.0, -2.0] = false; + equal [-2.0, 2.0] [-2.0, -2.0] = false; + equal [-2.0, 2.0] [0.0, 0.0] = false; + equal [-2.0, 2.0] [2.0, 2.0] = false; + equal [-2.0, 2.0] [3.0, 3.0] = false; + equal [-1.0, -1.0] [1.0, 1.0] = false; + equal [-1.0, -1.0] [-1.0, -1.0] = true; +} + +testcase cxsc.intervalstdfunc { + sqr [11.0, 11.0] = [121.0, 121.0]; + sqr [0.0, 0.0] = [0.0, 0.0]; + sqr [-9.0, -9.0] = [81.0, 81.0]; + + sqrt [121.0, 121.0] = [11.0, 11.0]; + sqrt [0.0, 0.0] = [0.0, 0.0]; + sqrt [81.0, 81.0] = [9.0, 9.0]; + + rootn [27.0, 27.0] 3 = [3.0, 3.0]; + rootn [0.0, 0.0] 4 = [0.0, 0.0]; + rootn [1024.0, 1024.0] 10 = [2.0, 2.0]; + + pow [2.0, 2.0] [2.0, 2.0] = [4.0, 4.0]; + pow [4.0, 4.0] [5.0, 5.0] = [1024.0, 1024.0]; + // Negativ geht noch nicht + pow [2.0, 2.0] [3.0, 3.0] = [8.0, 8.0]; +} \ No newline at end of file diff --git a/test/itl/fi_lib.itl b/test/itl/fi_lib.itl new file mode 100644 index 000000000..acf767bb4 --- /dev/null +++ b/test/itl/fi_lib.itl @@ -0,0 +1,930 @@ +/* + +Unit tests from FI_LIB version 1.2 +(Original authors: Werner Hofschuster and Walter Kraemer) +converted into portable ITL format by Oliver Heimlich. + +Copyright 1997-2000 Institut fuer Wissenschaftliches Rechnen + und Mathematische Modellbildung (IWRMM) + and + Institut fuer Angewandte Mathematik + Universitaet Karlsruhe, Germany +Copyright 2000-2005 Wiss. Rechnen/Softwaretechnologie + Universitaet Wuppertal, Germany +Copyright 2015-2016 Oliver Heimlich (oheim@posteo.de) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +testcase FI_LIB.addii { + add [0X0.0000000000000P+0, 0X0.0000000000000P+0] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + add [0X1.0000000000000P+0, 0X1.0000000000000P+0] [0X2.0000000000000P+0, 0X2.0000000000000P+0] = [0X3.0000000000000P+0, 0X3.0000000000000P+0]; + add [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [-0X2.0000000000000P+0, -0X2.0000000000000P+0] = [-0X3.0000000000000P+0, -0X3.0000000000000P+0]; + add [0X1.0000000000000P+0, 0X1.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + add [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + add [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] = [0X3.F400000000000P-1064, 0X3.F400000000000P-1064]; + add [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + add [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] = [-0X3.F400000000000P-1064, -0X3.F400000000000P-1064]; + add [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + add [0XF.FFFFFFFFFFFF8P+1020, 0XF.FFFFFFFFFFFF8P+1020] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0XF.FFFFFFFFFFFF0P+1020, 0XF.FFFFFFFFFFFF8P+1020]; + add [-0XF.FFFFFFFFFFFF8P+1020, -0XF.FFFFFFFFFFFF8P+1020] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0XF.FFFFFFFFFFFF8P+1020, -0XF.FFFFFFFFFFFF0P+1020]; + add [0X0.0000000000000P+0, 0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [0X1.0000000000000P+0, 0X3.0000000000000P+0]; + add [0X1.0000000000000P+0, 0X2.0000000000000P+0] [0X0.0000000000000P+0, 0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X3.0000000000000P+0]; + add [0X1.0000000000000P+0, 0X2.0000000000000P+0] [0X3.0000000000000P+0, 0X4.0000000000000P+0] = [0X4.0000000000000P+0, 0X6.0000000000000P+0]; + add [0X3.0000000000000P+0, 0X4.0000000000000P+0] [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [0X4.0000000000000P+0, 0X6.0000000000000P+0]; + add [-0X1.0000000000000P+0, 0X0.0000000000000P+0] [-0X4.0000000000000P+0, -0X3.0000000000000P+0] = [-0X5.0000000000000P+0, -0X3.0000000000000P+0]; + add [-0X4.0000000000000P+0, -0X3.0000000000000P+0] [-0X1.0000000000000P+0, 0X0.0000000000000P+0] = [-0X5.0000000000000P+0, -0X3.0000000000000P+0]; + add [-0X5.0000000000000P+0, -0X4.0000000000000P+0] [0X4.0000000000000P+0, 0X5.0000000000000P+0] = [-0X1.0000000000000P+0, +0X1.0000000000000P+0]; + add [0X4.0000000000000P+0, 0X5.0000000000000P+0] [-0X5.0000000000000P+0, -0X4.0000000000000P+0] = [-0X1.0000000000000P+0, +0X1.0000000000000P+0]; +} + +testcase FI_LIB.subii { + sub [0X0.0000000000000P+0, 0X0.0000000000000P+0] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + sub [0X1.0000000000000P+0, 0X1.0000000000000P+0] [0X2.0000000000000P+0, 0X2.0000000000000P+0] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + sub [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [-0X2.0000000000000P+0, -0X2.0000000000000P+0] = [0X1.0000000000000P+0, 0X1.0000000000000P+0]; + sub [0X1.0000000000000P+0, 0X1.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X2.0000000000000P+0, 0X2.0000000000000P+0]; + sub [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0X2.0000000000000P+0, -0X2.0000000000000P+0]; + sub [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + sub [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0X1.0000000000000P+0, -0XF.FFFFFFFFFFFF8P-4]; + sub [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + sub [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0X1.0000000000001P+0, -0X1.0000000000000P+0]; + sub [0XF.FFFFFFFFFFFF8P+1020, 0XF.FFFFFFFFFFFF8P+1020] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0XF.FFFFFFFFFFFF0P+1020, 0XF.FFFFFFFFFFFF8P+1020]; + sub [-0XF.FFFFFFFFFFFF8P+1020, -0XF.FFFFFFFFFFFF8P+1020] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [-0XF.FFFFFFFFFFFF8P+1020, -0XF.FFFFFFFFFFFF0P+1020]; + sub [0X0.0000000000000P+0, 0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [-0X2.0000000000000P+0, 0X0.0000000000000P+0]; + sub [0X1.0000000000000P+0, 0X2.0000000000000P+0] [0X0.0000000000000P+0, 0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X2.0000000000000P+0]; + sub [0X1.0000000000000P+0, 0X2.0000000000000P+0] [0X3.0000000000000P+0, 0X4.0000000000000P+0] = [-0X3.0000000000000P+0, -0X1.0000000000000P+0]; + sub [0X3.0000000000000P+0, 0X4.0000000000000P+0] [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [0X1.0000000000000P+0, 0X3.0000000000000P+0]; + sub [-0X1.0000000000000P+0, 0X0.0000000000000P+0] [-0X4.0000000000000P+0, -0X3.0000000000000P+0] = [0X2.0000000000000P+0, 0X4.0000000000000P+0]; + sub [-0X4.0000000000000P+0, -0X3.0000000000000P+0] [-0X1.0000000000000P+0, 0X0.0000000000000P+0] = [-0X4.0000000000000P+0, -0X2.0000000000000P+0]; + sub [-0X5.0000000000000P+0, -0X4.0000000000000P+0] [0X4.0000000000000P+0, 0X5.0000000000000P+0] = [-0XA.0000000000000P+0, -0X8.0000000000000P+0]; + sub [0X4.0000000000000P+0, 0X5.0000000000000P+0] [-0X5.0000000000000P+0, -0X4.0000000000000P+0] = [0X8.0000000000000P+0, 0XA.0000000000000P+0]; +} + +testcase FI_LIB.mulii { + mul [0X0.0000000000000P+0, 0X0.0000000000000P+0] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + mul [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X1.0000000000000P+0]; + mul [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + mul [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + mul [0X0.0000000000000P+0, 0X0.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X0.0000000000000P+0, 0X0.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X1.0000000000000P+0, 0X1.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + mul [0X1.0000000000000P+0, 0X1.0000000000000P+0] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X1.0000000000000P+0, 0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X1.0000000000000P+0]; + mul [0XF.FFFFFFFFFFFF8P+1020, 0XF.FFFFFFFFFFFF8P+1020] [0X8.0000000000000P-4, 0X8.0000000000000P-4] = [0X7.FFFFFFFFFFFFCP+1020, 0X7.FFFFFFFFFFFFCP+1020]; + mul [-0XF.FFFFFFFFFFFF8P+1020, -0XF.FFFFFFFFFFFF8P+1020] [0X8.0000000000000P-4, 0X8.0000000000000P-4] = [-0X7.FFFFFFFFFFFFCP+1020, -0X7.FFFFFFFFFFFFCP+1020]; + mul [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + mul [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064]; + mul [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064]; + mul [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [0X4.0000000000000P+0, 0X9.0000000000000P+0]; + mul [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [-0X1.0000000000000P+0, +0X1.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [-0X9.0000000000000P+0, -0X4.0000000000000P+0]; + mul [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [-0X1.0000000000000P+0, +0X1.0000000000000P+0] = [-0X1.0000000000000P+0, +0X1.0000000000000P+0]; + mul [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [0X2.0000000000000P+0, 0X3.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [-0X9.0000000000000P+0, -0X4.0000000000000P+0]; + mul [0X2.0000000000000P+0, 0X3.0000000000000P+0] [-0X1.0000000000000P+0, +0X1.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [0X2.0000000000000P+0, 0X3.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [0X4.0000000000000P+0, 0X9.0000000000000P+0]; + mul [-0X5.0000000000000P+0, +0X2.0000000000000P+0] [-0X4.0000000000000P+0, +0X3.0000000000000P+0] = [-0XF.0000000000000P+0, +0X1.4000000000000P+4]; + mul [-0X5.0000000000000P+0, +0X2.0000000000000P+0] [-0X3.0000000000000P+0, +0X8.0000000000000P+0] = [-0X2.8000000000000P+4, +0X1.0000000000000P+4]; + mul [-0X2.0000000000000P+0, +0X5.0000000000000P+0] [-0X4.0000000000000P+0, +0X3.0000000000000P+0] = [-0X1.4000000000000P+4, +0XF.0000000000000P+0]; + mul [-0X4.0000000000000P+0, +0X5.0000000000000P+0] [-0X4.0000000000000P+0, +0X3.0000000000000P+0] = [-0X1.4000000000000P+4, +0X1.0000000000000P+4]; + mul [-0X3.0000000000000P+0, 0X0.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [0X0.0000000000000P+0, 0X9.0000000000000P+0]; + mul [-0X3.0000000000000P+0, 0X0.0000000000000P+0] [-0X1.0000000000000P+0, +0X1.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [-0X3.0000000000000P+0, 0X0.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [-0X9.0000000000000P+0, 0X0.0000000000000P+0]; + mul [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [-0X3.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X9.0000000000000P+0]; + mul [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [0X0.0000000000000P+0, 0X3.0000000000000P+0] = [-0X9.0000000000000P+0, 0X0.0000000000000P+0]; + mul [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [-0X3.0000000000000P+0, 0X0.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [0X0.0000000000000P+0, 0X3.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [0X0.0000000000000P+0, 0X3.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [-0X9.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X0.0000000000000P+0, 0X3.0000000000000P+0] [-0X1.0000000000000P+0, +0X1.0000000000000P+0] = [-0X3.0000000000000P+0, +0X3.0000000000000P+0]; + mul [0X0.0000000000000P+0, 0X3.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [0X0.0000000000000P+0, 0X9.0000000000000P+0]; + mul [0X2.0000000000000P+0, 0X3.0000000000000P+0] [-0X3.0000000000000P+0, 0X0.0000000000000P+0] = [-0X9.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X2.0000000000000P+0, 0X3.0000000000000P+0] [-0X3.0000000000000P+0, 0X0.0000000000000P+0] = [-0X9.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X0.0000000000000P+0, 0X2.0000000000000P+0] [-0X3.0000000000000P+0, 0X0.0000000000000P+0] = [-0X6.0000000000000P+0, 0X0.0000000000000P+0]; + mul [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + mul [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064]; + mul [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064]; + mul [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] = [-0X4.0000000000000P-1076, 0X0.0000000000000P+0]; + mul [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + mul [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X0.0000000000000P+0, 0X0.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; +} + +testcase FI_LIB.divii { + div [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X1.0000000000000P+0]; + div [-0X1.0000000000000P+0, -0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + div [0X0.0000000000000P+0, 0X0.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + div [0X0.0000000000000P+0, 0X0.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + div [0X1.0000000000000P+0, 0X1.0000000000000P+0] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + div [0X1.0000000000000P+0, 0X1.0000000000000P+0] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X1.0000000000000P+0]; + div [0XF.FFFFFFFFFFFF8P+1020, 0XF.FFFFFFFFFFFF8P+1020] [0X2.0000000000000P+0, 0X2.0000000000000P+0] = [0X7.FFFFFFFFFFFFCP+1020, 0X7.FFFFFFFFFFFFCP+1020]; + div [-0XF.FFFFFFFFFFFF8P+1020, -0XF.FFFFFFFFFFFF8P+1020] [0X2.0000000000000P+0, 0X2.0000000000000P+0] = [-0X7.FFFFFFFFFFFFCP+1020, -0X7.FFFFFFFFFFFFCP+1020]; + div [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] = [0X1.0000000000000P+0, 0X1.0000000000000P+0]; + div [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [0X1.0000000000000P+0, 0X1.0000000000000P+0] = [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064]; + div [0X1.FA00000000000P-1064, 0X1.FA00000000000P-1064] [-0X1.0000000000000P+0, -0X1.0000000000000P+0] = [-0X1.FA00000000000P-1064, -0X1.FA00000000000P-1064]; + div [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [0XA.AAAAAAAAAAAA8P-4, 0X1.8000000000000P+0]; + div [-0X3.0000000000000P+0, -0X2.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [-0X1.8000000000000P+0, -0XA.AAAAAAAAAAAA8P-4]; + div [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [-0X8.0000000000000P-4, +0X8.0000000000000P-4]; + div [-0X1.0000000000000P+0, +0X1.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [-0X8.0000000000000P-4, +0X8.0000000000000P-4]; + div [0X2.0000000000000P+0, 0X3.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [-0X1.8000000000000P+0, -0XA.AAAAAAAAAAAA8P-4]; + div [0X2.0000000000000P+0, 0X3.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [0XA.AAAAAAAAAAAA8P-4, 0X1.8000000000000P+0]; + div [-0X3.0000000000000P+0, 0X0.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [0X0.0000000000000P+0, 0X1.8000000000000P+0]; + div [-0X3.0000000000000P+0, 0X0.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [-0X1.8000000000000P+0, 0X0.0000000000000P+0]; + div [0X0.0000000000000P+0, 0X3.0000000000000P+0] [-0X3.0000000000000P+0, -0X2.0000000000000P+0] = [-0X1.8000000000000P+0, 0X0.0000000000000P+0]; + div [0X0.0000000000000P+0, 0X3.0000000000000P+0] [0X2.0000000000000P+0, 0X3.0000000000000P+0] = [0X0.0000000000000P+0, 0X1.8000000000000P+0]; +} + +testcase FI_LIB.unary_functions { + exp [-0X1.16CC0DF1540F5P+112, -0X1.B3E4076622F04P-232] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp [-0X2.42042B9A88438P-220, -0X2.A213429DB0508P-508] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp [-0X2.0E2E40B15D814P+272, -0X1.5D74CFDA6B292P-200] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp [-0X2.0EA791886F712P-416, -0X3.FE66A8D1A3472P-456] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp [-0X6.FF424CB26239CP+292, -0X2.89F6682121BA8P+252] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp [-0X8.80EEFDF700148P+332, -0X1.C4E85E50A626DP+0] = [0X0.0000000000000P+0, 0X2.BA43457B11D98P-4]; + exp [-0X6.CA83546563A5CP+236, -0X4.F0F28370909FCP-440] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp [-0X4.E60572D4FCFD0P+172, -0X1.EB095183538C8P-344] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp [-0X2.7ED8954764B12P-288, -0X8.71DC22117BE90P-756] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp [-0XD.CF39B8DD68B98P-76, -0X8.0205C5B1357B0P-564] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp [-0X1.582D3AFB2C63DP+312, -0X5.08DC843E57ED4P+180] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp [-0X4.AF296DD37FD74P+256, -0X5.CBE2BD423B02CP-48] = [0X0.0000000000000P+0, 0XF.FFFFFFFFFFA38P-4]; + exp [-0X1.1FBA2D1252D2BP+656, -0X2.4B7A4095C91B4P+8] = [0X0.0000000000000P+0, 0X1.5D7A2F6655DFCP-848]; + //exp [-0X3.2FD3FDE325402P+688, -0X2.738623C238270P+48] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp [-0X1.44F2134E1901EP+8, -0X2.581DAD9AFE6DCP-172] = [0X9.34C0766401B20P-472, 0X1.0000000000000P+0]; + exp [-0X2.9529E333F2ABAP+988, -0X7.19390F862F49CP-544] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp [-0X1.58391FD92C387P-148, -0X4.0C12426A57194P-440] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp [-0XB.FADC4FB83E140P+348, -0XF.13E388B2165F0P-512] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + //exp [-0XD.F2552B8F60978P+236, -0X7.FBDBC320979A4P+188] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp [-0X8.86826CE1AB700P-240, -0X4.FEA8D3A3ED018P-316] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [0X2.B7E151628AED2P+0, 0X7.63992E35376B8P+0]; + exp [-0X1.0000000000000P+0, +0X2.0000000000000P+0] = [0X5.E2D58D8B3BCDCP-4, 0X7.63992E35376B8P+0]; + exp [-0X5.0000000000000P+0, -0X3.0000000000000P+0] = [0X1.B993FE00D5376P-8, 0XC.BED8666758578P-8]; + exp [-0X2.0000000000000P+0, +0X9.9999999999998P-4] = [0X2.2A555477F0396P-4, 0X1.D27660B11A9F0P+0]; + exp [0X4.0000000000000P-1076, 0X4.4444400000000P-1056] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + exp [0X4.4440000000000P-1064, 0X1.0000000000000P+0] = [0X1.0000000000000P+0, 0X2.B7E151628AED4P+0]; + exp [-0X4.4444000000000P-1060, +0X4.4444000000000P-1060] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000001P+0]; + exp [-0X4.4400000000000P-1068, +0X1.FFF0000000000P+0] = [0XF.FFFFFFFFFFFF8P-4, 0X7.6322F8540CFB4P+0]; + exp [-0X1.FFFF000000000P+0, -0X8.8888880000000P-1052] = [0X2.2A577ECE59DC6P-4, 0X1.0000000000000P+0]; + exp [-0X1.FFFFFFF000000P+0, +0X8.CD11555400000P-1044] = [0X2.2A55549A958EAP-4, 0X1.0000000000001P+0]; + exp2 [-0X1.16CC0DF1540F5P+112, -0X1.B3E4076622F04P-232] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp2 [-0X2.42042B9A88438P-220, -0X2.A213429DB0508P-508] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp2 [-0X2.0E2E40B15D814P+272, -0X1.5D74CFDA6B292P-200] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp2 [-0X2.0EA791886F712P-416, -0X3.FE66A8D1A3472P-456] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp2 [-0X6.FF424CB26239CP+292, -0X2.89F6682121BA8P+252] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp2 [-0X8.80EEFDF700148P+332, -0X1.C4E85E50A626DP+0] = [0X0.0000000000000P+0, 0X4.B1AC6F8470484P-4]; + exp2 [-0X6.CA83546563A5CP+236, -0X4.F0F28370909FCP-440] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp2 [-0X4.E60572D4FCFD0P+172, -0X1.EB095183538C8P-344] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp2 [-0X2.7ED8954764B12P-288, -0X8.71DC22117BE90P-756] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp2 [-0XD.CF39B8DD68B98P-76, -0X8.0205C5B1357B0P-564] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp2 [-0X1.582D3AFB2C63DP+312, -0X5.08DC843E57ED4P+180] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp2 [-0X4.AF296DD37FD74P+256, -0X5.CBE2BD423B02CP-48] = [0X0.0000000000000P+0, 0XF.FFFFFFFFFFC00P-4]; + exp2 [-0X1.1FBA2D1252D2BP+656, -0X2.4B7A4095C91B4P+8] = [0X0.0000000000000P+0, 0X1.6FB78C613E5ECP-588]; + //exp2 [-0X3.2FD3FDE325402P+688, -0X2.738623C238270P+48] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp2 [-0X1.44F2134E1901EP+8, -0X2.581DAD9AFE6DCP-172] = [0X8.4EB038B9B8508P-328, 0X1.0000000000000P+0]; + exp2 [-0X2.9529E333F2ABAP+988, -0X7.19390F862F49CP-544] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp2 [-0X1.58391FD92C387P-148, -0X4.0C12426A57194P-440] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp2 [-0XB.FADC4FB83E140P+348, -0XF.13E388B2165F0P-512] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + //exp2 [-0XD.F2552B8F60978P+236, -0X7.FBDBC320979A4P+188] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp2 [-0X8.86826CE1AB700P-240, -0X4.FEA8D3A3ED018P-316] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp2 [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [0X2.0000000000000P+0, 0X4.0000000000000P+0]; + exp2 [-0X1.0000000000000P+0, +0X2.0000000000000P+0] = [0X8.0000000000000P-4, 0X4.0000000000000P+0]; + exp2 [-0X5.0000000000000P+0, -0X3.0000000000000P+0] = [0X8.0000000000000P-8, 0X2.0000000000000P-4]; + exp2 [-0X2.0000000000000P+0, +0X9.9999999999998P-4] = [0X4.0000000000000P-4, 0X1.8406003B2AE5DP+0]; + exp2 [0X4.4400000000000P-1068, 0X4.48CD100000000P-1052] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + exp2 [-0X4.8D15088880000P-1040, +0X4.8D11554000000P-1048] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000001P+0]; + exp2 [0XD.0888D11000000P-1044, 0X1.000003443AAAAP+0] = [0X1.0000000000000P+0, 0X2.0000048742860P+0]; + exp2 [-0XD.15550CC880000P-1040, +0X4.8D150CC000000P-1048] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000001P+0]; + exp2 [-0X4.8D159E0000000P-1048, +0X1.FFFFFF0999999P+0] = [0XF.FFFFFFFFFFFF8P-4, 0X3.FFFFFD54D58B0P+0]; + exp2 [-0X1.FFFFFFFFFFFFFP+0, +0X1.14C8911540000P-1040] = [0X4.0000000000000P-4, 0X1.0000000000001P+0]; + exp10 [-0X2.8457BC029986EP+112, -0X1.7A77BFCCF5A9EP-232] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X6.05C0BB1BCB730P-220, -0X3.C5EC30FBB68C8P-508] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp10 [-0X2.9B09919BF9D9EP+272, -0XE.20FF41BD18058P-204] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X1.1503444763FC5P-416, -0X2.075DF98B2478CP-456] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp10 [-0X2.7C064F6929234P+292, -0X1.5444E676976F1P+252] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp10 [-0X4.ECBC855871080P+332, -0X1.3A01905E36F84P+0] = [0X0.0000000000000P+0, 0XF.317F8555628F0P-8]; + exp10 [-0X7.32EDAB7F60A50P+236, -0X2.404E44C49C644P-440] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X6.5263CF84EF388P+172, -0X1.63A15E999EB64P-344] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X1.4171976A1CA54P-288, -0X6.941F470A70074P-756] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp10 [-0X4.69BB1D34B9570P-76, -0X7.78A1F475A306CP-564] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp10 [-0X1.F0D19ADCB5D74P+312, -0X1.BA04D452BBB35P+180] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp10 [-0X2.E046DB554037CP+256, -0X2.6ABC15579B2B2P-48] = [0X0.0000000000000P+0, 0XF.FFFFFFFFFFA70P-4]; + exp10 [-0XE.33C49CF5B8790P+652, -0X8.297A99ED9ED08P+8] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + //exp10 [-0X2.A69A969772FDEP+688, -0X3.436DFE8F08194P+48] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp10 [-0X1.7AAA15EBBD3F2P+8, -0X6.3E590E626451CP-172] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X2.8F9204BC4041EP+988, -0X6.ACFA418D8F92CP-544] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X2.B00450A48D586P-148, -0X2.BB570B356C6CAP-440] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp10 [-0X1.9E7DDBBE00F75P+352, -0XC.41329461A0C30P-512] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + //exp10 [-0XD.5E2045CEE9720P+236, -0X6.6978492A3064CP+188] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp10 [-0X1.5BD629B25AA23P-236, -0X7.DEA605DEC97CCP-316] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp10 [-0XB.A944253373080P+564, -0XD.05E9CCF66CF58P+424] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp10 [-0X3.AE1DC13A652CAP+168, -0X6.65D7E0A247778P-56] = [0X0.0000000000000P+0, 0XF.FFFFFFFFFFFF8P-4]; + exp10 [-0XA.27B4555158148P-68, -0X5.2B55801231EC8P-344] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + exp10 [-0X1.D68A6BA7E617FP+12, -0X6.36B661DCE2688P-236] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X1.98EF0C6A8BD66P+132, -0X1.EB0E1AB78F314P-480] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X1.C08152CC09416P+220, -0X7.4CF193131FA64P-192] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X6.F70E0DA4D2BA0P-140, -0X1.7036C237D5B00P-672] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + //exp10 [-0XB.24D19E00C8460P+324, -0X1.D283CF8F05665P+252] = [0X0.0000000000000P+0, 0X0.0000000000000P+0]; + exp10 [-0XF.CC937FA330E40P+648, -0X3.A0EE84451C92CP-324] = [0X0.0000000000000P+0, 0X1.0000000000000P+0]; + exp10 [-0X5.F775993940188P-120, -0X1.8BCA641025A83P-124] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + log [0XC.4B4A6EB6B3AF0P-264, 0XA.DD2C4C1BE4B30P+92] = [-0XB.47B530A1054D8P+4, +0X4.227AD8183FB70P+4]; + log [0X2.6213E21B14894P-516, 0X6.6606F0995E5F4P-224] = [-0X1.64CBA844FC0EAP+8, -0X9.968AD8B569FE0P+4]; + log [0X9.0FF2CAA1B3048P-240, 0X1.95F14B9BA7449P+236] = [-0XA.426B5145A44A0P+4, +0XA.40B346F454218P+4]; + log [0X8.E2ADA8DFBE938P-492, 0X3.67CB3BE0BB146P-452] = [-0X1.52D81024E4C23P+8, -0X1.3813C01ACD25CP+8]; + log [0X1.394270BBCBA7EP+196, 0X8.4976F0BF45A40P+224] = [0X8.80F0717A1DC40P+4, 0X9.D6130F01F8B78P+4]; + log [0X6.A000A12839A50P-44, 0X3.86DC59439415AP+276] = [-0X1.C9B8D4127E3DAP+4, +0XC.091AAD1207058P+4]; + log [0X1.3C84E4F9C80CEP-476, 0X9.1E9439C3B4358P+196] = [-0X1.49B9D16B7E46AP+8, +0X8.A1137BDE55CF8P+4]; + log [0X8.41D2DB6D93548P-376, 0X2.EDCF4A7919034P+140] = [-0X1.028323B4D95B4P+8, +0X6.21D80D9193AB8P+4]; + log [0X1.2C18FEEBCAEAEP-768, 0X1.C369E759DF5E3P-328] = [-0X2.142D983D15A28P+8, -0XE.2C8FA3F896A50P+4]; + log [0X4.D94E91619D3F0P-580, 0X2.9F6CAF6B5513EP-132] = [-0X1.907255D3994FEP+8, -0X5.A87FCF5FBD800P+4]; + log [0X2.9CD12C1D0AAC4P+116, 0X3.BF7E0E52DC1AAP+276] = [0X5.15D8B410E0A5CP+4, 0XC.0A13DC536CD58P+4]; + log [0X3.36DE5C55594EEP-100, 0X1.D0460177B1553P+204] = [-0X4.425A8474E3980P+4, +0X8.DFF506FE0D9F8P+4]; + log [0X4.BD4031736F7A8P+4, 0XF.A10BB3C91C7B0P+592] = [0X4.54169A4297548P+0, 0X1.9D179EA5204D0P+8]; + log [0X2.8E258DB3C44F8P+20, 0X3.1A4EDE719A4C0P+628] = [0XE.CD14BEBE2CD68P+0, 0X1.B46DC0D02B874P+8]; + log [0X2.33950F38F830EP-176, 0X5.BE0388619B018P-24] = [-0X7.9346BAB839B58P+4, -0XE.E33F2C933B990P+0]; + log [0X3.24F03DF33568CP-560, 0XE.67255823421E8P+920] = [-0X1.83044F26AAA2BP+8, +0X2.805CE2DC91036P+8]; + log [0X2.D572639DC5FA8P-468, 0X1.95CF42AA171CDP-160] = [-0X1.4359ECD75CB6CP+8, -0X6.E715E1BA0E35CP+4]; + log [0X4.705A028302DB0P-532, 0X2.E57341C14970CP+324] = [-0X1.6F438EE9F6020P+8, +0XE.1A4A3523F2658P+4]; + log [0X4.DBA1D21D6F308P+144, 0X3.667988C57865AP+196] = [0X6.564D09AD1D214P+4, 0X8.914A9531FD118P+4]; + log [0X4.9FA5A1E4DF740P-328, 0X1.11B85141B78F6P-240] = [-0XE.1D2336A5BE1A8P+4, -0XA.649D44362A2F0P+4]; + log [0XA.0CDE9DC015B08P+360, 0XF.99D84F862AC58P+524] = [0XF.BD7308ED73FF0P+4, 0X1.6DF4DA39DC5DDP+8]; + log [0X6.88441038D56B8P-108, 0X3.3D65C09938132P+136] = [-0X4.8FBAEF1169C24P+4, +0X5.F718BBF0CE2F8P+4]; + log [0X7.1761CAB055134P-356, 0X1.92EFD09488689P-76] = [-0XF.4CD3094A3B4B8P+4, -0X3.439BFD719BAE8P+4]; + log [0X6.2085E427413C8P-252, 0XB.8CDD3B024EA10P-36] = [-0XA.CDC41AEE74318P+4, -0X1.681AFF89E9C89P+4]; + log [0XB.F5F1C0FA33978P-504, 0X4.924DD8D50B1CCP+72] = [-0X1.5ADD53379EF4DP+8, +0X3.36D2B121508A8P+4]; + log [0XB.BC7E37EB2D388P-216, 0X1.CFE27BB53DEBBP+192] = [-0X9.341D196AD2D58P+4, +0X8.5ADC069F618A8P+4]; + log [0X1.E139DD116F868P-688, 0XD.2545346D68FD0P-148] = [-0X1.DC410CBC8E1C8P+8, -0X6.4027B79D2EAA8P+4]; + log [0X2.E0C8E64A890ACP+192, 0X2.6A898D2CAA9A4P+260] = [0X8.6243148F46208P+4, 0XB.519B6E544F898P+4]; + log [0X5.9C4642ED78BC8P-340, 0X4.631BD2232F0C0P+588] = [-0XE.9F20674285418P+4, +0X1.990C99B6124FEP+8]; + log [0XF.C05EA810DFE88P-180, 0XA.05884FBED5F48P-152] = [-0X7.A02728D7D3790P+4, -0X6.70DBA893A16E0P+4]; + log2 [0XC.4B4A6EB6B3AF0P-264, 0XA.DD2C4C1BE4B30P+92] = [-0X1.04614E93EA794P+8, +0X5.F7104B04804E4P+4]; + log2 [0X2.6213E21B14894P-516, 0X6.6606F0995E5F4P-224] = [-0X2.02BF4547CF74AP+8, -0XD.D527F669B7AA0P+4]; + log2 [0X9.0FF2CAA1B3048P-240, 0X1.95F14B9BA7449P+236] = [-0XE.CD1F394A2C268P+4, +0XE.CAA4613C31FD0P+4]; + log2 [0X8.E2ADA8DFBE938P-492, 0X3.67CB3BE0BB146P-452] = [-0X1.E8D93AC78E47CP+8, -0X1.C23B6E9F9BE73P+8]; + log2 [0X1.394270BBCBA7EP+196, 0X8.4976F0BF45A40P+224] = [0XC.44A8D0A480900P+4, 0XE.30D042BD32E08P+4]; + log2 [0X6.A000A12839A50P-44, 0X3.86DC59439415AP+276] = [-0X2.945A6DE3564F2P+4, +0X1.15D18004DA527P+8]; + log2 [0X1.3C84E4F9C80CEP-476, 0X9.1E9439C3B4358P+196] = [-0X1.DBB1A03AD9911P+8, +0XC.7305ECF8E75D8P+4]; + log2 [0X8.41D2DB6D93548P-376, 0X2.EDCF4A7919034P+140] = [-0X1.74F450FB5F194P+8, +0X8.D8CE5C08208D0P+4]; + log2 [0X1.2C18FEEBCAEAEP-768, 0X1.C369E759DF5E3P-328] = [-0X2.FFC54D5EF9E5AP+8, -0X1.472E83799CCFAP+8]; + log2 [0X4.D94E91619D3F0P-580, 0X2.9F6CAF6B5513EP-132] = [-0X2.41B8EC5041B68P+8, -0X8.29BE215800410P+4]; + log2 [0X2.9CD12C1D0AAC4P+116, 0X3.BF7E0E52DC1AAP+276] = [0X7.562AE05DF4698P+4, 0X1.15E7F7FA196AAP+8]; + log2 [0X3.36DE5C55594EEP-100, 0X1.D0460177B1553P+204] = [-0X6.250C3695FCF20P+4, +0XC.CDBDC5938D560P+4]; + log2 [0X4.BD4031736F7A8P+4, 0XF.A10BB3C91C7B0P+592] = [0X6.3EA22BED11920P+0, 0X2.53F7565A6FA4CP+8]; + log2 [0X2.8E258DB3C44F8P+20, 0X3.1A4EDE719A4C0P+628] = [0X1.55A7D090E9BC4P+4, 0X2.75A230A6EF148P+8]; + log2 [0X2.33950F38F830EP-176, 0X5.BE0388619B018P-24] = [-0XA.EDC8C6AE09A00P+4, -0X1.57A778189781EP+4]; + log2 [0X3.24F03DF33568CP-560, 0XE.67255823421E8P+920] = [-0X2.2E58E661BEF52P+8, +0X3.9BD9297418726P+8]; + log2 [0X2.D572639DC5FA8P-468, 0X1.95CF42AA171CDP-160] = [-0X1.D27F4D5811EC0P+8, -0X9.F55D8E4A51F88P+4]; + log2 [0X4.705A028302DB0P-532, 0X2.E57341C14970CP+324] = [-0X2.11D98CE9F01E8P+8, +0X1.4588C1B9F05FCP+8]; + log2 [0X4.DBA1D21D6F308P+144, 0X3.667988C57865AP+196] = [0X9.247C4A0D6A240P+4, 0XC.5C40234316DE0P+4]; + log2 [0X4.9FA5A1E4DF740P-328, 0X1.11B85141B78F6P-240] = [-0X1.45CA7D7508D73P+8, -0XE.FE7480A8A6A70P+4]; + log2 [0XA.0CDE9DC015B08P+360, 0XF.99D84F862AC58P+524] = [0X1.6B54440063A2FP+8, 0X2.0FF6AC0A1DF08P+8]; + log2 [0X6.88441038D56B8P-108, 0X3.3D65C09938132P+136] = [-0X6.94ADB7A807630P+4, +0X8.9B227CD69B7B0P+4]; + log2 [0X7.1761CAB055134P-356, 0X1.92EFD09488689P-76] = [-0X1.612C877FDEFC9P+8, -0X4.B58789B7D2AB8P+4]; + log2 [0X6.2085E427413C8P-252, 0XB.8CDD3B024EA10P-36] = [-0XF.96282D809EDE0P+4, -0X2.0785B9A270C10P+4]; + log2 [0XB.F5F1C0FA33978P-504, 0X4.924DD8D50B1CCP+72] = [-0X1.F46B75E4932F4P+8, +0X4.A3152AC221298P+4]; + log2 [0XB.BC7E37EB2D388P-216, 0X1.CFE27BB53DEBBP+192] = [-0XD.47274C2E0B298P+4, +0XC.0DB8D252704A8P+4]; + log2 [0X1.E139DD116F868P-688, 0XD.2545346D68FD0P-148] = [-0X2.AF16E4D3D6128P+8, -0X9.048930492A7A0P+4]; + log2 [0X2.E0C8E64A890ACP+192, 0X2.6A898D2CAA9A4P+260] = [0XC.1866CEA5B0408P+4, 0X1.0545D0C4DA7BAP+8]; + log2 [0X5.9C4642ED78BC8P-340, 0X4.631BD2232F0C0P+588] = [-0X1.51830AD8B30FCP+8, +0X2.4E221EC1DB53EP+8]; + log2 [0XF.C05EA810DFE88P-180, 0XA.05884FBED5F48P-152] = [-0XB.005C8501548A8P+4, -0X9.4ACCA02A24828P+4]; + log10 [0XC.4B4A6EB6B3AF0P-264, 0XA.DD2C4C1BE4B30P+92] = [-0X4.E61D94C4C8D58P+4, +0X1.CBB1247192AE0P+4]; + log10 [0X2.6213E21B14894P-516, 0X6.6606F0995E5F4P-224] = [-0X9.AF44F24283358P+4, -0X4.29FE8451F9E24P+4]; + log10 [0X9.0FF2CAA1B3048P-240, 0X1.95F14B9BA7449P+236] = [-0X4.74A3ADB971C48P+4, +0X4.73E4925024C64P+4]; + log10 [0X8.E2ADA8DFBE938P-492, 0X3.67CB3BE0BB146P-452] = [-0X9.32877CA0160B8P+4, -0X8.7888BDDBCE5D0P+4]; + log10 [0X1.394270BBCBA7EP+196, 0X8.4976F0BF45A40P+224] = [0X3.B16EC52507DF2P+4, 0X4.4595F97548968P+4]; + log10 [0X6.A000A12839A50P-44, 0X3.86DC59439415AP+276] = [-0XC.6C93FFEF64F78P+0, +0X5.3A1B471A21FF4P+4]; + log10 [0X1.3C84E4F9C80CEP-476, 0X9.1E9439C3B4358P+196] = [-0X8.F32B7DBB21008P+4, +0X3.BF63BA7A3C658P+4]; + log10 [0X8.41D2DB6D93548P-376, 0X2.EDCF4A7919034P+140] = [-0X7.0453C2F061648P+4, +0X2.A9C64A16830FCP+4]; + log10 [0X1.2C18FEEBCAEAEP-768, 0X1.C369E759DF5E3P-328] = [-0XE.71F3C5029D848P+4, -0X6.27DD331C437F0P+4]; + log10 [0X4.D94E91619D3F0P-580, 0X2.9F6CAF6B5513EP-132] = [-0XA.DE968FD95ABE0P+4, -0X2.7513429684674P+4]; + log10 [0X2.9CD12C1D0AAC4P+116, 0X3.BF7E0E52DC1AAP+276] = [0X2.35627EFD00A60P+4, 0X5.3A877F4AD58E8P+4]; + log10 [0X3.36DE5C55594EEP-100, 0X1.D0460177B1553P+204] = [-0X1.D988D7EBC5AE3P+4, +0X3.DAB2CD7F2625EP+4]; + log10 [0X4.BD4031736F7A8P+4, 0XF.A10BB3C91C7B0P+592] = [0X1.E13C93CF0C5D8P+0, 0XB.367584AC914D0P+4]; + log10 [0X2.8E258DB3C44F8P+20, 0X3.1A4EDE719A4C0P+628] = [0X6.6D93B54D66420P+0, 0XB.D89E0CA927598P+4]; + log10 [0X2.33950F38F830EP-176, 0X5.BE0388619B018P-24] = [-0X3.4A378CAAD54DAP+4, -0X6.773414D886C14P+0]; + log10 [0X3.24F03DF33568CP-560, 0XE.67255823421E8P+920] = [-0XA.8144B5B8F5DD8P+4, +0X1.161B25DAC86ECP+8]; + log10 [0X2.D572639DC5FA8P-468, 0X1.95CF42AA171CDP-160] = [-0X8.C6DFF01C76970P+4, -0X2.FF6F7B088B0CCP+4]; + log10 [0X4.705A028302DB0P-532, 0X2.E57341C14970CP+324] = [-0X9.F802CE339E840P+4, +0X6.1FEDD0FB88D78P+4]; + log10 [0X4.DBA1D21D6F308P+144, 0X3.667988C57865AP+196] = [0X2.C08E6C63F32E4P+4, 0X3.B888C99289754P+4]; + log10 [0X4.9FA5A1E4DF740P-328, 0X1.11B85141B78F6P-240] = [-0X6.212A6B69124F0P+4, -0X4.837D7868C93BCP+4]; + log10 [0XA.0CDE9DC015B08P+360, 0XF.99D84F862AC58P+524] = [0X6.D5F7B5F14DD48P+4, 0X9.EEED0801EA480P+4]; + log10 [0X6.88441038D56B8P-108, 0X3.3D65C09938132P+136] = [-0X1.FB238786D64F9P+4, +0X2.9735AA99F42AAP+4]; + log10 [0X7.1761CAB055134P-356, 0X1.92EFD09488689P-76] = [-0X6.A50E2200DFF14P+4, -0X1.6AE688B7C8203P+4]; + log10 [0X6.2085E427413C8P-252, 0XB.8CDD3B024EA10P-36] = [-0X4.B1282C68FE4F8P+4, -0X9.C644DFB9EE3E0P+0]; + log10 [0XB.F5F1C0FA33978P-504, 0X4.924DD8D50B1CCP+72] = [-0X9.6A430336AD680P+4, +0X1.6558F570C1420P+4]; + log10 [0XB.BC7E37EB2D388P-216, 0X1.CFE27BB53DEBBP+192] = [-0X3.FF3F46384E0E2P+4, +0X3.A0E51611FF75EP+4]; + log10 [0X1.E139DD116F868P-688, 0XD.2545346D68FD0P-148] = [-0XC.ED5A39E5D4878P+4, -0X2.B6F044CDE4A0CP+4]; + log10 [0X2.E0C8E64A890ACP+192, 0X2.6A898D2CAA9A4P+260] = [0X3.A41C190FE9E7AP+4, 0X4.EA6A3021E4FB8P+4]; + log10 [0X5.9C4642ED78BC8P-340, 0X4.631BD2232F0C0P+588] = [-0X6.599E84FEF71BCP+4, +0XB.1A5D77BC55F98P+4]; + log10 [0XF.C05EA810DFE88P-180, 0XA.05884FBED5F48P-152] = [-0X3.4FCF2BC10B840P+4, -0X2.CC1706E0167D2P+4]; + sin [-0XA.644C9D88EA8C8P-152, -0XD.8EC7927926F18P-944] = [-0XA.644C9D88EA8C8P-152, -0XD.8EC7927926F10P-944]; + sin [-0X1.9EE1A9DB994F5P-436, -0X6.D914701C82FECP-624] = [-0X1.9EE1A9DB994F5P-436, -0X6.D914701C82FE8P-624]; + sin [-0X5.65057F3EFFC60P+4, -0X2.3617CF5815ECAP-960] = [-0X1.0000000000000P+0, +0X1.0000000000000P+0]; + sin [-0X1.975299CCB0E08P-372, +0XB.BEC7D35B45B00P-588] = [-0X1.975299CCB0E08P-372, +0XB.BEC7D35B45B00P-588]; + sin [-0X3.51D388D47AED2P-356, -0X1.C3A9CD7025105P-564] = [-0X3.51D388D47AED2P-356, -0X1.C3A9CD7025104P-564]; + sin [-0XC.DB363268CF708P-332, -0X2.171B7D7BFE4E0P-412] = [-0XC.DB363268CF708P-332, -0X2.171B7D7BFE4DEP-412]; + sin [-0X1.32690AAC2472DP-40, -0X8.706EBDCF39C88P-792] = [-0X1.32690AAC2472DP-40, -0X8.706EBDCF39C80P-792]; + sin [-0X5.0145AF0C53324P-200, -0X2.F5A0CB3301856P-204] = [-0X5.0145AF0C53324P-200, -0X2.F5A0CB3301854P-204]; + sin [0XF.4077C7E8CD6A0P-268, 0X3.753426098AC5AP-80] = [0XF.4077C7E8CD698P-268, 0X3.753426098AC5AP-80]; + sin [-0XB.B25F8D8BB7FB8P-376, -0X2.017A332F9B05CP-916] = [-0XB.B25F8D8BB7FB8P-376, -0X2.017A332F9B05AP-916]; + sin [-0XD.947CA427FDFE0P-592, +0XE.3BE493B5BC8E8P-16] = [-0XD.947CA427FDFE0P-592, +0XE.3BE491D517170P-16]; + sin [-0X9.C46198B2471F0P-336, -0X1.65ED85DF2D4B7P-576] = [-0X9.C46198B2471F0P-336, -0X1.65ED85DF2D4B6P-576]; + sin [-0X3.2C867C027DB44P-936, +0X6.1883EA827AB6CP-388] = [-0X3.2C867C027DB44P-936, +0X6.1883EA827AB6CP-388]; + sin [-0X3.560EF91C47DEAP-492, +0X5.413664DD17ABCP-20] = [-0X3.560EF91C47DEAP-492, +0X5.413664DCFF7D4P-20]; + sin [-0X8.36BFCD74A6D68P-304, -0X3.2C20EB130D510P-836] = [-0X8.36BFCD74A6D68P-304, -0X3.2C20EB130D50EP-836]; + sin [-0X6.BCEC84603958CP-500, -0X1.068B13DA99666P-760] = [-0X6.BCEC84603958CP-500, -0X1.068B13DA99665P-760]; + sin [-0X1.2789C2D583BCDP-568, -0X1.F2BD89DAD0665P-780] = [-0X1.2789C2D583BCDP-568, -0X1.F2BD89DAD0664P-780]; + sin [-0XC.FE4E8D857E3E0P-548, +0X1.580844B9DC45CP-780] = [-0XC.FE4E8D857E3E0P-548, +0X1.580844B9DC45CP-780]; + sin [-0XC.508D29ACB01B8P-52, +0X1.B1E6B793078DDP-664] = [-0XC.508D29ACB01B8P-52, +0X1.B1E6B793078DDP-664]; + sin [-0XA.12F7783880A78P-124, -0X3.765DF69EE106EP-548] = [-0XA.12F7783880A78P-124, -0X3.765DF69EE106CP-548]; + sin [-0X6.3A58D52FDF844P-896, -0X1.039E2518CF503P-1008] = [-0X6.3A58D52FDF844P-896, -0X1.039E2518CF502P-1008]; + sin [-0XB.DD3171FDEEC18P-168, +0X1.069E434EE9E0FP-740] = [-0XB.DD3171FDEEC18P-168, +0X1.069E434EE9E0FP-740]; + sin [-0X3.CF0053257533AP-776, -0X1.7883A587654E5P-928] = [-0X3.CF0053257533AP-776, -0X1.7883A587654E4P-928]; + sin [0X1.455801D3D2B63P-704, 0X3.A4C915783D07AP-28] = [0X1.455801D3D2B62P-704, 0X3.A4C915783D07AP-28]; + sin [-0X2.097D06F4DE3E2P-376, +0X2.2E7561FD9255EP-772] = [-0X2.097D06F4DE3E2P-376, +0X2.2E7561FD9255EP-772]; + sin [-0X1.7E13DBB66E5A3P-84, -0X6.BC8F45D6A8F48P-540] = [-0X1.7E13DBB66E5A3P-84, -0X6.BC8F45D6A8F44P-540]; + sin [-0X4.1F50C5F2CDA54P-276, -0X3.DF16F79756422P-496] = [-0X4.1F50C5F2CDA54P-276, -0X3.DF16F79756420P-496]; + sin [-0X7.ECC4C5EEC4CACP-328, -0X2.E02E1DB7A08F6P-876] = [-0X7.ECC4C5EEC4CACP-328, -0X2.E02E1DB7A08F4P-876]; + sin [-0XC.1BC7A4C89D440P-256, +0X2.A7F56252D1D34P-608] = [-0XC.1BC7A4C89D440P-256, +0X2.A7F56252D1D34P-608]; + sin [-0XB.CE50D7B2F2868P-236, -0XE.6B08988339B80P-432] = [-0XB.CE50D7B2F2868P-236, -0XE.6B08988339B78P-432]; + cos [-0XA.644C9D88EA8C8P-152, -0XD.8EC7927926F18P-944] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X1.9EE1A9DB994F5P-436, -0X6.D914701C82FECP-624] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X5.65057F3EFFC60P+4, -0X2.3617CF5815ECAP-960] = [-0X1.0000000000000P+0, +0X1.0000000000000P+0]; + cos [-0X1.975299CCB0E08P-372, +0XB.BEC7D35B45B00P-588] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X3.51D388D47AED2P-356, -0X1.C3A9CD7025105P-564] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XC.DB363268CF708P-332, -0X2.171B7D7BFE4E0P-412] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X1.32690AAC2472DP-40, -0X8.706EBDCF39C88P-792] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X5.0145AF0C53324P-200, -0X2.F5A0CB3301856P-204] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [0XF.4077C7E8CD6A0P-268, 0X3.753426098AC5AP-80] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XB.B25F8D8BB7FB8P-376, -0X2.017A332F9B05CP-916] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XD.947CA427FDFE0P-592, +0XE.3BE493B5BC8E8P-16] = [0XF.FFFFF9AB27E58P-4, 0X1.0000000000000P+0]; + cos [-0X9.C46198B2471F0P-336, -0X1.65ED85DF2D4B7P-576] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X3.2C867C027DB44P-936, +0X6.1883EA827AB6CP-388] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X3.560EF91C47DEAP-492, +0X5.413664DD17ABCP-20] = [0XF.FFFFFFFF231A0P-4, 0X1.0000000000000P+0]; + cos [-0X8.36BFCD74A6D68P-304, -0X3.2C20EB130D510P-836] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X6.BCEC84603958CP-500, -0X1.068B13DA99666P-760] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X1.2789C2D583BCDP-568, -0X1.F2BD89DAD0665P-780] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XC.FE4E8D857E3E0P-548, +0X1.580844B9DC45CP-780] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XC.508D29ACB01B8P-52, +0X1.B1E6B793078DDP-664] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XA.12F7783880A78P-124, -0X3.765DF69EE106EP-548] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X6.3A58D52FDF844P-896, -0X1.039E2518CF503P-1008] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XB.DD3171FDEEC18P-168, +0X1.069E434EE9E0FP-740] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X3.CF0053257533AP-776, -0X1.7883A587654E5P-928] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [0X1.455801D3D2B63P-704, 0X3.A4C915783D07AP-28] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X2.097D06F4DE3E2P-376, +0X2.2E7561FD9255EP-772] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X1.7E13DBB66E5A3P-84, -0X6.BC8F45D6A8F48P-540] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X4.1F50C5F2CDA54P-276, -0X3.DF16F79756422P-496] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0X7.ECC4C5EEC4CACP-328, -0X2.E02E1DB7A08F6P-876] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XC.1BC7A4C89D440P-256, +0X2.A7F56252D1D34P-608] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + cos [-0XB.CE50D7B2F2868P-236, -0XE.6B08988339B80P-432] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tan [0X4.6AF931A62EB70P+4, 0X4.6C0D89ACF83F0P+4] = [-0X4.2B94A5B864748P+16, -0XE.CC7EFFC39BBE8P+0]; + tan [0X9.B824319678E98P+4, 0X9.B8365416B3188P+4] = [-0X9.517610C9FF4F0P+28, -0XE.1DCEBD0ABA128P+4]; + tan [0XE.231D6DE6B2910P+0, 0XE.232155989FD58P+0] = [-0X1.1A74CC770CA81P+20, -0X4.09E5FC000B430P+12]; + tan [0X3.A1E994576AF38P+4, 0X3.A1F62CB3D8B0CP+4] = [-0X3.EDBBE63A85A20P+12, -0X1.3EC2E09B0B82DP+8]; + tan [0X4.504512C674C88P+8, 0X4.5045147DF4570P+8] = [-0XC.5E819F2BCA708P+28, -0X9.51D20751384C0P+12]; + tan [0X7.DA9E8C267B000P+0, 0XA.CCC7028A13E50P+0] = [-0X8.CE26DA7B8CCA8P+20, +0X5.0BA299C8F763CP+0]; + tan [0XC.CA9E956E09870P+12, 0XC.CA9FEB35E8D28P+12] = [-0X9.40D68D3420248P+16, -0XB.F4CB43C962B98P+0]; + tan [0X2.F6B1D30E1AC2CP+8, 0X2.F6B1EAD90ED6EP+8] = [-0X1.1E211833A60A2P+20, -0XA.BBFD5C235E8E8P+8]; + tan [0XB.C33774AC8C510P+8, 0XB.C3378F9640B80P+8] = [-0X3.B8E9A3359EA76P+12, -0X8.33C065B080F78P+8]; + tan [0X4.B65F2027400ECP+0, 0X4.B65F690A4503CP+0] = [-0X2.D46AD27DDB548P+24, -0X3.7ECF31F99ADC4P+16]; + tan [0X3.C60A2C774D8A6P+8, 0X3.C60A76B28E42CP+8] = [-0X3.28E3C44C11B44P+24, -0X3.72D85B31BD660P+8]; + tan [0X7.DA9E8A5DF3B7CP+0, 0X7.DAA9CFE45466CP+0] = [-0X1.D9B11082E8FC3P+28, -0X1.6B6333E88C1DFP+12]; + tan [0X3.A1E953315B022P+4, 0X3.A3624FC9B84C0P+4] = [-0X4.91A5298A762FCP+24, -0XA.D59BACA695F48P+0]; + tan [0X7.DA9E8AB1B7B7CP+0, 0X8.E4A2BCBB988B0P+0] = [-0X2.C52AD8545AC54P+24, -0X9.691CCDB9751E8P-4]; + tan [0X5.48783C12B018CP+8, 0X5.487863A8A0C78P+8] = [-0X4.7465D978FF1E8P+4, -0X4.455187267B294P+4]; + tan [0X1.AB41B772619C2P+4, 0X1.AB96C295E1A23P+4] = [-0X2.55DE9F429F276P+16, -0X3.02439C1296068P+4]; + tan [0X1.87E20C8B7CCC1P+16, 0X1.87E20E060934FP+16] = [-0X7.5F7BB0C55311CP+28, -0XA.D1F5D5F3730E8P+4]; + tan [0X2.5BA5629043048P+16, 0X2.5BA5A6106DDF4P+16] = [-0X4.BDE3C915168D8P+4, -0X3.84ED584601B4CP+0]; + tan [0X1.A9AF913EE27CFP+8, 0X1.A9AFA6D06E549P+8] = [-0X2.CB455269CB954P+16, -0XB.ACE6E2EAA9098P+8]; + tan [0X7.64CF403A51948P+8, 0X7.64D139F1912E4P+8] = [-0X5.38F704820A47CP+28, -0X8.19686283B81E8P+4]; + tan [0X4.1437B08F8BA70P+16, 0X4.1439A27E86D50P+16] = [-0X1.3ADB30F7A9B56P+24, +0X6.48C7464A8F9A0P-4]; + tan [0X2.74518B3BAFB7CP+4, 0X2.74518DE5A60C0P+4] = [-0XF.8E3A10DB36640P+24, -0X5.FF456443FD8B8P+16]; + tan [0X1.DD85A7816A0FFP+4, 0X1.DD89849DFDF09P+4] = [-0X3.FA5C8BD1A67ECP+20, -0X4.23D96B0387510P+8]; + tan [0X1.AB41B29964887P+4, 0X1.B5CBD4ED0D1DDP+4] = [-0X7.FC8B577B97310P+16, -0X1.4AB8A7BB81552P+0]; + tan [0X1.19454E95BC804P+12, 0X1.194551E9AD95AP+12] = [-0X1.2A53ECF4C9B1AP+12, -0X3.D27F074C2DA94P+8]; + tan [0X4.C4823D2C30D00P+8, 0X4.C482DEAE395CCP+8] = [-0X7.F7B434A3F3544P+28, -0X1.95C659F53B09BP+8]; + tan [0X1.DD85BAAB9BAF9P+4, 0X1.DD8660423BAACP+4] = [-0XD.2F5338751C9C8P+12, -0X1.623D682415BE0P+12]; + tan [0X2.F798BB3536690P+16, 0X2.F79A363308C32P+16] = [-0X2.F8C1AC15A9CCEP+16, -0X1.731B7ACF94603P-4]; + tan [0X1.78FDB9F143616P+4, 0X1.78FDB9F143616P+4] = [-0XC.9CFD638FE0A18P+24, -0XC.9CFD638FE0A10P+24]; + tan [0X1.78FDB9F143616P+4, 0X1.79367E02D4EAAP+4] = [-0XC.9CFD638FE0A18P+24, -0X4.826BF805C4E68P+4]; + cot [0X4.51D73651EA89CP+4, 0X4.52EB8E58B411CP+4] = [0XE.CC7EFFC39DE08P+0, 0X4.2B94A5E391E20P+16]; + cot [0X9.9F02364234BC8P+4, 0X9.9F1458C26EEB8P+4] = [0XE.1DCEBD0AA72D0P+4, 0X9.516DD4FA21CF0P+28]; + cot [0XC.90FDB8A26FBF8P+0, 0XC.9101A0545D040P+0] = [0X4.09E5FC0006C38P+12, 0X1.1A74CC76B6B71P+20]; + cot [0X3.88C7990326C68P+4, 0X3.88D4315F9483CP+4] = [0X1.3EC2E09B0928AP+8, 0X3.EDBBE6390EF44P+12]; + cot [0X4.4EB2F3113085CP+8, 0X4.4EB2F4C8B0144P+8] = [0X9.51D206F220E70P+12, 0XC.5DDA26E3680B8P+28]; + cot [0X6.487ED6E2382ECP+0, 0X9.3AA74D45D1138P+0] = [-0X5.0BA299C8F7644P+0, +0X8.CE26D93009840P+20]; + cot [0XC.CA857372B5428P+12, 0XC.CA86C93A948E0P+12] = [0XB.F4CB43CC4C9E8P+0, 0X9.40D848DDFC130P+16]; + cot [0X2.F51FB358D6800P+8, 0X2.F51FCB23CA942P+8] = [0XA.BBFD5C1B7C1D8P+8, 0X1.1E2116D584957P+20]; + cot [0XB.C1A554F7480E0P+8, 0XB.C1A56FE0FC750P+8] = [0X8.33C065BCB81C8P+8, 0X3.B8E9A35DDF6BCP+12]; + cot [0X3.243F6AE2FD3D8P+0, 0X3.243FB3C602324P+0] = [0X3.7ECF31F964F42P+16, 0X2.D46AD05A0B746P+24]; + cot [0X3.C4780CC209478P+8, 0X3.C47856FD49FFEP+8] = [0X3.72D85B3269A44P+8, 0X3.28E454E439A90P+24]; + cot [0X6.487ED519B0E68P+0, 0X6.488A1AA011958P+0] = [0X1.6B6333E883806P+12, 0X1.D9B101DF34E20P+28]; + cot [0X3.88C757DD16D52P+4, 0X3.8A405475741F0P+4] = [0XA.D59BACA695410P+0, 0X4.91A509DE53224P+24]; + cot [0X6.487ED56D74E68P+0, 0X7.5283077755B9CP+0] = [0X9.691CCDB975190P-4, 0X2.C52AD6475D346P+24]; + cot [0X5.46E61C5D6BD60P+8, 0X5.46E643F35C84CP+8] = [0X4.4551872667304P+4, 0X4.7465D978E9638P+4]; + cot [0X1.921FBC1E1D6F1P+4, 0X1.9274C7419D752P+4] = [0X3.02439C1295BB8P+4, 0X2.55DE9F3FCCF28P+16]; + cot [0X1.87E07A6BC787DP+16, 0X1.87E07BE653F0BP+16] = [0XA.D1F5D5DED35E0P+4, 0X7.55F4ABD4357C8P+28]; + cot [0X2.5BA3D0708DC04P+16, 0X2.5BA413F0B89B0P+16] = [0X3.84ED5845DBFB2P+0, 0X4.BDE3C91120740P+4]; + cot [0X1.A81D71899E3A2P+8, 0X1.A81D871B2A11CP+8] = [0XB.ACE6E2E9DA370P+8, 0X2.CB45525DF368EP+16]; + cot [0X7.633D20850D51CP+8, 0X7.633F1A3C4CEB8P+8] = [0X8.19686283704C0P+4, 0X5.38D928BC4D11CP+28]; + cot [0X4.14361E6FD662CP+16, 0X4.1438105ED190CP+16] = [-0X6.48C7464AC3A74P-4, +0X1.3AD6ED9B4C193P+24]; + cot [0X2.5B2F8FE76B8ACP+4, 0X2.5B2F929161DF0P+4] = [0X5.FF45640D6BF8CP+16, 0XF.8E38A1B8F3CE0P+24]; + cot [0X1.C463AC2D25E2EP+4, 0X1.C4678949B9C38P+4] = [0X4.23D96B037E734P+8, 0X3.FA5C8B4EB13BAP+20]; + cot [0X1.921FB745205B6P+4, 0X1.9CA9D998C8F0CP+4] = [0X1.4AB8A7BB8153CP+0, 0X7.FC8B575A99618P+16]; + cot [0X1.192C2C9A683C1P+12, 0X1.192C2FEE59517P+12] = [0X3.D27F074ED4C1AP+8, 0X1.2A53ECF8BBB09P+12]; + cot [0X4.C2F01D76EC8D4P+8, 0X4.C2F0BEF8F51A0P+8] = [0X1.95C659F50F06FP+8, 0X7.F76EB663A7898P+28]; + cot [0X1.C463BF5757828P+4, 0X1.C46464EDF77DBP+4] = [0X1.623D682405E56P+12, 0XD.2F53386F7DF28P+12]; + cot [0X2.F79729158124CP+16, 0X2.F798A413537EEP+16] = [0X1.731B7ACF66E92P-4, 0X2.F8C19331ECBFCP+16]; + cot [0X3.371943E536E9EP+8, 0X3.371D0784693FAP+8] = [0X3.E06D09FC7DDC2P+4, 0X2.C1B5E6F32FDEEP+8]; + cot [0X1.5FDBBE9CFF344P+4, 0X1.601482AE90BD8P+4] = [0X4.826BF805C583CP+4, 0XC.9CFDB05DEF930P+24]; + asin [-0X3.11A309475E762P-164, -0XC.3784302E15500P-680] = [-0X3.11A309475E764P-164, -0XC.3784302E15500P-680]; + asin [-0X5.7DD17A4248D38P-280, -0X2.898FC0F386F74P-640] = [-0X5.7DD17A4248D3CP-280, -0X2.898FC0F386F74P-640]; + asin [-0XE.D83DCD7F564A0P-296, -0X1.62F61FBA0F40FP-764] = [-0XE.D83DCD7F564A8P-296, -0X1.62F61FBA0F40FP-764]; + asin [-0X1.67712A1E64C2CP-944, -0X1.C0102C4D258EFP-976] = [-0X1.67712A1E64C2DP-944, -0X1.C0102C4D258EFP-976]; + asin [0X2.E3D991AE84668P-728, 0X1.92C3C728CCF4AP-612] = [0X2.E3D991AE84668P-728, 0X1.92C3C728CCF4BP-612]; + asin [-0X1.BCD3FEB3B0175P-640, +0X1.BEBE69E3BF3C2P-536] = [-0X1.BCD3FEB3B0176P-640, +0X1.BEBE69E3BF3C3P-536]; + asin [-0X1.2469575189327P-372, -0X7.51C0C39F58A4CP-1008] = [-0X1.2469575189328P-372, -0X7.51C0C39F58A4CP-1008]; + asin [-0X1.C4D163A6CCCD9P-336, -0X1.3BEE6DAB70397P-796] = [-0X1.C4D163A6CCCDAP-336, -0X1.3BEE6DAB70397P-796]; + asin [-0X2.0FAE5DE90C98CP-896, -0X2.2079777EC2418P-976] = [-0X2.0FAE5DE90C98EP-896, -0X2.2079777EC2418P-976]; + asin [-0X1.08C248C37E53BP-816, +0X2.8C9F04EE5DE84P-948] = [-0X1.08C248C37E53CP-816, +0X2.8C9F04EE5DE86P-948]; + asin [-0X2.0002542B01474P-228, +0X2.4D59F217BF74CP-796] = [-0X2.0002542B01476P-228, +0X2.4D59F217BF74EP-796]; + asin [0XD.D4033889729A0P-844, 0X7.44451BF919D78P-556] = [0XD.D4033889729A0P-844, 0X7.44451BF919D7CP-556]; + asin [-0X2.08918B016995CP-64, +0X3.3FC26450C6E4AP-268] = [-0X2.08918B016995EP-64, +0X3.3FC26450C6E4CP-268]; + asin [-0X2.66C95BD8D7716P-388, +0X1.7E16B310F878AP-232] = [-0X2.66C95BD8D7718P-388, +0X1.7E16B310F878BP-232]; + asin [-0X3.D9C66BD30B774P-256, -0X4.A8C30F678CB68P-456] = [-0X3.D9C66BD30B776P-256, -0X4.A8C30F678CB68P-456]; + asin [-0X1.AA045CCB15AEDP-804, +0XD.450C473265610P-24] = [-0X1.AA045CCB15AEEP-804, +0XD.450C473266E68P-24]; + asin [-0X2.23ADFA571FC3CP-344, -0X1.30D1074DC059EP-868] = [-0X2.23ADFA571FC3EP-344, -0X1.30D1074DC059EP-868]; + asin [-0X3.DFBC1A4BF3888P-68, -0X4.A89E39B247C84P-840] = [-0X3.DFBC1A4BF388AP-68, -0X4.A89E39B247C84P-840]; + asin [0X9.583064525D370P-496, 0X2.C67652F06A55EP-408] = [0X9.583064525D370P-496, 0X2.C67652F06A560P-408]; + asin [-0X3.38BF880EC3082P-304, -0X7.7B19877E536ACP-512] = [-0X3.38BF880EC3084P-304, -0X7.7B19877E536ACP-512]; + asin [-0X2.ADBF037238702P-44, +0X1.98DC940C3AE1EP-564] = [-0X2.ADBF037238704P-44, +0X1.98DC940C3AE1FP-564]; + asin [-0X4.E4A79C48B3A58P-328, +0XA.28B02E59D39D8P-856] = [-0X4.E4A79C48B3A5CP-328, +0XA.28B02E59D39E0P-856]; + asin [-0X6.80D3E87B911D8P-232, -0X2.3DF54212C46E4P-520] = [-0X6.80D3E87B911DCP-232, -0X2.3DF54212C46E4P-520]; + asin [-0X1.4E54C309C46F8P-480, +0X9.47E982AC83F98P-688] = [-0X1.4E54C309C46F9P-480, +0X9.47E982AC83FA0P-688]; + asin [-0X2.276202227A6DEP-808, +0X1.C53E9BA64FADFP-768] = [-0X2.276202227A6E0P-808, +0X1.C53E9BA64FAE0P-768]; + asin [-0X4.8E4B4D7BA6DD0P-212, -0X1.4B35284C1064BP-548] = [-0X4.8E4B4D7BA6DD4P-212, -0X1.4B35284C1064BP-548]; + asin [-0X3.5C52B8D9FF582P-248, -0X2.AF868D652B866P-912] = [-0X3.5C52B8D9FF584P-248, -0X2.AF868D652B866P-912]; + asin [0X1.6938CC5EE183AP-692, 0XB.F7A583AC38168P-664] = [0X1.6938CC5EE183AP-692, 0XB.F7A583AC38170P-664]; + asin [-0X3.68B35F23B2506P-560, +0X9.F9C9246D05138P-304] = [-0X3.68B35F23B2508P-560, +0X9.F9C9246D05140P-304]; + asin [-0XA.BDE70B6850EA0P-516, +0X2.BB76D5BF703FAP-1020] = [-0XA.BDE70B6850EA8P-516, +0X2.BB76D5BF703FCP-1020]; + acos [-0X3.11A309475E762P-164, -0XC.3784302E15500P-680] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X5.7DD17A4248D38P-280, -0X2.898FC0F386F74P-640] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0XE.D83DCD7F564A0P-296, -0X1.62F61FBA0F40FP-764] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.67712A1E64C2CP-944, -0X1.C0102C4D258EFP-976] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [0X2.E3D991AE84668P-728, 0X1.92C3C728CCF4AP-612] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.BCD3FEB3B0175P-640, +0X1.BEBE69E3BF3C2P-536] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.2469575189327P-372, -0X7.51C0C39F58A4CP-1008] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.C4D163A6CCCD9P-336, -0X1.3BEE6DAB70397P-796] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.0FAE5DE90C98CP-896, -0X2.2079777EC2418P-976] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.08C248C37E53BP-816, +0X2.8C9F04EE5DE84P-948] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.0002542B01474P-228, +0X2.4D59F217BF74CP-796] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [0XD.D4033889729A0P-844, 0X7.44451BF919D78P-556] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.08918B016995CP-64, +0X3.3FC26450C6E4AP-268] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.66C95BD8D7716P-388, +0X1.7E16B310F878AP-232] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X3.D9C66BD30B774P-256, -0X4.A8C30F678CB68P-456] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.AA045CCB15AEDP-804, +0XD.450C473265610P-24] = [0X1.921FA7FF368A5P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.23ADFA571FC3CP-344, -0X1.30D1074DC059EP-868] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X3.DFBC1A4BF3888P-68, -0X4.A89E39B247C84P-840] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [0X9.583064525D370P-496, 0X2.C67652F06A55EP-408] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X3.38BF880EC3082P-304, -0X7.7B19877E536ACP-512] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.ADBF037238702P-44, +0X1.98DC940C3AE1EP-564] = [0X1.921FB54442D18P+0, 0X1.921FB54442FC7P+0]; + acos [-0X4.E4A79C48B3A58P-328, +0XA.28B02E59D39D8P-856] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X6.80D3E87B911D8P-232, -0X2.3DF54212C46E4P-520] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X1.4E54C309C46F8P-480, +0X9.47E982AC83F98P-688] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X2.276202227A6DEP-808, +0X1.C53E9BA64FADFP-768] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X4.8E4B4D7BA6DD0P-212, -0X1.4B35284C1064BP-548] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X3.5C52B8D9FF582P-248, -0X2.AF868D652B866P-912] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [0X1.6938CC5EE183AP-692, 0XB.F7A583AC38168P-664] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0X3.68B35F23B2506P-560, +0X9.F9C9246D05138P-304] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acos [-0XA.BDE70B6850EA0P-516, +0X2.BB76D5BF703FAP-1020] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan [0X1.7A77BFCCF5A9EP-232, 0X2.8457BC029986EP+112] = [0X1.7A77BFCCF5A9DP-232, 0X1.921FB54442D19P+0]; + atan [0X3.C5EC30FBB68C8P-508, 0X6.05C0BB1BCB730P-220] = [0X3.C5EC30FBB68C6P-508, 0X6.05C0BB1BCB730P-220]; + atan [0XE.20FF41BD18058P-204, 0X2.9B09919BF9D9EP+272] = [0XE.20FF41BD18050P-204, 0X1.921FB54442D19P+0]; + atan [0X2.075DF98B2478CP-456, 0X1.1503444763FC5P-416] = [0X2.075DF98B2478AP-456, 0X1.1503444763FC5P-416]; + atan [0X1.5444E676976F1P+252, 0X2.7C064F6929234P+292] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan [0X1.3A01905E36F84P+0, 0X4.ECBC855871080P+332] = [0XE.3062E34353278P-4, 0X1.921FB54442D19P+0]; + atan [0X2.404E44C49C644P-440, 0X7.32EDAB7F60A50P+236] = [0X2.404E44C49C642P-440, 0X1.921FB54442D19P+0]; + atan [0X1.63A15E999EB64P-344, 0X6.5263CF84EF388P+172] = [0X1.63A15E999EB63P-344, 0X1.921FB54442D19P+0]; + atan [0X6.941F470A70074P-756, 0X1.4171976A1CA54P-288] = [0X6.941F470A70070P-756, 0X1.4171976A1CA54P-288]; + atan [0X7.78A1F475A306CP-564, 0X4.69BB1D34B9570P-76] = [0X7.78A1F475A3068P-564, 0X4.69BB1D34B9570P-76]; + atan [0X1.BA04D452BBB35P+180, 0X1.F0D19ADCB5D74P+312] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan [0X2.6ABC15579B2B2P-48, 0X2.E046DB554037CP+256] = [0X2.6ABC15579B2B0P-48, 0X1.921FB54442D19P+0]; + atan [0X8.297A99ED9ED08P+8, 0XE.33C49CF5B8790P+652] = [0X1.920057E3A66F1P+0, 0X1.921FB54442D19P+0]; + atan [0X3.436DFE8F08194P+48, 0X2.A69A969772FDEP+688] = [0X1.921FB54442D13P+0, 0X1.921FB54442D19P+0]; + atan [0X6.3E590E626451CP-172, 0X1.7AAA15EBBD3F2P+8] = [0X6.3E590E6264518P-172, 0X1.9172A3136EB8DP+0]; + atan [0X6.ACFA418D8F92CP-544, 0X2.8F9204BC4041EP+988] = [0X6.ACFA418D8F928P-544, 0X1.921FB54442D19P+0]; + atan [0X2.BB570B356C6CAP-440, 0X2.B00450A48D586P-148] = [0X2.BB570B356C6C8P-440, 0X2.B00450A48D586P-148]; + atan [0XC.41329461A0C30P-512, 0X1.9E7DDBBE00F75P+352] = [0XC.41329461A0C28P-512, 0X1.921FB54442D19P+0]; + atan [0X6.6978492A3064CP+188, 0XD.5E2045CEE9720P+236] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan [0X7.DEA605DEC97CCP-316, 0X1.5BD629B25AA23P-236] = [0X7.DEA605DEC97C8P-316, 0X1.5BD629B25AA23P-236]; + atan [0XD.05E9CCF66CF58P+424, 0XB.A944253373080P+564] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan [0X6.65D7E0A247778P-56, 0X3.AE1DC13A652CAP+168] = [0X6.65D7E0A247774P-56, 0X1.921FB54442D19P+0]; + atan [0X5.2B55801231EC8P-344, 0XA.27B4555158148P-68] = [0X5.2B55801231EC4P-344, 0XA.27B4555158148P-68]; + atan [0X6.36B661DCE2688P-236, 0X1.D68A6BA7E617FP+12] = [0X6.36B661DCE2684P-236, 0X1.921700D14CFE5P+0]; + atan [0X1.EB0E1AB78F314P-480, 0X1.98EF0C6A8BD66P+132] = [0X1.EB0E1AB78F313P-480, 0X1.921FB54442D19P+0]; + atan [0X7.4CF193131FA64P-192, 0X1.C08152CC09416P+220] = [0X7.4CF193131FA60P-192, 0X1.921FB54442D19P+0]; + atan [0X1.7036C237D5B00P-672, 0X6.F70E0DA4D2BA0P-140] = [0X1.7036C237D5AFFP-672, 0X6.F70E0DA4D2BA0P-140]; + atan [0X1.D283CF8F05665P+252, 0XB.24D19E00C8460P+324] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan [0X3.A0EE84451C92CP-324, 0XF.CC937FA330E40P+648] = [0X3.A0EE84451C92AP-324, 0X1.921FB54442D19P+0]; + atan [0X1.8BCA641025A83P-124, 0X5.F775993940188P-120] = [0X1.8BCA641025A82P-124, 0X5.F775993940188P-120]; + acot [0X1.7A77BFCCF5A9EP-232, 0X2.8457BC029986EP+112] = [0X6.5B5B8AA0A6884P-116, 0X1.921FB54442D19P+0]; + acot [0X3.C5EC30FBB68C8P-508, 0X6.05C0BB1BCB730P-220] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0XE.20FF41BD18058P-204, 0X2.9B09919BF9D9EP+272] = [0X6.23FD67FFA09A4P-276, 0X1.921FB54442D19P+0]; + acot [0X2.075DF98B2478CP-456, 0X1.1503444763FC5P-416] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0X1.5444E676976F1P+252, 0X2.7C064F6929234P+292] = [0X6.70A3F8408ABF0P-296, 0XC.099B90EB0FA30P-256]; + acot [0X1.3A01905E36F84P+0, 0X4.ECBC855871080P+332] = [0X3.3FB79247499D6P-336, 0XA.F1987100D9F08P-4]; + acot [0X2.404E44C49C644P-440, 0X7.32EDAB7F60A50P+236] = [0X2.38F904C465F6AP-240, 0X1.921FB54442D19P+0]; + acot [0X1.63A15E999EB64P-344, 0X6.5263CF84EF388P+172] = [0X2.87E9C09D98938P-176, 0X1.921FB54442D19P+0]; + acot [0X6.941F470A70074P-756, 0X1.4171976A1CA54P-288] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0X7.78A1F475A306CP-564, 0X4.69BB1D34B9570P-76] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0X1.BA04D452BBB35P+180, 0X1.F0D19ADCB5D74P+312] = [0X8.3E949ACCB0F88P-316, 0X9.443E1DD721FE8P-184]; + acot [0X2.6ABC15579B2B2P-48, 0X2.E046DB554037CP+256] = [0X5.9028FAA64FBC8P-260, 0X1.921FB54442CF2P+0]; + acot [0X8.297A99ED9ED08P+8, 0XE.33C49CF5B8790P+652] = [0X1.2067D7F96AFE5P-656, 0X1.F5D609C62725FP-12]; + acot [0X3.436DFE8F08194P+48, 0X2.A69A969772FDEP+688] = [0X6.09322FE56F794P-692, 0X4.E7223FE097808P-52]; + acot [0X6.3E590E626451CP-172, 0X1.7AAA15EBBD3F2P+8] = [0XA.D1230D418C238P-12, 0X1.921FB54442D19P+0]; + acot [0X6.ACFA418D8F92CP-544, 0X2.8F9204BC4041EP+988] = [0X6.3F7C8D3DDFC74P-992, 0X1.921FB54442D19P+0]; + acot [0X2.BB570B356C6CAP-440, 0X2.B00450A48D586P-148] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0XC.41329461A0C30P-512, 0X1.9E7DDBBE00F75P+352] = [0X9.E1C9C04F15630P-356, 0X1.921FB54442D19P+0]; + acot [0X6.6978492A3064CP+188, 0XD.5E2045CEE9720P+236] = [0X1.326922CF32B2EP-240, 0X2.7ECD966556E9CP-192]; + acot [0X7.DEA605DEC97CCP-316, 0X1.5BD629B25AA23P-236] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0XD.05E9CCF66CF58P+424, 0XB.A944253373080P+564] = [0X1.5F401B7014200P-568, 0X1.3A84A0CB7AC42P-428]; + acot [0X6.65D7E0A247778P-56, 0X3.AE1DC13A652CAP+168] = [0X4.59002C447A028P-172, 0X1.921FB54442D18P+0]; + acot [0X5.2B55801231EC8P-344, 0XA.27B4555158148P-68] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0X6.36B661DCE2688P-236, 0X1.D68A6BA7E617FP+12] = [0X8.B472F5D335130P-16, 0X1.921FB54442D19P+0]; + acot [0X1.EB0E1AB78F314P-480, 0X1.98EF0C6A8BD66P+132] = [0XA.042BAEF7787B8P-136, 0X1.921FB54442D19P+0]; + acot [0X7.4CF193131FA64P-192, 0X1.C08152CC09416P+220] = [0X9.21EF65D6A5190P-224, 0X1.921FB54442D19P+0]; + acot [0X1.7036C237D5B00P-672, 0X6.F70E0DA4D2BA0P-140] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + acot [0X1.D283CF8F05665P+252, 0XB.24D19E00C8460P+324] = [0X1.6F8ED062CAC9BP-328, 0X8.C7ADFB6368868P-256]; + acot [0X3.A0EE84451C92CP-324, 0XF.CC937FA330E40P+648] = [0X1.03413E0E19942P-652, 0X1.921FB54442D19P+0]; + acot [0X1.8BCA641025A83P-124, 0X5.F775993940188P-120] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + sinh [-0X3.53DC9496DE0A0P-160, -0XC.287E0E10EC1B8P-960] = [-0X3.53DC9496DE0A2P-160, -0XC.287E0E10EC1B8P-960]; + sinh [-0X1.CF3637DCBCC9AP-452, -0X5.E4846462FF33CP-636] = [-0X1.CF3637DCBCC9BP-452, -0X5.E4846462FF33CP-636]; + sinh [-0X1.0362421843787P+0, -0X3.3D2CCEF698A5AP-972] = [-0X1.32197576F3697P+0, -0X3.3D2CCEF698A5AP-972]; + sinh [-0X1.494A24A7585D1P-380, +0X1.A0790A9E3013EP-604] = [-0X1.494A24A7585D2P-380, +0X1.A0790A9E3013FP-604]; + sinh [-0X2.B64BC5E999866P-368, -0XF.0633041110C28P-572] = [-0X2.B64BC5E999868P-368, -0XF.0633041110C28P-572]; + sinh [-0X7.56F52F4FED854P-336, -0X4.F40A3934B3354P-416] = [-0X7.56F52F4FED858P-336, -0X4.F40A3934B3354P-416]; + sinh [-0XA.0E33C2BA95C88P-48, -0X1.1927CA3847669P-808] = [-0XA.0E33C2BA95C90P-48, -0X1.1927CA3847669P-808]; + sinh [-0X1.1BBBD6FE8B950P-208, -0X1.463A32DBA649DP-220] = [-0X1.1BBBD6FE8B951P-208, -0X1.463A32DBA649DP-220]; + sinh [0X5.290FE84915530P-268, 0X1.8C9AF520C22C3P-96] = [0X5.290FE84915530P-268, 0X1.8C9AF520C22C4P-96]; + sinh [-0X2.E7332C654ABB6P-384, -0X1.4363967367F55P-932] = [-0X2.E7332C654ABB8P-384, -0X1.4363967367F55P-932]; + sinh [-0X1.55EBB1D70A46EP-592, +0X4.733FA51468530P-20] = [-0X1.55EBB1D70A46FP-592, +0X4.733FA51477038P-20]; + sinh [-0X1.1B4B8388A3D92P-340, -0XD.51D4A3CE4C490P-600] = [-0X1.1B4B8388A3D93P-340, -0XD.51D4A3CE4C490P-600]; + sinh [-0X4.21B73745BC4C0P-952, +0XD.E40D83923C3E0P-404] = [-0X4.21B73745BC4C4P-952, +0XD.E40D83923C3E8P-404]; + sinh [-0X1.73D14FA7DA1CBP-504, +0X1.5B3AFEEB17A85P-28] = [-0X1.73D14FA7DA1CCP-504, +0X1.5B3AFEEB17A86P-28]; + sinh [-0X3.3CD34997DF066P-320, -0X1.606C7BCE75819P-852] = [-0X3.3CD34997DF068P-320, -0X1.606C7BCE75819P-852]; + sinh [-0XC.5356A56E59748P-516, -0X1.33B9A95C55513P-772] = [-0XC.5356A56E59750P-516, -0X1.33B9A95C55513P-772]; + sinh [-0X5.FA887950A63CCP-588, -0X2.B707741B15478P-800] = [-0X5.FA887950A63D0P-588, -0X2.B707741B15478P-800]; + sinh [-0X2.9476464AAE5BAP-548, +0X4.0734E17C026D4P-784] = [-0X2.9476464AAE5BCP-548, +0X4.0734E17C026D8P-784]; + sinh [-0XF.A46AC05B0EAA8P-68, +0X1.EFA89F34F4188P-684] = [-0XF.A46AC05B0EAB0P-68, +0X1.EFA89F34F4189P-684]; + sinh [-0X9.9488CB205AFA8P-124, -0X2.940180D1AA2AEP-556] = [-0X9.9488CB205AFB0P-124, -0X2.940180D1AA2AEP-556]; + sinh [-0X3.F9D9FE5792CE0P-912, -0X3.F00FC8CE24ADCP-1016] = [-0X3.F9D9FE5792CE2P-912, -0X3.F00FC8CE24ADCP-1016]; + sinh [-0X7.D5A28EF80D6B0P-176, +0XC.5D2B8FFCB2AD8P-756] = [-0X7.D5A28EF80D6B4P-176, +0XC.5D2B8FFCB2AE0P-756]; + sinh [-0X5.B5DCAA821A628P-784, -0X1.48532232C10FDP-940] = [-0X5.B5DCAA821A62CP-784, -0X1.48532232C10FDP-940]; + sinh [0X3.8110D13AB0378P-720, 0X2.77422E18981C2P-44] = [0X3.8110D13AB0378P-720, 0X2.77422E18981C4P-44]; + sinh [-0X1.4AD562C0B5178P-380, +0X3.CEB34F40EA9BAP-792] = [-0X1.4AD562C0B5179P-380, +0X3.CEB34F40EA9BCP-792]; + sinh [-0X7.ED02EF56E40B0P-92, -0X1.8C80275A696B0P-552] = [-0X7.ED02EF56E40B4P-92, -0X1.8C80275A696B0P-552]; + sinh [-0X1.56FBE834FC822P-296, -0X3.66041558BACA8P-516] = [-0X1.56FBE834FC823P-296, -0X3.66041558BACA8P-516]; + sinh [-0X6.44524F6FCCF8CP-340, -0X5.3E8ED576A1334P-896] = [-0X6.44524F6FCCF90P-340, -0X5.3E8ED576A1334P-896]; + sinh [-0X8.92F5BEDA59C78P-268, +0X2.51B11C2EC76BAP-612] = [-0X8.92F5BEDA59C80P-268, +0X2.51B11C2EC76BCP-612]; + sinh [-0X4.785C46BDC2A50P-244, -0X1.BA5C062DE8F00P-432] = [-0X4.785C46BDC2A54P-244, -0X1.BA5C062DE8F00P-432]; + cosh [-0X3.53DC9496DE0A0P-160, -0XC.287E0E10EC1B8P-960] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.CF3637DCBCC9AP-452, -0X5.E4846462FF33CP-636] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.0362421843787P+0, -0X3.3D2CCEF698A5AP-972] = [0X1.0000000000000P+0, 0X1.8F0A39674B193P+0]; + cosh [-0X1.494A24A7585D1P-380, +0X1.A0790A9E3013EP-604] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X2.B64BC5E999866P-368, -0XF.0633041110C28P-572] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X7.56F52F4FED854P-336, -0X4.F40A3934B3354P-416] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0XA.0E33C2BA95C88P-48, -0X1.1927CA3847669P-808] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.1BBBD6FE8B950P-208, -0X1.463A32DBA649DP-220] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [0X5.290FE84915530P-268, 0X1.8C9AF520C22C3P-96] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X2.E7332C654ABB6P-384, -0X1.4363967367F55P-932] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.55EBB1D70A46EP-592, +0X4.733FA51468530P-20] = [0X1.0000000000000P+0, 0X1.0000000009E6FP+0]; + cosh [-0X1.1B4B8388A3D92P-340, -0XD.51D4A3CE4C490P-600] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X4.21B73745BC4C0P-952, +0XD.E40D83923C3E0P-404] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.73D14FA7DA1CBP-504, +0X1.5B3AFEEB17A85P-28] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X3.3CD34997DF066P-320, -0X1.606C7BCE75819P-852] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0XC.5356A56E59748P-516, -0X1.33B9A95C55513P-772] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X5.FA887950A63CCP-588, -0X2.B707741B15478P-800] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X2.9476464AAE5BAP-548, +0X4.0734E17C026D4P-784] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0XF.A46AC05B0EAA8P-68, +0X1.EFA89F34F4188P-684] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X9.9488CB205AFA8P-124, -0X2.940180D1AA2AEP-556] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X3.F9D9FE5792CE0P-912, -0X3.F00FC8CE24ADCP-1016] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X7.D5A28EF80D6B0P-176, +0XC.5D2B8FFCB2AD8P-756] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X5.B5DCAA821A628P-784, -0X1.48532232C10FDP-940] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [0X3.8110D13AB0378P-720, 0X2.77422E18981C2P-44] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.4AD562C0B5178P-380, +0X3.CEB34F40EA9BAP-792] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X7.ED02EF56E40B0P-92, -0X1.8C80275A696B0P-552] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X1.56FBE834FC822P-296, -0X3.66041558BACA8P-516] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X6.44524F6FCCF8CP-340, -0X5.3E8ED576A1334P-896] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X8.92F5BEDA59C78P-268, +0X2.51B11C2EC76BAP-612] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + cosh [-0X4.785C46BDC2A50P-244, -0X1.BA5C062DE8F00P-432] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + tanh [0X1.7A77BFCCF5A9EP-232, 0X2.8457BC029986EP+112] = [0X1.7A77BFCCF5A9DP-232, 0X1.0000000000000P+0]; + tanh [0X3.C5EC30FBB68C8P-508, 0X6.05C0BB1BCB730P-220] = [0X3.C5EC30FBB68C6P-508, 0X6.05C0BB1BCB730P-220]; + tanh [0XE.20FF41BD18058P-204, 0X2.9B09919BF9D9EP+272] = [0XE.20FF41BD18050P-204, 0X1.0000000000000P+0]; + tanh [0X2.075DF98B2478CP-456, 0X1.1503444763FC5P-416] = [0X2.075DF98B2478AP-456, 0X1.1503444763FC5P-416]; + tanh [0X1.5444E676976F1P+252, 0X2.7C064F6929234P+292] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X1.3A01905E36F84P+0, 0X4.ECBC855871080P+332] = [0XD.772335E624B98P-4, 0X1.0000000000000P+0]; + tanh [0X2.404E44C49C644P-440, 0X7.32EDAB7F60A50P+236] = [0X2.404E44C49C642P-440, 0X1.0000000000000P+0]; + tanh [0X1.63A15E999EB64P-344, 0X6.5263CF84EF388P+172] = [0X1.63A15E999EB63P-344, 0X1.0000000000000P+0]; + tanh [0X6.941F470A70074P-756, 0X1.4171976A1CA54P-288] = [0X6.941F470A70070P-756, 0X1.4171976A1CA54P-288]; + tanh [0X7.78A1F475A306CP-564, 0X4.69BB1D34B9570P-76] = [0X7.78A1F475A3068P-564, 0X4.69BB1D34B9570P-76]; + tanh [0X1.BA04D452BBB35P+180, 0X1.F0D19ADCB5D74P+312] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X2.6ABC15579B2B2P-48, 0X2.E046DB554037CP+256] = [0X2.6ABC15579B2B0P-48, 0X1.0000000000000P+0]; + tanh [0X8.297A99ED9ED08P+8, 0XE.33C49CF5B8790P+652] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X3.436DFE8F08194P+48, 0X2.A69A969772FDEP+688] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X6.3E590E626451CP-172, 0X1.7AAA15EBBD3F2P+8] = [0X6.3E590E6264518P-172, 0X1.0000000000000P+0]; + tanh [0X6.ACFA418D8F92CP-544, 0X2.8F9204BC4041EP+988] = [0X6.ACFA418D8F928P-544, 0X1.0000000000000P+0]; + tanh [0X2.BB570B356C6CAP-440, 0X2.B00450A48D586P-148] = [0X2.BB570B356C6C8P-440, 0X2.B00450A48D586P-148]; + tanh [0XC.41329461A0C30P-512, 0X1.9E7DDBBE00F75P+352] = [0XC.41329461A0C28P-512, 0X1.0000000000000P+0]; + tanh [0X6.6978492A3064CP+188, 0XD.5E2045CEE9720P+236] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X7.DEA605DEC97CCP-316, 0X1.5BD629B25AA23P-236] = [0X7.DEA605DEC97C8P-316, 0X1.5BD629B25AA23P-236]; + tanh [0XD.05E9CCF66CF58P+424, 0XB.A944253373080P+564] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X6.65D7E0A247778P-56, 0X3.AE1DC13A652CAP+168] = [0X6.65D7E0A247774P-56, 0X1.0000000000000P+0]; + tanh [0X5.2B55801231EC8P-344, 0XA.27B4555158148P-68] = [0X5.2B55801231EC4P-344, 0XA.27B4555158148P-68]; + tanh [0X6.36B661DCE2688P-236, 0X1.D68A6BA7E617FP+12] = [0X6.36B661DCE2684P-236, 0X1.0000000000000P+0]; + tanh [0X1.EB0E1AB78F314P-480, 0X1.98EF0C6A8BD66P+132] = [0X1.EB0E1AB78F313P-480, 0X1.0000000000000P+0]; + tanh [0X7.4CF193131FA64P-192, 0X1.C08152CC09416P+220] = [0X7.4CF193131FA60P-192, 0X1.0000000000000P+0]; + tanh [0X1.7036C237D5B00P-672, 0X6.F70E0DA4D2BA0P-140] = [0X1.7036C237D5AFFP-672, 0X6.F70E0DA4D2BA0P-140]; + tanh [0X1.D283CF8F05665P+252, 0XB.24D19E00C8460P+324] = [0XF.FFFFFFFFFFFF8P-4, 0X1.0000000000000P+0]; + tanh [0X3.A0EE84451C92CP-324, 0XF.CC937FA330E40P+648] = [0X3.A0EE84451C92AP-324, 0X1.0000000000000P+0]; + tanh [0X1.8BCA641025A83P-124, 0X5.F775993940188P-120] = [0X1.8BCA641025A82P-124, 0X5.F775993940188P-120]; + coth [0X5.9D7EEEA9B9EE0P-264, 0X3.F03D06503CAA2P+92] = [0X1.0000000000000P+0, 0X2.D97240157D2C8P+260]; + coth [-0X3.F03D06503CAA2P+92, -0X5.9D7EEEA9B9EE0P-264] = [-0X2.D97240157D2C8P+260, -0X1.0000000000000P+0]; + coth [0XB.6600F238FE060P-520, 0X1.BB63631B595B0P-224] = [0X9.3CEA8A8C76FC0P+220, 0X1.6758D7D180F69P+516]; + coth [-0X1.BB63631B595B0P-224, -0XB.6600F238FE060P-520] = [-0X1.6758D7D180F69P+516, -0X9.3CEA8A8C76FC0P+220]; + coth [0X4.DC89ED0034C6CP-240, 0XD.A1D118A3891E8P+232] = [0X1.0000000000000P+0, 0X3.4A8AB6B06359AP+236]; + coth [-0XD.A1D118A3891E8P+232, -0X4.DC89ED0034C6CP-240] = [-0X3.4A8AB6B06359AP+236, -0X1.0000000000000P+0]; + coth [0X4.7F93F879A61A4P-492, 0X1.BDC6388153882P-452] = [0X9.3041F45FA3D78P+448, 0X3.8E8E46D77A03EP+488]; + coth [-0X1.BDC6388153882P-452, -0X4.7F93F879A61A4P-492] = [-0X3.8E8E46D77A03EP+488, -0X9.3041F45FA3D78P+448]; + coth [0XF.C7C928D9BB718P+192, 0X8.41A7954605A98P+224] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + coth [-0X8.41A7954605A98P+224, -0XF.C7C928D9BB718P+192] = [-0X1.0000000000001P+0, -0X1.0000000000000P+0]; + coth [0X3.F07C0B8005270P-44, 0X2.DD3C8580FCBE0P+276] = [0X1.0000000000000P+0, 0X4.0FC1103283A70P+40]; + coth [-0X2.DD3C8580FCBE0P+276, -0X3.F07C0B8005270P-44] = [-0X4.0FC1103283A70P+40, -0X1.0000000000000P+0]; + coth [0XA.A97DED29FFF30P-480, 0X5.35EEA9C504860P+196] = [0X1.0000000000000P+0, 0X1.802A4F4EFE3B2P+476]; + coth [-0X5.35EEA9C504860P+196, -0XA.A97DED29FFF30P-480] = [-0X1.802A4F4EFE3B2P+476, -0X1.0000000000000P+0]; + coth [0X3.CF4B727451402P-376, 0X1.759F6C21DAF9AP+140] = [0X1.0000000000000P+0, 0X4.33233873998C8P+372]; + coth [-0X1.759F6C21DAF9AP+140, -0X3.CF4B727451402P-376] = [-0X4.33233873998C8P+372, -0X1.0000000000000P+0]; + coth [0X6.55376F4C1C50CP-772, 0X1.0120DD4EBC019P-328] = [0XF.EE06735C6D910P+324, 0X2.86C88F09A2CBEP+768]; + coth [-0X1.0120DD4EBC019P-328, -0X6.55376F4C1C50CP-772] = [-0X2.86C88F09A2CBEP+768, -0XF.EE06735C6D910P+324]; + coth [0X1.B63F1F7AED49EP-580, 0X2.245AF5BCB3356P-132] = [0X7.7838528478BF8P+128, 0X9.58A984202B8E8P+576]; + coth [-0X2.245AF5BCB3356P-132, -0X1.B63F1F7AED49EP-580] = [-0X9.58A984202B8E8P+576, -0X7.7838528478BF8P+128]; + coth [0X2.73B23CC8D8F76P+116, 0X1.F1E4F59403FC3P+276] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + coth [-0X1.F1E4F59403FC3P+276, -0X2.73B23CC8D8F76P+116] = [-0X1.0000000000001P+0, -0X1.0000000000000P+0]; + coth [0X2.5B4F5F71CA5FCP-100, 0X1.5C244CE1AC6B3P+204] = [0X1.0000000000000P+0, 0X6.CA09D0DDC330CP+96]; + coth [-0X1.5C244CE1AC6B3P+204, -0X2.5B4F5F71CA5FCP-100] = [-0X6.CA09D0DDC330CP+96, -0X1.0000000000000P+0]; + coth [0X1.4E7212DD5ABB9P+4, 0XD.9F35E61FDF7E8P+592] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + coth [-0XD.9F35E61FDF7E8P+592, -0X1.4E7212DD5ABB9P+4] = [-0X1.0000000000001P+0, -0X1.0000000000000P+0]; + coth [0X1.271B33491E515P+20, 0X2.B3031CF3AF4ECP+628] = [0X1.0000000000000P+0, 0X1.0000000000001P+0]; + coth [-0X2.B3031CF3AF4ECP+628, -0X1.271B33491E515P+20] = [-0X1.0000000000001P+0, -0X1.0000000000000P+0]; + coth [0X9.DB635E2FF52B0P-180, 0X2.AF04176524D06P-24] = [0X5.F646A7779F114P+20, 0X1.9F8AFAA8DBFF9P+176]; + coth [-0X2.AF04176524D06P-24, -0X9.DB635E2FF52B0P-180] = [-0X1.9F8AFAA8DBFF9P+176, -0X5.F646A7779F114P+20]; + asinh [0X1.7A77BFCCF5A9EP-232, 0X2.8457BC029986EP+112] = [0X1.7A77BFCCF5A9DP-232, 0X4.F3FA9CD060658P+4]; + asinh [0X3.C5EC30FBB68C8P-508, 0X6.05C0BB1BCB730P-220] = [0X3.C5EC30FBB68C6P-508, 0X6.05C0BB1BCB730P-220]; + asinh [0XE.20FF41BD18058P-204, 0X2.9B09919BF9D9EP+272] = [0XE.20FF41BD18050P-204, 0XB.E2FD554E373E0P+4]; + asinh [0X2.075DF98B2478CP-456, 0X1.1503444763FC5P-416] = [0X2.075DF98B2478AP-456, 0X1.1503444763FC5P-416]; + asinh [0X1.5444E676976F1P+252, 0X2.7C064F6929234P+292] = [0XA.FA69A93525138P+4, 0XC.C008F1DBA8390P+4]; + asinh [0X1.3A01905E36F84P+0, 0X4.ECBC855871080P+332] = [0X1.086AFFAE230B6P+0, 0XE.8698B81E22AB0P+4]; + asinh [0X2.404E44C49C644P-440, 0X7.32EDAB7F60A50P+236] = [0X2.404E44C49C642P-440, 0XA.63FF3E7D6B730P+4]; + asinh [0X1.63A15E999EB64P-344, 0X6.5263CF84EF388P+172] = [0X1.63A15E999EB63P-344, 0X7.9C22B35B1CEE0P+4]; + asinh [0X6.941F470A70074P-756, 0X1.4171976A1CA54P-288] = [0X6.941F470A70070P-756, 0X1.4171976A1CA54P-288]; + asinh [0X7.78A1F475A306CP-564, 0X4.69BB1D34B9570P-76] = [0X7.78A1F475A3068P-564, 0X4.69BB1D34B9570P-76]; + asinh [0X1.BA04D452BBB35P+180, 0X1.F0D19ADCB5D74P+312] = [0X7.E017D1421AED4P+4, 0XD.99E3CCF428D70P+4]; + asinh [0X2.6ABC15579B2B2P-48, 0X2.E046DB554037CP+256] = [0X2.6ABC15579B2B0P-48, 0XB.331FC2BC20E70P+4]; + //asinh [0X8.297A99ED9ED08P+8, 0XE.33C49CF5B8790P+652] = [0X8.567B3095B8380P+0, 0X1.C7474C3E00682P+8]; + //asinh [0X3.436DFE8F08194P+48, 0X2.A69A969772FDEP+688] = [0X2.325A084AF897EP+4, 0X1.DE8DA2F064858P+8]; + asinh [0X6.3E590E626451CP-172, 0X1.7AAA15EBBD3F2P+8] = [0X6.3E590E6264518P-172, 0X6.A13A85E654788P+0]; + asinh [0X6.ACFA418D8F92CP-544, 0X2.8F9204BC4041EP+988] = [0X6.ACFA418D8F928P-544, 0X2.AE767FF2330E0P+8]; + asinh [0X2.BB570B356C6CAP-440, 0X2.B00450A48D586P-148] = [0X2.BB570B356C6C8P-440, 0X2.B00450A48D586P-148]; + asinh [0XC.41329461A0C30P-512, 0X1.9E7DDBBE00F75P+352] = [0XC.41329461A0C28P-512, 0XF.529AF3B8107E0P+4]; + asinh [0X6.6978492A3064CP+188, 0XD.5E2045CEE9720P+236] = [0X8.4DCECB852E1E8P+4, 0XA.6DE648AA01A20P+4]; + asinh [0X7.DEA605DEC97CCP-316, 0X1.5BD629B25AA23P-236] = [0X7.DEA605DEC97C8P-316, 0X1.5BD629B25AA23P-236]; + //asinh [0XD.05E9CCF66CF58P+424, 0XB.A944253373080P+564] = [0X1.29277EA798036P+8, 0X1.8A159CCBD552AP+8]; + asinh [0X6.65D7E0A247778P-56, 0X3.AE1DC13A652CAP+168] = [0X6.65D7E0A247774P-56, 0X7.671E008768830P+4]; + asinh [0X5.2B55801231EC8P-344, 0XA.27B4555158148P-68] = [0X5.2B55801231EC4P-344, 0XA.27B4555158148P-68]; + asinh [0X6.36B661DCE2688P-236, 0X1.D68A6BA7E617FP+12] = [0X6.36B661DCE2684P-236, 0X9.9E9F4F5A56088P+0]; + asinh [0X1.EB0E1AB78F314P-480, 0X1.98EF0C6A8BD66P+132] = [0X1.EB0E1AB78F313P-480, 0X5.CA82DEDB3D320P+4]; + asinh [0X7.4CF193131FA64P-192, 0X1.C08152CC09416P+220] = [0X7.4CF193131FA60P-192, 0X9.9BF0B87669850P+4]; + asinh [0X1.7036C237D5B00P-672, 0X6.F70E0DA4D2BA0P-140] = [0X1.7036C237D5AFFP-672, 0X6.F70E0DA4D2BA0P-140]; + asinh [0X1.D283CF8F05665P+252, 0XB.24D19E00C8460P+324] = [0XA.FF762A8B30EA0P+4, 0XE.3AF0836B2F5B0P+4]; + //asinh [0X3.A0EE84451C92CP-324, 0XF.CC937FA330E40P+648] = [0X3.A0EE84451C92AP-324, 0X1.C49CCB25BBD50P+8]; + asinh [0X1.8BCA641025A83P-124, 0X5.F775993940188P-120] = [0X1.8BCA641025A82P-124, 0X5.F775993940188P-120]; + acosh [0X5.AD89AD14DDC74P+272, 0X2.6EC5D31670A5EP+860] = [0XB.EF73BF42C19D8P+4, 0X2.55B05064B6C2AP+8]; + acosh [0X4.A457C35864940P+344, 0X2.3ADEFB54BC048P+444] = [0XF.0ABC113DB1AF0P+4, 0X1.3540A29BC6B5EP+8]; + acosh [0X6.941C8B9506D90P+56, 0X3.B11D8083AE958P+744] = [0X2.964A9197BF832P+4, 0X2.05B3663FAE652P+8]; + acosh [0X1.09A940A083EE3P+132, 0X1.047FD514ADF08P+384] = [0X5.C39C22D7AA908P+4, 0X1.0AE10BDF7FE81P+8]; + acosh [0X7.710740B71A0D4P+256, 0XF.C0798D156BFA0P+560] = [0XB.42559B5CF34E8P+4, 0X1.879CCE87EE3A1P+8]; + acosh [0X2.3721A01F70456P+564, 0X9.C62BBF31FD290P+728] = [0X1.886C6F1DDDFF7P+8, 0X1.FB958311209BFP+8]; + acosh [0X6.F06D452BDCEF0P+44, 0X2.4825931366BBCP+520] = [0X2.120F95BD1F706P+4, 0X1.69F464545899AP+8]; + acosh [0X5.D326D4B0883D8P+76, 0X1.77175C5A113ADP+528] = [0X3.7226BF0157930P+4, 0X1.6F0E8DBF98710P+8]; + acosh [0X1.05ADFE119D4C2P+296, 0X2.6BCDF50E05E34P+1020] = [0XC.DE2FBE78FEC28P+4, 0X2.C49666459E1A4P+8]; + acosh [0XA.7F5D255B81268P+408, 0X1.9D1EDDC132B36P+864] = [0X1.1DD92C82827A1P+8, 0X2.580D06072BF20P+8]; + acosh [0XC.FBE4E2C6D0A80P+484, 0X4.DF75BDC17C330P+868] = [0X1.52BD770642386P+8, 0X2.5BEDB7E376E18P+8]; + acosh [0XB.241032F9700A0P+380, 0X1.04A65B06B2920P+640] = [0X1.0A7FEC190CCEEP+8, 0X1.BC5349B021815P+8]; + acosh [0X5.F207EAF5F8BB4P+608, 0XA.BC87C6F90AEE0P+648] = [0X1.A7E8C5069EA32P+8, 0X1.C439E5E8A511CP+8]; + acosh [0X1.BCD62C46ADFD7P+16, 0XA.CD289B35ECD00P+564] = [0XC.56062C0C41518P+0, 0X1.8A0201556D85AP+8]; + acosh [0X6.534BBA40A0B44P+224, 0X1.8DE35856E91FBP+452] = [0X9.DCD7CC0C7FFB8P+4, 0X1.3A6FC95911674P+8]; + acosh [0X2.C4F59012F4E48P+508, 0X1.1854765A9A205P+688] = [0X1.61D49DF92AB79P+8, 0X1.DDAB5081E5A0EP+8]; + acosh [0X8.6F890522C18B0P+44, 0X3.F87592D71E06CP+220] = [0X2.152F7D2DBF2BCP+4, 0X9.A907E7C701690P+4]; + acosh [0X9.2A9035A578970P+124, 0X1.35EE42DCA8B75P+608] = [0X5.8DBE2A7E96990P+4, 0X1.A6515B9ECF2F1P+8]; + acosh [0X5.2641115F86D38P+204, 0X7.BE33D080E6584P+252] = [0X8.FBBEB3B84C708P+4, 0XB.169BBE1313F68P+4]; + acosh [0XA.8746F72A1BD90P+72, 0X5.6ABE29A315520P+872] = [0X3.4F42DBFC0E4B4P+4, 0X2.5ECE9922C7894P+8]; + acosh [0XB.D0973FF704000P+224, 0X2.2FD9ABBD09D34P+976] = [0X9.E6D6EA0633070P+4, 0X2.A5FCBEDD15F2CP+8]; + acosh [0XA.C15D51DB7D9F0P+536, 0X1.7207A70831D7AP+796] = [0X1.76986E964982DP+8, 0X2.28CE847F69DCAP+8]; + acosh [0X4.280BEC7911E7CP+180, 0X6.B4F11E86ECA38P+792] = [0X7.EE261446DD5F8P+4, 0X2.27919F48F2C20P+8]; + acosh [0X3.4B22674960B0EP+468, 0XA.505A061DF4CD8P+808] = [0X1.4647297977E4EP+8, 0X2.3316ED57009D4P+8]; + acosh [0X2.383FC27D5E4E4P+756, 0X5.88E9C96565E54P+920] = [0X2.0D82822002358P+8, 0X2.801980299550CP+8]; + acosh [0X1.20E762C8AAB55P+72, 0X1.DBB7B8FE35847P+960] = [0X3.2B87D37C9EAFAP+4, 0X2.9ABBED2A77E62P+8]; + acosh [0X1.1265074E9E3DFP+792, 0X2.229B285A709C0P+920] = [0X2.25BC2FC876EBCP+8, 0X2.7F25A89FE16E6P+8]; + acosh [0X1.054DCDEF21349P+436, 0X1.618994D07D9A7P+636] = [0X1.2EED02D819A15P+8, 0X1.B9DB8970CC5ECP+8]; + acosh [0X4.5BE0D9A7FF0CCP+460, 0X2.6F2C55F16354AP+568] = [0X1.4103588C86AB6P+8, 0X1.8B4A572E180D4P+8]; + acosh [0X9.BD8B9A7FB6630P+80, 0X2.AD5F8458C8722P+768] = [0X3.A6BD416FCCF70P+4, 0X2.1603D4EDCB36AP+8]; + atanh [-0X3.11A309475E762P-164, -0XC.3784302E15500P-680] = [-0X3.11A309475E764P-164, -0XC.3784302E15500P-680]; + atanh [-0X5.7DD17A4248D38P-280, -0X2.898FC0F386F74P-640] = [-0X5.7DD17A4248D3CP-280, -0X2.898FC0F386F74P-640]; + atanh [-0XE.D83DCD7F564A0P-296, -0X1.62F61FBA0F40FP-764] = [-0XE.D83DCD7F564A8P-296, -0X1.62F61FBA0F40FP-764]; + atanh [-0X1.67712A1E64C2CP-944, -0X1.C0102C4D258EFP-976] = [-0X1.67712A1E64C2DP-944, -0X1.C0102C4D258EFP-976]; + atanh [0X2.E3D991AE84668P-728, 0X1.92C3C728CCF4AP-612] = [0X2.E3D991AE84668P-728, 0X1.92C3C728CCF4BP-612]; + atanh [-0X1.BCD3FEB3B0175P-640, +0X1.BEBE69E3BF3C2P-536] = [-0X1.BCD3FEB3B0176P-640, +0X1.BEBE69E3BF3C3P-536]; + atanh [-0X1.2469575189327P-372, -0X7.51C0C39F58A4CP-1008] = [-0X1.2469575189328P-372, -0X7.51C0C39F58A4CP-1008]; + atanh [-0X1.C4D163A6CCCD9P-336, -0X1.3BEE6DAB70397P-796] = [-0X1.C4D163A6CCCDAP-336, -0X1.3BEE6DAB70397P-796]; + atanh [-0X2.0FAE5DE90C98CP-896, -0X2.2079777EC2418P-976] = [-0X2.0FAE5DE90C98EP-896, -0X2.2079777EC2418P-976]; + atanh [-0X1.08C248C37E53BP-816, +0X2.8C9F04EE5DE84P-948] = [-0X1.08C248C37E53CP-816, +0X2.8C9F04EE5DE86P-948]; + atanh [-0X2.0002542B01474P-228, +0X2.4D59F217BF74CP-796] = [-0X2.0002542B01476P-228, +0X2.4D59F217BF74EP-796]; + atanh [0XD.D4033889729A0P-844, 0X7.44451BF919D78P-556] = [0XD.D4033889729A0P-844, 0X7.44451BF919D7CP-556]; + atanh [-0X2.08918B016995CP-64, +0X3.3FC26450C6E4AP-268] = [-0X2.08918B016995EP-64, +0X3.3FC26450C6E4CP-268]; + atanh [-0X2.66C95BD8D7716P-388, +0X1.7E16B310F878AP-232] = [-0X2.66C95BD8D7718P-388, +0X1.7E16B310F878BP-232]; + atanh [-0X3.D9C66BD30B774P-256, -0X4.A8C30F678CB68P-456] = [-0X3.D9C66BD30B776P-256, -0X4.A8C30F678CB68P-456]; + atanh [-0X1.AA045CCB15AEDP-804, +0XD.450C473265610P-24] = [-0X1.AA045CCB15AEEP-804, +0XD.450C4732686C0P-24]; + atanh [-0X2.23ADFA571FC3CP-344, -0X1.30D1074DC059EP-868] = [-0X2.23ADFA571FC3EP-344, -0X1.30D1074DC059EP-868]; + atanh [-0X3.DFBC1A4BF3888P-68, -0X4.A89E39B247C84P-840] = [-0X3.DFBC1A4BF388AP-68, -0X4.A89E39B247C84P-840]; + atanh [0X9.583064525D370P-496, 0X2.C67652F06A55EP-408] = [0X9.583064525D370P-496, 0X2.C67652F06A560P-408]; + atanh [-0X3.38BF880EC3082P-304, -0X7.7B19877E536ACP-512] = [-0X3.38BF880EC3084P-304, -0X7.7B19877E536ACP-512]; + atanh [-0X2.ADBF037238702P-44, +0X1.98DC940C3AE1EP-564] = [-0X2.ADBF037238704P-44, +0X1.98DC940C3AE1FP-564]; + atanh [-0X4.E4A79C48B3A58P-328, +0XA.28B02E59D39D8P-856] = [-0X4.E4A79C48B3A5CP-328, +0XA.28B02E59D39E0P-856]; + atanh [-0X6.80D3E87B911D8P-232, -0X2.3DF54212C46E4P-520] = [-0X6.80D3E87B911DCP-232, -0X2.3DF54212C46E4P-520]; + atanh [-0X1.4E54C309C46F8P-480, +0X9.47E982AC83F98P-688] = [-0X1.4E54C309C46F9P-480, +0X9.47E982AC83FA0P-688]; + atanh [-0X2.276202227A6DEP-808, +0X1.C53E9BA64FADFP-768] = [-0X2.276202227A6E0P-808, +0X1.C53E9BA64FAE0P-768]; + atanh [-0X4.8E4B4D7BA6DD0P-212, -0X1.4B35284C1064BP-548] = [-0X4.8E4B4D7BA6DD4P-212, -0X1.4B35284C1064BP-548]; + atanh [-0X3.5C52B8D9FF582P-248, -0X2.AF868D652B866P-912] = [-0X3.5C52B8D9FF584P-248, -0X2.AF868D652B866P-912]; + atanh [0X1.6938CC5EE183AP-692, 0XB.F7A583AC38168P-664] = [0X1.6938CC5EE183AP-692, 0XB.F7A583AC38170P-664]; + atanh [-0X3.68B35F23B2506P-560, +0X9.F9C9246D05138P-304] = [-0X3.68B35F23B2508P-560, +0X9.F9C9246D05140P-304]; + atanh [-0XA.BDE70B6850EA0P-516, +0X2.BB76D5BF703FAP-1020] = [-0XA.BDE70B6850EA8P-516, +0X2.BB76D5BF703FCP-1020]; + acoth [0X5.AD89AD14DDC78P+272, 0X2.6EC5D31670A60P+860] = [0X6.93B8C1A4ADA4CP-864, 0X2.D165505974CDCP-276]; + acoth [-0X2.6EC5D31670A60P+860, -0X5.AD89AD14DDC78P+272] = [-0X2.D165505974CDCP-276, -0X6.93B8C1A4ADA4CP-864]; + acoth [0X4.A457C35864944P+344, 0X2.3ADEFB54BC04AP+444] = [0X7.2CCCD8F3E4D84P-448, 0X3.726295CD6E028P-348]; + acoth [-0X2.3ADEFB54BC04AP+444, -0X4.A457C35864944P+344] = [-0X3.726295CD6E028P-348, -0X7.2CCCD8F3E4D84P-448]; + acoth [0X6.941C8B9506D98P+56, 0X3.B11D8083AE95CP+744] = [0X4.55780C09BB248P-748, 0X2.6EA0EC606D92CP-60]; + acoth [-0X3.B11D8083AE95CP+744, -0X6.941C8B9506D98P+56] = [-0X2.6EA0EC606D92CP-60, -0X4.55780C09BB248P-748]; + acoth [0X1.09A940A083EE4P+132, 0X1.047FD514ADF09P+384] = [0XF.B940FE60125C0P-388, 0XF.6B0B0DCA2D740P-136]; + acoth [-0X1.047FD514ADF09P+384, -0X1.09A940A083EE4P+132] = [-0XF.6B0B0DCA2D740P-136, -0XF.B940FE60125C0P-388]; + acoth [0X7.710740B71A0DCP+256, 0XF.C0798D156BFB0P+560] = [0X1.04086A3447A55P-564, 0X2.266CE7A905524P-260]; + acoth [-0XF.C0798D156BFB0P+560, -0X7.710740B71A0DCP+256] = [-0X2.266CE7A905524P-260, -0X1.04086A3447A55P-564]; + acoth [0X2.3721A01F70458P+564, 0X9.C62BBF31FD298P+728] = [0X1.A3110641EF7BCP-732, 0X7.38E97DB7ABD94P-568]; + acoth [-0X9.C62BBF31FD298P+728, -0X2.3721A01F70458P+564] = [-0X7.38E97DB7ABD94P-568, -0X1.A3110641EF7BCP-732]; + acoth [0X6.F06D452BDCEF8P+44, 0X2.4825931366BBEP+520] = [0X7.030E427A5F700P-524, 0X2.4E45C5E18EA0EP-48]; + acoth [-0X2.4825931366BBEP+520, -0X6.F06D452BDCEF8P+44] = [-0X2.4E45C5E18EA0EP-48, -0X7.030E427A5F700P-524]; + acoth [0X5.D326D4B0883DCP+76, 0X1.77175C5A113AEP+528] = [0XA.EB85BC1375C18P-532, 0X2.BF32E14DB1D26P-80]; + acoth [-0X1.77175C5A113AEP+528, -0X5.D326D4B0883DCP+76] = [-0X2.BF32E14DB1D26P-80, -0XA.EB85BC1375C18P-532]; + acoth [0X1.05ADFE119D4C3P+296, 0X2.6BCDF50E05E36P+1020] = [0X6.9BC8F6BE69A84P-1024, 0XF.A7190DED61120P-300]; + acoth [-0X2.6BCDF50E05E36P+1020, -0X1.05ADFE119D4C3P+296] = [-0XF.A7190DED61120P-300, -0X6.9BC8F6BE69A84P-1024]; + acoth [0XA.7F5D255B81270P+408, 0X1.9D1EDDC132B38P+864] = [0X9.EA2F16D4B51A8P-868, 0X1.8630054C790C6P-412]; + acoth [-0X1.9D1EDDC132B38P+864, -0XA.7F5D255B81270P+408] = [-0X1.8630054C790C6P-412, -0X9.EA2F16D4B51A8P-868]; + acoth [0XC.FBE4E2C6D0A90P+484, 0X4.DF75BDC17C334P+868] = [0X3.4891A2770DF7CP-872, 0X1.3B7754395DD7FP-488]; + acoth [-0X4.DF75BDC17C334P+868, -0XC.FBE4E2C6D0A90P+484] = [-0X1.3B7754395DD7FP-488, -0X3.4891A2770DF7CP-872]; + acoth [0XB.241032F9700A8P+380, 0X1.04A65B06B2921P+640] = [0XF.B6EE12E44E478P-644, 0X1.6FA7BD9AAC5D2P-384]; + acoth [-0X1.04A65B06B2921P+640, -0XB.241032F9700A8P+380] = [-0X1.6FA7BD9AAC5D2P-384, -0XF.B6EE12E44E478P-644]; + acoth [0X5.F207EAF5F8BB8P+608, 0XA.BC87C6F90AEE8P+648] = [0X1.7D8116060016CP-652, 0X2.B0EE9FA61C0DAP-612]; + acoth [-0XA.BC87C6F90AEE8P+648, -0X5.F207EAF5F8BB8P+608] = [-0X2.B0EE9FA61C0DAP-612, -0X1.7D8116060016CP-652]; + acoth [0X1.BCD62C46ADFD9P+16, 0XA.CD289B35ECD08P+564] = [0X1.7B35C74EEC020P-568, 0X9.35374E76B1BE8P-20]; + acoth [-0XA.CD289B35ECD08P+564, -0X1.BCD62C46ADFD9P+16] = [-0X9.35374E76B1BE8P-20, -0X1.7B35C74EEC020P-568]; + acoth [0X6.534BBA40A0B4CP+224, 0X1.8DE35856E91FDP+452] = [0XA.4B5AAEDFCE6A8P-456, 0X2.878CF52E5FBF8P-228]; + acoth [-0X1.8DE35856E91FDP+452, -0X6.534BBA40A0B4CP+224] = [-0X2.878CF52E5FBF8P-228, -0XA.4B5AAEDFCE6A8P-456]; + expm1 [-0X1.16CC0DF1540F5P+112, -0X1.B3E4076622F04P-232] = [-0X1.0000000000000P+0, -0X1.B3E4076622F03P-232]; + expm1 [-0X2.42042B9A88438P-220, -0X2.A213429DB0508P-508] = [-0X2.42042B9A88438P-220, -0X2.A213429DB0506P-508]; + expm1 [-0X2.0E2E40B15D814P+272, -0X1.5D74CFDA6B292P-200] = [-0X1.0000000000000P+0, -0X1.5D74CFDA6B291P-200]; + expm1 [-0X2.0EA791886F712P-416, -0X3.FE66A8D1A3472P-456] = [-0X2.0EA791886F712P-416, -0X3.FE66A8D1A3470P-456]; + //expm1 [-0X6.FF424CB26239CP+292, -0X2.89F6682121BA8P+252] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + expm1 [-0X8.80EEFDF700148P+332, -0X1.C4E85E50A626DP+0] = [-0X1.0000000000000P+0, -0XD.45BCBA84EE268P-4]; + expm1 [-0X6.CA83546563A5CP+236, -0X4.F0F28370909FCP-440] = [-0X1.0000000000000P+0, -0X4.F0F28370909F8P-440]; + expm1 [-0X4.E60572D4FCFD0P+172, -0X1.EB095183538C8P-344] = [-0X1.0000000000000P+0, -0X1.EB095183538C7P-344]; + expm1 [-0X2.7ED8954764B12P-288, -0X8.71DC22117BE90P-756] = [-0X2.7ED8954764B12P-288, -0X8.71DC22117BE88P-756]; + expm1 [-0XD.CF39B8DD68B98P-76, -0X8.0205C5B1357B0P-564] = [-0XD.CF39B8DD68B98P-76, -0X8.0205C5B1357A8P-564]; + //expm1 [-0X1.582D3AFB2C63DP+312, -0X5.08DC843E57ED4P+180] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + expm1 [-0X4.AF296DD37FD74P+256, -0X5.CBE2BD423B02CP-48] = [-0X1.0000000000000P+0, -0X5.CBE2BD423AF1CP-48]; + expm1 [-0X1.1FBA2D1252D2BP+656, -0X2.4B7A4095C91B4P+8] = [-0X1.0000000000000P+0, -0XF.FFFFFFFFFFFF8P-4]; + //expm1 [-0X3.2FD3FDE325402P+688, -0X2.738623C238270P+48] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + expm1 [-0X1.44F2134E1901EP+8, -0X2.581DAD9AFE6DCP-172] = [-0X1.0000000000000P+0, -0X2.581DAD9AFE6DAP-172]; + expm1 [-0X2.9529E333F2ABAP+988, -0X7.19390F862F49CP-544] = [-0X1.0000000000000P+0, -0X7.19390F862F498P-544]; + expm1 [-0X1.58391FD92C387P-148, -0X4.0C12426A57194P-440] = [-0X1.58391FD92C387P-148, -0X4.0C12426A57190P-440]; + expm1 [-0XB.FADC4FB83E140P+348, -0XF.13E388B2165F0P-512] = [-0X1.0000000000000P+0, -0XF.13E388B2165E8P-512]; + //expm1 [-0XD.F2552B8F60978P+236, -0X7.FBDBC320979A4P+188] = [-0X1.0000000000000P+0, -0X1.0000000000000P+0]; + expm1 [-0X8.86826CE1AB700P-240, -0X4.FEA8D3A3ED018P-316] = [-0X8.86826CE1AB700P-240, -0X4.FEA8D3A3ED014P-316]; + expm1 [0X1.0000000000000P+0, 0X2.0000000000000P+0] = [0X1.B7E151628AED2P+0, 0X6.63992E35376B8P+0]; + expm1 [-0X1.0000000000000P+0, +0X2.0000000000000P+0] = [-0XA.1D2A7274C4328P-4, +0X6.63992E35376B8P+0]; + expm1 [-0X5.0000000000000P+0, -0X3.0000000000000P+0] = [-0XF.E466C01FF2AD0P-4, -0XF.341279998A7A8P-4]; + expm1 [-0X2.0000000000000P+0, +0X9.9999999999998P-4] = [-0XD.D5AAAB880FC70P-4, +0XD.27660B11A9EF8P-4]; + expm1 [0X4.0000000000000P-1076, 0X4.4444400000000P-1056] = [0X4.0000000000000P-1076, 0X4.4444800000000P-1056]; + expm1 [0X4.4440000000000P-1064, 0X1.0000000000000P+0] = [0X4.4440000000000P-1064, 0X1.B7E151628AED3P+0]; + expm1 [-0X4.4444000000000P-1060, +0X4.4444000000000P-1060] = [-0X4.4444000000000P-1060, +0X4.4448000000000P-1060]; + expm1 [-0X4.4400000000000P-1068, +0X1.FFF0000000000P+0] = [-0X4.4400000000000P-1068, +0X6.6322F8540CFB4P+0]; + expm1 [-0X1.FFFF000000000P+0, -0X8.8888880000000P-1052] = [-0XD.D5A88131A6240P-4, -0X8.8888840000000P-1052]; + expm1 [-0X1.FFFFFFF000000P+0, +0X8.CD11555400000P-1044] = [-0XD.D5AAAB656A718P-4, +0X8.CD11555800000P-1044]; + logp1 [0XC.4B4A6EB6B3AF0P-264, 0XA.DD2C4C1BE4B30P+92] = [0XC.4B4A6EB6B3AE8P-264, 0X4.227AD8183FB70P+4]; + logp1 [0X2.6213E21B14894P-516, 0X6.6606F0995E5F4P-224] = [0X2.6213E21B14892P-516, 0X6.6606F0995E5F4P-224]; + logp1 [0X9.0FF2CAA1B3048P-240, 0X1.95F14B9BA7449P+236] = [0X9.0FF2CAA1B3040P-240, 0XA.40B346F454218P+4]; + logp1 [0X8.E2ADA8DFBE938P-492, 0X3.67CB3BE0BB146P-452] = [0X8.E2ADA8DFBE930P-492, 0X3.67CB3BE0BB146P-452]; + logp1 [0X1.394270BBCBA7EP+196, 0X8.4976F0BF45A40P+224] = [0X8.80F0717A1DC40P+4, 0X9.D6130F01F8B78P+4]; + logp1 [0X6.A000A12839A50P-44, 0X3.86DC59439415AP+276] = [0X6.A000A1283845CP-44, 0XC.091AAD1207058P+4]; + logp1 [0X1.3C84E4F9C80CEP-476, 0X9.1E9439C3B4358P+196] = [0X1.3C84E4F9C80CDP-476, 0X8.A1137BDE55CF8P+4]; + logp1 [0X8.41D2DB6D93548P-376, 0X2.EDCF4A7919034P+140] = [0X8.41D2DB6D93540P-376, 0X6.21D80D9193AB8P+4]; + logp1 [0X1.2C18FEEBCAEAEP-768, 0X1.C369E759DF5E3P-328] = [0X1.2C18FEEBCAEADP-768, 0X1.C369E759DF5E3P-328]; + logp1 [0X4.D94E91619D3F0P-580, 0X2.9F6CAF6B5513EP-132] = [0X4.D94E91619D3ECP-580, 0X2.9F6CAF6B5513EP-132]; + logp1 [0X2.9CD12C1D0AAC4P+116, 0X3.BF7E0E52DC1AAP+276] = [0X5.15D8B410E0A5CP+4, 0XC.0A13DC536CD58P+4]; + logp1 [0X3.36DE5C55594EEP-100, 0X1.D0460177B1553P+204] = [0X3.36DE5C55594ECP-100, 0X8.DFF506FE0D9F8P+4]; + logp1 [0X4.BD4031736F7A8P+4, 0XF.A10BB3C91C7B0P+592] = [0X4.5771391F308D8P+0, 0X1.9D179EA5204D0P+8]; + logp1 [0X2.8E258DB3C44F8P+20, 0X3.1A4EDE719A4C0P+628] = [0XE.CD14C501247C0P+0, 0X1.B46DC0D02B874P+8]; + logp1 [0X2.33950F38F830EP-176, 0X5.BE0388619B018P-24] = [0X2.33950F38F830CP-176, 0X5.BE0377E504F78P-24]; + logp1 [0X3.24F03DF33568CP-560, 0XE.67255823421E8P+920] = [0X3.24F03DF33568AP-560, 0X2.805CE2DC91036P+8]; + logp1 [0X2.D572639DC5FA8P-468, 0X1.95CF42AA171CDP-160] = [0X2.D572639DC5FA6P-468, 0X1.95CF42AA171CDP-160]; + logp1 [0X4.705A028302DB0P-532, 0X2.E57341C14970CP+324] = [0X4.705A028302DACP-532, 0XE.1A4A3523F2658P+4]; + logp1 [0X4.DBA1D21D6F308P+144, 0X3.667988C57865AP+196] = [0X6.564D09AD1D214P+4, 0X8.914A9531FD118P+4]; + logp1 [0X4.9FA5A1E4DF740P-328, 0X1.11B85141B78F6P-240] = [0X4.9FA5A1E4DF73CP-328, 0X1.11B85141B78F6P-240]; + logp1 [0XA.0CDE9DC015B08P+360, 0XF.99D84F862AC58P+524] = [0XF.BD7308ED73FF0P+4, 0X1.6DF4DA39DC5DDP+8]; + logp1 [0X6.88441038D56B8P-108, 0X3.3D65C09938132P+136] = [0X6.88441038D56B4P-108, 0X5.F718BBF0CE2F8P+4]; + logp1 [0X7.1761CAB055134P-356, 0X1.92EFD09488689P-76] = [0X7.1761CAB055130P-356, 0X1.92EFD09488689P-76]; + logp1 [0X6.2085E427413C8P-252, 0XB.8CDD3B024EA10P-36] = [0X6.2085E427413C4P-252, 0XB.8CDD3AFE235D0P-36]; + logp1 [0XB.F5F1C0FA33978P-504, 0X4.924DD8D50B1CCP+72] = [0XB.F5F1C0FA33970P-504, 0X3.36D2B121508A8P+4]; + logp1 [0XB.BC7E37EB2D388P-216, 0X1.CFE27BB53DEBBP+192] = [0XB.BC7E37EB2D380P-216, 0X8.5ADC069F618A8P+4]; + logp1 [0X1.E139DD116F868P-688, 0XD.2545346D68FD0P-148] = [0X1.E139DD116F867P-688, 0XD.2545346D68FD0P-148]; + logp1 [0X2.E0C8E64A890ACP+192, 0X2.6A898D2CAA9A4P+260] = [0X8.6243148F46208P+4, 0XB.519B6E544F898P+4]; + logp1 [0X5.9C4642ED78BC8P-340, 0X4.631BD2232F0C0P+588] = [0X5.9C4642ED78BC4P-340, 0X1.990C99B6124FEP+8]; + logp1 [0XF.C05EA810DFE88P-180, 0XA.05884FBED5F48P-152] = [0XF.C05EA810DFE80P-180, 0XA.05884FBED5F48P-152]; + sqrt [0XC.4B4A6EB6B3AF0P-264, 0XA.DD2C4C1BE4B30P+92] = [0X3.819C8C44FCAE8P-132, 0XD.2F2830FA93228P+44]; + sqrt [0X2.6213E21B14894P-516, 0X6.6606F0995E5F4P-224] = [0X6.2CC8B5D1B7648P-260, 0X2.878F8E10E2752P-112]; + sqrt [0X9.0FF2CAA1B3048P-240, 0X1.95F14B9BA7449P+236] = [0X3.02A74AB0BBF36P-120, 0X5.0979194446A10P+116]; + sqrt [0X8.E2ADA8DFBE938P-492, 0X3.67CB3BE0BB146P-452] = [0XB.EC63BFE10BCC8P-248, 0X7.61AC89CF17804P-228]; + sqrt [0X1.394270BBCBA7EP+196, 0X8.4976F0BF45A40P+224] = [0X4.6CBEB2D8F6718P+96, 0X2.E0F32319AC30AP+112]; + sqrt [0X6.A000A12839A50P-44, 0X3.86DC59439415AP+276] = [0XA.4BAEE7F482900P-24, 0X7.830C8D5A5F3D8P+136]; + sqrt [0X1.3C84E4F9C80CEP-476, 0X9.1E9439C3B4358P+196] = [0X4.729F7C344CE30P-240, 0XC.14519D6697FF0P+96]; + sqrt [0X8.41D2DB6D93548P-376, 0X2.EDCF4A7919034P+140] = [0X2.DF9F14A64C77AP-188, 0X6.D87D667089BD8P+68]; + sqrt [0X1.2C18FEEBCAEAEP-768, 0X1.C369E759DF5E3P-328] = [0X1.152C585EDDB6AP-384, 0X1.53F1A81CAA4A0P-164]; + sqrt [0X4.D94E91619D3F0P-580, 0X2.9F6CAF6B5513EP-132] = [0X8.CEDC2135E05E8P-292, 0X6.7A5BEF2579C34P-68]; + sqrt [0X2.9CD12C1D0AAC4P+116, 0X3.BF7E0E52DC1AAP+276] = [0X6.7722C88D985D8P+56, 0X7.BE7173245A668P+136]; + sqrt [0X3.36DE5C55594EEP-100, 0X1.D0460177B1553P+204] = [0X7.2BE248A308D24P-52, 0X5.630224B50BCF8P+100]; + sqrt [0X4.BD4031736F7A8P+4, 0XF.A10BB3C91C7B0P+592] = [0X8.B53B61217B4F8P+0, 0X3.F40FA54A699E2P+296]; + sqrt [0X2.8E258DB3C44F8P+20, 0X3.1A4EDE719A4C0P+628] = [0X6.64E1F64817930P+8, 0X7.0BBE006E8934CP+312]; + sqrt [0X2.33950F38F830EP-176, 0X5.BE0388619B018P-24] = [0X1.7BD69462CDAD2P-88, 0X2.6573BFB248EF0P-12]; + sqrt [0X3.24F03DF33568CP-560, 0XE.67255823421E8P+920] = [0X1.C5F168118C2B1P-280, 0X3.CB8CCAD62ED10P+460]; + sqrt [0X2.D572639DC5FA8P-468, 0X1.95CF42AA171CDP-160] = [0X6.BBC8A036CC930P-236, 0X1.4250C275A7B2BP-80]; + sqrt [0X4.705A028302DB0P-532, 0X2.E57341C14970CP+324] = [0X8.6D6D9A3EA2160P-268, 0X6.CEB17F56F1B50P+160]; + sqrt [0X4.DBA1D21D6F308P+144, 0X3.667988C57865AP+196] = [0X2.343E215EB2264P+72, 0X7.603E67F0E1DD0P+96]; + sqrt [0X4.9FA5A1E4DF740P-328, 0X1.11B85141B78F6P-240] = [0X2.26777C4E368BEP-164, 0X1.08B63617A4210P-120]; + sqrt [0XA.0CDE9DC015B08P+360, 0XF.99D84F862AC58P+524] = [0X3.2B934CDCC29E0P+180, 0XF.CC99981010AD0P+260]; + sqrt [0X6.88441038D56B8P-108, 0X3.3D65C09938132P+136] = [0XA.392C9B2283838P-56, 0X1.CCC9C68E6B873P+68]; + sqrt [0X7.1761CAB055134P-356, 0X1.92EFD09488689P-76] = [0XA.A6DE001E1A878P-180, 0X5.04B0B42B185F4P-40]; + sqrt [0X6.2085E427413C8P-252, 0XB.8CDD3B024EA10P-36] = [0X9.E6B17DD90B818P-128, 0XD.9821AE0A3F288P-20]; + sqrt [0XB.F5F1C0FA33978P-504, 0X4.924DD8D50B1CCP+72] = [0X3.755B7F9B147FCP-252, 0X2.235AF64AA2532P+36]; + sqrt [0XB.BC7E37EB2D388P-216, 0X1.CFE27BB53DEBBP+192] = [0X3.6D0318CB65970P-108, 0X1.589B93C7CC280P+96]; + sqrt [0X1.E139DD116F868P-688, 0XD.2545346D68FD0P-148] = [0X1.5EFD65C23F515P-344, 0XE.80B36809CA340P-76]; + sqrt [0X2.E0C8E64A890ACP+192, 0X2.6A898D2CAA9A4P+260] = [0X1.B24CEBB3D4B84P+96, 0X6.37B4CD9068634P+128]; + sqrt [0X5.9C4642ED78BC8P-340, 0X4.631BD2232F0C0P+588] = [0X9.797C4D6802170P-172, 0X8.60D1F01F1A8D8P+292]; + sqrt [0XF.C05EA810DFE88P-180, 0XA.05884FBED5F48P-152] = [0XF.E00F72E6C82F8P-92, 0X3.2A6AD8ACFCBB0P-76]; + sqr [-0XA.644C9D88EA8C8P-152, -0XD.8EC7927926F18P-944] = [0X0.0000000000000P+0, 0X6.BFD4840B33478P-300]; + sqr [-0X1.9EE1A9DB994F5P-436, -0X6.D914701C82FECP-624] = [0X0.0000000000000P+0, 0X2.A05EA84E4893CP-872]; + sqr [-0X5.65057F3EFFC60P+4, -0X2.3617CF5815ECAP-960] = [0X0.0000000000000P+0, 0X1.D1A144EFBEB44P+12]; + sqr [-0X1.975299CCB0E08P-372, +0XB.BEC7D35B45B00P-588] = [0X0.0000000000000P+0, 0X2.8817BFAFBDF18P-744]; + sqr [-0X3.51D388D47AED2P-356, -0X1.C3A9CD7025105P-564] = [0X0.0000000000000P+0, 0XB.051CC05C2EBE0P-712]; + sqr [-0XC.DB363268CF708P-332, -0X2.171B7D7BFE4E0P-412] = [0X4.5E83E96FF693CP-824, 0XA.548CA7F8C13A0P-660]; + sqr [-0X1.32690AAC2472DP-40, -0X8.706EBDCF39C88P-792] = [0X0.0000000000000P+0, 0X1.6EBF489D48CA5P-80]; + sqr [-0X5.0145AF0C53324P-200, -0X2.F5A0CB3301856P-204] = [0X8.C23056BA480A8P-408, 0X1.90CBA74D12CF4P-396]; + sqr [0XF.4077C7E8CD6A0P-268, 0X3.753426098AC5AP-80] = [0XE.89E458947EFA8P-532, 0XB.F4E1999D73020P-160]; + sqr [-0XB.B25F8D8BB7FB8P-376, -0X2.017A332F9B05CP-916] = [0X0.0000000000000P+0, 0X8.8D07F2E827770P-748]; + sqr [-0XD.947CA427FDFE0P-592, +0XE.3BE493B5BC8E8P-16] = [0X0.0000000000000P+0, 0XC.A9B03500DD578P-28]; + sqr [-0X9.C46198B2471F0P-336, -0X1.65ED85DF2D4B7P-576] = [0X0.0000000000000P+0, 0X5.F6582538F0F44P-668]; + sqr [-0X3.2C867C027DB44P-936, +0X6.1883EA827AB6CP-388] = [0X0.0000000000000P+0, 0X2.52887FE100FF0P-772]; + sqr [-0X3.560EF91C47DEAP-492, +0X5.413664DD17ABCP-20] = [0X0.0000000000000P+0, 0X1.B9CBC9B69E7BFP-36]; + sqr [-0X8.36BFCD74A6D68P-304, -0X3.2C20EB130D510P-836] = [0X0.0000000000000P+0, 0X4.377B251ABDCC0P-604]; + sqr [-0X6.BCEC84603958CP-500, -0X1.068B13DA99666P-760] = [0X0.0000000000000P+0, 0X2.D668271745A42P-996]; + sqr [-0X1.2789C2D583BCDP-568, -0X1.F2BD89DAD0665P-780] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + sqr [-0XC.FE4E8D857E3E0P-548, +0X1.580844B9DC45CP-780] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + sqr [-0XC.508D29ACB01B8P-52, +0X1.B1E6B793078DDP-664] = [0X0.0000000000000P+0, 0X9.7A69470135FA8P-100]; + sqr [-0XA.12F7783880A78P-124, -0X3.765DF69EE106EP-548] = [0X0.0000000000000P+0, 0X6.57CBD208B34ACP-244]; + sqr [-0X6.3A58D52FDF844P-896, -0X1.039E2518CF503P-1008] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + sqr [-0XB.DD3171FDEEC18P-168, +0X1.069E434EE9E0FP-740] = [0X0.0000000000000P+0, 0X8.CC15E342FC8D8P-332]; + sqr [-0X3.CF0053257533AP-776, -0X1.7883A587654E5P-928] = [0X0.0000000000000P+0, 0X4.0000000000000P-1076]; + sqr [0X1.455801D3D2B63P-704, 0X3.A4C915783D07AP-28] = [0X0.0000000000000P+0, 0XD.46C8C24634FC8P-56]; + sqr [-0X2.097D06F4DE3E2P-376, +0X2.2E7561FD9255EP-772] = [0X0.0000000000000P+0, 0X4.264E23607BEA8P-752]; + sqr [-0X1.7E13DBB66E5A3P-84, -0X6.BC8F45D6A8F48P-540] = [0X0.0000000000000P+0, 0X2.3A3F453ECAFB4P-168]; + sqr [-0X4.1F50C5F2CDA54P-276, -0X3.DF16F79756422P-496] = [0XE.FCF2D2F52B4C0P-992, 0X1.0FE5AD9038BC9P-548]; + sqr [-0X7.ECC4C5EEC4CACP-328, -0X2.E02E1DB7A08F6P-876] = [0X0.0000000000000P+0, 0X3.ECDBE373EAC94P-652]; + sqr [-0XC.1BC7A4C89D440P-256, +0X2.A7F56252D1D34P-608] = [0X0.0000000000000P+0, 0X9.29DBB2B42A988P-508]; + sqr [-0XB.CE50D7B2F2868P-236, -0XE.6B08988339B80P-432] = [0XC.FE1B0DE21E568P-860, 0X8.B6138BE0C5B78P-468]; +} diff --git a/test/itl/ieee1788-constructors.itl b/test/itl/ieee1788-constructors.itl new file mode 100644 index 000000000..f98f2cad3 --- /dev/null +++ b/test/itl/ieee1788-constructors.itl @@ -0,0 +1,85 @@ +/* + +Test cases for interval constructors from IEEE Std 1788-2015 + +Copyright 2016 Oliver Heimlich (oheim@posteo.de) + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. + +*/ + + +// According to the examples in Section 7.4.2, unbounded intervals can be constructed with non-common inputs. +testcase IEEE1788.a { + b-numsToInterval -infinity infinity = [entire]; +} + +// Examples from Sections 9.7.1 and 9.8 +testcase IEEE1788.b { + b-textToInterval "[1.2345]" = [0X1.3C083126E978DP+0, 0X1.3C083126E978EP+0]; + b-textToInterval "[1,+infinity]" = [1.0, infinity]; + d-textToInterval "[1,1e3]_com" = [1.0, 1000.0]_com; + d-textToInterval "[1,1E3]_COM" = [1.0, 1000.0]_com; +} + +// Examples from Table 9.4 +testcase IEEE1788.c { + b-textToInterval "[1.e-3, 1.1e-3]" = [0X4.189374BC6A7ECP-12, 0X4.816F0068DB8BCP-12]; + b-textToInterval "[-0x1.3p-1, 2/3]" = [-0X9.8000000000000P-4, +0XA.AAAAAAAAAAAB0P-4]; + b-textToInterval "[3.56]" = [0X3.8F5C28F5C28F4P+0, 0X3.8F5C28F5C28F6P+0]; + b-textToInterval "3.56?1" = [0X3.8CCCCCCCCCCCCP+0, 0X3.91EB851EB8520P+0]; + b-textToInterval "3.56?1e2" = [355.0, 357.0]; + b-textToInterval "3.560?2" = [0X3.8ED916872B020P+0, 0X3.8FDF3B645A1CCP+0]; + b-textToInterval "3.56?" = [0X3.8E147AE147AE0P+0, 0X3.90A3D70A3D70CP+0]; + b-textToInterval "3.560?2u" = [0X3.8F5C28F5C28F4P+0, 0X3.8FDF3B645A1CCP+0]; + b-textToInterval "-10?" = [-10.5, -9.5]; + b-textToInterval "-10?u" = [-10.0, -9.5]; + b-textToInterval "-10?12" = [-22.0, 2.0]; +} + +// Examples from Section 10.5.1 +testcase IEEE1788.d { + b-textToInterval "[1.234e5,Inf]" = [123400.0, infinity]; + b-textToInterval "3.1416?1" = [0X3.24395810624DCP+0, 0X3.24467381D7DC0P+0]; + b-textToInterval "[Empty]" = [empty]; +} + +// Example from Section 11.3 +testcase IEEE1788.e { + d-numsToInterval 2 1 = [nai] signal UndefinedOperation; +} + +// Examples from Table 12.1 +testcase IEEE1788.e { + d-textToInterval "[ ]" = [empty]_trv; + d-textToInterval "[entire]" = [-infinity, +infinity]_dac; + d-textToInterval "[1.e-3, 1.1e-3]" = [0X4.189374BC6A7ECP-12, 0X4.816F0068DB8BCP-12]_com; + d-textToInterval "[-Inf, 2/3]" = [-infinity, +0XA.AAAAAAAAAAAB0P-4]_dac; + d-textToInterval "[0x1.3p-1,]" = [0x1.3p-1, infinity]_dac; + d-textToInterval "[,]" = [entire]_dac; + d-textToInterval "3.56?1" = [0X3.8CCCCCCCCCCCCP+0, 0X3.91EB851EB8520P+0]_com; + d-textToInterval "3.56?1e2" = [355.0, 357.0]_com; + d-textToInterval "3.560?2" = [0X3.8ED916872B020P+0, 0X3.8FDF3B645A1CCP+0]_com; + d-textToInterval "3.56?" = [0X3.8E147AE147AE0P+0, 0X3.90A3D70A3D70CP+0]_com; + d-textToInterval "3.560?2u" = [0X3.8F5C28F5C28F4P+0, 0X3.8FDF3B645A1CCP+0]_com; + d-textToInterval "-10?" = [-10.5, -9.5]_com; + d-textToInterval "-10?u" = [-10.0, -9.5]_com; + d-textToInterval "-10?12" = [-22.0, 2.0]_com; + d-textToInterval "-10??u" = [-10.0, infinity]_dac; + d-textToInterval "-10??" = [-infinity, infinity]_dac; + d-textToInterval "[nai]" = [nai]; + d-textToInterval "3.56?1_def" = [0X3.8CCCCCCCCCCCCP+0, 0X3.91EB851EB8520P+0]_def; +} + +// Examples from Section 12.11.3 +testcase IEEE1788.f { + b-textToInterval "[]" = [empty]; + b-textToInterval "[empty]" = [empty]; + b-textToInterval "[ empty ]" = [empty]; + b-textToInterval "[,]" = [entire]; + b-textToInterval "[ entire ]" = [entire]; +} + diff --git a/test/itl/ieee1788-exceptions.itl b/test/itl/ieee1788-exceptions.itl new file mode 100644 index 000000000..1f2913829 --- /dev/null +++ b/test/itl/ieee1788-exceptions.itl @@ -0,0 +1,19 @@ +/* + +Test cases for interval exceptions from IEEE Std 1788-2015 + +Copyright 2016 Oliver Heimlich (oheim@posteo.de) + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without any warranty. + +*/ + +testcase exceptions { + b-textToInterval "[+infinity]" = [empty] signal UndefinedOperation; + b-numsToInterval +infinity -infinity = [empty] signal UndefinedOperation; + intervalPart [nai] = [empty] signal IntvlPartOfNaI; + b-textToInterval "[1.0000000000000001, 1.0000000000000002]" = [1.0, 0x1.0000000000001p+0] signal PossiblyUndefinedOperation; +} diff --git a/test/itl/libieeep1788_bool.itl b/test/itl/libieeep1788_bool.itl new file mode 100644 index 000000000..c58fce7b8 --- /dev/null +++ b/test/itl/libieeep1788_bool.itl @@ -0,0 +1,531 @@ +/* + +Unit tests from libieeep1788 for interval boolean operations +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_is_empty_test { + isEmpty [empty] = true; + isEmpty [-infinity,+infinity] = false; + isEmpty [1.0,2.0] = false; + isEmpty [-1.0,2.0] = false; + isEmpty [-3.0,-2.0] = false; + isEmpty [-infinity,2.0] = false; + isEmpty [-infinity,0.0] = false; + isEmpty [-infinity,-0.0] = false; + isEmpty [0.0,infinity] = false; + isEmpty [-0.0,infinity] = false; + isEmpty [-0.0,0.0] = false; + isEmpty [0.0,-0.0] = false; + isEmpty [0.0,0.0] = false; + isEmpty [-0.0,-0.0] = false; +} + +testcase minimal_is_empty_dec_test { + isEmpty [nai] = false; + isEmpty [empty]_trv = true; + isEmpty [-infinity,+infinity]_def = false; + isEmpty [1.0,2.0]_com = false; + isEmpty [-1.0,2.0]_trv = false; + isEmpty [-3.0,-2.0]_dac = false; + isEmpty [-infinity,2.0]_trv = false; + isEmpty [-infinity,0.0]_trv = false; + isEmpty [-infinity,-0.0]_trv = false; + isEmpty [0.0,infinity]_def = false; + isEmpty [-0.0,infinity]_trv = false; + isEmpty [-0.0,0.0]_com = false; + isEmpty [0.0,-0.0]_trv = false; + isEmpty [0.0,0.0]_trv = false; + isEmpty [-0.0,-0.0]_trv = false; +} + +testcase minimal_is_entire_test { + isEntire [empty] = false; + isEntire [-infinity,+infinity] = true; + isEntire [1.0,2.0] = false; + isEntire [-1.0,2.0] = false; + isEntire [-3.0,-2.0] = false; + isEntire [-infinity,2.0] = false; + isEntire [-infinity,0.0] = false; + isEntire [-infinity,-0.0] = false; + isEntire [0.0,infinity] = false; + isEntire [-0.0,infinity] = false; + isEntire [-0.0,0.0] = false; + isEntire [0.0,-0.0] = false; + isEntire [0.0,0.0] = false; + isEntire [-0.0,-0.0] = false; +} + +testcase minimal_is_entire_dec_test { + isEntire [nai] = false; + isEntire [empty]_trv = false; + isEntire [-infinity,+infinity]_trv = true; + isEntire [-infinity,+infinity]_def = true; + isEntire [-infinity,+infinity]_dac = true; + isEntire [1.0,2.0]_com = false; + isEntire [-1.0,2.0]_trv = false; + isEntire [-3.0,-2.0]_dac = false; + isEntire [-infinity,2.0]_trv = false; + isEntire [-infinity,0.0]_trv = false; + isEntire [-infinity,-0.0]_trv = false; + isEntire [0.0,infinity]_def = false; + isEntire [-0.0,infinity]_trv = false; + isEntire [-0.0,0.0]_com = false; + isEntire [0.0,-0.0]_trv = false; + isEntire [0.0,0.0]_trv = false; + isEntire [-0.0,-0.0]_trv = false; +} + +testcase minimal_is_nai_dec_test { + isNaI [nai] = true; + isNaI [-infinity,+infinity]_trv = false; + isNaI [-infinity,+infinity]_def = false; + isNaI [-infinity,+infinity]_dac = false; + isNaI [1.0,2.0]_com = false; + isNaI [-1.0,2.0]_trv = false; + isNaI [-3.0,-2.0]_dac = false; + isNaI [-infinity,2.0]_trv = false; + isNaI [-infinity,0.0]_trv = false; + isNaI [-infinity,-0.0]_trv = false; + isNaI [0.0,infinity]_def = false; + isNaI [-0.0,infinity]_trv = false; + isNaI [-0.0,0.0]_com = false; + isNaI [0.0,-0.0]_trv = false; + isNaI [0.0,0.0]_trv = false; + isNaI [-0.0,-0.0]_trv = false; +} + +testcase minimal_equal_test { + equal [1.0,2.0] [1.0,2.0] = true; + equal [1.0,2.1] [1.0,2.0] = false; + equal [empty] [empty] = true; + equal [empty] [1.0,2.0] = false; + equal [-infinity,+infinity] [-infinity,+infinity] = true; + equal [1.0,2.4] [-infinity,+infinity] = false; + equal [1.0,infinity] [1.0,infinity] = true; + equal [1.0,2.4] [1.0,infinity] = false; + equal [-infinity,2.0] [-infinity,2.0] = true; + equal [-infinity,2.4] [-infinity,2.0] = false; + equal [-2.0,0.0] [-2.0,0.0] = true; + equal [-0.0,2.0] [0.0,2.0] = true; + equal [-0.0,-0.0] [0.0,0.0] = true; + equal [-0.0,0.0] [0.0,0.0] = true; + equal [0.0,-0.0] [0.0,0.0] = true; +} + +testcase minimal_equal_dec_test { + equal [1.0,2.0]_def [1.0,2.0]_trv = true; + equal [1.0,2.1]_trv [1.0,2.0]_trv = false; + equal [empty]_trv [empty]_trv = true; + equal [empty]_trv [nai] = false; + equal [nai] [empty]_trv = false; + equal [nai] [nai] = false; + equal [empty]_trv [1.0,2.0]_trv = false; + equal [nai] [1.0,2.0]_trv = false; + equal [-infinity,+infinity]_def [-infinity,+infinity]_trv = true; + equal [1.0,2.4]_trv [-infinity,+infinity]_trv = false; + equal [1.0,infinity]_trv [1.0,infinity]_trv = true; + equal [1.0,2.4]_def [1.0,infinity]_trv = false; + equal [-infinity,2.0]_trv [-infinity,2.0]_trv = true; + equal [-infinity,2.4]_def [-infinity,2.0]_trv = false; + equal [-2.0,0.0]_trv [-2.0,0.0]_trv = true; + equal [-0.0,2.0]_def [0.0,2.0]_trv = true; + equal [-0.0,-0.0]_trv [0.0,0.0]_trv = true; + equal [-0.0,0.0]_def [0.0,0.0]_trv = true; + equal [0.0,-0.0]_trv [0.0,0.0]_trv = true; +} + +testcase minimal_subset_test { + subset [empty] [empty] = true; + subset [empty] [0.0,4.0] = true; + subset [empty] [-0.0,4.0] = true; + subset [empty] [-0.1,1.0] = true; + subset [empty] [-0.1,0.0] = true; + subset [empty] [-0.1,-0.0] = true; + subset [empty] [-infinity,+infinity] = true; + + subset [0.0,4.0] [empty] = false; + subset [-0.0,4.0] [empty] = false; + subset [-0.1,1.0] [empty] = false; + subset [-infinity,+infinity] [empty] = false; + + subset [0.0,4.0] [-infinity,+infinity] = true; + subset [-0.0,4.0] [-infinity,+infinity] = true; + subset [-0.1,1.0] [-infinity,+infinity] = true; + subset [-infinity,+infinity] [-infinity,+infinity] = true; + + subset [1.0,2.0] [1.0,2.0] = true; + subset [1.0,2.0] [0.0,4.0] = true; + subset [1.0,2.0] [-0.0,4.0] = true; + subset [0.1,0.2] [0.0,4.0] = true; + subset [0.1,0.2] [-0.0,4.0] = true; + subset [-0.1,-0.1] [-4.0, 3.4] = true; + + subset [0.0,0.0] [-0.0,-0.0] = true; + subset [-0.0,-0.0] [0.0,0.0] = true; + subset [-0.0,0.0] [0.0,0.0] = true; + subset [-0.0,0.0] [0.0,-0.0] = true; + subset [0.0,-0.0] [0.0,0.0] = true; + subset [0.0,-0.0] [-0.0,0.0] = true; +} + +testcase minimal_subset_dec_test { + subset [nai] [nai] = false; + subset [nai] [empty]_trv = false; + subset [nai] [0.0,4.0]_trv = false; + + subset [empty]_trv [0.0,4.0]_trv = true; + subset [empty]_trv [-0.0,4.0]_def = true; + subset [empty]_trv [-0.1,1.0]_trv = true; + subset [empty]_trv [-0.1,0.0]_trv = true; + subset [empty]_trv [-0.1,-0.0]_trv = true; + subset [empty]_trv [-infinity,+infinity]_trv = true; + + subset [0.0,4.0]_trv [empty]_trv = false; + subset [-0.0,4.0]_def [empty]_trv = false; + subset [-0.1,1.0]_trv [empty]_trv = false; + subset [-infinity,+infinity]_trv [empty]_trv = false; + + subset [0.0,4.0]_trv [-infinity,+infinity]_trv = true; + subset [-0.0,4.0]_trv [-infinity,+infinity]_trv = true; + subset [-0.1,1.0]_trv [-infinity,+infinity]_trv = true; + subset [-infinity,+infinity]_trv [-infinity,+infinity]_trv = true; + + subset [1.0,2.0]_trv [1.0,2.0]_trv = true; + subset [1.0,2.0]_trv [0.0,4.0]_trv = true; + subset [1.0,2.0]_def [-0.0,4.0]_def = true; + subset [0.1,0.2]_trv [0.0,4.0]_trv = true; + subset [0.1,0.2]_trv [-0.0,4.0]_def = true; + subset [-0.1,-0.1]_trv [-4.0, 3.4]_trv = true; + + subset [0.0,0.0]_trv [-0.0,-0.0]_trv = true; + subset [-0.0,-0.0]_trv [0.0,0.0]_def = true; + subset [-0.0,0.0]_trv [0.0,0.0]_trv = true; + subset [-0.0,0.0]_trv [0.0,-0.0]_trv = true; + subset [0.0,-0.0]_def [0.0,0.0]_trv = true; + subset [0.0,-0.0]_trv [-0.0,0.0]_trv = true; +} + +testcase minimal_less_test { + less [empty] [empty] = true; + less [1.0,2.0] [empty] = false; + less [empty] [1.0,2.0] = false; + + less [-infinity,+infinity] [-infinity,+infinity] = true; + less [1.0,2.0] [-infinity,+infinity] = false; + less [0.0,2.0] [-infinity,+infinity] = false; + less [-0.0,2.0] [-infinity,+infinity] = false; + less [-infinity,+infinity] [1.0,2.0] = false; + less [-infinity,+infinity] [0.0,2.0] = false; + less [-infinity,+infinity] [-0.0,2.0] = false; + + less [0.0,2.0] [0.0,2.0] = true; + less [0.0,2.0] [-0.0,2.0] = true; + less [0.0,2.0] [1.0,2.0] = true; + less [-0.0,2.0] [1.0,2.0] = true; + less [1.0,2.0] [1.0,2.0] = true; + less [1.0,2.0] [3.0,4.0] = true; + less [1.0,3.5] [3.0,4.0] = true; + less [1.0,4.0] [3.0,4.0] = true; + + less [-2.0,-1.0] [-2.0,-1.0] = true; + less [-3.0,-1.5] [-2.0,-1.0] = true; + + less [0.0,0.0] [-0.0,-0.0] = true; + less [-0.0,-0.0] [0.0,0.0] = true; + less [-0.0,0.0] [0.0,0.0] = true; + less [-0.0,0.0] [0.0,-0.0] = true; + less [0.0,-0.0] [0.0,0.0] = true; + less [0.0,-0.0] [-0.0,0.0] = true; +} + +testcase minimal_less_dec_test { + less [nai] [nai] = false; + less [empty]_trv [nai] = false; + less [1.0,2.0]_trv [nai] = false; + less [nai] [1.0,2.0]_def = false; + + less [empty]_trv [empty]_trv = true; + less [1.0,2.0]_trv [empty]_trv = false; + less [empty]_trv [1.0,2.0]_trv = false; + + less [-infinity,+infinity]_trv [-infinity,+infinity]_trv = true; + less [1.0,2.0]_def [-infinity,+infinity]_trv = false; + less [0.0,2.0]_trv [-infinity,+infinity]_trv = false; + less [-0.0,2.0]_trv [-infinity,+infinity]_trv = false; + less [-infinity,+infinity]_trv [1.0,2.0]_trv = false; + less [-infinity,+infinity]_trv [0.0,2.0]_def = false; + less [-infinity,+infinity]_trv [-0.0,2.0]_trv = false; + + less [0.0,2.0]_trv [0.0,2.0]_trv = true; + less [0.0,2.0]_trv [-0.0,2.0]_trv = true; + less [0.0,2.0]_def [1.0,2.0]_def = true; + less [-0.0,2.0]_trv [1.0,2.0]_trv = true; + less [1.0,2.0]_trv [1.0,2.0]_trv = true; + less [1.0,2.0]_trv [3.0,4.0]_def = true; + less [1.0,3.5]_trv [3.0,4.0]_trv = true; + less [1.0,4.0]_trv [3.0,4.0]_trv = true; + + less [-2.0,-1.0]_trv [-2.0,-1.0]_trv = true; + less [-3.0,-1.5]_trv [-2.0,-1.0]_trv = true; + + less [0.0,0.0]_trv [-0.0,-0.0]_trv = true; + less [-0.0,-0.0]_trv [0.0,0.0]_def = true; + less [-0.0,0.0]_trv [0.0,0.0]_trv = true; + less [-0.0,0.0]_trv [0.0,-0.0]_trv = true; + less [0.0,-0.0]_def [0.0,0.0]_trv = true; + less [0.0,-0.0]_trv [-0.0,0.0]_trv = true; +} + +testcase minimal_precedes_test { + precedes [empty] [3.0,4.0] = true; + precedes [3.0,4.0] [empty] = true; + precedes [empty] [empty] = true; + + precedes [1.0,2.0] [-infinity,+infinity] = false; + precedes [0.0,2.0] [-infinity,+infinity] = false; + precedes [-0.0,2.0] [-infinity,+infinity] = false; + precedes [-infinity,+infinity] [1.0,2.0] = false; + precedes [-infinity,+infinity] [-infinity,+infinity] = false; + + precedes [1.0,2.0] [3.0,4.0] = true; + precedes [1.0,3.0] [3.0,4.0] = true; + precedes [-3.0, -1.0] [-1.0,0.0] = true; + precedes [-3.0, -1.0] [-1.0,-0.0] = true; + + precedes [1.0,3.5] [3.0,4.0] = false; + precedes [1.0,4.0] [3.0,4.0] = false; + precedes [-3.0, -0.1] [-1.0,0.0] = false; + + precedes [0.0,0.0] [-0.0,-0.0] = true; + precedes [-0.0,-0.0] [0.0,0.0] = true; + precedes [-0.0,0.0] [0.0,0.0] = true; + precedes [-0.0,0.0] [0.0,-0.0] = true; + precedes [0.0,-0.0] [0.0,0.0] = true; + precedes [0.0,-0.0] [-0.0,0.0] = true; +} + +testcase minimal_precedes_dec_test { + precedes [nai] [3.0,4.0]_def = false; + precedes [3.0,4.0]_trv [nai] = false; + precedes [nai] [empty]_trv = false; + precedes [nai] [nai] = false; + + precedes [empty]_trv [3.0,4.0]_def = true; + precedes [3.0,4.0]_trv [empty]_trv = true; + precedes [empty]_trv [empty]_trv = true; + + precedes [1.0,2.0]_trv [-infinity,+infinity]_trv = false; + precedes [0.0,2.0]_trv [-infinity,+infinity]_trv = false; + precedes [-0.0,2.0]_trv [-infinity,+infinity]_trv = false; + precedes [-infinity,+infinity]_trv [1.0,2.0]_trv = false; + precedes [-infinity,+infinity]_trv [-infinity,+infinity]_trv = false; + + precedes [1.0,2.0]_trv [3.0,4.0]_trv = true; + precedes [1.0,3.0]_trv [3.0,4.0]_def = true; + precedes [-3.0, -1.0]_def [-1.0,0.0]_trv = true; + precedes [-3.0, -1.0]_trv [-1.0,-0.0]_trv = true; + + precedes [1.0,3.5]_trv [3.0,4.0]_trv = false; + precedes [1.0,4.0]_trv [3.0,4.0]_trv = false; + precedes [-3.0, -0.1]_trv [-1.0,0.0]_trv = false; + + precedes [0.0,0.0]_trv [-0.0,-0.0]_trv = true; + precedes [-0.0,-0.0]_trv [0.0,0.0]_def = true; + precedes [-0.0,0.0]_trv [0.0,0.0]_trv = true; + precedes [-0.0,0.0]_def [0.0,-0.0]_trv = true; + precedes [0.0,-0.0]_trv [0.0,0.0]_trv = true; + precedes [0.0,-0.0]_trv [-0.0,0.0]_trv = true; +} + +testcase minimal_interior_test { + interior [empty] [empty] = true; + interior [empty] [0.0,4.0] = true; + interior [0.0,4.0] [empty] = false; + + interior [-infinity,+infinity] [-infinity,+infinity] = true; + interior [0.0,4.0] [-infinity,+infinity] = true; + interior [empty] [-infinity,+infinity] = true; + interior [-infinity,+infinity] [0.0,4.0] = false; + + interior [0.0,4.0] [0.0,4.0] = false; + interior [1.0,2.0] [0.0,4.0] = true; + interior [-2.0,2.0] [-2.0,4.0] = false; + interior [-0.0,-0.0] [-2.0,4.0] = true; + interior [0.0,0.0] [-2.0,4.0] = true; + interior [0.0,0.0] [-0.0,-0.0] = false; + + interior [0.0,4.4] [0.0,4.0] = false; + interior [-1.0,-1.0] [0.0,4.0] = false; + interior [2.0,2.0] [-2.0,-1.0] = false; +} + +testcase minimal_interior_dec_test { + interior [nai] [nai] = false; + interior [nai] [empty]_trv = false; + interior [nai] [0.0,4.0]_trv = false; + interior [0.0,4.0]_def [nai] = false; + + interior [empty]_trv [empty]_trv = true; + interior [empty]_trv [0.0,4.0]_trv = true; + interior [0.0,4.0]_def [empty]_trv = false; + + interior [-infinity,+infinity]_trv [-infinity,+infinity]_trv = true; + interior [0.0,4.0]_trv [-infinity,+infinity]_trv = true; + interior [empty]_trv [-infinity,+infinity]_trv = true; + interior [-infinity,+infinity]_trv [0.0,4.0]_trv = false; + + interior [0.0,4.0]_trv [0.0,4.0]_trv = false; + interior [1.0,2.0]_def [0.0,4.0]_trv = true; + interior [-2.0,2.0]_trv [-2.0,4.0]_def = false; + interior [-0.0,-0.0]_trv [-2.0,4.0]_trv = true; + interior [0.0,0.0]_def [-2.0,4.0]_trv = true; + interior [0.0,0.0]_trv [-0.0,-0.0]_trv = false; + + interior [0.0,4.4]_trv [0.0,4.0]_trv = false; + interior [-1.0,-1.0]_trv [0.0,4.0]_def = false; + interior [2.0,2.0]_def [-2.0,-1.0]_trv = false; +} + +testcase minimal_strictly_less_test { + strictLess [empty] [empty] = true; + strictLess [1.0,2.0] [empty] = false; + strictLess [empty] [1.0,2.0] = false; + + strictLess [-infinity,+infinity] [-infinity,+infinity] = true; + strictLess [1.0,2.0] [-infinity,+infinity] = false; + strictLess [-infinity,+infinity] [1.0,2.0] = false; + + strictLess [1.0,2.0] [1.0,2.0] = false; + strictLess [1.0,2.0] [3.0,4.0] = true; + strictLess [1.0,3.5] [3.0,4.0] = true; + strictLess [1.0,4.0] [3.0,4.0] = false; + strictLess [0.0,4.0] [0.0,4.0] = false; + strictLess [-0.0,4.0] [0.0,4.0] = false; + + strictLess [-2.0,-1.0] [-2.0,-1.0] = false; + strictLess [-3.0,-1.5] [-2.0,-1.0] = true; +} + +testcase minimal_strictly_less_dec_test { + strictLess [nai] [nai] = false; + strictLess [empty]_trv [nai] = false; + strictLess [1.0,2.0]_trv [nai] = false; + strictLess [nai] [1.0,2.0]_def = false; + + strictLess [empty]_trv [empty]_trv = true; + strictLess [1.0,2.0]_trv [empty]_trv = false; + strictLess [empty]_trv [1.0,2.0]_def = false; + + strictLess [-infinity,+infinity]_trv [-infinity,+infinity]_trv = true; + strictLess [1.0,2.0]_trv [-infinity,+infinity]_trv = false; + strictLess [-infinity,+infinity]_trv [1.0,2.0]_trv = false; + + strictLess [1.0,2.0]_trv [1.0,2.0]_trv = false; + strictLess [1.0,2.0]_trv [3.0,4.0]_trv = true; + strictLess [1.0,3.5]_def [3.0,4.0]_trv = true; + strictLess [1.0,4.0]_trv [3.0,4.0]_def = false; + strictLess [0.0,4.0]_trv [0.0,4.0]_def = false; + strictLess [-0.0,4.0]_def [0.0,4.0]_trv = false; + + strictLess [-2.0,-1.0]_def [-2.0,-1.0]_def = false; + strictLess [-3.0,-1.5]_trv [-2.0,-1.0]_trv = true; +} + +testcase minimal_strictly_precedes_test { + strictPrecedes [empty] [3.0,4.0] = true; + strictPrecedes [3.0,4.0] [empty] = true; + strictPrecedes [empty] [empty] = true; + + + strictPrecedes [1.0,2.0] [-infinity,+infinity] = false; + strictPrecedes [-infinity,+infinity] [1.0,2.0] = false; + strictPrecedes [-infinity,+infinity] [-infinity,+infinity] = false; + + strictPrecedes [1.0,2.0] [3.0,4.0] = true; + strictPrecedes [1.0,3.0] [3.0,4.0] = false; + strictPrecedes [-3.0,-1.0] [-1.0,0.0] = false; + strictPrecedes [-3.0,-0.0] [0.0,1.0] = false; + strictPrecedes [-3.0,0.0] [-0.0,1.0] = false; + + strictPrecedes [1.0,3.5] [3.0,4.0] = false; + strictPrecedes [1.0,4.0] [3.0,4.0] = false; + strictPrecedes [-3.0,-0.1] [-1.0,0.0] = false; +} + +testcase minimal_strictly_precedes_dec_test { + strictPrecedes [nai] [3.0,4.0]_trv = false; + strictPrecedes [3.0,4.0]_def [nai] = false; + strictPrecedes [nai] [empty]_trv = false; + strictPrecedes [nai] [nai] = false; + + strictPrecedes [empty]_trv [3.0,4.0]_trv = true; + strictPrecedes [3.0,4.0]_def [empty]_trv = true; + strictPrecedes [empty]_trv [empty]_trv = true; + + strictPrecedes [1.0,2.0]_trv [-infinity,+infinity]_trv = false; + strictPrecedes [-infinity,+infinity]_trv [1.0,2.0]_trv = false; + strictPrecedes [-infinity,+infinity]_trv [-infinity,+infinity]_trv = false; + + strictPrecedes [1.0,2.0]_trv [3.0,4.0]_trv = true; + strictPrecedes [1.0,3.0]_def [3.0,4.0]_trv = false; + strictPrecedes [-3.0,-1.0]_trv [-1.0,0.0]_def = false; + strictPrecedes [-3.0,-0.0]_def [0.0,1.0]_trv = false; + strictPrecedes [-3.0,0.0]_trv [-0.0,1.0]_trv = false; + + strictPrecedes [1.0,3.5]_trv [3.0,4.0]_trv = false; + strictPrecedes [1.0,4.0]_trv [3.0,4.0]_def = false; + strictPrecedes [-3.0,-0.1]_trv [-1.0,0.0]_trv = false; +} + +testcase minimal_disjoint_test { + disjoint [empty] [3.0,4.0] = true; + disjoint [3.0,4.0] [empty] = true; + disjoint [empty] [empty] = true; + + disjoint [3.0,4.0] [1.0,2.0] = true; + + disjoint [0.0,0.0] [-0.0,-0.0] = false; + disjoint [0.0,-0.0] [-0.0,0.0] = false; + disjoint [3.0,4.0] [1.0,7.0] = false; + disjoint [3.0,4.0] [-infinity,+infinity] = false; + disjoint [-infinity,+infinity] [1.0,7.0] = false; + disjoint [-infinity,+infinity] [-infinity,+infinity] = false; +} + +testcase minimal_disjoint_dec_test { + disjoint [nai] [3.0,4.0]_def = false; + disjoint [3.0,4.0]_trv [nai] = false; + disjoint [empty]_trv [nai] = false; + disjoint [nai] [nai] = false; + + disjoint [empty]_trv [3.0,4.0]_def = true; + disjoint [3.0,4.0]_trv [empty]_trv = true; + disjoint [empty]_trv [empty]_trv = true; + + disjoint [3.0,4.0]_trv [1.0,2.0]_def = true; + + disjoint [0.0,0.0]_trv [-0.0,-0.0]_trv = false; + disjoint [0.0,-0.0]_trv [-0.0,0.0]_trv = false; + disjoint [3.0,4.0]_def [1.0,7.0]_def = false; + disjoint [3.0,4.0]_trv [-infinity,+infinity]_trv = false; + disjoint [-infinity,+infinity]_trv [1.0,7.0]_trv = false; + disjoint [-infinity,+infinity]_trv [-infinity,+infinity]_trv = false; +} diff --git a/test/itl/libieeep1788_cancel.itl b/test/itl/libieeep1788_cancel.itl new file mode 100644 index 000000000..e35329ad6 --- /dev/null +++ b/test/itl/libieeep1788_cancel.itl @@ -0,0 +1,312 @@ +/* + +Unit tests from libieeep1788 for cancellative addition and subtraction +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_cancel_plus_test { + cancelPlus [-infinity, -1.0] [empty] = [entire]; + cancelPlus [-1.0, infinity] [empty] = [entire]; + cancelPlus [entire] [empty] = [entire]; + cancelPlus [-infinity, -1.0] [-5.0,1.0] = [entire]; + cancelPlus [-1.0, infinity] [-5.0,1.0] = [entire]; + cancelPlus [entire] [-5.0,1.0] = [entire]; + cancelPlus [-infinity, -1.0] [entire] = [entire]; + cancelPlus [-1.0, infinity] [entire] = [entire]; + cancelPlus [empty] [1.0, infinity] = [entire]; + cancelPlus [empty] [-infinity,1.0] = [entire]; + cancelPlus [empty] [entire] = [entire]; + cancelPlus [-1.0,5.0] [1.0,infinity] = [entire]; + cancelPlus [-1.0,5.0] [-infinity,1.0] = [entire]; + cancelPlus [-1.0,5.0] [entire] = [entire]; + cancelPlus [entire] [1.0,infinity] = [entire]; + cancelPlus [entire] [-infinity,1.0] = [entire]; + cancelPlus [entire] [entire] = [entire]; + + cancelPlus [-5.0, -1.0] [1.0,5.1] = [entire]; + cancelPlus [-5.0, -1.0] [0.9,5.0] = [entire]; + cancelPlus [-5.0, -1.0] [0.9,5.1] = [entire]; + cancelPlus [-10.0, 5.0] [-5.0,10.1] = [entire]; + cancelPlus [-10.0, 5.0] [-5.1,10.0] = [entire]; + cancelPlus [-10.0, 5.0] [-5.1,10.1] = [entire]; + cancelPlus [1.0, 5.0] [-5.0,-0.9] = [entire]; + cancelPlus [1.0, 5.0] [-5.1,-1.0] = [entire]; + cancelPlus [1.0, 5.0] [-5.1,-0.9] = [entire]; + + cancelPlus [-10.0, -1.0] [empty] = [entire]; + cancelPlus [-10.0, 5.0] [empty] = [entire]; + cancelPlus [1.0, 5.0] [empty] = [entire]; + + + cancelPlus [empty] [empty] = [empty]; + cancelPlus [empty] [1.0,10.0] = [empty]; + cancelPlus [empty] [-5.0,10.0] = [empty]; + cancelPlus [empty] [-5.0,-1.0] = [empty]; + + cancelPlus [-5.1,-0.0] [0.0,5.0] = [-0X1.999999999998P-4,0.0]; + cancelPlus [-5.1,-1.0] [1.0,5.0] = [-0X1.999999999998P-4,0.0]; + cancelPlus [-5.0,-0.9] [1.0,5.0] = [0.0, 0X1.9999999999998P-4]; + cancelPlus [-5.1,-0.9] [1.0,5.0] = [-0X1.999999999998P-4,0X1.9999999999998P-4]; + cancelPlus [-5.0,-1.0] [1.0,5.0] = [0.0,0.0]; + cancelPlus [-10.1, 5.0] [-5.0,10.0] = [-0X1.999999999998P-4,0.0]; + cancelPlus [-10.0, 5.1] [-5.0,10.0] = [0.0,0X1.999999999998P-4]; + cancelPlus [-10.1, 5.1] [-5.0,10.0] = [-0X1.999999999998P-4,0X1.999999999998P-4]; + cancelPlus [-10.0, 5.0] [-5.0,10.0] = [0.0,0.0]; + cancelPlus [0.9, 5.0] [-5.0,-1.0] = [-0X1.9999999999998P-4,0.0]; + cancelPlus [1.0, 5.1] [-5.0,-1.0] = [0.0,0X1.999999999998P-4]; + cancelPlus [0.0, 5.1] [-5.0,-0.0] = [0.0,0X1.999999999998P-4]; + cancelPlus [0.9, 5.1] [-5.0,-1.0] = [-0X1.9999999999998P-4,0X1.999999999998P-4]; + cancelPlus [1.0, 5.0] [-5.0,-1.0] = [0.0,0.0]; + cancelPlus [0.0, 5.0] [-5.0,-0.0] = [0.0,0.0]; + + cancelPlus [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [-0X1.999999999999AP-4,-0X1.999999999999AP-4] = [0X1.E666666666656P+0,0X1.E666666666657P+0]; + cancelPlus [-0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0] [-0X1.999999999999AP-4,0.01] = [-0X1.70A3D70A3D70BP-4,0X1.E666666666657P+0]; + + cancelPlus [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [0x1.FFFFFFFFFFFFFp1023,infinity]; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [0.0,0.0]; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023] = [0.0,0X1P+971]; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023] = [-0X1P+971,0.0]; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023] [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [entire]; + cancelPlus [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [entire]; + + cancelPlus [-0X1P+0,0X1.FFFFFFFFFFFFFP-53] [-0X1P+0,0X1.FFFFFFFFFFFFEP-53] = [-0X1.FFFFFFFFFFFFFP-1,-0X1.FFFFFFFFFFFFEP-1]; + cancelPlus [-0X1P+0,0X1.FFFFFFFFFFFFEP-53] [-0X1P+0,0X1.FFFFFFFFFFFFFP-53] = [entire]; +} + +testcase minimal_cancel_plus_dec_test { + cancelPlus [-infinity, -1.0]_dac [empty]_trv = [entire]_trv; + cancelPlus [-1.0, infinity]_def [empty]_trv = [entire]_trv; + cancelPlus [entire]_def [empty]_trv = [entire]_trv; + cancelPlus [-infinity, -1.0]_dac [-5.0,1.0]_com = [entire]_trv; + cancelPlus [-1.0, infinity]_trv [-5.0,1.0]_def = [entire]_trv; + cancelPlus [entire]_dac [-5.0,1.0]_def = [entire]_trv; + cancelPlus [-infinity, -1.0]_dac [entire]_dac = [entire]_trv; + cancelPlus [-1.0, infinity]_def [entire]_dac = [entire]_trv; + cancelPlus [empty]_trv [1.0, infinity]_def = [entire]_trv; + cancelPlus [empty]_trv [-infinity,1.0]_trv = [entire]_trv; + cancelPlus [empty]_trv [entire]_dac = [entire]_trv; + cancelPlus [-1.0,5.0]_dac [1.0,infinity]_dac = [entire]_trv; + cancelPlus [-1.0,5.0]_def [-infinity,1.0]_dac = [entire]_trv; + cancelPlus [-1.0,5.0]_com [entire]_dac = [entire]_trv; + cancelPlus [entire]_dac [1.0,infinity]_dac = [entire]_trv; + cancelPlus [entire]_dac [-infinity,1.0]_def = [entire]_trv; + cancelPlus [entire]_dac [entire]_dac = [entire]_trv; + + cancelPlus [-5.0, -1.0]_com [1.0,5.1]_def = [entire]_trv; + cancelPlus [-5.0, -1.0]_dac [0.9,5.0]_def = [entire]_trv; + cancelPlus [-5.0, -1.0]_def [0.9,5.1]_def = [entire]_trv; + cancelPlus [-10.0, 5.0]_trv [-5.0,10.1]_dac = [entire]_trv; + cancelPlus [-10.0, 5.0]_com [-5.1,10.0]_dac = [entire]_trv; + cancelPlus [-10.0, 5.0]_dac [-5.1,10.1]_dac = [entire]_trv; + cancelPlus [1.0, 5.0]_def [-5.0,-0.9]_com = [entire]_trv; + cancelPlus [1.0, 5.0]_trv [-5.1,-1.0]_com = [entire]_trv; + cancelPlus [1.0, 5.0]_dac [-5.1,-0.9]_com = [entire]_trv; + + cancelPlus [-10.0, -1.0]_trv [empty]_trv = [entire]_trv; + cancelPlus [-10.0, 5.0]_def [empty]_trv = [entire]_trv; + cancelPlus [1.0, 5.0]_com [empty]_trv = [entire]_trv; + + + cancelPlus [empty]_trv [empty]_trv = [empty]_trv; + cancelPlus [empty]_trv [1.0,10.0]_dac = [empty]_trv; + cancelPlus [empty]_trv [-5.0,10.0]_def = [empty]_trv; + cancelPlus [empty]_trv [-5.0,-1.0]_com = [empty]_trv; + + cancelPlus [-5.1,-0.0]_com [0.0,5.0]_com = [-0X1.999999999998P-4,0.0]_trv; + cancelPlus [-5.1,-1.0]_com [1.0,5.0]_dac = [-0X1.999999999998P-4,0.0]_trv; + cancelPlus [-5.0,-0.9]_com [1.0,5.0]_def = [0.0, 0X1.9999999999998P-4]_trv; + cancelPlus [-5.1,-0.9]_dac [1.0,5.0]_trv = [-0X1.999999999998P-4,0X1.9999999999998P-4]_trv; + cancelPlus [-5.0,-1.0]_dac [1.0,5.0]_com = [0.0,0.0]_trv; + cancelPlus [-10.1, 5.0]_dac [-5.0,10.0]_dac = [-0X1.999999999998P-4,0.0]_trv; + cancelPlus [-10.0, 5.1]_def [-5.0,10.0]_def = [0.0,0X1.999999999998P-4]_trv; + cancelPlus [-10.1, 5.1]_def [-5.0,10.0]_trv = [-0X1.999999999998P-4,0X1.999999999998P-4]_trv; + cancelPlus [-10.0, 5.0]_def [-5.0,10.0]_com = [0.0,0.0]_trv; + cancelPlus [0.9, 5.0]_trv [-5.0,-1.0]_dac = [-0X1.9999999999998P-4,0.0]_trv; + cancelPlus [1.0, 5.1]_trv [-5.0,-1.0]_def = [0.0,0X1.999999999998P-4]_trv; + cancelPlus [0.0, 5.1]_trv [-5.0,-0.0]_trv = [0.0,0X1.999999999998P-4]_trv; + cancelPlus [0.9, 5.1]_com [-5.0,-1.0]_com = [-0X1.9999999999998P-4,0X1.999999999998P-4]_trv; + cancelPlus [1.0, 5.0]_dac [-5.0,-1.0]_dac = [0.0,0.0]_trv; + cancelPlus [0.0, 5.0]_def [-5.0,-0.0]_trv = [0.0,0.0]_trv; + + cancelPlus [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0]_com [-0X1.999999999999AP-4,-0X1.999999999999AP-4]_com = [0X1.E666666666656P+0,0X1.E666666666657P+0]_trv; + cancelPlus [-0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0]_dac [-0X1.999999999999AP-4,0.01]_com = [-0X1.70A3D70A3D70BP-4,0X1.E666666666657P+0]_trv; + + cancelPlus [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [0x1.FFFFFFFFFFFFFp1023,infinity]_trv; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [0.0,0.0]_trv; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_dac [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023]_com = [0.0,0X1P+971]_trv; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_dac [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023]_com = [-0X1P+971,0.0]_trv; + cancelPlus [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023]_com [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [entire]_trv; + cancelPlus [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023]_com [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [entire]_trv; + + cancelPlus [-0X1P+0,0X1.FFFFFFFFFFFFFP-53]_dac [-0X1P+0,0X1.FFFFFFFFFFFFEP-53]_com = [-0X1.FFFFFFFFFFFFFP-1,-0X1.FFFFFFFFFFFFEP-1]_trv; + cancelPlus [-0X1P+0,0X1.FFFFFFFFFFFFEP-53]_def [-0X1P+0,0X1.FFFFFFFFFFFFFP-53]_com = [entire]_trv; +} + +testcase minimal_cancel_minus_test { + cancelMinus [-infinity, -1.0] [empty] = [entire]; + cancelMinus [-1.0, infinity] [empty] = [entire]; + cancelMinus [entire] [empty] = [entire]; + cancelMinus [-infinity, -1.0] [-1.0,5.0] = [entire]; + cancelMinus [-1.0, infinity] [-1.0,5.0] = [entire]; + cancelMinus [entire] [-1.0,5.0] = [entire]; + cancelMinus [-infinity, -1.0] [entire] = [entire]; + cancelMinus [-1.0, infinity] [entire] = [entire]; + cancelMinus [empty] [-infinity, -1.0] = [entire]; + cancelMinus [empty] [-1.0, infinity] = [entire]; + cancelMinus [empty] [entire] = [entire]; + cancelMinus [-1.0,5.0] [-infinity, -1.0] = [entire]; + cancelMinus [-1.0,5.0] [-1.0, infinity] = [entire]; + cancelMinus [-1.0,5.0] [entire] = [entire]; + cancelMinus [entire] [-infinity, -1.0] = [entire]; + cancelMinus [entire] [-1.0, infinity] = [entire]; + cancelMinus [entire] [entire] = [entire]; + + cancelMinus [-5.0, -1.0] [-5.1,-1.0] = [entire]; + cancelMinus [-5.0, -1.0] [-5.0,-0.9] = [entire]; + cancelMinus [-5.0, -1.0] [-5.1,-0.9] = [entire]; + cancelMinus [-10.0, 5.0] [-10.1, 5.0] = [entire]; + cancelMinus [-10.0, 5.0] [-10.0, 5.1] = [entire]; + cancelMinus [-10.0, 5.0] [-10.1, 5.1] = [entire]; + cancelMinus [1.0, 5.0] [0.9, 5.0] = [entire]; + cancelMinus [1.0, 5.0] [1.0, 5.1] = [entire]; + cancelMinus [1.0, 5.0] [0.9, 5.1] = [entire]; + + cancelMinus [-10.0, -1.0] [empty] = [entire]; + cancelMinus [-10.0, 5.0] [empty] = [entire]; + cancelMinus [1.0, 5.0] [empty] = [entire]; + + + cancelMinus [empty] [empty] = [empty]; + cancelMinus [empty] [-10.0, -1.0] = [empty]; + cancelMinus [empty] [-10.0, 5.0] = [empty]; + cancelMinus [empty] [1.0, 5.0] = [empty]; + + cancelMinus [-5.1,-0.0] [-5.0, 0.0] = [-0X1.999999999998P-4,0.0]; + cancelMinus [-5.1,-1.0] [-5.0, -1.0] = [-0X1.999999999998P-4,0.0]; + cancelMinus [-5.0,-0.9] [-5.0, -1.0] = [0.0, 0X1.9999999999998P-4]; + cancelMinus [-5.1,-0.9] [-5.0, -1.0] = [-0X1.999999999998P-4,0X1.9999999999998P-4]; + cancelMinus [-5.0,-1.0] [-5.0, -1.0] = [0.0,0.0]; + cancelMinus [-10.1, 5.0] [-10.0, 5.0] = [-0X1.999999999998P-4,0.0]; + cancelMinus [-10.0, 5.1] [-10.0, 5.0] = [0.0,0X1.999999999998P-4]; + cancelMinus [-10.1, 5.1] [-10.0, 5.0] = [-0X1.999999999998P-4,0X1.999999999998P-4]; + cancelMinus [-10.0, 5.0] [-10.0, 5.0] = [0.0,0.0]; + cancelMinus [0.9, 5.0] [1.0, 5.0] = [-0X1.9999999999998P-4,0.0]; + cancelMinus [-0.0, 5.1] [0.0, 5.0] = [0.0,0X1.999999999998P-4]; + cancelMinus [1.0, 5.1] [1.0, 5.0] = [0.0,0X1.999999999998P-4]; + cancelMinus [0.9, 5.1] [1.0, 5.0] = [-0X1.9999999999998P-4,0X1.999999999998P-4]; + cancelMinus [1.0, 5.0] [1.0, 5.0] = [0.0,0.0]; + cancelMinus [-5.0, 1.0] [-1.0, 5.0] = [-4.0,-4.0]; + cancelMinus [-5.0, 0.0] [-0.0, 5.0] = [-5.0,-5.0]; + + cancelMinus [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [0X1.999999999999AP-4,0X1.999999999999AP-4] = [0X1.E666666666656P+0,0X1.E666666666657P+0]; + cancelMinus [-0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0] [-0.01,0X1.999999999999AP-4] = [-0X1.70A3D70A3D70BP-4,0X1.E666666666657P+0]; + + cancelMinus [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] = [0x1.FFFFFFFFFFFFFp1023,infinity]; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [0.0,0.0]; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023] = [0.0,0X1P+971]; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023] = [-0X1P+971,0.0]; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023] [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [entire]; + cancelMinus [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023] [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] = [entire]; + + cancelMinus [0x0.0000000000001p-1022,0x0.0000000000001p-1022] [0x0.0000000000001p-1022,0x0.0000000000001p-1022] = [0.0,0.0]; + cancelMinus [0x0.0000000000001p-1022,0x0.0000000000001p-1022] [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022] = [0x0.0000000000002p-1022,0x0.0000000000002p-1022]; + cancelMinus [0X1P-1022,0X1.0000000000002P-1022] [0X1P-1022,0X1.0000000000001P-1022] = [0.0,0X0.0000000000001P-1022]; + cancelMinus [0X1P-1022,0X1.0000000000001P-1022] [0X1P-1022,0X1.0000000000002P-1022] = [entire]; + + + cancelMinus [-0X1P+0,0X1.FFFFFFFFFFFFFP-53] [-0X1.FFFFFFFFFFFFEP-53,0X1P+0] = [-0X1.FFFFFFFFFFFFFP-1,-0X1.FFFFFFFFFFFFEP-1]; + cancelMinus [-0X1P+0,0X1.FFFFFFFFFFFFEP-53] [-0X1.FFFFFFFFFFFFFP-53,0X1P+0] = [entire]; +} + +testcase minimal_cancel_minus_dec_test { + cancelMinus [-infinity, -1.0]_dac [empty]_trv = [entire]_trv; + cancelMinus [-1.0, infinity]_def [empty]_trv = [entire]_trv; + cancelMinus [entire]_dac [empty]_trv = [entire]_trv; + cancelMinus [-infinity, -1.0]_trv [-1.0,5.0]_dac = [entire]_trv; + cancelMinus [-1.0, infinity]_dac [-1.0,5.0]_com = [entire]_trv; + cancelMinus [entire]_dac [-1.0,5.0]_def = [entire]_trv; + cancelMinus [-infinity, -1.0]_def [entire]_dac = [entire]_trv; + cancelMinus [-1.0, infinity]_trv [entire]_dac = [entire]_trv; + cancelMinus [empty]_trv [-infinity, -1.0]_dac = [entire]_trv; + cancelMinus [empty]_trv [-1.0, infinity]_dac = [entire]_trv; + cancelMinus [empty]_trv [entire]_def = [entire]_trv; + cancelMinus [-1.0,5.0]_dac [-infinity, -1.0]_def = [entire]_trv; + cancelMinus [-1.0,5.0]_def [-1.0, infinity]_trv = [entire]_trv; + cancelMinus [-1.0,5.0]_com [entire]_dac = [entire]_trv; + cancelMinus [entire]_dac [-infinity, -1.0]_dac = [entire]_trv; + cancelMinus [entire]_dac [-1.0, infinity]_def = [entire]_trv; + cancelMinus [entire]_dac [entire]_def = [entire]_trv; + + cancelMinus [-5.0, -1.0]_com [-5.1,-1.0]_trv = [entire]_trv; + cancelMinus [-5.0, -1.0]_dac [-5.0,-0.9]_def = [entire]_trv; + cancelMinus [-5.0, -1.0]_def [-5.1,-0.9]_dac = [entire]_trv; + cancelMinus [-10.0, 5.0]_trv [-10.1, 5.0]_com = [entire]_trv; + cancelMinus [-10.0, 5.0]_com [-10.0, 5.1]_com = [entire]_trv; + cancelMinus [-10.0, 5.0]_dac [-10.1, 5.1]_trv = [entire]_trv; + cancelMinus [1.0, 5.0]_def [0.9, 5.0]_def = [entire]_trv; + cancelMinus [1.0, 5.0]_trv [1.0, 5.1]_dac = [entire]_trv; + cancelMinus [1.0, 5.0]_com [0.9, 5.1]_dac = [entire]_trv; + + cancelMinus [-10.0, -1.0]_com [empty]_trv = [entire]_trv; + cancelMinus [-10.0, 5.0]_dac [empty]_trv = [entire]_trv; + cancelMinus [1.0, 5.0]_def [empty]_trv = [entire]_trv; + + + cancelMinus [empty]_trv [empty]_trv = [empty]_trv; + cancelMinus [empty]_trv [-10.0, -1.0]_com = [empty]_trv; + cancelMinus [empty]_trv [-10.0, 5.0]_dac = [empty]_trv; + cancelMinus [empty]_trv [1.0, 5.0]_def = [empty]_trv; + + cancelMinus [-5.1,-0.0]_com [-5.0, 0.0]_com = [-0X1.999999999998P-4,0.0]_trv; + cancelMinus [-5.1,-1.0]_dac [-5.0, -1.0]_com = [-0X1.999999999998P-4,0.0]_trv; + cancelMinus [-5.0,-0.9]_def [-5.0, -1.0]_com = [0.0, 0X1.9999999999998P-4]_trv; + cancelMinus [-5.1,-0.9]_trv [-5.0, -1.0]_com = [-0X1.999999999998P-4,0X1.9999999999998P-4]_trv; + cancelMinus [-5.0,-1.0]_com [-5.0, -1.0]_dac = [0.0,0.0]_trv; + cancelMinus [-10.1, 5.0]_dac [-10.0, 5.0]_dac = [-0X1.999999999998P-4,0.0]_trv; + cancelMinus [-10.0, 5.1]_def [-10.0, 5.0]_dac = [0.0,0X1.999999999998P-4]_trv; + cancelMinus [-10.1, 5.1]_trv [-10.0, 5.0]_def = [-0X1.999999999998P-4,0X1.999999999998P-4]_trv; + cancelMinus [-10.0, 5.0]_com [-10.0, 5.0]_def = [0.0,0.0]_trv; + cancelMinus [0.9, 5.0]_dac [1.0, 5.0]_def = [-0X1.9999999999998P-4,0.0]_trv; + cancelMinus [-0.0, 5.1]_def [0.0, 5.0]_def = [0.0,0X1.999999999998P-4]_trv; + cancelMinus [1.0, 5.1]_trv [1.0, 5.0]_trv = [0.0,0X1.999999999998P-4]_trv; + cancelMinus [0.9, 5.1]_com [1.0, 5.0]_trv = [-0X1.9999999999998P-4,0X1.999999999998P-4]_trv; + cancelMinus [1.0, 5.0]_dac [1.0, 5.0]_com = [0.0,0.0]_trv; + cancelMinus [-5.0, 1.0]_def [-1.0, 5.0]_def = [-4.0,-4.0]_trv; + cancelMinus [-5.0, 0.0]_trv [-0.0, 5.0]_trv = [-5.0,-5.0]_trv; + + cancelMinus [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0]_com [0X1.999999999999AP-4,0X1.999999999999AP-4]_com = [0X1.E666666666656P+0,0X1.E666666666657P+0]_trv; + cancelMinus [-0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0]_def [-0.01,0X1.999999999999AP-4]_dac = [-0X1.70A3D70A3D70BP-4,0X1.E666666666657P+0]_trv; + + cancelMinus [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023]_com = [0x1.FFFFFFFFFFFFFp1023,infinity]_trv; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [0.0,0.0]_trv; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023]_com = [0.0,0X1P+971]_trv; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023]_com = [-0X1P+971,0.0]_trv; + cancelMinus [-0x1.FFFFFFFFFFFFFp1023,0X1.FFFFFFFFFFFFEP+1023]_com [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [entire]_trv; + cancelMinus [-0X1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023]_com [-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [entire]_trv; + + cancelMinus [0x0.0000000000001p-1022,0x0.0000000000001p-1022]_com [0x0.0000000000001p-1022,0x0.0000000000001p-1022]_com = [0.0,0.0]_trv; + cancelMinus [0x0.0000000000001p-1022,0x0.0000000000001p-1022]_com [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022]_dac = [0x0.0000000000002p-1022,0x0.0000000000002p-1022]_trv; + cancelMinus [0X1P-1022,0X1.0000000000002P-1022]_dac [0X1P-1022,0X1.0000000000001P-1022]_dac = [0.0,0X0.0000000000001P-1022]_trv; + cancelMinus [0X1P-1022,0X1.0000000000001P-1022]_def [0X1P-1022,0X1.0000000000002P-1022]_com = [entire]_trv; + + + cancelMinus [-0X1P+0,0X1.FFFFFFFFFFFFFP-53]_com [-0X1.FFFFFFFFFFFFEP-53,0X1P+0]_dac = [-0X1.FFFFFFFFFFFFFP-1,-0X1.FFFFFFFFFFFFEP-1]_trv; + cancelMinus [-0X1P+0,0X1.FFFFFFFFFFFFEP-53]_def [-0X1.FFFFFFFFFFFFFP-53,0X1P+0]_dac = [entire]_trv; +} diff --git a/test/itl/libieeep1788_class.itl b/test/itl/libieeep1788_class.itl new file mode 100644 index 000000000..02e6f64aa --- /dev/null +++ b/test/itl/libieeep1788_class.itl @@ -0,0 +1,302 @@ +/* + +Unit tests from libieeep1788 for interval constructors +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_nums_to_interval_test { + b-numsToInterval -1.0 1.0 = [-1.0,1.0]; + b-numsToInterval -infinity 1.0 = [-infinity,1.0]; + b-numsToInterval -1.0 infinity = [-1.0,infinity]; + b-numsToInterval -infinity infinity = [-infinity,infinity]; + + b-numsToInterval NaN NaN = [empty] signal UndefinedOperation; + b-numsToInterval 1.0 -1.0 = [empty] signal UndefinedOperation; + b-numsToInterval -infinity -infinity = [empty] signal UndefinedOperation; + b-numsToInterval infinity infinity = [empty] signal UndefinedOperation; +} + +testcase minimal_nums_to_decorated_interval_test { + d-numsToInterval -1.0 1.0 = [-1.0,1.0]_com; + d-numsToInterval -infinity 1.0 = [-infinity,1.0]_dac; + d-numsToInterval -1.0 infinity = [-1.0,infinity]_dac; + d-numsToInterval -infinity infinity = [-infinity,infinity]_dac; + + d-numsToInterval NaN NaN = [nai] signal UndefinedOperation; + d-numsToInterval 1.0 -1.0 = [nai] signal UndefinedOperation; + d-numsToInterval -infinity -infinity = [nai] signal UndefinedOperation; + d-numsToInterval infinity infinity = [nai] signal UndefinedOperation; +} + +testcase minimal_text_to_interval_test { + b-textToInterval "[ Empty ]" = [empty]; + b-textToInterval "[ Empty ]_trv" = [empty] signal UndefinedOperation; + b-textToInterval "[ ]" = [empty]; + b-textToInterval "[ ]_trv" = [empty] signal UndefinedOperation; + + b-textToInterval "[,]" = [-infinity,infinity]; + b-textToInterval "[,]_trv" = [empty] signal UndefinedOperation; + b-textToInterval "[ entire ]" = [-infinity,infinity]; + b-textToInterval "[ ENTIRE ]_dac" = [empty] signal UndefinedOperation; + b-textToInterval "[ ENTIRE ]" = [-infinity,infinity]; + b-textToInterval "[ -inf , INF ]" = [-infinity,infinity]; + b-textToInterval "[ -inf, INF ]_def" = [empty] signal UndefinedOperation; + + b-textToInterval "[-1.0,1.0]" = [-1.0,1.0]; + b-textToInterval "[ -1.0 , 1.0 ]" = [-1.0,1.0]; + b-textToInterval "[ -1.0 , 1.0]" = [-1.0,1.0]; + + b-textToInterval "[-1,]" = [-1.0,infinity]; + b-textToInterval "[-1.0, +inf]" = [-1.0,infinity]; + b-textToInterval "[-1.0, +infinity]" = [-1.0,infinity]; + + b-textToInterval "[-Inf, 1.000 ]" = [-infinity,1.0]; + b-textToInterval "[-Infinity, 1.000 ]" = [-infinity,1.0]; + + b-textToInterval "[1.0E+400 ]" = [0x1.fffffffffffffp+1023,infinity]; + + b-textToInterval "[ -4/2, 10/5 ]" = [-2.0,2.0]; + b-textToInterval "[ -1/10, 1/10 ]" = [-0.1,0.1]; + + b-textToInterval "0.0?" = [-0.05,0.05]; + b-textToInterval "0.0?u" = [0.0,0.05]; + b-textToInterval "0.0?d" = [-0.05,0.0]; + + b-textToInterval "2.5?" = [0x1.3999999999999p+1,0x1.4666666666667p+1]; + b-textToInterval "2.5?u" = [2.5,0x1.4666666666667p+1]; + b-textToInterval "2.5?d" = [0x1.3999999999999p+1,2.5]; + + b-textToInterval "0.000?5" = [-0.005,0.005]; + b-textToInterval "0.000?5u" = [0.0,0.005]; + b-textToInterval "0.000?5d" = [-0.005,0.0]; + + b-textToInterval "2.500?5" = [0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1]; + b-textToInterval "2.500?5u" = [2.5,0x1.40a3d70a3d70bp+1]; + b-textToInterval "2.500?5d" = [0x1.3f5c28f5c28f5p+1,2.5]; + + b-textToInterval "0.0??" = [-infinity,infinity]; + b-textToInterval "0.0??u" = [0.0,infinity]; + b-textToInterval "0.0??d" = [-infinity,0.0]; + + b-textToInterval "2.5??" = [-infinity,infinity]; + b-textToInterval "2.5??u" = [2.5,infinity]; + b-textToInterval "2.5??d" = [-infinity,2.5]; + + b-textToInterval "2.500?5e+27" = [0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91]; + b-textToInterval "2.500?5ue4" = [0x1.86ap+14,0x1.8768p+14]; + b-textToInterval "2.500?5de-5" = [0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16]; + + b-textToInterval "10?3" = [7.0,13.0]; + b-textToInterval "10?3e380" = [0x1.fffffffffffffp+1023,infinity]; + + b-textToInterval "1.0000000000000001?1" = [1.0,0x1.0000000000001p+0]; + + // 10?18 + 308 zeros + b-textToInterval "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" = [-infinity,infinity]; + + b-textToInterval "[ Nai ]" = [empty] signal UndefinedOperation; + b-textToInterval "[ Nai ]_ill" = [empty] signal UndefinedOperation; + b-textToInterval "[ Nai ]_trv" = [empty] signal UndefinedOperation; + b-textToInterval "[ Empty ]_ill" = [empty] signal UndefinedOperation; + b-textToInterval "[ ]_com" = [empty] signal UndefinedOperation; + b-textToInterval "[,]_com" = [empty] signal UndefinedOperation; + b-textToInterval "[ Entire ]_com" = [empty] signal UndefinedOperation; + b-textToInterval "[ -inf , INF ]_com" = [empty] signal UndefinedOperation; + b-textToInterval "[ -1.0 , 1.0]_ill" = [empty] signal UndefinedOperation; + b-textToInterval "[ -1.0 , 1.0]_fooo" = [empty] signal UndefinedOperation; + b-textToInterval "[ -1.0 , 1.0]_da" = [empty] signal UndefinedOperation; + b-textToInterval "[-1.0,]_com" = [empty] signal UndefinedOperation; + b-textToInterval "[-Inf, 1.000 ]_ill" = [empty] signal UndefinedOperation; + b-textToInterval "[-I nf, 1.000 ]" = [empty] signal UndefinedOperation; + b-textToInterval "[-Inf, 1.0 00 ]" = [empty] signal UndefinedOperation; + b-textToInterval "[-Inf ]" = [empty] signal UndefinedOperation; + b-textToInterval "[Inf , INF]" = [empty] signal UndefinedOperation; + b-textToInterval "[ foo ]" = [empty] signal UndefinedOperation; + // b-textToInterval "0.0??_com" = [empty] signal UndefinedOperation; + // b-textToInterval "0.0??u_ill" = [empty] signal UndefinedOperation; + // b-textToInterval "0.0??d_com" = [empty] signal UndefinedOperation; + + b-textToInterval "[1.0000000000000002,1.0000000000000001]" = [1.0,0x1.0000000000001p+0] signal PossiblyUndefinedOperation; + b-textToInterval "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]" = [1.0,0x1.0000000000001p+0] signal PossiblyUndefinedOperation; + b-textToInterval "[0x1.00000000000002p0,0x1.00000000000001p0]" = [1.0,0x1.0000000000001p+0] signal PossiblyUndefinedOperation; +} + +testcase minimal_text_to_decorated_interval_test { + d-textToInterval "[ Empty ]" = [empty]_trv; + d-textToInterval "[ Empty ]_trv" = [empty]_trv; + d-textToInterval "[ ]" = [empty]_trv; + d-textToInterval "[ ]_trv" = [empty]_trv; + + d-textToInterval "[,]" = [entire]_dac; + d-textToInterval "[,]_trv" = [entire]_trv; + d-textToInterval "[ entire ]" = [entire]_dac; + d-textToInterval "[ ENTIRE ]_dac" = [entire]_dac; + d-textToInterval "[ -inf , INF ]" = [entire]_dac; + d-textToInterval "[ -inf, INF ]_def" = [entire]_def; + + d-textToInterval "[-1.0,1.0]" = [-1.0,1.0]_com; + d-textToInterval "[ -1.0 , 1.0 ]_com" = [-1.0,1.0]_com; + d-textToInterval "[ -1.0 , 1.0]_trv" = [-1.0,1.0]_trv; + + d-textToInterval "[-1,]" = [-1.0,infinity]_dac; + d-textToInterval "[-1.0, +inf]_def" = [-1.0,infinity]_def; + d-textToInterval "[-1.0, +infinity]_def" = [-1.0,infinity]_def; + + d-textToInterval "[-Inf, 1.000 ]" = [-infinity,1.0]_dac; + d-textToInterval "[-Infinity, 1.000 ]_trv" = [-infinity,1.0]_trv; + + d-textToInterval "[1.0E+400 ]_com" = [0x1.fffffffffffffp+1023,infinity]_dac; + + d-textToInterval "[ -4/2, 10/5 ]_com" = [-2.0,2.0]_com; + d-textToInterval "[ -1/10, 1/10 ]_com" = [-0.1,0.1]_com; + + d-textToInterval "0.0?" = [-0.05,0.05]_com; + d-textToInterval "0.0?u_trv" = [0.0,0.05]_trv; + d-textToInterval "0.0?d_dac" = [-0.05,0.0]_dac; + + d-textToInterval "2.5?" = [0x1.3999999999999p+1,0x1.4666666666667p+1]_com; + d-textToInterval "2.5?u" = [2.5,0x1.4666666666667p+1]_com; + d-textToInterval "2.5?d_trv" = [0x1.3999999999999p+1,2.5]_trv; + + d-textToInterval "0.000?5" = [-0.005,0.005]_com; + d-textToInterval "0.000?5u_def" = [0.0,0.005]_def; + d-textToInterval "0.000?5d" = [-0.005,0.0]_com; + + d-textToInterval "2.500?5" = [0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1]_com; + d-textToInterval "2.500?5u" = [2.5,0x1.40a3d70a3d70bp+1]_com; + d-textToInterval "2.500?5d" = [0x1.3f5c28f5c28f5p+1,2.5]_com; + + d-textToInterval "0.0??_dac" = [-infinity,infinity]_dac; + d-textToInterval "0.0??u_trv" = [0.0,infinity]_trv; + d-textToInterval "0.0??d" = [-infinity,0.0]_dac; + + d-textToInterval "2.5??" = [-infinity,infinity]_dac; + d-textToInterval "2.5??u_def" = [2.5,infinity]_def; + d-textToInterval "2.5??d_dac" = [-infinity,2.5]_dac; + + d-textToInterval "2.500?5e+27" = [0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91]_com; + d-textToInterval "2.500?5ue4_def" = [0x1.86ap+14,0x1.8768p+14]_def; + d-textToInterval "2.500?5de-5" = [0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16]_com; + + d-textToInterval "[ Nai ]" = [nai]; + + // 10?18 + 308 zeros + _com + d-textToInterval "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_com" = [-infinity,infinity]_dac; + + d-textToInterval "10?3_com" = [7.0,13.0]_com; + d-textToInterval "10?3e380_com" = [0x1.fffffffffffffp+1023,infinity]_dac; + + d-textToInterval "[ Nai ]_ill" = [nai] signal UndefinedOperation; + d-textToInterval "[ Nai ]_trv" = [nai] signal UndefinedOperation; + d-textToInterval "[ Empty ]_ill" = [nai] signal UndefinedOperation; + d-textToInterval "[ ]_com" = [nai] signal UndefinedOperation; + d-textToInterval "[,]_com" = [nai] signal UndefinedOperation; + d-textToInterval "[ Entire ]_com" = [nai] signal UndefinedOperation; + d-textToInterval "[ -inf , INF ]_com" = [nai] signal UndefinedOperation; + d-textToInterval "[ -1.0 , 1.0]_ill" = [nai] signal UndefinedOperation; + d-textToInterval "[ -1.0 , 1.0]_fooo" = [nai] signal UndefinedOperation; + d-textToInterval "[ -1.0 , 1.0]_da" = [nai] signal UndefinedOperation; + d-textToInterval "[-1.0,]_com" = [nai] signal UndefinedOperation; + d-textToInterval "[-Inf, 1.000 ]_ill" = [nai] signal UndefinedOperation; + d-textToInterval "[-I nf, 1.000 ]" = [nai] signal UndefinedOperation; + d-textToInterval "[-Inf, 1.0 00 ]" = [nai] signal UndefinedOperation; + d-textToInterval "[-Inf ]" = [nai] signal UndefinedOperation; + d-textToInterval "[Inf , INF]" = [nai] signal UndefinedOperation; + d-textToInterval "[ foo ]" = [nai] signal UndefinedOperation; + d-textToInterval "0.0??_com" = [nai] signal UndefinedOperation; + d-textToInterval "0.0??u_ill" = [nai] signal UndefinedOperation; + d-textToInterval "0.0??d_com" = [nai] signal UndefinedOperation; + d-textToInterval "0.0??_com" = [nai] signal UndefinedOperation; + d-textToInterval "[1.0,2.0" = [nai] signal UndefinedOperation; + + d-textToInterval "[1.0000000000000002,1.0000000000000001]" = [1.0,0x1.0000000000001p+0]_com signal PossiblyUndefinedOperation; + d-textToInterval "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]" = [1.0,0x1.0000000000001p+0]_com signal PossiblyUndefinedOperation; + d-textToInterval "[0x1.00000000000002p0,0x1.00000000000001p0]" = [1.0,0x1.0000000000001p+0]_com signal PossiblyUndefinedOperation; +} + +testcase minimal_interval_part_test { + intervalPart [-0x1.99999A842549Ap+4,0X1.9999999999999P-4]_trv = [-0x1.99999A842549Ap+4,0X1.9999999999999P-4]; + intervalPart [-0X1.99999C0000000p+4,0X1.9999999999999P-4]_com = [-0X1.99999C0000000p+4,0X1.9999999999999P-4]; + intervalPart [-0x1.99999A842549Ap+4,0x1.99999A0000000p-4]_dac = [-0x1.99999A842549Ap+4,0x1.99999A0000000p-4]; + intervalPart [-0X1.99999C0000000p+4,0x1.99999A0000000p-4]_def = [-0X1.99999C0000000p+4,0x1.99999A0000000p-4]; + intervalPart [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022]_trv = [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022]; + intervalPart [-0x0.0000000000001p-1022,0x0.0000000000001p-1022]_trv = [-0x0.0000000000001p-1022,0x0.0000000000001p-1022]; + intervalPart [0x0.0000000000001p-1022,0x0.0000000000001p-1022]_trv = [0x0.0000000000001p-1022,0x0.0000000000001p-1022]; + intervalPart [-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023]_trv = [-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023]; + intervalPart [-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]_trv = [-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]; + intervalPart [0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]_trv = [0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]; + intervalPart [-infinity,infinity]_trv = [-infinity,infinity]; + intervalPart [empty]_trv = [empty]; + intervalPart [-0X1.99999C0000000p+4,0X1.9999999999999P-4]_com = [-0X1.99999C0000000p+4,0X1.9999999999999P-4]; + + intervalPart [nai] = [empty] signal IntvlPartOfNaI; +} + +testcase minimal_new_dec_test { + newDec [-0x1.99999A842549Ap+4,0X1.9999999999999P-4] = [-0x1.99999A842549Ap+4,0X1.9999999999999P-4]_com; + newDec [-0X1.99999C0000000p+4,0X1.9999999999999P-4] = [-0X1.99999C0000000p+4,0X1.9999999999999P-4]_com; + newDec [-0x1.99999A842549Ap+4,0x1.99999A0000000p-4] = [-0x1.99999A842549Ap+4,0x1.99999A0000000p-4]_com; + newDec [-0X1.99999C0000000p+4,0x1.99999A0000000p-4] = [-0X1.99999C0000000p+4,0x1.99999A0000000p-4]_com; + newDec [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022] = [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022]_com; + newDec [-0x0.0000000000001p-1022,0x0.0000000000001p-1022] = [-0x0.0000000000001p-1022,0x0.0000000000001p-1022]_com; + newDec [0x0.0000000000001p-1022,0x0.0000000000001p-1022] = [0x0.0000000000001p-1022,0x0.0000000000001p-1022]_com; + newDec [-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023] = [-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023]_com; + newDec [-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023] = [-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]_com; + newDec [0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023] = [0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]_com; + newDec [-infinity,infinity] = [-infinity,infinity]_dac; + newDec [empty] = [empty]_trv; + newDec [-0X1.99999C0000000p+4,0X1.9999999999999P-4] = [-0X1.99999C0000000p+4,0X1.9999999999999P-4]_com; +} + +testcase minimal_set_dec_test { + setDec [-0x1.99999A842549Ap+4,0X1.9999999999999P-4] trv = [-0x1.99999A842549Ap+4,0X1.9999999999999P-4]_trv; + setDec [-0X1.99999C0000000p+4,0X1.9999999999999P-4] com = [-0X1.99999C0000000p+4,0X1.9999999999999P-4]_com; + setDec [-0x1.99999A842549Ap+4,0x1.99999A0000000p-4] dac = [-0x1.99999A842549Ap+4,0x1.99999A0000000p-4]_dac; + setDec [-0X1.99999C0000000p+4,0x1.99999A0000000p-4] def = [-0X1.99999C0000000p+4,0x1.99999A0000000p-4]_def; + setDec [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022] trv = [-0x0.0000000000001p-1022,-0x0.0000000000001p-1022]_trv; + setDec [-0x0.0000000000001p-1022,0x0.0000000000001p-1022] def = [-0x0.0000000000001p-1022,0x0.0000000000001p-1022]_def; + setDec [0x0.0000000000001p-1022,0x0.0000000000001p-1022] dac = [0x0.0000000000001p-1022,0x0.0000000000001p-1022]_dac; + setDec [-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023] com = [-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023]_com; + setDec [-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023] def = [-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]_def; + setDec [0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023] trv = [0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023]_trv; + setDec [-infinity,infinity] dac = [-infinity,infinity]_dac; + setDec [empty] trv = [empty]_trv; + setDec [-0X1.99999C0000000p+4,0X1.9999999999999P-4] com = [-0X1.99999C0000000p+4,0X1.9999999999999P-4]_com; + + setDec [empty] def = [empty]_trv; + setDec [empty] dac = [empty]_trv; + setDec [empty] com = [empty]_trv; + setDec [1.0,infinity] com = [1.0,infinity]_dac; + setDec [-infinity,3.0] com = [-infinity,3.0]_dac; + setDec [-infinity,infinity] com = [-infinity,infinity]_dac; + setDec [empty] ill = [nai] signal UndefinedOperation; + setDec [-infinity,3.0] ill = [nai] signal UndefinedOperation; + setDec [-1.0,3.0] ill = [nai] signal UndefinedOperation; +} + +testcase minimal_decoration_part_test { + decorationPart [nai] = ill; + decorationPart [empty]_trv = trv; + decorationPart [-1.0,3.0]_trv = trv; + decorationPart [-1.0,3.0]_def = def; + decorationPart [-1.0,3.0]_dac = dac; + decorationPart [-1.0,3.0]_com = com; +} + diff --git a/test/itl/libieeep1788_elem.itl b/test/itl/libieeep1788_elem.itl new file mode 100644 index 000000000..b5dea4bc1 --- /dev/null +++ b/test/itl/libieeep1788_elem.itl @@ -0,0 +1,4380 @@ +/* + +Unit tests from libieeep1788 for elementary interval functions +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_pos_test { + pos [1.0,2.0] = [1.0,2.0]; + pos [empty] = [empty]; + pos [entire] = [entire]; + pos [1.0,infinity] = [1.0,infinity]; + pos [-infinity,-1.0] = [-infinity,-1.0]; + pos [0.0,2.0] = [0.0,2.0]; + pos [-0.0,2.0] = [0.0,2.0]; + pos [-2.5,-0.0] = [-2.5,0.0]; + pos [-2.5,0.0] = [-2.5,0.0]; + pos [-0.0,-0.0] = [0.0,0.0]; + pos [0.0,0.0] = [0.0,0.0]; +} + +testcase minimal_pos_dec_test { + pos [nai] = [nai]; + pos [empty]_trv = [empty]_trv; + pos [entire]_dac = [entire]_dac; + pos [1.0, 2.0]_com = [1.0, 2.0]_com; +} + +testcase minimal_neg_test { + neg [1.0,2.0] = [-2.0,-1.0]; + neg [empty] = [empty]; + neg [entire] = [entire]; + neg [1.0,infinity] = [-infinity,-1.0]; + neg [-infinity,1.0] = [-1.0,infinity]; + neg [0.0,2.0] = [-2.0,0.0]; + neg [-0.0,2.0] = [-2.0,0.0]; + neg [-2.0,0.0] = [0.0,2.0]; + neg [-2.0,-0.0] = [0.0,2.0]; + neg [0.0,-0.0] = [0.0,0.0]; + neg [-0.0,-0.0] = [0.0,0.0]; +} + +testcase minimal_neg_dec_test { + neg [nai] = [nai]; + neg [empty]_trv = [empty]_trv; + neg [entire]_dac = [entire]_dac; + neg [1.0, 2.0]_com = [-2.0, -1.0]_com; +} + +testcase minimal_add_test { + add [empty] [empty] = [empty]; + add [-1.0,1.0] [empty] = [empty]; + add [empty] [-1.0,1.0] = [empty]; + add [empty] [entire] = [empty]; + add [entire] [empty] = [empty]; + + add [entire] [-infinity,1.0] = [entire]; + add [entire] [-1.0,1.0] = [entire]; + + add [entire] [-1.0,infinity] = [entire]; + add [entire] [entire] = [entire]; + add [-infinity,1.0] [entire] = [entire]; + add [-1.0,1.0] [entire] = [entire]; + add [-1.0,infinity] [entire] = [entire]; + + add [-infinity,2.0] [-infinity,4.0] = [-infinity,6.0]; + add [-infinity,2.0] [3.0,4.0] = [-infinity,6.0]; + add [-infinity,2.0] [3.0,infinity] = [entire]; + + add [1.0,2.0] [-infinity,4.0] = [-infinity,6.0]; + add [1.0,2.0] [3.0,4.0] = [4.0,6.0]; + add [1.0,2.0] [3.0,infinity] = [4.0,infinity]; + + add [1.0,infinity] [-infinity,4.0] = [entire]; + add [1.0,infinity] [3.0,4.0] = [4.0,infinity]; + add [1.0,infinity] [3.0,infinity] = [4.0,infinity]; + + add [1.0,0x1.FFFFFFFFFFFFFp1023] [3.0,4.0] = [4.0,infinity]; + add [-0x1.FFFFFFFFFFFFFp1023,2.0] [-3.0,4.0] = [-infinity,6.0]; + add [-0x1.FFFFFFFFFFFFFp1023,2.0] [-3.0,0x1.FFFFFFFFFFFFFp1023] = [entire]; + + add [1.0,0x1.FFFFFFFFFFFFFp1023] [0.0,0.0] = [1.0,0x1.FFFFFFFFFFFFFp1023]; + add [1.0,0x1.FFFFFFFFFFFFFp1023] [-0.0,-0.0] = [1.0,0x1.FFFFFFFFFFFFFp1023]; + add [0.0,0.0] [-3.0,4.0] = [-3.0,4.0]; + add [-0.0,-0.0] [-3.0,0x1.FFFFFFFFFFFFFp1023] = [-3.0,0x1.FFFFFFFFFFFFFp1023]; + + add [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [0X1.999999999999AP-4,0X1.999999999999AP-4] = [0X1.0CCCCCCCCCCC4P+1,0X1.0CCCCCCCCCCC5P+1]; + add [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [-0X1.999999999999AP-4,-0X1.999999999999AP-4] = [0X1.E666666666656P+0,0X1.E666666666657P+0]; + add [-0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [0X1.999999999999AP-4,0X1.999999999999AP-4] = [-0X1.E666666666657P+0,0X1.0CCCCCCCCCCC5P+1]; +} + +testcase minimal_add_dec_test { + add [1.0,2.0]_com [5.0,7.0]_com = [6.0,9.0]_com; + add [1.0,2.0]_com [5.0,7.0]_def = [6.0,9.0]_def; + add [1.0,2.0]_com [5.0,0x1.FFFFFFFFFFFFFp1023]_com = [6.0,infinity]_dac; + add [-0x1.FFFFFFFFFFFFFp1023,2.0]_com [-0.1, 5.0]_com = [-infinity,7.0]_dac; + add [1.0,2.0]_trv [empty]_trv = [empty]_trv; + add [nai] [1.0,2.0]_trv = [nai]; +} + +testcase minimal_sub_test { + sub [empty] [empty] = [empty]; + sub [-1.0,1.0] [empty] = [empty]; + sub [empty] [-1.0,1.0] = [empty]; + sub [empty] [entire] = [empty]; + sub [entire] [empty] = [empty]; + + sub [entire] [-infinity,1.0] = [entire]; + sub [entire] [-1.0,1.0] = [entire]; + sub [entire] [-1.0,infinity] = [entire]; + sub [entire] [entire] = [entire]; + sub [-infinity,1.0] [entire] = [entire]; + sub [-1.0,1.0] [entire] = [entire]; + sub [-1.0,infinity] [entire] = [entire]; + + sub [-infinity,2.0] [-infinity,4.0] = [entire]; + sub [-infinity,2.0] [3.0,4.0] = [-infinity,-1.0]; + sub [-infinity,2.0] [3.0,infinity] = [-infinity,-1.0]; + + sub [1.0,2.0] [-infinity,4.0] = [-3.0,infinity]; + sub [1.0,2.0] [3.0,4.0] = [-3.0,-1.0]; + sub [1.0,2.0] [3.0,infinity] = [-infinity,-1.0]; + + sub [1.0,infinity] [-infinity,4.0] = [-3.0,infinity]; + sub [1.0,infinity] [3.0,4.0] = [-3.0,infinity]; + sub [1.0,infinity] [3.0,infinity] = [entire]; + + sub [1.0,0x1.FFFFFFFFFFFFFp1023] [-3.0,4.0] = [-3.0,infinity]; + sub [-0x1.FFFFFFFFFFFFFp1023,2.0] [3.0,4.0] = [-infinity,-1.0]; + sub [-0x1.FFFFFFFFFFFFFp1023,2.0] [-0x1.FFFFFFFFFFFFFp1023,4.0] = [entire]; + + sub [1.0,0x1.FFFFFFFFFFFFFp1023] [0.0,0.0] = [1.0,0x1.FFFFFFFFFFFFFp1023]; + sub [1.0,0x1.FFFFFFFFFFFFFp1023] [-0.0,-0.0] = [1.0,0x1.FFFFFFFFFFFFFp1023]; + sub [0.0,0.0] [-3.0,4.0] = [-4.0,3.0]; + sub [-0.0,-0.0] [-3.0,0x1.FFFFFFFFFFFFFp1023] = [-0x1.FFFFFFFFFFFFFp1023,3.0]; + + sub [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [0X1.999999999999AP-4,0X1.999999999999AP-4] = [0X1.E666666666656P+0,0X1.E666666666657P+0]; + sub [0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [-0X1.999999999999AP-4,-0X1.999999999999AP-4] = [0X1.0CCCCCCCCCCC4P+1,0X1.0CCCCCCCCCCC5P+1]; + sub [-0X1.FFFFFFFFFFFFP+0,0X1.FFFFFFFFFFFFP+0] [0X1.999999999999AP-4,0X1.999999999999AP-4] = [-0X1.0CCCCCCCCCCC5P+1,0X1.E666666666657P+0]; +} + +testcase minimal_sub_dec_test { + sub [1.0,2.0]_com [5.0,7.0]_com = [-6.0,-3.0]_com; + sub [1.0,2.0]_com [5.0,7.0]_def = [-6.0,-3.0]_def; + sub [-1.0,2.0]_com [5.0,0x1.FFFFFFFFFFFFFp1023]_com = [-infinity,-3.0]_dac; + sub [-0x1.FFFFFFFFFFFFFp1023,2.0]_com [-1.0, 5.0]_com = [-infinity,3.0]_dac; + sub [1.0,2.0]_trv [empty]_trv = [empty]_trv; + sub [nai] [1.0,2.0]_trv = [nai]; +} + +testcase minimal_mul_test { + mul [empty] [empty] = [empty]; + mul [-1.0,1.0] [empty] = [empty]; + mul [empty] [-1.0,1.0] = [empty]; + mul [empty] [entire] = [empty]; + mul [entire] [empty] = [empty]; + mul [0.0,0.0] [empty] = [empty]; + mul [empty] [0.0,0.0] = [empty]; + mul [-0.0,-0.0] [empty] = [empty]; + mul [empty] [-0.0,-0.0] = [empty]; + + mul [entire] [0.0,0.0] = [0.0,0.0]; + mul [entire] [-0.0,-0.0] = [0.0,0.0]; + mul [entire] [-5.0, -1.0] = [entire]; + mul [entire] [-5.0, 3.0] = [entire]; + mul [entire] [1.0, 3.0] = [entire]; + mul [entire] [-infinity, -1.0] = [entire]; + mul [entire] [-infinity, 3.0] = [entire]; + mul [entire] [-5.0, infinity] = [entire]; + mul [entire] [1.0, infinity] = [entire]; + mul [entire] [entire] = [entire]; + + mul [1.0,infinity] [0.0,0.0] = [0.0,0.0]; + mul [1.0,infinity] [-0.0,-0.0] = [0.0,0.0]; + mul [1.0,infinity] [-5.0, -1.0] = [-infinity,-1.0]; + mul [1.0,infinity] [-5.0, 3.0] = [entire]; + mul [1.0,infinity] [1.0, 3.0] = [1.0,infinity]; + mul [1.0,infinity] [-infinity, -1.0] = [-infinity,-1.0]; + mul [1.0,infinity] [-infinity, 3.0] = [entire]; + mul [1.0,infinity] [-5.0, infinity] = [entire]; + mul [1.0,infinity] [1.0, infinity] = [1.0,infinity]; + mul [1.0,infinity] [entire] = [entire]; + + mul [-1.0,infinity] [0.0,0.0] = [0.0,0.0]; + mul [-1.0,infinity] [-0.0,-0.0] = [0.0,0.0]; + mul [-1.0,infinity] [-5.0, -1.0] = [-infinity,5.0]; + mul [-1.0,infinity] [-5.0, 3.0] = [entire]; + mul [-1.0,infinity] [1.0, 3.0] = [-3.0,infinity]; + mul [-1.0,infinity] [-infinity, -1.0] = [entire]; + mul [-1.0,infinity] [-infinity, 3.0] = [entire]; + mul [-1.0,infinity] [-5.0, infinity] = [entire]; + mul [-1.0,infinity] [1.0, infinity] = [entire]; + mul [-1.0,infinity] [entire] = [entire]; + + mul [-infinity,3.0] [0.0,0.0] = [0.0,0.0]; + mul [-infinity,3.0] [-0.0,-0.0] = [0.0,0.0]; + mul [-infinity,3.0] [-5.0, -1.0] = [-15.0,infinity]; + mul [-infinity,3.0] [-5.0, 3.0] = [entire]; + mul [-infinity,3.0] [1.0, 3.0] = [-infinity,9.0]; + mul [-infinity,3.0] [-infinity, -1.0] = [entire]; + mul [-infinity,3.0] [-infinity, 3.0] = [entire]; + mul [-infinity,3.0] [-5.0, infinity] = [entire]; + mul [-infinity,3.0] [1.0, infinity] = [entire]; + mul [-infinity,3.0] [entire] = [entire]; + + mul [-infinity,-3.0] [0.0,0.0] = [0.0,0.0]; + mul [-infinity,-3.0] [-0.0,-0.0] = [0.0,0.0]; + mul [-infinity,-3.0] [-5.0, -1.0] = [3.0,infinity]; + mul [-infinity,-3.0] [-5.0, 3.0] = [entire]; + mul [-infinity,-3.0] [1.0, 3.0] = [-infinity,-3.0]; + mul [-infinity,-3.0] [-infinity, -1.0] = [3.0,infinity]; + mul [-infinity,-3.0] [-infinity, 3.0] = [entire]; + mul [-infinity,-3.0] [-5.0, infinity] = [entire]; + mul [-infinity,-3.0] [1.0, infinity] = [-infinity,-3.0]; + mul [-infinity,-3.0] [entire] = [entire]; + + mul [0.0,0.0] [0.0,0.0] = [0.0,0.0]; + mul [0.0,0.0] [-0.0,-0.0] = [0.0,0.0]; + mul [0.0,0.0] [-5.0, -1.0] = [0.0,0.0]; + mul [0.0,0.0] [-5.0, 3.0] = [0.0,0.0]; + mul [0.0,0.0] [1.0, 3.0] = [0.0,0.0]; + mul [0.0,0.0] [-infinity, -1.0] = [0.0,0.0]; + mul [0.0,0.0] [-infinity, 3.0] = [0.0,0.0]; + mul [0.0,0.0] [-5.0, infinity] = [0.0,0.0]; + mul [0.0,0.0] [1.0, infinity] = [0.0,0.0]; + mul [0.0,0.0] [entire] = [0.0,0.0]; + + mul [-0.0,-0.0] [0.0,0.0] = [0.0,0.0]; + mul [-0.0,-0.0] [-0.0,-0.0] = [0.0,0.0]; + mul [-0.0,-0.0] [-5.0, -1.0] = [0.0,0.0]; + mul [-0.0,-0.0] [-5.0, 3.0] = [0.0,0.0]; + mul [-0.0,-0.0] [1.0, 3.0] = [0.0,0.0]; + mul [-0.0,-0.0] [-infinity, -1.0] = [0.0,0.0]; + mul [-0.0,-0.0] [-infinity, 3.0] = [0.0,0.0]; + mul [-0.0,-0.0] [-5.0, infinity] = [0.0,0.0]; + mul [-0.0,-0.0] [1.0, infinity] = [0.0,0.0]; + mul [-0.0,-0.0] [entire] = [0.0,0.0]; + + mul [1.0,5.0] [0.0,0.0] = [0.0,0.0]; + mul [1.0,5.0] [-0.0,-0.0] = [0.0,0.0]; + mul [1.0,5.0] [-5.0, -1.0] = [-25.0,-1.0]; + mul [1.0,5.0] [-5.0, 3.0] = [-25.0,15.0]; + mul [1.0,5.0] [1.0, 3.0] = [1.0,15.0]; + mul [1.0,5.0] [-infinity, -1.0] = [-infinity,-1.0]; + mul [1.0,5.0] [-infinity, 3.0] = [-infinity,15.0]; + mul [1.0,5.0] [-5.0, infinity] = [-25.0,infinity]; + mul [1.0,5.0] [1.0, infinity] = [1.0,infinity]; + mul [1.0,5.0] [entire] = [entire]; + + + mul [-1.0,5.0] [0.0,0.0] = [0.0,0.0]; + mul [-1.0,5.0] [-0.0,-0.0] = [0.0,0.0]; + mul [-1.0,5.0] [-5.0, -1.0] = [-25.0,5.0]; + + //min max + mul [-1.0,5.0] [-5.0, 3.0] = [-25.0,15.0]; + mul [-10.0,2.0] [-5.0, 3.0] = [-30.0,50.0]; + mul [-1.0,5.0] [-1.0, 10.0] = [-10.0,50.0]; + mul [-2.0,2.0] [-5.0, 3.0] = [-10.0,10.0]; + //end min max + + mul [-1.0,5.0] [1.0, 3.0] = [-3.0,15.0]; + mul [-1.0,5.0] [-infinity, -1.0] = [entire]; + mul [-1.0,5.0] [-infinity, 3.0] = [entire]; + mul [-1.0,5.0] [-5.0, infinity] = [entire]; + mul [-1.0,5.0] [1.0, infinity] = [entire]; + mul [-1.0,5.0] [entire] = [entire]; + + mul [-10.0,-5.0] [0.0,0.0] = [0.0,0.0]; + mul [-10.0,-5.0] [-0.0,-0.0] = [0.0,0.0]; + mul [-10.0,-5.0] [-5.0, -1.0] = [5.0,50.0]; + mul [-10.0,-5.0] [-5.0, 3.0] = [-30.0,50.0]; + mul [-10.0,-5.0] [1.0, 3.0] = [-30.0,-5.0]; + mul [-10.0,-5.0] [-infinity, -1.0] = [5.0,infinity]; + mul [-10.0,-5.0] [-infinity, 3.0] = [-30.0,infinity]; + mul [-10.0,-5.0] [-5.0, infinity] = [-infinity,50.0]; + mul [-10.0,-5.0] [1.0, infinity] = [-infinity,-5.0]; + mul [-10.0,-5.0] [entire] = [entire]; + + mul [0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0] [-0X1.FFFFFFFFFFFFP+0, infinity] = [-0X1.FFFFFFFFFFFE1P+1,infinity]; + mul [-0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0] [-0X1.FFFFFFFFFFFFP+0,-0X1.999999999999AP-4] = [-0X1.FFFFFFFFFFFE1P+1,0X1.999999999998EP-3]; + mul [-0X1.999999999999AP-4,0X1.999999999999AP-4] [-0X1.FFFFFFFFFFFFP+0,0X1.999999999999AP-4] = [-0X1.999999999998EP-3,0X1.999999999998EP-3]; + mul [-0X1.FFFFFFFFFFFFP+0,-0X1.999999999999AP-4] [0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0] = [-0X1.FFFFFFFFFFFE1P+1,-0X1.47AE147AE147BP-7]; +} + +testcase minimal_mul_dec_test { + mul [1.0,2.0]_com [5.0,7.0]_com = [5.0,14.0]_com; + mul [1.0,2.0]_com [5.0,7.0]_def = [5.0,14.0]_def; + mul [1.0,2.0]_com [5.0,0x1.FFFFFFFFFFFFFp1023]_com = [5.0,infinity]_dac; + mul [-0x1.FFFFFFFFFFFFFp1023,2.0]_com [-1.0, 5.0]_com = [-infinity,0x1.FFFFFFFFFFFFFp1023]_dac; + mul [1.0,2.0]_trv [empty]_trv = [empty]_trv; + mul [nai] [1.0,2.0]_trv = [nai]; +} + +testcase minimal_div_test { + div [empty] [empty] = [empty]; + div [-1.0,1.0] [empty] = [empty]; + div [empty] [-1.0,1.0] = [empty]; + div [empty] [0.1,1.0] = [empty]; + div [empty] [-1.0,-0.1] = [empty]; + div [empty] [entire] = [empty]; + div [entire] [empty] = [empty]; + div [0.0,0.0] [empty] = [empty]; + div [empty] [0.0,0.0] = [empty]; + div [-0.0,-0.0] [empty] = [empty]; + div [empty] [-0.0,-0.0] = [empty]; + + div [entire] [-5.0, -3.0] = [entire]; + div [entire] [3.0, 5.0] = [entire]; + div [entire] [-infinity, -3.0] = [entire]; + div [entire] [3.0,infinity] = [entire]; + div [entire] [0.0,0.0] = [empty]; + div [entire] [-0.0,-0.0] = [empty]; + div [entire] [-3.0, 0.0] = [entire]; + div [entire] [-3.0, -0.0] = [entire]; + div [entire] [-3.0, 3.0] = [entire]; + div [entire] [0.0, 3.0] = [entire]; + div [entire] [-infinity, 0.0] = [entire]; + div [entire] [-0.0, 3.0] = [entire]; + div [entire] [-infinity, -0.0] = [entire]; + div [entire] [-infinity, 3.0] = [entire]; + div [entire] [-3.0, infinity] = [entire]; + div [entire] [0.0, infinity] = [entire]; + div [entire] [-0.0, infinity] = [entire]; + div [entire] [entire] = [entire]; + + div [-30.0,-15.0] [-5.0, -3.0] = [3.0,10.0]; + div [-30.0,-15.0] [3.0, 5.0] = [-10.0,-3.0]; + div [-30.0,-15.0] [-infinity, -3.0] = [0.0,10.0]; + div [-30.0,-15.0] [3.0,infinity] = [-10.0,0.0]; + div [-30.0,-15.0] [0.0,0.0] = [empty]; + div [-30.0,-15.0] [-3.0, 0.0] = [5.0,infinity]; + div [-30.0,-15.0] [-0.0,-0.0] = [empty]; + div [-30.0,-15.0] [-3.0, -0.0] = [5.0,infinity]; + div [-30.0,-15.0] [-3.0, 3.0] = [entire]; + div [-30.0,-15.0] [0.0, 3.0] = [-infinity,-5.0]; + div [-30.0,-15.0] [-infinity, 0.0] = [0.0,infinity]; + div [-30.0,-15.0] [-0.0, 3.0] = [-infinity,-5.0]; + div [-30.0,-15.0] [-infinity, -0.0] = [0.0,infinity]; + div [-30.0,-15.0] [-infinity, 3.0] = [entire]; + div [-30.0,-15.0] [-3.0, infinity] = [entire]; + div [-30.0,-15.0] [0.0, infinity] = [-infinity,0.0]; + div [-30.0,-15.0] [-0.0, infinity] = [-infinity,0.0]; + div [-30.0,-15.0] [entire] = [entire]; + + div [-30.0,15.0] [-5.0, -3.0] = [-5.0,10.0]; + div [-30.0,15.0] [3.0, 5.0] = [-10.0,5.0]; + div [-30.0,15.0] [-infinity, -3.0] = [-5.0,10.0]; + div [-30.0,15.0] [3.0,infinity] = [-10.0,5.0]; + div [-30.0,15.0] [0.0,0.0] = [empty]; + div [-30.0,15.0] [-0.0,-0.0] = [empty]; + div [-30.0,15.0] [-3.0, 0.0] = [entire]; + div [-30.0,15.0] [-3.0, -0.0] = [entire]; + div [-30.0,15.0] [-3.0, 3.0] = [entire]; + div [-30.0,15.0] [0.0, 3.0] = [entire]; + div [-30.0,15.0] [-infinity, 0.0] = [entire]; + div [-30.0,15.0] [-0.0, 3.0] = [entire]; + div [-30.0,15.0] [-infinity, -0.0] = [entire]; + div [-30.0,15.0] [-infinity, 3.0] = [entire]; + div [-30.0,15.0] [-3.0, infinity] = [entire]; + div [-30.0,15.0] [0.0, infinity] = [entire]; + div [-30.0,15.0] [-0.0, infinity] = [entire]; + div [-30.0,15.0] [entire] = [entire]; + + div [15.0,30.0] [-5.0, -3.0] = [-10.0,-3.0]; + div [15.0,30.0] [3.0, 5.0] = [3.0,10.0]; + div [15.0,30.0] [-infinity, -3.0] = [-10.0,0.0]; + div [15.0,30.0] [3.0,infinity] = [0.0,10.0]; + div [15.0,30.0] [0.0,0.0] = [empty]; + div [15.0,30.0] [-3.0, 0.0] = [-infinity,-5.0]; + div [15.0,30.0] [-0.0,-0.0] = [empty]; + div [15.0,30.0] [-3.0, -0.0] = [-infinity,-5.0]; + div [15.0,30.0] [-3.0, 3.0] = [entire]; + div [15.0,30.0] [0.0, 3.0] = [5.0,infinity]; + div [15.0,30.0] [-infinity, 0.0] = [-infinity,0.0]; + div [15.0,30.0] [-0.0, 3.0] = [5.0,infinity]; + div [15.0,30.0] [-infinity, -0.0] = [-infinity,0.0]; + div [15.0,30.0] [-infinity, 3.0] = [entire]; + div [15.0,30.0] [-3.0, infinity] = [entire]; + div [15.0,30.0] [0.0, infinity] = [0.0,infinity]; + div [15.0,30.0] [-0.0, infinity] = [0.0,infinity]; + div [15.0,30.0] [entire] = [entire]; + + div [0.0,0.0] [-5.0, -3.0] = [0.0,0.0]; + div [0.0,0.0] [3.0, 5.0] = [0.0,0.0]; + div [0.0,0.0] [-infinity, -3.0] = [0.0,0.0]; + div [0.0,0.0] [3.0,infinity] = [0.0,0.0]; + div [0.0,0.0] [0.0,0.0] = [empty]; + div [0.0,0.0] [-3.0, 0.0] = [0.0,0.0]; + div [0.0,0.0] [-0.0,-0.0] = [empty]; + div [0.0,0.0] [-3.0, -0.0] = [0.0,0.0]; + div [0.0,0.0] [-3.0, 3.0] = [0.0,0.0]; + div [0.0,0.0] [0.0, 3.0] = [0.0,0.0]; + div [0.0,0.0] [-infinity, 0.0] = [0.0,0.0]; + div [0.0,0.0] [-0.0, 3.0] = [0.0,0.0]; + div [0.0,0.0] [-infinity, -0.0] = [0.0,0.0]; + div [0.0,0.0] [-infinity, 3.0] = [0.0,0.0]; + div [0.0,0.0] [-3.0, infinity] = [0.0,0.0]; + div [0.0,0.0] [0.0, infinity] = [0.0,0.0]; + div [0.0,0.0] [-0.0, infinity] = [0.0,0.0]; + div [0.0,0.0] [entire] = [0.0,0.0]; + + div [-0.0,-0.0] [-5.0, -3.0] = [0.0,0.0]; + div [-0.0,-0.0] [3.0, 5.0] = [0.0,0.0]; + div [-0.0,-0.0] [-infinity, -3.0] = [0.0,0.0]; + div [-0.0,-0.0] [3.0,infinity] = [0.0,0.0]; + div [-0.0,-0.0] [0.0,0.0] = [empty]; + div [-0.0,-0.0] [-3.0, 0.0] = [0.0,0.0]; + div [-0.0,-0.0] [-0.0,-0.0] = [empty]; + div [-0.0,-0.0] [-3.0, -0.0] = [0.0,0.0]; + div [-0.0,-0.0] [-3.0, 3.0] = [0.0,0.0]; + div [-0.0,-0.0] [0.0, 3.0] = [0.0,0.0]; + div [-0.0,-0.0] [-infinity, 0.0] = [0.0,0.0]; + div [-0.0,-0.0] [-0.0, 3.0] = [0.0,0.0]; + div [-0.0,-0.0] [-infinity, -0.0] = [0.0,0.0]; + div [-0.0,-0.0] [-infinity, 3.0] = [0.0,0.0]; + div [-0.0,-0.0] [-3.0, infinity] = [0.0,0.0]; + div [-0.0,-0.0] [0.0, infinity] = [0.0,0.0]; + div [-0.0,-0.0] [-0.0, infinity] = [0.0,0.0]; + div [-0.0,-0.0] [entire] = [0.0,0.0]; + + div [-infinity,-15.0] [-5.0, -3.0] = [3.0,infinity]; + div [-infinity,-15.0] [3.0, 5.0] = [-infinity,-3.0]; + div [-infinity,-15.0] [-infinity, -3.0] = [0.0,infinity]; + div [-infinity,-15.0] [3.0,infinity] = [-infinity,0.0]; + div [-infinity,-15.0] [0.0,0.0] = [empty]; + div [-infinity,-15.0] [-3.0, 0.0] = [5.0,infinity]; + div [-infinity,-15.0] [-0.0,-0.0] = [empty]; + div [-infinity,-15.0] [-3.0, -0.0] = [5.0,infinity]; + div [-infinity,-15.0] [-3.0, 3.0] = [entire]; + div [-infinity,-15.0] [0.0, 3.0] = [-infinity,-5.0]; + div [-infinity,-15.0] [-infinity, 0.0] = [0.0,infinity]; + div [-infinity,-15.0] [-0.0, 3.0] = [-infinity,-5.0]; + div [-infinity,-15.0] [-infinity, -0.0] = [0.0,infinity]; + div [-infinity,-15.0] [-infinity, 3.0] = [entire]; + div [-infinity,-15.0] [-3.0, infinity] = [entire]; + div [-infinity,-15.0] [0.0, infinity] = [-infinity,0.0]; + div [-infinity,-15.0] [-0.0, infinity] = [-infinity,0.0]; + div [-infinity,-15.0] [entire] = [entire]; + + div [-infinity,15.0] [-5.0, -3.0] = [-5.0,infinity]; + div [-infinity,15.0] [3.0, 5.0] = [-infinity,5.0]; + div [-infinity,15.0] [-infinity, -3.0] = [-5.0,infinity]; + div [-infinity,15.0] [3.0,infinity] = [-infinity,5.0]; + div [-infinity,15.0] [0.0,0.0] = [empty]; + div [-infinity,15.0] [-3.0, 0.0] = [entire]; + div [-infinity,15.0] [-0.0,-0.0] = [empty]; + div [-infinity,15.0] [-3.0, -0.0] = [entire]; + div [-infinity,15.0] [-3.0, 3.0] = [entire]; + div [-infinity,15.0] [0.0, 3.0] = [entire]; + div [-infinity,15.0] [-infinity, 0.0] = [entire]; + div [-infinity,15.0] [-0.0, 3.0] = [entire]; + div [-infinity,15.0] [-infinity, -0.0] = [entire]; + div [-infinity,15.0] [-infinity, 3.0] = [entire]; + div [-infinity,15.0] [-3.0, infinity] = [entire]; + div [-infinity,15.0] [0.0, infinity] = [entire]; + div [-infinity,15.0] [-0.0, infinity] = [entire]; + div [-infinity,15.0] [entire] = [entire]; + + div [-15.0,infinity] [-5.0, -3.0] = [-infinity,5.0]; + div [-15.0,infinity] [3.0, 5.0] = [-5.0,infinity]; + div [-15.0,infinity] [-infinity, -3.0] = [-infinity,5.0]; + div [-15.0,infinity] [3.0,infinity] = [-5.0,infinity]; + div [-15.0,infinity] [0.0,0.0] = [empty]; + div [-15.0,infinity] [-3.0, 0.0] = [entire]; + div [-15.0,infinity] [-0.0,-0.0] = [empty]; + div [-15.0,infinity] [-3.0, -0.0] = [entire]; + div [-15.0,infinity] [-3.0, 3.0] = [entire]; + div [-15.0,infinity] [0.0, 3.0] = [entire]; + div [-15.0,infinity] [-infinity, 0.0] = [entire]; + div [-15.0,infinity] [-0.0, 3.0] = [entire]; + div [-15.0,infinity] [-infinity, -0.0] = [entire]; + div [-15.0,infinity] [-infinity, 3.0] = [entire]; + div [-15.0,infinity] [-3.0, infinity] = [entire]; + div [-15.0,infinity] [0.0, infinity] = [entire]; + div [-15.0,infinity] [-0.0, infinity] = [entire]; + div [-15.0,infinity] [entire] = [entire]; + + div [15.0,infinity] [-5.0, -3.0] = [-infinity,-3.0]; + div [15.0,infinity] [3.0, 5.0] = [3.0,infinity]; + div [15.0,infinity] [-infinity, -3.0] = [-infinity,0.0]; + div [15.0,infinity] [3.0,infinity] = [0.0,infinity]; + div [15.0,infinity] [0.0,0.0] = [empty]; + div [15.0,infinity] [-3.0, 0.0] = [-infinity,-5.0]; + div [15.0,infinity] [-0.0,-0.0] = [empty]; + div [15.0,infinity] [-3.0, -0.0] = [-infinity,-5.0]; + div [15.0,infinity] [-3.0, 3.0] = [entire]; + div [15.0,infinity] [0.0, 3.0] = [5.0,infinity]; + div [15.0,infinity] [-infinity, 0.0] = [-infinity,0.0]; + div [15.0,infinity] [-0.0, 3.0] = [5.0,infinity]; + div [15.0,infinity] [-infinity, -0.0] = [-infinity,0.0]; + div [15.0,infinity] [-infinity, 3.0] = [entire]; + div [15.0,infinity] [-3.0, infinity] = [entire]; + div [15.0,infinity] [0.0, infinity] = [0.0,infinity]; + div [15.0,infinity] [-0.0, infinity] = [0.0,infinity]; + div [15.0,infinity] [entire] = [entire]; + + div [-30.0,0.0] [-5.0, -3.0] = [0.0,10.0]; + div [-30.0,0.0] [3.0, 5.0] = [-10.0,0.0]; + div [-30.0,0.0] [-infinity, -3.0] = [0.0,10.0]; + div [-30.0,0.0] [3.0,infinity] = [-10.0,0.0]; + div [-30.0,0.0] [0.0,0.0] = [empty]; + div [-30.0,0.0] [-3.0, 0.0] = [0.0,infinity]; + div [-30.0,0.0] [-0.0,-0.0] = [empty]; + div [-30.0,0.0] [-3.0, -0.0] = [0.0,infinity]; + div [-30.0,0.0] [-3.0, 3.0] = [entire]; + div [-30.0,0.0] [0.0, 3.0] = [-infinity,0.0]; + div [-30.0,0.0] [-infinity, 0.0] = [0.0,infinity]; + div [-30.0,0.0] [-0.0, 3.0] = [-infinity,0.0]; + div [-30.0,0.0] [-infinity, -0.0] = [0.0,infinity]; + div [-30.0,0.0] [-infinity, 3.0] = [entire]; + div [-30.0,0.0] [-3.0, infinity] = [entire]; + div [-30.0,0.0] [0.0, infinity] = [-infinity,0.0]; + div [-30.0,0.0] [-0.0, infinity] = [-infinity,0.0]; + div [-30.0,0.0] [entire] = [entire]; + + div [-30.0,-0.0] [-5.0, -3.0] = [0.0,10.0]; + div [-30.0,-0.0] [3.0, 5.0] = [-10.0,0.0]; + div [-30.0,-0.0] [-infinity, -3.0] = [0.0,10.0]; + div [-30.0,-0.0] [3.0,infinity] = [-10.0,0.0]; + div [-30.0,-0.0] [0.0,0.0] = [empty]; + div [-30.0,-0.0] [-3.0, 0.0] = [0.0,infinity]; + div [-30.0,-0.0] [-0.0,-0.0] = [empty]; + div [-30.0,-0.0] [-3.0, -0.0] = [0.0,infinity]; + div [-30.0,-0.0] [-3.0, 3.0] = [entire]; + div [-30.0,-0.0] [0.0, 3.0] = [-infinity,0.0]; + div [-30.0,-0.0] [-infinity, 0.0] = [0.0,infinity]; + div [-30.0,-0.0] [-0.0, 3.0] = [-infinity,0.0]; + div [-30.0,-0.0] [-infinity, -0.0] = [0.0,infinity]; + div [-30.0,-0.0] [-infinity, 3.0] = [entire]; + div [-30.0,-0.0] [-3.0, infinity] = [entire]; + div [-30.0,-0.0] [0.0, infinity] = [-infinity,0.0]; + div [-30.0,-0.0] [-0.0, infinity] = [-infinity,0.0]; + div [-30.0,-0.0] [entire] = [entire]; + + div [0.0,30.0] [-5.0, -3.0] = [-10.0,0.0]; + div [0.0,30.0] [3.0, 5.0] = [0.0,10.0]; + div [0.0,30.0] [-infinity, -3.0] = [-10.0,0.0]; + div [0.0,30.0] [3.0,infinity] = [0.0,10.0]; + div [0.0,30.0] [0.0,0.0] = [empty]; + div [0.0,30.0] [-3.0, 0.0] = [-infinity,0.0]; + div [0.0,30.0] [-0.0,-0.0] = [empty]; + div [0.0,30.0] [-3.0, -0.0] = [-infinity,0.0]; + div [0.0,30.0] [-3.0, 3.0] = [entire]; + div [0.0,30.0] [0.0, 3.0] = [0.0,infinity]; + div [0.0,30.0] [-infinity, 0.0] = [-infinity,0.0]; + div [0.0,30.0] [-0.0, 3.0] = [0.0,infinity]; + div [0.0,30.0] [-infinity, -0.0] = [-infinity,0.0]; + div [0.0,30.0] [-infinity, 3.0] = [entire]; + div [0.0,30.0] [-3.0, infinity] = [entire]; + div [0.0,30.0] [0.0, infinity] = [0.0,infinity]; + div [0.0,30.0] [-0.0, infinity] = [0.0,infinity]; + div [0.0,30.0] [entire] = [entire]; + + div [-0.0,30.0] [-5.0, -3.0] = [-10.0,0.0]; + div [-0.0,30.0] [3.0, 5.0] = [0.0,10.0]; + div [-0.0,30.0] [-infinity, -3.0] = [-10.0,0.0]; + div [-0.0,30.0] [3.0,infinity] = [0.0,10.0]; + div [-0.0,30.0] [0.0,0.0] = [empty]; + div [-0.0,30.0] [-3.0, 0.0] = [-infinity,0.0]; + div [-0.0,30.0] [-0.0,-0.0] = [empty]; + div [-0.0,30.0] [-3.0, -0.0] = [-infinity,0.0]; + div [-0.0,30.0] [-3.0, 3.0] = [entire]; + div [-0.0,30.0] [0.0, 3.0] = [0.0,infinity]; + div [-0.0,30.0] [-infinity, 0.0] = [-infinity,0.0]; + div [-0.0,30.0] [-0.0, 3.0] = [0.0,infinity]; + div [-0.0,30.0] [-infinity, -0.0] = [-infinity,0.0]; + div [-0.0,30.0] [-infinity, 3.0] = [entire]; + div [-0.0,30.0] [-3.0, infinity] = [entire]; + div [-0.0,30.0] [0.0, infinity] = [0.0,infinity]; + div [-0.0,30.0] [-0.0, infinity] = [0.0,infinity]; + div [-0.0,30.0] [entire] = [entire]; + + div [-infinity,0.0] [-5.0, -3.0] = [0.0,infinity]; + div [-infinity,0.0] [3.0, 5.0] = [-infinity,0.0]; + div [-infinity,0.0] [-infinity, -3.0] = [0.0,infinity]; + div [-infinity,0.0] [3.0,infinity] = [-infinity,0.0]; + div [-infinity,0.0] [0.0,0.0] = [empty]; + div [-infinity,0.0] [-3.0, 0.0] = [0.0,infinity]; + div [-infinity,0.0] [-0.0,-0.0] = [empty]; + div [-infinity,0.0] [-3.0, -0.0] = [0.0,infinity]; + div [-infinity,0.0] [-3.0, 3.0] = [entire]; + div [-infinity,0.0] [0.0, 3.0] = [-infinity,0.0]; + div [-infinity,0.0] [-infinity, 0.0] = [0.0,infinity]; + div [-infinity,0.0] [-0.0, 3.0] = [-infinity,0.0]; + div [-infinity,0.0] [-infinity, -0.0] = [0.0,infinity]; + div [-infinity,0.0] [-infinity, 3.0] = [entire]; + div [-infinity,0.0] [-3.0, infinity] = [entire]; + div [-infinity,0.0] [0.0, infinity] = [-infinity,0.0]; + div [-infinity,0.0] [-0.0, infinity] = [-infinity,0.0]; + div [-infinity,0.0] [entire] = [entire]; + + div [-infinity,-0.0] [-5.0, -3.0] = [0.0,infinity]; + div [-infinity,-0.0] [3.0, 5.0] = [-infinity,0.0]; + div [-infinity,-0.0] [-infinity, -3.0] = [0.0,infinity]; + div [-infinity,-0.0] [3.0,infinity] = [-infinity,0.0]; + div [-infinity,-0.0] [0.0,0.0] = [empty]; + div [-infinity,-0.0] [-3.0, 0.0] = [0.0,infinity]; + div [-infinity,-0.0] [-0.0,-0.0] = [empty]; + div [-infinity,-0.0] [-3.0, -0.0] = [0.0,infinity]; + div [-infinity,-0.0] [-3.0, 3.0] = [entire]; + div [-infinity,-0.0] [0.0, 3.0] = [-infinity,0.0]; + div [-infinity,-0.0] [-infinity, 0.0] = [0.0,infinity]; + div [-infinity,-0.0] [-0.0, 3.0] = [-infinity,0.0]; + div [-infinity,-0.0] [-infinity, -0.0] = [0.0,infinity]; + div [-infinity,-0.0] [-infinity, 3.0] = [entire]; + div [-infinity,-0.0] [-3.0, infinity] = [entire]; + div [-infinity,-0.0] [0.0, infinity] = [-infinity,0.0]; + div [-infinity,-0.0] [-0.0, infinity] = [-infinity,0.0]; + div [-infinity,-0.0] [entire] = [entire]; + + div [0.0,infinity] [-5.0, -3.0] = [-infinity,0.0]; + div [0.0,infinity] [3.0, 5.0] = [0.0,infinity]; + div [0.0,infinity] [-infinity, -3.0] = [-infinity,0.0]; + div [0.0,infinity] [3.0,infinity] = [0.0,infinity]; + div [0.0,infinity] [0.0,0.0] = [empty]; + div [0.0,infinity] [-3.0, 0.0] = [-infinity,0.0]; + div [0.0,infinity] [-0.0,-0.0] = [empty]; + div [0.0,infinity] [-3.0, -0.0] = [-infinity,0.0]; + div [0.0,infinity] [-3.0, 3.0] = [entire]; + div [0.0,infinity] [0.0, 3.0] = [0.0,infinity]; + div [0.0,infinity] [-infinity, 0.0] = [-infinity,0.0]; + div [0.0,infinity] [-0.0, 3.0] = [0.0,infinity]; + div [0.0,infinity] [-infinity, -0.0] = [-infinity,0.0]; + div [0.0,infinity] [-infinity, 3.0] = [entire]; + div [0.0,infinity] [-3.0, infinity] = [entire]; + div [0.0,infinity] [0.0, infinity] = [0.0,infinity]; + div [0.0,infinity] [-0.0, infinity] = [0.0,infinity]; + div [0.0,infinity] [entire] = [entire]; + + div [-0.0,infinity] [-5.0, -3.0] = [-infinity,0.0]; + div [-0.0,infinity] [3.0, 5.0] = [0.0,infinity]; + div [-0.0,infinity] [-infinity, -3.0] = [-infinity,0.0]; + div [-0.0,infinity] [3.0,infinity] = [0.0,infinity]; + div [-0.0,infinity] [0.0,0.0] = [empty]; + div [-0.0,infinity] [-3.0, 0.0] = [-infinity,0.0]; + div [-0.0,infinity] [-0.0,-0.0] = [empty]; + div [-0.0,infinity] [-3.0, -0.0] = [-infinity,0.0]; + div [-0.0,infinity] [-3.0, 3.0] = [entire]; + div [-0.0,infinity] [0.0, 3.0] = [0.0,infinity]; + div [-0.0,infinity] [-infinity, 0.0] = [-infinity,0.0]; + div [-0.0,infinity] [-0.0, 3.0] = [0.0,infinity]; + div [-0.0,infinity] [-infinity, -0.0] = [-infinity,0.0]; + div [-0.0,infinity] [-infinity, 3.0] = [entire]; + div [-0.0,infinity] [-3.0, infinity] = [entire]; + div [-0.0,infinity] [0.0, infinity] = [0.0,infinity]; + div [-0.0,infinity] [-0.0, infinity] = [0.0,infinity]; + div [-0.0,infinity] [entire] = [entire]; + + div [-2.0,-1.0] [-10.0, -3.0] = [0X1.9999999999999P-4,0X1.5555555555556P-1]; + div [-2.0,-1.0] [0.0, 10.0] = [-infinity,-0X1.9999999999999P-4]; + div [-2.0,-1.0] [-0.0, 10.0] = [-infinity,-0X1.9999999999999P-4]; + div [-1.0,2.0] [10.0,infinity] = [-0X1.999999999999AP-4,0X1.999999999999AP-3]; + div [1.0,3.0] [-infinity, -10.0] = [-0X1.3333333333334P-2,0.0]; + div [-infinity,-1.0] [1.0, 3.0] = [-infinity,-0X1.5555555555555P-2]; +} + +testcase minimal_div_dec_test { + div [-2.0,-1.0]_com [-10.0, -3.0]_com = [0X1.9999999999999P-4,0X1.5555555555556P-1]_com; + div [-200.0,-1.0]_com [0x0.0000000000001p-1022, 10.0]_com = [-infinity,-0X1.9999999999999P-4]_dac; + div [-2.0,-1.0]_com [0.0, 10.0]_com = [-infinity,-0X1.9999999999999P-4]_trv; + div [1.0,3.0]_def [-infinity, -10.0]_dac = [-0X1.3333333333334P-2,0.0]_def; + div [1.0,2.0]_trv [empty]_trv = [empty]_trv; + div [nai] [1.0,2.0]_trv = [nai]; +} + +testcase minimal_recip_test { + recip [-50.0, -10.0] = [-0X1.999999999999AP-4,-0X1.47AE147AE147AP-6]; + recip [10.0, 50.0] = [0X1.47AE147AE147AP-6,0X1.999999999999AP-4]; + recip [-infinity, -10.0] = [-0X1.999999999999AP-4,0.0]; + recip [10.0,infinity] = [0.0,0X1.999999999999AP-4]; + recip [0.0,0.0] = [empty]; + recip [-0.0,-0.0] = [empty]; + recip [-10.0, 0.0] = [-infinity,-0X1.9999999999999P-4]; + recip [-10.0, -0.0] = [-infinity,-0X1.9999999999999P-4]; + recip [-10.0, 10.0] = [entire]; + recip [0.0, 10.0] = [0X1.9999999999999P-4,infinity]; + recip [-0.0, 10.0] = [0X1.9999999999999P-4,infinity]; + recip [-infinity, 0.0] = [-infinity,0.0]; + recip [-infinity, -0.0] = [-infinity,0.0]; + recip [-infinity, 10.0] = [entire]; + recip [-10.0, infinity] = [entire]; + recip [0.0, infinity] = [0.0,infinity]; + recip [-0.0, infinity] = [0.0,infinity]; + recip [entire] = [entire]; +} + +testcase minimal_recip_dec_test { + recip [10.0, 50.0]_com = [0X1.47AE147AE147AP-6,0X1.999999999999AP-4]_com; + recip [-infinity, -10.0]_dac = [-0X1.999999999999AP-4,0.0]_dac; + recip [-0x1.FFFFFFFFFFFFFp1023, -0x0.0000000000001p-1022]_def = [-infinity,-0X0.4P-1022]_def; + recip [0.0,0.0]_com = [empty]_trv; + recip [-10.0, 0.0]_com = [-infinity,-0X1.9999999999999P-4]_trv; + recip [-10.0, infinity]_dac = [entire]_trv; + recip [-0.0, infinity]_dac = [0.0,infinity]_trv; + recip [entire]_dac = [entire]_trv; +} + +testcase minimal_sqr_test { + sqr [empty] = [empty]; + sqr [entire] = [0.0,infinity]; + sqr [-infinity,-0x0.0000000000001p-1022] = [0.0,infinity]; + sqr [-1.0,1.0] = [0.0,1.0]; + sqr [0.0,1.0] = [0.0,1.0]; + sqr [-0.0,1.0] = [0.0,1.0]; + sqr [-5.0,3.0] = [0.0,25.0]; + sqr [-5.0,0.0] = [0.0,25.0]; + sqr [-5.0,-0.0] = [0.0,25.0]; + sqr [0X1.999999999999AP-4,0X1.999999999999AP-4] = [0X1.47AE147AE147BP-7,0X1.47AE147AE147CP-7]; + sqr [-0X1.FFFFFFFFFFFFP+0,0X1.999999999999AP-4] = [0.0,0X1.FFFFFFFFFFFE1P+1]; + sqr [-0X1.FFFFFFFFFFFFP+0,-0X1.FFFFFFFFFFFFP+0] = [0X1.FFFFFFFFFFFEP+1,0X1.FFFFFFFFFFFE1P+1]; +} + +testcase minimal_sqr_dec_test { + sqr [-0x1.FFFFFFFFFFFFFp1023,-0x0.0000000000001p-1022]_com = [0.0,infinity]_dac; + sqr [-1.0,1.0]_def = [0.0,1.0]_def; + sqr [-5.0,3.0]_com = [0.0,25.0]_com; + sqr [0X1.999999999999AP-4,0X1.999999999999AP-4]_com = [0X1.47AE147AE147BP-7,0X1.47AE147AE147CP-7]_com; +} + +testcase minimal_sqrt_test { + sqrt [empty] = [empty]; + sqrt [entire] = [0.0,infinity]; + sqrt [-infinity,-0x0.0000000000001p-1022] = [empty]; + sqrt [-1.0,1.0] = [0.0,1.0]; + sqrt [0.0,1.0] = [0.0,1.0]; + sqrt [-0.0,1.0] = [0.0,1.0]; + sqrt [-5.0,25.0] = [0.0,5.0]; + sqrt [0.0,25.0] = [0.0,5.0]; + sqrt [-0.0,25.0] = [0.0,5.0]; + sqrt [-5.0,infinity] = [0.0,infinity]; + sqrt [0X1.999999999999AP-4,0X1.999999999999AP-4] = [0X1.43D136248490FP-2,0X1.43D136248491P-2]; + sqrt [-0X1.FFFFFFFFFFFFP+0,0X1.999999999999AP-4] = [0.0,0X1.43D136248491P-2]; + sqrt [0X1.999999999999AP-4,0X1.FFFFFFFFFFFFP+0] = [0X1.43D136248490FP-2,0X1.6A09E667F3BC7P+0]; +} + +testcase minimal_sqrt_dec_test { + sqrt [1.0,4.0]_com = [1.0,2.0]_com; + sqrt [-5.0,25.0]_com = [0.0,5.0]_trv; + sqrt [0.0,25.0]_def = [0.0,5.0]_def; + + sqrt [-5.0,infinity]_dac = [0.0,infinity]_trv; +} + +testcase minimal_fma_test { + fma [empty] [empty] [empty] = [empty]; + fma [-1.0,1.0] [empty] [empty] = [empty]; + fma [empty] [-1.0,1.0] [empty] = [empty]; + fma [empty] [entire] [empty] = [empty]; + fma [entire] [empty] [empty] = [empty]; + fma [0.0,0.0] [empty] [empty] = [empty]; + fma [-0.0,-0.0] [empty] [empty] = [empty]; + fma [empty] [0.0,0.0] [empty] = [empty]; + fma [empty] [-0.0,-0.0] [empty] = [empty]; + + fma [entire] [0.0,0.0] [empty] = [empty]; + fma [entire] [-0.0,-0.0] [empty] = [empty]; + fma [entire] [-5.0, -1.0] [empty] = [empty]; + fma [entire] [-5.0, 3.0] [empty] = [empty]; + fma [entire] [1.0, 3.0] [empty] = [empty]; + fma [entire] [-infinity, -1.0] [empty] = [empty]; + fma [entire] [-infinity, 3.0] [empty] = [empty]; + fma [entire] [-5.0, infinity] [empty] = [empty]; + fma [entire] [1.0, infinity] [empty] = [empty]; + fma [entire] [entire] [empty] = [empty]; + + fma [1.0,infinity] [0.0,0.0] [empty] = [empty]; + fma [1.0,infinity] [-0.0,-0.0] [empty] = [empty]; + fma [1.0,infinity] [-5.0, -1.0] [empty] = [empty]; + fma [1.0,infinity] [-5.0, 3.0] [empty] = [empty]; + fma [1.0,infinity] [1.0, 3.0] [empty] = [empty]; + fma [1.0,infinity] [-infinity, -1.0] [empty] = [empty]; + fma [1.0,infinity] [-infinity, 3.0] [empty] = [empty]; + fma [1.0,infinity] [-5.0, infinity] [empty] = [empty]; + fma [1.0,infinity] [1.0, infinity] [empty] = [empty]; + fma [1.0,infinity] [entire] [empty] = [empty]; + + fma [-1.0,infinity] [0.0,0.0] [empty] = [empty]; + fma [-1.0,infinity] [-0.0,-0.0] [empty] = [empty]; + fma [-1.0,infinity] [-5.0, -1.0] [empty] = [empty]; + fma [-1.0,infinity] [-5.0, 3.0] [empty] = [empty]; + fma [-1.0,infinity] [1.0, 3.0] [empty] = [empty]; + fma [-1.0,infinity] [-infinity, -1.0] [empty] = [empty]; + fma [-1.0,infinity] [-infinity, 3.0] [empty] = [empty]; + fma [-1.0,infinity] [-5.0, infinity] [empty] = [empty]; + fma [-1.0,infinity] [1.0, infinity] [empty] = [empty]; + fma [-1.0,infinity] [entire] [empty] = [empty]; + + fma [-infinity,3.0] [0.0,0.0] [empty] = [empty]; + fma [-infinity,3.0] [-0.0,-0.0] [empty] = [empty]; + fma [-infinity,3.0] [-5.0, -1.0] [empty] = [empty]; + fma [-infinity,3.0] [-5.0, 3.0] [empty] = [empty]; + fma [-infinity,3.0] [1.0, 3.0] [empty] = [empty]; + fma [-infinity,3.0] [-infinity, -1.0] [empty] = [empty]; + fma [-infinity,3.0] [-infinity, 3.0] [empty] = [empty]; + fma [-infinity,3.0] [-5.0, infinity] [empty] = [empty]; + fma [-infinity,3.0] [1.0, infinity] [empty] = [empty]; + fma [-infinity,3.0] [entire] [empty] = [empty]; + + fma [-infinity,-3.0] [0.0,0.0] [empty] = [empty]; + fma [-infinity,-3.0] [-0.0,-0.0] [empty] = [empty]; + fma [-infinity,-3.0] [-5.0, -1.0] [empty] = [empty]; + fma [-infinity,-3.0] [-5.0, 3.0] [empty] = [empty]; + fma [-infinity,-3.0] [1.0, 3.0] [empty] = [empty]; + fma [-infinity,-3.0] [-infinity, -1.0] [empty] = [empty]; + fma [-infinity,-3.0] [-infinity, 3.0] [empty] = [empty]; + fma [-infinity,-3.0] [-5.0, infinity] [empty] = [empty]; + fma [-infinity,-3.0] [1.0, infinity] [empty] = [empty]; + fma [-infinity,-3.0] [entire] [empty] = [empty]; + + fma [0.0,0.0] [0.0,0.0] [empty] = [empty]; + fma [0.0,0.0] [-0.0,-0.0] [empty] = [empty]; + fma [0.0,0.0] [-5.0, -1.0] [empty] = [empty]; + fma [0.0,0.0] [-5.0, 3.0] [empty] = [empty]; + fma [0.0,0.0] [1.0, 3.0] [empty] = [empty]; + fma [0.0,0.0] [-infinity, -1.0] [empty] = [empty]; + fma [0.0,0.0] [-infinity, 3.0] [empty] = [empty]; + fma [0.0,0.0] [-5.0, infinity] [empty] = [empty]; + fma [0.0,0.0] [1.0, infinity] [empty] = [empty]; + fma [0.0,0.0] [entire] [empty] = [empty]; + + fma [-0.0,-0.0] [0.0,0.0] [empty] = [empty]; + fma [-0.0,-0.0] [-0.0,-0.0] [empty] = [empty]; + fma [-0.0,-0.0] [-5.0, -1.0] [empty] = [empty]; + fma [-0.0,-0.0] [-5.0, 3.0] [empty] = [empty]; + fma [-0.0,-0.0] [1.0, 3.0] [empty] = [empty]; + fma [-0.0,-0.0] [-infinity, -1.0] [empty] = [empty]; + fma [-0.0,-0.0] [-infinity, 3.0] [empty] = [empty]; + fma [-0.0,-0.0] [-5.0, infinity] [empty] = [empty]; + fma [-0.0,-0.0] [1.0, infinity] [empty] = [empty]; + fma [-0.0,-0.0] [entire] [empty] = [empty]; + + fma [1.0,5.0] [0.0,0.0] [empty] = [empty]; + fma [1.0,5.0] [-0.0,-0.0] [empty] = [empty]; + fma [1.0,5.0] [-5.0, -1.0] [empty] = [empty]; + fma [1.0,5.0] [-5.0, 3.0] [empty] = [empty]; + fma [1.0,5.0] [1.0, 3.0] [empty] = [empty]; + fma [1.0,5.0] [-infinity, -1.0] [empty] = [empty]; + fma [1.0,5.0] [-infinity, 3.0] [empty] = [empty]; + fma [1.0,5.0] [-5.0, infinity] [empty] = [empty]; + fma [1.0,5.0] [1.0, infinity] [empty] = [empty]; + fma [1.0,5.0] [entire] [empty] = [empty]; + + fma [-1.0,5.0] [0.0,0.0] [empty] = [empty]; + fma [-1.0,5.0] [-0.0,-0.0] [empty] = [empty]; + fma [-1.0,5.0] [-5.0, -1.0] [empty] = [empty]; + //min max + fma [-1.0,5.0] [-5.0, 3.0] [empty] = [empty]; + fma [-10.0,2.0] [-5.0, 3.0] [empty] = [empty]; + fma [-1.0,5.0] [-1.0, 10.0] [empty] = [empty]; + fma [-2.0,2.0] [-5.0, 3.0] [empty] = [empty]; + //end min max + fma [-1.0,5.0] [1.0, 3.0] [empty] = [empty]; + fma [-1.0,5.0] [-infinity, -1.0] [empty] = [empty]; + fma [-1.0,5.0] [-infinity, 3.0] [empty] = [empty]; + fma [-1.0,5.0] [-5.0, infinity] [empty] = [empty]; + fma [-1.0,5.0] [1.0, infinity] [empty] = [empty]; + fma [-1.0,5.0] [entire] [empty] = [empty]; + + fma [-10.0,-5.0] [0.0,0.0] [empty] = [empty]; + fma [-10.0,-5.0] [-0.0,-0.0] [empty] = [empty]; + fma [-10.0,-5.0] [-5.0, -1.0] [empty] = [empty]; + fma [-10.0,-5.0] [-5.0, 3.0] [empty] = [empty]; + fma [-10.0,-5.0] [1.0, 3.0] [empty] = [empty]; + fma [-10.0,-5.0] [-infinity, -1.0] [empty] = [empty]; + fma [-10.0,-5.0] [-infinity, 3.0] [empty] = [empty]; + fma [-10.0,-5.0] [-5.0, infinity] [empty] = [empty]; + fma [-10.0,-5.0] [1.0, infinity] [empty] = [empty]; + fma [-10.0,-5.0] [entire] [empty] = [empty]; + + + + fma [empty] [empty] [-infinity,2.0] = [empty]; + fma [-1.0,1.0] [empty] [-infinity,2.0] = [empty]; + fma [empty] [-1.0,1.0] [-infinity,2.0] = [empty]; + fma [empty] [entire] [-infinity,2.0] = [empty]; + fma [entire] [empty] [-infinity,2.0] = [empty]; + fma [0.0,0.0] [empty] [-infinity,2.0] = [empty]; + fma [-0.0,-0.0] [empty] [-infinity,2.0] = [empty]; + fma [empty] [0.0,0.0] [-infinity,2.0] = [empty]; + fma [empty] [-0.0,-0.0] [-infinity,2.0] = [empty]; + + fma [entire] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [entire] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [entire] [-5.0, -1.0] [-infinity,2.0] = [entire]; + fma [entire] [-5.0, 3.0] [-infinity,2.0] = [entire]; + fma [entire] [1.0, 3.0] [-infinity,2.0] = [entire]; + fma [entire] [-infinity, -1.0] [-infinity,2.0] = [entire]; + fma [entire] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [entire] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [entire] [1.0, infinity] [-infinity,2.0] = [entire]; + fma [entire] [entire] [-infinity,2.0] = [entire]; + + fma [1.0,infinity] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [1.0,infinity] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [1.0,infinity] [-5.0, -1.0] [-infinity,2.0] = [-infinity,1.0]; + fma [1.0,infinity] [-5.0, 3.0] [-infinity,2.0] = [entire]; + fma [1.0,infinity] [1.0, 3.0] [-infinity,2.0] = [entire]; + fma [1.0,infinity] [-infinity, -1.0] [-infinity,2.0] = [-infinity,1.0]; + fma [1.0,infinity] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [1.0,infinity] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [1.0,infinity] [1.0, infinity] [-infinity,2.0] = [entire]; + fma [1.0,infinity] [entire] [-infinity,2.0] = [entire]; + + fma [-1.0,infinity] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-1.0,infinity] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-1.0,infinity] [-5.0, -1.0] [-infinity,2.0] = [-infinity,7.0]; + fma [-1.0,infinity] [-5.0, 3.0] [-infinity,2.0] = [entire]; + fma [-1.0,infinity] [1.0, 3.0] [-infinity,2.0] = [entire]; + fma [-1.0,infinity] [-infinity, -1.0] [-infinity,2.0] = [entire]; + fma [-1.0,infinity] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [-1.0,infinity] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [-1.0,infinity] [1.0, infinity] [-infinity,2.0] = [entire]; + fma [-1.0,infinity] [entire] [-infinity,2.0] = [entire]; + + fma [-infinity,3.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-infinity,3.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-infinity,3.0] [-5.0, -1.0] [-infinity,2.0] = [entire]; + fma [-infinity,3.0] [-5.0, 3.0] [-infinity,2.0] = [entire]; + fma [-infinity,3.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,11.0]; + fma [-infinity,3.0] [-infinity, -1.0] [-infinity,2.0] = [entire]; + fma [-infinity,3.0] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [-infinity,3.0] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [-infinity,3.0] [1.0, infinity] [-infinity,2.0] = [entire]; + fma [-infinity,3.0] [entire] [-infinity,2.0] = [entire]; + + fma [-infinity,-3.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-infinity,-3.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-infinity,-3.0] [-5.0, -1.0] [-infinity,2.0] = [entire]; + fma [-infinity,-3.0] [-5.0, 3.0] [-infinity,2.0] = [entire]; + fma [-infinity,-3.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,-1.0]; + fma [-infinity,-3.0] [-infinity, -1.0] [-infinity,2.0] = [entire]; + fma [-infinity,-3.0] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [-infinity,-3.0] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [-infinity,-3.0] [1.0, infinity] [-infinity,2.0] = [-infinity,-1.0]; + fma [-infinity,-3.0] [entire] [-infinity,2.0] = [entire]; + + fma [0.0,0.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [-5.0, -1.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [-infinity, -1.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [-infinity, 3.0] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [-5.0, infinity] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [1.0, infinity] [-infinity,2.0] = [-infinity,2.0]; + fma [0.0,0.0] [entire] [-infinity,2.0] = [-infinity,2.0]; + + fma [-0.0,-0.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [-5.0, -1.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [-infinity, -1.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [-infinity, 3.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [-5.0, infinity] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [1.0, infinity] [-infinity,2.0] = [-infinity,2.0]; + fma [-0.0,-0.0] [entire] [-infinity,2.0] = [-infinity,2.0]; + + fma [1.0,5.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [1.0,5.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [1.0,5.0] [-5.0, -1.0] [-infinity,2.0] = [-infinity,1.0]; + fma [1.0,5.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,17.0]; + fma [1.0,5.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,17.0]; + fma [1.0,5.0] [-infinity, -1.0] [-infinity,2.0] = [-infinity,1.0]; + fma [1.0,5.0] [-infinity, 3.0] [-infinity,2.0] = [-infinity,17.0]; + fma [1.0,5.0] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [1.0,5.0] [1.0, infinity] [-infinity,2.0] = [entire]; + fma [1.0,5.0] [entire] [-infinity,2.0] = [entire]; + + fma [-1.0,5.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-1.0,5.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-1.0,5.0] [-5.0, -1.0] [-infinity,2.0] = [-infinity,7.0]; + //min max + fma [-1.0,5.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,17.0]; + fma [-10.0,2.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,52.0]; + fma [-1.0,5.0] [-1.0, 10.0] [-infinity,2.0] = [-infinity,52.0]; + fma [-2.0,2.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,12.0]; + //end min max + fma [-1.0,5.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,17.0]; + fma [-1.0,5.0] [-infinity, -1.0] [-infinity,2.0] = [entire]; + fma [-1.0,5.0] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [-1.0,5.0] [-5.0, infinity] [-infinity,2.0] = [entire]; + fma [-1.0,5.0] [1.0, infinity] [-infinity,2.0] = [entire]; + fma [-1.0,5.0] [entire] [-infinity,2.0] = [entire]; + + fma [-10.0,-5.0] [0.0,0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-10.0,-5.0] [-0.0,-0.0] [-infinity,2.0] = [-infinity,2.0]; + fma [-10.0,-5.0] [-5.0, -1.0] [-infinity,2.0] = [-infinity,52.0]; + fma [-10.0,-5.0] [-5.0, 3.0] [-infinity,2.0] = [-infinity,52.0]; + fma [-10.0,-5.0] [1.0, 3.0] [-infinity,2.0] = [-infinity,-3.0]; + fma [-10.0,-5.0] [-infinity, -1.0] [-infinity,2.0] = [entire]; + fma [-10.0,-5.0] [-infinity, 3.0] [-infinity,2.0] = [entire]; + fma [-10.0,-5.0] [-5.0, infinity] [-infinity,2.0] = [-infinity,52.0]; + fma [-10.0,-5.0] [1.0, infinity] [-infinity,2.0] = [-infinity,-3.0]; + fma [-10.0,-5.0] [entire] [-infinity,2.0] = [entire]; + + + + fma [empty] [empty] [-2.0,2.0] = [empty]; + fma [-1.0,1.0] [empty] [-2.0,2.0] = [empty]; + fma [empty] [-1.0,1.0] [-2.0,2.0] = [empty]; + fma [empty] [entire] [-2.0,2.0] = [empty]; + fma [entire] [empty] [-2.0,2.0] = [empty]; + fma [0.0,0.0] [empty] [-2.0,2.0] = [empty]; + fma [-0.0,-0.0] [empty] [-2.0,2.0] = [empty]; + fma [empty] [0.0,0.0] [-2.0,2.0] = [empty]; + fma [empty] [-0.0,-0.0] [-2.0,2.0] = [empty]; + + fma [entire] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [entire] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [entire] [-5.0, -1.0] [-2.0,2.0] = [entire]; + fma [entire] [-5.0, 3.0] [-2.0,2.0] = [entire]; + fma [entire] [1.0, 3.0] [-2.0,2.0] = [entire]; + fma [entire] [-infinity, -1.0] [-2.0,2.0] = [entire]; + fma [entire] [-infinity, 3.0] [-2.0,2.0] = [entire]; + fma [entire] [-5.0, infinity] [-2.0,2.0] = [entire]; + fma [entire] [1.0, infinity] [-2.0,2.0] = [entire]; + fma [entire] [entire] [-2.0,2.0] = [entire]; + + fma [1.0,infinity] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [1.0,infinity] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [1.0,infinity] [-5.0, -1.0] [-2.0,2.0] = [-infinity,1.0]; + fma [1.0,infinity] [-5.0, 3.0] [-2.0,2.0] = [entire]; + fma [1.0,infinity] [1.0, 3.0] [-2.0,2.0] = [-1.0,infinity]; + fma [1.0,infinity] [-infinity, -1.0] [-2.0,2.0] = [-infinity,1.0]; + fma [1.0,infinity] [-infinity, 3.0] [-2.0,2.0] = [entire]; + fma [1.0,infinity] [-5.0, infinity] [-2.0,2.0] = [entire]; + fma [1.0,infinity] [1.0, infinity] [-2.0,2.0] = [-1.0,infinity]; + fma [1.0,infinity] [entire] [-2.0,2.0] = [entire]; + + fma [-1.0,infinity] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-1.0,infinity] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-1.0,infinity] [-5.0, -1.0] [-2.0,2.0] = [-infinity,7.0]; + fma [-1.0,infinity] [-5.0, 3.0] [-2.0,2.0] = [entire]; + fma [-1.0,infinity] [1.0, 3.0] [-2.0,2.0] = [-5.0,infinity]; + fma [-1.0,infinity] [-infinity, -1.0] [-2.0,2.0] = [entire]; + fma [-1.0,infinity] [-infinity, 3.0] [-2.0,2.0] = [entire]; + fma [-1.0,infinity] [-5.0, infinity] [-2.0,2.0] = [entire]; + fma [-1.0,infinity] [1.0, infinity] [-2.0,2.0] = [entire]; + fma [-1.0,infinity] [entire] [-2.0,2.0] = [entire]; + + fma [-infinity,3.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-infinity,3.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-infinity,3.0] [-5.0, -1.0] [-2.0,2.0] = [-17.0,infinity]; + fma [-infinity,3.0] [-5.0, 3.0] [-2.0,2.0] = [entire]; + fma [-infinity,3.0] [1.0, 3.0] [-2.0,2.0] = [-infinity,11.0]; + fma [-infinity,3.0] [-infinity, -1.0] [-2.0,2.0] = [entire]; + fma [-infinity,3.0] [-infinity, 3.0] [-2.0,2.0] = [entire]; + fma [-infinity,3.0] [-5.0, infinity] [-2.0,2.0] = [entire]; + fma [-infinity,3.0] [1.0, infinity] [-2.0,2.0] = [entire]; + fma [-infinity,3.0] [entire] [-2.0,2.0] = [entire]; + + fma [-infinity,-3.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-infinity,-3.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-infinity,-3.0] [-5.0, -1.0] [-2.0,2.0] = [1.0,infinity]; + fma [-infinity,-3.0] [-5.0, 3.0] [-2.0,2.0] = [entire]; + fma [-infinity,-3.0] [1.0, 3.0] [-2.0,2.0] = [-infinity,-1.0]; + fma [-infinity,-3.0] [-infinity, -1.0] [-2.0,2.0] = [1.0,infinity]; + fma [-infinity,-3.0] [-infinity, 3.0] [-2.0,2.0] = [entire]; + fma [-infinity,-3.0] [-5.0, infinity] [-2.0,2.0] = [entire]; + fma [-infinity,-3.0] [1.0, infinity] [-2.0,2.0] = [-infinity,-1.0]; + fma [-infinity,-3.0] [entire] [-2.0,2.0] = [entire]; + + fma [0.0,0.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [-5.0, -1.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [-5.0, 3.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [1.0, 3.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [-infinity, -1.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [-infinity, 3.0] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [-5.0, infinity] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [1.0, infinity] [-2.0,2.0] = [-2.0,2.0]; + fma [0.0,0.0] [entire] [-2.0,2.0] = [-2.0,2.0]; + + fma [-0.0,-0.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [-5.0, -1.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [-5.0, 3.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [1.0, 3.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [-infinity, -1.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [-infinity, 3.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [-5.0, infinity] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [1.0, infinity] [-2.0,2.0] = [-2.0,2.0]; + fma [-0.0,-0.0] [entire] [-2.0,2.0] = [-2.0,2.0]; + + fma [1.0,5.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [1.0,5.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [1.0,5.0] [-5.0, -1.0] [-2.0,2.0] = [-27.0,1.0]; + fma [1.0,5.0] [-5.0, 3.0] [-2.0,2.0] = [-27.0,17.0]; + fma [1.0,5.0] [1.0, 3.0] [-2.0,2.0] = [-1.0,17.0]; + fma [1.0,5.0] [-infinity, -1.0] [-2.0,2.0] = [-infinity,1.0]; + fma [1.0,5.0] [-infinity, 3.0] [-2.0,2.0] = [-infinity,17.0]; + fma [1.0,5.0] [-5.0, infinity] [-2.0,2.0] = [-27.0,infinity]; + fma [1.0,5.0] [1.0, infinity] [-2.0,2.0] = [-1.0,infinity]; + fma [1.0,5.0] [entire] [-2.0,2.0] = [entire]; + + fma [-1.0,5.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-1.0,5.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-1.0,5.0] [-5.0, -1.0] [-2.0,2.0] = [-27.0,7.0]; + //min max + fma [-1.0,5.0] [-5.0, 3.0] [-2.0,2.0] = [-27.0,17.0]; + fma [-10.0,2.0] [-5.0, 3.0] [-2.0,2.0] = [-32.0,52.0]; + fma [-1.0,5.0] [-1.0, 10.0] [-2.0,2.0] = [-12.0,52.0]; + fma [-2.0,2.0] [-5.0, 3.0] [-2.0,2.0] = [-12.0,12.0]; + //end min max + fma [-1.0,5.0] [1.0, 3.0] [-2.0,2.0] = [-5.0,17.0]; + fma [-1.0,5.0] [-infinity, -1.0] [-2.0,2.0] = [entire]; + fma [-1.0,5.0] [-infinity, 3.0] [-2.0,2.0] = [entire]; + fma [-1.0,5.0] [-5.0, infinity] [-2.0,2.0] = [entire]; + fma [-1.0,5.0] [1.0, infinity] [-2.0,2.0] = [entire]; + fma [-1.0,5.0] [entire] [-2.0,2.0] = [entire]; + + fma [-10.0,-5.0] [0.0,0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-10.0,-5.0] [-0.0,-0.0] [-2.0,2.0] = [-2.0,2.0]; + fma [-10.0,-5.0] [-5.0, -1.0] [-2.0,2.0] = [3.0,52.0]; + fma [-10.0,-5.0] [-5.0, 3.0] [-2.0,2.0] = [-32.0,52.0]; + fma [-10.0,-5.0] [1.0, 3.0] [-2.0,2.0] = [-32.0,-3.0]; + fma [-10.0,-5.0] [-infinity, -1.0] [-2.0,2.0] = [3.0,infinity]; + fma [-10.0,-5.0] [-infinity, 3.0] [-2.0,2.0] = [-32.0,infinity]; + fma [-10.0,-5.0] [-5.0, infinity] [-2.0,2.0] = [-infinity,52.0]; + fma [-10.0,-5.0] [1.0, infinity] [-2.0,2.0] = [-infinity,-3.0]; + fma [-10.0,-5.0] [entire] [-2.0,2.0] = [entire]; + + + + fma [empty] [empty] [-2.0,infinity] = [empty]; + fma [-1.0,1.0] [empty] [-2.0,infinity] = [empty]; + fma [empty] [-1.0,1.0] [-2.0,infinity] = [empty]; + fma [empty] [entire] [-2.0,infinity] = [empty]; + fma [entire] [empty] [-2.0,infinity] = [empty]; + fma [0.0,0.0] [empty] [-2.0,infinity] = [empty]; + fma [-0.0,-0.0] [empty] [-2.0,infinity] = [empty]; + fma [empty] [0.0,0.0] [-2.0,infinity] = [empty]; + fma [empty] [-0.0,-0.0] [-2.0,infinity] = [empty]; + + fma [entire] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [entire] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [entire] [-5.0, -1.0] [-2.0,infinity] = [entire]; + fma [entire] [-5.0, 3.0] [-2.0,infinity] = [entire]; + fma [entire] [1.0, 3.0] [-2.0,infinity] = [entire]; + fma [entire] [-infinity, -1.0] [-2.0,infinity] = [entire]; + fma [entire] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [entire] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [entire] [1.0, infinity] [-2.0,infinity] = [entire]; + fma [entire] [entire] [-2.0,infinity] = [entire]; + + fma [1.0,infinity] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [1.0,infinity] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [1.0,infinity] [-5.0, -1.0] [-2.0,infinity] = [entire]; + fma [1.0,infinity] [-5.0, 3.0] [-2.0,infinity] = [entire]; + fma [1.0,infinity] [1.0, 3.0] [-2.0,infinity] = [-1.0,infinity]; + fma [1.0,infinity] [-infinity, -1.0] [-2.0,infinity] = [entire]; + fma [1.0,infinity] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [1.0,infinity] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [1.0,infinity] [1.0, infinity] [-2.0,infinity] = [-1.0,infinity]; + fma [1.0,infinity] [entire] [-2.0,infinity] = [entire]; + + fma [-1.0,infinity] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-1.0,infinity] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-1.0,infinity] [-5.0, -1.0] [-2.0,infinity] = [entire]; + fma [-1.0,infinity] [-5.0, 3.0] [-2.0,infinity] = [entire]; + fma [-1.0,infinity] [1.0, 3.0] [-2.0,infinity] = [-5.0,infinity]; + fma [-1.0,infinity] [-infinity, -1.0] [-2.0,infinity] = [entire]; + fma [-1.0,infinity] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [-1.0,infinity] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [-1.0,infinity] [1.0, infinity] [-2.0,infinity] = [entire]; + fma [-1.0,infinity] [entire] [-2.0,infinity] = [entire]; + + fma [-infinity,3.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-infinity,3.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-infinity,3.0] [-5.0, -1.0] [-2.0,infinity] = [-17.0,infinity]; + fma [-infinity,3.0] [-5.0, 3.0] [-2.0,infinity] = [entire]; + fma [-infinity,3.0] [1.0, 3.0] [-2.0,infinity] = [entire]; + fma [-infinity,3.0] [-infinity, -1.0] [-2.0,infinity] = [entire]; + fma [-infinity,3.0] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [-infinity,3.0] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [-infinity,3.0] [1.0, infinity] [-2.0,infinity] = [entire]; + fma [-infinity,3.0] [entire] [-2.0,infinity] = [entire]; + + fma [-infinity,-3.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-infinity,-3.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-infinity,-3.0] [-5.0, -1.0] [-2.0,infinity] = [1.0,infinity]; + fma [-infinity,-3.0] [-5.0, 3.0] [-2.0,infinity] = [entire]; + fma [-infinity,-3.0] [1.0, 3.0] [-2.0,infinity] = [entire]; + fma [-infinity,-3.0] [-infinity, -1.0] [-2.0,infinity] = [1.0,infinity]; + fma [-infinity,-3.0] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [-infinity,-3.0] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [-infinity,-3.0] [1.0, infinity] [-2.0,infinity] = [entire]; + fma [-infinity,-3.0] [entire] [-2.0,infinity] = [entire]; + + fma [0.0,0.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [-5.0, -1.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [-5.0, 3.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [1.0, 3.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [-infinity, -1.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [-infinity, 3.0] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [-5.0, infinity] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [1.0, infinity] [-2.0,infinity] = [-2.0,infinity]; + fma [0.0,0.0] [entire] [-2.0,infinity] = [-2.0,infinity]; + + fma [-0.0,-0.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [-5.0, -1.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [-5.0, 3.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [1.0, 3.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [-infinity, -1.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [-infinity, 3.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [-5.0, infinity] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [1.0, infinity] [-2.0,infinity] = [-2.0,infinity]; + fma [-0.0,-0.0] [entire] [-2.0,infinity] = [-2.0,infinity]; + + fma [1.0,5.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [1.0,5.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [1.0,5.0] [-5.0, -1.0] [-2.0,infinity] = [-27.0,infinity]; + fma [1.0,5.0] [-5.0, 3.0] [-2.0,infinity] = [-27.0,infinity]; + fma [1.0,5.0] [1.0, 3.0] [-2.0,infinity] = [-1.0,infinity]; + fma [1.0,5.0] [-infinity, -1.0] [-2.0,infinity] = [entire]; + fma [1.0,5.0] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [1.0,5.0] [-5.0, infinity] [-2.0,infinity] = [-27.0,infinity]; + fma [1.0,5.0] [1.0, infinity] [-2.0,infinity] = [-1.0,infinity]; + fma [1.0,5.0] [entire] [-2.0,infinity] = [entire]; + + fma [-1.0,5.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-1.0,5.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-1.0,5.0] [-5.0, -1.0] [-2.0,infinity] = [-27.0,infinity]; + //min max + fma [-1.0,5.0] [-5.0, 3.0] [-2.0,infinity] = [-27.0,infinity]; + fma [-10.0,2.0] [-5.0, 3.0] [-2.0,infinity] = [-32.0,infinity]; + fma [-1.0,5.0] [-1.0, 10.0] [-2.0,infinity] = [-12.0,infinity]; + fma [-2.0,2.0] [-5.0, 3.0] [-2.0,infinity] = [-12.0,infinity]; + //end min max + fma [-1.0,5.0] [1.0, 3.0] [-2.0,infinity] = [-5.0,infinity]; + fma [-1.0,5.0] [-infinity, -1.0] [-2.0,infinity] = [entire]; + fma [-1.0,5.0] [-infinity, 3.0] [-2.0,infinity] = [entire]; + fma [-1.0,5.0] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [-1.0,5.0] [1.0, infinity] [-2.0,infinity] = [entire]; + fma [-1.0,5.0] [entire] [-2.0,infinity] = [entire]; + + fma [-10.0,-5.0] [0.0,0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-10.0,-5.0] [-0.0,-0.0] [-2.0,infinity] = [-2.0,infinity]; + fma [-10.0,-5.0] [-5.0, -1.0] [-2.0,infinity] = [3.0,infinity]; + fma [-10.0,-5.0] [-5.0, 3.0] [-2.0,infinity] = [-32.0,infinity]; + fma [-10.0,-5.0] [1.0, 3.0] [-2.0,infinity] = [-32.0,infinity]; + fma [-10.0,-5.0] [-infinity, -1.0] [-2.0,infinity] = [3.0,infinity]; + fma [-10.0,-5.0] [-infinity, 3.0] [-2.0,infinity] = [-32.0,infinity]; + fma [-10.0,-5.0] [-5.0, infinity] [-2.0,infinity] = [entire]; + fma [-10.0,-5.0] [1.0, infinity] [-2.0,infinity] = [entire]; + fma [-10.0,-5.0] [entire] [-2.0,infinity] = [entire]; + + + + fma [empty] [empty] [entire] = [empty]; + fma [-1.0,1.0] [empty] [entire] = [empty]; + fma [empty] [-1.0,1.0] [entire] = [empty]; + fma [empty] [entire] [entire] = [empty]; + fma [entire] [empty] [entire] = [empty]; + fma [0.0,0.0] [empty] [entire] = [empty]; + fma [-0.0,-0.0] [empty] [entire] = [empty]; + fma [empty] [0.0,0.0] [entire] = [empty]; + fma [empty] [-0.0,-0.0] [entire] = [empty]; + + fma [entire] [0.0,0.0] [entire] = [entire]; + fma [entire] [-0.0,-0.0] [entire] = [entire]; + fma [entire] [-5.0, -1.0] [entire] = [entire]; + fma [entire] [-5.0, 3.0] [entire] = [entire]; + fma [entire] [1.0, 3.0] [entire] = [entire]; + fma [entire] [-infinity, -1.0] [entire] = [entire]; + fma [entire] [-infinity, 3.0] [entire] = [entire]; + fma [entire] [-5.0, infinity] [entire] = [entire]; + fma [entire] [1.0, infinity] [entire] = [entire]; + fma [entire] [entire] [entire] = [entire]; + + fma [1.0,infinity] [0.0,0.0] [entire] = [entire]; + fma [1.0,infinity] [-0.0,-0.0] [entire] = [entire]; + fma [1.0,infinity] [-5.0, -1.0] [entire] = [entire]; + fma [1.0,infinity] [-5.0, 3.0] [entire] = [entire]; + fma [1.0,infinity] [1.0, 3.0] [entire] = [entire]; + fma [1.0,infinity] [-infinity, -1.0] [entire] = [entire]; + fma [1.0,infinity] [-infinity, 3.0] [entire] = [entire]; + fma [1.0,infinity] [-5.0, infinity] [entire] = [entire]; + fma [1.0,infinity] [1.0, infinity] [entire] = [entire]; + fma [1.0,infinity] [entire] [entire] = [entire]; + + fma [-1.0,infinity] [0.0,0.0] [entire] = [entire]; + fma [-1.0,infinity] [-0.0,-0.0] [entire] = [entire]; + fma [-1.0,infinity] [-5.0, -1.0] [entire] = [entire]; + fma [-1.0,infinity] [-5.0, 3.0] [entire] = [entire]; + fma [-1.0,infinity] [1.0, 3.0] [entire] = [entire]; + fma [-1.0,infinity] [-infinity, -1.0] [entire] = [entire]; + fma [-1.0,infinity] [-infinity, 3.0] [entire] = [entire]; + fma [-1.0,infinity] [-5.0, infinity] [entire] = [entire]; + fma [-1.0,infinity] [1.0, infinity] [entire] = [entire]; + fma [-1.0,infinity] [entire] [entire] = [entire]; + + fma [-infinity,3.0] [0.0,0.0] [entire] = [entire]; + fma [-infinity,3.0] [-0.0,-0.0] [entire] = [entire]; + fma [-infinity,3.0] [-5.0, -1.0] [entire] = [entire]; + fma [-infinity,3.0] [-5.0, 3.0] [entire] = [entire]; + fma [-infinity,3.0] [1.0, 3.0] [entire] = [entire]; + fma [-infinity,3.0] [-infinity, -1.0] [entire] = [entire]; + fma [-infinity,3.0] [-infinity, 3.0] [entire] = [entire]; + fma [-infinity,3.0] [-5.0, infinity] [entire] = [entire]; + fma [-infinity,3.0] [1.0, infinity] [entire] = [entire]; + fma [-infinity,3.0] [entire] [entire] = [entire]; + + fma [-infinity,-3.0] [0.0,0.0] [entire] = [entire]; + fma [-infinity,-3.0] [-0.0,-0.0] [entire] = [entire]; + fma [-infinity,-3.0] [-5.0, -1.0] [entire] = [entire]; + fma [-infinity,-3.0] [-5.0, 3.0] [entire] = [entire]; + fma [-infinity,-3.0] [1.0, 3.0] [entire] = [entire]; + fma [-infinity,-3.0] [-infinity, -1.0] [entire] = [entire]; + fma [-infinity,-3.0] [-infinity, 3.0] [entire] = [entire]; + fma [-infinity,-3.0] [-5.0, infinity] [entire] = [entire]; + fma [-infinity,-3.0] [1.0, infinity] [entire] = [entire]; + fma [-infinity,-3.0] [entire] [entire] = [entire]; + + fma [0.0,0.0] [0.0,0.0] [entire] = [entire]; + fma [0.0,0.0] [-0.0,-0.0] [entire] = [entire]; + fma [0.0,0.0] [-5.0, -1.0] [entire] = [entire]; + fma [0.0,0.0] [-5.0, 3.0] [entire] = [entire]; + fma [0.0,0.0] [1.0, 3.0] [entire] = [entire]; + fma [0.0,0.0] [-infinity, -1.0] [entire] = [entire]; + fma [0.0,0.0] [-infinity, 3.0] [entire] = [entire]; + fma [0.0,0.0] [-5.0, infinity] [entire] = [entire]; + fma [0.0,0.0] [1.0, infinity] [entire] = [entire]; + fma [0.0,0.0] [entire] [entire] = [entire]; + + fma [-0.0,-0.0] [0.0,0.0] [entire] = [entire]; + fma [-0.0,-0.0] [-0.0,-0.0] [entire] = [entire]; + fma [-0.0,-0.0] [-5.0, -1.0] [entire] = [entire]; + fma [-0.0,-0.0] [-5.0, 3.0] [entire] = [entire]; + fma [-0.0,-0.0] [1.0, 3.0] [entire] = [entire]; + fma [-0.0,-0.0] [-infinity, -1.0] [entire] = [entire]; + fma [-0.0,-0.0] [-infinity, 3.0] [entire] = [entire]; + fma [-0.0,-0.0] [-5.0, infinity] [entire] = [entire]; + fma [-0.0,-0.0] [1.0, infinity] [entire] = [entire]; + fma [-0.0,-0.0] [entire] [entire] = [entire]; + + fma [1.0,5.0] [0.0,0.0] [entire] = [entire]; + fma [1.0,5.0] [-0.0,-0.0] [entire] = [entire]; + fma [1.0,5.0] [-5.0, -1.0] [entire] = [entire]; + fma [1.0,5.0] [-5.0, 3.0] [entire] = [entire]; + fma [1.0,5.0] [1.0, 3.0] [entire] = [entire]; + fma [1.0,5.0] [-infinity, -1.0] [entire] = [entire]; + fma [1.0,5.0] [-infinity, 3.0] [entire] = [entire]; + fma [1.0,5.0] [-5.0, infinity] [entire] = [entire]; + fma [1.0,5.0] [1.0, infinity] [entire] = [entire]; + fma [1.0,5.0] [entire] [entire] = [entire]; + + fma [-1.0,5.0] [0.0,0.0] [entire] = [entire]; + fma [-1.0,5.0] [-0.0,-0.0] [entire] = [entire]; + fma [-1.0,5.0] [-5.0, -1.0] [entire] = [entire]; + //min max + fma [-1.0,5.0] [-5.0, 3.0] [entire] = [entire]; + fma [-10.0,2.0] [-5.0, 3.0] [entire] = [entire]; + fma [-1.0,5.0] [-1.0, 10.0] [entire] = [entire]; + fma [-2.0,2.0] [-5.0, 3.0] [entire] = [entire]; + //end min max + fma [-1.0,5.0] [1.0, 3.0] [entire] = [entire]; + fma [-1.0,5.0] [-infinity, -1.0] [entire] = [entire]; + fma [-1.0,5.0] [-infinity, 3.0] [entire] = [entire]; + fma [-1.0,5.0] [-5.0, infinity] [entire] = [entire]; + fma [-1.0,5.0] [1.0, infinity] [entire] = [entire]; + fma [-1.0,5.0] [entire] [entire] = [entire]; + + fma [-10.0,-5.0] [0.0,0.0] [entire] = [entire]; + fma [-10.0,-5.0] [-0.0,-0.0] [entire] = [entire]; + fma [-10.0,-5.0] [-5.0, -1.0] [entire] = [entire]; + fma [-10.0,-5.0] [-5.0, 3.0] [entire] = [entire]; + fma [-10.0,-5.0] [1.0, 3.0] [entire] = [entire]; + fma [-10.0,-5.0] [-infinity, -1.0] [entire] = [entire]; + fma [-10.0,-5.0] [-infinity, 3.0] [entire] = [entire]; + fma [-10.0,-5.0] [-5.0, infinity] [entire] = [entire]; + fma [-10.0,-5.0] [1.0, infinity] [entire] = [entire]; + fma [-10.0,-5.0] [entire] [entire] = [entire]; + + + fma [0.1,0.5] [-5.0, 3.0] [-0.1,0.1] = [-0X1.4CCCCCCCCCCCDP+1,0X1.999999999999AP+0]; + fma [-0.5,0.2] [-5.0, 3.0] [-0.1,0.1] = [-0X1.999999999999AP+0,0X1.4CCCCCCCCCCCDP+1]; + fma [-0.5,-0.1] [2.0, 3.0] [-0.1,0.1] = [-0X1.999999999999AP+0,-0X1.999999999999AP-4]; + fma [-0.5,-0.1] [-infinity, 3.0] [-0.1,0.1] = [-0X1.999999999999AP+0,infinity]; +} + +testcase minimal_fma_dec_test { + fma [-0.5,-0.1]_com [-infinity, 3.0]_dac [-0.1,0.1]_com = [-0X1.999999999999AP+0,infinity]_dac; + fma [1.0,2.0]_com [1.0, 0x1.FFFFFFFFFFFFFp1023]_com [0.0,1.0]_com = [1.0,infinity]_dac; + fma [1.0,2.0]_com [1.0, 2.0]_com [2.0,5.0]_com = [3.0,9.0]_com; +} + +testcase minimal_pown_test { + pown [empty] 0 = [empty]; + pown [entire] 0 = [1.0,1.0]; + pown [0.0,0.0] 0 = [1.0,1.0]; + pown [-0.0,-0.0] 0 = [1.0,1.0]; + pown [13.1,13.1] 0 = [1.0,1.0]; + pown [-7451.145,-7451.145] 0 = [1.0,1.0]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] 0 = [1.0,1.0]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] 0 = [1.0,1.0]; + pown [0.0,infinity] 0 = [1.0,1.0]; + pown [-0.0,infinity] 0 = [1.0,1.0]; + pown [-infinity,0.0] 0 = [1.0,1.0]; + pown [-infinity,-0.0] 0 = [1.0,1.0]; + pown [-324.3,2.5] 0 = [1.0,1.0]; + + pown [empty] 2 = [empty]; + pown [entire] 2 = [0.0,infinity]; + pown [0.0,0.0] 2 = [0.0,0.0]; + pown [-0.0,-0.0] 2 = [0.0,0.0]; + pown [13.1,13.1] 2 = [0X1.573851EB851EBP+7,0X1.573851EB851ECP+7]; + pown [-7451.145,-7451.145] 2 = [0X1.A794A4E7CFAADP+25,0X1.A794A4E7CFAAEP+25]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] 2 = [0x1.FFFFFFFFFFFFFp1023,infinity]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] 2 = [0x1.FFFFFFFFFFFFFp1023,infinity]; + pown [0.0,infinity] 2 = [0.0,infinity]; + pown [-0.0,infinity] 2 = [0.0,infinity]; + pown [-infinity,0.0] 2 = [0.0,infinity]; + pown [-infinity,-0.0] 2 = [0.0,infinity]; + pown [-324.3,2.5] 2 = [0.0,0X1.9AD27D70A3D72P+16]; + pown [0.01,2.33] 2 = [0X1.A36E2EB1C432CP-14,0X1.5B7318FC50482P+2]; + pown [-1.9,-0.33] 2 = [0X1.BE0DED288CE7P-4,0X1.CE147AE147AE1P+1]; + + pown [empty] 8 = [empty]; + pown [entire] 8 = [0.0,infinity]; + pown [0.0,0.0] 8 = [0.0,0.0]; + pown [-0.0,-0.0] 8 = [0.0,0.0]; + pown [13.1,13.1] 8 = [0X1.9D8FD495853F5P+29,0X1.9D8FD495853F6P+29]; + pown [-7451.145,-7451.145] 8 = [0X1.DFB1BB622E70DP+102,0X1.DFB1BB622E70EP+102]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] 8 = [0x1.FFFFFFFFFFFFFp1023,infinity]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] 8 = [0x1.FFFFFFFFFFFFFp1023,infinity]; + pown [0.0,infinity] 8 = [0.0,infinity]; + pown [-0.0,infinity] 8 = [0.0,infinity]; + pown [-infinity,0.0] 8 = [0.0,infinity]; + pown [-infinity,-0.0] 8 = [0.0,infinity]; + pown [-324.3,2.5] 8 = [0.0,0X1.A87587109655P+66]; + pown [0.01,2.33] 8 = [0X1.CD2B297D889BDP-54,0X1.B253D9F33CE4DP+9]; + pown [-1.9,-0.33] 8 = [0X1.26F1FCDD502A3P-13,0X1.53ABD7BFC4FC6P+7]; + + + pown [empty] 1 = [empty]; + pown [entire] 1 = [entire]; + pown [0.0,0.0] 1 = [0.0,0.0]; + pown [-0.0,-0.0] 1 = [0.0,0.0]; + pown [13.1,13.1] 1 = [13.1,13.1]; + pown [-7451.145,-7451.145] 1 = [-7451.145,-7451.145]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] 1 = [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] 1 = [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023]; + pown [0.0,infinity] 1 = [0.0,infinity]; + pown [-0.0,infinity] 1 = [0.0,infinity]; + pown [-infinity,0.0] 1 = [-infinity,0.0]; + pown [-infinity,-0.0] 1 = [-infinity,0.0]; + pown [-324.3,2.5] 1 = [-324.3,2.5]; + pown [0.01,2.33] 1 = [0.01,2.33]; + pown [-1.9,-0.33] 1 = [-1.9,-0.33]; + + pown [empty] 3 = [empty]; + pown [entire] 3 = [entire]; + pown [0.0,0.0] 3 = [0.0,0.0]; + pown [-0.0,-0.0] 3 = [0.0,0.0]; + pown [13.1,13.1] 3 = [0X1.1902E978D4FDEP+11,0X1.1902E978D4FDFP+11]; + pown [-7451.145,-7451.145] 3 = [-0X1.81460637B9A3DP+38,-0X1.81460637B9A3CP+38]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] 3 = [0x1.FFFFFFFFFFFFFp1023,infinity]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] 3 = [-infinity,-0x1.FFFFFFFFFFFFFp1023]; + pown [0.0,infinity] 3 = [0.0,infinity]; + pown [-0.0,infinity] 3 = [0.0,infinity]; + pown [-infinity,0.0] 3 = [-infinity,0.0]; + pown [-infinity,-0.0] 3 = [-infinity,0.0]; + pown [-324.3,2.5] 3 = [-0X1.0436D2F418938P+25,0X1.F4P+3]; + pown [0.01,2.33] 3 = [0X1.0C6F7A0B5ED8DP-20,0X1.94C75E6362A6P+3]; + pown [-1.9,-0.33] 3 = [-0X1.B6F9DB22D0E55P+2,-0X1.266559F6EC5B1P-5]; + + pown [empty] 7 = [empty]; + pown [entire] 7 = [entire]; + pown [0.0,0.0] 7 = [0.0,0.0]; + pown [-0.0,-0.0] 7 = [0.0,0.0]; + pown [13.1,13.1] 7 = [0X1.F91D1B185493BP+25,0X1.F91D1B185493CP+25]; + pown [-7451.145,-7451.145] 7 = [-0X1.07B1DA32F9B59P+90,-0X1.07B1DA32F9B58P+90]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] 7 = [0x1.FFFFFFFFFFFFFp1023,infinity]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] 7 = [-infinity,-0x1.FFFFFFFFFFFFFp1023]; + pown [0.0,infinity] 7 = [0.0,infinity]; + pown [-0.0,infinity] 7 = [0.0,infinity]; + pown [-infinity,0.0] 7 = [-infinity,0.0]; + pown [-infinity,-0.0] 7 = [-infinity,0.0]; + pown [-324.3,2.5] 7 = [-0X1.4F109959E6D7FP+58,0X1.312DP+9]; + pown [0.01,2.33] 7 = [0X1.6849B86A12B9BP-47,0X1.74D0373C76313P+8]; + pown [-1.9,-0.33] 7 = [-0X1.658C775099757P+6,-0X1.BEE30301BF47AP-12]; + + + pown [empty] -2 = [empty]; + pown [entire] -2 = [0.0,infinity]; + pown [0.0,0.0] -2 = [empty]; + pown [-0.0,-0.0] -2 = [empty]; + pown [13.1,13.1] -2 = [0X1.7DE3A077D1568P-8,0X1.7DE3A077D1569P-8]; + pown [-7451.145,-7451.145] -2 = [0X1.3570290CD6E14P-26,0X1.3570290CD6E15P-26]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] -2 = [0X0P+0,0X0.0000000000001P-1022]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] -2 = [0X0P+0,0X0.0000000000001P-1022]; + pown [0.0,infinity] -2 = [0.0,infinity]; + pown [-0.0,infinity] -2 = [0.0,infinity]; + pown [-infinity,0.0] -2 = [0.0,infinity]; + pown [-infinity,-0.0] -2 = [0.0,infinity]; + pown [-324.3,2.5] -2 = [0X1.3F0C482C977C9P-17,infinity]; + pown [0.01,2.33] -2 = [0X1.793D85EF38E47P-3,0X1.388P+13]; + pown [-1.9,-0.33] -2 = [0X1.1BA81104F6C8P-2,0X1.25D8FA1F801E1P+3]; + + pown [empty] -8 = [empty]; + pown [entire] -8 = [0.0,infinity]; + pown [0.0,0.0] -8 = [empty]; + pown [-0.0,-0.0] -8 = [empty]; + pown [13.1,13.1] -8 = [0X1.3CEF39247CA6DP-30,0X1.3CEF39247CA6EP-30]; + pown [-7451.145,-7451.145] -8 = [0X1.113D9EF0A99ACP-103,0X1.113D9EF0A99ADP-103]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] -8 = [0X0P+0,0X0.0000000000001P-1022]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] -8 = [0X0P+0,0X0.0000000000001P-1022]; + pown [0.0,infinity] -8 = [0.0,infinity]; + pown [-0.0,infinity] -8 = [0.0,infinity]; + pown [-infinity,0.0] -8 = [0.0,infinity]; + pown [-infinity,-0.0] -8 = [0.0,infinity]; + pown [-324.3,2.5] -8 = [0X1.34CC3764D1E0CP-67,infinity]; + pown [0.01,2.33] -8 = [0X1.2DC80DB11AB7CP-10,0X1.1C37937E08P+53]; + pown [-1.9,-0.33] -8 = [0X1.81E104E61630DP-8,0X1.BC64F21560E34P+12]; + + + pown [empty] -1 = [empty]; + pown [entire] -1 = [entire]; + pown [0.0,0.0] -1 = [empty]; + pown [-0.0,-0.0] -1 = [empty]; + pown [13.1,13.1] -1 = [0X1.38ABF82EE6986P-4,0X1.38ABF82EE6987P-4]; + pown [-7451.145,-7451.145] -1 = [-0X1.197422C9048BFP-13,-0X1.197422C9048BEP-13]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] -1 = [0X0.4P-1022,0X0.4000000000001P-1022]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] -1 = [-0X0.4000000000001P-1022,-0X0.4P-1022]; + pown [0.0,infinity] -1 = [0.0,infinity]; + pown [-0.0,infinity] -1 = [0.0,infinity]; + pown [-infinity,0.0] -1 = [-infinity,0.0]; + pown [-infinity,-0.0] -1 = [-infinity,0.0]; + pown [-324.3,2.5] -1 = [entire]; + pown [0.01,2.33] -1 = [0X1.B77C278DBBE13P-2,0X1.9P+6]; + pown [-1.9,-0.33] -1 = [-0X1.83E0F83E0F83EP+1,-0X1.0D79435E50D79P-1]; + + pown [empty] -3 = [empty]; + pown [entire] -3 = [entire]; + pown [0.0,0.0] -3 = [empty]; + pown [-0.0,-0.0] -3 = [empty]; + pown [13.1,13.1] -3 = [0X1.D26DF4D8B1831P-12,0X1.D26DF4D8B1832P-12]; + pown [-7451.145,-7451.145] -3 = [-0X1.54347DED91B19P-39,-0X1.54347DED91B18P-39]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] -3 = [0X0P+0,0X0.0000000000001P-1022]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] -3 = [-0X0.0000000000001P-1022,-0X0P+0]; + pown [0.0,infinity] -3 = [0.0,infinity]; + pown [-0.0,infinity] -3 = [0.0,infinity]; + pown [-infinity,0.0] -3 = [-infinity,0.0]; + pown [-infinity,-0.0] -3 = [-infinity,0.0]; + pown [-324.3,2.5] -3 = [entire]; + pown [0.01,2.33] -3 = [0X1.43CFBA61AACABP-4,0X1.E848P+19]; + pown [-1.9,-0.33] -3 = [-0X1.BD393CE9E8E7CP+4,-0X1.2A95F6F7C066CP-3]; + + pown [empty] -7 = [empty]; + pown [entire] -7 = [entire]; + pown [0.0,0.0] -7 = [empty]; + pown [-0.0,-0.0] -7 = [empty]; + pown [13.1,13.1] -7 = [0X1.037D76C912DBCP-26,0X1.037D76C912DBDP-26]; + pown [-7451.145,-7451.145] -7 = [-0X1.F10F41FB8858FP-91,-0X1.F10F41FB8858EP-91]; + pown [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023] -7 = [0X0P+0,0X0.0000000000001P-1022]; + pown [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023] -7 = [-0X0.0000000000001P-1022,-0X0P+0]; + pown [0.0,infinity] -7 = [0.0,infinity]; + pown [-0.0,infinity] -7 = [0.0,infinity]; + pown [-infinity,0.0] -7 = [-infinity,0.0]; + pown [-infinity,-0.0] -7 = [-infinity,0.0]; + pown [-324.3,2.5] -7 = [entire]; + pown [0.01,2.33] -7 = [0X1.5F934D64162A9P-9,0X1.6BCC41E9P+46]; + pown [-1.9,-0.33] -7 = [-0X1.254CDD3711DDBP+11,-0X1.6E95C4A761E19P-7]; +} + +testcase minimal_pown_dec_test { + pown [-5.0,10.0]_com 0 = [1.0,1.0]_com; + pown [-infinity,15.0]_dac 0 = [1.0,1.0]_dac; + pown [-3.0,5.0]_def 2 = [0.0,25.0]_def; + pown [-0x1.FFFFFFFFFFFFFp1023,2.0]_com 2 = [0.0,infinity]_dac; + pown [-3.0,5.0]_dac 3 = [-27.0,125.0]_dac; + pown [-0x1.FFFFFFFFFFFFFp1023,2.0]_com 3 = [-infinity, 8.0]_dac; + pown [3.0,5.0]_com -2 = [0X1.47AE147AE147AP-5,0X1.C71C71C71C71DP-4]_com; + pown [-5.0,-3.0]_def -2 = [0X1.47AE147AE147AP-5,0X1.C71C71C71C71DP-4]_def; + pown [-5.0,3.0]_com -2 = [0X1.47AE147AE147AP-5,infinity]_trv; + pown [3.0,5.0]_dac -3 = [0X1.0624DD2F1A9FBP-7 ,0X1.2F684BDA12F69P-5]_dac; + pown [-3.0,5.0]_com -3 = [entire]_trv; +} + +testcase minimal_pow_test { + pow [empty] [empty] = [empty]; + pow [empty] [entire] = [empty]; + pow [empty] [-infinity,-1.0] = [empty]; + pow [empty] [-infinity,0.0] = [empty]; + pow [empty] [-infinity,-0.0] = [empty]; + pow [empty] [0.0,infinity] = [empty]; + pow [empty] [-0.0,infinity] = [empty]; + pow [empty] [1.0,infinity] = [empty]; + pow [empty] [-3.0,5.0] = [empty]; + pow [empty] [0.0,0.0] = [empty]; + pow [empty] [-0.0,-0.0] = [empty]; + pow [empty] [-5.0,-5.0] = [empty]; + pow [empty] [5.0,5.0] = [empty]; + + + pow [0.1,0.5] [empty] = [empty]; + pow [0.1,0.5] [0.0,0.0] = [1.0,1.0]; + pow [0.1,0.5] [-0.0,-0.0] = [1.0,1.0]; + pow [0.1,0.5] [0.0,1.0] = [0X1.999999999999AP-4,1.0]; + pow [0.1,0.5] [-0.0,1.0] = [0X1.999999999999AP-4,1.0]; + pow [0.1,0.5] [0.0,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,0.5] [-0.0,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,0.5] [0.0,infinity] = [0.0,1.0]; + pow [0.1,0.5] [-0.0,infinity] = [0.0,1.0]; + pow [0.1,0.5] [0.1,0.1] = [0X1.96B230BCDC434P-1,0X1.DDB680117AB13P-1]; + pow [0.1,0.5] [0.1,1.0] = [0X1.999999999999AP-4,0X1.DDB680117AB13P-1]; + pow [0.1,0.5] [0.1,2.5] = [0X1.9E7C6E43390B7P-9,0X1.DDB680117AB13P-1]; + pow [0.1,0.5] [0.1,infinity] = [0.0,0X1.DDB680117AB13P-1]; + pow [0.1,0.5] [1.0,1.0] = [0X1.999999999999AP-4,0X1P-1]; + pow [0.1,0.5] [1.0,2.5] = [0X1.9E7C6E43390B7P-9,0X1P-1]; + pow [0.1,0.5] [1.0,infinity] = [0.0,0X1P-1]; + pow [0.1,0.5] [2.5,2.5] = [0X1.9E7C6E43390B7P-9,0X1.6A09E667F3BCDP-3]; + pow [0.1,0.5] [2.5,infinity] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [0.1,0.5] [-0.1,0.1] = [0X1.96B230BCDC434P-1,0X1.4248EF8FC2604P+0]; + pow [0.1,0.5] [-0.1,1.0] = [0X1.999999999999AP-4,0X1.4248EF8FC2604P+0]; + pow [0.1,0.5] [-0.1,2.5] = [0X1.9E7C6E43390B7P-9,0X1.4248EF8FC2604P+0]; + pow [0.1,0.5] [-0.1,infinity] = [0.0,0X1.4248EF8FC2604P+0]; + pow [0.1,0.5] [-1.0,0.1] = [0X1.96B230BCDC434P-1,0X1.4P+3]; + pow [0.1,0.5] [-1.0,1.0] = [0X1.999999999999AP-4,0X1.4P+3]; + pow [0.1,0.5] [-1.0,2.5] = [0X1.9E7C6E43390B7P-9,0X1.4P+3]; + pow [0.1,0.5] [-1.0,infinity] = [0.0,0X1.4P+3]; + pow [0.1,0.5] [-2.5,0.1] = [0X1.96B230BCDC434P-1,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-2.5,1.0] = [0X1.999999999999AP-4,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-2.5,2.5] = [0X1.9E7C6E43390B7P-9,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-2.5,infinity] = [0.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-infinity,0.1] = [0X1.96B230BCDC434P-1,infinity]; + pow [0.1,0.5] [-infinity,1.0] = [0X1.999999999999AP-4,infinity]; + pow [0.1,0.5] [-infinity,2.5] = [0X1.9E7C6E43390B7P-9,infinity]; + pow [0.1,0.5] [entire] = [0.0,infinity]; + pow [0.1,0.5] [-1.0,0.0] = [1.0,0X1.4P+3]; + pow [0.1,0.5] [-1.0,-0.0] = [1.0,0X1.4P+3]; + pow [0.1,0.5] [-2.5,0.0] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-2.5,-0.0] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-infinity,0.0] = [1.0,infinity]; + pow [0.1,0.5] [-infinity,-0.0] = [1.0,infinity]; + pow [0.1,0.5] [-0.1,-0.1] = [0X1.125FBEE250664P+0,0X1.4248EF8FC2604P+0]; + pow [0.1,0.5] [-1.0,-0.1] = [0X1.125FBEE250664P+0,0X1.4P+3]; + pow [0.1,0.5] [-2.5,-0.1] = [0X1.125FBEE250664P+0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-infinity,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [0.1,0.5] [-1.0,-1.0] = [0X1P+1,0X1.4P+3]; + pow [0.1,0.5] [-2.5,-1.0] = [0X1P+1,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-infinity,-1.0] = [0X1P+1,infinity]; + pow [0.1,0.5] [-2.5,-2.5] = [0X1.6A09E667F3BCCP+2,0X1.3C3A4EDFA9758P+8]; + pow [0.1,0.5] [-infinity,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + + + pow [0.1,1.0] [empty] = [empty]; + pow [0.1,1.0] [0.0,0.0] = [1.0,1.0]; + pow [0.1,1.0] [-0.0,-0.0] = [1.0,1.0]; + pow [0.1,1.0] [0.0,1.0] = [0X1.999999999999AP-4,1.0]; + pow [0.1,1.0] [-0.0,1.0] = [0X1.999999999999AP-4,1.0]; + pow [0.1,1.0] [0.0,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,1.0] [-0.0,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,1.0] [0.0,infinity] = [0.0,1.0]; + pow [0.1,1.0] [-0.0,infinity] = [0.0,1.0]; + pow [0.1,1.0] [0.1,0.1] = [0X1.96B230BCDC434P-1,1.0]; + pow [0.1,1.0] [0.1,1.0] = [0X1.999999999999AP-4,1.0]; + pow [0.1,1.0] [0.1,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,1.0] [0.1,infinity] = [0.0,1.0]; + pow [0.1,1.0] [1.0,1.0] = [0X1.999999999999AP-4,1.0]; + pow [0.1,1.0] [1.0,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,1.0] [1.0,infinity] = [0.0,1.0]; + pow [0.1,1.0] [2.5,2.5] = [0X1.9E7C6E43390B7P-9,1.0]; + pow [0.1,1.0] [2.5,infinity] = [0.0,1.0]; + pow [0.1,1.0] [-0.1,0.1] = [0X1.96B230BCDC434P-1,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-0.1,1.0] = [0X1.999999999999AP-4,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-0.1,2.5] = [0X1.9E7C6E43390B7P-9,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-0.1,infinity] = [0.0,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-1.0,0.1] = [0X1.96B230BCDC434P-1,0X1.4P+3]; + pow [0.1,1.0] [-1.0,1.0] = [0X1.999999999999AP-4,0X1.4P+3]; + pow [0.1,1.0] [-1.0,2.5] = [0X1.9E7C6E43390B7P-9,0X1.4P+3]; + pow [0.1,1.0] [-1.0,infinity] = [0.0,0X1.4P+3]; + pow [0.1,1.0] [-2.5,0.1] = [0X1.96B230BCDC434P-1,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-2.5,1.0] = [0X1.999999999999AP-4,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-2.5,2.5] = [0X1.9E7C6E43390B7P-9,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-2.5,infinity] = [0.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-infinity,0.1] = [0X1.96B230BCDC434P-1,infinity]; + pow [0.1,1.0] [-infinity,1.0] = [0X1.999999999999AP-4,infinity]; + pow [0.1,1.0] [-infinity,2.5] = [0X1.9E7C6E43390B7P-9,infinity]; + pow [0.1,1.0] [entire] = [0.0,infinity]; + pow [0.1,1.0] [-0.1,0.0] = [1.0,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-0.1,-0.0] = [1.0,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-1.0,0.0] = [1.0,0X1.4P+3]; + pow [0.1,1.0] [-1.0,-0.0] = [1.0,0X1.4P+3]; + pow [0.1,1.0] [-2.5,0.0] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-2.5,-0.0] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-infinity,0.0] = [1.0,infinity]; + pow [0.1,1.0] [-infinity,-0.0] = [1.0,infinity]; + pow [0.1,1.0] [-0.1,-0.1] = [1.0,0X1.4248EF8FC2604P+0]; + pow [0.1,1.0] [-1.0,-0.1] = [1.0,0X1.4P+3]; + pow [0.1,1.0] [-2.5,-0.1] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-infinity,-0.1] = [1.0,infinity]; + pow [0.1,1.0] [-1.0,-1.0] = [1.0,0X1.4P+3]; + pow [0.1,1.0] [-2.5,-1.0] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-infinity,-1.0] = [1.0,infinity]; + pow [0.1,1.0] [-2.5,-2.5] = [1.0,0X1.3C3A4EDFA9758P+8]; + pow [0.1,1.0] [-infinity,-2.5] = [1.0,infinity]; + + + pow [0.5,1.5] [empty] = [empty]; + pow [0.5,1.5] [0.0,0.0] = [1.0,1.0]; + pow [0.5,1.5] [-0.0,-0.0] = [1.0,1.0]; + pow [0.5,1.5] [0.0,1.0] = [0.5,1.5]; + pow [0.5,1.5] [-0.0,1.0] = [0.5,1.5]; + pow [0.5,1.5] [0.0,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [-0.0,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [0.0,infinity] = [0.0,infinity]; + pow [0.5,1.5] [-0.0,infinity] = [0.0,infinity]; + pow [0.5,1.5] [0.1,0.1] = [0X1.DDB680117AB12P-1,0X1.0A97DCE72A0CBP+0]; + pow [0.5,1.5] [0.1,1.0] = [0.5,1.5]; + pow [0.5,1.5] [0.1,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [0.1,infinity] = [0.0,infinity]; + pow [0.5,1.5] [1.0,1.0] = [0.5,1.5]; + pow [0.5,1.5] [1.0,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [1.0,infinity] = [0.0,infinity]; + pow [0.5,1.5] [2.5,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [2.5,infinity] = [0.0,infinity]; + pow [0.5,1.5] [-0.1,0.1] = [0X1.DDB680117AB12P-1,0X1.125FBEE250665P+0]; + pow [0.5,1.5] [-0.1,1.0] = [0X1P-1,0X1.8P+0]; + pow [0.5,1.5] [-0.1,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [-0.1,infinity] = [0X0P+0,infinity]; + pow [0.5,1.5] [-1.0,0.1] = [0X1.5555555555555P-1,0X1P+1]; + pow [0.5,1.5] [-1.0,1.0] = [0X1P-1,0X1P+1]; + pow [0.5,1.5] [-1.0,2.5] = [0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1]; + pow [0.5,1.5] [-1.0,infinity] = [0X0P+0,infinity]; + pow [0.5,1.5] [-2.5,0.1] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-2.5,1.0] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-2.5,2.5] = [0X1.6A09E667F3BCCP-3,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-2.5,infinity] = [0X0P+0,infinity]; + pow [0.5,1.5] [-infinity,0.1] = [0X0P+0,infinity]; + pow [0.5,1.5] [-infinity,1.0] = [0X0P+0,infinity]; + pow [0.5,1.5] [-infinity,2.5] = [0X0P+0,infinity]; + pow [0.5,1.5] [entire] = [0X0P+0,infinity]; + pow [0.5,1.5] [-1.0,0.0] = [0X1.5555555555555P-1,0X1P+1]; + pow [0.5,1.5] [-1.0,-0.0] = [0X1.5555555555555P-1,0X1P+1]; + pow [0.5,1.5] [-2.5,0.0] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-2.5,-0.0] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-infinity,0.0] = [0X0P+0,infinity]; + pow [0.5,1.5] [-infinity,-0.0] = [0X0P+0,infinity]; + pow [0.5,1.5] [-0.1,-0.1] = [0X1.EBA7C9E4D31E9P-1,0X1.125FBEE250665P+0]; + pow [0.5,1.5] [-1.0,-0.1] = [0X1.5555555555555P-1,0X1P+1]; + pow [0.5,1.5] [-2.5,-0.1] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-infinity,-0.1] = [0X0P+0,infinity]; + pow [0.5,1.5] [-1.0,-1.0] = [0X1.5555555555555P-1,0X1P+1]; + pow [0.5,1.5] [-2.5,-1.0] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-infinity,-1.0] = [0X0P+0,infinity]; + pow [0.5,1.5] [-2.5,-2.5] = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]; + pow [0.5,1.5] [-infinity,-2.5] = [0X0P+0,infinity]; + + + pow [0.5,infinity] [empty] = [empty]; + pow [0.5,infinity] [0.0,0.0] = [1.0,1.0]; + pow [0.5,infinity] [-0.0,-0.0] = [1.0,1.0]; + pow [0.5,infinity] [0.0,1.0] = [0.5,infinity]; + pow [0.5,infinity] [-0.0,1.0] = [0.5,infinity]; + pow [0.5,infinity] [0.0,2.5] = [0X1.6A09E667F3BCCP-3,infinity]; + pow [0.5,infinity] [-0.0,2.5] = [0X1.6A09E667F3BCCP-3,infinity]; + pow [0.5,infinity] [0.0,infinity] = [0.0,infinity]; + pow [0.5,infinity] [-0.0,infinity] = [0.0,infinity]; + pow [0.5,infinity] [0.1,0.1] = [0X1.DDB680117AB12P-1,infinity]; + pow [0.5,infinity] [0.1,1.0] = [0.5,infinity]; + pow [0.5,infinity] [0.1,2.5] = [0X1.6A09E667F3BCCP-3,infinity]; + pow [0.5,infinity] [0.1,infinity] = [0.0,infinity]; + pow [0.5,infinity] [1.0,1.0] = [0.5,infinity]; + pow [0.5,infinity] [1.0,2.5] = [0X1.6A09E667F3BCCP-3,infinity]; + pow [0.5,infinity] [1.0,infinity] = [0.0,infinity]; + pow [0.5,infinity] [2.5,2.5] = [0X1.6A09E667F3BCCP-3,infinity]; + pow [0.5,infinity] [2.5,infinity] = [0.0,infinity]; + pow [0.5,infinity] [-0.1,0.1] = [0.0,infinity]; + pow [0.5,infinity] [-0.1,1.0] = [0.0,infinity]; + pow [0.5,infinity] [-0.1,2.5] = [0.0,infinity]; + pow [0.5,infinity] [-0.1,infinity] = [0.0,infinity]; + pow [0.5,infinity] [-1.0,0.1] = [0.0,infinity]; + pow [0.5,infinity] [-1.0,1.0] = [0.0,infinity]; + pow [0.5,infinity] [-1.0,2.5] = [0.0,infinity]; + pow [0.5,infinity] [-1.0,infinity] = [0.0,infinity]; + pow [0.5,infinity] [-2.5,0.1] = [0.0,infinity]; + pow [0.5,infinity] [-2.5,1.0] = [0.0,infinity]; + pow [0.5,infinity] [-2.5,2.5] = [0.0,infinity]; + pow [0.5,infinity] [-2.5,infinity] = [0.0,infinity]; + pow [0.5,infinity] [-infinity,0.1] = [0.0,infinity]; + pow [0.5,infinity] [-infinity,1.0] = [0.0,infinity]; + pow [0.5,infinity] [-infinity,2.5] = [0.0,infinity]; + pow [0.5,infinity] [entire] = [0.0,infinity]; + pow [0.5,infinity] [-1.0,0.0] = [0.0,0X1P+1]; + pow [0.5,infinity] [-1.0,-0.0] = [0.0,0X1P+1]; + pow [0.5,infinity] [-2.5,0.0] = [0.0,0X1.6A09E667F3BCDP+2]; + pow [0.5,infinity] [-2.5,-0.0] = [0.0,0X1.6A09E667F3BCDP+2]; + pow [0.5,infinity] [-infinity,0.0] = [0.0,infinity]; + pow [0.5,infinity] [-infinity,-0.0] = [0.0,infinity]; + pow [0.5,infinity] [-0.1,-0.1] = [0.0,0X1.125FBEE250665P+0]; + pow [0.5,infinity] [-1.0,-0.1] = [0.0,0X1P+1]; + pow [0.5,infinity] [-2.5,-0.1] = [0.0,0X1.6A09E667F3BCDP+2]; + pow [0.5,infinity] [-infinity,-0.1] = [0.0,infinity]; + pow [0.5,infinity] [-1.0,-1.0] = [0.0,0X1P+1]; + pow [0.5,infinity] [-2.5,-1.0] = [0.0,0X1.6A09E667F3BCDP+2]; + pow [0.5,infinity] [-infinity,-1.0] = [0.0,infinity]; + pow [0.5,infinity] [-infinity,-2.5] = [0.0,infinity]; + pow [0.5,infinity] [-2.5,-2.5] = [0.0,0X1.6A09E667F3BCDP+2]; + + + pow [1.0,1.5] [empty] = [empty]; + pow [1.0,1.5] [0.0,0.0] = [1.0,1.0]; + pow [1.0,1.5] [-0.0,-0.0] = [1.0,1.0]; + pow [1.0,1.5] [0.0,1.0] = [1.0,0X1.8P+0]; + pow [1.0,1.5] [-0.0,1.0] = [1.0,0X1.8P+0]; + pow [1.0,1.5] [0.0,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [-0.0,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [0.0,infinity] = [1.0,infinity]; + pow [1.0,1.5] [-0.0,infinity] = [1.0,infinity]; + pow [1.0,1.5] [0.1,0.1] = [1.0,0X1.0A97DCE72A0CBP+0]; + pow [1.0,1.5] [0.1,1.0] = [1.0,0X1.8P+0]; + pow [1.0,1.5] [0.1,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [0.1,infinity] = [1.0,infinity]; + pow [1.0,1.5] [1.0,1.0] = [1.0,0X1.8P+0]; + pow [1.0,1.5] [1.0,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [1.0,infinity] = [1.0,infinity]; + pow [1.0,1.5] [2.5,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [2.5,infinity] = [1.0,infinity]; + pow [1.0,1.5] [-0.1,0.1] = [0X1.EBA7C9E4D31E9P-1,0X1.0A97DCE72A0CBP+0]; + pow [1.0,1.5] [-0.1,1.0] = [0X1.EBA7C9E4D31E9P-1,0X1.8P+0]; + pow [1.0,1.5] [-0.1,2.5] = [0X1.EBA7C9E4D31E9P-1,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [-0.1,infinity] = [0X1.EBA7C9E4D31E9P-1,infinity]; + pow [1.0,1.5] [-1.0,0.1] = [0X1.5555555555555P-1,0X1.0A97DCE72A0CBP+0]; + pow [1.0,1.5] [-1.0,1.0] = [0X1.5555555555555P-1,0X1.8P+0]; + pow [1.0,1.5] [-1.0,2.5] = [0X1.5555555555555P-1,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [-1.0,infinity] = [0X1.5555555555555P-1,infinity]; + pow [1.0,1.5] [-2.5,0.1] = [0X1.7398BF1D1EE6FP-2,0X1.0A97DCE72A0CBP+0]; + pow [1.0,1.5] [-2.5,1.0] = [0X1.7398BF1D1EE6FP-2,0X1.8P+0]; + pow [1.0,1.5] [-2.5,2.5] = [0X1.7398BF1D1EE6FP-2,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [-2.5,infinity] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [1.0,1.5] [-infinity,0.1] = [0X0P+0,0X1.0A97DCE72A0CBP+0]; + pow [1.0,1.5] [-infinity,1.0] = [0X0P+0,0X1.8P+0]; + pow [1.0,1.5] [-infinity,2.5] = [0X0P+0,0X1.60B9FD68A4555P+1]; + pow [1.0,1.5] [entire] = [0X0P+0,infinity]; + pow [1.0,1.5] [-1.0,0.0] = [0X1.5555555555555P-1,1.0]; + pow [1.0,1.5] [-1.0,-0.0] = [0X1.5555555555555P-1,1.0]; + pow [1.0,1.5] [-2.5,0.0] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.0,1.5] [-2.5,-0.0] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.0,1.5] [-infinity,0.0] = [0X0P+0,1.0]; + pow [1.0,1.5] [-infinity,-0.0] = [0X0P+0,1.0]; + pow [1.0,1.5] [-0.1,-0.1] = [0X1.EBA7C9E4D31E9P-1,1.0]; + pow [1.0,1.5] [-1.0,-0.1] = [0X1.5555555555555P-1,1.0]; + pow [1.0,1.5] [-2.5,-0.1] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.0,1.5] [-infinity,-0.1] = [0X0P+0,1.0]; + pow [1.0,1.5] [-1.0,-1.0] = [0X1.5555555555555P-1,1.0]; + pow [1.0,1.5] [-2.5,-1.0] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.0,1.5] [-infinity,-1.0] = [0X0P+0,1.0]; + pow [1.0,1.5] [-2.5,-2.5] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.0,1.5] [-infinity,-2.5] = [0X0P+0,1.0]; + + + pow [1.0,infinity] [empty] = [empty]; + pow [1.0,infinity] [0.0,0.0] = [1.0,1.0]; + pow [1.0,infinity] [-0.0,-0.0] = [1.0,1.0]; + pow [1.0,infinity] [0.0,1.0] = [1.0,infinity]; + pow [1.0,infinity] [-0.0,1.0] = [1.0,infinity]; + pow [1.0,infinity] [0.0,2.5] = [1.0,infinity]; + pow [1.0,infinity] [-0.0,2.5] = [1.0,infinity]; + pow [1.0,infinity] [0.0,infinity] = [1.0,infinity]; + pow [1.0,infinity] [-0.0,infinity] = [1.0,infinity]; + pow [1.0,infinity] [0.1,0.1] = [1.0,infinity]; + pow [1.0,infinity] [0.1,1.0] = [1.0,infinity]; + pow [1.0,infinity] [0.1,2.5] = [1.0,infinity]; + pow [1.0,infinity] [0.1,infinity] = [1.0,infinity]; + pow [1.0,infinity] [1.0,1.0] = [1.0,infinity]; + pow [1.0,infinity] [1.0,2.5] = [1.0,infinity]; + pow [1.0,infinity] [1.0,infinity] = [1.0,infinity]; + pow [1.0,infinity] [2.5,2.5] = [1.0,infinity]; + pow [1.0,infinity] [2.5,infinity] = [1.0,infinity]; + pow [1.0,infinity] [-0.1,0.1] = [0X0P+0,infinity]; + pow [1.0,infinity] [-0.1,1.0] = [0X0P+0,infinity]; + pow [1.0,infinity] [-0.1,2.5] = [0X0P+0,infinity]; + pow [1.0,infinity] [-0.1,infinity] = [0X0P+0,infinity]; + pow [1.0,infinity] [-1.0,0.1] = [0X0P+0,infinity]; + pow [1.0,infinity] [-1.0,1.0] = [0X0P+0,infinity]; + pow [1.0,infinity] [-1.0,2.5] = [0X0P+0,infinity]; + pow [1.0,infinity] [-1.0,infinity] = [0X0P+0,infinity]; + pow [1.0,infinity] [-2.5,0.1] = [0X0P+0,infinity]; + pow [1.0,infinity] [-2.5,1.0] = [0X0P+0,infinity]; + pow [1.0,infinity] [-2.5,2.5] = [0X0P+0,infinity]; + pow [1.0,infinity] [-2.5,infinity] = [0X0P+0,infinity]; + pow [1.0,infinity] [-infinity,0.1] = [0X0P+0,infinity]; + pow [1.0,infinity] [-infinity,1.0] = [0X0P+0,infinity]; + pow [1.0,infinity] [-infinity,2.5] = [0X0P+0,infinity]; + pow [1.0,infinity] [entire] = [0X0P+0,infinity]; + pow [1.0,infinity] [-1.0,0.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-1.0,-0.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-2.5,0.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-2.5,-0.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-infinity,0.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-infinity,-0.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-0.1,-0.1] = [0X0P+0,1.0]; + pow [1.0,infinity] [-1.0,-0.1] = [0X0P+0,1.0]; + pow [1.0,infinity] [-2.5,-0.1] = [0X0P+0,1.0]; + pow [1.0,infinity] [-infinity,-0.1] = [0X0P+0,1.0]; + pow [1.0,infinity] [-1.0,-1.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-2.5,-1.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-infinity,-1.0] = [0X0P+0,1.0]; + pow [1.0,infinity] [-2.5,-2.5] = [0X0P+0,1.0]; + pow [1.0,infinity] [-infinity,-2.5] = [0X0P+0,1.0]; + + + pow [1.1,1.5] [empty] = [empty]; + pow [1.1,1.5] [0.0,0.0] = [1.0,1.0]; + pow [1.1,1.5] [-0.0,-0.0] = [1.0,1.0]; + pow [1.1,1.5] [0.0,1.0] = [1.0,0X1.8P+0]; + pow [1.1,1.5] [-0.0,1.0] = [1.0,0X1.8P+0]; + pow [1.1,1.5] [0.0,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [-0.0,2.5] = [1.0,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [0.0,infinity] = [1.0,infinity]; + pow [1.1,1.5] [-0.0,infinity] = [1.0,infinity]; + pow [1.1,1.5] [0.1,0.1] = [0X1.02739C65D58BFP+0,0X1.0A97DCE72A0CBP+0]; + pow [1.1,1.5] [0.1,1.0] = [0X1.02739C65D58BFP+0,0X1.8P+0]; + pow [1.1,1.5] [0.1,2.5] = [0X1.02739C65D58BFP+0,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [0.1,infinity] = [0X1.02739C65D58BFP+0,infinity]; + pow [1.1,1.5] [1.0,1.0] = [0X1.199999999999AP+0,0X1.8P+0]; + pow [1.1,1.5] [1.0,2.5] = [0X1.199999999999AP+0,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [1.0,infinity] = [0X1.199999999999AP+0,infinity]; + pow [1.1,1.5] [2.5,2.5] = [0X1.44E1080833B25P+0,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [2.5,infinity] = [0X1.44E1080833B25P+0,infinity]; + pow [1.1,1.5] [-0.1,0.1] = [0X1.EBA7C9E4D31E9P-1,0X1.0A97DCE72A0CBP+0]; + pow [1.1,1.5] [-0.1,1.0] = [0X1.EBA7C9E4D31E9P-1,0X1.8P+0]; + pow [1.1,1.5] [-0.1,2.5] = [0X1.EBA7C9E4D31E9P-1,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [-0.1,infinity] = [0X1.EBA7C9E4D31E9P-1,infinity]; + pow [1.1,1.5] [-1.0,0.1] = [0X1.5555555555555P-1,0X1.0A97DCE72A0CBP+0]; + pow [1.1,1.5] [-1.0,1.0] = [0X1.5555555555555P-1,0X1.8P+0]; + pow [1.1,1.5] [-1.0,2.5] = [0X1.5555555555555P-1,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [-1.0,infinity] = [0X1.5555555555555P-1,infinity]; + pow [1.1,1.5] [-2.5,0.1] = [0X1.7398BF1D1EE6FP-2,0X1.0A97DCE72A0CBP+0]; + pow [1.1,1.5] [-2.5,1.0] = [0X1.7398BF1D1EE6FP-2,0X1.8P+0]; + pow [1.1,1.5] [-2.5,2.5] = [0X1.7398BF1D1EE6FP-2,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [-2.5,infinity] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [1.1,1.5] [-infinity,0.1] = [0X0P+0,0X1.0A97DCE72A0CBP+0]; + pow [1.1,1.5] [-infinity,1.0] = [0X0P+0,0X1.8P+0]; + pow [1.1,1.5] [-infinity,2.5] = [0X0P+0,0X1.60B9FD68A4555P+1]; + pow [1.1,1.5] [entire] = [0X0P+0,infinity]; + pow [1.1,1.5] [-1.0,0.0] = [0X1.5555555555555P-1,1.0]; + pow [1.1,1.5] [-1.0,-0.0] = [0X1.5555555555555P-1,1.0]; + pow [1.1,1.5] [-2.5,0.0] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.1,1.5] [-2.5,-0.0] = [0X1.7398BF1D1EE6FP-2,1.0]; + pow [1.1,1.5] [-infinity,0.0] = [0X0P+0,1.0]; + pow [1.1,1.5] [-infinity,-0.0] = [0X0P+0,1.0]; + pow [1.1,1.5] [-0.1,-0.1] = [0X1.EBA7C9E4D31E9P-1,0X1.FB24AF5281928P-1]; + pow [1.1,1.5] [-1.0,-0.1] = [0X1.5555555555555P-1,0X1.FB24AF5281928P-1]; + pow [1.1,1.5] [-2.5,-0.1] = [0X1.7398BF1D1EE6FP-2,0X1.FB24AF5281928P-1]; + pow [1.1,1.5] [-infinity,-0.1] = [0X0P+0,0X1.FB24AF5281928P-1]; + pow [1.1,1.5] [-1.0,-1.0] = [0X1.5555555555555P-1,0X1.D1745D1745D17P-1]; + pow [1.1,1.5] [-2.5,-1.0] = [0X1.7398BF1D1EE6FP-2,0X1.D1745D1745D17P-1]; + pow [1.1,1.5] [-infinity,-1.0] = [0X0P+0,0X1.D1745D1745D17P-1]; + pow [1.1,1.5] [-2.5,-2.5] = [0X1.7398BF1D1EE6FP-2,0X1.9372D999784C8P-1]; + pow [1.1,1.5] [-infinity,-2.5] = [0X0P+0,0X1.9372D999784C8P-1]; + + + pow [1.1,infinity] [empty] = [empty]; + pow [1.1,infinity] [0.0,0.0] = [1.0,1.0]; + pow [1.1,infinity] [-0.0,-0.0] = [1.0,1.0]; + pow [1.1,infinity] [0.0,1.0] = [1.0,infinity]; + pow [1.1,infinity] [-0.0,1.0] = [1.0,infinity]; + pow [1.1,infinity] [0.0,2.5] = [1.0,infinity]; + pow [1.1,infinity] [-0.0,2.5] = [1.0,infinity]; + pow [1.1,infinity] [0.0,infinity] = [1.0,infinity]; + pow [1.1,infinity] [-0.0,infinity] = [1.0,infinity]; + pow [1.1,infinity] [0.1,0.1] = [0X1.02739C65D58BFP+0,infinity]; + pow [1.1,infinity] [0.1,1.0] = [0X1.02739C65D58BFP+0,infinity]; + pow [1.1,infinity] [0.1,2.5] = [0X1.02739C65D58BFP+0,infinity]; + pow [1.1,infinity] [0.1,infinity] = [0X1.02739C65D58BFP+0,infinity]; + pow [1.1,infinity] [1.0,1.0] = [0X1.199999999999AP+0,infinity]; + pow [1.1,infinity] [1.0,2.5] = [0X1.199999999999AP+0,infinity]; + pow [1.1,infinity] [1.0,infinity] = [0X1.199999999999AP+0,infinity]; + pow [1.1,infinity] [2.5,2.5] = [0X1.44E1080833B25P+0,infinity]; + pow [1.1,infinity] [2.5,infinity] = [0X1.44E1080833B25P+0,infinity]; + pow [1.1,infinity] [-0.1,0.1] = [0X0P+0,infinity]; + pow [1.1,infinity] [-0.1,1.0] = [0X0P+0,infinity]; + pow [1.1,infinity] [-0.1,2.5] = [0X0P+0,infinity]; + pow [1.1,infinity] [-0.1,infinity] = [0X0P+0,infinity]; + pow [1.1,infinity] [-1.0,0.1] = [0X0P+0,infinity]; + pow [1.1,infinity] [-1.0,1.0] = [0X0P+0,infinity]; + pow [1.1,infinity] [-1.0,2.5] = [0X0P+0,infinity]; + pow [1.1,infinity] [-1.0,infinity] = [0X0P+0,infinity]; + pow [1.1,infinity] [-2.5,0.1] = [0X0P+0,infinity]; + pow [1.1,infinity] [-2.5,1.0] = [0X0P+0,infinity]; + pow [1.1,infinity] [-2.5,2.5] = [0X0P+0,infinity]; + pow [1.1,infinity] [-2.5,infinity] = [0X0P+0,infinity]; + pow [1.1,infinity] [-infinity,0.1] = [0X0P+0,infinity]; + pow [1.1,infinity] [-infinity,1.0] = [0X0P+0,infinity]; + pow [1.1,infinity] [-infinity,2.5] = [0X0P+0,infinity]; + pow [1.1,infinity] [entire] = [0X0P+0,infinity]; + pow [1.1,infinity] [-1.0,0.0] = [0X0P+0,1.0]; + pow [1.1,infinity] [-1.0,-0.0] = [0X0P+0,1.0]; + pow [1.1,infinity] [-2.5,0.0] = [0X0P+0,1.0]; + pow [1.1,infinity] [-2.5,-0.0] = [0X0P+0,1.0]; + pow [1.1,infinity] [-infinity,0.0] = [0X0P+0,1.0]; + pow [1.1,infinity] [-infinity,-0.0] = [0X0P+0,1.0]; + pow [1.1,infinity] [-0.1,-0.1] = [0X0P+0,0X1.FB24AF5281928P-1]; + pow [1.1,infinity] [-1.0,-0.1] = [0X0P+0,0X1.FB24AF5281928P-1]; + pow [1.1,infinity] [-2.5,-0.1] = [0X0P+0,0X1.FB24AF5281928P-1]; + pow [1.1,infinity] [-infinity,-0.1] = [0X0P+0,0X1.FB24AF5281928P-1]; + pow [1.1,infinity] [-1.0,-1.0] = [0X0P+0,0X1.D1745D1745D17P-1]; + pow [1.1,infinity] [-2.5,-1.0] = [0X0P+0,0X1.D1745D1745D17P-1]; + pow [1.1,infinity] [-infinity,-1.0] = [0X0P+0,0X1.D1745D1745D17P-1]; + pow [1.1,infinity] [-2.5,-2.5] = [0X0P+0,0X1.9372D999784C8P-1]; + pow [1.1,infinity] [-infinity,-2.5] = [0X0P+0,0X1.9372D999784C8P-1]; + + + pow [0.0,0.5] [empty] = [empty]; + pow [0.0,0.5] [0.0,0.0] = [1.0,1.0]; + pow [0.0,0.5] [-0.0,-0.0] = [1.0,1.0]; + pow [0.0,0.5] [0.0,1.0] = [0.0,1.0]; + pow [0.0,0.5] [-0.0,1.0] = [0.0,1.0]; + pow [0.0,0.5] [0.0,2.5] = [0.0,1.0]; + pow [0.0,0.5] [-0.0,2.5] = [0.0,1.0]; + pow [0.0,0.5] [0.0,infinity] = [0.0,1.0]; + pow [0.0,0.5] [-0.0,infinity] = [0.0,1.0]; + pow [0.0,0.5] [0.1,0.1] = [0.0,0X1.DDB680117AB13P-1]; + pow [0.0,0.5] [0.1,1.0] = [0.0,0X1.DDB680117AB13P-1]; + pow [0.0,0.5] [0.1,2.5] = [0.0,0X1.DDB680117AB13P-1]; + pow [0.0,0.5] [0.1,infinity] = [0.0,0X1.DDB680117AB13P-1]; + pow [0.0,0.5] [1.0,1.0] = [0.0,0.5]; + pow [0.0,0.5] [1.0,2.5] = [0.0,0.5]; + pow [0.0,0.5] [1.0,infinity] = [0.0,0.5]; + pow [0.0,0.5] [2.5,2.5] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [0.0,0.5] [2.5,infinity] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [0.0,0.5] [-0.1,0.1] = [0.0,infinity]; + pow [0.0,0.5] [-0.1,1.0] = [0.0,infinity]; + pow [0.0,0.5] [-0.1,2.5] = [0.0,infinity]; + pow [0.0,0.5] [-0.1,infinity] = [0.0,infinity]; + pow [0.0,0.5] [-1.0,0.1] = [0.0,infinity]; + pow [0.0,0.5] [-1.0,1.0] = [0.0,infinity]; + pow [0.0,0.5] [-1.0,2.5] = [0.0,infinity]; + pow [0.0,0.5] [-1.0,infinity] = [0.0,infinity]; + pow [0.0,0.5] [-2.5,0.1] = [0.0,infinity]; + pow [0.0,0.5] [-2.5,1.0] = [0.0,infinity]; + pow [0.0,0.5] [-2.5,2.5] = [0.0,infinity]; + pow [0.0,0.5] [-2.5,infinity] = [0.0,infinity]; + pow [0.0,0.5] [-infinity,0.1] = [0.0,infinity]; + pow [0.0,0.5] [-infinity,1.0] = [0.0,infinity]; + pow [0.0,0.5] [-infinity,2.5] = [0.0,infinity]; + pow [0.0,0.5] [entire] = [0.0,infinity]; + pow [0.0,0.5] [-1.0,0.0] = [1.0,infinity]; + pow [0.0,0.5] [-1.0,-0.0] = [1.0,infinity]; + pow [0.0,0.5] [-2.5,0.0] = [1.0,infinity]; + pow [0.0,0.5] [-2.5,-0.0] = [1.0,infinity]; + pow [0.0,0.5] [-infinity,0.0] = [1.0,infinity]; + pow [0.0,0.5] [-infinity,-0.0] = [1.0,infinity]; + pow [0.0,0.5] [-0.1,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [0.0,0.5] [-1.0,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [0.0,0.5] [-2.5,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [0.0,0.5] [-infinity,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [0.0,0.5] [-1.0,-1.0] = [0X1P+1,infinity]; + pow [0.0,0.5] [-2.5,-1.0] = [0X1P+1,infinity]; + pow [0.0,0.5] [-infinity,-1.0] = [0X1P+1,infinity]; + pow [0.0,0.5] [-2.5,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + pow [0.0,0.5] [-infinity,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + + + pow [0.0,1.0] [empty] = [empty]; + pow [0.0,1.0] [0.0,0.0] = [1.0,1.0]; + pow [0.0,1.0] [-0.0,-0.0] = [1.0,1.0]; + pow [0.0,1.0] [0.0,1.0] = [0.0,1.0]; + pow [0.0,1.0] [-0.0,1.0] = [0.0,1.0]; + pow [0.0,1.0] [0.0,2.5] = [0.0,1.0]; + pow [0.0,1.0] [-0.0,2.5] = [0.0,1.0]; + pow [0.0,1.0] [0.0,infinity] = [0.0,1.0]; + pow [0.0,1.0] [-0.0,infinity] = [0.0,1.0]; + pow [0.0,1.0] [0.1,0.1] = [0.0,1.0]; + pow [0.0,1.0] [0.1,1.0] = [0.0,1.0]; + pow [0.0,1.0] [0.1,2.5] = [0.0,1.0]; + pow [0.0,1.0] [0.1,infinity] = [0.0,1.0]; + pow [0.0,1.0] [1.0,1.0] = [0.0,1.0]; + pow [0.0,1.0] [1.0,2.5] = [0.0,1.0]; + pow [0.0,1.0] [1.0,infinity] = [0.0,1.0]; + pow [0.0,1.0] [2.5,2.5] = [0.0,1.0]; + pow [0.0,1.0] [2.5,infinity] = [0.0,1.0]; + pow [0.0,1.0] [-0.1,0.1] = [0.0,infinity]; + pow [0.0,1.0] [-0.1,1.0] = [0.0,infinity]; + pow [0.0,1.0] [-0.1,2.5] = [0.0,infinity]; + pow [0.0,1.0] [-0.1,infinity] = [0.0,infinity]; + pow [0.0,1.0] [-1.0,0.1] = [0.0,infinity]; + pow [0.0,1.0] [-1.0,1.0] = [0.0,infinity]; + pow [0.0,1.0] [-1.0,2.5] = [0.0,infinity]; + pow [0.0,1.0] [-1.0,infinity] = [0.0,infinity]; + pow [0.0,1.0] [-2.5,0.1] = [0.0,infinity]; + pow [0.0,1.0] [-2.5,1.0] = [0.0,infinity]; + pow [0.0,1.0] [-2.5,2.5] = [0.0,infinity]; + pow [0.0,1.0] [-2.5,infinity] = [0.0,infinity]; + pow [0.0,1.0] [-infinity,0.1] = [0.0,infinity]; + pow [0.0,1.0] [-infinity,1.0] = [0.0,infinity]; + pow [0.0,1.0] [-infinity,2.5] = [0.0,infinity]; + pow [0.0,1.0] [entire] = [0.0,infinity]; + pow [0.0,1.0] [-0.1,0.0] = [1.0,infinity]; + pow [0.0,1.0] [-0.1,-0.0] = [1.0,infinity]; + pow [0.0,1.0] [-1.0,0.0] = [1.0,infinity]; + pow [0.0,1.0] [-1.0,-0.0] = [1.0,infinity]; + pow [0.0,1.0] [-2.5,0.0] = [1.0,infinity]; + pow [0.0,1.0] [-2.5,-0.0] = [1.0,infinity]; + pow [0.0,1.0] [-infinity,0.0] = [1.0,infinity]; + pow [0.0,1.0] [-infinity,-0.0] = [1.0,infinity]; + pow [0.0,1.0] [-0.1,-0.1] = [1.0,infinity]; + pow [0.0,1.0] [-1.0,-0.1] = [1.0,infinity]; + pow [0.0,1.0] [-2.5,-0.1] = [1.0,infinity]; + pow [0.0,1.0] [-infinity,-0.1] = [1.0,infinity]; + pow [0.0,1.0] [-1.0,-1.0] = [1.0,infinity]; + pow [0.0,1.0] [-2.5,-1.0] = [1.0,infinity]; + pow [0.0,1.0] [-infinity,-1.0] = [1.0,infinity]; + pow [0.0,1.0] [-2.5,-2.5] = [1.0,infinity]; + pow [0.0,1.0] [-infinity,-2.5] = [1.0,infinity]; + + + pow [0.0,1.5] [empty] = [empty]; + pow [0.0,1.5] [0.0,0.0] = [1.0,1.0]; + pow [0.0,1.5] [-0.0,-0.0] = [1.0,1.0]; + pow [0.0,1.5] [0.0,1.0] = [0.0,1.5]; + pow [0.0,1.5] [-0.0,1.0] = [0.0,1.5]; + pow [0.0,1.5] [0.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [0.0,1.5] [-0.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [0.0,1.5] [0.0,infinity] = [0.0,infinity]; + pow [0.0,1.5] [-0.0,infinity] = [0.0,infinity]; + pow [0.0,1.5] [0.1,0.1] = [0.0,0X1.0A97DCE72A0CBP+0]; + pow [0.0,1.5] [0.1,1.0] = [0.0,1.5]; + pow [0.0,1.5] [0.1,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [0.0,1.5] [0.1,infinity] = [0.0,infinity]; + pow [0.0,1.5] [1.0,1.0] = [0.0,1.5]; + pow [0.0,1.5] [1.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [0.0,1.5] [1.0,infinity] = [0.0,infinity]; + pow [0.0,1.5] [2.5,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [0.0,1.5] [2.5,infinity] = [0.0,infinity]; + pow [0.0,1.5] [-0.1,0.1] = [0.0,infinity]; + pow [0.0,1.5] [-0.1,1.0] = [0.0,infinity]; + pow [0.0,1.5] [-0.1,2.5] = [0.0,infinity]; + pow [0.0,1.5] [-0.1,infinity] = [0.0,infinity]; + pow [0.0,1.5] [-1.0,0.1] = [0.0,infinity]; + pow [0.0,1.5] [-1.0,1.0] = [0.0,infinity]; + pow [0.0,1.5] [-1.0,2.5] = [0.0,infinity]; + pow [0.0,1.5] [-1.0,infinity] = [0.0,infinity]; + pow [0.0,1.5] [-2.5,0.1] = [0.0,infinity]; + pow [0.0,1.5] [-2.5,1.0] = [0.0,infinity]; + pow [0.0,1.5] [-2.5,2.5] = [0.0,infinity]; + pow [0.0,1.5] [-2.5,infinity] = [0.0,infinity]; + pow [0.0,1.5] [-infinity,0.1] = [0.0,infinity]; + pow [0.0,1.5] [-infinity,1.0] = [0.0,infinity]; + pow [0.0,1.5] [-infinity,2.5] = [0.0,infinity]; + pow [0.0,1.5] [entire] = [0.0,infinity]; + pow [0.0,1.5] [-1.0,0.0] = [0X1.5555555555555P-1,infinity]; + pow [0.0,1.5] [-1.0,-0.0] = [0X1.5555555555555P-1,infinity]; + pow [0.0,1.5] [-2.5,0.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [0.0,1.5] [-2.5,-0.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [0.0,1.5] [-infinity,0.0] = [0.0,infinity]; + pow [0.0,1.5] [-infinity,-0.0] = [0.0,infinity]; + pow [0.0,1.5] [-0.1,-0.1] = [0X1.EBA7C9E4D31E9P-1,infinity]; + pow [0.0,1.5] [-1.0,-0.1] = [0X1.5555555555555P-1,infinity]; + pow [0.0,1.5] [-2.5,-0.1] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [0.0,1.5] [-infinity,-0.1] = [0.0,infinity]; + pow [0.0,1.5] [-1.0,-1.0] = [0X1.5555555555555P-1,infinity]; + pow [0.0,1.5] [-2.5,-1.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [0.0,1.5] [-infinity,-1.0] = [0.0,infinity]; + pow [0.0,1.5] [-2.5,-2.5] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [0.0,1.5] [-infinity,-2.5] = [0.0,infinity]; + + + pow [0.0,infinity] [empty] = [empty]; + pow [0.0,infinity] [0.0,0.0] = [1.0,1.0]; + pow [0.0,infinity] [-0.0,-0.0] = [1.0,1.0]; + pow [0.0,infinity] [0.0,1.0] = [0.0,infinity]; + pow [0.0,infinity] [-0.0,1.0] = [0.0,infinity]; + pow [0.0,infinity] [0.0,2.5] = [0.0,infinity]; + pow [0.0,infinity] [-0.0,2.5] = [0.0,infinity]; + pow [0.0,infinity] [0.0,infinity] = [0.0,infinity]; + pow [0.0,infinity] [-0.0,infinity] = [0.0,infinity]; + pow [0.0,infinity] [0.1,0.1] = [0.0,infinity]; + pow [0.0,infinity] [0.1,1.0] = [0.0,infinity]; + pow [0.0,infinity] [0.1,2.5] = [0.0,infinity]; + pow [0.0,infinity] [0.1,infinity] = [0.0,infinity]; + pow [0.0,infinity] [1.0,1.0] = [0.0,infinity]; + pow [0.0,infinity] [1.0,2.5] = [0.0,infinity]; + pow [0.0,infinity] [1.0,infinity] = [0.0,infinity]; + pow [0.0,infinity] [2.5,2.5] = [0.0,infinity]; + pow [0.0,infinity] [2.5,infinity] = [0.0,infinity]; + pow [0.0,infinity] [-0.1,0.1] = [0.0,infinity]; + pow [0.0,infinity] [-0.1,1.0] = [0.0,infinity]; + pow [0.0,infinity] [-0.1,2.5] = [0.0,infinity]; + pow [0.0,infinity] [-0.1,infinity] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,0.1] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,1.0] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,2.5] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,infinity] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,0.1] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,1.0] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,2.5] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,infinity] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,0.1] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,1.0] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,2.5] = [0.0,infinity]; + pow [0.0,infinity] [entire] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,0.0] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,-0.0] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,0.0] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,-0.0] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,0.0] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,-0.0] = [0.0,infinity]; + pow [0.0,infinity] [-0.1,-0.1] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,-0.1] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,-0.1] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,-0.1] = [0.0,infinity]; + pow [0.0,infinity] [-1.0,-1.0] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,-1.0] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,-1.0] = [0.0,infinity]; + pow [0.0,infinity] [-infinity,-2.5] = [0.0,infinity]; + pow [0.0,infinity] [-2.5,-2.5] = [0.0,infinity]; + + + pow [-0.0,0.5] [empty] = [empty]; + pow [-0.0,0.5] [0.0,0.0] = [1.0,1.0]; + pow [-0.0,0.5] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.0,0.5] [0.0,1.0] = [0.0,1.0]; + pow [-0.0,0.5] [-0.0,1.0] = [0.0,1.0]; + pow [-0.0,0.5] [0.0,2.5] = [0.0,1.0]; + pow [-0.0,0.5] [-0.0,2.5] = [0.0,1.0]; + pow [-0.0,0.5] [0.0,infinity] = [0.0,1.0]; + pow [-0.0,0.5] [-0.0,infinity] = [0.0,1.0]; + pow [-0.0,0.5] [0.1,0.1] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.0,0.5] [0.1,1.0] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.0,0.5] [0.1,2.5] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.0,0.5] [0.1,infinity] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.0,0.5] [1.0,1.0] = [0.0,0.5]; + pow [-0.0,0.5] [1.0,2.5] = [0.0,0.5]; + pow [-0.0,0.5] [1.0,infinity] = [0.0,0.5]; + pow [-0.0,0.5] [2.5,2.5] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [-0.0,0.5] [2.5,infinity] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [-0.0,0.5] [-0.1,0.1] = [0.0,infinity]; + pow [-0.0,0.5] [-0.1,1.0] = [0.0,infinity]; + pow [-0.0,0.5] [-0.1,2.5] = [0.0,infinity]; + pow [-0.0,0.5] [-0.1,infinity] = [0.0,infinity]; + pow [-0.0,0.5] [-1.0,0.1] = [0.0,infinity]; + pow [-0.0,0.5] [-1.0,1.0] = [0.0,infinity]; + pow [-0.0,0.5] [-1.0,2.5] = [0.0,infinity]; + pow [-0.0,0.5] [-1.0,infinity] = [0.0,infinity]; + pow [-0.0,0.5] [-2.5,0.1] = [0.0,infinity]; + pow [-0.0,0.5] [-2.5,1.0] = [0.0,infinity]; + pow [-0.0,0.5] [-2.5,2.5] = [0.0,infinity]; + pow [-0.0,0.5] [-2.5,infinity] = [0.0,infinity]; + pow [-0.0,0.5] [-infinity,0.1] = [0.0,infinity]; + pow [-0.0,0.5] [-infinity,1.0] = [0.0,infinity]; + pow [-0.0,0.5] [-infinity,2.5] = [0.0,infinity]; + pow [-0.0,0.5] [entire] = [0.0,infinity]; + pow [-0.0,0.5] [-1.0,0.0] = [1.0,infinity]; + pow [-0.0,0.5] [-1.0,-0.0] = [1.0,infinity]; + pow [-0.0,0.5] [-2.5,0.0] = [1.0,infinity]; + pow [-0.0,0.5] [-2.5,-0.0] = [1.0,infinity]; + pow [-0.0,0.5] [-infinity,0.0] = [1.0,infinity]; + pow [-0.0,0.5] [-infinity,-0.0] = [1.0,infinity]; + pow [-0.0,0.5] [-0.1,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.0,0.5] [-1.0,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.0,0.5] [-2.5,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.0,0.5] [-infinity,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.0,0.5] [-1.0,-1.0] = [0X1P+1,infinity]; + pow [-0.0,0.5] [-2.5,-1.0] = [0X1P+1,infinity]; + pow [-0.0,0.5] [-infinity,-1.0] = [0X1P+1,infinity]; + pow [-0.0,0.5] [-2.5,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + pow [-0.0,0.5] [-infinity,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + + + pow [-0.0,1.0] [empty] = [empty]; + pow [-0.0,1.0] [0.0,0.0] = [1.0,1.0]; + pow [-0.0,1.0] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.0,1.0] [0.0,1.0] = [0.0,1.0]; + pow [-0.0,1.0] [-0.0,1.0] = [0.0,1.0]; + pow [-0.0,1.0] [0.0,2.5] = [0.0,1.0]; + pow [-0.0,1.0] [-0.0,2.5] = [0.0,1.0]; + pow [-0.0,1.0] [0.0,infinity] = [0.0,1.0]; + pow [-0.0,1.0] [-0.0,infinity] = [0.0,1.0]; + pow [-0.0,1.0] [0.1,0.1] = [0.0,1.0]; + pow [-0.0,1.0] [0.1,1.0] = [0.0,1.0]; + pow [-0.0,1.0] [0.1,2.5] = [0.0,1.0]; + pow [-0.0,1.0] [0.1,infinity] = [0.0,1.0]; + pow [-0.0,1.0] [1.0,1.0] = [0.0,1.0]; + pow [-0.0,1.0] [1.0,2.5] = [0.0,1.0]; + pow [-0.0,1.0] [1.0,infinity] = [0.0,1.0]; + pow [-0.0,1.0] [2.5,2.5] = [0.0,1.0]; + pow [-0.0,1.0] [2.5,infinity] = [0.0,1.0]; + pow [-0.0,1.0] [-0.1,0.1] = [0.0,infinity]; + pow [-0.0,1.0] [-0.1,1.0] = [0.0,infinity]; + pow [-0.0,1.0] [-0.1,2.5] = [0.0,infinity]; + pow [-0.0,1.0] [-0.1,infinity] = [0.0,infinity]; + pow [-0.0,1.0] [-1.0,0.1] = [0.0,infinity]; + pow [-0.0,1.0] [-1.0,1.0] = [0.0,infinity]; + pow [-0.0,1.0] [-1.0,2.5] = [0.0,infinity]; + pow [-0.0,1.0] [-1.0,infinity] = [0.0,infinity]; + pow [-0.0,1.0] [-2.5,0.1] = [0.0,infinity]; + pow [-0.0,1.0] [-2.5,1.0] = [0.0,infinity]; + pow [-0.0,1.0] [-2.5,2.5] = [0.0,infinity]; + pow [-0.0,1.0] [-2.5,infinity] = [0.0,infinity]; + pow [-0.0,1.0] [-infinity,0.1] = [0.0,infinity]; + pow [-0.0,1.0] [-infinity,1.0] = [0.0,infinity]; + pow [-0.0,1.0] [-infinity,2.5] = [0.0,infinity]; + pow [-0.0,1.0] [entire] = [0.0,infinity]; + pow [-0.0,1.0] [-0.1,0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-0.1,-0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-1.0,0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-1.0,-0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-2.5,0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-2.5,-0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-infinity,0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-infinity,-0.0] = [1.0,infinity]; + pow [-0.0,1.0] [-0.1,-0.1] = [1.0,infinity]; + pow [-0.0,1.0] [-1.0,-0.1] = [1.0,infinity]; + pow [-0.0,1.0] [-2.5,-0.1] = [1.0,infinity]; + pow [-0.0,1.0] [-infinity,-0.1] = [1.0,infinity]; + pow [-0.0,1.0] [-1.0,-1.0] = [1.0,infinity]; + pow [-0.0,1.0] [-2.5,-1.0] = [1.0,infinity]; + pow [-0.0,1.0] [-infinity,-1.0] = [1.0,infinity]; + pow [-0.0,1.0] [-2.5,-2.5] = [1.0,infinity]; + pow [-0.0,1.0] [-infinity,-2.5] = [1.0,infinity]; + + + pow [-0.0,1.5] [empty] = [empty]; + pow [-0.0,1.5] [0.0,0.0] = [1.0,1.0]; + pow [-0.0,1.5] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.0,1.5] [0.0,1.0] = [0.0,1.5]; + pow [-0.0,1.5] [-0.0,1.0] = [0.0,1.5]; + pow [-0.0,1.5] [0.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.0,1.5] [-0.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.0,1.5] [0.0,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [-0.0,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [0.1,0.1] = [0.0,0X1.0A97DCE72A0CBP+0]; + pow [-0.0,1.5] [0.1,1.0] = [0.0,1.5]; + pow [-0.0,1.5] [0.1,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.0,1.5] [0.1,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [1.0,1.0] = [0.0,1.5]; + pow [-0.0,1.5] [1.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.0,1.5] [1.0,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [2.5,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.0,1.5] [2.5,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [-0.1,0.1] = [0.0,infinity]; + pow [-0.0,1.5] [-0.1,1.0] = [0.0,infinity]; + pow [-0.0,1.5] [-0.1,2.5] = [0.0,infinity]; + pow [-0.0,1.5] [-0.1,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [-1.0,0.1] = [0.0,infinity]; + pow [-0.0,1.5] [-1.0,1.0] = [0.0,infinity]; + pow [-0.0,1.5] [-1.0,2.5] = [0.0,infinity]; + pow [-0.0,1.5] [-1.0,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [-2.5,0.1] = [0.0,infinity]; + pow [-0.0,1.5] [-2.5,1.0] = [0.0,infinity]; + pow [-0.0,1.5] [-2.5,2.5] = [0.0,infinity]; + pow [-0.0,1.5] [-2.5,infinity] = [0.0,infinity]; + pow [-0.0,1.5] [-infinity,0.1] = [0.0,infinity]; + pow [-0.0,1.5] [-infinity,1.0] = [0.0,infinity]; + pow [-0.0,1.5] [-infinity,2.5] = [0.0,infinity]; + pow [-0.0,1.5] [entire] = [0.0,infinity]; + pow [-0.0,1.5] [-1.0,0.0] = [0X1.5555555555555P-1,infinity]; + pow [-0.0,1.5] [-1.0,-0.0] = [0X1.5555555555555P-1,infinity]; + pow [-0.0,1.5] [-2.5,0.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.0,1.5] [-2.5,-0.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.0,1.5] [-infinity,0.0] = [0.0,infinity]; + pow [-0.0,1.5] [-infinity,-0.0] = [0.0,infinity]; + pow [-0.0,1.5] [-0.1,-0.1] = [0X1.EBA7C9E4D31E9P-1,infinity]; + pow [-0.0,1.5] [-1.0,-0.1] = [0X1.5555555555555P-1,infinity]; + pow [-0.0,1.5] [-2.5,-0.1] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.0,1.5] [-infinity,-0.1] = [0.0,infinity]; + pow [-0.0,1.5] [-1.0,-1.0] = [0X1.5555555555555P-1,infinity]; + pow [-0.0,1.5] [-2.5,-1.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.0,1.5] [-infinity,-1.0] = [0.0,infinity]; + pow [-0.0,1.5] [-2.5,-2.5] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.0,1.5] [-infinity,-2.5] = [0.0,infinity]; + + + pow [-0.0,infinity] [empty] = [empty]; + pow [-0.0,infinity] [0.0,0.0] = [1.0,1.0]; + pow [-0.0,infinity] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.0,infinity] [0.0,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-0.0,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [0.0,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [-0.0,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [0.0,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [-0.0,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [0.1,0.1] = [0.0,infinity]; + pow [-0.0,infinity] [0.1,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [0.1,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [0.1,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [1.0,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [1.0,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [1.0,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [2.5,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [2.5,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [-0.1,0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-0.1,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-0.1,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [-0.1,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,infinity] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,2.5] = [0.0,infinity]; + pow [-0.0,infinity] [entire] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,0.0] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,-0.0] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,0.0] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,-0.0] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,0.0] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,-0.0] = [0.0,infinity]; + pow [-0.0,infinity] [-0.1,-0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,-0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,-0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,-0.1] = [0.0,infinity]; + pow [-0.0,infinity] [-1.0,-1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,-1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,-1.0] = [0.0,infinity]; + pow [-0.0,infinity] [-infinity,-2.5] = [0.0,infinity]; + pow [-0.0,infinity] [-2.5,-2.5] = [0.0,infinity]; + + + pow [-0.1,0.5] [empty] = [empty]; + pow [-0.1,0.5] [0.0,0.0] = [1.0,1.0]; + pow [-0.1,0.5] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.1,0.5] [0.0,1.0] = [0.0,1.0]; + pow [-0.1,0.5] [-0.0,1.0] = [0.0,1.0]; + pow [-0.1,0.5] [0.0,2.5] = [0.0,1.0]; + pow [-0.1,0.5] [-0.0,2.5] = [0.0,1.0]; + pow [-0.1,0.5] [0.0,infinity] = [0.0,1.0]; + pow [-0.1,0.5] [-0.0,infinity] = [0.0,1.0]; + pow [-0.1,0.5] [0.1,0.1] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.1,0.5] [0.1,1.0] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.1,0.5] [0.1,2.5] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.1,0.5] [0.1,infinity] = [0.0,0X1.DDB680117AB13P-1]; + pow [-0.1,0.5] [1.0,1.0] = [0.0,0.5]; + pow [-0.1,0.5] [1.0,2.5] = [0.0,0.5]; + pow [-0.1,0.5] [1.0,infinity] = [0.0,0.5]; + pow [-0.1,0.5] [2.5,2.5] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [-0.1,0.5] [2.5,infinity] = [0.0,0X1.6A09E667F3BCDP-3]; + pow [-0.1,0.5] [-0.1,0.1] = [0.0,infinity]; + pow [-0.1,0.5] [-0.1,1.0] = [0.0,infinity]; + pow [-0.1,0.5] [-0.1,2.5] = [0.0,infinity]; + pow [-0.1,0.5] [-0.1,infinity] = [0.0,infinity]; + pow [-0.1,0.5] [-1.0,0.1] = [0.0,infinity]; + pow [-0.1,0.5] [-1.0,1.0] = [0.0,infinity]; + pow [-0.1,0.5] [-1.0,2.5] = [0.0,infinity]; + pow [-0.1,0.5] [-1.0,infinity] = [0.0,infinity]; + pow [-0.1,0.5] [-2.5,0.1] = [0.0,infinity]; + pow [-0.1,0.5] [-2.5,1.0] = [0.0,infinity]; + pow [-0.1,0.5] [-2.5,2.5] = [0.0,infinity]; + pow [-0.1,0.5] [-2.5,infinity] = [0.0,infinity]; + pow [-0.1,0.5] [-infinity,0.1] = [0.0,infinity]; + pow [-0.1,0.5] [-infinity,1.0] = [0.0,infinity]; + pow [-0.1,0.5] [-infinity,2.5] = [0.0,infinity]; + pow [-0.1,0.5] [entire] = [0.0,infinity]; + pow [-0.1,0.5] [-1.0,0.0] = [1.0,infinity]; + pow [-0.1,0.5] [-1.0,-0.0] = [1.0,infinity]; + pow [-0.1,0.5] [-2.5,0.0] = [1.0,infinity]; + pow [-0.1,0.5] [-2.5,-0.0] = [1.0,infinity]; + pow [-0.1,0.5] [-infinity,0.0] = [1.0,infinity]; + pow [-0.1,0.5] [-infinity,-0.0] = [1.0,infinity]; + pow [-0.1,0.5] [-0.1,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.1,0.5] [-1.0,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.1,0.5] [-2.5,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.1,0.5] [-infinity,-0.1] = [0X1.125FBEE250664P+0,infinity]; + pow [-0.1,0.5] [-1.0,-1.0] = [0X1P+1,infinity]; + pow [-0.1,0.5] [-2.5,-1.0] = [0X1P+1,infinity]; + pow [-0.1,0.5] [-infinity,-1.0] = [0X1P+1,infinity]; + pow [-0.1,0.5] [-2.5,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + pow [-0.1,0.5] [-infinity,-2.5] = [0X1.6A09E667F3BCCP+2,infinity]; + + + pow [-0.1,1.0] [empty] = [empty]; + pow [-0.1,1.0] [0.0,0.0] = [1.0,1.0]; + pow [-0.1,1.0] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.1,1.0] [0.0,1.0] = [0.0,1.0]; + pow [-0.1,1.0] [-0.0,1.0] = [0.0,1.0]; + pow [-0.1,1.0] [0.0,2.5] = [0.0,1.0]; + pow [-0.1,1.0] [-0.0,2.5] = [0.0,1.0]; + pow [-0.1,1.0] [0.0,infinity] = [0.0,1.0]; + pow [-0.1,1.0] [-0.0,infinity] = [0.0,1.0]; + pow [-0.1,1.0] [0.1,0.1] = [0.0,1.0]; + pow [-0.1,1.0] [0.1,1.0] = [0.0,1.0]; + pow [-0.1,1.0] [0.1,2.5] = [0.0,1.0]; + pow [-0.1,1.0] [0.1,infinity] = [0.0,1.0]; + pow [-0.1,1.0] [1.0,1.0] = [0.0,1.0]; + pow [-0.1,1.0] [1.0,2.5] = [0.0,1.0]; + pow [-0.1,1.0] [1.0,infinity] = [0.0,1.0]; + pow [-0.1,1.0] [2.5,2.5] = [0.0,1.0]; + pow [-0.1,1.0] [2.5,infinity] = [0.0,1.0]; + pow [-0.1,1.0] [-0.1,0.1] = [0.0,infinity]; + pow [-0.1,1.0] [-0.1,1.0] = [0.0,infinity]; + pow [-0.1,1.0] [-0.1,2.5] = [0.0,infinity]; + pow [-0.1,1.0] [-0.1,infinity] = [0.0,infinity]; + pow [-0.1,1.0] [-1.0,0.1] = [0.0,infinity]; + pow [-0.1,1.0] [-1.0,1.0] = [0.0,infinity]; + pow [-0.1,1.0] [-1.0,2.5] = [0.0,infinity]; + pow [-0.1,1.0] [-1.0,infinity] = [0.0,infinity]; + pow [-0.1,1.0] [-2.5,0.1] = [0.0,infinity]; + pow [-0.1,1.0] [-2.5,1.0] = [0.0,infinity]; + pow [-0.1,1.0] [-2.5,2.5] = [0.0,infinity]; + pow [-0.1,1.0] [-2.5,infinity] = [0.0,infinity]; + pow [-0.1,1.0] [-infinity,0.1] = [0.0,infinity]; + pow [-0.1,1.0] [-infinity,1.0] = [0.0,infinity]; + pow [-0.1,1.0] [-infinity,2.5] = [0.0,infinity]; + pow [-0.1,1.0] [entire] = [0.0,infinity]; + pow [-0.1,1.0] [-0.1,0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-0.1,-0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-1.0,0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-1.0,-0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-2.5,0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-2.5,-0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-infinity,0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-infinity,-0.0] = [1.0,infinity]; + pow [-0.1,1.0] [-0.1,-0.1] = [1.0,infinity]; + pow [-0.1,1.0] [-1.0,-0.1] = [1.0,infinity]; + pow [-0.1,1.0] [-2.5,-0.1] = [1.0,infinity]; + pow [-0.1,1.0] [-infinity,-0.1] = [1.0,infinity]; + pow [-0.1,1.0] [-1.0,-1.0] = [1.0,infinity]; + pow [-0.1,1.0] [-2.5,-1.0] = [1.0,infinity]; + pow [-0.1,1.0] [-infinity,-1.0] = [1.0,infinity]; + pow [-0.1,1.0] [-2.5,-2.5] = [1.0,infinity]; + pow [-0.1,1.0] [-infinity,-2.5] = [1.0,infinity]; + + + pow [-0.1,1.5] [empty] = [empty]; + pow [-0.1,1.5] [0.0,0.0] = [1.0,1.0]; + pow [-0.1,1.5] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.1,1.5] [0.0,1.0] = [0.0,1.5]; + pow [-0.1,1.5] [-0.0,1.0] = [0.0,1.5]; + pow [-0.1,1.5] [0.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.1,1.5] [-0.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.1,1.5] [0.0,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [-0.0,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [0.1,0.1] = [0.0,0X1.0A97DCE72A0CBP+0]; + pow [-0.1,1.5] [0.1,1.0] = [0.0,1.5]; + pow [-0.1,1.5] [0.1,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.1,1.5] [0.1,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [1.0,1.0] = [0.0,1.5]; + pow [-0.1,1.5] [1.0,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.1,1.5] [1.0,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [2.5,2.5] = [0.0,0X1.60B9FD68A4555P+1]; + pow [-0.1,1.5] [2.5,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [-0.1,0.1] = [0.0,infinity]; + pow [-0.1,1.5] [-0.1,1.0] = [0.0,infinity]; + pow [-0.1,1.5] [-0.1,2.5] = [0.0,infinity]; + pow [-0.1,1.5] [-0.1,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [-1.0,0.1] = [0.0,infinity]; + pow [-0.1,1.5] [-1.0,1.0] = [0.0,infinity]; + pow [-0.1,1.5] [-1.0,2.5] = [0.0,infinity]; + pow [-0.1,1.5] [-1.0,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [-2.5,0.1] = [0.0,infinity]; + pow [-0.1,1.5] [-2.5,1.0] = [0.0,infinity]; + pow [-0.1,1.5] [-2.5,2.5] = [0.0,infinity]; + pow [-0.1,1.5] [-2.5,infinity] = [0.0,infinity]; + pow [-0.1,1.5] [-infinity,0.1] = [0.0,infinity]; + pow [-0.1,1.5] [-infinity,1.0] = [0.0,infinity]; + pow [-0.1,1.5] [-infinity,2.5] = [0.0,infinity]; + pow [-0.1,1.5] [entire] = [0.0,infinity]; + pow [-0.1,1.5] [-1.0,0.0] = [0X1.5555555555555P-1,infinity]; + pow [-0.1,1.5] [-1.0,-0.0] = [0X1.5555555555555P-1,infinity]; + pow [-0.1,1.5] [-2.5,0.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.1,1.5] [-2.5,-0.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.1,1.5] [-infinity,0.0] = [0.0,infinity]; + pow [-0.1,1.5] [-infinity,-0.0] = [0.0,infinity]; + pow [-0.1,1.5] [-0.1,-0.1] = [0X1.EBA7C9E4D31E9P-1,infinity]; + pow [-0.1,1.5] [-1.0,-0.1] = [0X1.5555555555555P-1,infinity]; + pow [-0.1,1.5] [-2.5,-0.1] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.1,1.5] [-infinity,-0.1] = [0.0,infinity]; + pow [-0.1,1.5] [-1.0,-1.0] = [0X1.5555555555555P-1,infinity]; + pow [-0.1,1.5] [-2.5,-1.0] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.1,1.5] [-infinity,-1.0] = [0.0,infinity]; + pow [-0.1,1.5] [-2.5,-2.5] = [0X1.7398BF1D1EE6FP-2,infinity]; + pow [-0.1,1.5] [-infinity,-2.5] = [0.0,infinity]; + + + pow [-0.1,infinity] [empty] = [empty]; + pow [-0.1,infinity] [0.0,0.0] = [1.0,1.0]; + pow [-0.1,infinity] [-0.0,-0.0] = [1.0,1.0]; + pow [-0.1,infinity] [0.0,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-0.0,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [0.0,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [-0.0,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [0.0,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [-0.0,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [0.1,0.1] = [0.0,infinity]; + pow [-0.1,infinity] [0.1,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [0.1,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [0.1,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [1.0,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [1.0,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [1.0,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [2.5,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [2.5,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [-0.1,0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-0.1,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-0.1,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [-0.1,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,infinity] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,2.5] = [0.0,infinity]; + pow [-0.1,infinity] [entire] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,0.0] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,-0.0] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,0.0] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,-0.0] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,0.0] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,-0.0] = [0.0,infinity]; + pow [-0.1,infinity] [-0.1,-0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,-0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,-0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,-0.1] = [0.0,infinity]; + pow [-0.1,infinity] [-1.0,-1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,-1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,-1.0] = [0.0,infinity]; + pow [-0.1,infinity] [-infinity,-2.5] = [0.0,infinity]; + pow [-0.1,infinity] [-2.5,-2.5] = [0.0,infinity]; + + + pow [0.0,0.0] [empty] = [empty]; + pow [0.0,0.0] [0.0,0.0] = [empty]; + pow [0.0,0.0] [-0.0,-0.0] = [empty]; + pow [0.0,0.0] [0.0,1.0] = [0.0,0.0]; + pow [0.0,0.0] [-0.0,1.0] = [0.0,0.0]; + pow [0.0,0.0] [0.0,2.5] = [0.0,0.0]; + pow [0.0,0.0] [-0.0,2.5] = [0.0,0.0]; + pow [0.0,0.0] [0.0,infinity] = [0.0,0.0]; + pow [0.0,0.0] [-0.0,infinity] = [0.0,0.0]; + pow [0.0,0.0] [0.1,0.1] = [0.0,0.0]; + pow [0.0,0.0] [0.1,1.0] = [0.0,0.0]; + pow [0.0,0.0] [0.1,2.5] = [0.0,0.0]; + pow [0.0,0.0] [0.1,infinity] = [0.0,0.0]; + pow [0.0,0.0] [1.0,1.0] = [0.0,0.0]; + pow [0.0,0.0] [1.0,2.5] = [0.0,0.0]; + pow [0.0,0.0] [1.0,infinity] = [0.0,0.0]; + pow [0.0,0.0] [2.5,2.5] = [0.0,0.0]; + pow [0.0,0.0] [2.5,infinity] = [0.0,0.0]; + pow [0.0,0.0] [-0.1,0.1] = [0.0,0.0]; + pow [0.0,0.0] [-0.1,1.0] = [0.0,0.0]; + pow [0.0,0.0] [-0.1,2.5] = [0.0,0.0]; + pow [0.0,0.0] [-0.1,infinity] = [0.0,0.0]; + pow [0.0,0.0] [-1.0,0.1] = [0.0,0.0]; + pow [0.0,0.0] [-1.0,1.0] = [0.0,0.0]; + pow [0.0,0.0] [-1.0,2.5] = [0.0,0.0]; + pow [0.0,0.0] [-1.0,infinity] = [0.0,0.0]; + pow [0.0,0.0] [-2.5,0.1] = [0.0,0.0]; + pow [0.0,0.0] [-2.5,1.0] = [0.0,0.0]; + pow [0.0,0.0] [-2.5,2.5] = [0.0,0.0]; + pow [0.0,0.0] [-2.5,infinity] = [0.0,0.0]; + pow [0.0,0.0] [-infinity,0.1] = [0.0,0.0]; + pow [0.0,0.0] [-infinity,1.0] = [0.0,0.0]; + pow [0.0,0.0] [-infinity,2.5] = [0.0,0.0]; + pow [0.0,0.0] [entire] = [0.0,0.0]; + pow [0.0,0.0] [-1.0,0.0] = [empty]; + pow [0.0,0.0] [-1.0,-0.0] = [empty]; + pow [0.0,0.0] [-2.5,0.0] = [empty]; + pow [0.0,0.0] [-2.5,-0.0] = [empty]; + pow [0.0,0.0] [-infinity,0.0] = [empty]; + pow [0.0,0.0] [-infinity,-0.0] = [empty]; + pow [0.0,0.0] [-0.1,-0.1] = [empty]; + pow [0.0,0.0] [-1.0,-0.1] = [empty]; + pow [0.0,0.0] [-2.5,-0.1] = [empty]; + pow [0.0,0.0] [-infinity,-0.1] = [empty]; + pow [0.0,0.0] [-1.0,-1.0] = [empty]; + pow [0.0,0.0] [-2.5,-1.0] = [empty]; + pow [0.0,0.0] [-infinity,-1.0] = [empty]; + pow [0.0,0.0] [-infinity,-2.5] = [empty]; + pow [0.0,0.0] [-2.5,-2.5] = [empty]; + + + pow [-0.0,-0.0] [empty] = [empty]; + pow [-0.0,-0.0] [0.0,0.0] = [empty]; + pow [-0.0,-0.0] [-0.0,-0.0] = [empty]; + pow [-0.0,-0.0] [0.0,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.0,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [0.0,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.0,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [0.0,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.0,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [0.1,0.1] = [0.0,0.0]; + pow [-0.0,-0.0] [0.1,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [0.1,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [0.1,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [1.0,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [1.0,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [1.0,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [2.5,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [2.5,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.1,0.1] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.1,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.1,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [-0.1,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [-1.0,0.1] = [0.0,0.0]; + pow [-0.0,-0.0] [-1.0,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [-1.0,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [-1.0,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [-2.5,0.1] = [0.0,0.0]; + pow [-0.0,-0.0] [-2.5,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [-2.5,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [-2.5,infinity] = [0.0,0.0]; + pow [-0.0,-0.0] [-infinity,0.1] = [0.0,0.0]; + pow [-0.0,-0.0] [-infinity,1.0] = [0.0,0.0]; + pow [-0.0,-0.0] [-infinity,2.5] = [0.0,0.0]; + pow [-0.0,-0.0] [entire] = [0.0,0.0]; + pow [-0.0,-0.0] [-1.0,0.0] = [empty]; + pow [-0.0,-0.0] [-1.0,-0.0] = [empty]; + pow [-0.0,-0.0] [-2.5,0.0] = [empty]; + pow [-0.0,-0.0] [-2.5,-0.0] = [empty]; + pow [-0.0,-0.0] [-infinity,0.0] = [empty]; + pow [-0.0,-0.0] [-infinity,-0.0] = [empty]; + pow [-0.0,-0.0] [-0.1,-0.1] = [empty]; + pow [-0.0,-0.0] [-1.0,-0.1] = [empty]; + pow [-0.0,-0.0] [-2.5,-0.1] = [empty]; + pow [-0.0,-0.0] [-infinity,-0.1] = [empty]; + pow [-0.0,-0.0] [-1.0,-1.0] = [empty]; + pow [-0.0,-0.0] [-2.5,-1.0] = [empty]; + pow [-0.0,-0.0] [-infinity,-1.0] = [empty]; + pow [-0.0,-0.0] [-infinity,-2.5] = [empty]; + pow [-0.0,-0.0] [-2.5,-2.5] = [empty]; + + + pow [-0.0,0.0] [empty] = [empty]; + pow [-0.0,0.0] [0.0,0.0] = [empty]; + pow [-0.0,0.0] [-0.0,-0.0] = [empty]; + pow [-0.0,0.0] [0.0,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [-0.0,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [0.0,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [-0.0,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [0.0,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [-0.0,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [0.1,0.1] = [0.0,0.0]; + pow [-0.0,0.0] [0.1,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [0.1,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [0.1,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [1.0,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [1.0,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [1.0,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [2.5,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [2.5,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [-0.1,0.1] = [0.0,0.0]; + pow [-0.0,0.0] [-0.1,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [-0.1,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [-0.1,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [-1.0,0.1] = [0.0,0.0]; + pow [-0.0,0.0] [-1.0,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [-1.0,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [-1.0,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [-2.5,0.1] = [0.0,0.0]; + pow [-0.0,0.0] [-2.5,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [-2.5,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [-2.5,infinity] = [0.0,0.0]; + pow [-0.0,0.0] [-infinity,0.1] = [0.0,0.0]; + pow [-0.0,0.0] [-infinity,1.0] = [0.0,0.0]; + pow [-0.0,0.0] [-infinity,2.5] = [0.0,0.0]; + pow [-0.0,0.0] [entire] = [0.0,0.0]; + pow [-0.0,0.0] [-1.0,0.0] = [empty]; + pow [-0.0,0.0] [-1.0,-0.0] = [empty]; + pow [-0.0,0.0] [-2.5,0.0] = [empty]; + pow [-0.0,0.0] [-2.5,-0.0] = [empty]; + pow [-0.0,0.0] [-infinity,0.0] = [empty]; + pow [-0.0,0.0] [-infinity,-0.0] = [empty]; + pow [-0.0,0.0] [-0.1,-0.1] = [empty]; + pow [-0.0,0.0] [-1.0,-0.1] = [empty]; + pow [-0.0,0.0] [-2.5,-0.1] = [empty]; + pow [-0.0,0.0] [-infinity,-0.1] = [empty]; + pow [-0.0,0.0] [-1.0,-1.0] = [empty]; + pow [-0.0,0.0] [-2.5,-1.0] = [empty]; + pow [-0.0,0.0] [-infinity,-1.0] = [empty]; + pow [-0.0,0.0] [-infinity,-2.5] = [empty]; + pow [-0.0,0.0] [-2.5,-2.5] = [empty]; + + + pow [0.0,-0.0] [empty] = [empty]; + pow [0.0,-0.0] [0.0,0.0] = [empty]; + pow [0.0,-0.0] [-0.0,-0.0] = [empty]; + pow [0.0,-0.0] [0.0,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [-0.0,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [0.0,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [-0.0,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [0.0,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [-0.0,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [0.1,0.1] = [0.0,0.0]; + pow [0.0,-0.0] [0.1,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [0.1,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [0.1,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [1.0,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [1.0,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [1.0,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [2.5,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [2.5,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [-0.1,0.1] = [0.0,0.0]; + pow [0.0,-0.0] [-0.1,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [-0.1,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [-0.1,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [-1.0,0.1] = [0.0,0.0]; + pow [0.0,-0.0] [-1.0,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [-1.0,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [-1.0,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [-2.5,0.1] = [0.0,0.0]; + pow [0.0,-0.0] [-2.5,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [-2.5,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [-2.5,infinity] = [0.0,0.0]; + pow [0.0,-0.0] [-infinity,0.1] = [0.0,0.0]; + pow [0.0,-0.0] [-infinity,1.0] = [0.0,0.0]; + pow [0.0,-0.0] [-infinity,2.5] = [0.0,0.0]; + pow [0.0,-0.0] [entire] = [0.0,0.0]; + pow [0.0,-0.0] [-1.0,0.0] = [empty]; + pow [0.0,-0.0] [-1.0,-0.0] = [empty]; + pow [0.0,-0.0] [-2.5,0.0] = [empty]; + pow [0.0,-0.0] [-2.5,-0.0] = [empty]; + pow [0.0,-0.0] [-infinity,0.0] = [empty]; + pow [0.0,-0.0] [-infinity,-0.0] = [empty]; + pow [0.0,-0.0] [-0.1,-0.1] = [empty]; + pow [0.0,-0.0] [-1.0,-0.1] = [empty]; + pow [0.0,-0.0] [-2.5,-0.1] = [empty]; + pow [0.0,-0.0] [-infinity,-0.1] = [empty]; + pow [0.0,-0.0] [-1.0,-1.0] = [empty]; + pow [0.0,-0.0] [-2.5,-1.0] = [empty]; + pow [0.0,-0.0] [-infinity,-1.0] = [empty]; + pow [0.0,-0.0] [-infinity,-2.5] = [empty]; + pow [0.0,-0.0] [-2.5,-2.5] = [empty]; + + + pow [-1.0,0.0] [empty] = [empty]; + pow [-1.0,0.0] [0.0,0.0] = [empty]; + pow [-1.0,0.0] [-0.0,-0.0] = [empty]; + pow [-1.0,0.0] [0.0,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [-0.0,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [0.0,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [-0.0,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [0.0,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [-0.0,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [0.1,0.1] = [0.0,0.0]; + pow [-1.0,0.0] [0.1,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [0.1,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [0.1,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [1.0,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [1.0,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [1.0,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [2.5,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [2.5,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [-0.1,0.1] = [0.0,0.0]; + pow [-1.0,0.0] [-0.1,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [-0.1,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [-0.1,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [-1.0,0.1] = [0.0,0.0]; + pow [-1.0,0.0] [-1.0,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [-1.0,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [-1.0,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [-2.5,0.1] = [0.0,0.0]; + pow [-1.0,0.0] [-2.5,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [-2.5,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [-2.5,infinity] = [0.0,0.0]; + pow [-1.0,0.0] [-infinity,0.1] = [0.0,0.0]; + pow [-1.0,0.0] [-infinity,1.0] = [0.0,0.0]; + pow [-1.0,0.0] [-infinity,2.5] = [0.0,0.0]; + pow [-1.0,0.0] [entire] = [0.0,0.0]; + pow [-1.0,0.0] [-1.0,0.0] = [empty]; + pow [-1.0,0.0] [-1.0,-0.0] = [empty]; + pow [-1.0,0.0] [-2.5,0.0] = [empty]; + pow [-1.0,0.0] [-2.5,-0.0] = [empty]; + pow [-1.0,0.0] [-infinity,0.0] = [empty]; + pow [-1.0,0.0] [-infinity,-0.0] = [empty]; + pow [-1.0,0.0] [-0.1,-0.1] = [empty]; + pow [-1.0,0.0] [-1.0,-0.1] = [empty]; + pow [-1.0,0.0] [-2.5,-0.1] = [empty]; + pow [-1.0,0.0] [-infinity,-0.1] = [empty]; + pow [-1.0,0.0] [-1.0,-1.0] = [empty]; + pow [-1.0,0.0] [-2.5,-1.0] = [empty]; + pow [-1.0,0.0] [-infinity,-1.0] = [empty]; + pow [-1.0,0.0] [-infinity,-2.5] = [empty]; + pow [-1.0,0.0] [-2.5,-2.5] = [empty]; + + + pow [-1.0,-0.0] [empty] = [empty]; + pow [-1.0,-0.0] [0.0,0.0] = [empty]; + pow [-1.0,-0.0] [-0.0,-0.0] = [empty]; + pow [-1.0,-0.0] [0.0,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.0,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [0.0,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.0,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [0.0,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.0,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [0.1,0.1] = [0.0,0.0]; + pow [-1.0,-0.0] [0.1,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [0.1,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [0.1,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [1.0,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [1.0,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [1.0,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [2.5,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [2.5,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.1,0.1] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.1,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.1,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [-0.1,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [-1.0,0.1] = [0.0,0.0]; + pow [-1.0,-0.0] [-1.0,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [-1.0,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [-1.0,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [-2.5,0.1] = [0.0,0.0]; + pow [-1.0,-0.0] [-2.5,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [-2.5,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [-2.5,infinity] = [0.0,0.0]; + pow [-1.0,-0.0] [-infinity,0.1] = [0.0,0.0]; + pow [-1.0,-0.0] [-infinity,1.0] = [0.0,0.0]; + pow [-1.0,-0.0] [-infinity,2.5] = [0.0,0.0]; + pow [-1.0,-0.0] [entire] = [0.0,0.0]; + pow [-1.0,-0.0] [-1.0,0.0] = [empty]; + pow [-1.0,-0.0] [-1.0,-0.0] = [empty]; + pow [-1.0,-0.0] [-2.5,0.0] = [empty]; + pow [-1.0,-0.0] [-2.5,-0.0] = [empty]; + pow [-1.0,-0.0] [-infinity,0.0] = [empty]; + pow [-1.0,-0.0] [-infinity,-0.0] = [empty]; + pow [-1.0,-0.0] [-0.1,-0.1] = [empty]; + pow [-1.0,-0.0] [-1.0,-0.1] = [empty]; + pow [-1.0,-0.0] [-2.5,-0.1] = [empty]; + pow [-1.0,-0.0] [-infinity,-0.1] = [empty]; + pow [-1.0,-0.0] [-1.0,-1.0] = [empty]; + pow [-1.0,-0.0] [-2.5,-1.0] = [empty]; + pow [-1.0,-0.0] [-infinity,-1.0] = [empty]; + pow [-1.0,-0.0] [-infinity,-2.5] = [empty]; + pow [-1.0,-0.0] [-2.5,-2.5] = [empty]; + + + pow [-1.0,-0.1] [empty] = [empty]; + pow [-1.0,-0.1] [0.0,0.0] = [empty]; + pow [-1.0,-0.1] [-0.0,-0.0] = [empty]; + pow [-1.0,-0.1] [0.0,1.0] = [empty]; + pow [-1.0,-0.1] [-0.0,1.0] = [empty]; + pow [-1.0,-0.1] [0.0,2.5] = [empty]; + pow [-1.0,-0.1] [-0.0,2.5] = [empty]; + pow [-1.0,-0.1] [0.0,infinity] = [empty]; + pow [-1.0,-0.1] [-0.0,infinity] = [empty]; + pow [-1.0,-0.1] [0.1,0.1] = [empty]; + pow [-1.0,-0.1] [0.1,1.0] = [empty]; + pow [-1.0,-0.1] [0.1,2.5] = [empty]; + pow [-1.0,-0.1] [0.1,infinity] = [empty]; + pow [-1.0,-0.1] [1.0,1.0] = [empty]; + pow [-1.0,-0.1] [1.0,2.5] = [empty]; + pow [-1.0,-0.1] [1.0,infinity] = [empty]; + pow [-1.0,-0.1] [2.5,2.5] = [empty]; + pow [-1.0,-0.1] [2.5,infinity] = [empty]; + pow [-1.0,-0.1] [-0.1,0.1] = [empty]; + pow [-1.0,-0.1] [-0.1,1.0] = [empty]; + pow [-1.0,-0.1] [-0.1,2.5] = [empty]; + pow [-1.0,-0.1] [-0.1,infinity] = [empty]; + pow [-1.0,-0.1] [-1.0,0.1] = [empty]; + pow [-1.0,-0.1] [-1.0,1.0] = [empty]; + pow [-1.0,-0.1] [-1.0,2.5] = [empty]; + pow [-1.0,-0.1] [-1.0,infinity] = [empty]; + pow [-1.0,-0.1] [-2.5,0.1] = [empty]; + pow [-1.0,-0.1] [-2.5,1.0] = [empty]; + pow [-1.0,-0.1] [-2.5,2.5] = [empty]; + pow [-1.0,-0.1] [-2.5,infinity] = [empty]; + pow [-1.0,-0.1] [-infinity,0.1] = [empty]; + pow [-1.0,-0.1] [-infinity,1.0] = [empty]; + pow [-1.0,-0.1] [-infinity,2.5] = [empty]; + pow [-1.0,-0.1] [entire] = [empty]; + pow [-1.0,-0.1] [-1.0,0.0] = [empty]; + pow [-1.0,-0.1] [-1.0,-0.0] = [empty]; + pow [-1.0,-0.1] [-2.5,0.0] = [empty]; + pow [-1.0,-0.1] [-2.5,-0.0] = [empty]; + pow [-1.0,-0.1] [-infinity,0.0] = [empty]; + pow [-1.0,-0.1] [-infinity,-0.0] = [empty]; + pow [-1.0,-0.1] [-0.1,-0.1] = [empty]; + pow [-1.0,-0.1] [-1.0,-0.1] = [empty]; + pow [-1.0,-0.1] [-2.5,-0.1] = [empty]; + pow [-1.0,-0.1] [-infinity,-0.1] = [empty]; + pow [-1.0,-0.1] [-1.0,-1.0] = [empty]; + pow [-1.0,-0.1] [-2.5,-1.0] = [empty]; + pow [-1.0,-0.1] [-infinity,-1.0] = [empty]; + pow [-1.0,-0.1] [-infinity,-2.5] = [empty]; + pow [-1.0,-0.1] [-2.5,-2.5] = [empty]; +} + +testcase minimal_pow_dec_test { + pow [0.1,0.5]_com [0.0,1.0]_com = [0X1.999999999999AP-4,1.0]_com; + pow [0.1,0.5]_com [0.1,0.1]_def = [0X1.96B230BCDC434P-1,0X1.DDB680117AB13P-1]_def; + pow [0.1,0.5]_trv [-2.5,2.5]_dac = [0X1.9E7C6E43390B7P-9,0X1.3C3A4EDFA9758P+8]_trv; + pow [0.1,0.5]_com [-2.5,infinity]_dac = [0.0,0X1.3C3A4EDFA9758P+8]_dac; + pow [0.1,0.5]_trv [-infinity,0.1]_dac = [0X1.96B230BCDC434P-1,infinity]_trv; + + pow [0.1,1.0]_com [0.0,2.5]_com = [0X1.9E7C6E43390B7P-9,1.0]_com; + pow [0.1,1.0]_def [1.0,1.0]_dac = [0X1.999999999999AP-4,1.0]_def; + pow [0.1,1.0]_trv [-2.5,1.0]_def = [0X1.999999999999AP-4,0X1.3C3A4EDFA9758P+8]_trv; + + pow [0.5,1.5]_dac [0.1,0.1]_com = [0X1.DDB680117AB12P-1,0X1.0A97DCE72A0CBP+0]_dac; + pow [0.5,1.5]_def [-2.5,0.1]_trv = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]_trv; + pow [0.5,1.5]_com [-2.5,-2.5]_com = [0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2]_com; + + pow [0.5,infinity]_dac [0.1,0.1]_com = [0X1.DDB680117AB12P-1,infinity]_dac; + pow [0.5,infinity]_def [-2.5,-0.0]_com = [0.0,0X1.6A09E667F3BCDP+2]_def; + + pow [1.0,1.5]_com [-0.1,0.1]_def = [0X1.EBA7C9E4D31E9P-1,0X1.0A97DCE72A0CBP+0]_def; + pow [1.0,1.5]_trv [-0.1,-0.1]_com = [0X1.EBA7C9E4D31E9P-1,1.0]_trv; + + pow [1.0,infinity]_dac [1.0,1.0]_dac = [1.0,infinity]_dac; + pow [1.0,infinity]_def [-1.0,-0.0]_dac = [0X0P+0,1.0]_def; + + pow [1.1,1.5]_def [1.0,2.5]_com = [0X1.199999999999AP+0,0X1.60B9FD68A4555P+1]_def; + pow [1.1,1.5]_com [-0.1,-0.1]_com = [0X1.EBA7C9E4D31E9P-1,0X1.FB24AF5281928P-1]_com; + + pow [1.1,infinity]_dac [0.1,infinity]_dac = [0X1.02739C65D58BFP+0,infinity]_dac; + pow [1.1,infinity]_def [-2.5,infinity]_dac = [0X0P+0,infinity]_def; + pow [1.1,infinity]_trv [-infinity,-1.0]_def = [0X0P+0,0X1.D1745D1745D17P-1]_trv; + + pow [0.0,0.5]_com [0.1,0.1]_com = [0.0,0X1.DDB680117AB13P-1]_com; + pow [0.0,0.5]_com [2.5,infinity]_dac = [0.0,0X1.6A09E667F3BCDP-3]_dac; + pow [0.0,0.5]_com [-infinity,-2.5]_dac = [0X1.6A09E667F3BCCP+2,infinity]_trv; + + pow [0.0,1.0]_com [0.0,0.0]_com = [1.0,1.0]_trv; + pow [0.0,1.0]_def [0.0,2.5]_dac = [0.0,1.0]_trv; + pow [0.0,1.0]_dac [1.0,2.5]_com = [0.0,1.0]_dac; + pow [0.0,1.0]_com [-2.5,0.1]_dac = [0.0,infinity]_trv; + pow [0.0,1.0]_def [entire]_def = [0.0,infinity]_trv; + pow [0.0,1.0]_dac [-0.1,0.0]_com = [1.0,infinity]_trv; + pow [0.0,1.0]_com [-infinity,0.0]_dac = [1.0,infinity]_trv; + pow [0.0,1.0]_def [-infinity,-2.5]_dac = [1.0,infinity]_trv; + + pow [0.0,1.5]_com [0.0,2.5]_com = [0.0,0X1.60B9FD68A4555P+1]_trv; + pow [0.0,1.5]_def [2.5,2.5]_dac = [0.0,0X1.60B9FD68A4555P+1]_def; + pow [0.0,1.5]_dac [-1.0,0.0]_com = [0X1.5555555555555P-1,infinity]_trv; + pow [0.0,1.5]_com [-2.5,-2.5]_def = [0X1.7398BF1D1EE6FP-2,infinity]_trv; + + pow [0.0,infinity]_dac [0.1,0.1]_com = [0.0,infinity]_dac; + pow [0.0,infinity]_def [-1.0,1.0]_dac = [0.0,infinity]_trv; + pow [0.0,infinity]_trv [-infinity,-1.0]_def = [0.0,infinity]_trv; + pow [0.0,infinity]_dac [-2.5,-2.5]_dac = [0.0,infinity]_trv; + + pow [-0.0,0.5]_com [0.0,infinity]_dac = [0.0,1.0]_trv; + pow [-0.0,0.5]_def [0.1,infinity]_def = [0.0,0X1.DDB680117AB13P-1]_def; + pow [-0.0,0.5]_dac [2.5,2.5]_com = [0.0,0X1.6A09E667F3BCDP-3]_dac; + pow [-0.0,0.5]_trv [-2.5,-0.0]_dac = [1.0,infinity]_trv; + pow [-0.0,0.5]_com [-infinity,-0.1]_def = [0X1.125FBEE250664P+0,infinity]_trv; + pow [-0.0,0.5]_def [-infinity,-2.5]_dac = [0X1.6A09E667F3BCCP+2,infinity]_trv; + + pow [-0.0,1.0]_com [2.5,2.5]_dac = [0.0,1.0]_dac; + pow [-0.0,1.0]_dac [-1.0,infinity]_def = [0.0,infinity]_trv; + pow [-0.0,1.0]_com [entire]_def = [0.0,infinity]_trv; + pow [-0.0,1.0]_def [-2.5,-2.5]_com = [1.0,infinity]_trv; + pow [-0.0,1.0]_dac [-infinity,-2.5]_def = [1.0,infinity]_trv; + + pow [-0.0,1.5]_com [0.1,2.5]_dac = [0.0,0X1.60B9FD68A4555P+1]_dac; + pow [-0.0,1.5]_def [-1.0,0.0]_trv = [0X1.5555555555555P-1,infinity]_trv; + pow [-0.0,1.5]_dac [-2.5,-0.1]_def = [0X1.7398BF1D1EE6FP-2,infinity]_trv; + pow [-0.0,1.5]_com [-2.5,-2.5]_com = [0X1.7398BF1D1EE6FP-2,infinity]_trv; + pow [-0.0,1.5]_def [-infinity,-2.5]_dac = [0.0,infinity]_trv; + + pow [-0.0,infinity]_dac [-0.1,infinity]_dac = [0.0,infinity]_trv; + pow [-0.0,infinity]_def [-2.5,-0.0]_com = [0.0,infinity]_trv; + pow [-0.0,infinity]_trv [-infinity,0.0]_def = [0.0,infinity]_trv; + pow [-0.0,infinity]_dac [-infinity,-0.0]_trv = [0.0,infinity]_trv; + pow [-0.0,infinity]_def [-infinity,-1.0]_def = [0.0,infinity]_trv; + + pow [-0.1,0.5]_def [0.1,infinity]_dac = [0.0,0X1.DDB680117AB13P-1]_trv; + pow [-0.1,0.5]_com [-0.1,-0.1]_com = [0X1.125FBEE250664P+0,infinity]_trv; + pow [-0.1,0.5]_dac [-infinity,-2.5]_def = [0X1.6A09E667F3BCCP+2,infinity]_trv; + + pow [-0.1,1.0]_com [0.0,0.0]_com = [1.0,1.0]_trv; + pow [-0.1,1.0]_dac [-infinity,2.5]_dac = [0.0,infinity]_trv; + pow [-0.1,1.0]_def [-infinity,-1.0]_def = [1.0,infinity]_trv; + pow [-0.1,1.0]_com [-2.5,-2.5]_com = [1.0,infinity]_trv; + pow [-0.1,1.0]_trv [-infinity,-2.5]_trv = [1.0,infinity]_trv; + + pow [-0.1,1.5]_trv [0.0,2.5]_com = [0.0,0X1.60B9FD68A4555P+1]_trv; + pow [-0.1,1.5]_com [2.5,2.5]_dac = [0.0,0X1.60B9FD68A4555P+1]_trv; + pow [-0.1,1.5]_dac [-1.0,0.0]_trv = [0X1.5555555555555P-1,infinity]_trv; + pow [-0.1,1.5]_com [-0.1,-0.1]_com = [0X1.EBA7C9E4D31E9P-1,infinity]_trv; + pow [-0.1,1.5]_def [-2.5,-2.5]_def = [0X1.7398BF1D1EE6FP-2,infinity]_trv; + + pow [-0.1,infinity]_dac [-0.1,2.5]_com = [0.0,infinity]_trv; + pow [-0.1,infinity]_def [-2.5,0.0]_def = [0.0,infinity]_trv; + pow [-0.1,infinity]_dac [-2.5,-2.5]_trv = [0.0,infinity]_trv; + + pow [0.0,0.0]_com [1.0,infinity]_dac = [0.0,0.0]_dac; + pow [0.0,0.0]_com [-2.5,0.1]_com = [0.0,0.0]_trv; + pow [0.0,0.0]_dac [-1.0,0.0]_def = [empty]_trv; + + pow [-1.0,-0.1]_com [-0.1,1.0]_def = [empty]_trv; + pow [-1.0,-0.1]_dac [-0.1,2.5]_com = [empty]_trv; + pow [-1.0,-0.1]_def [-0.1,infinity]_trv = [empty]_trv; +} + +testcase minimal_exp_test { + exp [empty] = [empty]; + + exp [-infinity,0.0] = [0.0,1.0]; + exp [-infinity,-0.0] = [0.0,1.0]; + exp [0.0,infinity] = [1.0,infinity]; + exp [-0.0,infinity] = [1.0,infinity]; + exp [entire] = [0.0,infinity]; + + exp [-infinity,0X1.62E42FEFA39FP+9] = [0.0,infinity]; + exp [0X1.62E42FEFA39FP+9,0X1.62E42FEFA39FP+9] = [ 0X1.FFFFFFFFFFFFFP+1023,infinity]; + exp [0.0,0X1.62E42FEFA39EP+9] = [1.0,0X1.FFFFFFFFFC32BP+1023]; + exp [-0.0,0X1.62E42FEFA39EP+9] = [1.0,0X1.FFFFFFFFFC32BP+1023]; + exp [-0X1.6232BDD7ABCD3P+9,0X1.62E42FEFA39EP+9] = [0X0.FFFFFFFFFFE7BP-1022,0X1.FFFFFFFFFC32BP+1023]; + exp [-0X1.6232BDD7ABCD3P+8,0X1.62E42FEFA39EP+9] = [0X1.FFFFFFFFFFE7BP-512,0X1.FFFFFFFFFC32BP+1023]; + exp [-0X1.6232BDD7ABCD3P+8,0.0] = [0X1.FFFFFFFFFFE7BP-512,1.0]; + exp [-0X1.6232BDD7ABCD3P+8,-0.0] = [0X1.FFFFFFFFFFE7BP-512,1.0]; + exp [-0X1.6232BDD7ABCD3P+8,1.0] = [0X1.FFFFFFFFFFE7BP-512,0X1.5BF0A8B14576AP+1]; + + exp [1.0,5.0] = [0X1.5BF0A8B145769P+1,0X1.28D389970339P+7]; + + exp [-0X1.A934F0979A372P+1,0X1.CEAECFEA8085AP+0] = [0X1.2797F0A337A5FP-5,0X1.86091CC9095C5P+2]; + exp [0X1.87F42B972949CP-1,0X1.8B55484710029P+6] = [0X1.1337E9E45812AP+1, 0X1.805A5C88021B6P+142]; + exp [0X1.78025C8B3FD39P+3,0X1.9FD8EEF3FA79BP+4] = [0X1.EF461A783114CP+16,0X1.691D36C6B008CP+37]; +} + +testcase minimal_exp_dec_test { + exp [0X1.62E42FEFA39FP+9,0X1.62E42FEFA39FP+9]_com = [ 0X1.FFFFFFFFFFFFFP+1023,infinity]_dac; + exp [0.0,0X1.62E42FEFA39EP+9]_def = [1.0,0X1.FFFFFFFFFC32BP+1023]_def; +} + +testcase minimal_exp2_test { + exp2 [empty] = [empty]; + + exp2 [-infinity,0.0] = [0.0,1.0]; + exp2 [-infinity,-0.0] = [0.0,1.0]; + exp2 [0.0,infinity] = [1.0,infinity]; + exp2 [-0.0,infinity] = [1.0,infinity]; + exp2 [entire] = [0.0,infinity]; + + exp2 [-infinity,1024.0] = [0.0,infinity]; + exp2 [1024.0,1024.0] = [0X1.FFFFFFFFFFFFFP+1023,infinity]; + exp2 [0.0,1023.0] = [1.0,0X1P+1023]; + exp2 [-0.0,1023.0] = [1.0,0X1P+1023]; + exp2 [-1022.0,1023.0] = [0X1P-1022,0X1P+1023]; + exp2 [-1022.0,0.0] = [0X1P-1022,1.0]; + exp2 [-1022.0,-0.0] = [0X1P-1022,1.0]; + exp2 [-1022.0,1.0] = [0X1P-1022,2.0]; + + exp2 [1.0,5.0] = [2.0,32.0]; + + exp2 [-0X1.A934F0979A372P+1,0X1.CEAECFEA8085AP+0] = [0X1.9999999999998P-4,0X1.C000000000001P+1]; + exp2 [0X1.87F42B972949CP-1,0X1.8B55484710029P+6] = [0X1.B333333333332P+0,0X1.C81FD88228B4FP+98]; + exp2 [0X1.78025C8B3FD39P+3,0X1.9FD8EEF3FA79BP+4] = [0X1.AEA0000721857P+11,0X1.FCA0555555559P+25]; +} + +testcase minimal_exp2_dec_test { + exp2 [1024.0,1024.0]_com = [0X1.FFFFFFFFFFFFFP+1023,infinity]_dac; + exp2 [0X1.87F42B972949CP-1,0X1.8B55484710029P+6]_def = [0X1.B333333333332P+0,0X1.C81FD88228B4FP+98]_def; +} + +testcase minimal_exp10_test { + exp10 [empty] = [empty]; + + exp10 [-infinity,0.0] = [0.0,1.0]; + exp10 [-infinity,-0.0] = [0.0,1.0]; + exp10 [0.0,infinity] = [1.0,infinity]; + exp10 [-0.0,infinity] = [1.0,infinity]; + exp10 [entire] = [0.0,infinity]; + + exp10 [-infinity,0X1.34413509F79FFP+8] = [0.0,infinity]; + exp10 [0X1.34413509F79FFP+8,0X1.34413509F79FFP+8] = [0X1.FFFFFFFFFFFFFP+1023,infinity]; + + exp10 [0.0,0X1.34413509F79FEP+8] = [1.0,0X1.FFFFFFFFFFBA1P+1023]; + exp10 [-0.0,0X1.34413509F79FEP+8] = [1.0,0X1.FFFFFFFFFFBA1P+1023]; + exp10 [-0X1.33A7146F72A42P+8,0X1.34413509F79FEP+8] = [0X0.FFFFFFFFFFFE3P-1022,0X1.FFFFFFFFFFBA1P+1023]; + exp10 [-0X1.22P+7,0X1.34413509F79FEP+8] = [0X1.3FAAC3E3FA1F3P-482,0X1.FFFFFFFFFFBA1P+1023]; + exp10 [-0X1.22P+7,0.0] = [0X1.3FAAC3E3FA1F3P-482,1.0]; + exp10 [-0X1.22P+7,-0.0] = [0X1.3FAAC3E3FA1F3P-482,1.0]; + exp10 [-0X1.22P+7,1.0] = [0X1.3FAAC3E3FA1F3P-482,10.0]; + + exp10 [1.0,5.0] = [10.0,100000.0]; + + exp10 [-0X1.A934F0979A372P+1,0X1.CEAECFEA8085AP+0] = [0X1.F3A8254311F9AP-12,0X1.00B18AD5B7D56P+6]; + exp10 [0X1.87F42B972949CP-1,0X1.8B55484710029P+6] = [0X1.75014B7296807P+2,0X1.3EEC1D47DFB2BP+328]; + exp10 [0X1.78025C8B3FD39P+3,0X1.9FD8EEF3FA79BP+4] = [0X1.0608D2279A811P+39,0X1.43AF5D4271CB8P+86]; +} + +testcase minimal_exp10_dec_test { + exp10 [0X1.34413509F79FFP+8,0X1.34413509F79FFP+8]_com = [ 0X1.FFFFFFFFFFFFFP+1023,infinity]_dac; + exp10 [0X1.87F42B972949CP-1,0X1.8B55484710029P+6]_def = [0X1.75014B7296807P+2,0X1.3EEC1D47DFB2BP+328]_def; +} + +testcase minimal_log_test { + log [empty] = [empty]; + log [-infinity,0.0] = [empty]; + log [-infinity,-0.0] = [empty]; + + log [0.0,1.0] = [-infinity,0.0]; + log [-0.0,1.0] = [-infinity,0.0]; + log [1.0,infinity] = [0.0,infinity]; + + log [0.0,infinity] = [entire]; + log [-0.0,infinity] = [entire]; + log [entire] = [entire]; + + log [0.0,0x1.FFFFFFFFFFFFFp1023] = [-infinity,0X1.62E42FEFA39FP+9]; + log [-0.0,0x1.FFFFFFFFFFFFFp1023] = [-infinity,0X1.62E42FEFA39FP+9]; + log [1.0,0x1.FFFFFFFFFFFFFp1023] = [0.0,0X1.62E42FEFA39FP+9]; + log [0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023] = [-0x1.74385446D71C4p9, +0x1.62E42FEFA39Fp9]; + log [0x0.0000000000001p-1022,1.0] = [-0x1.74385446D71C4p9,0.0]; + + log [0X1.5BF0A8B145769P+1,0X1.5BF0A8B145769P+1] = [0X1.FFFFFFFFFFFFFP-1,0X1P+0]; + log [0X1.5BF0A8B14576AP+1,0X1.5BF0A8B14576AP+1] = [0X1P+0,0X1.0000000000001P+0]; + + log [0x0.0000000000001p-1022,0X1.5BF0A8B14576AP+1] = [-0x1.74385446D71C4p9,0X1.0000000000001P+0]; + + log [0X1.5BF0A8B145769P+1,32.0] = [0X1.FFFFFFFFFFFFFP-1,0X1.BB9D3BEB8C86CP+1]; + + log [0X1.999999999999AP-4,0X1.CP+1] = [-0X1.26BB1BBB55516P+1,0X1.40B512EB53D6P+0]; + log [0X1.B333333333333P+0,0X1.C81FD88228B2FP+98] = [0X1.0FAE81914A99P-1,0X1.120627F6AE7F1P+6]; + log [0X1.AEA0000721861P+11,0X1.FCA055555554CP+25] = [0X1.04A1363DB1E63P+3,0X1.203E52C0256B5P+4]; +} + +testcase minimal_log_dec_test { + log [0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023]_com = [-0x1.74385446D71C4p9,0X1.62E42FEFA39FP+9]_com; + log [0.0,1.0]_com = [-infinity,0.0]_trv; + log [0X1.5BF0A8B14576AP+1,0X1.5BF0A8B14576AP+1]_def = [0X1P+0,0X1.0000000000001P+0]_def; +} + +testcase minimal_log2_test { + log2 [empty] = [empty]; + log2 [-infinity,0.0] = [empty]; + log2 [-infinity,-0.0] = [empty]; + + log2 [0.0,1.0] = [-infinity,0.0]; + log2 [-0.0,1.0] = [-infinity,0.0]; + log2 [1.0,infinity] = [0.0,infinity]; + + log2 [0.0,infinity] = [entire]; + log2 [-0.0,infinity] = [entire]; + log2 [entire] = [entire]; + + log2 [0.0,0x1.FFFFFFFFFFFFFp1023] = [-infinity,1024.0]; + log2 [-0.0,0x1.FFFFFFFFFFFFFp1023] = [-infinity,1024.0]; + log2 [1.0,0x1.FFFFFFFFFFFFFp1023] = [0.0,1024.0]; + log2 [0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023] = [-1074.0,1024.0]; + log2 [0x0.0000000000001p-1022,1.0] = [-1074.0,0.0]; + log2 [0x0.0000000000001p-1022,2.0] = [-1074.0,1.0]; + + log2 [2.0,32.0] = [1.0,5.0]; + + log2 [0X1.999999999999AP-4,0X1.CP+1] = [-0X1.A934F0979A372P+1,0X1.CEAECFEA8085AP+0]; + log2 [0X1.B333333333333P+0,0X1.C81FD88228B2FP+98] = [0X1.87F42B972949CP-1,0X1.8B55484710029P+6]; + log2 [0X1.AEA0000721861P+11,0X1.FCA055555554CP+25] = [0X1.78025C8B3FD39P+3,0X1.9FD8EEF3FA79BP+4]; +} + +testcase minimal_log2_dec_test { + log2 [0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023]_com = [-1074.0,1024.0]_com; + log2 [0x0.0000000000001p-1022,infinity]_dac = [-1074.0,infinity]_dac; + log2 [2.0,32.0]_def = [1.0,5.0]_def; + log2 [0.0,0x1.FFFFFFFFFFFFFp1023]_com = [-infinity,1024.0]_trv; +} + +testcase minimal_log10_test { + log10 [empty] = [empty]; + log10 [-infinity,0.0] = [empty]; + log10 [-infinity,-0.0] = [empty]; + + log10 [0.0,1.0] = [-infinity,0.0]; + log10 [-0.0,1.0] = [-infinity,0.0]; + log10 [1.0,infinity] = [0.0,infinity]; + + log10 [0.0,infinity] = [entire]; + log10 [-0.0,infinity] = [entire]; + log10 [entire] = [entire]; + + log10 [0.0,0x1.FFFFFFFFFFFFFp1023] = [-infinity,0X1.34413509F79FFP+8]; + log10 [-0.0,0x1.FFFFFFFFFFFFFp1023] = [-infinity,0X1.34413509F79FFP+8]; + log10 [1.0,0x1.FFFFFFFFFFFFFp1023] = [0.0,0X1.34413509F79FFP+8]; + log10 [0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023] = [-0x1.434E6420F4374p+8, +0x1.34413509F79FFp+8]; + log10 [0x0.0000000000001p-1022,1.0] = [-0x1.434E6420F4374p+8 ,0.0]; + log10 [0x0.0000000000001p-1022,10.0] = [-0x1.434E6420F4374p+8 ,1.0]; + + log10 [10.0,100000.0] = [1.0,5.0]; + + log10 [0X1.999999999999AP-4,0X1.CP+1] = [-0X1P+0,0X1.1690163290F4P-1]; + log10 [0X1.999999999999AP-4,0X1.999999999999AP-4] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + log10 [0X1.B333333333333P+0,0X1.C81FD88228B2FP+98] = [0X1.D7F59AA5BECB9P-3,0X1.DC074D84E5AABP+4]; + log10 [0X1.AEA0000721861P+11,0X1.FCA055555554CP+25] = [0X1.C4C29DD829191P+1,0X1.F4BAEBBA4FA4P+2]; +} + +testcase minimal_log10_dec_test { + log10 [0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023]_com = [-0x1.434E6420F4374p+8,0X1.34413509F79FFP+8]_com; + log10 [0.0,0x1.FFFFFFFFFFFFFp1023]_dac = [-infinity,0X1.34413509F79FFP+8]_trv; +} + +testcase minimal_sin_test { + sin [empty] = [empty]; + sin [0.0,infinity] = [-1.0,1.0]; + sin [-0.0,infinity] = [-1.0,1.0]; + sin [-infinity,0.0] = [-1.0,1.0]; + sin [-infinity,-0.0] = [-1.0,1.0]; + sin [entire] = [-1.0,1.0]; + + sin [0.0,0.0] = [0.0,0.0]; + sin [-0.0,-0.0] = [0.0,0.0]; + + sin [0X1.921FB54442D18P+0,0X1.921FB54442D18P+0] = [0X1.FFFFFFFFFFFFFP-1,0X1P+0]; + sin [0X1.921FB54442D19P+0,0X1.921FB54442D19P+0] = [0X1.FFFFFFFFFFFFFP-1,0X1P+0]; + sin [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0] = [0X1.FFFFFFFFFFFFFP-1,0X1P+0]; + sin [0.0,0X1.921FB54442D18P+0] = [0.0,0X1P+0]; + sin [-0.0,0X1.921FB54442D18P+0] = [0.0,0X1P+0]; + sin [0.0,0X1.921FB54442D19P+0] = [0.0,0X1P+0]; + sin [-0.0,0X1.921FB54442D19P+0] = [0.0,0X1P+0]; + + sin [0X1.921FB54442D18P+1,0X1.921FB54442D18P+1] = [0X1.1A62633145C06P-53,0X1.1A62633145C07P-53]; + sin [0X1.921FB54442D19P+1,0X1.921FB54442D19P+1] = [-0X1.72CECE675D1FDP-52,-0X1.72CECE675D1FCP-52]; + sin [0X1.921FB54442D18P+1,0X1.921FB54442D19P+1] = [-0X1.72CECE675D1FDP-52,0X1.1A62633145C07P-53]; + sin [0.0,0X1.921FB54442D18P+1] = [0.0,1.0]; + sin [-0.0,0X1.921FB54442D18P+1] = [0.0,1.0]; + sin [0.0,0X1.921FB54442D19P+1] = [-0X1.72CECE675D1FDP-52,1.0]; + sin [-0.0,0X1.921FB54442D19P+1] = [-0X1.72CECE675D1FDP-52,1.0]; + + sin [0X1.921FB54442D18P+0,0X1.921FB54442D18P+1] = [0X1.1A62633145C06P-53,0X1P+0]; + sin [0X1.921FB54442D18P+0,0X1.921FB54442D19P+1] = [-0X1.72CECE675D1FDP-52,0X1P+0]; + sin [0X1.921FB54442D19P+0,0X1.921FB54442D18P+1] = [0X1.1A62633145C06P-53,0X1P+0]; + sin [0X1.921FB54442D19P+0,0X1.921FB54442D19P+1] = [-0X1.72CECE675D1FDP-52,0X1P+0]; + + sin [-0X1.921FB54442D18P+0,-0X1.921FB54442D18P+0] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + sin [-0X1.921FB54442D19P+0,-0X1.921FB54442D19P+0] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + sin [-0X1.921FB54442D19P+0,-0X1.921FB54442D18P+0] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + sin [-0X1.921FB54442D18P+0,0.0] = [-0X1P+0,0.0]; + sin [-0X1.921FB54442D18P+0,-0.0] = [-0X1P+0,0.0]; + sin [-0X1.921FB54442D19P+0,0.0] = [-0X1P+0,0.0]; + sin [-0X1.921FB54442D19P+0,-0.0] = [-0X1P+0,0.0]; + + sin [-0X1.921FB54442D18P+1,-0X1.921FB54442D18P+1] = [-0X1.1A62633145C07P-53,-0X1.1A62633145C06P-53]; + sin [-0X1.921FB54442D19P+1,-0X1.921FB54442D19P+1] = [0X1.72CECE675D1FCP-52,0X1.72CECE675D1FDP-52]; + sin [-0X1.921FB54442D19P+1,-0X1.921FB54442D18P+1] = [-0X1.1A62633145C07P-53,0X1.72CECE675D1FDP-52]; + sin [-0X1.921FB54442D18P+1,0.0] = [-1.0,0.0]; + sin [-0X1.921FB54442D18P+1,-0.0] = [-1.0,0.0]; + sin [-0X1.921FB54442D19P+1,0.0] = [-1.0,0X1.72CECE675D1FDP-52]; + sin [-0X1.921FB54442D19P+1,-0.0] = [-1.0,0X1.72CECE675D1FDP-52]; + + sin [-0X1.921FB54442D18P+1,-0X1.921FB54442D18P+0] = [-0X1P+0,-0X1.1A62633145C06P-53]; + sin [-0X1.921FB54442D19P+1,-0X1.921FB54442D18P+0] = [-0X1P+0,0X1.72CECE675D1FDP-52]; + sin [-0X1.921FB54442D18P+1,-0X1.921FB54442D19P+0] = [-0X1P+0,-0X1.1A62633145C06P-53]; + sin [-0X1.921FB54442D19P+1,-0X1.921FB54442D19P+0] = [-0X1P+0,0X1.72CECE675D1FDP-52]; + + sin [-0X1.921FB54442D18P+0,0X1.921FB54442D18P+0] = [-0X1P+0,0X1P+0]; + sin [-0X1.921FB54442D18P+0,0X1.921FB54442D19P+0] = [-0X1P+0,0X1P+0]; + sin [-0X1.921FB54442D19P+0,0X1.921FB54442D18P+0] = [-0X1P+0,0X1P+0]; + sin [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0] = [-0X1P+0,0X1P+0]; + + sin [-0.7,0.1] = [-0X1.49D6E694619B9P-1,0X1.98EAECB8BCB2DP-4]; + sin [1.0,2.0] = [0X1.AED548F090CEEP-1,1.0]; + sin [-3.2,-2.9] = [-0X1.E9FB8D64830E3P-3,0X1.DE33739E82D33P-5]; + sin [2.0,3.0] = [0X1.210386DB6D55BP-3,0X1.D18F6EAD1B446P-1]; +} + +testcase minimal_sin_dec_test { + sin [-0X1.921FB54442D18P+1,-0X1.921FB54442D18P+0]_def = [-0X1P+0,-0X1.1A62633145C06P-53]_def; + sin [-infinity,-0.0]_trv = [-1.0,1.0]_trv; + sin [entire]_dac = [-1.0,1.0]_dac; +} + +testcase minimal_cos_test { + cos [empty] = [empty]; + cos [0.0,infinity] = [-1.0,1.0]; + cos [-0.0,infinity] = [-1.0,1.0]; + cos [-infinity,0.0] = [-1.0,1.0]; + cos [-infinity,-0.0] = [-1.0,1.0]; + cos [entire] = [-1.0,1.0]; + + cos [0.0,0.0] = [1.0,1.0]; + cos [-0.0,-0.0] = [1.0,1.0]; + + cos [0X1.921FB54442D18P+0,0X1.921FB54442D18P+0] = [0X1.1A62633145C06P-54,0X1.1A62633145C07P-54]; + cos [0X1.921FB54442D19P+0,0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,-0X1.72CECE675D1FCP-53]; + cos [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,0X1.1A62633145C07P-54]; + cos [0.0,0X1.921FB54442D18P+0] = [0X1.1A62633145C06P-54,1.0]; + cos [-0.0,0X1.921FB54442D18P+0] = [0X1.1A62633145C06P-54,1.0]; + cos [0.0,0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,1.0]; + cos [-0.0,0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,1.0]; + + cos [0X1.921FB54442D18P+1,0X1.921FB54442D18P+1] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + cos [0X1.921FB54442D19P+1,0X1.921FB54442D19P+1] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + cos [0X1.921FB54442D18P+1,0X1.921FB54442D19P+1] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + cos [0.0,0X1.921FB54442D18P+1] = [-1.0,1.0]; + cos [-0.0,0X1.921FB54442D18P+1] = [-1.0,1.0]; + cos [0.0,0X1.921FB54442D19P+1] = [-1.0,1.0]; + cos [-0.0,0X1.921FB54442D19P+1] = [-1.0,1.0]; + + cos [0X1.921FB54442D18P+0,0X1.921FB54442D18P+1] = [-1.0,0X1.1A62633145C07P-54]; + cos [0X1.921FB54442D18P+0,0X1.921FB54442D19P+1] = [-1.0,0X1.1A62633145C07P-54]; + cos [0X1.921FB54442D19P+0,0X1.921FB54442D18P+1] = [-1.0,-0X1.72CECE675D1FCP-53]; + cos [0X1.921FB54442D19P+0,0X1.921FB54442D19P+1] = [-1.0,-0X1.72CECE675D1FCP-53]; + + cos [-0X1.921FB54442D18P+0,-0X1.921FB54442D18P+0] = [0X1.1A62633145C06P-54,0X1.1A62633145C07P-54]; + cos [-0X1.921FB54442D19P+0,-0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,-0X1.72CECE675D1FCP-53]; + cos [-0X1.921FB54442D19P+0,-0X1.921FB54442D18P+0] = [-0X1.72CECE675D1FDP-53,0X1.1A62633145C07P-54]; + cos [-0X1.921FB54442D18P+0,0.0] = [0X1.1A62633145C06P-54,1.0]; + cos [-0X1.921FB54442D18P+0,-0.0] = [0X1.1A62633145C06P-54,1.0]; + cos [-0X1.921FB54442D19P+0,0.0] = [-0X1.72CECE675D1FDP-53,1.0]; + cos [-0X1.921FB54442D19P+0,-0.0] = [-0X1.72CECE675D1FDP-53,1.0]; + + cos [-0X1.921FB54442D18P+1,-0X1.921FB54442D18P+1] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + cos [-0X1.921FB54442D19P+1,-0X1.921FB54442D19P+1] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + cos [-0X1.921FB54442D19P+1,-0X1.921FB54442D18P+1] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + cos [-0X1.921FB54442D18P+1,0.0] = [-1.0,1.0]; + cos [-0X1.921FB54442D18P+1,-0.0] = [-1.0,1.0]; + cos [-0X1.921FB54442D19P+1,0.0] = [-1.0,1.0]; + cos [-0X1.921FB54442D19P+1,-0.0] = [-1.0,1.0]; + + cos [-0X1.921FB54442D18P+1,-0X1.921FB54442D18P+0] = [-1.0,0X1.1A62633145C07P-54]; + cos [-0X1.921FB54442D19P+1,-0X1.921FB54442D18P+0] = [-1.0,0X1.1A62633145C07P-54]; + cos [-0X1.921FB54442D18P+1,-0X1.921FB54442D19P+0] = [-1.0,-0X1.72CECE675D1FCP-53]; + cos [-0X1.921FB54442D19P+1,-0X1.921FB54442D19P+0] = [-1.0,-0X1.72CECE675D1FCP-53]; + + cos [-0X1.921FB54442D18P+0,0X1.921FB54442D18P+0] = [0X1.1A62633145C06P-54,1.0]; + cos [-0X1.921FB54442D18P+0,0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,1.0]; + cos [-0X1.921FB54442D19P+0,0X1.921FB54442D18P+0] = [-0X1.72CECE675D1FDP-53,1.0]; + cos [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0] = [-0X1.72CECE675D1FDP-53,1.0]; + + cos [-0.7,0.1] = [0X1.87996529F9D92P-1,1.0]; + cos [1.0,2.0] = [-0X1.AA22657537205P-2,0X1.14A280FB5068CP-1]; + cos [-3.2,-2.9] = [-1.0,-0X1.F1216DBA340C8P-1]; + cos [2.0,3.0] = [-0X1.FAE04BE85E5D3P-1,-0X1.AA22657537204P-2]; +} + +testcase minimal_cos_dec_test { + cos [-0X1.921FB54442D18P+0,-0X1.921FB54442D18P+0]_trv = [0X1.1A62633145C06P-54,0X1.1A62633145C07P-54]_trv; + cos [-infinity,-0.0]_def = [-1.0,1.0]_def; + cos [entire]_dac = [-1.0,1.0]_dac; +} + +testcase minimal_tan_test { + tan [empty] = [empty]; + tan [0.0,infinity] = [entire]; + tan [-0.0,infinity] = [entire]; + tan [-infinity,0.0] = [entire]; + tan [-infinity,-0.0] = [entire]; + tan [entire] = [entire]; + + tan [0.0,0.0] = [0.0,0.0]; + tan [-0.0,-0.0] = [0.0,0.0]; + tan [0X1.921FB54442D18P+0,0X1.921FB54442D18P+0] = [0X1.D02967C31CDB4P+53,0X1.D02967C31CDB5P+53]; + tan [0X1.921FB54442D19P+0,0X1.921FB54442D19P+0] = [-0X1.617A15494767BP+52,-0X1.617A15494767AP+52]; + tan [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0] = [entire]; + + tan [0X1.921FB54442D18P+1,0X1.921FB54442D18P+1] = [-0X1.1A62633145C07P-53,-0X1.1A62633145C06P-53]; + tan [0X1.921FB54442D19P+1,0X1.921FB54442D19P+1] = [0X1.72CECE675D1FCP-52,0X1.72CECE675D1FDP-52]; + + tan [0.0,0X1.921FB54442D18P+0] = [0.0,0X1.D02967C31CDB5P+53]; + tan [-0.0,0X1.921FB54442D18P+0] = [0.0,0X1.D02967C31CDB5P+53]; + tan [0.0,0X1.921FB54442D19P+0] = [entire]; + tan [-0.0,0X1.921FB54442D19P+0] = [entire]; + tan [0.0,0X1.921FB54442D18P+1] = [entire]; + tan [-0.0,0X1.921FB54442D18P+1] = [entire]; + tan [0.0,0X1.921FB54442D19P+1] = [entire]; + tan [-0.0,0X1.921FB54442D19P+1] = [entire]; + + tan [0X1P-51,0X1.921FB54442D18P+1] = [entire]; + tan [0X1P-51,0X1.921FB54442D19P+1] = [entire]; + tan [0X1P-52,0X1.921FB54442D18P+1] = [entire]; + tan [0X1P-52,0X1.921FB54442D19P+1] = [entire]; + + tan [-0X1.921FB54442D18P+0,0X1.921FB54442D18P+0] = [-0X1.D02967C31CDB5P+53,0X1.D02967C31CDB5P+53]; + tan [-0X1.921FB54442D18P+0,0X1.921FB54442D19P+0] = [entire]; + tan [-0X1.921FB54442D19P+0,0X1.921FB54442D18P+0] = [entire]; + tan [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0] = [entire]; + + tan [-0X1.555475A31A4BEP-2,0X1.999999999999AP-4] = [-0X1.628F4FD931FEFP-2,0X1.9AF8877430B81P-4]; + tan [0X1.4E18E147AE148P+12,0X1.4E2028F5C28F6P+12] = [-0X1.D6D67B035B6B4P+2,-0X1.7E42B0760E3F3P+0]; + tan [0X1.4E18E147AE148P+12,0X1.546028F5C28F6P+12] = [entire]; + tan [0X1.FAE147AE147AEP-1,0X1.028F5C28F5C29P+0] = [0X1.860FADCC59064P+0,0X1.979AD0628469DP+0]; +} + +testcase minimal_tan_dec_test { + tan [empty]_trv = [empty]_trv; + tan [0.0,infinity]_dac = [entire]_trv; + tan [-0.0,infinity]_def = [entire]_trv; + tan [-infinity,0.0]_trv = [entire]_trv; + tan [-infinity,-0.0]_dac = [entire]_trv; + tan [entire]_dac = [entire]_trv; + + tan [0.0,0.0]_com = [0.0,0.0]_com; + tan [-0.0,-0.0]_def = [0.0,0.0]_def; + tan [0X1.921FB54442D18P+0,0X1.921FB54442D18P+0]_com = [0X1.D02967C31CDB4P+53,0X1.D02967C31CDB5P+53]_com; + tan [0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]_def = [-0X1.617A15494767BP+52,-0X1.617A15494767AP+52]_def; + tan [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0]_dac = [entire]_trv; + + tan [0X1.921FB54442D18P+1,0X1.921FB54442D18P+1]_trv = [-0X1.1A62633145C07P-53,-0X1.1A62633145C06P-53]_trv; + tan [0X1.921FB54442D19P+1,0X1.921FB54442D19P+1]_com = [0X1.72CECE675D1FCP-52,0X1.72CECE675D1FDP-52]_com; + + tan [0.0,0X1.921FB54442D18P+0]_dac = [0.0,0X1.D02967C31CDB5P+53]_dac; + tan [-0.0,0X1.921FB54442D18P+0]_com = [0.0,0X1.D02967C31CDB5P+53]_com; + tan [0.0,0X1.921FB54442D19P+0]_trv = [entire]_trv; + tan [-0.0,0X1.921FB54442D19P+0]_def = [entire]_trv; + tan [0.0,0X1.921FB54442D18P+1]_dac = [entire]_trv; + tan [-0.0,0X1.921FB54442D18P+1]_com = [entire]_trv; + tan [0.0,0X1.921FB54442D19P+1]_trv = [entire]_trv; + tan [-0.0,0X1.921FB54442D19P+1]_def = [entire]_trv; + + tan [0X1P-51,0X1.921FB54442D18P+1]_dac = [entire]_trv; + tan [0X1P-51,0X1.921FB54442D19P+1]_com = [entire]_trv; + tan [0X1P-52,0X1.921FB54442D18P+1]_trv = [entire]_trv; + tan [0X1P-52,0X1.921FB54442D19P+1]_def = [entire]_trv; + + tan [-0X1.921FB54442D18P+0,0X1.921FB54442D18P+0]_com = [-0X1.D02967C31CDB5P+53,0X1.D02967C31CDB5P+53]_com; + tan [-0X1.921FB54442D18P+0,0X1.921FB54442D19P+0]_trv = [entire]_trv; + tan [-0X1.921FB54442D19P+0,0X1.921FB54442D18P+0]_def = [entire]_trv; + tan [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]_dac = [entire]_trv; + + tan [-0X1.555475A31A4BEP-2,0X1.999999999999AP-4]_com = [-0X1.628F4FD931FEFP-2,0X1.9AF8877430B81P-4]_com; + tan [0X1.4E18E147AE148P+12,0X1.4E2028F5C28F6P+12]_dac = [-0X1.D6D67B035B6B4P+2,-0X1.7E42B0760E3F3P+0]_dac; + tan [0X1.4E18E147AE148P+12,0X1.546028F5C28F6P+12]_def = [entire]_trv; + tan [0X1.FAE147AE147AEP-1,0X1.028F5C28F5C29P+0]_trv = [0X1.860FADCC59064P+0,0X1.979AD0628469DP+0]_trv; + +} + +testcase minimal_asin_test { + asin [empty] = [empty]; + asin [0.0,infinity] = [0.0,0X1.921FB54442D19P+0]; + asin [-0.0,infinity] = [0.0,0X1.921FB54442D19P+0]; + asin [-infinity,0.0] = [-0X1.921FB54442D19P+0,0.0]; + asin [-infinity,-0.0] = [-0X1.921FB54442D19P+0,0.0]; + asin [entire] = [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]; + asin [-1.0,1.0] = [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]; + asin [-infinity,-1.0] = [-0X1.921FB54442D19P+0,-0X1.921FB54442D18P+0]; + asin [1.0,infinity] = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0]; + asin [-1.0,-1.0] = [-0X1.921FB54442D19P+0,-0X1.921FB54442D18P+0]; + asin [1.0,1.0] = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0]; + asin [0.0,0.0] = [0.0,0.0]; + asin [-0.0,-0.0] = [0.0,0.0]; + asin [-infinity,-0X1.0000000000001P+0] = [empty]; + asin [0X1.0000000000001P+0,infinity] = [empty]; + asin [-0X1.999999999999AP-4,0X1.999999999999AP-4] = [-0X1.9A49276037885P-4,0X1.9A49276037885P-4]; + asin [-0X1.51EB851EB851FP-2,0X1.FFFFFFFFFFFFFP-1] = [-0X1.585FF6E341C3FP-2,0X1.921FB50442D19P+0]; + asin [-0X1.FFFFFFFFFFFFFP-1,0X1.FFFFFFFFFFFFFP-1] = [-0X1.921FB50442D19P+0,0X1.921FB50442D19P+0]; +} + +testcase minimal_asin_dec_test { + asin [0.0,infinity]_dac = [0.0,0X1.921FB54442D19P+0]_trv; + asin [-infinity,0.0]_def = [-0X1.921FB54442D19P+0,0.0]_trv; + asin [-1.0,1.0]_com = [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]_com; + asin [entire]_dac = [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]_trv; + asin [-0X1.51EB851EB851FP-2,0X1.FFFFFFFFFFFFFP-1]_def = [-0X1.585FF6E341C3FP-2,0X1.921FB50442D19P+0]_def; +} + +testcase minimal_acos_test { + acos [empty] = [empty]; + acos [0.0,infinity] = [0.0,0X1.921FB54442D19P+0]; + acos [-0.0,infinity] = [0.0,0X1.921FB54442D19P+0]; + acos [-infinity,0.0] = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+1]; + acos [-infinity,-0.0] = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+1]; + acos [entire] = [0.0,0X1.921FB54442D19P+1]; + acos [-1.0,1.0] = [0.0,0X1.921FB54442D19P+1]; + acos [-infinity,-1.0] = [0X1.921FB54442D18P+1,0X1.921FB54442D19P+1]; + acos [1.0,infinity] = [0.0,0.0]; + acos [-1.0,-1.0] = [0X1.921FB54442D18P+1,0X1.921FB54442D19P+1]; + acos [1.0,1.0] = [0.0,0.0]; + acos [0.0,0.0] = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0]; + acos [-0.0,-0.0] = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+0]; + acos [-infinity,-0X1.0000000000001P+0] = [empty]; + acos [0X1.0000000000001P+0,infinity] = [empty]; + acos [-0X1.999999999999AP-4,0X1.999999999999AP-4] = [0X1.787B22CE3F59P+0,0X1.ABC447BA464A1P+0]; + acos [-0X1.51EB851EB851FP-2,0X1.FFFFFFFFFFFFFP-1] = [0X1P-26,0X1.E837B2FD13428P+0]; + acos [-0X1.FFFFFFFFFFFFFP-1,0X1.FFFFFFFFFFFFFP-1] = [0X1P-26,0X1.921FB52442D19P+1]; +} + +testcase minimal_acos_dec_test { + acos [0.0,infinity]_dac = [0.0,0X1.921FB54442D19P+0]_trv; + acos [-infinity,0.0]_def = [0X1.921FB54442D18P+0,0X1.921FB54442D19P+1]_trv; + acos [-1.0,1.0]_com = [0.0,0X1.921FB54442D19P+1]_com; + acos [entire]_dac = [0.0,0X1.921FB54442D19P+1]_trv; + acos [-0X1.51EB851EB851FP-2,0X1.FFFFFFFFFFFFFP-1]_def = [0X1P-26,0X1.E837B2FD13428P+0]_def; +} + +testcase minimal_atan_test { + atan [empty] = [empty]; + atan [0.0,infinity] = [0.0,0X1.921FB54442D19P+0]; + atan [-0.0,infinity] = [0.0,0X1.921FB54442D19P+0]; + atan [-infinity,0.0] = [-0X1.921FB54442D19P+0,0.0]; + atan [-infinity,-0.0] = [-0X1.921FB54442D19P+0,0.0]; + atan [entire] = [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]; + atan [0.0,0.0] = [0.0,0.0]; + atan [-0.0,-0.0] = [0.0,0.0]; + atan [1.0,0X1.4C2463567C5ACP+25] = [0X1.921FB54442D18P-1,0X1.921FB4E19ABD7P+0]; + atan [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9] = [-0X1.921FB54440CEBP+0,-0X1.91ABE5C1E4C6DP+0]; +} + +testcase minimal_atan_dec_test { + atan [0.0,infinity]_dac = [0.0,0X1.921FB54442D19P+0]_dac; + atan [-infinity,0.0]_def = [-0X1.921FB54442D19P+0,0.0]_def; + atan [entire]_dac = [-0X1.921FB54442D19P+0,0X1.921FB54442D19P+0]_dac; + atan [1.0,0X1.4C2463567C5ACP+25]_trv = [0X1.921FB54442D18P-1,0X1.921FB4E19ABD7P+0]_trv; + atan [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9]_com = [-0X1.921FB54440CEBP+0,-0X1.91ABE5C1E4C6DP+0]_com; +} + +testcase minimal_atan2_test { + atan2 [empty] [empty] = [empty]; + atan2 [empty] [entire] = [empty]; + atan2 [empty] [0.0, 0.0] = [empty]; + atan2 [empty] [-0.0, 0.0] = [empty]; + atan2 [empty] [0.0, -0.0] = [empty]; + atan2 [empty] [-0.0, -0.0] = [empty]; + atan2 [empty] [-2.0, -0.1] = [empty]; + atan2 [empty] [-2.0, 0.0] = [empty]; + atan2 [empty] [-2.0, -0.0] = [empty]; + atan2 [empty] [-2.0, 1.0] = [empty]; + atan2 [empty] [0.0, 1.0] = [empty]; + atan2 [empty] [-0.0, 1.0] = [empty]; + atan2 [empty] [0.1, 1.0] = [empty]; + + atan2 [entire] [empty] = [empty]; + atan2 [entire] [entire] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [entire] [0.0, 0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [entire] [0.0, -0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [entire] [-0.0, 0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [entire] [-0.0, -0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [entire] [-2.0, -0.1] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [entire] [-2.0, 0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [entire] [-2.0, -0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [entire] [-2.0, 1.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [entire] [0.0, 1.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [entire] [-0.0, 1.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [entire] [0.1, 1.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + + atan2 [0.0, 0.0] [empty] = [empty]; + atan2 [0.0, 0.0] [entire] = [0.0,0X1.921FB54442D19P+1]; + atan2 [0.0, 0.0] [0.0, 0.0] = [empty]; + atan2 [0.0, 0.0] [-0.0, 0.0] = [empty]; + atan2 [0.0, 0.0] [0.0, -0.0] = [empty]; + atan2 [0.0, 0.0] [-0.0, -0.0] = [empty]; + atan2 [0.0, 0.0] [-2.0, -0.1] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [0.0, 0.0] [-2.0, 0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [0.0, 0.0] [-2.0, -0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [0.0, 0.0] [-2.0, 1.0] = [0.0,0X1.921FB54442D19P+1]; + atan2 [0.0, 0.0] [0.0, 1.0] = [0.0,0.0]; + atan2 [0.0, 0.0] [-0.0, 1.0] = [0.0,0.0]; + atan2 [0.0, 0.0] [0.1, 1.0] = [0.0,0.0]; + + atan2 [-0.0, 0.0] [empty] = [empty]; + atan2 [-0.0, 0.0] [entire] = [0.0,0X1.921FB54442D19P+1]; + atan2 [-0.0, 0.0] [0.0, 0.0] = [empty]; + atan2 [-0.0, 0.0] [-0.0, 0.0] = [empty]; + atan2 [-0.0, 0.0] [0.0, -0.0] = [empty]; + atan2 [-0.0, 0.0] [-0.0, -0.0] = [empty]; + atan2 [-0.0, 0.0] [-2.0, -0.1] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 0.0] [-2.0, 0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 0.0] [-2.0, -0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 0.0] [-2.0, 1.0] = [0.0,0X1.921FB54442D19P+1]; + atan2 [-0.0, 0.0] [0.0, 1.0] = [0.0,0.0]; + atan2 [-0.0, 0.0] [-0.0, 1.0] = [0.0,0.0]; + atan2 [-0.0, 0.0] [0.1, 1.0] = [0.0,0.0]; + + atan2 [0.0, -0.0] [empty] = [empty]; + atan2 [0.0, -0.0] [entire] = [0.0,0X1.921FB54442D19P+1]; + atan2 [0.0, -0.0] [0.0, 0.0] = [empty]; + atan2 [0.0, -0.0] [-0.0, 0.0] = [empty]; + atan2 [0.0, -0.0] [0.0, -0.0] = [empty]; + atan2 [0.0, -0.0] [-0.0, -0.0] = [empty]; + atan2 [0.0, -0.0] [-2.0, -0.1] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [0.0, -0.0] [-2.0, 0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [0.0, -0.0] [-2.0, -0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [0.0, -0.0] [-2.0, 1.0] = [0.0,0X1.921FB54442D19P+1]; + atan2 [0.0, -0.0] [0.0, 1.0] = [0.0,0.0]; + atan2 [0.0, -0.0] [-0.0, 1.0] = [0.0,0.0]; + atan2 [0.0, -0.0] [0.1, 1.0] = [0.0,0.0]; + + atan2 [-0.0, -0.0] [empty] = [empty]; + atan2 [-0.0, -0.0] [entire] = [0.0,0X1.921FB54442D19P+1]; + atan2 [-0.0, -0.0] [0.0, 0.0] = [empty]; + atan2 [-0.0, -0.0] [-0.0, 0.0] = [empty]; + atan2 [-0.0, -0.0] [0.0, -0.0] = [empty]; + atan2 [-0.0, -0.0] [-0.0, -0.0] = [empty]; + atan2 [-0.0, -0.0] [-2.0, -0.1] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [-0.0, -0.0] [-2.0, 0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [-0.0, -0.0] [-2.0, -0.0] = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]; + atan2 [-0.0, -0.0] [-2.0, 1.0] = [0.0,0X1.921FB54442D19P+1]; + atan2 [-0.0, -0.0] [0.0, 1.0] = [0.0,0.0]; + atan2 [-0.0, -0.0] [-0.0, 1.0] = [0.0,0.0]; + atan2 [-0.0, -0.0] [0.1, 1.0] = [0.0,0.0]; + + atan2 [-2.0, -0.1] [empty] = [empty]; + atan2 [-2.0, -0.1] [entire] = [-0X1.921FB54442D19P+1,0.0]; + atan2 [-2.0, -0.1] [0.0, 0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.1] [0.0, -0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.1] [-0.0, 0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.1] [0.0, -0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.1] [-2.0, -0.1] = [-0X1.8BBAABDE5E29CP+1, -0X1.9EE9C8100C211P+0]; + atan2 [-2.0, -0.1] [-2.0, 0.0] = [-0X1.8BBAABDE5E29CP+1, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.1] [-2.0, -0.0] = [-0X1.8BBAABDE5E29CP+1, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.1] [-2.0, 1.0] = [-0X1.8BBAABDE5E29CP+1, -0X1.983E282E2CC4CP-4]; + atan2 [-2.0, -0.1] [0.0, 1.0] = [-0X1.921FB54442D19P+0, -0X1.983E282E2CC4CP-4]; + atan2 [-2.0, -0.1] [-0.0, 1.0] = [-0X1.921FB54442D19P+0, -0X1.983E282E2CC4CP-4]; + atan2 [-2.0, -0.1] [0.1, 1.0] = [-0X1.8555A2787982P+0, -0X1.983E282E2CC4CP-4]; + + atan2 [-2.0, 0.0] [empty] = [empty]; + atan2 [-2.0, 0.0] [entire] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 0.0] [0.0, 0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, 0.0] [-0.0, 0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, 0.0] [0.0, -0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, 0.0] [-0.0, -0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, 0.0] [-2.0, -0.1] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 0.0] [-2.0, 0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 0.0] [-2.0, -0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 0.0] [-2.0, 1.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 0.0] [0.0, 1.0] = [-0X1.921FB54442D19P+0, 0.0]; + atan2 [-2.0, 0.0] [-0.0, 1.0] = [-0X1.921FB54442D19P+0, 0.0]; + atan2 [-2.0, 0.0] [0.1, 1.0] = [-0X1.8555A2787982P+0, 0.0]; + + atan2 [-2.0, -0.0] [empty] = [empty]; + atan2 [-2.0, -0.0] [entire] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, -0.0] [0.0, 0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.0] [-0.0, 0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.0] [0.0, -0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.0] [-0.0, -0.0] = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]; + atan2 [-2.0, -0.0] [-2.0, -0.1] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, -0.0] [-2.0, 0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, -0.0] [-2.0, -0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, -0.0] [-2.0, 1.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, -0.0] [0.0, 1.0] = [-0X1.921FB54442D19P+0, 0.0]; + atan2 [-2.0, -0.0] [-0.0, 1.0] = [-0X1.921FB54442D19P+0, 0.0]; + atan2 [-2.0, -0.0] [0.1, 1.0] = [-0X1.8555A2787982P+0, 0.0]; + + atan2 [-2.0, 1.0] [empty] = [empty]; + atan2 [-2.0, 1.0] [entire] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 1.0] [0.0, 0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [-2.0, 1.0] [-0.0, 0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [-2.0, 1.0] [0.0, -0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [-2.0, 1.0] [-0.0, -0.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [-2.0, 1.0] [-2.0, -0.1] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 1.0] [-2.0, 0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 1.0] [-2.0, -0.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 1.0] [-2.0, 1.0] = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]; + atan2 [-2.0, 1.0] [0.0, 1.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [-2.0, 1.0] [-0.0, 1.0] = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]; + atan2 [-2.0, 1.0] [0.1, 1.0] = [-0X1.8555A2787982P+0, 0X1.789BD2C160054P+0]; + + atan2 [-0.0, 1.0] [empty] = [empty]; + atan2 [-0.0, 1.0] [entire] = [0.0, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 1.0] [0.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [-0.0, 1.0] [-0.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [-0.0, 1.0] [0.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [-0.0, 1.0] [-0.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [-0.0, 1.0] [-2.0, -0.1] = [0X1.ABA397C7259DDP+0, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 1.0] [-2.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 1.0] [-2.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 1.0] [-2.0, 1.0] = [0.0, 0X1.921FB54442D19P+1]; + atan2 [-0.0, 1.0] [0.0, 1.0] = [0.0,0X1.921FB54442D19P+0]; + atan2 [-0.0, 1.0] [-0.0, 1.0] = [0.0,0X1.921FB54442D19P+0]; + atan2 [-0.0, 1.0] [0.1, 1.0] = [0.0, 0X1.789BD2C160054P+0]; + + atan2 [0.0, 1.0] [empty] = [empty]; + atan2 [0.0, 1.0] [entire] = [0.0, 0X1.921FB54442D19P+1]; + atan2 [0.0, 1.0] [0.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.0, 1.0] [-0.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.0, 1.0] [0.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.0, 1.0] [-0.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.0, 1.0] [-2.0, -0.1] = [0X1.ABA397C7259DDP+0, 0X1.921FB54442D19P+1]; + atan2 [0.0, 1.0] [-2.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]; + atan2 [0.0, 1.0] [-2.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]; + atan2 [0.0, 1.0] [-2.0, 1.0] = [0.0, 0X1.921FB54442D19P+1]; + atan2 [0.0, 1.0] [0.0, 1.0] = [0.0,0X1.921FB54442D19P+0]; + atan2 [0.0, 1.0] [-0.0, 1.0] = [0.0,0X1.921FB54442D19P+0]; + atan2 [0.0, 1.0] [0.1, 1.0] = [0.0,0X1.789BD2C160054P+0]; + + atan2 [0.1, 1.0] [empty] = [empty]; + atan2 [0.1, 1.0] [entire] = [0.0, 0X1.921FB54442D19P+1]; + atan2 [0.1, 1.0] [0.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.1, 1.0] [-0.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.1, 1.0] [0.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.1, 1.0] [-0.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]; + atan2 [0.1, 1.0] [-2.0, -0.1] = [0X1.ABA397C7259DDP+0, 0X1.8BBAABDE5E29CP+1]; + atan2 [0.1, 1.0] [-2.0, 0.0] = [0X1.921FB54442D18P+0, 0X1.8BBAABDE5E29CP+1]; + atan2 [0.1, 1.0] [-2.0, -0.0] = [0X1.921FB54442D18P+0, 0X1.8BBAABDE5E29CP+1]; + atan2 [0.1, 1.0] [-2.0, 1.0] = [0X1.983E282E2CC4CP-4, 0X1.8BBAABDE5E29CP+1]; + atan2 [0.1, 1.0] [0.0, 1.0] = [0X1.983E282E2CC4CP-4, 0X1.921FB54442D19P+0]; + atan2 [0.1, 1.0] [-0.0, 1.0] = [0X1.983E282E2CC4CP-4, 0X1.921FB54442D19P+0]; + atan2 [0.1, 1.0] [0.1, 1.0] = [0X1.983E282E2CC4CP-4, 0X1.789BD2C160054P+0]; +} + +testcase minimal_atan2_dec_test { + atan2 [empty]_trv [empty]_trv = [empty]_trv; + atan2 [empty]_trv [entire]_dac = [empty]_trv; + atan2 [empty]_trv [0.0, 0.0]_com = [empty]_trv; + atan2 [empty]_trv [-0.0, 0.0]_dac = [empty]_trv; + atan2 [empty]_trv [0.0, -0.0]_def = [empty]_trv; + atan2 [empty]_trv [-0.0, -0.0]_trv = [empty]_trv; + atan2 [empty]_trv [-2.0, -0.1]_com = [empty]_trv; + atan2 [empty]_trv [-2.0, 0.0]_dac = [empty]_trv; + atan2 [empty]_trv [-2.0, -0.0]_def = [empty]_trv; + atan2 [empty]_trv [-2.0, 1.0]_trv = [empty]_trv; + atan2 [empty]_trv [0.0, 1.0]_com = [empty]_trv; + atan2 [empty]_trv [-0.0, 1.0]_dac = [empty]_trv; + atan2 [empty]_trv [0.1, 1.0]_def = [empty]_trv; + + atan2 [entire]_dac [empty]_trv = [empty]_trv; + atan2 [entire]_dac [entire]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [entire]_dac [0.0, 0.0]_com = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [entire]_dac [0.0, -0.0]_def = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [entire]_dac [-0.0, 0.0]_dac = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [entire]_dac [-0.0, -0.0]_trv = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [entire]_dac [-2.0, -0.1]_com = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_def; + atan2 [entire]_dac [-2.0, 0.0]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [entire]_dac [-2.0, -0.0]_def = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [entire]_dac [-2.0, 1.0]_trv = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [entire]_dac [0.0, 1.0]_dac = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [entire]_dac [-0.0, 1.0]_def = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [entire]_dac [0.1, 1.0]_com = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_dac; + + atan2 [0.0, 0.0]_com [empty]_trv = [empty]_trv; + atan2 [0.0, 0.0]_dac [entire]_dac = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 0.0]_def [0.0, 0.0]_trv = [empty]_trv; + atan2 [0.0, 0.0]_trv [-0.0, 0.0]_dac = [empty]_trv; + atan2 [0.0, 0.0]_com [0.0, -0.0]_def = [empty]_trv; + atan2 [0.0, 0.0]_dac [-0.0, -0.0]_com = [empty]_trv; + atan2 [0.0, 0.0]_com [-2.0, -0.1]_dac = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_dac; + atan2 [0.0, 0.0]_trv [-2.0, 0.0]_com = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 0.0]_com [-2.0, -0.0]_trv = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 0.0]_dac [-2.0, 1.0]_def = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 0.0]_def [0.0, 1.0]_com = [0.0,0.0]_trv; + atan2 [0.0, 0.0]_trv [-0.0, 1.0]_dac = [0.0,0.0]_trv; + atan2 [0.0, 0.0]_com [0.1, 1.0]_com = [0.0,0.0]_com; + + atan2 [-0.0, 0.0]_com [empty]_trv = [empty]_trv; + atan2 [-0.0, 0.0]_dac [entire]_dac = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 0.0]_def [0.0, 0.0]_com = [empty]_trv; + atan2 [-0.0, 0.0]_trv [-0.0, 0.0]_trv = [empty]_trv; + atan2 [-0.0, 0.0]_com [0.0, -0.0]_def = [empty]_trv; + atan2 [-0.0, 0.0]_dac [-0.0, -0.0]_com = [empty]_trv; + atan2 [-0.0, 0.0]_dac [-2.0, -0.1]_dac = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_dac; + atan2 [-0.0, 0.0]_trv [-2.0, 0.0]_com = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 0.0]_com [-2.0, -0.0]_trv = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 0.0]_dac [-2.0, 1.0]_def = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 0.0]_com [0.0, 1.0]_com = [0.0,0.0]_trv; + atan2 [-0.0, 0.0]_def [-0.0, 1.0]_dac = [0.0,0.0]_trv; + atan2 [-0.0, 0.0]_com [0.1, 1.0]_com = [0.0,0.0]_com; + + atan2 [0.0, -0.0]_com [empty]_trv = [empty]_trv; + atan2 [0.0, -0.0]_dac [entire]_dac = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [0.0, -0.0]_def [0.0, 0.0]_dac = [empty]_trv; + atan2 [0.0, -0.0]_trv [-0.0, 0.0]_com = [empty]_trv; + atan2 [0.0, -0.0]_dac [0.0, -0.0]_def = [empty]_trv; + atan2 [0.0, -0.0]_com [-0.0, -0.0]_trv = [empty]_trv; + atan2 [0.0, -0.0]_com [-2.0, -0.1]_dac = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_dac; + atan2 [0.0, -0.0]_def [-2.0, 0.0]_com = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, -0.0]_com [-2.0, -0.0]_dac = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, -0.0]_dac [-2.0, 1.0]_com = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [0.0, -0.0]_com [0.0, 1.0]_trv = [0.0,0.0]_trv; + atan2 [0.0, -0.0]_def [-0.0, 1.0]_com = [0.0,0.0]_trv; + atan2 [0.0, -0.0]_com [0.1, 1.0]_def = [0.0,0.0]_def; + + atan2 [-0.0, -0.0]_com [empty]_trv = [empty]_trv; + atan2 [-0.0, -0.0]_def [entire]_dac = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, -0.0]_dac [0.0, 0.0]_com = [empty]_trv; + atan2 [-0.0, -0.0]_trv [-0.0, 0.0]_def = [empty]_trv; + atan2 [-0.0, -0.0]_com [0.0, -0.0]_trv = [empty]_trv; + atan2 [-0.0, -0.0]_dac [-0.0, -0.0]_com = [empty]_trv; + atan2 [-0.0, -0.0]_def [-2.0, -0.1]_dac = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_def; + atan2 [-0.0, -0.0]_trv [-2.0, 0.0]_def = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, -0.0]_dac [-2.0, -0.0]_trv = [0X1.921FB54442D18P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, -0.0]_def [-2.0, 1.0]_com = [0.0,0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, -0.0]_com [0.0, 1.0]_com = [0.0,0.0]_trv; + atan2 [-0.0, -0.0]_trv [-0.0, 1.0]_dac = [0.0,0.0]_trv; + atan2 [-0.0, -0.0]_com [0.1, 1.0]_com = [0.0,0.0]_com; + + atan2 [-2.0, -0.1]_dac [empty]_trv = [empty]_trv; + atan2 [-2.0, -0.1]_def [entire]_dac = [-0X1.921FB54442D19P+1,0.0]_def; + atan2 [-2.0, -0.1]_trv [0.0, 0.0]_com = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.1]_com [0.0, -0.0]_dac = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_dac; + atan2 [-2.0, -0.1]_dac [-0.0, 0.0]_def = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_def; + atan2 [-2.0, -0.1]_com [0.0, -0.0]_trv = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.1]_def [-2.0, -0.1]_com = [-0X1.8BBAABDE5E29CP+1, -0X1.9EE9C8100C211P+0]_def; + atan2 [-2.0, -0.1]_com [-2.0, 0.0]_def = [-0X1.8BBAABDE5E29CP+1, -0X1.921FB54442D18P+0]_def; + atan2 [-2.0, -0.1]_trv [-2.0, -0.0]_dac = [-0X1.8BBAABDE5E29CP+1, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.1]_def [-2.0, 1.0]_trv = [-0X1.8BBAABDE5E29CP+1, -0X1.983E282E2CC4CP-4]_trv; + atan2 [-2.0, -0.1]_com [0.0, 1.0]_def = [-0X1.921FB54442D19P+0, -0X1.983E282E2CC4CP-4]_def; + atan2 [-2.0, -0.1]_dac [-0.0, 1.0]_com = [-0X1.921FB54442D19P+0, -0X1.983E282E2CC4CP-4]_dac; + atan2 [-2.0, -0.1]_com [0.1, 1.0]_com = [-0X1.8555A2787982P+0, -0X1.983E282E2CC4CP-4]_com; + + atan2 [-2.0, 0.0]_def [empty]_trv = [empty]_trv; + atan2 [-2.0, 0.0]_def [entire]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 0.0]_dac [0.0, 0.0]_dac = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, 0.0]_trv [-0.0, 0.0]_com = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, 0.0]_com [0.0, -0.0]_trv = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, 0.0]_def [-0.0, -0.0]_def = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, 0.0]_com [-2.0, -0.1]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_def; + atan2 [-2.0, 0.0]_dac [-2.0, 0.0]_com = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 0.0]_com [-2.0, -0.0]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 0.0]_trv [-2.0, 1.0]_com = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 0.0]_def [0.0, 1.0]_def = [-0X1.921FB54442D19P+0, 0.0]_trv; + atan2 [-2.0, 0.0]_com [-0.0, 1.0]_dac = [-0X1.921FB54442D19P+0, 0.0]_trv; + atan2 [-2.0, 0.0]_com [0.1, 1.0]_com = [-0X1.8555A2787982P+0, 0.0]_com; + + atan2 [-2.0, -0.0]_trv [empty]_trv = [empty]_trv; + atan2 [-2.0, -0.0]_dac [entire]_def = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, -0.0]_com [0.0, 0.0]_com = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.0]_def [-0.0, 0.0]_dac = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.0]_dac [0.0, -0.0]_def = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.0]_com [-0.0, -0.0]_trv = [-0X1.921FB54442D19P+0, -0X1.921FB54442D18P+0]_trv; + atan2 [-2.0, -0.0]_def [-2.0, -0.1]_com = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_def; + atan2 [-2.0, -0.0]_com [-2.0, 0.0]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, -0.0]_dac [-2.0, -0.0]_def = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, -0.0]_def [-2.0, 1.0]_trv = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, -0.0]_trv [0.0, 1.0]_dac = [-0X1.921FB54442D19P+0, 0.0]_trv; + atan2 [-2.0, -0.0]_com [-0.0, 1.0]_com = [-0X1.921FB54442D19P+0, 0.0]_trv; + atan2 [-2.0, -0.0]_com [0.1, 1.0]_com = [-0X1.8555A2787982P+0, 0.0]_com; + + atan2 [-2.0, 1.0]_def [empty]_trv = [empty]_trv; + atan2 [-2.0, 1.0]_dac [entire]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 1.0]_def [0.0, 0.0]_def = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-2.0, 1.0]_com [-0.0, 0.0]_dac = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-2.0, 1.0]_trv [0.0, -0.0]_trv = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-2.0, 1.0]_com [-0.0, -0.0]_com = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-2.0, 1.0]_dac [-2.0, -0.1]_dac = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_def; + atan2 [-2.0, 1.0]_def [-2.0, 0.0]_def = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 1.0]_trv [-2.0, -0.0]_trv = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 1.0]_dac [-2.0, 1.0]_com = [-0X1.921FB54442D19P+1, 0X1.921FB54442D19P+1]_trv; + atan2 [-2.0, 1.0]_com [0.0, 1.0]_dac = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-2.0, 1.0]_trv [-0.0, 1.0]_dac = [-0X1.921FB54442D19P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-2.0, 1.0]_com [0.1, 1.0]_com = [-0X1.8555A2787982P+0, 0X1.789BD2C160054P+0]_com; + + atan2 [-0.0, 1.0]_com [empty]_trv = [empty]_trv; + atan2 [-0.0, 1.0]_dac [entire]_def = [0.0, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 1.0]_def [0.0, 0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-0.0, 1.0]_trv [-0.0, 0.0]_trv = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-0.0, 1.0]_dac [0.0, -0.0]_dac = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-0.0, 1.0]_com [-0.0, -0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [-0.0, 1.0]_com [-2.0, -0.1]_com = [0X1.ABA397C7259DDP+0, 0X1.921FB54442D19P+1]_dac; + atan2 [-0.0, 1.0]_def [-2.0, 0.0]_com = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 1.0]_def [-2.0, -0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 1.0]_dac [-2.0, 1.0]_dac = [0.0, 0X1.921FB54442D19P+1]_trv; + atan2 [-0.0, 1.0]_dac [0.0, 1.0]_dac = [0.0,0X1.921FB54442D19P+0]_trv; + atan2 [-0.0, 1.0]_trv [-0.0, 1.0]_com = [0.0,0X1.921FB54442D19P+0]_trv; + atan2 [-0.0, 1.0]_trv [0.1, 1.0]_com = [0.0, 0X1.789BD2C160054P+0]_trv; + + atan2 [0.0, 1.0]_def [empty]_trv = [empty]_trv; + atan2 [0.0, 1.0]_dac [entire]_dac = [0.0, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 1.0]_dac [0.0, 0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [0.0, 1.0]_trv [-0.0, 0.0]_trv = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [0.0, 1.0]_trv [0.0, -0.0]_dac = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [0.0, 1.0]_def [-0.0, -0.0]_com = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [0.0, 1.0]_dac [-2.0, -0.1]_dac = [0X1.ABA397C7259DDP+0, 0X1.921FB54442D19P+1]_dac; + atan2 [0.0, 1.0]_def [-2.0, 0.0]_trv = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 1.0]_dac [-2.0, -0.0]_dac = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 1.0]_dac [-2.0, 1.0]_def = [0.0, 0X1.921FB54442D19P+1]_trv; + atan2 [0.0, 1.0]_dac [0.0, 1.0]_trv = [0.0,0X1.921FB54442D19P+0]_trv; + atan2 [0.0, 1.0]_dac [-0.0, 1.0]_def = [0.0,0X1.921FB54442D19P+0]_trv; + atan2 [0.0, 1.0]_com [0.1, 1.0]_com = [0.0,0X1.789BD2C160054P+0]_com; + + atan2 [0.1, 1.0]_dac [empty]_trv = [empty]_trv; + atan2 [0.1, 1.0]_dac [entire]_dac = [0.0, 0X1.921FB54442D19P+1]_dac; + atan2 [0.1, 1.0]_def [0.0, 0.0]_com = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_def; + atan2 [0.1, 1.0]_trv [-0.0, 0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [0.1, 1.0]_trv [0.0, -0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_trv; + atan2 [0.1, 1.0]_dac [-0.0, -0.0]_def = [0X1.921FB54442D18P+0, 0X1.921FB54442D19P+0]_def; + atan2 [0.1, 1.0]_com [-2.0, -0.1]_trv = [0X1.ABA397C7259DDP+0, 0X1.8BBAABDE5E29CP+1]_trv; + atan2 [0.1, 1.0]_com [-2.0, 0.0]_dac = [0X1.921FB54442D18P+0, 0X1.8BBAABDE5E29CP+1]_dac; + atan2 [0.1, 1.0]_com [-2.0, -0.0]_dac = [0X1.921FB54442D18P+0, 0X1.8BBAABDE5E29CP+1]_dac; + atan2 [0.1, 1.0]_def [-2.0, 1.0]_dac = [0X1.983E282E2CC4CP-4, 0X1.8BBAABDE5E29CP+1]_def; + atan2 [0.1, 1.0]_def [0.0, 1.0]_def = [0X1.983E282E2CC4CP-4, 0X1.921FB54442D19P+0]_def; + atan2 [0.1, 1.0]_dac [-0.0, 1.0]_def = [0X1.983E282E2CC4CP-4, 0X1.921FB54442D19P+0]_def; + atan2 [0.1, 1.0]_dac [0.1, 1.0]_def = [0X1.983E282E2CC4CP-4, 0X1.789BD2C160054P+0]_def; +} + +testcase minimal_sinh_test { + sinh [empty] = [empty]; + sinh [0.0,infinity] = [0.0,infinity]; + sinh [-0.0,infinity] = [0.0,infinity]; + sinh [-infinity,0.0] = [-infinity,0.0]; + sinh [-infinity,-0.0] = [-infinity,0.0]; + sinh [entire] = [entire]; + sinh [0.0,0.0] = [0.0,0.0]; + sinh [-0.0,-0.0] = [0.0,0.0]; + sinh [1.0,0X1.2C903022DD7AAP+8] = [0X1.2CD9FC44EB982P+0,0X1.89BCA168970C6P+432]; + sinh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9] = [-infinity,-0X1.53045B4F849DEP+815]; + sinh [-0X1.199999999999AP+0,0X1.2666666666666P+1] = [-0X1.55ECFE1B2B215P+0,0X1.3BF72EA61AF1BP+2]; +} + +testcase minimal_sinh_dec_test { + sinh [entire]_dac = [entire]_dac; + sinh [0.0,infinity]_dac = [0.0,infinity]_dac; + sinh [-infinity,0.0]_def = [-infinity,0.0]_def; + sinh [1.0,0X1.2C903022DD7AAP+8]_com = [0X1.2CD9FC44EB982P+0,0X1.89BCA168970C6P+432]_com; + sinh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9]_com = [-infinity,-0X1.53045B4F849DEP+815]_dac; +} + +testcase minimal_cosh_test { + cosh [empty] = [empty]; + cosh [0.0,infinity] = [1.0,infinity]; + cosh [-0.0,infinity] = [1.0,infinity]; + cosh [-infinity,0.0] = [1.0,infinity]; + cosh [-infinity,-0.0] = [1.0,infinity]; + cosh [entire] = [1.0,infinity]; + cosh [0.0,0.0] = [1.0,1.0]; + cosh [-0.0,-0.0] = [1.0,1.0]; + + cosh [1.0,0X1.2C903022DD7AAP+8] = [0X1.8B07551D9F55P+0,0X1.89BCA168970C6P+432]; + cosh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9] = [0X1.53045B4F849DEP+815,infinity]; + cosh [-0X1.199999999999AP+0,0X1.2666666666666P+1] = [1.0,0X1.4261D2B7D6181P+2]; +} + +testcase minimal_cosh_dec_test { + cosh [0.0,infinity]_dac = [1.0,infinity]_dac; + cosh [-infinity,0.0]_def = [1.0,infinity]_def; + cosh [entire]_def = [1.0,infinity]_def; + cosh [1.0,0X1.2C903022DD7AAP+8]_def = [0X1.8B07551D9F55P+0,0X1.89BCA168970C6P+432]_def; + cosh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9]_com = [0X1.53045B4F849DEP+815,infinity]_dac; +} + +testcase minimal_tanh_test { + tanh [empty] = [empty]; + tanh [0.0,infinity] = [0.0,1.0]; + tanh [-0.0,infinity] = [0.0,1.0]; + tanh [-infinity,0.0] = [-1.0,0.0]; + tanh [-infinity,-0.0] = [-1.0,0.0]; + tanh [entire] = [-1.0,1.0]; + tanh [0.0,0.0] = [0.0,0.0]; + tanh [-0.0,-0.0] = [0.0,0.0]; + tanh [1.0,0X1.2C903022DD7AAP+8] = [0X1.85EFAB514F394P-1,0X1P+0]; + tanh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9] = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]; + tanh [-0X1.199999999999AP+0,0X1.2666666666666P+1] = [-0X1.99DB01FDE2406P-1,0X1.F5CF31E1C8103P-1]; +} + +testcase minimal_tanh_dec_test { + tanh [0.0,infinity]_dac = [0.0,1.0]_dac; + tanh [-infinity,0.0]_def = [-1.0,0.0]_def; + tanh [entire]_dac = [-1.0,1.0]_dac; + tanh [1.0,0X1.2C903022DD7AAP+8]_com = [0X1.85EFAB514F394P-1,0X1P+0]_com; + tanh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9]_trv = [-0X1P+0,-0X1.FFFFFFFFFFFFFP-1]_trv; +} + +testcase minimal_asinh_test { + asinh [empty] = [empty]; + asinh [0.0,infinity] = [0.0,infinity]; + asinh [-0.0,infinity] = [0.0,infinity]; + asinh [-infinity,0.0] = [-infinity,0.0]; + asinh [-infinity,-0.0] = [-infinity,0.0]; + asinh [entire] = [entire]; + asinh [0.0,0.0] = [0.0,0.0]; + asinh [-0.0,-0.0] = [0.0,0.0]; + asinh [1.0,0X1.2C903022DD7AAP+8] = [0X1.C34366179D426P-1,0X1.9986127438A87P+2]; + asinh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9] = [-0X1.BB86380A6CC45P+4,-0X1.C204D8EB20827P+2]; + asinh [-0X1.199999999999AP+0,0X1.2666666666666P+1] = [-0X1.E693DF6EDF1E7P-1,0X1.91FDC64DE0E51P+0]; +} + +testcase minimal_asinh_dec_test { + asinh [0.0,infinity]_dac = [0.0,infinity]_dac; + asinh [-infinity,0.0]_trv = [-infinity,0.0]_trv; + asinh [entire]_dac = [entire]_dac; + asinh [1.0,0X1.2C903022DD7AAP+8]_com = [0X1.C34366179D426P-1,0X1.9986127438A87P+2]_com; + asinh [-0X1.FD219490EAAC1P+38,-0X1.1AF1C9D74F06DP+9]_def = [-0X1.BB86380A6CC45P+4,-0X1.C204D8EB20827P+2]_def; +} + +testcase minimal_acosh_test { + acosh [empty] = [empty]; + acosh [0.0,infinity] = [0.0,infinity]; + acosh [-0.0,infinity] = [0.0,infinity]; + acosh [1.0,infinity] = [0.0,infinity]; + acosh [-infinity,1.0] = [0.0,0.0]; + acosh [-infinity,0X1.FFFFFFFFFFFFFP-1] = [empty]; + acosh [entire] = [0.0,infinity]; + acosh [1.0,1.0] = [0.0,0.0]; + acosh [1.0,0X1.2C903022DD7AAP+8] = [0.0,0X1.9985FB3D532AFP+2]; + acosh [0X1.199999999999AP+0,0X1.2666666666666P+1] = [0X1.C636C1A882F2CP-2,0X1.799C88E79140DP+0]; + acosh [0X1.14D4E82B2B26FP+15,0X1.72DBE91C837B5P+29] = [0X1.656510B4BAEC3P+3,0X1.52A415EE8455AP+4]; +} + +testcase minimal_acosh_dec_test { + acosh [0.0,infinity]_dac = [0.0,infinity]_trv; + acosh [1.0,infinity]_dac = [0.0,infinity]_dac; + acosh [entire]_dac = [0.0,infinity]_trv; + acosh [1.0,1.0]_com = [0.0,0.0]_com; + acosh [0.9,1.0]_com = [0.0,0.0]_trv; + acosh [1.0,0X1.2C903022DD7AAP+8]_dac = [0.0,0X1.9985FB3D532AFP+2]_dac; + acosh [0.9,0X1.2C903022DD7AAP+8]_com = [0.0,0X1.9985FB3D532AFP+2]_trv; + acosh [0X1.14D4E82B2B26FP+15,0X1.72DBE91C837B5P+29]_def = [0X1.656510B4BAEC3P+3,0X1.52A415EE8455AP+4]_def; +} + +testcase minimal_atanh_test { + atanh [empty] = [empty]; + atanh [0.0,infinity] = [0.0,infinity]; + atanh [-0.0,infinity] = [0.0,infinity]; + atanh [1.0,infinity] = [empty]; + atanh [-infinity,0.0] = [-infinity,0.0]; + atanh [-infinity,-0.0] = [-infinity,0.0]; + atanh [-infinity,-1.0] = [empty]; + atanh [-1.0,1.0] = [entire]; + atanh [0.0,0.0] = [0.0,0.0]; + atanh [-0.0,-0.0] = [0.0,0.0]; + atanh [-1.0,-1.0] = [empty]; + atanh [1.0,1.0] = [empty]; + atanh [entire] = [entire]; + atanh [0X1.4C0420F6F08CCP-2,0X1.FFFFFFFFFFFFFP-1] = [0X1.5871DD2DF9102P-2,0X1.2B708872320E2P+4]; + atanh [-0X1.FFB88E9EB6307P-1,0X1.999999999999AP-4] = [-0X1.06A3A97D7979CP+2,0X1.9AF93CD234413P-4]; +} + +testcase minimal_atanh_dec_test { + atanh [0.0,infinity]_dac = [0.0,infinity]_trv; + atanh [-infinity,0.0]_def = [-infinity,0.0]_trv; + atanh [-1.0,1.0]_com = [entire]_trv; + atanh [0.0,0.0]_com = [0.0,0.0]_com; + atanh [1.0,1.0]_def = [empty]_trv; + atanh [0X1.4C0420F6F08CCP-2,0X1.FFFFFFFFFFFFFP-1]_com = [0X1.5871DD2DF9102P-2,0X1.2B708872320E2P+4]_com; + atanh [-1.0,0X1.FFFFFFFFFFFFFP-1]_com = [-infinity,0X1.2B708872320E2P+4]_trv; + atanh [-0X1.FFB88E9EB6307P-1,0X1.999999999999AP-4]_def = [-0X1.06A3A97D7979CP+2,0X1.9AF93CD234413P-4]_def; + atanh [-0X1.FFB88E9EB6307P-1,1.0]_com = [-0X1.06A3A97D7979CP+2,infinity]_trv; +} + +testcase minimal_sign_test { + sign [empty] = [empty]; + sign [1.0,2.0] = [1.0,1.0]; + sign [-1.0,2.0] = [-1.0,1.0]; + sign [-1.0,0.0] = [-1.0,0.0]; + sign [0.0,2.0] = [0.0,1.0]; + sign [-0.0,2.0] = [0.0,1.0]; + sign [-5.0,-2.0] = [-1.0,-1.0]; + + sign [0.0,0.0] = [0.0,0.0]; + sign [-0.0,-0.0] = [0.0,0.0]; + sign [-0.0,0.0] = [0.0,0.0]; + sign [entire] = [-1.0,1.0]; +} + +testcase minimal_sign_dec_test { + sign [1.0,2.0]_com = [1.0,1.0]_com; + sign [-1.0,2.0]_com = [-1.0,1.0]_def; + sign [-1.0,0.0]_com = [-1.0,0.0]_def; + sign [0.0,2.0]_com = [0.0,1.0]_def; + sign [-0.0,2.0]_def = [0.0,1.0]_def; + sign [-5.0,-2.0]_trv = [-1.0,-1.0]_trv; + sign [0.0,0.0]_dac = [0.0,0.0]_dac; +} + +testcase minimal_ceil_test { + ceil [empty] = [empty]; + ceil [entire] = [entire]; + ceil [1.1,2.0] = [2.0,2.0]; + ceil [-1.1,2.0] = [-1.0,2.0]; + ceil [-1.1,0.0] = [-1.0,0.0]; + ceil [-1.1,-0.0] = [-1.0,0.0]; + ceil [-1.1,-0.4] = [-1.0,0.0]; + ceil [-1.9,2.2] = [-1.0,3.0]; + ceil [-1.0,2.2] = [-1.0,3.0]; + ceil [0.0,2.2] = [0.0,3.0]; + ceil [-0.0,2.2] = [0.0,3.0]; + ceil [-1.5,infinity] = [-1.0,infinity]; + ceil [0x1.FFFFFFFFFFFFFp1023,infinity] = [0x1.FFFFFFFFFFFFFp1023,infinity]; + ceil [-infinity,2.2] = [-infinity,3.0]; + ceil [-infinity,-0x1.FFFFFFFFFFFFFp1023] = [-infinity,-0x1.FFFFFFFFFFFFFp1023]; +} + +testcase minimal_ceil_dec_test { + ceil [1.1,2.0]_com = [2.0,2.0]_dac; + ceil [-1.1,2.0]_com = [-1.0,2.0]_def; + ceil [-1.1,0.0]_dac = [-1.0,0.0]_def; + ceil [-1.1,-0.0]_trv = [-1.0,0.0]_trv; + ceil [-1.1,-0.4]_dac = [-1.0,0.0]_def; + ceil [-1.9,2.2]_com = [-1.0,3.0]_def; + ceil [-1.0,2.2]_dac = [-1.0,3.0]_def; + ceil [0.0,2.2]_trv = [0.0,3.0]_trv; + ceil [-0.0,2.2]_def = [0.0,3.0]_def; + ceil [-1.5,infinity]_trv = [-1.0,infinity]_trv; + ceil [0x1.FFFFFFFFFFFFFp1023,infinity]_dac = [0x1.FFFFFFFFFFFFFp1023,infinity]_def; + ceil [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_dac; + ceil [-infinity,2.2]_trv = [-infinity,3.0]_trv; + ceil [-infinity,-0x1.FFFFFFFFFFFFFp1023]_dac = [-infinity,-0x1.FFFFFFFFFFFFFp1023]_def; +} + +testcase minimal_floor_test { + floor [empty] = [empty]; + floor [entire] = [entire]; + floor [1.1,2.0] = [1.0,2.0]; + floor [-1.1,2.0] = [-2.0,2.0]; + floor [-1.1,0.0] = [-2.0,0.0]; + floor [-1.1,-0.0] = [-2.0,0.0]; + floor [-1.1,-0.4] = [-2.0,-1.0]; + floor [-1.9,2.2] = [-2.0,2.0]; + floor [-1.0,2.2] = [-1.0,2.0]; + floor [0.0,2.2] = [0.0,2.0]; + floor [-0.0,2.2] = [0.0,2.0]; + floor [-1.5,infinity] = [-2.0,infinity]; + floor [-infinity,2.2] = [-infinity,2.0]; +} + +testcase minimal_floor_dec_test { + floor [1.1,2.0]_com = [1.0,2.0]_def; + floor [-1.1,2.0]_def = [-2.0,2.0]_def; + floor [-1.1,0.0]_dac = [-2.0,0.0]_def; + floor [-1.2,-1.1]_com = [-2.0,-2.0]_com; + floor [-1.1,-0.4]_def = [-2.0,-1.0]_def; + floor [-1.9,2.2]_com = [-2.0,2.0]_def; + floor [-1.0,2.2]_trv = [-1.0,2.0]_trv; + floor [0.0,2.2]_trv = [0.0,2.0]_trv; + floor [-0.0,2.2]_com = [0.0,2.0]_def; + floor [-1.5,infinity]_dac = [-2.0,infinity]_def; + floor [-infinity,2.2]_trv = [-infinity,2.0]_trv; + floor [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023]_com = [-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023]_dac; +} + +testcase minimal_trunc_test { + trunc [empty] = [empty]; + trunc [entire] = [entire]; + trunc [1.1,2.1] = [1.0,2.0]; + trunc [-1.1,2.0] = [-1.0,2.0]; + trunc [-1.1,0.0] = [-1.0,0.0]; + trunc [-1.1,-0.0] = [-1.0,0.0]; + trunc [-1.1,-0.4] = [-1.0,0.0]; + trunc [-1.9,2.2] = [-1.0,2.0]; + trunc [-1.0,2.2] = [-1.0,2.0]; + trunc [0.0,2.2] = [0.0,2.0]; + trunc [-0.0,2.2] = [0.0,2.0]; + trunc [-1.5,infinity] = [-1.0,infinity]; + trunc [-infinity,2.2] = [-infinity,2.0]; +} + +testcase minimal_trunc_dec_test { + trunc [1.1,2.1]_com = [1.0,2.0]_def; + trunc [1.1,1.9]_com = [1.0,1.0]_com; + trunc [-1.1,2.0]_dac = [-1.0,2.0]_def; + trunc [-1.1,0.0]_trv = [-1.0,0.0]_trv; + trunc [-1.1,-0.0]_def = [-1.0,0.0]_def; + trunc [-1.1,-0.4]_com = [-1.0,0.0]_def; + trunc [-1.9,2.2]_def = [-1.0,2.0]_def; + trunc [-1.0,2.2]_dac = [-1.0,2.0]_def; + trunc [-1.5,infinity]_dac = [-1.0,infinity]_def; + trunc [-infinity,2.2]_trv = [-infinity,2.0]_trv; + trunc [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_com = [0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023]_dac; + trunc [0x1.FFFFFFFFFFFFFp1023,infinity]_dac = [0x1.FFFFFFFFFFFFFp1023,infinity]_def; +} + +testcase minimal_round_ties_to_even_test { + roundTiesToEven [empty] = [empty]; + roundTiesToEven [entire] = [entire]; + roundTiesToEven [1.1,2.1] = [1.0,2.0]; + roundTiesToEven [-1.1,2.0] = [-1.0,2.0]; + roundTiesToEven [-1.1,-0.4] = [-1.0,0.0]; + roundTiesToEven [-1.1,0.0] = [-1.0,0.0]; + roundTiesToEven [-1.1,-0.0] = [-1.0,0.0]; + roundTiesToEven [-1.9,2.2] = [-2.0,2.0]; + roundTiesToEven [-1.0,2.2] = [-1.0,2.0]; + roundTiesToEven [1.5,2.1] = [2.0,2.0]; + roundTiesToEven [-1.5,2.0] = [-2.0,2.0]; + roundTiesToEven [-1.1,-0.5] = [-1.0,0.0]; + roundTiesToEven [-1.9,2.5] = [-2.0,2.0]; + roundTiesToEven [0.0,2.5] = [0.0,2.0]; + roundTiesToEven [-0.0,2.5] = [0.0,2.0]; + roundTiesToEven [-1.5,2.5] = [-2.0,2.0]; + roundTiesToEven [-1.5,infinity] = [-2.0,infinity]; + roundTiesToEven [-infinity,2.2] = [-infinity,2.0]; +} + +testcase minimal_round_ties_to_even_dec_test { + roundTiesToEven [1.1,2.1]_com = [1.0,2.0]_def; + roundTiesToEven [-1.1,2.0]_trv = [-1.0,2.0]_trv; + roundTiesToEven [-1.6,-1.5]_com = [-2.0,-2.0]_dac; + roundTiesToEven [-1.6,-1.4]_com = [-2.0,-1.0]_def; + roundTiesToEven [-1.5,infinity]_dac = [-2.0,infinity]_def; + roundTiesToEven [-infinity,2.2]_trv = [-infinity,2.0]_trv; +} + +testcase minimal_round_ties_to_away_test { + roundTiesToAway [empty] = [empty]; + roundTiesToAway [entire] = [entire]; + roundTiesToAway [1.1,2.1] = [1.0,2.0]; + roundTiesToAway [-1.1,2.0] = [-1.0,2.0]; + roundTiesToAway [-1.1,0.0] = [-1.0,0.0]; + roundTiesToAway [-1.1,-0.0] = [-1.0,-0.0]; + roundTiesToAway [-1.1,-0.4] = [-1.0,0.0]; + roundTiesToAway [-1.9,2.2] = [-2.0,2.0]; + roundTiesToAway [-1.0,2.2] = [-1.0,2.0]; + roundTiesToAway [0.5,2.1] = [1.0,2.0]; + roundTiesToAway [-2.5,2.0] = [-3.0,2.0]; + roundTiesToAway [-1.1,-0.5] = [-1.0,-1.0]; + roundTiesToAway [-1.9,2.5] = [-2.0,3.0]; + roundTiesToAway [-1.5,2.5] = [-2.0,3.0]; + roundTiesToAway [0.0,2.5] = [0.0,3.0]; + roundTiesToAway [-0.0,2.5] = [0.0,3.0]; + roundTiesToAway [-1.5,infinity] = [-2.0,infinity]; + roundTiesToAway [-infinity,2.2] = [-infinity,2.0]; +} + +testcase minimal_round_ties_to_away_dec_test { + roundTiesToAway [1.1,2.1]_com = [1.0,2.0]_def; + roundTiesToAway [-1.9,2.2]_com = [-2.0,2.0]_def; + roundTiesToAway [1.9,2.2]_com = [2.0,2.0]_com; + roundTiesToAway [-1.0,2.2]_trv = [-1.0,2.0]_trv; + roundTiesToAway [2.5,2.6]_com = [3.0,3.0]_dac; + roundTiesToAway [-1.5,infinity]_dac = [-2.0,infinity]_def; + roundTiesToAway [-infinity,2.2]_def = [-infinity,2.0]_def; +} + +testcase minimal_abs_test { + abs [empty] = [empty]; + abs [entire] = [0.0,infinity]; + abs [1.1,2.1] = [1.1,2.1]; + abs [-1.1,2.0] = [0.0,2.0]; + abs [-1.1,0.0] = [0.0,1.1]; + abs [-1.1,-0.0] = [0.0,1.1]; + abs [-1.1,-0.4] = [0.4,1.1]; + abs [-1.9,0.2] = [0.0,1.9]; + abs [0.0,0.2] = [0.0,0.2]; + abs [-0.0,0.2] = [0.0,0.2]; + abs [-1.5,infinity] = [0.0,infinity]; + abs [-infinity,-2.2] = [2.2,infinity]; +} + +testcase minimal_abs_dec_test { + abs [-1.1,2.0]_com = [0.0,2.0]_com; + abs [-1.1,0.0]_dac = [0.0,1.1]_dac; + abs [-1.1,-0.0]_def = [0.0,1.1]_def; + abs [-1.1,-0.4]_trv = [0.4,1.1]_trv; + abs [-1.9,0.2]_dac = [0.0,1.9]_dac; + abs [0.0,0.2]_def = [0.0,0.2]_def; + abs [-0.0,0.2]_com = [0.0,0.2]_com; + abs [-1.5,infinity]_dac = [0.0,infinity]_dac; +} + +testcase minimal_min_test { + min [empty] [1.0,2.0] = [empty]; + min [1.0,2.0] [empty] = [empty]; + min [empty] [empty] = [empty]; + min [entire] [1.0,2.0] = [-infinity,2.0]; + min [1.0,2.0] [entire] = [-infinity,2.0]; + min [entire] [entire] = [entire]; + min [empty] [entire] = [empty]; + min [1.0,5.0] [2.0,4.0] = [1.0,4.0]; + min [0.0,5.0] [2.0,4.0] = [0.0,4.0]; + min [-0.0,5.0] [2.0,4.0] = [0.0,4.0]; + min [1.0,5.0] [2.0,8.0] = [1.0,5.0]; + min [1.0,5.0] [entire] = [-infinity,5.0]; + min [-7.0,-5.0] [2.0,4.0] = [-7.0,-5.0]; + min [-7.0,0.0] [2.0,4.0] = [-7.0,0.0]; + min [-7.0,-0.0] [2.0,4.0] = [-7.0,0.0]; +} + +testcase minimal_min_dec_test { + min [entire]_dac [1.0,2.0]_com = [-infinity,2.0]_dac; + min [-7.0,-5.0]_trv [2.0,4.0]_def = [-7.0,-5.0]_trv; + min [-7.0,0.0]_dac [2.0,4.0]_def = [-7.0,0.0]_def; + min [-7.0,-0.0]_com [2.0,4.0]_com = [-7.0,0.0]_com; +} + +testcase minimal_max_test { + max [empty] [1.0,2.0] = [empty]; + max [1.0,2.0] [empty] = [empty]; + max [empty] [empty] = [empty]; + max [entire] [1.0,2.0] = [1.0,infinity]; + max [1.0,2.0] [entire] = [1.0,infinity]; + max [entire] [entire] = [entire]; + max [empty] [entire] = [empty]; + max [1.0,5.0] [2.0,4.0] = [2.0,5.0]; + max [1.0,5.0] [2.0,8.0] = [2.0,8.0]; + max [-1.0,5.0] [entire] = [-1.0,infinity]; + max [-7.0,-5.0] [2.0,4.0] = [2.0,4.0]; + max [-7.0,-5.0] [0.0,4.0] = [0.0,4.0]; + max [-7.0,-5.0] [-0.0,4.0] = [0.0,4.0]; + max [-7.0,-5.0] [-2.0,0.0] = [-2.0,0.0]; + max [-7.0,-5.0] [-2.0,-0.0] = [-2.0,0.0]; +} + +testcase minimal_max_dec_test { + max [entire]_dac [1.0,2.0]_com = [1.0,infinity]_dac; + max [-7.0,-5.0]_trv [2.0,4.0]_def = [2.0,4.0]_trv; + max [-7.0,5.0]_dac [2.0,4.0]_def = [2.0,5.0]_def; + max [3.0,3.5]_com [2.0,4.0]_com = [3.0,4.0]_com; +} diff --git a/test/itl/libieeep1788_num.itl b/test/itl/libieeep1788_num.itl new file mode 100644 index 000000000..13920eede --- /dev/null +++ b/test/itl/libieeep1788_num.itl @@ -0,0 +1,255 @@ +/* + +Unit tests from libieeep1788 for interval numeric operations +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + + +testcase minimal_inf_test { + inf [empty] = +infinity; + inf [-infinity,+infinity] = -infinity; + inf [1.0,2.0] = 1.0; + inf [-3.0,-2.0] = -3.0; + inf [-infinity,2.0] = -infinity; + inf [-infinity,0.0] = -infinity; + inf [-infinity,-0.0] = -infinity; + inf [-2.0,infinity] = -2.0; + inf [0.0,infinity] = -0.0; + inf [-0.0,infinity] = -0.0; + inf [-0.0,0.0] = -0.0; + inf [0.0,-0.0] = -0.0; + inf [0.0,0.0] = -0.0; + inf [-0.0,-0.0] = -0.0; +} + +testcase minimal_inf_dec_test { + inf [nai] = NaN; + inf [empty]_trv = +infinity; + inf [-infinity,+infinity]_def = -infinity; + inf [1.0,2.0]_com = 1.0; + inf [-3.0,-2.0]_trv = -3.0; + inf [-infinity,2.0]_dac = -infinity; + inf [-infinity,0.0]_def = -infinity; + inf [-infinity,-0.0]_trv = -infinity; + inf [-2.0,infinity]_trv = -2.0; + inf [0.0,infinity]_def = -0.0; + inf [-0.0,infinity]_trv = -0.0; + inf [-0.0,0.0]_dac = -0.0; + inf [0.0,-0.0]_trv = -0.0; + inf [0.0,0.0]_trv = -0.0; + inf [-0.0,-0.0]_trv = -0.0; +} + +testcase minimal_sup_test { + sup [empty] = -infinity; + sup [-infinity,+infinity] = +infinity; + sup [1.0,2.0] = 2.0; + sup [-3.0,-2.0] = -2.0; + sup [-infinity,2.0] = 2.0; + sup [-infinity,0.0] = 0.0; + sup [-infinity,-0.0] = 0.0; + sup [-2.0,infinity] = infinity; + sup [0.0,infinity] = infinity; + sup [-0.0,infinity] = infinity; + sup [-0.0,0.0] = 0.0; + sup [0.0,-0.0] = 0.0; + sup [0.0,0.0] = 0.0; + sup [-0.0,-0.0] = 0.0; +} + +testcase minimal_sup_dec_test { + sup [nai] = NaN; + sup [empty]_trv = -infinity; + sup [-infinity,+infinity]_def = +infinity; + sup [1.0,2.0]_com = 2.0; + sup [-3.0,-2.0]_trv = -2.0; + sup [-infinity,2.0]_dac = 2.0; + sup [-infinity,0.0]_def = 0.0; + sup [-infinity,-0.0]_trv = 0.0; + sup [-2.0,infinity]_trv = infinity; + sup [0.0,infinity]_def = infinity; + sup [-0.0,infinity]_trv = infinity; + sup [-0.0,0.0]_dac = +0.0; + sup [0.0,-0.0]_trv = +0.0; + sup [0.0,0.0]_trv = +0.0; + sup [-0.0,-0.0]_trv = +0.0; +} + +testcase minimal_mid_test { + mid [empty] = NaN; + mid [-infinity,+infinity] = 0.0; + mid [-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023] = 0.0; + mid [0.0,2.0] = 1.0; + mid [2.0,2.0] = 2.0; + mid [-2.0,2.0] = 0.0; + mid [0.0,infinity] = 0x1.FFFFFFFFFFFFFp1023; + mid [-infinity,1.2] = -0x1.FFFFFFFFFFFFFp1023; + mid [-0X0.0000000000002P-1022,0X0.0000000000001P-1022] = 0.0; + mid [-0X0.0000000000001P-1022,0X0.0000000000002P-1022] = 0.0; + mid [0X1.FFFFFFFFFFFFFP+1022,0X1.FFFFFFFFFFFFFP+1023] = 0X1.7FFFFFFFFFFFFP+1023; + mid [0X0.0000000000001P-1022,0X0.0000000000003P-1022] = 0X0.0000000000002P-1022; +} + +testcase minimal_mid_dec_test { + mid [empty]_trv = NaN; + mid [nai] = NaN; + mid [-infinity,+infinity]_def = 0.0; + mid [-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023]_trv = 0.0; + mid [0.0,2.0]_com = 1.0; + mid [2.0,2.0]_dac = 2.0; + mid [-2.0,2.0]_trv = 0.0; + mid [0.0,infinity]_trv = 0x1.FFFFFFFFFFFFFp1023; + mid [-infinity,1.2]_trv = -0x1.FFFFFFFFFFFFFp1023; + mid [-0X0.0000000000002P-1022,0X0.0000000000001P-1022]_trv = 0.0; + mid [-0X0.0000000000001P-1022,0X0.0000000000002P-1022]_trv = 0.0; + mid [0X1.FFFFFFFFFFFFFP+1022,0X1.FFFFFFFFFFFFFP+1023]_trv = 0X1.7FFFFFFFFFFFFP+1023; + mid [0X0.0000000000001P-1022,0X0.0000000000003P-1022]_trv = 0X0.0000000000002P-1022; +} + +testcase minimal_rad_test { + rad [0.0,2.0] = 1.0; + rad [2.0,2.0] = 0.0; + rad [empty] = NaN; + rad [-infinity,+infinity] = infinity; + rad [0.0,infinity] = infinity; + rad [-infinity, 1.2] = infinity; + rad [-0X0.0000000000002P-1022,0X0.0000000000001P-1022] = 0X0.0000000000002P-1022; + rad [0X0.0000000000001P-1022,0X0.0000000000002P-1022] = 0X0.0000000000001P-1022; + rad [0X1P+0,0X1.0000000000003P+0] = 0X1P-51; +} + +testcase minimal_rad_dec_test { + rad [0.0,2.0]_trv = 1.0; + rad [2.0,2.0]_com = 0.0; + rad [empty]_trv = NaN; + rad [nai] = NaN; + rad [-infinity,+infinity]_trv = infinity; + rad [0.0,infinity]_def = infinity; + rad [-infinity, 1.2]_trv = infinity; + rad [-0X0.0000000000002P-1022,0X0.0000000000001P-1022]_trv = 0X0.0000000000002P-1022; + rad [0X0.0000000000001P-1022,0X0.0000000000002P-1022]_trv = 0X0.0000000000001P-1022; + rad [0X1P+0,0X1.0000000000003P+0]_trv = 0X1P-51; +} + +testcase minimal_mid_rad_test { + midRad [empty] = NaN NaN; + midRad [-infinity,infinity] = 0.0 infinity; + midRad [-0X1.FFFFFFFFFFFFFP+1023,0X1.FFFFFFFFFFFFFP+1023] = 0.0 0X1.FFFFFFFFFFFFFP+1023; + midRad [0.0,2.0] = 1.0 1.0; + midRad [2.0,2.0] = 2.0 0.0; + midRad [-2.0,2.0] = 0.0 2.0; + midRad [0.0,infinity] = 0X1.FFFFFFFFFFFFFP+1023 infinity; + midRad [-infinity, 1.2] = -0X1.FFFFFFFFFFFFFP+1023 infinity; + midRad [-0X0.0000000000002P-1022,0X0.0000000000001P-1022] = 0.0 0X0.0000000000002P-1022; + midRad [-0X0.0000000000001P-1022,0X0.0000000000002P-1022] = 0.0 0X0.0000000000002P-1022; + midRad [0X1.FFFFFFFFFFFFFP+1022,0X1.FFFFFFFFFFFFFP+1023] = 0X1.7FFFFFFFFFFFFP+1023 0x1.0p+1022; + midRad [0X0.0000000000001P-1022,0X0.0000000000003P-1022] = 0X0.0000000000002P-1022 0X0.0000000000001P-1022; +} + +testcase minimal_mid_rad_dec_test { + midRad [empty] = NaN NaN; + midRad [nai] = NaN NaN; + midRad [-infinity,infinity]_def = 0.0 infinity; + midRad [-0X1.FFFFFFFFFFFFFP+1023,0X1.FFFFFFFFFFFFFP+1023]_trv = 0.0 0X1.FFFFFFFFFFFFFP+1023; + midRad [0.0,2.0]_com = 1.0 1.0; + midRad [2.0,2.0]_dac = 2.0 0.0; + midRad [-2.0,2.0]_trv = 0.0 2.0; + midRad [0.0,infinity]_trv = 0X1.FFFFFFFFFFFFFP+1023 infinity; + midRad [-infinity, 1.2]_trv = -0X1.FFFFFFFFFFFFFP+1023 infinity; + midRad [-0X0.0000000000002P-1022,0X0.0000000000001P-1022]_trv = 0.0 0X0.0000000000002P-1022; + midRad [-0X0.0000000000001P-1022,0X0.0000000000002P-1022]_trv = 0.0 0X0.0000000000002P-1022; + midRad [0X1.FFFFFFFFFFFFFP+1022,0X1.FFFFFFFFFFFFFP+1023]_trv = 0X1.7FFFFFFFFFFFFP+1023 0x1.0p+1022; + midRad [0X0.0000000000001P-1022,0X0.0000000000003P-1022]_trv = 0X0.0000000000002P-1022 0X0.0000000000001P-1022; +} + +testcase minimal_wid_test { + wid [2.0,2.0] = 0.0; + wid [1.0,2.0] = 1.0; + wid [1.0,infinity] = infinity; + wid [-infinity,2.0] = infinity; + wid [-infinity,+infinity] = infinity; + wid [empty] = NaN; + wid [0X1P+0,0X1.0000000000001P+0] = 0X1P-52; + wid [0X1P-1022,0X1.0000000000001P-1022] = 0X0.0000000000001P-1022; +} + +testcase minimal_wid_dec_test { + wid [2.0,2.0]_com = 0.0; + wid [1.0,2.0]_trv = 1.0; + wid [1.0,infinity]_trv = infinity; + wid [-infinity,2.0]_def = infinity; + wid [-infinity,+infinity]_trv = infinity; + wid [empty]_trv = NaN; + wid [nai] = NaN; + wid [0X1P+0,0X1.0000000000001P+0]_trv = 0X1P-52; + wid [0X1P-1022,0X1.0000000000001P-1022]_trv = 0X0.0000000000001P-1022; +} + +testcase minimal_mag_test { + mag [1.0,2.0] = 2.0; + mag [-4.0,2.0] = 4.0; + mag [-infinity,2.0] = infinity; + mag [1.0,infinity] = infinity; + mag [-infinity,+infinity] = infinity; + mag [empty] = NaN; + mag [-0.0,0.0] = 0.0; + mag [-0.0,-0.0] = 0.0; +} + +testcase minimal_mag_dec_test { + mag [1.0,2.0]_com = 2.0; + mag [-4.0,2.0]_trv = 4.0; + mag [-infinity,2.0]_trv = infinity; + mag [1.0,infinity]_def = infinity; + mag [-infinity,+infinity]_trv = infinity; + mag [empty]_trv = NaN; + mag [nai] = NaN; + mag [-0.0,0.0]_trv = 0.0; + mag [-0.0,-0.0]_trv = 0.0; +} + +testcase minimal_mig_test { + mig [1.0,2.0] = 1.0; + mig [-4.0,2.0] = 0.0; + mig [-4.0,-2.0] = 2.0; + mig [-infinity,2.0] = 0.0; + mig [-infinity,-2.0] = 2.0; + mig [-1.0,infinity] = 0.0; + mig [1.0,infinity] = 1.0; + mig [-infinity,+infinity] = 0.0; + mig [empty] = NaN; + mig [-0.0,0.0] = 0.0; + mig [-0.0,-0.0] = 0.0; +} + +testcase minimal_mig_dec_test { + mig [1.0,2.0]_com = 1.0; + mig [-4.0,2.0]_trv = 0.0; + mig [-4.0,-2.0]_trv = 2.0; + mig [-infinity,2.0]_def = 0.0; + mig [-infinity,-2.0]_trv = 2.0; + mig [-1.0,infinity]_trv = 0.0; + mig [1.0,infinity]_trv = 1.0; + mig [-infinity,+infinity]_trv = 0.0; + mig [empty]_trv = NaN; + mig [nai] = NaN; + mig [-0.0,0.0]_trv = 0.0; + mig [-0.0,-0.0]_trv = 0.0; +} diff --git a/test/itl/libieeep1788_overlap.itl b/test/itl/libieeep1788_overlap.itl new file mode 100644 index 000000000..afc6ccac7 --- /dev/null +++ b/test/itl/libieeep1788_overlap.itl @@ -0,0 +1,131 @@ +/* + +Unit tests from libieeep1788 for the interval overlap operation +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_overlap_test { + overlap [empty] [empty] = bothEmpty; + overlap [empty] [1.0,2.0] = firstEmpty; + overlap [1.0,2.0] [empty] = secondEmpty; + + overlap [-infinity,2.0] [3.0,infinity] = before; + overlap [-infinity,2.0] [3.0,4.0] = before; + overlap [2.0,2.0] [3.0,4.0] = before; + overlap [1.0,2.0] [3.0,4.0] = before; + overlap [1.0,2.0] [3.0,3.0] = before; + overlap [2.0,2.0] [3.0,3.0] = before; + overlap [2.0,2.0] [3.0,infinity] = before; + + overlap [-infinity,2.0] [2.0,3.0] = meets; + overlap [1.0,2.0] [2.0,3.0] = meets; + overlap [1.0,2.0] [2.0,infinity] = meets; + + overlap [1.0,2.0] [1.5,2.5] = overlaps; + + overlap [1.0,2.0] [1.0,infinity] = starts; + overlap [1.0,2.0] [1.0,3.0] = starts; + overlap [1.0,1.0] [1.0,3.0] = starts; + + overlap [1.0,2.0] [entire] = containedBy; + overlap [1.0,2.0] [-infinity,3.0] = containedBy; + overlap [1.0,2.0] [0.0,3.0] = containedBy; + overlap [2.0,2.0] [0.0,3.0] = containedBy; + overlap [2.0,2.0] [0.0,infinity] = containedBy; + + overlap [1.0,2.0] [-infinity,2.0] = finishes; + overlap [1.0,2.0] [0.0,2.0] = finishes; + overlap [2.0,2.0] [0.0,2.0] = finishes; + + overlap [1.0,2.0] [1.0,2.0] = equals; + overlap [1.0,1.0] [1.0,1.0] = equals; + overlap [-infinity,1.0] [-infinity,1.0] = equals; + overlap [entire] [entire] = equals; + + overlap [3.0,4.0] [2.0,2.0] = after; + overlap [3.0,4.0] [1.0,2.0] = after; + overlap [3.0,3.0] [1.0,2.0] = after; + overlap [3.0,3.0] [2.0,2.0] = after; + overlap [3.0,infinity] [2.0,2.0] = after; + + overlap [2.0,3.0] [1.0,2.0] = metBy; + overlap [2.0,3.0] [-infinity,2.0] = metBy; + + overlap [1.5,2.5] [1.0,2.0] = overlappedBy; + overlap [1.5,2.5] [-infinity,2.0] = overlappedBy; + + overlap [1.0,infinity] [1.0,2.0] = startedBy; + overlap [1.0,3.0] [1.0,2.0] = startedBy; + overlap [1.0,3.0] [1.0,1.0] = startedBy; + + overlap [-infinity,3.0] [1.0,2.0] = contains; + overlap [entire] [1.0,2.0] = contains; + overlap [0.0,3.0] [1.0,2.0] = contains; + overlap [0.0,3.0] [2.0,2.0] = contains; + + overlap [-infinity,2.0] [1.0,2.0] = finishedBy; + overlap [0.0,2.0] [1.0,2.0] = finishedBy; + overlap [0.0,2.0] [2.0,2.0] = finishedBy; +} + +testcase minimal_overlap_dec_test { + overlap [empty]_trv [empty]_trv = bothEmpty; + overlap [empty]_trv [1.0,2.0]_com = firstEmpty; + overlap [1.0,2.0]_def [empty]_trv = secondEmpty; + + overlap [2.0,2.0]_def [3.0,4.0]_def = before; + overlap [1.0,2.0]_dac [3.0,4.0]_com = before; + overlap [1.0,2.0]_com [3.0,3.0]_trv = before; + overlap [2.0,2.0]_trv [3.0,3.0]_def = before; + + overlap [1.0,2.0]_def [2.0,3.0]_def = meets; + + overlap [1.0,2.0]_dac [1.5,2.5]_def = overlaps; + + overlap [1.0,2.0]_def [1.0,3.0]_com = starts; + overlap [1.0,1.0]_trv [1.0,3.0]_def = starts; + + overlap [1.0,2.0]_def [0.0,3.0]_dac = containedBy; + overlap [2.0,2.0]_trv [0.0,3.0]_def = containedBy; + + overlap [1.0,2.0]_trv [0.0,2.0]_com = finishes; + overlap [2.0,2.0]_def [0.0,2.0]_dac = finishes; + + overlap [1.0,2.0]_def [1.0,2.0]_def = equals; + overlap [1.0,1.0]_dac [1.0,1.0]_dac = equals; + + overlap [3.0,4.0]_trv [2.0,2.0]_trv = after; + overlap [3.0,4.0]_def [1.0,2.0]_def = after; + overlap [3.0,3.0]_com [1.0,2.0]_dac = after; + overlap [3.0,3.0]_def [2.0,2.0]_trv = after; + + overlap [2.0,3.0]_def [1.0,2.0]_trv = metBy; + + overlap [1.5,2.5]_com [1.0,2.0]_com = overlappedBy; + + overlap [1.0,3.0]_dac [1.0,2.0]_def = startedBy; + overlap [1.0,3.0]_com [1.0,1.0]_dac = startedBy; + + overlap [0.0,3.0]_com [1.0,2.0]_dac = contains; + overlap [0.0,3.0]_com [2.0,2.0]_def = contains; + + overlap [0.0,2.0]_def [1.0,2.0]_trv = finishedBy; + overlap [0.0,2.0]_dac [2.0,2.0]_def = finishedBy; +} diff --git a/test/itl/libieeep1788_rec_bool.itl b/test/itl/libieeep1788_rec_bool.itl new file mode 100644 index 000000000..abb57980b --- /dev/null +++ b/test/itl/libieeep1788_rec_bool.itl @@ -0,0 +1,186 @@ +/* + +Unit tests from libieeep1788 for recommended interval boolean operations +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_is_common_interval_test { + isCommonInterval [-27.0,-27.0] = true; + isCommonInterval [-27.0, 0.0] = true; + isCommonInterval [0.0,0.0] = true; + isCommonInterval [-0.0,-0.0] = true; + isCommonInterval [-0.0,0.0] = true; + isCommonInterval [0.0,-0.0] = true; + isCommonInterval [5.0, 12.4] = true; + isCommonInterval [-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023] = true; + + isCommonInterval [entire] = false; + isCommonInterval [empty] = false; + isCommonInterval [-infinity, 0.0] = false; + isCommonInterval [0.0, infinity] = false; +} + +testcase minimal_is_common_interval_dec_test { + isCommonInterval [-27.0,-27.0]_com = true; + isCommonInterval [-27.0, 0.0]_com = true; + isCommonInterval [0.0,0.0]_com = true; + isCommonInterval [-0.0,-0.0]_com = true; + isCommonInterval [-0.0,0.0]_com = true; + isCommonInterval [0.0,-0.0]_com = true; + isCommonInterval [5.0, 12.4]_com = true; + isCommonInterval [-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023]_com = true; + + isCommonInterval [-27.0,-27.0]_trv = true; + isCommonInterval [-27.0, 0.0]_def = true; + isCommonInterval [0.0,0.0]_dac = true; + isCommonInterval [-0.0,-0.0]_trv = true; + isCommonInterval [-0.0,0.0]_def = true; + isCommonInterval [0.0,-0.0]_dac = true; + isCommonInterval [5.0, 12.4]_def = true; + isCommonInterval [-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023]_trv = true; + + isCommonInterval [entire]_dac = false; + isCommonInterval [nai] = false; + isCommonInterval [empty]_trv = false; + isCommonInterval [-infinity, 0.0]_trv = false; + isCommonInterval [0.0, infinity]_def = false; +} + +testcase minimal_is_singleton_test { + isSingleton [-27.0,-27.0] = true; + isSingleton [-2.0, -2.0] = true; + isSingleton [12.0,12.0] = true; + isSingleton [17.1, 17.1] = true; + isSingleton [-0.0,-0.0] = true; + isSingleton [0.0,0.0] = true; + isSingleton [-0.0, 0.0] = true; + isSingleton [0.0, -0.0] = true; + + isSingleton [empty] = false; + isSingleton [entire] = false; + isSingleton [-1.0, 0.0] = false; + isSingleton [-1.0, -0.5] = false; + isSingleton [1.0, 2.0] = false; + isSingleton [-infinity,-0x1.FFFFFFFFFFFFFp1023] = false; + isSingleton [-1.0,infinity] = false; +} + +testcase minimal_is_singleton_dec_test { + isSingleton [-27.0,-27.0]_def = true; + isSingleton [-2.0, -2.0]_trv = true; + isSingleton [12.0,12.0]_dac = true; + isSingleton [17.1, 17.1]_com = true; + isSingleton [-0.0,-0.0]_def = true; + isSingleton [0.0,0.0]_com = true; + isSingleton [-0.0, 0.0]_def = true; + isSingleton [0.0, -0.0]_dac = true; + + isSingleton [empty]_trv = false; + isSingleton [nai] = false; + isSingleton [entire]_def = false; + isSingleton [-1.0, 0.0]_dac = false; + isSingleton [-1.0, -0.5]_com = false; + isSingleton [1.0, 2.0]_def = false; + isSingleton [-infinity,-0x1.FFFFFFFFFFFFFp1023]_dac = false; + isSingleton [-1.0,infinity]_trv = false; +} + +testcase minimal_is_member_test { + isMember -27.0 [-27.0,-27.0] = true; + isMember -27.0 [-27.0, 0.0] = true; + isMember -7.0 [-27.0, 0.0] = true; + isMember 0.0 [-27.0, 0.0] = true; + isMember -0.0 [0.0,0.0] = true; + isMember 0.0 [0.0,0.0] = true; + isMember 0.0 [-0.0,-0.0] = true; + isMember 0.0 [-0.0,0.0] = true; + isMember 0.0 [0.0,-0.0] = true; + isMember 5.0 [5.0, 12.4] = true; + isMember 6.3 [5.0, 12.4] = true; + isMember 12.4 [5.0, 12.4] = true; + isMember 0.0 [entire] = true; + isMember 5.0 [entire] = true; + isMember 6.3 [entire] = true; + isMember 12.4 [entire] = true; + isMember 0x1.FFFFFFFFFFFFFp1023 [entire] = true; + isMember -0x1.FFFFFFFFFFFFFp1023 [entire] = true; + isMember 0x1.0p-1022 [entire] = true; + isMember -0x1.0p-1022 [entire] = true; + + isMember -71.0 [-27.0, 0.0] = false; + isMember 0.1 [-27.0, 0.0] = false; + isMember -0.01 [0.0,0.0] = false; + isMember 0.000001 [0.0,0.0] = false; + isMember 111110.0 [-0.0,-0.0] = false; + isMember 4.9 [5.0, 12.4] = false; + isMember -6.3 [5.0, 12.4] = false; + isMember 0.0 [empty] = false; + isMember -4535.3 [empty] = false; + isMember -infinity [empty] = false; + isMember infinity [empty] = false; + isMember NaN [empty] = false; + isMember -infinity [entire] = false; + isMember infinity [entire] = false; + isMember NaN [entire] = false; +} + +testcase minimal_is_member_dec_test { + isMember -27.0 [-27.0,-27.0]_trv = true; + isMember -27.0 [-27.0, 0.0]_def = true; + isMember -7.0 [-27.0, 0.0]_dac = true; + isMember 0.0 [-27.0, 0.0]_com = true; + isMember -0.0 [0.0,0.0]_trv = true; + isMember 0.0 [0.0,0.0]_def = true; + isMember 0.0 [-0.0,-0.0]_dac = true; + isMember 0.0 [-0.0,0.0]_com = true; + isMember 0.0 [0.0,-0.0]_trv = true; + isMember 5.0 [5.0, 12.4]_def = true; + isMember 6.3 [5.0, 12.4]_dac = true; + isMember 12.4 [5.0, 12.4]_com = true; + isMember 0.0 [entire]_trv = true; + isMember 5.0 [entire]_def = true; + isMember 6.3 [entire]_dac = true; + isMember 12.4 [entire]_trv = true; + isMember 0x1.FFFFFFFFFFFFFp1023 [entire]_def = true; + isMember -0x1.FFFFFFFFFFFFFp1023 [entire]_dac = true; + isMember 0x1.0p-1022 [entire]_trv = true; + isMember -0x1.0p-1022 [entire]_def = true; + + isMember -71.0 [-27.0, 0.0]_trv = false; + isMember 0.1 [-27.0, 0.0]_def = false; + isMember -0.01 [0.0,0.0]_dac = false; + isMember 0.000001 [0.0,0.0]_com = false; + isMember 111110.0 [-0.0,-0.0]_trv = false; + isMember 4.9 [5.0, 12.4]_def = false; + isMember -6.3 [5.0, 12.4]_dac = false; + isMember 0.0 [empty]_trv = false; + isMember 0.0 [empty]_trv = false; + isMember -4535.3 [empty]_trv = false; + isMember -4535.3 [empty]_trv = false; + isMember -infinity [empty]_trv = false; + isMember -infinity [nai] = false; + isMember infinity [empty]_trv = false; + isMember infinity [nai] = false; + isMember NaN [empty]_trv = false; + isMember NaN [nai] = false; + isMember -infinity [entire]_trv = false; + isMember infinity [entire]_def = false; + isMember NaN [entire]_dac = false; +} diff --git a/test/itl/libieeep1788_reduction.itl b/test/itl/libieeep1788_reduction.itl new file mode 100644 index 000000000..9d3dd9c44 --- /dev/null +++ b/test/itl/libieeep1788_reduction.itl @@ -0,0 +1,53 @@ +/* + +Unit tests from libieeep1788 for reduction operations +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_sum_test { + sum_nearest {1.0, 2.0, 3.0} = 6.0; + sum_nearest {1.0, 2.0, NaN, 3.0} = NaN; + sum_nearest {1.0, -infinity, 2.0, infinity, 3.0} = NaN; +} + +testcase minimal_sum_abs_test { + sum_abs_nearest {1.0, -2.0, 3.0} = 6.0; + sum_abs_nearest {1.0, -2.0, NaN, 3.0} = NaN; + sum_abs_nearest {1.0, -infinity, 2.0, infinity, 3.0} = infinity; +} + +testcase minimal_sum_sqr_test { + sum_sqr_nearest {1.0, 2.0, 3.0} = 14.0; + sum_sqr_nearest {1.0, 2.0, NaN, 3.0} = NaN; + sum_sqr_nearest {1.0, -infinity, 2.0, infinity, 3.0} = infinity; +} + +testcase minimal_dot_test { + dot_nearest {1.0, 2.0, 3.0} {1.0, 2.0, 3.0} = 14.0; + + dot_nearest {0x10000000000001p0, 0x1p104} {0x0fffffffffffffp0, -1.0} = -1.0; + + dot_nearest {1.0, 2.0, NaN, 3.0} {1.0, 2.0, 3.0, 4.0} = NaN; + dot_nearest {1.0, 2.0, 3.0, 4.0} {1.0, 2.0, NaN, 3.0} = NaN; + + dot_nearest {1.0, 2.0, 0.0, 4.0} {1.0, 2.0, infinity, 3.0} = NaN; + dot_nearest {1.0, 2.0, -infinity, 4.0} {1.0, 2.0, 0.0, 3.0} = NaN; +} + diff --git a/test/itl/libieeep1788_set.itl b/test/itl/libieeep1788_set.itl new file mode 100644 index 000000000..2b283605b --- /dev/null +++ b/test/itl/libieeep1788_set.itl @@ -0,0 +1,54 @@ +/* + +Unit tests from libieeep1788 for interval set operations +(Original author: Marco Nehmeier) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2013-2015 Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) +Copyright 2015-2017 Oliver Heimlich (oheim@posteo.de) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +testcase minimal_intersection_test { + intersection [1.0,3.0] [2.1,4.0] = [2.1,3.0]; + intersection [1.0,3.0] [3.0,4.0] = [3.0,3.0]; + intersection [1.0,3.0] [empty] = [empty]; + intersection [entire] [empty] = [empty]; + intersection [1.0,3.0] [entire] = [1.0,3.0]; +} + +testcase minimal_intersection_dec_test { + intersection [1.0,3.0]_com [2.1,4.0]_com = [2.1,3.0]_trv; + intersection [1.0,3.0]_dac [3.0,4.0]_def = [3.0,3.0]_trv; + intersection [1.0,3.0]_def [empty]_trv = [empty]_trv; + intersection [entire]_dac [empty]_trv = [empty]_trv; + intersection [1.0,3.0]_dac [entire]_dac = [1.0,3.0]_trv; +} + +testcase minimal_convex_hull_test { + convexHull [1.0,3.0] [2.1,4.0] = [1.0,4.0]; + convexHull [1.0,1.0] [2.1,4.0] = [1.0,4.0]; + convexHull [1.0,3.0] [empty] = [1.0,3.0]; + convexHull [empty] [empty] = [empty]; + convexHull [1.0,3.0] [entire] = [entire]; +} + +testcase minimal_convex_hull_dec_test { + convexHull [1.0,3.0]_trv [2.1,4.0]_trv = [1.0,4.0]_trv; + convexHull [1.0,1.0]_trv [2.1,4.0]_trv = [1.0,4.0]_trv; + convexHull [1.0,3.0]_trv [empty]_trv = [1.0,3.0]_trv; + convexHull [empty]_trv [empty]_trv = [empty]_trv; + convexHull [1.0,3.0]_trv [entire]_dac = [entire]_trv; +} diff --git a/test/itl/mpfi.itl b/test/itl/mpfi.itl new file mode 100644 index 000000000..687a74ea9 --- /dev/null +++ b/test/itl/mpfi.itl @@ -0,0 +1,1836 @@ +/* + +Unit tests from GNU MPFI +(Original authors: Philippe Theveny and Nathalie Revol ) +converted into portable ITL format by Oliver Heimlich. + +Copyright 2009–2012 Spaces project, Inria Lorraine + and Salsa project, INRIA Rocquencourt, + and Arenaire project, Inria Rhone-Alpes, France + and Lab. ANO, USTL (Univ. of Lille), France +Copyright 2015-2016 Oliver Heimlich + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +testcase mpfi_abs { + // special values + abs [-infinity, -7.0] = [+7.0, +infinity]; + abs [-infinity, 0.0] = [0.0, +infinity]; + abs [-infinity, 0.0] = [0.0, +infinity]; + abs [-infinity, +8.0] = [0.0, +infinity]; + abs [entire] = [0.0, +infinity]; + abs [0.0, 0.0] = [0.0, 0.0]; + abs [0.0, +8.0] = [0.0, +8.0]; + abs [0.0, +infinity] = [0.0, +infinity]; + abs [0.0, +8.0] = [0.0, +8.0]; + abs [0.0, +infinity] = [0.0, +infinity]; + + // regular values + abs [0x123456789p-16, 0x123456799p-16] = [0x123456789p-16, 0x123456799p-16]; + abs [-0x123456789p-16, 0x123456799p-16] = [0.0, 0x123456799p-16]; +} + +testcase mpfi_acos { + // special values + acos [-1.0, 0.0] = [0x3243f6a8885a3p-49, 0x1921fb54442d19p-51]; + acos [0.0, 0.0] = [0x3243f6a8885a3p-49, 0x1921fb54442d19p-52]; + acos [0.0, +1.0] = [0.0, 0x1921fb54442d19p-52]; + + // regular values + acos [-1.0, -0.5] = [0x10c152382d7365p-51, 0x1921fb54442d19p-51]; + acos [-0.75, -0.25] = [0x1d2cf5c7c70f0bp-52, 0x4d6749be4edb1p-49]; + acos [-0.5, 0.5] = [0x10c152382d7365p-52, 0x860a91c16b9b3p-50]; + acos [0.25, 0.625] = [0x1ca94936b98a21p-53, 0x151700e0c14b25p-52]; + acos [-1.0, 1.0] = [0.0, 0x1921fb54442d19p-51]; +} + +testcase mpfi_acosh { + // special values + acosh [+1.0, +infinity] = [0.0, +infinity]; + acosh [+1.5, +infinity] = [0x1ecc2caec51609p-53, +infinity]; + + // regular values + acosh [1.0, 1.5] = [0.0, 0xf661657628b05p-52]; + acosh [1.5, 1.5] = [0x1ecc2caec51609p-53, 0xf661657628b05p-52]; + acosh [2.0, 1000.0] = [0x544909c66010dp-50, 0x799d4ba2a13b5p-48]; +} + +testcase mpfi_add { + // special values + add [-infinity, -7.0] [-1.0, +8.0] = [-infinity, +1.0]; + add [-infinity, 0.0] [+8.0, +infinity] = [entire]; + add [-infinity, +8.0] [0.0, +8.0] = [-infinity, +16.0]; + add [entire] [0.0, +8.0] = [entire]; + add [0.0, 0.0] [-infinity, -7.0] = [-infinity, -7.0]; + add [0.0, +8.0] [-7.0, 0.0] = [-7.0, +8.0]; + add [0.0, 0.0] [0.0, +8.0] = [0.0, +8.0]; + add [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + add [0.0, 0.0] [+8.0, +infinity] = [+8.0, +infinity]; + add [0.0, 0.0] [entire] = [entire]; + add [0.0, +8.0] [0.0, +8.0] = [0.0, +16.0]; + add [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + add [0.0, +infinity] [-7.0, +8.0] = [-7.0, +infinity]; + + // regular values + add [-0.375, -0x10187p-256] [-0.125, 0x1p-240] = [-0x1p-1, -0x187p-256]; + add [-0x1p-300, 0x123456p+28] [-0x10000000000000p-93, 0x789abcdp0] = [-0x10000000000001p-93, 0x123456789abcdp0]; + add [-4.0, +7.0] [-0x123456789abcdp-17, 3e300] = [-0x123456791abcdp-17, 0x8f596b3002c1bp+947]; + add [0x1000100010001p+8, 0x1p+60] [0x1000100010001p0, 3.0e300] = [+0x1010101010101p+8, 0x8f596b3002c1bp+947]; + + // signed zeros + add [+4.0, +8.0] [-4.0, -2.0] = [0.0, +6.0]; + add [+4.0, +8.0] [-9.0, -8.0] = [-5.0, 0.0]; +} + +testcase mpfi_add_d { + // special values + add [-infinity, -7.0] [-0x170ef54646d497p-107, -0x170ef54646d497p-107] = [-infinity, -7.0]; + add [-infinity, -7.0] [0.0, 0.0] = [-infinity, -7.0]; + add [-infinity, -7.0] [0x170ef54646d497p-107, 0x170ef54646d497p-107] = [-infinity, -0x1bffffffffffffp-50]; + add [-infinity, 0.0] [-0x170ef54646d497p-106, -0x170ef54646d497p-106] = [-infinity, -8.0e-17]; + add [-infinity, 0.0] [0.0, 0.0] = [-infinity, 0.0]; + add [-infinity, 0.0] [0x170ef54646d497p-106, 0x170ef54646d497p-106] = [-infinity, 0x170ef54646d497p-106]; + add [-infinity, 8.0] [-0x16345785d8a00000p0, -0x16345785d8a00000p0] = [-infinity, -0x16345785d89fff00p0]; + add [-infinity, 8.0] [0.0, 0.0] = [-infinity, 8.0]; + add [-infinity, 8.0] [0x16345785d8a00000p0, 0x16345785d8a00000p0] = [-infinity, 0x16345785d8a00100p0]; + add [entire] [-0x170ef54646d497p-105, -0x170ef54646d497p-105] = [entire]; + add [entire] [0.0e-17, 0.0e-17] = [entire]; + add [entire] [+0x170ef54646d497p-105, +0x170ef54646d497p-105] = [entire]; + + add [0.0, 0.0] [-0x170ef54646d497p-109, -0x170ef54646d497p-109] = [-0x170ef54646d497p-109, -0x170ef54646d497p-109]; + add [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + add [0.0, 0.0] [0x170ef54646d497p-109, 0x170ef54646d497p-109] = [0x170ef54646d497p-109, 0x170ef54646d497p-109]; + add [0.0, 8.0] [-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107] = [-0x114b37f4b51f71p-107, 8.0]; + add [0.0, 8.0] [0.0, 0.0] = [0.0, 8.0]; + add [0.0, 8.0] [0x114b37f4b51f7p-103, 0x114b37f4b51f7p-103] = [0x114b37f4b51f7p-103, 0x10000000000001p-49]; + add [0.0, +infinity] [-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104] = [-0x50b45a75f7e81p-104, +infinity]; + add [0.0, +infinity] [0.0, 0.0] = [0.0, +infinity]; + add [0.0, +infinity] [0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106] = [0x142d169d7dfa03p-106, +infinity]; + + // regular values + add [-32.0, -17.0] [-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47] = [-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47]; + add [-0xfb53d14aa9c2fp-47, -17.0] [0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47] = [0.0, 0x7353d14aa9c2fp-47]; + add [-32.0, -0xfb53d14aa9c2fp-48] [0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48] = [-0x104ac2eb5563d1p-48, 0.0]; + + add [0x123456789abcdfp-48, 0x123456789abcdfp-4] [3.5, 3.5] = [0x15b456789abcdfp-48, 0x123456789abd17p-4]; + add [0x123456789abcdfp-56, 0x123456789abcdfp-4] [3.5, 3.5] = [0x3923456789abcdp-52, 0x123456789abd17p-4]; + add [-0xffp0, 0x123456789abcdfp-52] [256.5, 256.5] = [0x18p-4, 0x101a3456789abdp-44]; + add [-0x1fffffffffffffp-52, -0x1p-550] [4097.5, 4097.5] = [0xfff8p-4, 0x10018p-4]; + + add [0x123456789abcdfp-48, 0x123456789abcdfp-4] [-3.5, -3.5] = [0xeb456789abcdfp-48, 0x123456789abca7p-4]; + add [0x123456789abcdfp-56, 0x123456789abcdfp-4] [-3.5, -3.5] = [-0x36dcba98765434p-52, 0x123456789abca7p-4]; + add [-0xffp0, 0x123456789abcdfp-52] [-256.5, -256.5] = [-0x1ff8p-4, -0xff5cba9876543p-44]; + add [-0x1fffffffffffffp-52, -0x1p-550] [-4097.5, -4097.5] = [-0x10038p-4, -0x10018p-4]; +} + +testcase mpfi_asin { + // special values + asin [-1.0, 0.0] = [-0x1921fb54442d19p-52, 0.0]; + asin [0.0, 0.0] = [0.0, 0.0]; + asin [0.0, +1.0] = [0.0, 0x1921fb54442d19p-52]; + + // regular values + asin [-1.0, -0.5] = [-0x1921fb54442d19p-52, -0x10c152382d7365p-53]; + asin [-0.75, -0.25] = [-0x1b235315c680ddp-53, -0x102be9ce0b87cdp-54]; + asin [-0.5, 0.5] = [-0x860a91c16b9b3p-52, 0x860a91c16b9b3p-52]; + asin [0.25, 0.625] = [0x102be9ce0b87cdp-54, 0x159aad71ced00fp-53]; + asin [-1.0, 1.0] = [-0x1921fb54442d19p-52, 0x1921fb54442d19p-52]; +} + +testcase mpfi_asinh { + // special values + asinh [-infinity, -7.0] = [-infinity, -0x152728c91b5f1dp-51]; + asinh [-infinity, 0.0] = [-infinity, 0.0]; + asinh [-infinity, +8.0] = [-infinity, 0x58d8dc657eaf5p-49]; + asinh [entire] = [entire]; + asinh [-1.0, 0.0] = [-0x1c34366179d427p-53, 0.0]; + asinh [0.0, 0.0] = [0.0, 0.0]; + asinh [0.0, +1.0] = [0.0, 0x1c34366179d427p-53]; + asinh [0.0, +8.0] = [0.0, 0x58d8dc657eaf5p-49]; + asinh [0.0, +infinity] = [0.0, +infinity]; + + // regular values + asinh [-6.0, -4.0] = [-0x4fbca919fe219p-49, -0x10c1f8a6e80eebp-51]; + asinh [-2.0, -0.5] = [-0x2e32430627a11p-49, -0x1ecc2caec51609p-54]; + asinh [-1.0, -0.5] = [-0x1c34366179d427p-53, -0x1ecc2caec51609p-54]; + asinh [-0.75, -0.25] = [-0x162e42fefa39fp-49, -0xfd67d91ccf31bp-54]; + asinh [-0.5, 0.5] = [-0xf661657628b05p-53, 0xf661657628b05p-53]; + asinh [0.25, 0.625] = [0xfd67d91ccf31bp-54, 0x4b89d40b2fecdp-51]; + asinh [-1.0, 1.0] = [-0x1c34366179d427p-53, 0x1c34366179d427p-53]; + asinh [0.125, 17.0] = [0xff5685b4cb4b9p-55, 0xe1be0ba541ef7p-50]; + asinh [17.0, 42.0] = [0x1c37c174a83dedp-51, 0x8dca6976ad6bdp-49]; + asinh [-42.0, 17.0] = [-0x8dca6976ad6bdp-49, 0xe1be0ba541ef7p-50]; +} + +testcase mpfi_atan { + // special values + atan [-infinity, -7.0] = [-0x1921fb54442d19p-52, -0x5b7315eed597fp-50]; + atan [-infinity, 0.0] = [-0x1921fb54442d19p-52, 0.0]; + atan [-infinity, +8.0] = [-0x1921fb54442d19p-52, 0xb924fd54cb511p-51]; + atan [entire] = [-0x1921fb54442d19p-52, 0x1921fb54442d19p-52]; + atan [-1.0, 0.0] = [-0x1921fb54442d19p-53, 0.0]; + atan [0.0, 0.0] = [0.0, 0.0]; + atan [0.0, +1.0] = [0.0, 0x1921fb54442d19p-53]; + atan [0.0, +8.0] = [0.0, 0xb924fd54cb511p-51]; + atan [0.0, +infinity] = [0.0, 0x1921fb54442d19p-52]; + + // regular values + atan [-6.0, -4.0] = [-0x167d8863bc99bdp-52, -0x54da32547a73fp-50]; + atan [-2.0, -0.5] = [-0x11b6e192ebbe45p-52, -0x1dac670561bb4fp-54]; + atan [-1.0, -0.5] = [-0x1921fb54442d19p-53, -0x1dac670561bb4fp-54]; + atan [-0.75, -0.25] = [-0xa4bc7d1934f71p-52, -0x1f5b75f92c80ddp-55]; + atan [-0.5, 0.5] = [-0x1dac670561bb5p-50, 0x1dac670561bb5p-50]; + atan [0.25, 0.625] = [0x1f5b75f92c80ddp-55, 0x47802eaf7bfadp-51]; + atan [-1.0, 1.0] = [-0x1921fb54442d19p-53, 0x1921fb54442d19p-53]; + atan [0.125, 17.0] = [0x1fd5ba9aac2f6dp-56, 0x1831516233f561p-52]; + atan [17.0, 42.0] = [0xc18a8b119fabp-47, 0x18c079f3350d27p-52]; + atan [-42.0, 17.0] = [-0x18c079f3350d27p-52, 0x1831516233f561p-52]; +} + +testcase mpfi_atan2 { + // special values + atan2 [-infinity, -7.0] [-1.0, +8.0] = [-0x6d9cc4b34bd0dp-50, -0x1700a7c5784633p-53]; + atan2 [-infinity, 0.0] [+8.0, +infinity] = [-0x1921fb54442d19p-52, 0.0]; + atan2 [-infinity, +8.0] [0.0, +8.0] = [-0x1921fb54442d19p-52, 0x1921fb54442d19p-52]; + atan2 [entire] [0.0, +8.0] = [-0x1921fb54442d19p-52, 0x1921fb54442d19p-52]; + atan2 [0.0, 0.0] [-infinity, -7.0] = [0x1921fb54442d18p-51, 0x1921fb54442d19p-51]; + atan2 [0.0, +8.0] [-7.0, 0.0] = [0x3243f6a8885a3p-49, 0x1921fb54442d19p-51]; + atan2 [0.0, 0.0] [0.0, +8.0] = [0.0, 0.0]; + atan2 [0.0, +infinity] [0.0, +8.0] = [0.0, 0x1921fb54442d19p-52]; + atan2 [0.0, 0.0] [+8.0, +infinity] = [0.0, 0.0]; + atan2 [0.0, 0.0] [entire] = [0.0, 0x1921fb54442d19p-51]; + atan2 [0.0, +8.0] [-7.0, +8.0] = [0.0, 0x1921fb54442d19p-51]; + atan2 [0.0, 0.0] [0.0, 0.0] = [empty]; + atan2 [0.0, +infinity] [0.0, +8.0] = [0.0, 0x1921fb54442d19p-52]; + + // regular values + atan2 [-17.0, -5.0] [-4002.0, -1.0] = [-0x191f6c4c09a81bp-51, -0x1a12a5465464cfp-52]; + atan2 [-17.0, -5.0] [1.0, 4002.0] = [-0x1831516233f561p-52, -0xa3c20ea13f5e5p-61]; + atan2 [5.0, 17.0] [1.0, 4002.0] = [0xa3c20ea13f5e5p-61, 0x1831516233f561p-52]; + atan2 [5.0, 17.0] [-4002.0, -1.0] = [0x1a12a5465464cfp-52, 0x191f6c4c09a81bp-51]; + atan2 [-17.0, 5.0] [-4002.0, 1.0] = [-0x1921fb54442d19p-51, 0x1921fb54442d19p-51]; +} + +testcase mpfi_atanh { + // special values + atanh [-1.0, 0.0] = [-infinity, 0.0]; + atanh [0.0, 0.0] = [0.0, 0.0]; + atanh [0.0, +1.0] = [0.0, +infinity]; + + // regular values + atanh [-1.0, -0.5] = [-infinity, -0x8c9f53d568185p-52]; + atanh [-0.75, -0.25] = [-0x3e44e55c64b4bp-50, -0x1058aefa811451p-54]; + atanh [-0.5, 0.5] = [-0x1193ea7aad030bp-53, 0x1193ea7aad030bp-53]; + atanh [0.25, 0.625] = [0x1058aefa811451p-54, 0x2eec3bb76c2b3p-50]; + atanh [-1.0, 1.0] = [entire]; + atanh [0.125, 1.0] = [0x1015891c9eaef7p-55, +infinity]; +} + +testcase mpfi_bounded_p { + // special values + isCommonInterval [-infinity, -8.0] = false; + isCommonInterval [-infinity, 0.0] = false; + isCommonInterval [-infinity, 5.0] = false; + isCommonInterval [entire] = false; + isCommonInterval [-8.0, 0.0] = true; + isCommonInterval [0.0, 0.0] = true; + isCommonInterval [0.0, 5.0] = true; + isCommonInterval [0.0, +infinity] = false; + isCommonInterval [5.0, +infinity] = false; + + // regular values + isCommonInterval [-34.0, -17.0] = true; + isCommonInterval [-8.0, -1.0] = true; + isCommonInterval [-34.0, 17.0] = true; + isCommonInterval [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = true; + isCommonInterval [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = true; + isCommonInterval [+8.0, +0x7fffffffffffbp+51] = true; + isCommonInterval [+0x1fffffffffffffp-53, 2.0] = true; +} + +testcase mpfi_cbrt { + // special values + cbrt [-infinity, -125.0] = [-infinity, -5.0]; + cbrt [-infinity, 0.0] = [-infinity, 0.0]; + cbrt [-infinity, +64.0] = [-infinity, +4.0]; + cbrt [entire] = [entire]; + cbrt [0.0, 0.0] = [0.0, 0.0]; + cbrt [0.0, +27.0] = [0.0, +3.0]; + cbrt [0.0, +infinity] = [0.0, +infinity]; + + // regular values + cbrt [0x40p0, 0x7dp0] = [4.0, 5.0]; + cbrt [-0x1856e4be527197p-354, 0xd8p0] = [-0x2e5e58c0083b7bp-154, 6.0]; + cbrt [0x141a9019a2184dp-1047, 0xc29c78c66ac0fp-678] = [0x2b8172e535d44dp-385, 0x24cbd1c55aaa1p-258]; +} + +testcase mpfi_cos { + // special values + cos [-infinity, -7.0] = [-1.0, 1.0]; + cos [-infinity, 0.0] = [-1.0, 1.0]; + cos [-infinity, +8.0] = [-1.0, 1.0]; + cos [entire] = [-1.0, 1.0]; + cos [-1.0, 0.0] = [0x114a280fb5068bp-53, 1.0]; + cos [0.0, 0.0] = [1.0, 1.0]; + cos [0.0, +1.0] = [0x114a280fb5068bp-53, 1.0]; + cos [0.0, +8.0] = [-1.0, 1.0]; + cos [0.0, +infinity] = [-1.0, 1.0]; + + // regular values + cos [-2.0, -0.5] = [-0x1aa22657537205p-54, 0x1c1528065b7d5p-49]; + cos [-1.0, -0.25] = [0x114a280fb5068bp-53, 0xf80aa4fbef751p-52]; + cos [-0.5, 0.5] = [0x1c1528065b7d4fp-53, 1.0]; + cos [-4.5, 0.625] = [-1.0, 1.0]; + cos [1.0, 0x3243f6a8885a3p-48] = [-1.0, 0x4528a03ed41a3p-51]; + cos [0.125, 17.0] = [-1.0, 1.0]; + cos [17.0, 42.0] = [-1.0, 1.0]; + + cos [-7.0, 1.0] = [-1.0, 1.0]; + cos [-7.0, 0.0] = [-1.0, 1.0]; + cos [-7.0, -1.0] = [-1.0, 1.0]; + cos [-7.0, -2.0] = [-1.0, 1.0]; + cos [-7.0, -3.0] = [-1.0, 1.0]; + cos [-7.0, -4.0] = [-0x14eaa606db24c1p-53, 1.0]; + cos [-7.0, -5.0] = [0x122785706b4ad9p-54, 1.0]; + cos [-7.0, -6.0] = [0x181ff79ed92017p-53, 1.0]; + cos [-7.0, -7.0] = [0x181ff79ed92017p-53, 0x181ff79ed92018p-53]; + + cos [-6.0, 1.0] = [-1.0, 1.0]; + cos [-6.0, 0.0] = [-1.0, 1.0]; + cos [-6.0, -1.0] = [-1.0, 0x1eb9b7097822f6p-53]; + cos [-6.0, -2.0] = [-1.0, 0x1eb9b7097822f6p-53]; + cos [-6.0, -3.0] = [-1.0, 0x1eb9b7097822f6p-53]; + cos [-6.0, -4.0] = [-0x14eaa606db24c1p-53, 0x1eb9b7097822f6p-53]; + cos [-6.0, -5.0] = [0x122785706b4ad9p-54, 0x1eb9b7097822f6p-53]; + cos [-6.0, -6.0] = [0x1eb9b7097822f5p-53, 0x1eb9b7097822f6p-53]; + + cos [-5.0, 1.0] = [-1.0, 1.0]; + cos [-5.0, 0.0] = [-1.0, 1.0]; + cos [-5.0, -1.0] = [-1.0, 0x114a280fb5068cp-53]; + cos [-5.0, -2.0] = [-1.0, 0x122785706b4adap-54]; + cos [-5.0, -3.0] = [-1.0, 0x122785706b4adap-54]; + cos [-5.0, -4.0] = [-0x14eaa606db24c1p-53, 0x122785706b4adap-54]; + cos [-5.0, -5.0] = [0x122785706b4ad9p-54, 0x122785706b4adap-54]; + + cos [-4.0, 1.0] = [-1.0, 1.0]; + cos [-4.0, 0.0] = [-1.0, 1.0]; + cos [-4.0, -1.0] = [-1.0, 0x114a280fb5068cp-53]; + cos [-4.0, -2.0] = [-1.0, -0x1aa22657537204p-54]; + cos [-4.0, -3.0] = [-1.0, -0x14eaa606db24c0p-53]; + cos [-4.0, -4.0] = [-0x14eaa606db24c1p-53, -0x14eaa606db24c0p-53]; +} + +testcase mpfi_cosh { + // special values + cosh [-infinity, -7.0] = [0x11228949ba3a8bp-43, +infinity]; + cosh [-infinity, 0.0] = [1.0, +infinity]; + cosh [-infinity, +8.0] = [1.0, +infinity]; + cosh [entire] = [1.0, +infinity]; + cosh [-1.0, 0.0] = [1.0, 0x18b07551d9f551p-52]; + cosh [0.0, 0.0] = [1.0, 1.0]; + cosh [0.0, +1.0] = [1.0, 0x18b07551d9f551p-52]; + cosh [0.0, +8.0] = [1.0, 0x1749eaa93f4e77p-42]; + cosh [0.0, +infinity] = [1.0, +infinity]; + + // regular values + cosh [-0.125, 0.0] = [1.0, 0x10200aac16db6fp-52]; + cosh [0.0, 0x10000000000001p-53] = [1.0, 0x120ac1862ae8d1p-52]; + cosh [-4.5, -0.625] = [0x99d310a496b6dp-51, 0x1681ceb0641359p-47]; + cosh [1.0, 3.0] = [0x18b07551d9f55p-48, 0x1422a497d6185fp-49]; + cosh [17.0, 0xb145bb71d3dbp-38] = [0x1709348c0ea503p-29, 0x3ffffffffffa34p+968]; +} + +testcase mpfi_cot { + // special values + cot [-infinity, -7.0] = [entire]; + cot [-infinity, 0.0] = [entire]; + cot [-infinity, +8.0] = [entire]; + cot [entire] = [entire]; + cot [-8.0, 0.0] = [entire]; + cot [-3.0, 0.0] = [-infinity, 0xe07cf2eb32f0bp-49]; + cot [-1.0, 0.0] = [-infinity, -0x148c05d04e1cfdp-53]; + cot [0.0, +1.0] = [0x148c05d04e1cfdp-53, +infinity]; + cot [0.0, +3.0] = [-0xe07cf2eb32f0bp-49, +infinity]; + cot [0.0, +8.0] = [entire]; + cot [0.0, +infinity] = [entire]; + + // regular values + cot [-3.0, -2.0] = [0x1d4a42e92faa4dp-54, 0xe07cf2eb32f0bp-49]; + cot [-3.0, -0x1921fb54442d19p-52] = [0x5cb3b399d747fp-103, 0xe07cf2eb32f0bp-49]; + cot [-2.0, 0x1921fb54442d19p-52] = [entire]; + cot [0.125, 0.5] = [0xea4d6bf23e051p-51, 0x1fd549f047f2bbp-50]; + cot [0.125, 0x1921fb54442d19p-52] = [-0x172cece675d1fdp-105, 0x1fd549f047f2bbp-50]; + cot [0x1921fb54442d19p-52, 4.0] = [entire]; + cot [4.0, 0x3243f6a8885a3p-47] = [-0x1d02967c31cdb5p-1, 0x1ba35ba1c6b75dp-53]; + cot [0x13a28c59d5433bp-44, 0x9d9462ceaa19dp-43] = [0x148c05d04e1fb7p-53, 0x1cefdde7c84c27p-4]; +} + +testcase mpfi_coth { + // special values + coth [-infinity, -7.0] = [-0x100001be6c882fp-52, -1.0]; + coth [-infinity, 0.0] = [-infinity, -1.0]; + coth [-infinity, +8.0] = [entire]; + coth [entire] = [entire]; + coth [-8.0, 0.0] = [-infinity, -0x1000003c6ab7e7p-52]; + coth [-3.0, 0.0] = [-infinity, -0x10145b3cc9964bp-52]; + coth [-1.0, 0.0] = [-infinity, -0x150231499b6b1dp-52]; + coth [0.0, 0.0] = [empty]; + coth [0.0, +1.0] = [0x150231499b6b1dp-52, +infinity]; + coth [0.0, +3.0] = [0x10145b3cc9964bp-52, +infinity]; + coth [0.0, +8.0] = [0x1000003c6ab7e7p-52, +infinity]; + coth [0.0, +infinity] = [1.0, +infinity]; + + // regular values + coth [-3.0, 2.0] = [entire]; + coth [-10.0, -8.0] = [-0x1000003c6ab7e8p-52, -0x100000011b4865p-52]; + coth [7.0, 17.0] = [0x1000000000000fp-52, 0x100001be6c882fp-52]; + coth [0x10000000000001p-58, 0x10000000000001p-53] = [0x114fc6ceb099bdp-51, 0x10005554fa502fp-46]; +} + +testcase mpfi_csc { + // special values + csc [-infinity, -7.0] = [entire]; + csc [-infinity, 0.0] = [entire]; + csc [-infinity, 8.0] = [entire]; + csc [entire] = [entire]; + csc [-8.0, 0.0] = [entire]; + csc [-3.0, 0.0] = [-infinity, -1.0]; + + csc [-1.0, 0.0] = [-infinity, -0x1303aa9620b223p-52]; + + csc [0.0, 0.0] = [empty]; + + csc [0.0, +1.0] = [0x1303aa9620b223p-52, +infinity]; + + csc [0.0, 3.0] = [1.0, +infinity]; + csc [0.0, 8.0] = [entire]; + csc [0.0, +infinity] = [entire]; + + // regular values + csc [-6.0, 7.0] = [entire]; + csc [-6.0, 6.0] = [entire]; + csc [-6.0, 5.0] = [entire]; + csc [-6.0, 4.0] = [entire]; + csc [-6.0, 3.0] = [entire]; + csc [-6.0, 2.0] = [entire]; + csc [-6.0, 1.0] = [entire]; + csc [-6.0, 0.0] = [entire]; + csc [-6.0, -1.0] = [entire]; + csc [-6.0, -2.0] = [entire]; + csc [-6.0, -3.0] = [entire]; + csc [-6.0, -4.0] = [1.0, 0x1ca19615f903dap-51]; + csc [-6.0, -5.0] = [0x10af73f9df86b7p-52, 0x1ca19615f903dap-51]; + csc [-6.0, -6.0] = [0x1ca19615f903d9p-51, 0x1ca19615f903dap-51]; + + csc [-5.0, 7.0] = [entire]; + csc [-5.0, 6.0] = [entire]; + csc [-5.0, 5.0] = [entire]; + csc [-5.0, 4.0] = [entire]; + csc [-5.0, 3.0] = [entire]; + csc [-5.0, 2.0] = [entire]; + csc [-5.0, 1.0] = [entire]; + csc [-5.0, 0.0] = [entire]; + csc [-5.0, -1.0] = [entire]; + csc [-5.0, -2.0] = [entire]; + csc [-5.0, -3.0] = [entire]; + csc [-5.0, -4.0] = [1.0, 0x15243e8b2f4642p-52]; + csc [-5.0, -5.0] = [0x10af73f9df86b7p-52, 0x10af73f9df86b8p-52]; + + csc [-4.0, 7.0] = [entire]; + csc [-4.0, 6.0] = [entire]; + csc [-4.0, 5.0] = [entire]; + csc [-4.0, 4.0] = [entire]; + csc [-4.0, 3.0] = [entire]; + csc [-4.0, 2.0] = [entire]; + csc [-4.0, 1.0] = [entire]; + csc [-4.0, 0.0] = [entire]; + csc [-4.0, -1.0] = [entire]; + csc [-4.0, -2.0] = [entire]; + csc [-4.0, -3.0] = [entire]; + csc [-4.0, -4.0] = [0x15243e8b2f4641p-52, 0x15243e8b2f4642p-52]; + + csc [-3.0, 7.0] = [entire]; + csc [-3.0, 6.0] = [entire]; + csc [-3.0, 5.0] = [entire]; + csc [-3.0, 4.0] = [entire]; + csc [-3.0, 3.0] = [entire]; + csc [-3.0, 2.0] = [entire]; + csc [-3.0, 1.0] = [entire]; + csc [-3.0, 0.0] = [-infinity, -1.0]; + csc [-3.0, -1.0] = [-0x1c583c440ab0dap-50, -1.0]; + csc [-3.0, -2.0] = [-0x1c583c440ab0dap-50, -0x119893a272f912p-52]; + csc [-3.0, -3.0] = [-0x1c583c440ab0dap-50, -0x1c583c440ab0d9p-50]; + + csc [-2.0, 7.0] = [entire]; + csc [-2.0, 6.0] = [entire]; + csc [-2.0, 5.0] = [entire]; + csc [-2.0, 4.0] = [entire]; + csc [-2.0, 3.0] = [entire]; + csc [-2.0, 2.0] = [entire]; + csc [-2.0, 1.0] = [entire]; + csc [-2.0, 0.0] = [-infinity, -1.0]; + csc [-2.0, -1.0] = [-0x1303aa9620b224p-52, -1.0]; + csc [-2.0, -2.0] = [-0x119893a272f913p-52, -0x119893a272f912p-52]; + + csc [-1.0, 7.0] = [entire]; + csc [-1.0, 6.0] = [entire]; + csc [-1.0, 5.0] = [entire]; + csc [-1.0, 4.0] = [entire]; + csc [-1.0, 3.0] = [entire]; + csc [-1.0, 2.0] = [entire]; + csc [-1.0, 1.0] = [entire]; + csc [-1.0, 0.0] = [-infinity, -0x1303aa9620b223p-52]; + csc [-1.0, -1.0] = [-0x1303aa9620b224p-52, -0x1303aa9620b223p-52]; + + csc [1.0, 7.0] = [entire]; + csc [1.0, 6.0] = [entire]; + csc [1.0, 5.0] = [entire]; + csc [1.0, 4.0] = [entire]; + csc [1.0, 3.0] = [1.0, 0x1c583c440ab0dap-50]; + csc [1.0, 2.0] = [1.0, 0x1303aa9620b224p-52]; + csc [1.0, 1.0] = [0x1303aa9620b223p-52, 0x1303aa9620b224p-52]; + + csc [2.0, 7.0] = [entire]; + csc [2.0, 6.0] = [entire]; + csc [2.0, 5.0] = [entire]; + csc [2.0, 4.0] = [entire]; + csc [2.0, 3.0] = [0x119893a272f912p-52, 0x1c583c440ab0dap-50]; + csc [2.0, 2.0] = [0x119893a272f912p-52, 0x119893a272f913p-52]; + + csc [3.0, 7.0] = [entire]; + csc [3.0, 6.0] = [entire]; + csc [3.0, 5.0] = [entire]; + csc [3.0, 4.0] = [entire]; + csc [3.0, 3.0] = [0x1c583c440ab0d9p-50, 0x1c583c440ab0dap-50]; + + csc [4.0, 7.0] = [entire]; + csc [4.0, 6.0] = [-0x1ca19615f903dap-51, -1.0]; + csc [4.0, 5.0] = [-0x15243e8b2f4642p-52, -1.0]; + csc [4.0, 4.0] = [-0x15243e8b2f4642p-52, -0x15243e8b2f4641p-52]; + + csc [5.0, 7.0] = [entire]; + csc [5.0, 6.0] = [-0x1ca19615f903dap-51, -0x10af73f9df86b7p-52]; + csc [5.0, 5.0] = [-0x10af73f9df86b8p-52, -0x10af73f9df86b7p-52]; + + csc [6.0, 7.0] = [entire]; + csc [6.0, 6.0] = [-0x1ca19615f903dap-51, -0x1ca19615f903d9p-51]; + + csc [7.0, 7.0] = [+0x185a86a4ceb06cp-52, +0x185a86a4ceb06dp-52]; +} + +testcase mpfi_csch { + // special values + csch [-infinity, -7.0] = [-0x1de16d3cffcd54p-62, 0.0]; + csch [-infinity, 0.0] = [-infinity, 0.0]; + csch [-infinity, +8.0] = [entire]; + csch [entire] = [entire]; + csch [-8.0, 0.0] = [-infinity, -0x15fc212d92371ap-63]; + csch [-3.0, 0.0] = [-infinity, -0x198de80929b901p-56]; + csch [-1.0, 0.0] = [-infinity, -0x1b3ab8a78b90c0p-53]; + csch [0.0, 0.0] = [empty]; + csch [0.0, +1.0] = [0x1b3ab8a78b90c0p-53, +infinity]; + csch [0.0, +3.0] = [0x198de80929b901p-56, +infinity]; + csch [0.0, +8.0] = [0x15fc212d92371ap-63, +infinity]; + csch [0.0, +infinity] = [0.0, +infinity]; + + // regular values + csch [-3.0, 2.0] = [entire]; + csch [-10.0, -8.0] = [-0x15fc212d92371bp-63, -0x17cd79b63733a0p-66]; + csch [7.0, 17.0] = [0x1639e3175a68a7p-76, 0x1de16d3cffcd54p-62]; + csch [0x10000000000001p-58, 0x10000000000001p-53] = [0x1eb45dc88defeap-52, 0x3fff555693e722p-48]; +} + +testcase mpfi_d_div { + // special values + div [-0x170ef54646d496p-107, -0x170ef54646d496p-107] [-infinity, -7.0] = [0.0, 0x1a5a3ce29a1787p-110]; + div [0.0, 0.0] [-infinity, -7.0] = [0.0, 0.0]; + div [0x170ef54646d496p-107, 0x170ef54646d496p-107] [-infinity, -7.0] = [-0x1a5a3ce29a1787p-110, 0.0]; + div [-0x170ef54646d497p-106, -0x170ef54646d497p-106] [-infinity, 0.0] = [0.0, +infinity]; + div [0.0, 0.0] [-infinity, 0.0] = [0.0, 0.0]; + div [0x170ef54646d497p-106, 0x170ef54646d497p-106] [-infinity, 0.0] = [-infinity, 0.0]; + div [-0x16345785d8a00000p0, -0x16345785d8a00000p0] [-infinity, 8.0] = [entire]; + div [0.0, 0.0] [-infinity, 8.0] = [0.0, 0.0]; + div [0x16345785d8a00000p0, 0x16345785d8a00000p0] [-infinity, 8.0] = [entire]; + div [-0x170ef54646d497p-105, -0x170ef54646d497p-105] [entire] = [entire]; + div [0.0e-17, 0.0e-17] [entire] = [0.0, 0.0]; + div [+0x170ef54646d497p-105, +0x170ef54646d497p-105] [entire] = [entire]; + div [-0x170ef54646d497p-109, -0x170ef54646d497p-109] [0.0, 0.0] = [empty]; + div [0.0, 0.0] [0.0, 0.0] = [empty]; + div [0x170ef54646d497p-109, 0x170ef54646d497p-109] [0.0, 0.0] = [empty]; + div [-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107] [0.0, 7.0] = [-infinity, -0x13c3ada9f391a5p-110]; + div [0.0, 0.0] [0.0, 7.0] = [0.0, 0.0]; + div [0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107] [0.0, 7.0] = [0x13c3ada9f391a5p-110, +infinity]; + div [-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104] [0.0, +infinity] = [-infinity, 0.0]; + div [0.0, 0.0] [0.0, +infinity] = [0.0, 0.0]; + div [0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106] [0.0, +infinity] = [0.0, +infinity]; + + // regular values + div [-2.5, -2.5] [-8.0, 8.0] = [entire]; + + div [-2.5, -2.5] [-8.0, -5.0] = [0x5p-4, 0.5]; + div [-2.5, -2.5] [25.0, 40.0] = [-0x1999999999999ap-56, -0x1p-4]; + div [-2.5, -2.5] [-16.0, -7.0] = [0x5p-5, 0x16db6db6db6db7p-54]; + div [-2.5, -2.5] [11.0, 143.0] = [-0x1d1745d1745d18p-55, -0x11e6efe35b4cfap-58]; + + div [33.125, 33.125] [8.28125, 530.0] = [0x1p-4, 4.0]; + div [33.125, 33.125] [-530.0, -496.875] = [-0x11111111111112p-56, -0x1p-4]; + div [33.125, 33.125] [54.0, 265.0] = [0.125, 0x13a12f684bda13p-53]; + div [33.125, 33.125] [52.0, 54.0] = [0x13a12f684bda12p-53, 0x14627627627628p-53]; +} + +testcase mpfi_diam_abs { + // special values + wid [-infinity, -8.0] = +infinity; + wid [-infinity, 0.0] = +infinity; + wid [-infinity, 5.0] = +infinity; + wid [entire] = +infinity; + wid [-infinity, 0.0] = +infinity; + wid [-8.0, 0.0] = +8; + wid [0.0, 0.0] = 0; + wid [0.0, 5.0] = +5; + wid [0.0, +infinity] = +infinity; + + // regular values + wid [-34.0, -17.0] = 17; +} + +testcase mpfi_div { + // special values + div [-infinity, -7.0] [-1.0, +8.0] = [entire]; + div [-infinity, 0.0] [+8.0, +infinity] = [-infinity, 0.0]; + div [-infinity, +8.0] [0.0, +8.0] = [entire]; + div [entire] [0.0, +8.0] = [entire]; + div [0.0, 0.0] [-infinity, -7.0] = [0.0, 0.0]; + div [0.0, +8.0] [-7.0, 0.0] = [-infinity, 0.0]; + div [0.0, 0.0] [0.0, +8.0] = [0.0, 0.0]; + div [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + div [0.0, 0.0] [+8.0, +infinity] = [0.0, 0.0]; + div [0.0, 0.0] [entire] = [0.0, 0.0]; + div [0.0, +8.0] [-7.0, +8.0] = [entire]; + div [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + + // regular value + div [-0x75bcd15p0, -0x754ep0] [-0x11ep0, -0x9p0] = [0x69p0, 0xd14fadp0]; + div [-0x75bcd15p0, -0x1.489c07caba163p-4] [-0x2.e8e36e560704ap+4, -0x9p0] = [0x7.0ef61537b1704p-12, 0xd14fadp0]; + div [-0x1.02f0415f9f596p+0, -0x754ep-16] [-0x11ep0, -0x7.62ce64fbacd2cp-8] = [0x69p-16, 0x2.30ee5eef9c36cp+4]; + div [-0x1.02f0415f9f596p+0, -0x1.489c07caba163p-4] [-0x2.e8e36e560704ap+0, -0x7.62ce64fbacd2cp-8] = [0x7.0ef61537b1704p-8, 0x2.30ee5eef9c36cp+4]; + div [-0xacbp+256, -0x6f9p0] [-0x7p0, 0.0] = [0xffp0, +infinity]; + div [-0x100p0, -0xe.bb80d0a0824ep-4] [-0x1.7c6d760a831fap+0, 0.0] = [0x9.e9f24790445fp-4, +infinity]; + div [-0x1.25f2d73472753p+0, -0x9.9a19fd3c1fc18p-4] [-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4] = [entire]; + div [-100.0, -15.0] [0.0, +3.0] = [-infinity, -5.0]; + div [-2.0, -0x1.25f2d73472753p+0] [0.0, +0x9.3b0c8074ccc18p-4] = [-infinity, -0x1.fd8457415f917p+0]; + div [-0x123456789p0, -0x754ep+4] [0x40bp0, 0x11ep+4] = [-0x480b3bp0, -0x69p0]; + div [-0xd.67775e4b8588p-4, -0x754ep-53] [0x4.887091874ffc8p+0, 0x11ep+201] = [-0x2.f5008d2df94ccp-4, -0x69p-254]; + div [-0x123456789p0, -0x1.b0a62934c76e9p+0] [0x40bp-17, 0x2.761ec797697a4p-4] = [-0x480b3bp+17, -0xa.fc5e7338f3e4p+0]; + div [-0xd.67775e4b8588p+0, -0x1.b0a62934c76e9p+0] [0x4.887091874ffc8p-4, 0x2.761ec797697a4p+4] = [-0x2.f5008d2df94ccp+4, -0xa.fc5e7338f3e4p-8]; + + div [-0x75bcd15p0, 0.0] [-0x90p0, -0x9p0] = [0.0, 0xd14fadp0]; + div [-0x1.4298b2138f2a7p-4, 0.0] [-0x1p-8, -0xf.5e4900c9c19fp-12] = [0.0, 0x1.4fdb41a33d6cep+4]; + div [-0xeeeeeeeeep0, 0.0] [-0xaaaaaaaaap0, 0.0] = [0.0, +infinity]; + div [-0x1.25f2d73472753p+0, 0.0] [-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4] = [entire]; + div [-0xeeeeeeeeep0, 0.0] [0.0, +0x3p0] = [-infinity, 0.0]; + div [-0x75bcd15p0, 0.0] [0x9p0, 0x90p0] = [-0xd14fadp0, 0.0]; + div [-0x1.4298b2138f2a7p-4, 0.0] [0xf.5e4900c9c19fp-12, 0x9p0] = [-0x1.4fdb41a33d6cep+4, 0.0]; + + div [-0x75bcd15p0, 0xa680p0] [-0xaf6p0, -0x9p0] = [-0x1280p0, 0xd14fadp0]; + div [-0x12p0, 0x10p0] [-0xbbbbbbbbbbp0, -0x9p0] = [-0x1.c71c71c71c71dp0, 2.0]; + div [-0x1p0, 0x754ep-16] [-0xccccccccccp0, -0x11ep0] = [-0x69p-16, 0xe.525982af70c9p-12]; + div [-0xb.5b90b4d32136p-4, 0x6.e694ac6767394p+0] [-0xdddddddddddp0, -0xc.f459be9e80108p-4] = [-0x8.85e40b3c3f63p+0, 0xe.071cbfa1de788p-4]; + div [-0xacbp+256, 0x6f9p0] [-0x7p0, 0.0] = [entire]; + div [-0x1.25f2d73472753p+0, +0x9.9a19fd3c1fc18p-4] [-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4] = [entire]; + div [0.0, +15.0] [-3.0, +3.0] = [entire]; + div [-0x754ep0, 0xd0e9dc4p+12] [0x11ep0, 0xbbbp0] = [-0x69p0, 0xbaffep+12]; + div [-0x10p0, 0xd0e9dc4p+12] [0x11ep0, 0xbbbp0] = [-0xe.525982af70c9p-8, 0xbaffep+12]; + div [-0x754ep0, 0x1p+10] [0x11ep0, 0xbbbp0] = [-0x69p0, 0xe.525982af70c9p-2]; + div [-0x1.18333622af827p+0, 0x2.14b836907297p+0] [0x1.263147d1f4bcbp+0, 0x111p0] = [-0xf.3d2f5db8ec728p-4, 0x1.cf8fa732de129p+0]; + + div [0.0, 0x75bcd15p0] [-0xap0, -0x9p0] = [-0xd14fadp0, 0.0]; + div [0.0, 0x1.acbf1702af6edp+0] [-0x0.fp0, -0xe.3d7a59e2bdacp-4] = [-0x1.e1bb896bfda07p+0, 0.0]; + div [0.0, 0xap0] [-0x9p0, 0.0] = [-infinity, 0.0]; + div [0.0, 0xap0] [-1.0, +1.0] = [entire]; + div [0.0, 0x75bcd15p0] [+0x9p0, +0xap0] = [0.0, 0xd14fadp0]; + div [0.0, 0x1.5f6b03dc8c66fp+0] [+0x2.39ad24e812dcep+0, 0xap0] = [0.0, 0x9.deb65b02baep-4]; + + div [0x754ep0, 0x75bcd15p0] [-0x11ep0, -0x9p0] = [-0xd14fadp0, -0x69p0]; + div [0x754ep-16, 0x1.008a3accc766dp+4] [-0x11ep0, -0x2.497403b31d32ap+0] = [-0x7.02d3edfbc8b6p+0, -0x69p-16]; + div [0x9.ac412ff1f1478p-4, 0x75bcd15p0] [-0x1.5232c83a0e726p+4, -0x9p0] = [-0xd14fadp0, -0x7.52680a49e5d68p-8]; + div [0xe.1552a314d629p-4, 0x1.064c5adfd0042p+0] [-0x5.0d4d319a50b04p-4, -0x2.d8f51df1e322ep-4] = [-0x5.c1d97d57d81ccp+0, -0x2.c9a600c455f5ap+0]; + div [0x754ep0, 0xeeeep0] [-0x11ep0, 0.0] = [-infinity, -0x69p0]; + div [0x1.a9016514490e6p-4, 0xeeeep0] [-0xe.316e87be0b24p-4, 0.0] = [-infinity, -0x1.df1cc82e6a583p-4]; + div [5.0, 6.0] [-0x5.0d4d319a50b04p-4, 0x2.d8f51df1e322ep-4] = [entire]; + div [0x754ep0, +0xeeeeep0] [0.0, +0x11ep0] = [0x69p0, +infinity]; + div [0x1.7f03f2a978865p+0, 0xeeeeep0] [0.0, 0x1.48b08624606b9p+0] = [0x1.2a4fcda56843p+0, +infinity]; + div [0x5efc1492p0, 0x1ba2dc763p0] [0x2fdd1fp0, 0x889b71p0] = [0xb2p0, 0x93dp0]; + div [0x1.d7c06f9ff0706p-8, 0x1ba2dc763p0] [0x2fdd1fp-20, 0xe.3d7a59e2bdacp+0] = [0x2.120d75be74b54p-12, 0x93dp+20]; + div [0x5.efc1492p-4, 0x1.008a3accc766dp+0] [0x2.497403b31d32ap+0, 0x8.89b71p+0] = [0xb.2p-8, 0x7.02d3edfbc8b6p-4]; + div [0x8.440e7d65be6bp-8, 0x3.99982e9eae09ep+0] [0x8.29fa8d0659e48p-4, 0xc.13d2fd762e4a8p-4] = [0xa.f3518768b206p-8, 0x7.0e2acad54859cp+0]; +} + +testcase mpfi_div_d { + // special values + div [-infinity, -7.0] [-7.0, -7.0] = [1.0, +infinity]; + div [-infinity, -7.0] [0.0, 0.0] = [empty]; + div [-infinity, -7.0] [7.0, 7.0] = [-infinity, -1.0]; + div [-infinity, 0.0] [-0x170ef54646d497p-106, -0x170ef54646d497p-106] = [0.0, +infinity]; + div [-infinity, 0.0] [0x170ef54646d497p-106, 0x170ef54646d497p-106] = [-infinity, 0.0]; + div [-infinity, 8.0] [-3.0, -3.0] = [-0x15555555555556p-51, +infinity]; + div [-infinity, 8.0] [0.0, 0.0] = [empty]; + div [-infinity, 8.0] [3.0, 3.0] = [-infinity, 0x15555555555556p-51]; + div [entire] [-0x170ef54646d497p-105, -0x170ef54646d497p-105] = [entire]; + div [entire] [0.0e-17, 0.0e-17] = [empty]; + div [entire] [+0x170ef54646d497p-105, +0x170ef54646d497p-105] = [entire]; + div [0.0, 0.0] [-0x170ef54646d497p-109, -0x170ef54646d497p-109] = [0.0, 0.0]; + div [0.0, 0.0] [0x170ef54646d497p-109, 0x170ef54646d497p-109] = [0.0, 0.0]; + div [0.0, 8.0] [-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107] = [-0x1d9b1f5d20d556p+5, 0.0]; + div [0.0, 8.0] [0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107] = [0.0, 0x1d9b1f5d20d556p+5]; + div [0.0, +infinity] [-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104] = [-infinity, 0.0]; + div [0.0, +infinity] [0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106] = [0.0, +infinity]; + + // regular values + div [-0x10000000000001p-20, -0x10000000000001p-53] [-1.0, -1.0] = [0x10000000000001p-53, 0x10000000000001p-20]; + div [-0x10000000000002p-20, -0x10000000000001p-53] [0x10000000000001p-53, 0x10000000000001p-53] = [-0x10000000000001p-19, -1.0]; + div [-0x10000000000001p-20, -0x10000020000001p-53] [0x10000000000001p-53, 0x10000000000001p-53] = [-0x1p+33, -0x1000001fffffffp-52]; + div [-0x10000000000002p-20, -0x10000020000001p-53] [0x10000000000001p-53, 0x10000000000001p-53] = [-0x10000000000001p-19, -0x1000001fffffffp-52]; + + div [-0x123456789abcdfp-53, 0x123456789abcdfp-7] [-0x123456789abcdfp0, -0x123456789abcdfp0] = [-0x1p-7, 0x1p-53]; + div [-0x123456789abcdfp-53, 0x10000000000001p-53] [-0x123456789abcdfp0, -0x123456789abcdfp0] = [-0x1c200000000002p-106, 0x1p-53]; + div [-1.0, 0x123456789abcdfp-7] [-0x123456789abcdfp0, -0x123456789abcdfp0] = [-0x1p-7, 0x1c200000000001p-105]; + div [-1.0, 0x10000000000001p-53] [-0x123456789abcdfp0, -0x123456789abcdfp0] = [-0x1c200000000002p-106, 0x1c200000000001p-105]; +} + +testcase mpfi_d_sub { + // special values + sub [-0x170ef54646d497p-107, -0x170ef54646d497p-107] [-infinity, -7.0] = [0x1bffffffffffffp-50, +infinity]; + sub [0.0, 0.0] [-infinity, -7.0] = [7.0, +infinity]; + sub [0x170ef54646d497p-107, 0x170ef54646d497p-107] [-infinity, -7.0] = [7.0, +infinity]; + sub [-0x170ef54646d497p-96, -0x170ef54646d497p-96] [-infinity, 0.0] = [-0x170ef54646d497p-96, +infinity]; + sub [0.0, 0.0] [-infinity, 0.0] = [0.0, +infinity]; + sub [0x170ef54646d497p-96, 0x170ef54646d497p-96] [-infinity, 0.0] = [0x170ef54646d497p-96, +infinity]; + sub [-0x16345785d8a00000p0, -0x16345785d8a00000p0] [-infinity, 8.0] = [-0x16345785d8a00100p0, +infinity]; + sub [0.0, 0.0] [-infinity, 8.0] = [-8.0, +infinity]; + sub [0x16345785d8a00000p0, 0x16345785d8a00000p0] [-infinity, 8.0] = [0x16345785d89fff00p0, +infinity]; + sub [-0x170ef54646d497p-105, -0x170ef54646d497p-105] [entire] = [entire]; + sub [0.0e-17, 0.0e-17] [entire] = [entire]; + sub [0x170ef54646d497p-105, 0x170ef54646d497p-105] [entire] = [entire]; + sub [-0x170ef54646d497p-109, -0x170ef54646d497p-109] [0.0, 0.0] = [-0x170ef54646d497p-109, -0x170ef54646d497p-109]; + sub [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + sub [0x170ef54646d497p-109, 0x170ef54646d497p-109] [0.0, 0.0] = [0x170ef54646d497p-109, 0x170ef54646d497p-109]; + sub [-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107] [0.0, 8.0] = [-0x10000000000001p-49, -0x114b37f4b51f71p-107]; + sub [0.0, 0.0] [0.0, 8.0] = [-8.0, 0.0]; + sub [0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107] [0.0, 8.0] = [-8.0, 0x114b37f4b51f71p-107]; + sub [-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104] [0.0, +infinity] = [-infinity, -0x50b45a75f7e81p-104]; + sub [0.0, 0.0] [0.0, +infinity] = [-infinity, 0.0]; + sub [-0x142d169d7dfa03p-106, -0x142d169d7dfa03p-106] [0.0, +infinity] = [-infinity, -0x142d169d7dfa03p-106]; + + // regular values + sub [-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47] [17.0, 32.0] = [-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47]; + sub [0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47] [17.0, 0xfb53d14aa9c2fp-47] = [0.0, 0x7353d14aa9c2fp-47]; + sub [0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48] [0xfb53d14aa9c2fp-48, 32.0] = [-0x104ac2eb5563d1p-48, 0.0]; + + sub [3.5, 3.5] [-0x123456789abcdfp-4, -0x123456789abcdfp-48] = [0x15b456789abcdfp-48, 0x123456789abd17p-4]; + sub [3.5, 3.5] [-0x123456789abcdfp-4, -0x123456789abcdfp-56] = [0x3923456789abcdp-52, 0x123456789abd17p-4]; + sub [256.5, 256.5] [-0x123456789abcdfp-52, 0xffp0] = [0x18p-4, 0x101a3456789abdp-44]; + sub [4097.5, 4097.5] [0x1p-550, 0x1fffffffffffffp-52] = [0xfff8p-4, 0x10018p-4]; + + sub [-3.5, -3.5] [-0x123456789abcdfp-4, -0x123456789abcdfp-48] = [0xeb456789abcdfp-48, 0x123456789abca7p-4]; + sub [-3.5, -3.5] [-0x123456789abcdfp-4, -0x123456789abcdfp-56] = [-0x36dcba98765434p-52, 0x123456789abca7p-4]; + sub [-256.5, -256.5] [-0x123456789abcdfp-52, 0xffp0] = [-0x1ff8p-4, -0xff5cba9876543p-44]; + sub [-4097.5, -4097.5] [0x1p-550, 0x1fffffffffffffp-52] = [-0x10038p-4, -0x10018p-4]; +} + +testcase mpfi_exp { + // special values + exp [-infinity, -7.0] = [0.0, 0x1de16b9c24a98fp-63]; + exp [-infinity, 0.0] = [0.0, 1.0]; + exp [-infinity, +1.0] = [0.0, 0x15bf0a8b14576ap-51]; + exp [entire] = [0.0, +infinity]; + exp [0.0, 0.0] = [1.0, 1.0]; + exp [0.0, +1.0] = [1.0, 0x15bf0a8b14576ap-51]; + exp [0.0, +infinity] = [1.0, +infinity]; + + // regular values + exp [-123.0, -17.0] = [0x1766b45dd84f17p-230, 0x1639e3175a689dp-77]; + exp [-0.125, 0.25] = [0x1c3d6a24ed8221p-53, 0x148b5e3c3e8187p-52]; + exp [-0.125, 0.0] = [0x1c3d6a24ed8221p-53, 1.0]; + exp [0.0, 0.25] = [1.0, 0x148b5e3c3e8187p-52]; + exp [0xap-47, 0xbp-47] = [0x10000000000140p-52, 0x10000000000161p-52]; +} + +testcase mpfi_exp2 { + // special values + exp2 [-infinity, -1.0] = [0.0, 0.5]; + exp2 [-infinity, 0.0] = [0.0, 1.0]; + exp2 [-infinity, 1.0] = [0.0, 2.0]; + exp2 [entire] = [0.0, +infinity]; + exp2 [0.0, 0.0] = [1.0, 1.0]; + exp2 [0.0, +1.0] = [1.0, 2.0]; + exp2 [0.0, +infinity] = [1.0, +infinity]; + + // regular values + exp2 [-123.0, -17.0] = [0x1p-123, 0x1p-17]; + exp2 [-7.0, 7.0] = [0x1p-7, 0x1p+7]; + exp2 [-0.125, 0.25] = [0x1d5818dcfba487p-53, 0x1306fe0a31b716p-52]; + exp2 [-0.125, 0.0] = [0x1d5818dcfba487p-53, 1.0]; + exp2 [0.0, 0.25] = [1.0, 0x1306fe0a31b716p-52]; + exp2 [0xap-47, 0xbp-47] = [0x100000000000ddp-52, 0x100000000000f4p-52]; +} + +testcase mpfi_expm1 { + // special values + expm1 [-infinity, -7.0] = [-1.0, -0x1ff887a518f6d5p-53]; + expm1 [-infinity, 0.0] = [-1.0, 0.0]; + expm1 [-infinity, 1.0] = [-1.0, 0x1b7e151628aed3p-52]; + expm1 [entire] = [-1.0, +infinity]; + expm1 [0.0, 0.0] = [0.0, 0.0]; + expm1 [0.0, 1.0] = [0.0, 0x1b7e151628aed3p-52]; + expm1 [0.0, +infinity] = [0.0, +infinity]; + + // regular values + expm1 [-36.0, -36.0] = [-0x1ffffffffffffep-53, -0x1ffffffffffffdp-53]; + expm1 [-0.125, 0.25] = [-0x1e14aed893eef4p-56, 0x122d78f0fa061ap-54]; + expm1 [-0.125, 0.0] = [-0x1e14aed893eef4p-56, 0.0]; + expm1 [0.0, 0.25] = [0.0, 0x122d78f0fa061ap-54]; + expm1 [0xap-47, 0xbp-47] = [0x140000000000c8p-96, 0x160000000000f3p-96]; +} + +testcase mpfi_hypot { + // special values + hypot [-infinity, -7.0] [-1.0, 8.0] = [7.0, +infinity]; + hypot [-infinity, 0.0] [8.0, +infinity] = [8.0, +infinity]; + hypot [-infinity, 8.0] [0.0, 8.0] = [0.0, +infinity]; + hypot [entire] [0.0, 8.0] = [0.0, +infinity]; + hypot [0.0, 0.0] [-infinity, -7.0] = [7.0, +infinity]; + hypot [0.0, 3.0] [-4.0, 0.0] = [0.0, 5.0]; + hypot [0.0, 0.0] [0.0, 8.0] = [0.0, 8.0]; + hypot [0.0, +infinity] [0.0, 8.0] = [0.0, +infinity]; + hypot [0.0, 0.0] [8.0, +infinity] = [8.0, +infinity]; + hypot [0.0, 0.0] [entire] = [0.0, +infinity]; + hypot [0.0, 5.0] [0.0, 12.0] = [0.0, 13.0]; + hypot [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + hypot [0.0, +infinity] [-7.0, 8.0] = [0.0, +infinity]; + + // regular values + hypot [-12.0, -5.0] [-35.0, -12.0] = [13.0, 37.0]; + + hypot [6.0, 7.0] [1.0, 24.0] = [0x1854bfb363dc39p-50, 25.0]; + + hypot [-4.0, +7.0] [-25.0, 3.0] = [0.0, 0x19f625847a5899p-48]; + + hypot [0x1854bfb363dc39p-50, 0x19f625847a5899p-48] [0x1854bfb363dc39p-50, 0x19f625847a5899p-48] = [0x113463fa37014dp-49, 0x125b89092b8fc0p-47]; +} + +testcase mpfi_intersect { + // special values + intersection [-infinity, -7.0] [-1.0, +8.0] = [empty]; + intersection [-infinity, 0.0] [+8.0, +infinity] = [empty]; + intersection [-infinity, +8.0] [0.0, +8.0] = [0.0, +8.0]; + intersection [entire] [0.0, +8.0] = [0.0, +8.0]; + intersection [0.0, 0.0] [-infinity, -7.0] = [empty]; + intersection [0.0, +8.0] [-7.0, 0.0] = [0.0, 0.0]; + intersection [0.0, 0.0] [0.0, +8.0] = [0.0, 0.0]; + intersection [0.0, +infinity] [0.0, +8.0] = [0.0, +8.0]; + intersection [0.0, 0.0] [+8.0, +infinity] = [empty]; + intersection [0.0, 0.0] [entire] = [0.0, 0.0]; + intersection [0.0, +8.0] [-7.0, +8.0] = [0.0, +8.0]; + intersection [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + intersection [0.0, +infinity] [0.0, +8.0] = [0.0, +8.0]; + + // regular values + intersection [0x12p0, 0x90p0] [-0x0dp0, 0x34p0] = [0x12p0, 0x34p0]; +} + +testcase mpfi_inv { + // special values + recip [-infinity, -.25] = [-4.0, 0.0]; + recip [-infinity, 0.0] = [-infinity, 0.0]; + recip [-infinity, +4.0] = [entire]; + recip [entire] = [entire]; + recip [0.0, 0.0] = [empty]; + recip [0.0, +2.0] = [+.5, +infinity]; + recip [0.0, +infinity] = [0.0, +infinity]; + + // regular values + recip [-8.0, -2.0] = [-.5, -0.125]; + recip [0x1p-4, 0x1440c131282cd9p-53] = [0x1947bfce1bc417p-52, 0x10p0]; + recip [0x19f1a539c91fddp-55, +64.0] = [0.015625, 0x13bc205a76b3fdp-50]; + recip [-0xae83b95effd69p-52, -0x63e3cb4ed72a3p-53] = [-0x1480a9b5772a23p-50, -0x177887d65484c9p-52]; +} + +testcase mpfi_is_neg { + // special values + precedes [-infinity, -8.0] [0.0, 0.0] = true; + precedes [-infinity, 0.0] [0.0, 0.0] = true; + precedes [-infinity, 5.0] [0.0, 0.0] = false; + precedes [entire] [0.0, 0.0] = false; + precedes [-8.0, 0.0] [0.0, 0.0] = true; + precedes [0.0, 0.0] [0.0, 0.0] = true; + precedes [0.0, 5.0] [0.0, 0.0] = false; + precedes [0.0, +infinity] [0.0, 0.0] = false; + precedes [5.0, +infinity] [0.0, 0.0] = false; + + // regular values + precedes [-34.0, -17.0] [0.0, 0.0] = true; + precedes [-8.0, -1.0] [0.0, 0.0] = true; + precedes [-34.0, 17.0] [0.0, 0.0] = false; + precedes [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] [0.0, 0.0] = false; + precedes [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] [0.0, 0.0] = false; + precedes [+8.0, +0x7fffffffffffbp+51] [0.0, 0.0] = false; + precedes [+0x1fffffffffffffp-53, 2.0] [0.0, 0.0] = false; +} + +testcase mpfi_is_nonneg { + // special values + less [0.0, 0.0] [-infinity, -8.0] = false; + less [0.0, 0.0] [-infinity, 0.0] = false; + less [0.0, 0.0] [-infinity, 5.0] = false; + less [0.0, 0.0] [entire] = false; + less [0.0, 0.0] [-8.0, 0.0] = false; + less [0.0, 0.0] [0.0, 0.0] = true; + less [0.0, 0.0] [0.0, 5.0] = true; + less [0.0, 0.0] [0.0, +infinity] = true; + less [0.0, 0.0] [5.0, +infinity] = true; + + // regular values + less [0.0, 0.0] [-34.0, -17.0] = false; + less [0.0, 0.0] [-8.0, -1.0] = false; + less [0.0, 0.0] [-34.0, 17.0] = false; + less [0.0, 0.0] [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = false; + less [0.0, 0.0] [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = true; + less [0.0, 0.0] [+8.0, +0x7fffffffffffbp+51] = true; + less [0.0, 0.0] [+0x1fffffffffffffp-53, 2.0] = true; +} + +testcase mpfi_is_nonpos { + // special values + less [-infinity, -8.0] [0.0, 0.0] = true; + less [-infinity, 0.0] [0.0, 0.0] = true; + less [-infinity, 5.0] [0.0, 0.0] = false; + less [entire] [0.0, 0.0] = false; + less [-8.0, 0.0] [0.0, 0.0] = true; + less [0.0, 0.0] [0.0, 0.0] = true; + less [0.0, 5.0] [0.0, 0.0] = false; + less [0.0, +infinity] [0.0, 0.0] = false; + less [5.0, +infinity] [0.0, 0.0] = false; + + // regular values + less [-34.0, -17.0] [0.0, 0.0] = true; + less [-8.0, -1.0] [0.0, 0.0] = true; + less [-34.0, 17.0] [0.0, 0.0] = false; + less [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] [0.0, 0.0] = false; + less [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] [0.0, 0.0] = false; + less [8.0, 0x7fffffffffffbp+51] [0.0, 0.0] = false; + less [0x1fffffffffffffp-53, 2.0] [0.0, 0.0] = false; +} + +testcase mpfi_is_pos { + // special values + precedes [0.0, 0.0] [-infinity, -8.0] = false; + precedes [0.0, 0.0] [-infinity, 0.0] = false; + precedes [0.0, 0.0] [-infinity, 5.0] = false; + precedes [0.0, 0.0] [entire] = false; + precedes [0.0, 0.0] [-8.0, 0.0] = false; + + precedes [0.0, 0.0] [0.0, 0.0] = true; + + precedes [0.0, 0.0] [0.0, 5.0] = true; + precedes [0.0, 0.0] [0.0, +infinity] = true; + precedes [0.0, 0.0] [5.0, +infinity] = true; + + // regular values + precedes [0.0, 0.0] [-34.0, -17.0] = false; + precedes [0.0, 0.0] [-8.0, -1.0] = false; + precedes [0.0, 0.0] [-34.0, 17.0] = false; + precedes [0.0, 0.0] [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = false; + precedes [0.0, 0.0] [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = true; + precedes [0.0, 0.0] [+8.0, +0x7fffffffffffbp+51] = true; + precedes [0.0, 0.0] [+0x1fffffffffffffp-53, 2.0] = true; +} + +testcase mpfi_is_strictly_neg { + // special values + strictPrecedes [-infinity, -8.0] [0.0, 0.0] = true; + strictPrecedes [-infinity, 0.0] [0.0, 0.0] = false; + strictPrecedes [-infinity, 5.0] [0.0, 0.0] = false; + strictPrecedes [entire] [0.0, 0.0] = false; + strictPrecedes [-8.0, 0.0] [0.0, 0.0] = false; + strictPrecedes [0.0, 0.0] [0.0, 0.0] = false; + strictPrecedes [0.0, 5.0] [0.0, 0.0] = false; + strictPrecedes [0.0, +infinity] [0.0, 0.0] = false; + strictPrecedes [5.0, +infinity] [0.0, 0.0] = false; + + // regular values + strictPrecedes [-34.0, -17.0] [0.0, 0.0] = true; + strictPrecedes [-8.0, -1.0] [0.0, 0.0] = true; + strictPrecedes [-34.0, 17.0] [0.0, 0.0] = false; + strictPrecedes [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] [0.0, 0.0] = false; + strictPrecedes [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] [0.0, 0.0] = false; + strictPrecedes [+8.0, +0x7fffffffffffbp+51] [0.0, 0.0] = false; + strictPrecedes [+0x1fffffffffffffp-53, 2.0] [0.0, 0.0] = false; +} + +testcase mpfi_is_strictly_pos { + // special values + strictPrecedes [0.0, 0.0] [-infinity, -8.0] = false; + strictPrecedes [0.0, 0.0] [-infinity, 0.0] = false; + strictPrecedes [0.0, 0.0] [-infinity, 5.0] = false; + strictPrecedes [0.0, 0.0] [entire] = false; + strictPrecedes [0.0, 0.0] [-8.0, 0.0] = false; + strictPrecedes [0.0, 0.0] [0.0, 0.0] = false; + strictPrecedes [0.0, 0.0] [0.0, 5.0] = false; + strictPrecedes [0.0, 0.0] [0.0, +infinity] = false; + strictPrecedes [0.0, 0.0] [5.0, +infinity] = true; + + // regular values + strictPrecedes [0.0, 0.0] [-34.0, -17.0] = false; + strictPrecedes [0.0, 0.0] [-8.0, -1.0] = false; + strictPrecedes [0.0, 0.0] [-34.0, 17.0] = false; + strictPrecedes [0.0, 0.0] [-0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = false; + strictPrecedes [0.0, 0.0] [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = true; + strictPrecedes [0.0, 0.0] [+8.0, +0x7fffffffffffbp+51] = true; + strictPrecedes [0.0, 0.0] [+0x1fffffffffffffp-53, 2.0] = true; +} + +testcase mpfi_log { + // special values + log [0.0, +1.0] = [-infinity, 0.0]; + log [0.0, +infinity] = [entire]; + + // regular values + log [+1.0, +1.0] = [0.0, 0.0]; + log [0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14] = [0xc6dc8a2928579p-47, 0x1a9500bc7ffcc5p-48]; + log [0xb616ab8b683b5p-52, +1.0] = [-0x2b9b8b1fb2fb9p-51, 0.0]; + log [+1.0, 0x8ac74d932fae3p-21] = [0.0, 0x5380455576989p-46]; + log [0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11] = [0xbdee7228cfedfp-47, 0x1b3913fc99f555p-48]; +} + +testcase mpfi_log1p { + // special values + logp1 [-1.0, 0.0] = [-infinity, 0.0]; + logp1 [0.0, 0.0] = [0.0, 0.0]; + logp1 [0.0, 1.0] = [0.0, 0x162e42fefa39f0p-53]; + logp1 [0.0, +infinity] = [0.0, +infinity]; + + // regular values + logp1 [-0xb616ab8b683b5p-52, 0.0] = [-0x13e080325bab7bp-52, 0.0]; + logp1 [0.0, 0x8ac74d932fae3p-21] = [0.0, 0x14e0115561569cp-48]; + logp1 [0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11] = [0x17bdce451a337fp-48, 0x1b3913fc99f6fcp-48]; +} + +testcase mpfi_log2 { + // special values + log2 [0.0, +1.0] = [-infinity, 0.0]; + log2 [0.0, +infinity] = [entire]; + + // regular values + log2 [1.0, 1.0] = [0.0, 0.0]; + log2 [0xb616ab8b683b5p-52, 1.0] = [-0x1f74cb5d105b3ap-54, 0.0]; + log2 [1.0, 0x8ac74d932fae3p-21] = [0.0, 0x1e1ddc27c2c70fp-48]; + log2 [0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11] = [0x112035c9390c07p-47, 0x13a3208f61f10cp-47]; +} + +testcase mpfi_log10 { + // special values + log10 [0.0, 1.0] = [-infinity, 0.0]; + log10 [0.0, +infinity] = [entire]; + + // regular values + log10 [1.0, 1.0] = [0.0, 0.0]; + log10 [0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14] = [0x159753104a9401p-49, 0x1716c01a04b570p-49]; + log10 [0xb616ab8b683b5p-52, 1.0] = [-0x12f043ec00f8d6p-55, 0.0]; + log10 [100.0, 0x8ac74d932fae3p-21] = [2.0, 0x1221cc590b9946p-49]; + log10 [0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11] = [0x149f1d70168f49p-49, 0x17a543a94fb65ep-49]; +} + +testcase mpfi_mag { + // special values + mag [-infinity, -8.0] = +infinity; + mag [-infinity, 0.0] = +infinity; + mag [-infinity, 5.0] = +infinity; + mag [entire] = +infinity; + mag [-infinity, 0.0] = +infinity; + mag [-8.0, 0.0] = +8; + mag [0.0, 0.0] = +0; + mag [0.0, 5.0] = +5; + mag [0.0, +infinity] = +infinity; + + // regular values + mag [-34.0, -17.0] = 34; +} + +testcase mpfi_mid { + // special values + mid [-8.0, 0.0] = -4; + mid [0.0, 0.0] = +0; + mid [0.0, 5.0] = +2.5; + + // regular values + mid [-34.0, -17.0] = -0x33p-1; + + mid [-34.0, 17.0] = -8.5; + mid [0.0, +0x123456789abcdp-2] = +0x123456789abcdp-3; + mid [0x1921fb54442d18p-51, 0x1921fb54442d19p-51] = 0x1921fb54442d18p-51; + mid [-0x1921fb54442d19p-51, -0x1921fb54442d18p-51] = -0x1921fb54442d18p-51; + mid [-4.0, -0x7fffffffffffdp-51] = -0x27fffffffffffbp-52; + mid [-8.0, -0x7fffffffffffbp-51] = -0x47fffffffffffbp-52; + + mid [-0x1fffffffffffffp-53, 2.0] = 0.5; +} + +testcase mpfi_mig { + // special values + mig [-infinity, -8.0] = 8; + mig [-infinity, 0.0] = +0; + mig [-infinity, 5.0] = +0; + mig [entire] = +0; + mig [-infinity, 0.0] = +0; + mig [-8.0, 0.0] = +0; + mig [0.0, 0.0] = +0; + mig [0.0, 5.0] = +0; + mig [0.0, +infinity] = +0; + + // regular values + mig [-34.0, -17.0] = 17; +} + +testcase mpfi_mul { + // special values + mul [-infinity, -7.0] [-1.0, +8.0] = [entire]; + mul [-infinity, 0.0] [+8.0, +infinity] = [-infinity, 0.0]; + mul [-infinity, +8.0] [0.0, +8.0] = [-infinity, +64.0]; + mul [entire] [0.0, 0.0] = [0.0, 0.0]; + mul [entire] [0.0, +8.0] = [entire]; + mul [0.0, 0.0] [-infinity, -7.0] = [0.0, 0.0]; + mul [0.0, +8.0] [-7.0, 0.0] = [-56.0, 0.0]; + mul [0.0, 0.0] [0.0, +8.0] = [0.0, 0.0]; + mul [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + mul [0.0, 0.0] [+8.0, +infinity] = [0.0, 0.0]; + mul [0.0, 0.0] [entire] = [0.0, 0.0]; + mul [0.0, +8.0] [-7.0, +8.0] = [-56.0, +64.0]; + mul [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + mul [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + mul [-3.0, +7.0] [0.0, 0.0] = [0.0, 0.0]; + + // regular values + mul [-0x0dp0, -0x09p0] [-0x04p0, -0x02p0] = [0x12p0, 0x34p0]; + mul [-0x0dp0, -0xd.f0e7927d247cp-4] [-0x04p0, -0xa.41084aff48f8p-8] = [0x8.ef3aa21dba748p-8, 0x34p0]; + mul [-0xe.26c9e9eb67b48p-4, -0x8.237d2eb8b1178p-4] [-0x5.8c899a0706d5p-4, -0x3.344e57a37b5e8p-4] = [0x1.a142a930de328p-4, 0x4.e86c3434cd924p-4]; + mul [-0x37p0, -0x07p0] [-0x01p0, 0x22p0] = [-0x74ep0, 0x37p0]; + mul [-0xe.063f267ed51ap-4, -0x0.33p0] [-0x01p0, 0x1.777ab178b4a1ep+0] = [-0x1.491df346a9f15p+0, 0xe.063f267ed51ap-4]; + mul [-0x1.cb540b71699a8p+4, -0x0.33p0] [-0x1.64dcaaa101f18p+0, 0x01p0] = [-0x1.cb540b71699a8p+4, 0x2.804cce4a3f42ep+4]; + mul [-0x1.cb540b71699a8p+4, -0x0.33p0] [-0x1.64dcaaa101f18p+0, 0x1.eb67a1a6ef725p+4] = [-0x3.71b422ce817f4p+8, 0x2.804cce4a3f42ep+4]; + mul [-0x123456789ap0, -0x01p0] [0x01p0, 0x10p0] = [-0x123456789a0p0, -0x01p0]; + mul [-0xb.6c67d3a37d54p-4, -0x0.8p0] [0x02p0, 0x2.0bee4e8bb3dfp+0] = [-0x1.7611a672948a5p+0, -0x01p0]; + mul [-0x04p0, -0xa.497d533c3b2ep-8] [0xb.d248df3373e68p-4, 0x04p0] = [-0x10p0, -0x7.99b990532d434p-8]; + mul [-0xb.6c67d3a37d54p-4, -0xa.497d533c3b2ep-8] [0xb.d248df3373e68p-4, 0x2.0bee4e8bb3dfp+0] = [-0x1.7611a672948a5p+0, -0x7.99b990532d434p-8]; + + mul [-0x01p0, 0x11p0] [-0x07p0, -0x04p0] = [-0x77p0, 0x07p0]; + mul [-0x01p0, 0xe.ca7ddfdb8572p-4] [-0x2.3b46226145234p+0, -0x0.1p0] = [-0x2.101b41d3d48b8p+0, 0x2.3b46226145234p+0]; + mul [-0x1.1d069e75e8741p+8, 0x01p0] [-0x2.3b46226145234p+0, -0x0.1p0] = [-0x2.3b46226145234p+0, 0x2.7c0bd9877f404p+8]; + mul [-0xe.ca7ddfdb8572p-4, 0x1.1d069e75e8741p+8] [-0x2.3b46226145234p+0, -0x0.1p0] = [-0x2.7c0bd9877f404p+8, 0x2.101b41d3d48b8p+0]; + mul [-0x01p0, 0x10p0] [-0x02p0, 0x03p0] = [-0x20p0, 0x30p0]; + mul [-0x01p0, 0x2.db091cea593fap-4] [-0x2.6bff2625fb71cp-4, 0x1p-8] = [-0x6.ea77a3ee43de8p-8, 0x2.6bff2625fb71cp-4]; + mul [-0x01p0, 0x6.e211fefc216ap-4] [-0x1p-4, 0x1.8e3fe93a4ea52p+0] = [-0x1.8e3fe93a4ea52p+0, 0xa.b52fe22d72788p-4]; + mul [-0x1.15e079e49a0ddp+0, 0x1p-8] [-0x2.77fc84629a602p+0, 0x8.3885932f13fp-4] = [-0x8.ec5de73125be8p-4, 0x2.adfe651d3b19ap+0]; + mul [-0x07p0, 0x07p0] [0x13p0, 0x24p0] = [-0xfcp0, 0xfcp0]; + mul [-0xa.8071f870126cp-4, 0x10p0] [0x02p0, 0x2.3381083e7d3b4p+0] = [-0x1.71dc5b5607781p+0, 0x2.3381083e7d3b4p+4]; + mul [-0x01p0, 0x1.90aa487ecf153p+0] [0x01p-53, 0x1.442e2695ac81ap+0] = [-0x1.442e2695ac81ap+0, 0x1.fb5fbebd0cbc6p+0]; + mul [-0x1.c40db77f2f6fcp+0, 0x1.8eb70bbd94478p+0] [0x02p0, 0x3.45118635235c6p+0] = [-0x5.c61fcad908df4p+0, 0x5.17b7c49130824p+0]; + + mul [0xcp0, 0x2dp0] [-0x679p0, -0xe5p0] = [-0x12345p0, -0xabcp0]; + mul [0xcp0, 0x1.1833fdcab4c4ap+10] [-0x2.4c0afc50522ccp+40, -0xe5p0] = [-0x2.83a3712099234p+50, -0xabcp0]; + mul [0xb.38f1fb0ef4308p+0, 0x2dp0] [-0x679p0, -0xa.4771d7d0c604p+0] = [-0x12345p0, -0x7.35b3c8400ade4p+4]; + mul [0xf.08367984ca1cp-4, 0xa.bcf6c6cbe341p+0] [-0x5.cbc445e9952c4p+0, -0x2.8ad05a7b988fep-8] = [-0x3.e3ce52d4a139cp+4, -0x2.637164cf2f346p-8]; + mul [0x01p0, 0xcp0] [-0xe5p0, 0x01p0] = [-0xabcp0, 0xcp0]; + mul [0x123p-52, 0x1.ec24910ac6aecp+0] [-0xa.a97267f56a9b8p-4, 0x1p+32] = [-0x1.47f2dbe4ef916p+0, 0x1.ec24910ac6aecp+32]; + mul [0x03p0, 0x7.2bea531ef4098p+0] [-0x01p0, 0xa.a97267f56a9b8p-4] = [-0x7.2bea531ef4098p+0, 0x4.c765967f9468p+0]; + mul [0x0.3p0, 0xa.a97267f56a9b8p-4] [-0x1.ec24910ac6aecp+0, 0x7.2bea531ef4098p+0] = [-0x1.47f2dbe4ef916p+0, 0x4.c765967f9468p+0]; + mul [0x3p0, 0x7p0] [0x5p0, 0xbp0] = [0xfp0, 0x4dp0]; + mul [0x2.48380232f6c16p+0, 0x7p0] [0x3.71cb6c53e68eep+0, 0xbp0] = [0x7.dc58fb323ad78p+0, 0x4dp0]; + mul [0x3p0, 0x3.71cb6c53e68eep+0] [0x5p-25, 0x2.48380232f6c16p+0] = [0xfp-25, 0x7.dc58fb323ad7cp+0]; + mul [0x3.10e8a605572p-4, 0x2.48380232f6c16p+0] [0xc.3d8e305214ecp-4, 0x2.9e7db05203c88p+0] = [0x2.587a32d02bc04p-4, 0x5.fa216b7c20c6cp+0]; +} + +testcase mpfi_mul_d { + // special values + mul [-infinity, -7.0] [-0x17p0, -0x17p0] = [+0xa1p0, +infinity]; + mul [-infinity, -7.0] [0.0, 0.0] = [0.0, 0.0]; + mul [-infinity, -7.0] [0x170ef54646d497p-107, 0x170ef54646d497p-107] = [-infinity, -0xa168b4ebefd020p-107]; + mul [-infinity, 0.0] [-0x170ef54646d497p-106, -0x170ef54646d497p-106] = [0.0, +infinity]; + mul [-infinity, 0.0] [0.0, 0.0] = [0.0, 0.0]; + mul [-infinity, 0.0] [0x170ef54646d497p-106, 0x170ef54646d497p-106] = [-infinity, 0.0]; + mul [-infinity, 8.0] [-0x16345785d8a00000p0, -0x16345785d8a00000p0] = [-0xb1a2bc2ec5000000p0, +infinity]; + mul [-infinity, 8.0] [0.0, 0.0] = [0.0, 0.0]; + mul [-infinity, 8.0] [0x16345785d8a00000p0, 0x16345785d8a00000p0] = [-infinity, 0xb1a2bc2ec5000000p0]; + mul [entire] [-0x170ef54646d497p-105, -0x170ef54646d497p-105] = [entire]; + mul [entire] [0.0e-17, 0.0e-17] = [0.0, 0.0]; + mul [entire] [+0x170ef54646d497p-105, +0x170ef54646d497p-105] = [entire]; + mul [0.0, 0.0] [-0x170ef54646d497p-109, -0x170ef54646d497p-109] = [0.0, 0.0]; + mul [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + mul [0.0, 0.0] [0x170ef54646d497p-109, 0x170ef54646d497p-109] = [0.0, 0.0]; + mul [0.0, 7.0] [-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107] = [-0x790e87b0f3dc18p-107, 0.0]; + mul [0.0, 8.0] [0.0, 0.0] = [0.0, 0.0]; + mul [0.0, 9.0] [0x114b37f4b51f71p-103, 0x114b37f4b51f71p-103] = [0.0, 0x9ba4f79a5e1b00p-103]; + mul [0.0, +infinity] [-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104] = [-infinity, 0.0]; + mul [0.0, +infinity] [0.0, 0.0] = [0.0, 0.0]; + mul [0.0, +infinity] [0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106] = [0.0, +infinity]; + + // regular values + mul [-0x1717170p0, -0xaaaaaaaaaaaaap-123] [-1.5, -1.5] = [0xfffffffffffffp-123, 0x22a2a28p0]; + mul [-0xaaaaaaaaaaaaap0, 0x1717170p+401] [-1.5, -1.5] = [-0x22a2a28p+401, 0xfffffffffffffp0]; + mul [0x10000000000010p0, 0x888888888888p+654] [-2.125, -2.125] = [-0x1222222222221p+654, -0x22000000000022p0]; + mul [-0x1717170p0, -0xaaaaaaaaaaaaap-123] [1.5, 1.5] = [-0x22a2a28p0, -0xfffffffffffffp-123]; + mul [-0xaaaaaaaaaaaaap0, 0x1717170p+401] [1.5, 1.5] = [-0xfffffffffffffp0, 0x22a2a28p+401]; + mul [0x10000000000010p0, 0x888888888888p+654] [2.125, 2.125] = [0x22000000000022p0, 0x1222222222221p+654]; + mul [-0x1717170p+36, -0x10000000000001p0] [-1.5, -1.5] = [0x18000000000001p0, 0x22a2a28p+36]; + mul [-0xaaaaaaaaaaaaap0, 0x10000000000001p0] [-1.5, -1.5] = [-0x18000000000002p0, 0xfffffffffffffp0]; + mul [0x10000000000010p0, 0x11111111111111p0] [-2.125, -2.125] = [-0x12222222222223p+1, -0x22000000000022p0]; + mul [-0x10000000000001p0, -0xaaaaaaaaaaaaap-123] [1.5, 1.5] = [-0x18000000000002p0, -0xfffffffffffffp-123]; + mul [-0xaaaaaaaaaaaabp0, 0x1717170p+401] [1.5, 1.5] = [-0x10000000000001p0, 0x22a2a28p+401]; + mul [0x10000000000001p0, 0x888888888888p+654] [2.125, 2.125] = [0x22000000000002p0, 0x1222222222221p+654]; + mul [-0x11717171717171p0, -0xaaaaaaaaaaaaap-123] [-1.5, -1.5] = [0xfffffffffffffp-123, 0x1a2a2a2a2a2a2ap0]; + mul [-0x10000000000001p0, 0x1717170p+401] [-1.5, -1.5] = [-0x22a2a28p+401, 0x18000000000002p0]; + mul [0x10000000000001p0, 0x888888888888p+654] [-2.125, -2.125] = [-0x1222222222221p+654, -0x22000000000002p0]; + mul [-0x1717170p0, -0x1aaaaaaaaaaaaap-123] [1.5, 1.5] = [-0x22a2a28p0, -0x27fffffffffffep-123]; + mul [-0xaaaaaaaaaaaaap0, 0x11717171717171p0] [1.5, 1.5] = [-0xfffffffffffffp0, 0x1a2a2a2a2a2a2ap0]; + mul [0x10000000000010p0, 0x18888888888889p0] [2.125, 2.125] = [0x22000000000022p0, 0x34222222222224p0]; + mul [-0x11717171717171p0, -0x10000000000001p0] [-1.5, -1.5] = [0x18000000000001p0, 0x1a2a2a2a2a2a2ap0]; + mul [-0x10000000000001p0, 0x10000000000001p0] [-1.5, -1.5] = [-0x18000000000002p0, 0x18000000000002p0]; + mul [0x10000000000001p0, 0x11111111111111p0] [-2.125, -2.125] = [-0x12222222222223p+1, -0x22000000000002p0]; + mul [-0x10000000000001p0, -0x1aaaaaaaaaaaaap-123] [1.5, 1.5] = [-0x18000000000002p0, -0x27fffffffffffep-123]; + mul [-0xaaaaaaaaaaaabp0, 0x11717171717171p0] [1.5, 1.5] = [-0x10000000000001p0, 0x1a2a2a2a2a2a2ap0]; + mul [0x10000000000001p0, 0x18888888888889p0] [2.125, 2.125] = [0x22000000000002p0, 0x34222222222224p0]; +} + +testcase mpfi_neg { + // special values + neg [-infinity, -7.0] = [+7.0, +infinity]; + neg [-infinity, 0.0] = [0.0, +infinity]; + neg [-infinity, +8.0] = [-8.0, +infinity]; + neg [entire] = [entire]; + neg [0.0, 0.0] = [0.0, 0.0]; + neg [0.0, +8.0] = [-8.0, 0.0]; + neg [0.0, +infinity] = [-infinity, 0.0]; + + // regular values + neg [0x123456789p-16, 0x123456799p-16] = [-0x123456799p-16, -0x123456789p-16]; +} + +testcase mpfi_put_d { + // special values + convexHull [0.0, 0.0] [-8.0, -8.0] = [-8.0, 0.0]; + convexHull [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + convexHull [+5.0, +5.0] [0.0, 0.0] = [0.0, +5.0]; +} + +testcase mpfi_sec { + // special values + sec [-infinity, -7.0] = [entire]; + sec [-infinity, 0.0] = [entire]; + sec [-infinity, 8.0] = [entire]; + sec [entire] = [entire]; + sec [-8.0, 0.0] = [entire]; + sec [-3.0, 0.0] = [entire]; + sec [-1.0, 0.0] = [1.0, 0x1d9cf0f125cc2ap-52]; + sec [0.0, 0.0] = [1.0, 1.0]; + sec [0.0, +1.0] = [1.0, 0x1d9cf0f125cc2ap-52]; + sec [0.0, 3.0] = [entire]; + sec [0.0, 8.0] = [entire]; + sec [0.0, +infinity] = [entire]; + + // regular values + sec [-6.0, 7.0] = [entire]; + sec [-6.0, 6.0] = [entire]; + sec [-6.0, 5.0] = [entire]; + sec [-6.0, 4.0] = [entire]; + sec [-6.0, 3.0] = [entire]; + sec [-6.0, 2.0] = [entire]; + sec [-6.0, 1.0] = [entire]; + sec [-6.0, 0.0] = [entire]; + sec [-6.0, -1.0] = [entire]; + sec [-6.0, -2.0] = [entire]; + sec [-6.0, -3.0] = [entire]; + sec [-6.0, -4.0] = [entire]; + sec [-6.0, -5.0] = [0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51]; + sec [-6.0, -6.0] = [0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52]; + + sec [-5.0, 7.0] = [entire]; + sec [-5.0, 6.0] = [entire]; + sec [-5.0, 5.0] = [entire]; + sec [-5.0, 4.0] = [entire]; + sec [-5.0, 3.0] = [entire]; + sec [-5.0, 2.0] = [entire]; + sec [-5.0, 1.0] = [entire]; + sec [-5.0, 0.0] = [entire]; + sec [-5.0, -1.0] = [entire]; + sec [-5.0, -2.0] = [entire]; + sec [-5.0, -3.0] = [entire]; + sec [-5.0, -4.0] = [entire]; + sec [-5.0, -5.0] = [0x1c33db0464189ap-51, 0x1c33db0464189bp-51]; + + sec [-4.0, 7.0] = [entire]; + sec [-4.0, 6.0] = [entire]; + sec [-4.0, 5.0] = [entire]; + sec [-4.0, 4.0] = [entire]; + sec [-4.0, 3.0] = [entire]; + sec [-4.0, 2.0] = [entire]; + sec [-4.0, 1.0] = [entire]; + sec [-4.0, 0.0] = [entire]; + sec [-4.0, -1.0] = [entire]; + sec [-4.0, -2.0] = [-0x133956fecf9e49p-51, -1.0]; + sec [-4.0, -3.0] = [-0x187a6961d2485fp-52, -1.0]; + sec [-4.0, -4.0] = [-0x187a6961d2485fp-52, -0x187a6961d2485ep-52]; + + sec [-3.0, 7.0] = [entire]; + sec [-3.0, 6.0] = [entire]; + sec [-3.0, 5.0] = [entire]; + sec [-3.0, 4.0] = [entire]; + sec [-3.0, 3.0] = [entire]; + sec [-3.0, 2.0] = [entire]; + sec [-3.0, 1.0] = [entire]; + sec [-3.0, 0.0] = [entire]; + sec [-3.0, -1.0] = [entire]; + sec [-3.0, -2.0] = [-0x133956fecf9e49p-51, -0x102967b457b245p-52]; + sec [-3.0, -3.0] = [-0x102967b457b246p-52, -0x102967b457b245p-52]; + + sec [-2.0, 7.0] = [entire]; + sec [-2.0, 6.0] = [entire]; + sec [-2.0, 5.0] = [entire]; + sec [-2.0, 4.0] = [entire]; + sec [-2.0, 3.0] = [entire]; + sec [-2.0, 2.0] = [entire]; + sec [-2.0, 1.0] = [entire]; + sec [-2.0, 0.0] = [entire]; + sec [-2.0, -1.0] = [entire]; + sec [-2.0, -2.0] = [-0x133956fecf9e49p-51, -0x133956fecf9e48p-51]; + + sec [-1.0, 7.0] = [entire]; + sec [-1.0, 6.0] = [entire]; + sec [-1.0, 5.0] = [entire]; + sec [-1.0, 4.0] = [entire]; + sec [-1.0, 3.0] = [entire]; + sec [-1.0, 2.0] = [entire]; + sec [-1.0, 1.0] = [1.0, 0x1d9cf0f125cc2ap-52]; + sec [-1.0, 0.0] = [1.0, 0x1d9cf0f125cc2ap-52]; + sec [-1.0, -1.0] = [0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52]; + + sec [1.0, 7.0] = [entire]; + sec [1.0, 6.0] = [entire]; + sec [1.0, 5.0] = [entire]; + sec [1.0, 4.0] = [entire]; + sec [1.0, 3.0] = [entire]; + sec [1.0, 2.0] = [entire]; + sec [1.0, 1.0] = [0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52]; + + sec [2.0, 7.0] = [entire]; + sec [2.0, 6.0] = [entire]; + sec [2.0, 5.0] = [entire]; + sec [2.0, 4.0] = [-0x133956fecf9e49p-51, -1.0]; + sec [2.0, 3.0] = [-0x133956fecf9e49p-51, -0x102967b457b245p-52]; + sec [2.0, 2.0] = [-0x133956fecf9e49p-51, -0x133956fecf9e48p-51]; + + sec [3.0, 7.0] = [entire]; + sec [3.0, 6.0] = [entire]; + sec [3.0, 5.0] = [entire]; + sec [3.0, 4.0] = [-0x187a6961d2485fp-52, -1.0]; + sec [3.0, 3.0] = [-0x102967b457b246p-52, -0x102967b457b245p-52]; + + sec [4.0, 7.0] = [entire]; + sec [4.0, 6.0] = [entire]; + sec [4.0, 5.0] = [entire]; + sec [4.0, 4.0] = [-0x187a6961d2485fp-52, -0x187a6961d2485ep-52]; + + sec [5.0, 7.0] = [1.0, 0x1c33db0464189bp-51]; + sec [5.0, 6.0] = [0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51]; + sec [5.0, 5.0] = [0x1c33db0464189ap-51, 0x1c33db0464189bp-51]; + + sec [6.0, 7.0] = [1.0, 0x153910a80e7db5p-52]; + sec [6.0, 6.0] = [0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52]; + + sec [7.0, 7.0] = [0x153910a80e7db4p-52, 0x153910a80e7db5p-52]; +} + +testcase mpfi_sech { + // special values + sech [-infinity, -7.0] = [0.0, 0x1de169fb49b339p-62]; + sech [-infinity, 0.0] = [0.0, 1.0]; + sech [-infinity, +8.0] = [0.0, 1.0]; + sech [entire] = [0.0, 1.0]; + sech [-1.0, 0.0] = [0x14bcdc50ed6be7p-53, 1.0]; + sech [0.0, 0.0] = [1.0, 1.0]; + sech [0.0, +1.0] = [0x14bcdc50ed6be7p-53, 1.0]; + sech [0.0, +8.0] = [0x15fc20da8e18dbp-63, 1.0]; + sech [0.0, +infinity] = [0.0, 1.0]; + + // regular values + sech [-0.125, 0.0] = [0x1fc069fe3f72bep-53, 1.0]; + sech [0.0, 0x10000000000001p-53] = [0x1c60d1ff040dcfp-53, 1.0]; + sech [-4.5, -0.625] = [0x16bf984a9a2355p-58, 0x1aa0b464a5e24ap-53]; + sech [1.0, 3.0] = [0x196d8e17d88eb1p-56, 0x14bcdc50ed6be8p-53]; + + sech [17.0, 0xb145bb71d3dbp-38] = [0x10000000000173p-1074, 0x1639e3175a6893p-76]; +} + +testcase mpfi_sin { + // special values + sin [-infinity, -7.0] = [-1.0, 1.0]; + sin [-infinity, 0.0] = [-1.0, 1.0]; + sin [-infinity, +8.0] = [-1.0, 1.0]; + sin [entire] = [-1.0, 1.0]; + sin [-1.0, 0.0] = [-0x1aed548f090cefp-53, 0.0]; + sin [0.0, 0.0] = [0.0, 0.0]; + sin [0.0, +1.0] = [0.0, 0x1aed548f090cefp-53]; + sin [0.0, +8.0] = [-1.0, 1.0]; + sin [0.0, +infinity] = [-1.0, 1.0]; + + // regular values + sin [0.125, 17.0] = [-1.0, 1.0]; + sin [0x1921fb54442d18p-52, 0x1921fb54442d19p-52] = [0x1fffffffffffffp-53, 1.0]; + sin [-2.0, -0.5] = [-1.0, -0x1eaee8744b05efp-54]; + sin [-4.5, 0.625] = [-1.0, 0x1f47ed3dc74081p-53]; + sin [-1.0, -0.25] = [-0x1aed548f090cefp-53, -0x1faaeed4f31576p-55]; + sin [-0.5, 0.5] = [-0x1eaee8744b05f0p-54, 0x1eaee8744b05f0p-54]; + sin [0x71p+76, 0x71p+76] = [0x1bde6c11cbfc46p-55, 0x1bde6c11cbfc47p-55]; + + sin [-7.0, 7.0] = [-1.0, 1.0]; + sin [-7.0, 6.0] = [-1.0, 1.0]; + sin [-7.0, 5.0] = [-1.0, 1.0]; + sin [-7.0, 4.0] = [-1.0, 1.0]; + sin [-7.0, 3.0] = [-1.0, 1.0]; + sin [-7.0, 2.0] = [-1.0, 1.0]; + sin [-7.0, 1.0] = [-1.0, 1.0]; + sin [-7.0, 0.0] = [-1.0, 1.0]; + sin [-7.0, -1.0] = [-1.0, 1.0]; + sin [-7.0, -2.0] = [-0x1d18f6ead1b446p-53, 1.0]; + sin [-7.0, -3.0] = [-0x150608c26d0a09p-53, 1.0]; + sin [-7.0, -4.0] = [-0x150608c26d0a09p-53, 1.0]; + sin [-7.0, -5.0] = [-0x150608c26d0a09p-53, 0x1eaf81f5e09934p-53]; + sin [-7.0, -6.0] = [-0x150608c26d0a09p-53, 0x11e1f18ab0a2c1p-54]; + sin [-7.0, -7.0] = [-0x150608c26d0a09p-53, -0x150608c26d0a08p-53]; + + sin [-6.0, 7.0] = [-1.0, 1.0]; + sin [-6.0, 6.0] = [-1.0, 1.0]; + sin [-6.0, 5.0] = [-1.0, 1.0]; + sin [-6.0, 4.0] = [-1.0, 1.0]; + sin [-6.0, 3.0] = [-1.0, 1.0]; + sin [-6.0, 2.0] = [-1.0, 1.0]; + sin [-6.0, 1.0] = [-1.0, 1.0]; + sin [-6.0, 0.0] = [-1.0, 1.0]; + sin [-6.0, -1.0] = [-1.0, 1.0]; + sin [-6.0, -2.0] = [-0x1d18f6ead1b446p-53, 1.0]; + sin [-6.0, -3.0] = [-0x1210386db6d55cp-55, 1.0]; + sin [-6.0, -4.0] = [0x11e1f18ab0a2c0p-54, 1.0]; + sin [-6.0, -5.0] = [0x11e1f18ab0a2c0p-54, 0x1eaf81f5e09934p-53]; + sin [-6.0, -6.0] = [0x11e1f18ab0a2c0p-54, 0x11e1f18ab0a2c1p-54]; + + sin [-5.0, 7.0] = [-1.0, 1.0]; + sin [-5.0, 6.0] = [-1.0, 1.0]; + sin [-5.0, 5.0] = [-1.0, 1.0]; + sin [-5.0, 4.0] = [-1.0, 1.0]; + sin [-5.0, 3.0] = [-1.0, 1.0]; + sin [-5.0, 2.0] = [-1.0, 1.0]; + sin [-5.0, 1.0] = [-1.0, 1.0]; + sin [-5.0, 0.0] = [-1.0, 1.0]; + sin [-5.0, -1.0] = [-1.0, 1.0]; + sin [-5.0, -2.0] = [-0x1d18f6ead1b446p-53, 1.0]; + sin [-5.0, -3.0] = [-0x1210386db6d55cp-55, 1.0]; + sin [-5.0, -4.0] = [0x1837b9dddc1eaep-53, 1.0]; + sin [-5.0, -5.0] = [0x1eaf81f5e09933p-53, 0x1eaf81f5e09934p-53]; + + sin [-4.0, 7.0] = [-1.0, 1.0]; + sin [-4.0, 6.0] = [-1.0, 1.0]; + sin [-4.0, 5.0] = [-1.0, 1.0]; + sin [-4.0, 4.0] = [-1.0, 1.0]; + sin [-4.0, 3.0] = [-1.0, 1.0]; + sin [-4.0, 2.0] = [-1.0, 1.0]; + sin [-4.0, 1.0] = [-1.0, 0x1aed548f090cefp-53]; + sin [-4.0, 0.0] = [-1.0, 0x1837b9dddc1eafp-53]; + sin [-4.0, -1.0] = [-1.0, 0x1837b9dddc1eafp-53]; + sin [-4.0, -2.0] = [-0x1d18f6ead1b446p-53, 0x1837b9dddc1eafp-53]; + sin [-4.0, -3.0] = [-0x1210386db6d55cp-55, 0x1837b9dddc1eafp-53]; + sin [-4.0, -4.0] = [0x1837b9dddc1eaep-53, 0x1837b9dddc1eafp-53]; + + sin [-3.0, 7.0] = [-1.0, 1.0]; + sin [-3.0, 6.0] = [-1.0, 1.0]; + sin [-3.0, 5.0] = [-1.0, 1.0]; + sin [-3.0, 4.0] = [-1.0, 1.0]; + sin [-3.0, 3.0] = [-1.0, 1.0]; + sin [-3.0, 2.0] = [-1.0, 1.0]; + sin [-3.0, 1.0] = [-1.0, 0x1aed548f090cefp-53]; + sin [-3.0, 0.0] = [-1.0, 0.0]; + sin [-3.0, -1.0] = [-1.0, -0x1210386db6d55bp-55]; + sin [-3.0, -2.0] = [-0x1d18f6ead1b446p-53, -0x1210386db6d55bp-55]; + sin [-3.0, -3.0] = [-0x1210386db6d55cp-55, -0x1210386db6d55bp-55]; + + sin [-2.0, 7.0] = [-1.0, 1.0]; + sin [-2.0, 6.0] = [-1.0, 1.0]; + sin [-2.0, 5.0] = [-1.0, 1.0]; + sin [-2.0, 4.0] = [-1.0, 1.0]; + sin [-2.0, 3.0] = [-1.0, 1.0]; + sin [-2.0, 2.0] = [-1.0, 1.0]; + sin [-2.0, 1.0] = [-1.0, 0x1aed548f090cefp-53]; + sin [-2.0, 0.0] = [-1.0, 0.0]; + sin [-2.0, -1.0] = [-1.0, -0x1aed548f090ceep-53]; + sin [-2.0, -2.0] = [-0x1d18f6ead1b446p-53, -0x1d18f6ead1b445p-53]; + + sin [-1.0, 7.0] = [-1.0, 1.0]; + sin [-1.0, 6.0] = [-1.0, 1.0]; + sin [-1.0, 5.0] = [-1.0, 1.0]; + sin [-1.0, 4.0] = [-0x1aed548f090cefp-53, 1.0]; + sin [-1.0, 3.0] = [-0x1aed548f090cefp-53, 1.0]; + sin [-1.0, 2.0] = [-0x1aed548f090cefp-53, 1.0]; + sin [-1.0, 1.0] = [-0x1aed548f090cefp-53, 0x1aed548f090cefp-53]; + sin [-1.0, 0.0] = [-0x1aed548f090cefp-53, 0.0]; + sin [-1.0, -1.0] = [-0x1aed548f090cefp-53, -0x1aed548f090ceep-53]; + + sin [1.0, 7.0] = [-1.0, 1.0]; + sin [1.0, 6.0] = [-1.0, 1.0]; + sin [1.0, 5.0] = [-1.0, 1.0]; + sin [1.0, 4.0] = [-0x1837b9dddc1eafp-53, 1.0]; + sin [1.0, 3.0] = [0x1210386db6d55bp-55, 1.0]; + sin [1.0, 2.0] = [0x1aed548f090ceep-53, 1.0]; + sin [1.0, 1.0] = [0x1aed548f090ceep-53, 0x1aed548f090cefp-53]; + + sin [2.0, 7.0] = [-1.0, 0x1d18f6ead1b446p-53]; + sin [2.0, 6.0] = [-1.0, 0x1d18f6ead1b446p-53]; + sin [2.0, 5.0] = [-1.0, 0x1d18f6ead1b446p-53]; + sin [2.0, 4.0] = [-0x1837b9dddc1eafp-53, 0x1d18f6ead1b446p-53]; + sin [2.0, 3.0] = [0x1210386db6d55bp-55, 0x1d18f6ead1b446p-53]; + sin [2.0, 2.0] = [0x1d18f6ead1b445p-53, 0x1d18f6ead1b446p-53]; + + sin [3.0, 7.0] = [-1.0, 0x150608c26d0a09p-53]; + sin [3.0, 6.0] = [-1.0, 0x1210386db6d55cp-55]; + sin [3.0, 5.0] = [-1.0, 0x1210386db6d55cp-55]; + sin [3.0, 4.0] = [-0x1837b9dddc1eafp-53, 0x1210386db6d55cp-55]; + sin [3.0, 3.0] = [0x1210386db6d55bp-55, 0x1210386db6d55cp-55]; + + sin [4.0, 7.0] = [-1.0, 0x150608c26d0a09p-53]; + sin [4.0, 6.0] = [-1.0, -0x11e1f18ab0a2c0p-54]; + sin [4.0, 5.0] = [-1.0, -0x1837b9dddc1eaep-53]; + sin [4.0, 4.0] = [-0x1837b9dddc1eafp-53, -0x1837b9dddc1eaep-53]; + + sin [5.0, 7.0] = [-0x1eaf81f5e09934p-53, 0x150608c26d0a09p-53]; + sin [5.0, 6.0] = [-0x1eaf81f5e09934p-53, -0x11e1f18ab0a2c0p-54]; + sin [5.0, 5.0] = [-0x1eaf81f5e09934p-53, -0x1eaf81f5e09933p-53]; + + sin [6.0, 7.0] = [-0x11e1f18ab0a2c1p-54, 0x150608c26d0a09p-53]; + sin [6.0, 6.0] = [-0x11e1f18ab0a2c1p-54, -0x11e1f18ab0a2c0p-54]; + + sin [7.0, 7.0] = [0x150608c26d0a08p-53, 0x150608c26d0a09p-53]; +} + +testcase mpfi_sinh { + // special values + sinh [-infinity, -7.0] = [-infinity, -0x1122876ba380c9p-43]; + sinh [-infinity, 0.0] = [-infinity, 0.0]; + sinh [-infinity, +8.0] = [-infinity, 0x1749ea514eca66p-42]; + sinh [entire] = [entire]; + sinh [-1.0, 0.0] = [-0x12cd9fc44eb983p-52, 0.0]; + sinh [0.0, 0.0] = [0.0, 0.0]; + sinh [0.0, +1.0] = [0.0, 0x12cd9fc44eb983p-52]; + sinh [0.0, +8.0] = [0.0, 0x1749ea514eca66p-42]; + sinh [0.0, +infinity] = [0.0, +infinity]; + + // regular values + sinh [-0.125, 0.0] = [-0x100aaccd00d2f1p-55, 0.0]; + sinh [0.0, 0x10000000000001p-53] = [0.0, 0x10acd00fe63b98p-53]; + sinh [-4.5, -0.625] = [-0x168062ab5fa9fdp-47, -0x1553e795dc19ccp-53]; + sinh [1.0, 3.0] = [0x12cd9fc44eb982p-52, 0x140926e70949aep-49]; +} + +testcase mpfi_sqr { + // special values + sqr [-infinity, -7.0] = [+49.0, +infinity]; + sqr [-infinity, 0.0] = [0.0, +infinity]; + sqr [-infinity, +8.0] = [0.0, +infinity]; + sqr [entire] = [0.0, +infinity]; + sqr [0.0, 0.0] = [0.0, 0.0]; + sqr [0.0, +8.0] = [0.0, +64.0]; + sqr [0.0, +infinity] = [0.0, +infinity]; + + // regular values + sqr [0x8.6374d8p-4, 0x3.f1d929p+8] = [0x4.65df11464764p-4, 0xf.8f918d688891p+16]; + sqr [0x6.61485c33c0b14p+4, 0x123456p0] = [0x2.8b45c3cc03ea6p+12, 0x14b66cb0ce4p0]; + sqr [-0x1.64722ad2480c9p+0, 0x1p0] = [0.0, 0x1.f04dba0302d4dp+0]; + sqr [0x1.6b079248747a2p+0, 0x2.b041176d263f6p+0] = [0x2.02ce7912cddf6p+0, 0x7.3a5dee779527p+0]; +} + +testcase mpfi_sqrt { + // special values + sqrt [0.0, 0.0] = [0.0, 0.0]; + sqrt [0.0, +9.0] = [0.0, +3.0]; + sqrt [0.0, +infinity] = [0.0, +infinity]; + + // regular values + sqrt [0xaaa1p0, 0x14b66cb0ce4p0] = [0xd1p0, 0x123456p0]; + sqrt [0xe.49ae7969e41bp-4, 0xaaa1p0] = [0xf.1ea42821b27a8p-4, 0xd1p0]; + sqrt [0xa.aa1p-4, 0x1.0c348f804c7a9p+0] = [0xd.1p-4, 0x1.06081714eef1dp+0]; + sqrt [0xe.49ae7969e41bp-4, 0x1.0c348f804c7a9p+0] = [0xf.1ea42821b27a8p-4, 0x1.06081714eef1dp+0]; +} + +testcase mpfi_sub { + // special values + sub [-infinity, -7.0] [-1.0, +8.0] = [-infinity, -6.0]; + sub [-infinity, 0.0] [+8.0, +infinity] = [-infinity, -8.0]; + sub [-infinity, +8.0] [0.0, +8.0] = [-infinity, +8.0]; + sub [entire] [0.0, +8.0] = [entire]; + sub [0.0, 0.0] [-infinity, -7.0] = [+7.0, +infinity]; + sub [0.0, +8.0] [-7.0, 0.0] = [0.0, +15.0]; + sub [0.0, 0.0] [0.0, +8.0] = [-8.0, 0.0]; + sub [0.0, +infinity] [0.0, +8.0] = [-8.0, +infinity]; + sub [0.0, 0.0] [+8.0, +infinity] = [-infinity, -8.0]; + sub [0.0, 0.0] [entire] = [entire]; + sub [0.0, +8.0] [-7.0, +8.0] = [-8.0, +15.0]; + sub [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + sub [0.0, +infinity] [0.0, +8.0] = [-8.0, +infinity]; + + // regular values + sub [-5.0, 59.0] [17.0, 81.0] = [-86.0, 42.0]; + sub [-0x1p-300, 0x123456p+28] [-0x789abcdp0, 0x10000000000000p-93] = [-0x10000000000001p-93, 0x123456789abcdp0]; + sub [-4.0, 7.0] [-3e300, 0x123456789abcdp-17] = [-0x123456791abcdp-17, 0x8f596b3002c1bp+947]; + sub [-0x1000100010001p+8, 0x1p+60] [-3e300, 0x1000100010001p0] = [-0x10101010101011p+4, 0x8f596b3002c1bp+947]; + + sub [-5.0, 1.0] [1.0, 0x1p+70] = [-0x10000000000001p+18, 0.0]; + sub [5.0, 0x1p+70] [3.0, 5.0] = [0.0, 0x1p+70]; +} + +testcase mpfi_sub_d { + // special values + sub [-infinity, -7.0] [-0x170ef54646d497p-107, -0x170ef54646d497p-107] = [-infinity, -0x1bffffffffffffp-50]; + sub [-infinity, -7.0] [0.0, 0.0] = [-infinity, -7.0]; + sub [-infinity, -7.0] [0x170ef54646d497p-107, 0x170ef54646d497p-107] = [-infinity, -7.0]; + sub [-infinity, 0.0] [-0x170ef54646d497p-106, -0x170ef54646d497p-106] = [-infinity, 0x170ef54646d497p-106]; + sub [-infinity, 0.0] [0.0, 0.0] = [-infinity, 0.0]; + sub [-infinity, 0.0] [0x170ef54646d497p-106, 0x170ef54646d497p-106] = [-infinity, -8.0e-17]; + sub [-infinity, 8.0] [-0x16345785d8a00000p0, -0x16345785d8a00000p0] = [-infinity, 0x16345785d8a00100p0]; + sub [-infinity, 8.0] [0.0, 0.0] = [-infinity, 8.0]; + sub [-infinity, 8.0] [0x16345785d8a00000p0, 0x16345785d8a00000p0] = [-infinity, -0x16345785d89fff00p0]; + sub [entire] [-0x170ef54646d497p-105, -0x170ef54646d497p-105] = [entire]; + sub [entire] [0.0e-17, 0.0e-17] = [entire]; + sub [entire] [+0x170ef54646d497p-105, +0x170ef54646d497p-105] = [entire]; + sub [0.0, 0.0] [-0x170ef54646d497p-109, -0x170ef54646d497p-109] = [+0x170ef54646d497p-109, +0x170ef54646d497p-109]; + sub [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + sub [0.0, 0.0] [0x170ef54646d497p-109, 0x170ef54646d497p-109] = [-0x170ef54646d497p-109, -0x170ef54646d497p-109]; + sub [0.0, 8.0] [-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107] = [0x114b37f4b51f71p-107, 0x10000000000001p-49]; + sub [0.0, 8.0] [0.0, 0.0] = [0.0, 8.0]; + sub [0.0, 8.0] [0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107] = [-0x114b37f4b51f71p-107, 8.0]; + sub [0.0, +infinity] [-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104] = [0x50b45a75f7e81p-104, +infinity]; + sub [0.0, +infinity] [0.0, 0.0] = [0.0, +infinity]; + sub [0.0, +infinity] [0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106] = [-0x142d169d7dfa03p-106, +infinity]; + + // regular values + sub [-32.0, -17.0] [0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47] = [-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47]; + sub [-0xfb53d14aa9c2fp-47, -17.0] [-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47] = [0.0, 0x7353d14aa9c2fp-47]; + sub [-32.0, -0xfb53d14aa9c2fp-48] [-0xfb53d14aa9c2fp-48, -0xfb53d14aa9c2fp-48] = [-0x104ac2eb5563d1p-48, 0.0]; + + sub [0x123456789abcdfp-48, 0x123456789abcdfp-4] [-3.5, -3.5] = [0x15b456789abcdfp-48, 0x123456789abd17p-4]; + sub [0x123456789abcdfp-56, 0x123456789abcdfp-4] [-3.5, -3.5] = [0x3923456789abcdp-52, 0x123456789abd17p-4]; + sub [-0xffp0, 0x123456789abcdfp-52] [-256.5, -256.5] = [0x18p-4, 0x101a3456789abdp-44]; + sub [-0x1fffffffffffffp-52, -0x1p-550] [-4097.5, -4097.5] = [0xfff8p-4, 0x10018p-4]; + + sub [0x123456789abcdfp-48, 0x123456789abcdfp-4] [3.5, 3.5] = [0xeb456789abcdfp-48, 0x123456789abca7p-4]; + sub [0x123456789abcdfp-56, 0x123456789abcdfp-4] [3.5, 3.5] = [-0x36dcba98765434p-52, 0x123456789abca7p-4]; + sub [-0xffp0, 0x123456789abcdfp-52] [256.5, 256.5] = [-0x1ff8p-4, -0xff5cba9876543p-44]; + sub [-0x1fffffffffffffp-52, -0x1p-550] [4097.5, 4097.5] = [-0x10038p-4, -0x10018p-4]; +} + +testcase mpfi_tan { + // special values + tan [-infinity, -7.0] = [entire]; + tan [-infinity, 0.0] = [entire]; + tan [-infinity, +8.0] = [entire]; + tan [entire] = [entire]; + tan [-1.0, 0.0] = [-0x18eb245cbee3a6p-52, 0.0]; + tan [0.0, 0.0] = [0.0, 0.0]; + tan [0.0, +1.0] = [0.0, 0x18eb245cbee3a6p-52]; + tan [0.0, +8.0] = [entire]; + tan [0.0, +infinity] = [entire]; + + // regular values + tan [0.125, 17.0] = [entire]; + tan [0x1921fb54442d18p-52, 0x1921fb54442d19p-52] = [entire]; + tan [-2.0, -0.5] = [entire]; + tan [-4.5, 0.625] = [entire]; + tan [-1.0, -0.25] = [-0x18eb245cbee3a6p-52, -0x105785a43c4c55p-54]; + tan [-0.5, 0.5] = [-0x117b4f5bf3474bp-53, 0x117b4f5bf3474bp-53]; + tan [0x71p+76, 0x71p+76] = [-0x1c8dc87ddcc134p-55, -0x1c8dc87ddcc133p-55]; + + tan [-7.0, 7.0] = [entire]; + tan [-7.0, 6.0] = [entire]; + tan [-7.0, 5.0] = [entire]; + tan [-7.0, 4.0] = [entire]; + tan [-7.0, 3.0] = [entire]; + tan [-7.0, 2.0] = [entire]; + tan [-7.0, 1.0] = [entire]; + tan [-7.0, 0.0] = [entire]; + tan [-7.0, -1.0] = [entire]; + tan [-7.0, -2.0] = [entire]; + tan [-7.0, -3.0] = [entire]; + tan [-7.0, -4.0] = [entire]; + tan [-7.0, -5.0] = [-0x1be2e6e13eea79p-53, 0x1b0b4b739bbb07p-51]; + tan [-7.0, -6.0] = [-0x1be2e6e13eea79p-53, 0x129fd86ebb95bfp-54]; + tan [-7.0, -7.0] = [-0x1be2e6e13eea79p-53, -0x1be2e6e13eea78p-53]; + + tan [-6.0, 7.0] = [entire]; + tan [-6.0, 6.0] = [entire]; + tan [-6.0, 5.0] = [entire]; + tan [-6.0, 4.0] = [entire]; + tan [-6.0, 3.0] = [entire]; + tan [-6.0, 2.0] = [entire]; + tan [-6.0, 1.0] = [entire]; + tan [-6.0, 0.0] = [entire]; + tan [-6.0, -1.0] = [entire]; + tan [-6.0, -2.0] = [entire]; + tan [-6.0, -3.0] = [entire]; + tan [-6.0, -4.0] = [entire]; + tan [-6.0, -5.0] = [0x129fd86ebb95bep-54, 0x1b0b4b739bbb07p-51]; + tan [-6.0, -6.0] = [0x129fd86ebb95bep-54, 0x129fd86ebb95bfp-54]; + + tan [-5.0, 7.0] = [entire]; + tan [-5.0, 6.0] = [entire]; + tan [-5.0, 5.0] = [entire]; + tan [-5.0, 4.0] = [entire]; + tan [-5.0, 3.0] = [entire]; + tan [-5.0, 2.0] = [entire]; + tan [-5.0, 1.0] = [entire]; + tan [-5.0, 0.0] = [entire]; + tan [-5.0, -1.0] = [entire]; + tan [-5.0, -2.0] = [entire]; + tan [-5.0, -3.0] = [entire]; + tan [-5.0, -4.0] = [entire]; + tan [-5.0, -5.0] = [0x1b0b4b739bbb06p-51, 0x1b0b4b739bbb07p-51]; + + tan [-4.0, 7.0] = [entire]; + tan [-4.0, 6.0] = [entire]; + tan [-4.0, 5.0] = [entire]; + tan [-4.0, 4.0] = [entire]; + tan [-4.0, 3.0] = [entire]; + tan [-4.0, 2.0] = [entire]; + tan [-4.0, 1.0] = [entire]; + tan [-4.0, 0.0] = [entire]; + tan [-4.0, -1.0] = [entire]; + tan [-4.0, -2.0] = [-0x12866f9be4de14p-52, 0x117af62e0950f9p-51]; + tan [-4.0, -3.0] = [-0x12866f9be4de14p-52, 0x123ef71254b870p-55]; + tan [-4.0, -4.0] = [-0x12866f9be4de14p-52, -0x12866f9be4de13p-52]; + + tan [-3.0, 7.0] = [entire]; + tan [-3.0, 6.0] = [entire]; + tan [-3.0, 5.0] = [entire]; + tan [-3.0, 4.0] = [entire]; + tan [-3.0, 3.0] = [entire]; + tan [-3.0, 2.0] = [entire]; + tan [-3.0, 1.0] = [entire]; + tan [-3.0, 0.0] = [entire]; + tan [-3.0, -1.0] = [entire]; + tan [-3.0, -2.0] = [0x123ef71254b86fp-55, 0x117af62e0950f9p-51]; + tan [-3.0, -3.0] = [0x123ef71254b86fp-55, 0x123ef71254b870p-55]; + + tan [-2.0, 7.0] = [entire]; + tan [-2.0, 6.0] = [entire]; + tan [-2.0, 5.0] = [entire]; + tan [-2.0, 4.0] = [entire]; + tan [-2.0, 3.0] = [entire]; + tan [-2.0, 2.0] = [entire]; + tan [-2.0, 1.0] = [entire]; + tan [-2.0, 0.0] = [entire]; + tan [-2.0, -1.0] = [entire]; + tan [-2.0, -2.0] = [0x117af62e0950f8p-51, 0x117af62e0950f9p-51]; + + tan [-1.0, 7.0] = [entire]; + tan [-1.0, 6.0] = [entire]; + tan [-1.0, 5.0] = [entire]; + tan [-1.0, 4.0] = [entire]; + tan [-1.0, 3.0] = [entire]; + tan [-1.0, 2.0] = [entire]; + tan [-1.0, 1.0] = [-0x18eb245cbee3a6p-52, 0x18eb245cbee3a6p-52]; + tan [-1.0, 0.0] = [-0x18eb245cbee3a6p-52, 0.0]; + tan [-1.0, -1.0] = [-0x18eb245cbee3a6p-52, -0x18eb245cbee3a5p-52]; + + tan [1.0, 7.0] = [entire]; + tan [1.0, 6.0] = [entire]; + tan [1.0, 5.0] = [entire]; + tan [1.0, 4.0] = [entire]; + tan [1.0, 3.0] = [entire]; + tan [1.0, 2.0] = [entire]; + tan [1.0, 1.0] = [0x18eb245cbee3a5p-52, 0x18eb245cbee3a6p-52]; + + tan [2.0, 7.0] = [entire]; + tan [2.0, 6.0] = [entire]; + tan [2.0, 5.0] = [entire]; + tan [2.0, 4.0] = [-0x117af62e0950f9p-51, 0x12866f9be4de14p-52]; + tan [2.0, 3.0] = [-0x117af62e0950f9p-51, -0x123ef71254b86fp-55]; + tan [2.0, 2.0] = [-0x117af62e0950f9p-51, -0x117af62e0950f8p-51]; + + tan [3.0, 7.0] = [entire]; + tan [3.0, 6.0] = [entire]; + tan [3.0, 5.0] = [entire]; + tan [3.0, 4.0] = [-0x123ef71254b870p-55, 0x12866f9be4de14p-52]; + tan [3.0, 3.0] = [-0x123ef71254b870p-55, -0x123ef71254b86fp-55]; + + tan [4.0, 7.0] = [entire]; + tan [4.0, 6.0] = [entire]; + tan [4.0, 5.0] = [entire]; + tan [4.0, 4.0] = [0x12866f9be4de13p-52, 0x12866f9be4de14p-52]; + + tan [5.0, 7.0] = [-0x1b0b4b739bbb07p-51, 0x1be2e6e13eea79p-53]; + tan [5.0, 6.0] = [-0x1b0b4b739bbb07p-51, -0x129fd86ebb95bep-54]; + tan [5.0, 5.0] = [-0x1b0b4b739bbb07p-51, -0x1b0b4b739bbb06p-51]; + + tan [6.0, 7.0] = [-0x129fd86ebb95bfp-54, 0x1be2e6e13eea79p-53]; + tan [6.0, 6.0] = [-0x129fd86ebb95bfp-54, -0x129fd86ebb95bep-54]; + + tan [7.0, 7.0] = [0x1be2e6e13eea78p-53, 0x1be2e6e13eea79p-53]; +} + +testcase mpfi_tanh { + // special values + tanh [-infinity, -7.0] = [-1.0, -0x1ffffc832750f1p-53]; + tanh [-infinity, 0.0] = [-1.0, 0.0]; + tanh [-infinity, 8.0] = [-1.0, 0x1fffff872a91f9p-53]; + tanh [entire] = [-1.0, +1.0]; + tanh [-1.0, 0.0] = [-0x185efab514f395p-53, 0.0]; + tanh [0.0, 0.0] = [0.0, 0.0]; + tanh [0.0, 1.0] = [0.0, 0x185efab514f395p-53]; + tanh [0.0, 8.0] = [0.0, 0x1fffff872a91f9p-53]; + tanh [0.0, +infinity] = [0.0, +1.0]; + + // regular values + tanh [-0.125, 0.0] = [-0x1fd5992bc4b835p-56, 0.0]; + tanh [0.0, 0x10000000000001p-53] = [0.0, 0x1d9353d7568af5p-54]; + tanh [-4.5, -0.625] = [-0x1ffdfa72153984p-53, -0x11bf47eabb8f95p-53]; + tanh [1.0, 3.0] = [0x185efab514f394p-53, 0x1fd77d111a0b00p-53]; + tanh [17.0, 18.0] = [0x1fffffffffffe1p-53, 0x1ffffffffffffcp-53]; +} + +testcase mpfi_union { + // special values + convexHull [-infinity, -7.0] [-1.0, +8.0] = [-infinity, +8.0]; + convexHull [-infinity, 0.0] [+8.0, +infinity] = [entire]; + convexHull [-infinity, +8.0] [0.0, +8.0] = [-infinity, +8.0]; + convexHull [entire] [0.0, +8.0] = [entire]; + convexHull [0.0, 0.0] [-infinity, -7.0] = [-infinity, 0.0]; + convexHull [0.0, +8.0] [-7.0, 0.0] = [-7.0, +8.0]; + convexHull [0.0, 0.0] [0.0, +8.0] = [0.0, +8.0]; + convexHull [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + convexHull [0.0, 0.0] [+8.0, +infinity] = [0.0, +infinity]; + convexHull [0.0, 0.0] [entire] = [entire]; + convexHull [0.0, +8.0] [-7.0, +8.0] = [-7.0, +8.0]; + convexHull [0.0, 0.0] [0.0, 0.0] = [0.0, 0.0]; + convexHull [0.0, +infinity] [0.0, +8.0] = [0.0, +infinity]; + + // regular values + convexHull [0x12p0, 0x90p0] [-0x0dp0, 0x34p0] = [-0x0dp0, 0x90p0]; +} diff --git a/test/runtests.jl b/test/runtests.jl index 34126a985..3182dd236 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2,14 +2,26 @@ using Test using IntervalArithmetic using InteractiveUtils -function include_test(filename) - @testset "$filename" begin - include(filename) +include("generate_ITF1788.jl") + +open("tests_warning.log", "w") do io + redirect_stderr(io) do + # interval tests + for f ∈ readdir("interval_tests"; join = true) + if !occursin("complex", f) + @testset "$f" begin + include(f) + end + end + end + # ITF1788 tests + for f ∈ readdir("itl") + generate(f) + end + for f ∈ readdir("ITF1788_tests"; join = true) + @testset "$f" begin + include(f) + end + end end end - -# interval tests -include_test("interval_tests/run_intervals.jl") - -# ITF1788 tests -include_test("test_ITF1788/run_ITF1788.jl") # TODO fix these tests diff --git a/test/test_ITF1788/LICENSE.md b/test/test_ITF1788/LICENSE.md deleted file mode 100644 index 261eeb9e9..000000000 --- a/test/test_ITF1788/LICENSE.md +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/test/test_ITF1788/NOTICE b/test/test_ITF1788/NOTICE deleted file mode 100644 index b5d923ab2..000000000 --- a/test/test_ITF1788/NOTICE +++ /dev/null @@ -1,16 +0,0 @@ -ITF1788 -======= - -Copyright 2014 - -Marco Nehmeier (nehmeier@informatik.uni-wuerzburg.de) -Maximilian Kiesner (maximilian.kiesner@stud-mail.uni-wuerzburg.de) - -Department of Computer Science -University of Wuerzburg, Germany - -This product includes software developed at -Chair of Software Engineering -Department of Computer Science -University of Wuerzburg, Germany -http://se.informatik.uni-wuerzburg.de/ diff --git a/test/test_ITF1788/README.md b/test/test_ITF1788/README.md deleted file mode 100644 index 07d603222..000000000 --- a/test/test_ITF1788/README.md +++ /dev/null @@ -1 +0,0 @@ -This folder contains the tests from the [ITF1788](https://github.com/oheim/ITF1788) testsuite developed by Oliver Heimlich. The Julia code was generated using [ITF1788.jl](https://github.com/juliaintervals/itf1788.jl). Instructions on how to generate locally the julia tests from the original tests specifications can be found in the ITF1788.jl [repository](https://github.com/juliaintervals/itf1788.jl). diff --git a/test/test_ITF1788/abs_rev.jl b/test/test_ITF1788/abs_rev.jl deleted file mode 100644 index ff5f869da..000000000 --- a/test/test_ITF1788/abs_rev.jl +++ /dev/null @@ -1,51 +0,0 @@ -@testset "minimal.absRevBin_test" begin - - @test isequal_interval(abs_rev(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(0.0, 1.0), emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(0.0, 1.0), bareinterval(7.0, 9.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 1.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-2.0, -1.0), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64}))[2], bareinterval(-1.0, 1.0)) - - @test isequal_interval(abs_rev(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64}))[2], bareinterval(0.0, 0.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.0, -1.0), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), entireinterval(BareInterval{Float64}))[2], bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(abs_rev(bareinterval(0x1p-1022, 0x1p-1022), entireinterval(BareInterval{Float64}))[2], bareinterval(-0x1p-1022, 0x1p-1022)) - - @test isequal_interval(abs_rev(bareinterval(-0x1p-1022, -0x1p-1022), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-0x1.FFFFFFFFFFFFFp1023, -0x1.FFFFFFFFFFFFFp1023), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64}))[2], bareinterval(-2.0, 2.0)) - - @test isequal_interval(abs_rev(bareinterval(1.0, 2.0), bareinterval(0.0, 2.0))[2], bareinterval(1.0, 2.0)) - - @test isequal_interval(abs_rev(bareinterval(0.0, 1.0), bareinterval(-0.5, 2.0))[2], bareinterval(-0.5, 1.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.0, 1.0), entireinterval(BareInterval{Float64}))[2], bareinterval(-1.0, 1.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.0, 0.0), entireinterval(BareInterval{Float64}))[2], bareinterval(0.0, 0.0)) - - @test isequal_interval(abs_rev(bareinterval(0.0, Inf), entireinterval(BareInterval{Float64}))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-Inf, 0.0), entireinterval(BareInterval{Float64}))[2], bareinterval(0.0, 0.0)) - - @test isequal_interval(abs_rev(bareinterval(1.0, Inf), bareinterval(-Inf, 0.0))[2], bareinterval(-Inf, -1.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64}))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-Inf, 1.0), entireinterval(BareInterval{Float64}))[2], bareinterval(-1.0, 1.0)) - -end diff --git a/test/test_ITF1788/atan2.jl b/test/test_ITF1788/atan2.jl deleted file mode 100644 index 2f76a0a09..000000000 --- a/test/test_ITF1788/atan2.jl +++ /dev/null @@ -1,79 +0,0 @@ -@testset "minimal.atan2_test" begin - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)), bareinterval(0x1.921FB54442D18p1, 0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, Inf)), bareinterval(0.0, 0.0)) - - @test isequal_interval(atan(bareinterval(0.0, Inf), bareinterval(0.0, 0.0)), bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p0)) - - @test isequal_interval(atan(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)), bareinterval(-0x1.921FB54442D19p0, -0x1.921FB54442D18p0)) - - @test isequal_interval(atan(bareinterval(-0x1p-1022, 0.0), bareinterval(-0x1p-1022, -0x1p-1022)), bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)), bareinterval(0x1.2D97C7F3321D2p1, 0x1.2D97C7F3321D3p1)) - - @test isequal_interval(atan(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0)), bareinterval(0x1.921FB54442D18p-1, 0x1.921FB54442D19p-1)) - - @test isequal_interval(atan(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)), bareinterval(-0x1.921FB54442D19p-1, -0x1.921FB54442D18p-1)) - - @test isequal_interval(atan(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)), bareinterval(-0x1.2D97C7F3321D3p1, -0x1.2D97C7F3321D2p1)) - - @test isequal_interval(atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, -0x1p-1022)), bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(0x1p-1022, 0x1p-1022)), bareinterval(-0x1.921FB54442D19p-1, +0x1.921FB54442D19p-1)) - - @test isequal_interval(atan(bareinterval(-0x1p-1022, -0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)), bareinterval(-0x1.2D97C7F3321D3p1, -0x1.921FB54442D18p-1)) - - @test isequal_interval(atan(bareinterval(0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)), bareinterval(0x1.921FB54442D18p-1, 0x1.2D97C7F3321D3p1)) - - @test isequal_interval(atan(bareinterval(-2.0, 2.0), bareinterval(-3.0, -1.0)), bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(0.0, 2.0), bareinterval(-3.0, -1.0)), bareinterval(0x1.0468A8ACE4DF6p1, 0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(1.0, 3.0), bareinterval(-3.0, -1.0)), bareinterval(0x1.E47DF3D0DD4Dp0, 0x1.68F095FDF593Dp1)) - - @test isequal_interval(atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18p0, 0x1.56C6E7397F5AFp1)) - - @test isequal_interval(atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 2.0)), bareinterval(0x1.DAC670561BB4Fp-2, 0x1.56C6E7397F5AFp1)) - - @test isequal_interval(atan(bareinterval(1.0, 3.0), bareinterval(0.0, 2.0)), bareinterval(0x1.DAC670561BB4Fp-2, 0x1.921FB54442D19p0)) - - @test isequal_interval(atan(bareinterval(1.0, 3.0), bareinterval(1.0, 3.0)), bareinterval(0x1.4978FA3269EE1p-2, 0x1.3FC176B7A856p0)) - - @test isequal_interval(atan(bareinterval(0.0, 2.0), bareinterval(1.0, 3.0)), bareinterval(0x0p0, 0x1.1B6E192EBBE45p0)) - - @test isequal_interval(atan(bareinterval(-2.0, 2.0), bareinterval(1.0, 3.0)), bareinterval(-0x1.1B6E192EBBE45p0, +0x1.1B6E192EBBE45p0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(1.0, 3.0)), bareinterval(-0x1.1B6E192EBBE45p0, 0x0p0)) - - @test isequal_interval(atan(bareinterval(-3.0, -1.0), bareinterval(1.0, 3.0)), bareinterval(-0x1.3FC176B7A856p0, -0x1.4978FA3269EE1p-2)) - - @test isequal_interval(atan(bareinterval(-3.0, -1.0), bareinterval(0.0, 2.0)), bareinterval(-0x1.921FB54442D19p0, -0x1.DAC670561BB4Fp-2)) - - @test isequal_interval(atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 2.0)), bareinterval(-0x1.56C6E7397F5AFp1, -0x1.DAC670561BB4Fp-2)) - - @test isequal_interval(atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 0.0)), bareinterval(-0x1.56C6E7397F5AFp1, -0x1.921FB54442D18p0)) - - @test isequal_interval(atan(bareinterval(-3.0, -1.0), bareinterval(-3.0, -1.0)), bareinterval(-0x1.68F095FDF593Dp1, -0x1.E47DF3D0DD4Dp0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-3.0, -1.0)), bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(-5.0, 0.0), bareinterval(-5.0, 0.0)), bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(0.0, 5.0), bareinterval(-5.0, 0.0)), bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p1)) - - @test isequal_interval(atan(bareinterval(0.0, 5.0), bareinterval(0.0, 5.0)), bareinterval(0x0p0, 0x1.921FB54442D19p0)) - - @test isequal_interval(atan(bareinterval(-5.0, 0.0), bareinterval(0.0, 5.0)), bareinterval(-0x1.921FB54442D19p0, 0x0p0)) - -end diff --git a/test/test_ITF1788/c-xsc.jl b/test/test_ITF1788/c-xsc.jl deleted file mode 100644 index 538967281..000000000 --- a/test/test_ITF1788/c-xsc.jl +++ /dev/null @@ -1,351 +0,0 @@ -@testset "cxsc.intervaladdsub" begin - - @test isequal_interval(+(bareinterval(10.0, 20.0), bareinterval(13.0, 17.0)), bareinterval(23.0, 37.0)) - - @test isequal_interval(+(bareinterval(13.0, 17.0), bareinterval(10.0, 20.0)), bareinterval(23.0, 37.0)) - - @test isequal_interval(-(bareinterval(10.0, 20.0), bareinterval(13.0, 16.0)), bareinterval(-6.0, 7.0)) - - @test isequal_interval(-(bareinterval(13.0, 16.0), bareinterval(10.0, 20.0)), bareinterval(-7.0, 6.0)) - - @test isequal_interval(-(bareinterval(10.0, 20.0)), bareinterval(-20.0, -10.0)) - - @test isequal_interval(+(bareinterval(10.0, 20.0)), bareinterval(10.0, 20.0)) - -end - -@testset "cxsc.intervalmuldiv" begin - - @test isequal_interval(*(bareinterval(1.0, 2.0), bareinterval(3.0, 4.0)), bareinterval(3.0, 8.0)) - - @test isequal_interval(*(bareinterval(-1.0, 2.0), bareinterval(3.0, 4.0)), bareinterval(-4.0, 8.0)) - - @test isequal_interval(*(bareinterval(-2.0, 1.0), bareinterval(3.0, 4.0)), bareinterval(-8.0, 4.0)) - - @test isequal_interval(*(bareinterval(-2.0, -1.0), bareinterval(3.0, 4.0)), bareinterval(-8.0, -3.0)) - - @test isequal_interval(*(bareinterval(1.0, 2.0), bareinterval(-3.0, 4.0)), bareinterval(-6.0, 8.0)) - - @test isequal_interval(*(bareinterval(-1.0, 2.0), bareinterval(-3.0, 4.0)), bareinterval(-6.0, 8.0)) - - @test isequal_interval(*(bareinterval(-2.0, 1.0), bareinterval(-3.0, 4.0)), bareinterval(-8.0, 6.0)) - - @test isequal_interval(*(bareinterval(-2.0, -1.0), bareinterval(-3.0, 4.0)), bareinterval(-8.0, 6.0)) - - @test isequal_interval(*(bareinterval(1.0, 2.0), bareinterval(-4.0, 3.0)), bareinterval(-8.0, 6.0)) - - @test isequal_interval(*(bareinterval(-1.0, 2.0), bareinterval(-4.0, 3.0)), bareinterval(-8.0, 6.0)) - - @test isequal_interval(*(bareinterval(-2.0, 1.0), bareinterval(-4.0, 3.0)), bareinterval(-6.0, 8.0)) - - @test isequal_interval(*(bareinterval(-2.0, -1.0), bareinterval(-4.0, 3.0)), bareinterval(-6.0, 8.0)) - - @test isequal_interval(*(bareinterval(1.0, 2.0), bareinterval(-4.0, -3.0)), bareinterval(-8.0, -3.0)) - - @test isequal_interval(*(bareinterval(-1.0, 2.0), bareinterval(-4.0, -3.0)), bareinterval(-8.0, 4.0)) - - @test isequal_interval(*(bareinterval(-2.0, -1.0), bareinterval(-4.0, -3.0)), bareinterval(3.0, 8.0)) - - @test isequal_interval(/(bareinterval(1.0, 2.0), bareinterval(4.0, 8.0)), bareinterval(0.125, 0.5)) - - @test isequal_interval(/(bareinterval(-1.0, 2.0), bareinterval(4.0, 8.0)), bareinterval(-0.25, 0.5)) - - @test isequal_interval(/(bareinterval(-2.0, 1.0), bareinterval(4.0, 8.0)), bareinterval(-0.5, 0.25)) - - @test isequal_interval(/(bareinterval(-2.0, -1.0), bareinterval(4.0, 8.0)), bareinterval(-0.5, -0.125)) - - @test isequal_interval(/(bareinterval(1.0, 2.0), bareinterval(-4.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-1.0, 2.0), bareinterval(-4.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-2.0, 1.0), bareinterval(-4.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-2.0, -1.0), bareinterval(-4.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(1.0, 2.0), bareinterval(-8.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-1.0, 2.0), bareinterval(-8.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-2.0, 1.0), bareinterval(-8.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-2.0, -1.0), bareinterval(-8.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(1.0, 2.0), bareinterval(-8.0, -4.0)), bareinterval(-0.5, -0.125)) - - @test isequal_interval(/(bareinterval(-1.0, 2.0), bareinterval(-8.0, -4.0)), bareinterval(-0.5, 0.25)) - - @test isequal_interval(/(bareinterval(-2.0, 1.0), bareinterval(-8.0, -4.0)), bareinterval(-0.25, 0.5)) - - @test isequal_interval(/(bareinterval(-2.0, -1.0), bareinterval(-8.0, -4.0)), bareinterval(0.125, 0.5)) - -end - -@testset "cxsc.intervalsetops" begin - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)), bareinterval(-4.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)), bareinterval(-4.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)), bareinterval(-4.0, 4.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)), bareinterval(-2.0, 4.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)), bareinterval(-2.0, 4.0)) - - @test isequal_interval(hull(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)), bareinterval(-4.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)), bareinterval(-4.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)), bareinterval(-4.0, 4.0)) - - @test isequal_interval(hull(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(hull(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, 4.0)) - - @test isequal_interval(hull(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, 4.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)), bareinterval(-2.0, -1.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)), bareinterval(1.0, 2.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, -1.0)) - - @test isequal_interval(intersect_interval(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(intersect_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(intersect_interval(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)), bareinterval(1.0, 2.0)) - - @test isequal_interval(intersect_interval(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)), emptyinterval(BareInterval{Float64})) - -end - -@testset "cxsc.intervalmixsetops" begin - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)), bareinterval(-4.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)), bareinterval(-2.0, 4.0)) - - @test isequal_interval(hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)), bareinterval(-4.0, 2.0)) - - @test isequal_interval(hull(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(hull(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)), bareinterval(-2.0, 4.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(intersect_interval(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(intersect_interval(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)), emptyinterval(BareInterval{Float64})) - -end - -@testset "cxsc.scalarmixsetops" begin - - @test isequal_interval(hull(bareinterval(-2.0, -2.0), bareinterval(-4.0, -4.0)), bareinterval(-4.0, -2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)), bareinterval(-2.0, -2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, -2.0), bareinterval(2.0, 2.0)), bareinterval(-2.0, 2.0)) - - @test isequal_interval(hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, -2.0)), bareinterval(-4.0, -2.0)) - - @test isequal_interval(hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)), bareinterval(-2.0, -2.0)) - - @test isequal_interval(hull(bareinterval(2.0, 2.0), bareinterval(-2.0, -2.0)), bareinterval(-2.0, 2.0)) - -end - -@testset "cxsc.intervalsetcompops" begin - - @test isstrictsubset_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) == true - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) == false - - @test isstrictsubset_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) == true - - @test isstrictsubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) == false - - @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) == true - - @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) == true - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) == true - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) == true - - @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) == false - - @test issubset_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) == true - - @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) == true - - @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) == true - - @test issubset_interval(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) == false - - @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) == false - - @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) == true - - @test isequal_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) == false - -end - -@testset "cxsc.intervalscalarsetcompops" begin - - @test isstrictsubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) == false - - @test isstrictsubset_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) == false - - @test isstrictsubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) == true - - @test isstrictsubset_interval(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) == false - - @test isstrictsubset_interval(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) == false - - @test isstrictsubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) == false - - @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) == false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) == false - - @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) == false - - @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) == true - - @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) == false - - @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) == true - - @test issubset_interval(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) == true - - @test issubset_interval(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) == true - - @test issubset_interval(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) == false - - @test issubset_interval(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) == false - - @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) == true - - @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) == false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) == false - - @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) == false - - @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) == true - -end - -@testset "cxsc.intervalstdfunc" begin - - @test isequal_interval(nthpow(bareinterval(11.0, 11.0), 2), bareinterval(121.0, 121.0)) - - @test isequal_interval(nthpow(bareinterval(0.0, 0.0), 2), bareinterval(0.0, 0.0)) - - @test isequal_interval(nthpow(bareinterval(-9.0, -9.0), 2), bareinterval(81.0, 81.0)) - - @test isequal_interval(sqrt(bareinterval(121.0, 121.0)), bareinterval(11.0, 11.0)) - - @test isequal_interval(sqrt(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(sqrt(bareinterval(81.0, 81.0)), bareinterval(9.0, 9.0)) - - @test isequal_interval(nthroot(bareinterval(27.0, 27.0), 3), bareinterval(3.0, 3.0)) - - @test isequal_interval(nthroot(bareinterval(0.0, 0.0), 4), bareinterval(0.0, 0.0)) - - @test isequal_interval(nthroot(bareinterval(1024.0, 1024.0), 10), bareinterval(2.0, 2.0)) - - @test isequal_interval(^(bareinterval(2.0, 2.0), bareinterval(2.0, 2.0)), bareinterval(4.0, 4.0)) - - @test isequal_interval(^(bareinterval(4.0, 4.0), bareinterval(5.0, 5.0)), bareinterval(1024.0, 1024.0)) - - @test isequal_interval(^(bareinterval(2.0, 2.0), bareinterval(3.0, 3.0)), bareinterval(8.0, 8.0)) - -end diff --git a/test/test_ITF1788/fi_lib.jl b/test/test_ITF1788/fi_lib.jl deleted file mode 100644 index cf3ee05e7..000000000 --- a/test/test_ITF1788/fi_lib.jl +++ /dev/null @@ -1,1745 +0,0 @@ -@testset "FI_LIB.addii" begin - - @test isequal_interval(+(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x3.0000000000000P+0, 0x3.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, -0x3.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)), bareinterval(0x3.F400000000000P-1064, 0x3.F400000000000P-1064)) - - @test isequal_interval(+(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(+(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)), bareinterval(-0x3.F400000000000P-1064, -0x3.F400000000000P-1064)) - - @test isequal_interval(+(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020)) - - @test isequal_interval(+(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020)) - - @test isequal_interval(+(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)), bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)), bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) - - @test isequal_interval(+(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) - -end - -@testset "FI_LIB.subii" begin - - @test isequal_interval(-(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4)) - - @test isequal_interval(-(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020)) - - @test isequal_interval(-(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020)) - - @test isequal_interval(-(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(-0x2.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)), bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(-0x4.0000000000000P+0, -0x2.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)), bareinterval(-0xA.0000000000000P+0, -0x8.0000000000000P+0)) - - @test isequal_interval(-(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)), bareinterval(0x8.0000000000000P+0, 0xA.0000000000000P+0)) - -end - -@testset "FI_LIB.mulii" begin - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)), bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020)) - - @test isequal_interval(*(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)), bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020)) - - @test isequal_interval(*(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(*(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) - - @test isequal_interval(*(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)), bareinterval(-0xF.0000000000000P+0, +0x1.4000000000000P+4)) - - @test isequal_interval(*(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, +0x8.0000000000000P+0)), bareinterval(-0x2.8000000000000P+4, +0x1.0000000000000P+4)) - - @test isequal_interval(*(bareinterval(-0x2.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)), bareinterval(-0x1.4000000000000P+4, +0xF.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x4.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)), bareinterval(-0x1.4000000000000P+4, +0x1.0000000000000P+4)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)), bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(-0x6.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(*(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) - - @test isequal_interval(*(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) - - @test isequal_interval(*(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)), bareinterval(-0x4.0000000000000P-1076, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(*(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - -end - -@testset "FI_LIB.divii" begin - - @test isequal_interval(/(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020)) - - @test isequal_interval(/(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020)) - - @test isequal_interval(/(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) - - @test isequal_interval(/(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) - - @test isequal_interval(/(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0)) - - @test isequal_interval(/(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4)) - - @test isequal_interval(/(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4)) - - @test isequal_interval(/(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4)) - - @test isequal_interval(/(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4)) - - @test isequal_interval(/(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0)) - - @test isequal_interval(/(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0)) - - @test isequal_interval(/(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)), bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0)) - - @test isequal_interval(/(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)), bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0)) - -end - -@testset "FI_LIB.unary_functions" begin - - @test isequal_interval(exp(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)), bareinterval(0x0.0000000000000P+0, 0x2.BA43457B11D98P-4)) - - @test isequal_interval(exp(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)), bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA38P-4)) - - @test isequal_interval(exp(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)), bareinterval(0x0.0000000000000P+0, 0x1.5D7A2F6655DFCP-848)) - - @test isequal_interval(exp(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)), bareinterval(0x9.34C0766401B20P-472, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x2.B7E151628AED2P+0, 0x7.63992E35376B8P+0)) - - @test isequal_interval(exp(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)), bareinterval(0x5.E2D58D8B3BCDCP-4, 0x7.63992E35376B8P+0)) - - @test isequal_interval(exp(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)), bareinterval(0x1.B993FE00D5376P-8, 0xC.BED8666758578P-8)) - - @test isequal_interval(exp(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)), bareinterval(0x2.2A555477F0396P-4, 0x1.D27660B11A9F0P+0)) - - @test isequal_interval(exp(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(exp(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)), bareinterval(0x1.0000000000000P+0, 0x2.B7E151628AED4P+0)) - - @test isequal_interval(exp(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0)) - - @test isequal_interval(exp(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x7.6322F8540CFB4P+0)) - - @test isequal_interval(exp(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)), bareinterval(0x2.2A577ECE59DC6P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)), bareinterval(0x2.2A55549A958EAP-4, 0x1.0000000000001P+0)) - - @test isequal_interval(exp2(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)), bareinterval(0x0.0000000000000P+0, 0x4.B1AC6F8470484P-4)) - - @test isequal_interval(exp2(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)), bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFC00P-4)) - - @test isequal_interval(exp2(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)), bareinterval(0x0.0000000000000P+0, 0x1.6FB78C613E5ECP-588)) - - @test isequal_interval(exp2(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)), bareinterval(0x8.4EB038B9B8508P-328, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)), bareinterval(0x8.0000000000000P-4, 0x4.0000000000000P+0)) - - @test isequal_interval(exp2(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)), bareinterval(0x8.0000000000000P-8, 0x2.0000000000000P-4)) - - @test isequal_interval(exp2(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)), bareinterval(0x4.0000000000000P-4, 0x1.8406003B2AE5DP+0)) - - @test isequal_interval(exp2(bareinterval(0x4.4400000000000P-1068, 0x4.48CD100000000P-1052)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(exp2(bareinterval(-0x4.8D15088880000P-1040, +0x4.8D11554000000P-1048)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0)) - - @test isequal_interval(exp2(bareinterval(0xD.0888D11000000P-1044, 0x1.000003443AAAAP+0)), bareinterval(0x1.0000000000000P+0, 0x2.0000048742860P+0)) - - @test isequal_interval(exp2(bareinterval(-0xD.15550CC880000P-1040, +0x4.8D150CC000000P-1048)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0)) - - @test isequal_interval(exp2(bareinterval(-0x4.8D159E0000000P-1048, +0x1.FFFFFF0999999P+0)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x3.FFFFFD54D58B0P+0)) - - @test isequal_interval(exp2(bareinterval(-0x1.FFFFFFFFFFFFFP+0, +0x1.14C8911540000P-1040)), bareinterval(0x4.0000000000000P-4, 0x1.0000000000001P+0)) - - @test isequal_interval(exp10(bareinterval(-0x2.8457BC029986EP+112, -0x1.7A77BFCCF5A9EP-232)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x6.05C0BB1BCB730P-220, -0x3.C5EC30FBB68C8P-508)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x2.9B09919BF9D9EP+272, -0xE.20FF41BD18058P-204)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.1503444763FC5P-416, -0x2.075DF98B2478CP-456)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x4.ECBC855871080P+332, -0x1.3A01905E36F84P+0)), bareinterval(0x0.0000000000000P+0, 0xF.317F8555628F0P-8)) - - @test isequal_interval(exp10(bareinterval(-0x7.32EDAB7F60A50P+236, -0x2.404E44C49C644P-440)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x6.5263CF84EF388P+172, -0x1.63A15E999EB64P-344)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.4171976A1CA54P-288, -0x6.941F470A70074P-756)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x4.69BB1D34B9570P-76, -0x7.78A1F475A306CP-564)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x2.E046DB554037CP+256, -0x2.6ABC15579B2B2P-48)), bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA70P-4)) - - @test isequal_interval(exp10(bareinterval(-0xE.33C49CF5B8790P+652, -0x8.297A99ED9ED08P+8)), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(exp10(bareinterval(-0x1.7AAA15EBBD3F2P+8, -0x6.3E590E626451CP-172)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x2.8F9204BC4041EP+988, -0x6.ACFA418D8F92CP-544)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x2.B00450A48D586P-148, -0x2.BB570B356C6CAP-440)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.9E7DDBBE00F75P+352, -0xC.41329461A0C30P-512)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.5BD629B25AA23P-236, -0x7.DEA605DEC97CCP-316)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x3.AE1DC13A652CAP+168, -0x6.65D7E0A247778P-56)), bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFFF8P-4)) - - @test isequal_interval(exp10(bareinterval(-0xA.27B4555158148P-68, -0x5.2B55801231EC8P-344)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.D68A6BA7E617FP+12, -0x6.36B661DCE2688P-236)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.98EF0C6A8BD66P+132, -0x1.EB0E1AB78F314P-480)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x1.C08152CC09416P+220, -0x7.4CF193131FA64P-192)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x6.F70E0DA4D2BA0P-140, -0x1.7036C237D5B00P-672)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0xF.CC937FA330E40P+648, -0x3.A0EE84451C92CP-324)), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) - - @test isequal_interval(exp10(bareinterval(-0x5.F775993940188P-120, -0x1.8BCA641025A83P-124)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(log(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)), bareinterval(-0xB.47B530A1054D8P+4, +0x4.227AD8183FB70P+4)) - - @test isequal_interval(log(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)), bareinterval(-0x1.64CBA844FC0EAP+8, -0x9.968AD8B569FE0P+4)) - - @test isequal_interval(log(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)), bareinterval(-0xA.426B5145A44A0P+4, +0xA.40B346F454218P+4)) - - @test isequal_interval(log(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)), bareinterval(-0x1.52D81024E4C23P+8, -0x1.3813C01ACD25CP+8)) - - @test isequal_interval(log(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)), bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4)) - - @test isequal_interval(log(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)), bareinterval(-0x1.C9B8D4127E3DAP+4, +0xC.091AAD1207058P+4)) - - @test isequal_interval(log(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)), bareinterval(-0x1.49B9D16B7E46AP+8, +0x8.A1137BDE55CF8P+4)) - - @test isequal_interval(log(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)), bareinterval(-0x1.028323B4D95B4P+8, +0x6.21D80D9193AB8P+4)) - - @test isequal_interval(log(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)), bareinterval(-0x2.142D983D15A28P+8, -0xE.2C8FA3F896A50P+4)) - - @test isequal_interval(log(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)), bareinterval(-0x1.907255D3994FEP+8, -0x5.A87FCF5FBD800P+4)) - - @test isequal_interval(log(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)), bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4)) - - @test isequal_interval(log(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)), bareinterval(-0x4.425A8474E3980P+4, +0x8.DFF506FE0D9F8P+4)) - - @test isequal_interval(log(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)), bareinterval(0x4.54169A4297548P+0, 0x1.9D179EA5204D0P+8)) - - @test isequal_interval(log(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)), bareinterval(0xE.CD14BEBE2CD68P+0, 0x1.B46DC0D02B874P+8)) - - @test isequal_interval(log(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)), bareinterval(-0x7.9346BAB839B58P+4, -0xE.E33F2C933B990P+0)) - - @test isequal_interval(log(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)), bareinterval(-0x1.83044F26AAA2BP+8, +0x2.805CE2DC91036P+8)) - - @test isequal_interval(log(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)), bareinterval(-0x1.4359ECD75CB6CP+8, -0x6.E715E1BA0E35CP+4)) - - @test isequal_interval(log(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)), bareinterval(-0x1.6F438EE9F6020P+8, +0xE.1A4A3523F2658P+4)) - - @test isequal_interval(log(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)), bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4)) - - @test isequal_interval(log(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)), bareinterval(-0xE.1D2336A5BE1A8P+4, -0xA.649D44362A2F0P+4)) - - @test isequal_interval(log(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)), bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8)) - - @test isequal_interval(log(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)), bareinterval(-0x4.8FBAEF1169C24P+4, +0x5.F718BBF0CE2F8P+4)) - - @test isequal_interval(log(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)), bareinterval(-0xF.4CD3094A3B4B8P+4, -0x3.439BFD719BAE8P+4)) - - @test isequal_interval(log(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)), bareinterval(-0xA.CDC41AEE74318P+4, -0x1.681AFF89E9C89P+4)) - - @test isequal_interval(log(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)), bareinterval(-0x1.5ADD53379EF4DP+8, +0x3.36D2B121508A8P+4)) - - @test isequal_interval(log(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)), bareinterval(-0x9.341D196AD2D58P+4, +0x8.5ADC069F618A8P+4)) - - @test isequal_interval(log(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)), bareinterval(-0x1.DC410CBC8E1C8P+8, -0x6.4027B79D2EAA8P+4)) - - @test isequal_interval(log(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)), bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4)) - - @test isequal_interval(log(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)), bareinterval(-0xE.9F20674285418P+4, +0x1.990C99B6124FEP+8)) - - @test isequal_interval(log(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)), bareinterval(-0x7.A02728D7D3790P+4, -0x6.70DBA893A16E0P+4)) - - @test isequal_interval(log2(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)), bareinterval(-0x1.04614E93EA794P+8, +0x5.F7104B04804E4P+4)) - - @test isequal_interval(log2(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)), bareinterval(-0x2.02BF4547CF74AP+8, -0xD.D527F669B7AA0P+4)) - - @test isequal_interval(log2(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)), bareinterval(-0xE.CD1F394A2C268P+4, +0xE.CAA4613C31FD0P+4)) - - @test isequal_interval(log2(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)), bareinterval(-0x1.E8D93AC78E47CP+8, -0x1.C23B6E9F9BE73P+8)) - - @test isequal_interval(log2(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)), bareinterval(0xC.44A8D0A480900P+4, 0xE.30D042BD32E08P+4)) - - @test isequal_interval(log2(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)), bareinterval(-0x2.945A6DE3564F2P+4, +0x1.15D18004DA527P+8)) - - @test isequal_interval(log2(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)), bareinterval(-0x1.DBB1A03AD9911P+8, +0xC.7305ECF8E75D8P+4)) - - @test isequal_interval(log2(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)), bareinterval(-0x1.74F450FB5F194P+8, +0x8.D8CE5C08208D0P+4)) - - @test isequal_interval(log2(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)), bareinterval(-0x2.FFC54D5EF9E5AP+8, -0x1.472E83799CCFAP+8)) - - @test isequal_interval(log2(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)), bareinterval(-0x2.41B8EC5041B68P+8, -0x8.29BE215800410P+4)) - - @test isequal_interval(log2(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)), bareinterval(0x7.562AE05DF4698P+4, 0x1.15E7F7FA196AAP+8)) - - @test isequal_interval(log2(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)), bareinterval(-0x6.250C3695FCF20P+4, +0xC.CDBDC5938D560P+4)) - - @test isequal_interval(log2(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)), bareinterval(0x6.3EA22BED11920P+0, 0x2.53F7565A6FA4CP+8)) - - @test isequal_interval(log2(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)), bareinterval(0x1.55A7D090E9BC4P+4, 0x2.75A230A6EF148P+8)) - - @test isequal_interval(log2(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)), bareinterval(-0xA.EDC8C6AE09A00P+4, -0x1.57A778189781EP+4)) - - @test isequal_interval(log2(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)), bareinterval(-0x2.2E58E661BEF52P+8, +0x3.9BD9297418726P+8)) - - @test isequal_interval(log2(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)), bareinterval(-0x1.D27F4D5811EC0P+8, -0x9.F55D8E4A51F88P+4)) - - @test isequal_interval(log2(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)), bareinterval(-0x2.11D98CE9F01E8P+8, +0x1.4588C1B9F05FCP+8)) - - @test isequal_interval(log2(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)), bareinterval(0x9.247C4A0D6A240P+4, 0xC.5C40234316DE0P+4)) - - @test isequal_interval(log2(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)), bareinterval(-0x1.45CA7D7508D73P+8, -0xE.FE7480A8A6A70P+4)) - - @test isequal_interval(log2(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)), bareinterval(0x1.6B54440063A2FP+8, 0x2.0FF6AC0A1DF08P+8)) - - @test isequal_interval(log2(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)), bareinterval(-0x6.94ADB7A807630P+4, +0x8.9B227CD69B7B0P+4)) - - @test isequal_interval(log2(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)), bareinterval(-0x1.612C877FDEFC9P+8, -0x4.B58789B7D2AB8P+4)) - - @test isequal_interval(log2(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)), bareinterval(-0xF.96282D809EDE0P+4, -0x2.0785B9A270C10P+4)) - - @test isequal_interval(log2(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)), bareinterval(-0x1.F46B75E4932F4P+8, +0x4.A3152AC221298P+4)) - - @test isequal_interval(log2(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)), bareinterval(-0xD.47274C2E0B298P+4, +0xC.0DB8D252704A8P+4)) - - @test isequal_interval(log2(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)), bareinterval(-0x2.AF16E4D3D6128P+8, -0x9.048930492A7A0P+4)) - - @test isequal_interval(log2(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)), bareinterval(0xC.1866CEA5B0408P+4, 0x1.0545D0C4DA7BAP+8)) - - @test isequal_interval(log2(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)), bareinterval(-0x1.51830AD8B30FCP+8, +0x2.4E221EC1DB53EP+8)) - - @test isequal_interval(log2(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)), bareinterval(-0xB.005C8501548A8P+4, -0x9.4ACCA02A24828P+4)) - - @test isequal_interval(log10(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)), bareinterval(-0x4.E61D94C4C8D58P+4, +0x1.CBB1247192AE0P+4)) - - @test isequal_interval(log10(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)), bareinterval(-0x9.AF44F24283358P+4, -0x4.29FE8451F9E24P+4)) - - @test isequal_interval(log10(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)), bareinterval(-0x4.74A3ADB971C48P+4, +0x4.73E4925024C64P+4)) - - @test isequal_interval(log10(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)), bareinterval(-0x9.32877CA0160B8P+4, -0x8.7888BDDBCE5D0P+4)) - - @test isequal_interval(log10(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)), bareinterval(0x3.B16EC52507DF2P+4, 0x4.4595F97548968P+4)) - - @test isequal_interval(log10(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)), bareinterval(-0xC.6C93FFEF64F78P+0, +0x5.3A1B471A21FF4P+4)) - - @test isequal_interval(log10(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)), bareinterval(-0x8.F32B7DBB21008P+4, +0x3.BF63BA7A3C658P+4)) - - @test isequal_interval(log10(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)), bareinterval(-0x7.0453C2F061648P+4, +0x2.A9C64A16830FCP+4)) - - @test isequal_interval(log10(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)), bareinterval(-0xE.71F3C5029D848P+4, -0x6.27DD331C437F0P+4)) - - @test isequal_interval(log10(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)), bareinterval(-0xA.DE968FD95ABE0P+4, -0x2.7513429684674P+4)) - - @test isequal_interval(log10(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)), bareinterval(0x2.35627EFD00A60P+4, 0x5.3A877F4AD58E8P+4)) - - @test isequal_interval(log10(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)), bareinterval(-0x1.D988D7EBC5AE3P+4, +0x3.DAB2CD7F2625EP+4)) - - @test isequal_interval(log10(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)), bareinterval(0x1.E13C93CF0C5D8P+0, 0xB.367584AC914D0P+4)) - - @test isequal_interval(log10(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)), bareinterval(0x6.6D93B54D66420P+0, 0xB.D89E0CA927598P+4)) - - @test isequal_interval(log10(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)), bareinterval(-0x3.4A378CAAD54DAP+4, -0x6.773414D886C14P+0)) - - @test isequal_interval(log10(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)), bareinterval(-0xA.8144B5B8F5DD8P+4, +0x1.161B25DAC86ECP+8)) - - @test isequal_interval(log10(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)), bareinterval(-0x8.C6DFF01C76970P+4, -0x2.FF6F7B088B0CCP+4)) - - @test isequal_interval(log10(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)), bareinterval(-0x9.F802CE339E840P+4, +0x6.1FEDD0FB88D78P+4)) - - @test isequal_interval(log10(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)), bareinterval(0x2.C08E6C63F32E4P+4, 0x3.B888C99289754P+4)) - - @test isequal_interval(log10(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)), bareinterval(-0x6.212A6B69124F0P+4, -0x4.837D7868C93BCP+4)) - - @test isequal_interval(log10(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)), bareinterval(0x6.D5F7B5F14DD48P+4, 0x9.EEED0801EA480P+4)) - - @test isequal_interval(log10(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)), bareinterval(-0x1.FB238786D64F9P+4, +0x2.9735AA99F42AAP+4)) - - @test isequal_interval(log10(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)), bareinterval(-0x6.A50E2200DFF14P+4, -0x1.6AE688B7C8203P+4)) - - @test isequal_interval(log10(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)), bareinterval(-0x4.B1282C68FE4F8P+4, -0x9.C644DFB9EE3E0P+0)) - - @test isequal_interval(log10(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)), bareinterval(-0x9.6A430336AD680P+4, +0x1.6558F570C1420P+4)) - - @test isequal_interval(log10(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)), bareinterval(-0x3.FF3F46384E0E2P+4, +0x3.A0E51611FF75EP+4)) - - @test isequal_interval(log10(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)), bareinterval(-0xC.ED5A39E5D4878P+4, -0x2.B6F044CDE4A0CP+4)) - - @test isequal_interval(log10(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)), bareinterval(0x3.A41C190FE9E7AP+4, 0x4.EA6A3021E4FB8P+4)) - - @test isequal_interval(log10(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)), bareinterval(-0x6.599E84FEF71BCP+4, +0xB.1A5D77BC55F98P+4)) - - @test isequal_interval(log10(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)), bareinterval(-0x3.4FCF2BC10B840P+4, -0x2.CC1706E0167D2P+4)) - - @test isequal_interval(sin(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)), bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F10P-944)) - - @test isequal_interval(sin(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)), bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FE8P-624)) - - @test isequal_interval(sin(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) - - @test isequal_interval(sin(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)), bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) - - @test isequal_interval(sin(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)), bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025104P-564)) - - @test isequal_interval(sin(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)), bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4DEP-412)) - - @test isequal_interval(sin(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)), bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C80P-792)) - - @test isequal_interval(sin(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)), bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301854P-204)) - - @test isequal_interval(sin(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)), bareinterval(0xF.4077C7E8CD698P-268, 0x3.753426098AC5AP-80)) - - @test isequal_interval(sin(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)), bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05AP-916)) - - @test isequal_interval(sin(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)), bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE491D517170P-16)) - - @test isequal_interval(sin(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)), bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B6P-576)) - - @test isequal_interval(sin(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)), bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) - - @test isequal_interval(sin(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)), bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DCFF7D4P-20)) - - @test isequal_interval(sin(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)), bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D50EP-836)) - - @test isequal_interval(sin(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)), bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99665P-760)) - - @test isequal_interval(sin(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)), bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0664P-780)) - - @test isequal_interval(sin(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)), bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) - - @test isequal_interval(sin(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)), bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) - - @test isequal_interval(sin(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)), bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106CP-548)) - - @test isequal_interval(sin(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)), bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF502P-1008)) - - @test isequal_interval(sin(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)), bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) - - @test isequal_interval(sin(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)), bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E4P-928)) - - @test isequal_interval(sin(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)), bareinterval(0x1.455801D3D2B62P-704, 0x3.A4C915783D07AP-28)) - - @test isequal_interval(sin(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)), bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) - - @test isequal_interval(sin(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)), bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F44P-540)) - - @test isequal_interval(sin(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)), bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756420P-496)) - - @test isequal_interval(sin(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)), bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F4P-876)) - - @test isequal_interval(sin(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)), bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) - - @test isequal_interval(sin(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)), bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B78P-432)) - - @test isequal_interval(cos(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)), bareinterval(0xF.FFFFF9AB27E58P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)), bareinterval(0xF.FFFFFFFF231A0P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(cos(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tan(bareinterval(0x4.6AF931A62EB70P+4, 0x4.6C0D89ACF83F0P+4)), bareinterval(-0x4.2B94A5B864748P+16, -0xE.CC7EFFC39BBE8P+0)) - - @test isequal_interval(tan(bareinterval(0x9.B824319678E98P+4, 0x9.B8365416B3188P+4)), bareinterval(-0x9.517610C9FF4F0P+28, -0xE.1DCEBD0ABA128P+4)) - - @test isequal_interval(tan(bareinterval(0xE.231D6DE6B2910P+0, 0xE.232155989FD58P+0)), bareinterval(-0x1.1A74CC770CA81P+20, -0x4.09E5FC000B430P+12)) - - @test isequal_interval(tan(bareinterval(0x3.A1E994576AF38P+4, 0x3.A1F62CB3D8B0CP+4)), bareinterval(-0x3.EDBBE63A85A20P+12, -0x1.3EC2E09B0B82DP+8)) - - @test isequal_interval(tan(bareinterval(0x4.504512C674C88P+8, 0x4.5045147DF4570P+8)), bareinterval(-0xC.5E819F2BCA708P+28, -0x9.51D20751384C0P+12)) - - @test isequal_interval(tan(bareinterval(0x7.DA9E8C267B000P+0, 0xA.CCC7028A13E50P+0)), bareinterval(-0x8.CE26DA7B8CCA8P+20, +0x5.0BA299C8F763CP+0)) - - @test isequal_interval(tan(bareinterval(0xC.CA9E956E09870P+12, 0xC.CA9FEB35E8D28P+12)), bareinterval(-0x9.40D68D3420248P+16, -0xB.F4CB43C962B98P+0)) - - @test isequal_interval(tan(bareinterval(0x2.F6B1D30E1AC2CP+8, 0x2.F6B1EAD90ED6EP+8)), bareinterval(-0x1.1E211833A60A2P+20, -0xA.BBFD5C235E8E8P+8)) - - @test isequal_interval(tan(bareinterval(0xB.C33774AC8C510P+8, 0xB.C3378F9640B80P+8)), bareinterval(-0x3.B8E9A3359EA76P+12, -0x8.33C065B080F78P+8)) - - @test isequal_interval(tan(bareinterval(0x4.B65F2027400ECP+0, 0x4.B65F690A4503CP+0)), bareinterval(-0x2.D46AD27DDB548P+24, -0x3.7ECF31F99ADC4P+16)) - - @test isequal_interval(tan(bareinterval(0x3.C60A2C774D8A6P+8, 0x3.C60A76B28E42CP+8)), bareinterval(-0x3.28E3C44C11B44P+24, -0x3.72D85B31BD660P+8)) - - @test isequal_interval(tan(bareinterval(0x7.DA9E8A5DF3B7CP+0, 0x7.DAA9CFE45466CP+0)), bareinterval(-0x1.D9B11082E8FC3P+28, -0x1.6B6333E88C1DFP+12)) - - @test isequal_interval(tan(bareinterval(0x3.A1E953315B022P+4, 0x3.A3624FC9B84C0P+4)), bareinterval(-0x4.91A5298A762FCP+24, -0xA.D59BACA695F48P+0)) - - @test isequal_interval(tan(bareinterval(0x7.DA9E8AB1B7B7CP+0, 0x8.E4A2BCBB988B0P+0)), bareinterval(-0x2.C52AD8545AC54P+24, -0x9.691CCDB9751E8P-4)) - - @test isequal_interval(tan(bareinterval(0x5.48783C12B018CP+8, 0x5.487863A8A0C78P+8)), bareinterval(-0x4.7465D978FF1E8P+4, -0x4.455187267B294P+4)) - - @test isequal_interval(tan(bareinterval(0x1.AB41B772619C2P+4, 0x1.AB96C295E1A23P+4)), bareinterval(-0x2.55DE9F429F276P+16, -0x3.02439C1296068P+4)) - - @test isequal_interval(tan(bareinterval(0x1.87E20C8B7CCC1P+16, 0x1.87E20E060934FP+16)), bareinterval(-0x7.5F7BB0C55311CP+28, -0xA.D1F5D5F3730E8P+4)) - - @test isequal_interval(tan(bareinterval(0x2.5BA5629043048P+16, 0x2.5BA5A6106DDF4P+16)), bareinterval(-0x4.BDE3C915168D8P+4, -0x3.84ED584601B4CP+0)) - - @test isequal_interval(tan(bareinterval(0x1.A9AF913EE27CFP+8, 0x1.A9AFA6D06E549P+8)), bareinterval(-0x2.CB455269CB954P+16, -0xB.ACE6E2EAA9098P+8)) - - @test isequal_interval(tan(bareinterval(0x7.64CF403A51948P+8, 0x7.64D139F1912E4P+8)), bareinterval(-0x5.38F704820A47CP+28, -0x8.19686283B81E8P+4)) - - @test isequal_interval(tan(bareinterval(0x4.1437B08F8BA70P+16, 0x4.1439A27E86D50P+16)), bareinterval(-0x1.3ADB30F7A9B56P+24, +0x6.48C7464A8F9A0P-4)) - - @test isequal_interval(tan(bareinterval(0x2.74518B3BAFB7CP+4, 0x2.74518DE5A60C0P+4)), bareinterval(-0xF.8E3A10DB36640P+24, -0x5.FF456443FD8B8P+16)) - - @test isequal_interval(tan(bareinterval(0x1.DD85A7816A0FFP+4, 0x1.DD89849DFDF09P+4)), bareinterval(-0x3.FA5C8BD1A67ECP+20, -0x4.23D96B0387510P+8)) - - @test isequal_interval(tan(bareinterval(0x1.AB41B29964887P+4, 0x1.B5CBD4ED0D1DDP+4)), bareinterval(-0x7.FC8B577B97310P+16, -0x1.4AB8A7BB81552P+0)) - - @test isequal_interval(tan(bareinterval(0x1.19454E95BC804P+12, 0x1.194551E9AD95AP+12)), bareinterval(-0x1.2A53ECF4C9B1AP+12, -0x3.D27F074C2DA94P+8)) - - @test isequal_interval(tan(bareinterval(0x4.C4823D2C30D00P+8, 0x4.C482DEAE395CCP+8)), bareinterval(-0x7.F7B434A3F3544P+28, -0x1.95C659F53B09BP+8)) - - @test isequal_interval(tan(bareinterval(0x1.DD85BAAB9BAF9P+4, 0x1.DD8660423BAACP+4)), bareinterval(-0xD.2F5338751C9C8P+12, -0x1.623D682415BE0P+12)) - - @test isequal_interval(tan(bareinterval(0x2.F798BB3536690P+16, 0x2.F79A363308C32P+16)), bareinterval(-0x2.F8C1AC15A9CCEP+16, -0x1.731B7ACF94603P-4)) - - @test isequal_interval(tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.78FDB9F143616P+4)), bareinterval(-0xC.9CFD638FE0A18P+24, -0xC.9CFD638FE0A10P+24)) - - @test isequal_interval(tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.79367E02D4EAAP+4)), bareinterval(-0xC.9CFD638FE0A18P+24, -0x4.826BF805C4E68P+4)) - - @test isequal_interval(cot(bareinterval(0x4.51D73651EA89CP+4, 0x4.52EB8E58B411CP+4)), bareinterval(0xE.CC7EFFC39DE08P+0, 0x4.2B94A5E391E20P+16)) - - @test isequal_interval(cot(bareinterval(0x9.9F02364234BC8P+4, 0x9.9F1458C26EEB8P+4)), bareinterval(0xE.1DCEBD0AA72D0P+4, 0x9.516DD4FA21CF0P+28)) - - @test isequal_interval(cot(bareinterval(0xC.90FDB8A26FBF8P+0, 0xC.9101A0545D040P+0)), bareinterval(0x4.09E5FC0006C38P+12, 0x1.1A74CC76B6B71P+20)) - - @test isequal_interval(cot(bareinterval(0x3.88C7990326C68P+4, 0x3.88D4315F9483CP+4)), bareinterval(0x1.3EC2E09B0928AP+8, 0x3.EDBBE6390EF44P+12)) - - @test isequal_interval(cot(bareinterval(0x4.4EB2F3113085CP+8, 0x4.4EB2F4C8B0144P+8)), bareinterval(0x9.51D206F220E70P+12, 0xC.5DDA26E3680B8P+28)) - - @test isequal_interval(cot(bareinterval(0x6.487ED6E2382ECP+0, 0x9.3AA74D45D1138P+0)), bareinterval(-0x5.0BA299C8F7644P+0, +0x8.CE26D93009840P+20)) - - @test isequal_interval(cot(bareinterval(0xC.CA857372B5428P+12, 0xC.CA86C93A948E0P+12)), bareinterval(0xB.F4CB43CC4C9E8P+0, 0x9.40D848DDFC130P+16)) - - @test isequal_interval(cot(bareinterval(0x2.F51FB358D6800P+8, 0x2.F51FCB23CA942P+8)), bareinterval(0xA.BBFD5C1B7C1D8P+8, 0x1.1E2116D584957P+20)) - - @test isequal_interval(cot(bareinterval(0xB.C1A554F7480E0P+8, 0xB.C1A56FE0FC750P+8)), bareinterval(0x8.33C065BCB81C8P+8, 0x3.B8E9A35DDF6BCP+12)) - - @test isequal_interval(cot(bareinterval(0x3.243F6AE2FD3D8P+0, 0x3.243FB3C602324P+0)), bareinterval(0x3.7ECF31F964F42P+16, 0x2.D46AD05A0B746P+24)) - - @test isequal_interval(cot(bareinterval(0x3.C4780CC209478P+8, 0x3.C47856FD49FFEP+8)), bareinterval(0x3.72D85B3269A44P+8, 0x3.28E454E439A90P+24)) - - @test isequal_interval(cot(bareinterval(0x6.487ED519B0E68P+0, 0x6.488A1AA011958P+0)), bareinterval(0x1.6B6333E883806P+12, 0x1.D9B101DF34E20P+28)) - - @test isequal_interval(cot(bareinterval(0x3.88C757DD16D52P+4, 0x3.8A405475741F0P+4)), bareinterval(0xA.D59BACA695410P+0, 0x4.91A509DE53224P+24)) - - @test isequal_interval(cot(bareinterval(0x6.487ED56D74E68P+0, 0x7.5283077755B9CP+0)), bareinterval(0x9.691CCDB975190P-4, 0x2.C52AD6475D346P+24)) - - @test isequal_interval(cot(bareinterval(0x5.46E61C5D6BD60P+8, 0x5.46E643F35C84CP+8)), bareinterval(0x4.4551872667304P+4, 0x4.7465D978E9638P+4)) - - @test isequal_interval(cot(bareinterval(0x1.921FBC1E1D6F1P+4, 0x1.9274C7419D752P+4)), bareinterval(0x3.02439C1295BB8P+4, 0x2.55DE9F3FCCF28P+16)) - - @test isequal_interval(cot(bareinterval(0x1.87E07A6BC787DP+16, 0x1.87E07BE653F0BP+16)), bareinterval(0xA.D1F5D5DED35E0P+4, 0x7.55F4ABD4357C8P+28)) - - @test isequal_interval(cot(bareinterval(0x2.5BA3D0708DC04P+16, 0x2.5BA413F0B89B0P+16)), bareinterval(0x3.84ED5845DBFB2P+0, 0x4.BDE3C91120740P+4)) - - @test isequal_interval(cot(bareinterval(0x1.A81D71899E3A2P+8, 0x1.A81D871B2A11CP+8)), bareinterval(0xB.ACE6E2E9DA370P+8, 0x2.CB45525DF368EP+16)) - - @test isequal_interval(cot(bareinterval(0x7.633D20850D51CP+8, 0x7.633F1A3C4CEB8P+8)), bareinterval(0x8.19686283704C0P+4, 0x5.38D928BC4D11CP+28)) - - @test isequal_interval(cot(bareinterval(0x4.14361E6FD662CP+16, 0x4.1438105ED190CP+16)), bareinterval(-0x6.48C7464AC3A74P-4, +0x1.3AD6ED9B4C193P+24)) - - @test isequal_interval(cot(bareinterval(0x2.5B2F8FE76B8ACP+4, 0x2.5B2F929161DF0P+4)), bareinterval(0x5.FF45640D6BF8CP+16, 0xF.8E38A1B8F3CE0P+24)) - - @test isequal_interval(cot(bareinterval(0x1.C463AC2D25E2EP+4, 0x1.C4678949B9C38P+4)), bareinterval(0x4.23D96B037E734P+8, 0x3.FA5C8B4EB13BAP+20)) - - @test isequal_interval(cot(bareinterval(0x1.921FB745205B6P+4, 0x1.9CA9D998C8F0CP+4)), bareinterval(0x1.4AB8A7BB8153CP+0, 0x7.FC8B575A99618P+16)) - - @test isequal_interval(cot(bareinterval(0x1.192C2C9A683C1P+12, 0x1.192C2FEE59517P+12)), bareinterval(0x3.D27F074ED4C1AP+8, 0x1.2A53ECF8BBB09P+12)) - - @test isequal_interval(cot(bareinterval(0x4.C2F01D76EC8D4P+8, 0x4.C2F0BEF8F51A0P+8)), bareinterval(0x1.95C659F50F06FP+8, 0x7.F76EB663A7898P+28)) - - @test isequal_interval(cot(bareinterval(0x1.C463BF5757828P+4, 0x1.C46464EDF77DBP+4)), bareinterval(0x1.623D682405E56P+12, 0xD.2F53386F7DF28P+12)) - - @test isequal_interval(cot(bareinterval(0x2.F79729158124CP+16, 0x2.F798A413537EEP+16)), bareinterval(0x1.731B7ACF66E92P-4, 0x2.F8C19331ECBFCP+16)) - - @test isequal_interval(cot(bareinterval(0x3.371943E536E9EP+8, 0x3.371D0784693FAP+8)), bareinterval(0x3.E06D09FC7DDC2P+4, 0x2.C1B5E6F32FDEEP+8)) - - @test isequal_interval(cot(bareinterval(0x1.5FDBBE9CFF344P+4, 0x1.601482AE90BD8P+4)), bareinterval(0x4.826BF805C583CP+4, 0xC.9CFDB05DEF930P+24)) - - @test isequal_interval(asin(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)), bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680)) - - @test isequal_interval(asin(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)), bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640)) - - @test isequal_interval(asin(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)), bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764)) - - @test isequal_interval(asin(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)), bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976)) - - @test isequal_interval(asin(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)), bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612)) - - @test isequal_interval(asin(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)), bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536)) - - @test isequal_interval(asin(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)), bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008)) - - @test isequal_interval(asin(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)), bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796)) - - @test isequal_interval(asin(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)), bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976)) - - @test isequal_interval(asin(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)), bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948)) - - @test isequal_interval(asin(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)), bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796)) - - @test isequal_interval(asin(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)), bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556)) - - @test isequal_interval(asin(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)), bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268)) - - @test isequal_interval(asin(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)), bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232)) - - @test isequal_interval(asin(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)), bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456)) - - @test isequal_interval(asin(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)), bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C473266E68P-24)) - - @test isequal_interval(asin(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)), bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868)) - - @test isequal_interval(asin(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)), bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840)) - - @test isequal_interval(asin(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)), bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408)) - - @test isequal_interval(asin(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)), bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512)) - - @test isequal_interval(asin(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)), bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564)) - - @test isequal_interval(asin(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)), bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856)) - - @test isequal_interval(asin(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)), bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520)) - - @test isequal_interval(asin(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)), bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688)) - - @test isequal_interval(asin(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)), bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768)) - - @test isequal_interval(asin(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)), bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548)) - - @test isequal_interval(asin(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)), bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912)) - - @test isequal_interval(asin(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)), bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664)) - - @test isequal_interval(asin(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)), bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304)) - - @test isequal_interval(asin(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)), bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020)) - - @test isequal_interval(acos(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)), bareinterval(0x1.921FA7FF368A5P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442FC7P+0)) - - @test isequal_interval(acos(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)), bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)), bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220)) - - @test isequal_interval(atan(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)), bareinterval(0xE.20FF41BD18050P-204, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)), bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416)) - - @test isequal_interval(atan(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)), bareinterval(0xE.3062E34353278P-4, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)), bareinterval(0x2.404E44C49C642P-440, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)), bareinterval(0x1.63A15E999EB63P-344, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)), bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288)) - - @test isequal_interval(atan(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)), bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76)) - - @test isequal_interval(atan(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)), bareinterval(0x2.6ABC15579B2B0P-48, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)), bareinterval(0x1.920057E3A66F1P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)), bareinterval(0x1.921FB54442D13P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)), bareinterval(0x6.3E590E6264518P-172, 0x1.9172A3136EB8DP+0)) - - @test isequal_interval(atan(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)), bareinterval(0x6.ACFA418D8F928P-544, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)), bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148)) - - @test isequal_interval(atan(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)), bareinterval(0xC.41329461A0C28P-512, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)), bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236)) - - @test isequal_interval(atan(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)), bareinterval(0x6.65D7E0A247774P-56, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)), bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68)) - - @test isequal_interval(atan(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)), bareinterval(0x6.36B661DCE2684P-236, 0x1.921700D14CFE5P+0)) - - @test isequal_interval(atan(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)), bareinterval(0x1.EB0E1AB78F313P-480, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)), bareinterval(0x7.4CF193131FA60P-192, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)), bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140)) - - @test isequal_interval(atan(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)), bareinterval(0x3.A0EE84451C92AP-324, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)), bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120)) - - @test isequal_interval(acot(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)), bareinterval(0x6.5B5B8AA0A6884P-116, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)), bareinterval(0x6.23FD67FFA09A4P-276, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)), bareinterval(0x6.70A3F8408ABF0P-296, 0xC.099B90EB0FA30P-256)) - - @test isequal_interval(acot(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)), bareinterval(0x3.3FB79247499D6P-336, 0xA.F1987100D9F08P-4)) - - @test isequal_interval(acot(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)), bareinterval(0x2.38F904C465F6AP-240, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)), bareinterval(0x2.87E9C09D98938P-176, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)), bareinterval(0x8.3E949ACCB0F88P-316, 0x9.443E1DD721FE8P-184)) - - @test isequal_interval(acot(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)), bareinterval(0x5.9028FAA64FBC8P-260, 0x1.921FB54442CF2P+0)) - - @test isequal_interval(acot(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)), bareinterval(0x1.2067D7F96AFE5P-656, 0x1.F5D609C62725FP-12)) - - @test isequal_interval(acot(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)), bareinterval(0x6.09322FE56F794P-692, 0x4.E7223FE097808P-52)) - - @test isequal_interval(acot(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)), bareinterval(0xA.D1230D418C238P-12, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)), bareinterval(0x6.3F7C8D3DDFC74P-992, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)), bareinterval(0x9.E1C9C04F15630P-356, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)), bareinterval(0x1.326922CF32B2EP-240, 0x2.7ECD966556E9CP-192)) - - @test isequal_interval(acot(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)), bareinterval(0x1.5F401B7014200P-568, 0x1.3A84A0CB7AC42P-428)) - - @test isequal_interval(acot(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)), bareinterval(0x4.59002C447A028P-172, 0x1.921FB54442D18P+0)) - - @test isequal_interval(acot(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)), bareinterval(0x8.B472F5D335130P-16, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)), bareinterval(0xA.042BAEF7787B8P-136, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)), bareinterval(0x9.21EF65D6A5190P-224, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)), bareinterval(0x1.6F8ED062CAC9BP-328, 0x8.C7ADFB6368868P-256)) - - @test isequal_interval(acot(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)), bareinterval(0x1.03413E0E19942P-652, 0x1.921FB54442D19P+0)) - - @test isequal_interval(acot(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(sinh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)), bareinterval(-0x3.53DC9496DE0A2P-160, -0xC.287E0E10EC1B8P-960)) - - @test isequal_interval(sinh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)), bareinterval(-0x1.CF3637DCBCC9BP-452, -0x5.E4846462FF33CP-636)) - - @test isequal_interval(sinh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)), bareinterval(-0x1.32197576F3697P+0, -0x3.3D2CCEF698A5AP-972)) - - @test isequal_interval(sinh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)), bareinterval(-0x1.494A24A7585D2P-380, +0x1.A0790A9E3013FP-604)) - - @test isequal_interval(sinh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)), bareinterval(-0x2.B64BC5E999868P-368, -0xF.0633041110C28P-572)) - - @test isequal_interval(sinh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)), bareinterval(-0x7.56F52F4FED858P-336, -0x4.F40A3934B3354P-416)) - - @test isequal_interval(sinh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)), bareinterval(-0xA.0E33C2BA95C90P-48, -0x1.1927CA3847669P-808)) - - @test isequal_interval(sinh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)), bareinterval(-0x1.1BBBD6FE8B951P-208, -0x1.463A32DBA649DP-220)) - - @test isequal_interval(sinh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)), bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C4P-96)) - - @test isequal_interval(sinh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)), bareinterval(-0x2.E7332C654ABB8P-384, -0x1.4363967367F55P-932)) - - @test isequal_interval(sinh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)), bareinterval(-0x1.55EBB1D70A46FP-592, +0x4.733FA51477038P-20)) - - @test isequal_interval(sinh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)), bareinterval(-0x1.1B4B8388A3D93P-340, -0xD.51D4A3CE4C490P-600)) - - @test isequal_interval(sinh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)), bareinterval(-0x4.21B73745BC4C4P-952, +0xD.E40D83923C3E8P-404)) - - @test isequal_interval(sinh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)), bareinterval(-0x1.73D14FA7DA1CCP-504, +0x1.5B3AFEEB17A86P-28)) - - @test isequal_interval(sinh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)), bareinterval(-0x3.3CD34997DF068P-320, -0x1.606C7BCE75819P-852)) - - @test isequal_interval(sinh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)), bareinterval(-0xC.5356A56E59750P-516, -0x1.33B9A95C55513P-772)) - - @test isequal_interval(sinh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)), bareinterval(-0x5.FA887950A63D0P-588, -0x2.B707741B15478P-800)) - - @test isequal_interval(sinh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)), bareinterval(-0x2.9476464AAE5BCP-548, +0x4.0734E17C026D8P-784)) - - @test isequal_interval(sinh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)), bareinterval(-0xF.A46AC05B0EAB0P-68, +0x1.EFA89F34F4189P-684)) - - @test isequal_interval(sinh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)), bareinterval(-0x9.9488CB205AFB0P-124, -0x2.940180D1AA2AEP-556)) - - @test isequal_interval(sinh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)), bareinterval(-0x3.F9D9FE5792CE2P-912, -0x3.F00FC8CE24ADCP-1016)) - - @test isequal_interval(sinh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)), bareinterval(-0x7.D5A28EF80D6B4P-176, +0xC.5D2B8FFCB2AE0P-756)) - - @test isequal_interval(sinh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)), bareinterval(-0x5.B5DCAA821A62CP-784, -0x1.48532232C10FDP-940)) - - @test isequal_interval(sinh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)), bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C4P-44)) - - @test isequal_interval(sinh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)), bareinterval(-0x1.4AD562C0B5179P-380, +0x3.CEB34F40EA9BCP-792)) - - @test isequal_interval(sinh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)), bareinterval(-0x7.ED02EF56E40B4P-92, -0x1.8C80275A696B0P-552)) - - @test isequal_interval(sinh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)), bareinterval(-0x1.56FBE834FC823P-296, -0x3.66041558BACA8P-516)) - - @test isequal_interval(sinh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)), bareinterval(-0x6.44524F6FCCF90P-340, -0x5.3E8ED576A1334P-896)) - - @test isequal_interval(sinh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)), bareinterval(-0x8.92F5BEDA59C80P-268, +0x2.51B11C2EC76BCP-612)) - - @test isequal_interval(sinh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)), bareinterval(-0x4.785C46BDC2A54P-244, -0x1.BA5C062DE8F00P-432)) - - @test isequal_interval(cosh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)), bareinterval(0x1.0000000000000P+0, 0x1.8F0A39674B193P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)), bareinterval(0x1.0000000000000P+0, 0x1.0000000009E6FP+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(cosh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(tanh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)), bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)), bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220)) - - @test isequal_interval(tanh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)), bareinterval(0xE.20FF41BD18050P-204, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)), bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416)) - - @test isequal_interval(tanh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)), bareinterval(0xD.772335E624B98P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)), bareinterval(0x2.404E44C49C642P-440, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)), bareinterval(0x1.63A15E999EB63P-344, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)), bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288)) - - @test isequal_interval(tanh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)), bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76)) - - @test isequal_interval(tanh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)), bareinterval(0x2.6ABC15579B2B0P-48, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)), bareinterval(0x6.3E590E6264518P-172, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)), bareinterval(0x6.ACFA418D8F928P-544, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)), bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148)) - - @test isequal_interval(tanh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)), bareinterval(0xC.41329461A0C28P-512, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)), bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236)) - - @test isequal_interval(tanh(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)), bareinterval(0x6.65D7E0A247774P-56, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)), bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68)) - - @test isequal_interval(tanh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)), bareinterval(0x6.36B661DCE2684P-236, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)), bareinterval(0x1.EB0E1AB78F313P-480, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)), bareinterval(0x7.4CF193131FA60P-192, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)), bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140)) - - @test isequal_interval(tanh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)), bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)), bareinterval(0x3.A0EE84451C92AP-324, 0x1.0000000000000P+0)) - - @test isequal_interval(tanh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)), bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120)) - - @test isequal_interval(coth(bareinterval(0x5.9D7EEEA9B9EE0P-264, 0x3.F03D06503CAA2P+92)), bareinterval(0x1.0000000000000P+0, 0x2.D97240157D2C8P+260)) - - @test isequal_interval(coth(bareinterval(-0x3.F03D06503CAA2P+92, -0x5.9D7EEEA9B9EE0P-264)), bareinterval(-0x2.D97240157D2C8P+260, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0xB.6600F238FE060P-520, 0x1.BB63631B595B0P-224)), bareinterval(0x9.3CEA8A8C76FC0P+220, 0x1.6758D7D180F69P+516)) - - @test isequal_interval(coth(bareinterval(-0x1.BB63631B595B0P-224, -0xB.6600F238FE060P-520)), bareinterval(-0x1.6758D7D180F69P+516, -0x9.3CEA8A8C76FC0P+220)) - - @test isequal_interval(coth(bareinterval(0x4.DC89ED0034C6CP-240, 0xD.A1D118A3891E8P+232)), bareinterval(0x1.0000000000000P+0, 0x3.4A8AB6B06359AP+236)) - - @test isequal_interval(coth(bareinterval(-0xD.A1D118A3891E8P+232, -0x4.DC89ED0034C6CP-240)), bareinterval(-0x3.4A8AB6B06359AP+236, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x4.7F93F879A61A4P-492, 0x1.BDC6388153882P-452)), bareinterval(0x9.3041F45FA3D78P+448, 0x3.8E8E46D77A03EP+488)) - - @test isequal_interval(coth(bareinterval(-0x1.BDC6388153882P-452, -0x4.7F93F879A61A4P-492)), bareinterval(-0x3.8E8E46D77A03EP+488, -0x9.3041F45FA3D78P+448)) - - @test isequal_interval(coth(bareinterval(0xF.C7C928D9BB718P+192, 0x8.41A7954605A98P+224)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(coth(bareinterval(-0x8.41A7954605A98P+224, -0xF.C7C928D9BB718P+192)), bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x3.F07C0B8005270P-44, 0x2.DD3C8580FCBE0P+276)), bareinterval(0x1.0000000000000P+0, 0x4.0FC1103283A70P+40)) - - @test isequal_interval(coth(bareinterval(-0x2.DD3C8580FCBE0P+276, -0x3.F07C0B8005270P-44)), bareinterval(-0x4.0FC1103283A70P+40, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0xA.A97DED29FFF30P-480, 0x5.35EEA9C504860P+196)), bareinterval(0x1.0000000000000P+0, 0x1.802A4F4EFE3B2P+476)) - - @test isequal_interval(coth(bareinterval(-0x5.35EEA9C504860P+196, -0xA.A97DED29FFF30P-480)), bareinterval(-0x1.802A4F4EFE3B2P+476, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x3.CF4B727451402P-376, 0x1.759F6C21DAF9AP+140)), bareinterval(0x1.0000000000000P+0, 0x4.33233873998C8P+372)) - - @test isequal_interval(coth(bareinterval(-0x1.759F6C21DAF9AP+140, -0x3.CF4B727451402P-376)), bareinterval(-0x4.33233873998C8P+372, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x6.55376F4C1C50CP-772, 0x1.0120DD4EBC019P-328)), bareinterval(0xF.EE06735C6D910P+324, 0x2.86C88F09A2CBEP+768)) - - @test isequal_interval(coth(bareinterval(-0x1.0120DD4EBC019P-328, -0x6.55376F4C1C50CP-772)), bareinterval(-0x2.86C88F09A2CBEP+768, -0xF.EE06735C6D910P+324)) - - @test isequal_interval(coth(bareinterval(0x1.B63F1F7AED49EP-580, 0x2.245AF5BCB3356P-132)), bareinterval(0x7.7838528478BF8P+128, 0x9.58A984202B8E8P+576)) - - @test isequal_interval(coth(bareinterval(-0x2.245AF5BCB3356P-132, -0x1.B63F1F7AED49EP-580)), bareinterval(-0x9.58A984202B8E8P+576, -0x7.7838528478BF8P+128)) - - @test isequal_interval(coth(bareinterval(0x2.73B23CC8D8F76P+116, 0x1.F1E4F59403FC3P+276)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(coth(bareinterval(-0x1.F1E4F59403FC3P+276, -0x2.73B23CC8D8F76P+116)), bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x2.5B4F5F71CA5FCP-100, 0x1.5C244CE1AC6B3P+204)), bareinterval(0x1.0000000000000P+0, 0x6.CA09D0DDC330CP+96)) - - @test isequal_interval(coth(bareinterval(-0x1.5C244CE1AC6B3P+204, -0x2.5B4F5F71CA5FCP-100)), bareinterval(-0x6.CA09D0DDC330CP+96, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x1.4E7212DD5ABB9P+4, 0xD.9F35E61FDF7E8P+592)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(coth(bareinterval(-0xD.9F35E61FDF7E8P+592, -0x1.4E7212DD5ABB9P+4)), bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x1.271B33491E515P+20, 0x2.B3031CF3AF4ECP+628)), bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0)) - - @test isequal_interval(coth(bareinterval(-0x2.B3031CF3AF4ECP+628, -0x1.271B33491E515P+20)), bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0)) - - @test isequal_interval(coth(bareinterval(0x9.DB635E2FF52B0P-180, 0x2.AF04176524D06P-24)), bareinterval(0x5.F646A7779F114P+20, 0x1.9F8AFAA8DBFF9P+176)) - - @test isequal_interval(coth(bareinterval(-0x2.AF04176524D06P-24, -0x9.DB635E2FF52B0P-180)), bareinterval(-0x1.9F8AFAA8DBFF9P+176, -0x5.F646A7779F114P+20)) - - @test isequal_interval(asinh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)), bareinterval(0x1.7A77BFCCF5A9DP-232, 0x4.F3FA9CD060658P+4)) - - @test isequal_interval(asinh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)), bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220)) - - @test isequal_interval(asinh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)), bareinterval(0xE.20FF41BD18050P-204, 0xB.E2FD554E373E0P+4)) - - @test isequal_interval(asinh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)), bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416)) - - @test isequal_interval(asinh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)), bareinterval(0xA.FA69A93525138P+4, 0xC.C008F1DBA8390P+4)) - - @test isequal_interval(asinh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)), bareinterval(0x1.086AFFAE230B6P+0, 0xE.8698B81E22AB0P+4)) - - @test isequal_interval(asinh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)), bareinterval(0x2.404E44C49C642P-440, 0xA.63FF3E7D6B730P+4)) - - @test isequal_interval(asinh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)), bareinterval(0x1.63A15E999EB63P-344, 0x7.9C22B35B1CEE0P+4)) - - @test isequal_interval(asinh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)), bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288)) - - @test isequal_interval(asinh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)), bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76)) - - @test isequal_interval(asinh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)), bareinterval(0x7.E017D1421AED4P+4, 0xD.99E3CCF428D70P+4)) - - @test isequal_interval(asinh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)), bareinterval(0x2.6ABC15579B2B0P-48, 0xB.331FC2BC20E70P+4)) - - @test isequal_interval(asinh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)), bareinterval(0x6.3E590E6264518P-172, 0x6.A13A85E654788P+0)) - - @test isequal_interval(asinh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)), bareinterval(0x6.ACFA418D8F928P-544, 0x2.AE767FF2330E0P+8)) - - @test isequal_interval(asinh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)), bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148)) - - @test isequal_interval(asinh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)), bareinterval(0xC.41329461A0C28P-512, 0xF.529AF3B8107E0P+4)) - - @test isequal_interval(asinh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)), bareinterval(0x8.4DCECB852E1E8P+4, 0xA.6DE648AA01A20P+4)) - - @test isequal_interval(asinh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)), bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236)) - - @test isequal_interval(asinh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)), bareinterval(0x6.65D7E0A247774P-56, 0x7.671E008768830P+4)) - - @test isequal_interval(asinh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)), bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68)) - - @test isequal_interval(asinh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)), bareinterval(0x6.36B661DCE2684P-236, 0x9.9E9F4F5A56088P+0)) - - @test isequal_interval(asinh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)), bareinterval(0x1.EB0E1AB78F313P-480, 0x5.CA82DEDB3D320P+4)) - - @test isequal_interval(asinh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)), bareinterval(0x7.4CF193131FA60P-192, 0x9.9BF0B87669850P+4)) - - @test isequal_interval(asinh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)), bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140)) - - @test isequal_interval(asinh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)), bareinterval(0xA.FF762A8B30EA0P+4, 0xE.3AF0836B2F5B0P+4)) - - @test isequal_interval(asinh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)), bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120)) - - @test isequal_interval(acosh(bareinterval(0x5.AD89AD14DDC74P+272, 0x2.6EC5D31670A5EP+860)), bareinterval(0xB.EF73BF42C19D8P+4, 0x2.55B05064B6C2AP+8)) - - @test isequal_interval(acosh(bareinterval(0x4.A457C35864940P+344, 0x2.3ADEFB54BC048P+444)), bareinterval(0xF.0ABC113DB1AF0P+4, 0x1.3540A29BC6B5EP+8)) - - @test isequal_interval(acosh(bareinterval(0x6.941C8B9506D90P+56, 0x3.B11D8083AE958P+744)), bareinterval(0x2.964A9197BF832P+4, 0x2.05B3663FAE652P+8)) - - @test isequal_interval(acosh(bareinterval(0x1.09A940A083EE3P+132, 0x1.047FD514ADF08P+384)), bareinterval(0x5.C39C22D7AA908P+4, 0x1.0AE10BDF7FE81P+8)) - - @test isequal_interval(acosh(bareinterval(0x7.710740B71A0D4P+256, 0xF.C0798D156BFA0P+560)), bareinterval(0xB.42559B5CF34E8P+4, 0x1.879CCE87EE3A1P+8)) - - @test isequal_interval(acosh(bareinterval(0x2.3721A01F70456P+564, 0x9.C62BBF31FD290P+728)), bareinterval(0x1.886C6F1DDDFF7P+8, 0x1.FB958311209BFP+8)) - - @test isequal_interval(acosh(bareinterval(0x6.F06D452BDCEF0P+44, 0x2.4825931366BBCP+520)), bareinterval(0x2.120F95BD1F706P+4, 0x1.69F464545899AP+8)) - - @test isequal_interval(acosh(bareinterval(0x5.D326D4B0883D8P+76, 0x1.77175C5A113ADP+528)), bareinterval(0x3.7226BF0157930P+4, 0x1.6F0E8DBF98710P+8)) - - @test isequal_interval(acosh(bareinterval(0x1.05ADFE119D4C2P+296, 0x2.6BCDF50E05E34P+1020)), bareinterval(0xC.DE2FBE78FEC28P+4, 0x2.C49666459E1A4P+8)) - - @test isequal_interval(acosh(bareinterval(0xA.7F5D255B81268P+408, 0x1.9D1EDDC132B36P+864)), bareinterval(0x1.1DD92C82827A1P+8, 0x2.580D06072BF20P+8)) - - @test isequal_interval(acosh(bareinterval(0xC.FBE4E2C6D0A80P+484, 0x4.DF75BDC17C330P+868)), bareinterval(0x1.52BD770642386P+8, 0x2.5BEDB7E376E18P+8)) - - @test isequal_interval(acosh(bareinterval(0xB.241032F9700A0P+380, 0x1.04A65B06B2920P+640)), bareinterval(0x1.0A7FEC190CCEEP+8, 0x1.BC5349B021815P+8)) - - @test isequal_interval(acosh(bareinterval(0x5.F207EAF5F8BB4P+608, 0xA.BC87C6F90AEE0P+648)), bareinterval(0x1.A7E8C5069EA32P+8, 0x1.C439E5E8A511CP+8)) - - @test isequal_interval(acosh(bareinterval(0x1.BCD62C46ADFD7P+16, 0xA.CD289B35ECD00P+564)), bareinterval(0xC.56062C0C41518P+0, 0x1.8A0201556D85AP+8)) - - @test isequal_interval(acosh(bareinterval(0x6.534BBA40A0B44P+224, 0x1.8DE35856E91FBP+452)), bareinterval(0x9.DCD7CC0C7FFB8P+4, 0x1.3A6FC95911674P+8)) - - @test isequal_interval(acosh(bareinterval(0x2.C4F59012F4E48P+508, 0x1.1854765A9A205P+688)), bareinterval(0x1.61D49DF92AB79P+8, 0x1.DDAB5081E5A0EP+8)) - - @test isequal_interval(acosh(bareinterval(0x8.6F890522C18B0P+44, 0x3.F87592D71E06CP+220)), bareinterval(0x2.152F7D2DBF2BCP+4, 0x9.A907E7C701690P+4)) - - @test isequal_interval(acosh(bareinterval(0x9.2A9035A578970P+124, 0x1.35EE42DCA8B75P+608)), bareinterval(0x5.8DBE2A7E96990P+4, 0x1.A6515B9ECF2F1P+8)) - - @test isequal_interval(acosh(bareinterval(0x5.2641115F86D38P+204, 0x7.BE33D080E6584P+252)), bareinterval(0x8.FBBEB3B84C708P+4, 0xB.169BBE1313F68P+4)) - - @test isequal_interval(acosh(bareinterval(0xA.8746F72A1BD90P+72, 0x5.6ABE29A315520P+872)), bareinterval(0x3.4F42DBFC0E4B4P+4, 0x2.5ECE9922C7894P+8)) - - @test isequal_interval(acosh(bareinterval(0xB.D0973FF704000P+224, 0x2.2FD9ABBD09D34P+976)), bareinterval(0x9.E6D6EA0633070P+4, 0x2.A5FCBEDD15F2CP+8)) - - @test isequal_interval(acosh(bareinterval(0xA.C15D51DB7D9F0P+536, 0x1.7207A70831D7AP+796)), bareinterval(0x1.76986E964982DP+8, 0x2.28CE847F69DCAP+8)) - - @test isequal_interval(acosh(bareinterval(0x4.280BEC7911E7CP+180, 0x6.B4F11E86ECA38P+792)), bareinterval(0x7.EE261446DD5F8P+4, 0x2.27919F48F2C20P+8)) - - @test isequal_interval(acosh(bareinterval(0x3.4B22674960B0EP+468, 0xA.505A061DF4CD8P+808)), bareinterval(0x1.4647297977E4EP+8, 0x2.3316ED57009D4P+8)) - - @test isequal_interval(acosh(bareinterval(0x2.383FC27D5E4E4P+756, 0x5.88E9C96565E54P+920)), bareinterval(0x2.0D82822002358P+8, 0x2.801980299550CP+8)) - - @test isequal_interval(acosh(bareinterval(0x1.20E762C8AAB55P+72, 0x1.DBB7B8FE35847P+960)), bareinterval(0x3.2B87D37C9EAFAP+4, 0x2.9ABBED2A77E62P+8)) - - @test isequal_interval(acosh(bareinterval(0x1.1265074E9E3DFP+792, 0x2.229B285A709C0P+920)), bareinterval(0x2.25BC2FC876EBCP+8, 0x2.7F25A89FE16E6P+8)) - - @test isequal_interval(acosh(bareinterval(0x1.054DCDEF21349P+436, 0x1.618994D07D9A7P+636)), bareinterval(0x1.2EED02D819A15P+8, 0x1.B9DB8970CC5ECP+8)) - - @test isequal_interval(acosh(bareinterval(0x4.5BE0D9A7FF0CCP+460, 0x2.6F2C55F16354AP+568)), bareinterval(0x1.4103588C86AB6P+8, 0x1.8B4A572E180D4P+8)) - - @test isequal_interval(acosh(bareinterval(0x9.BD8B9A7FB6630P+80, 0x2.AD5F8458C8722P+768)), bareinterval(0x3.A6BD416FCCF70P+4, 0x2.1603D4EDCB36AP+8)) - - @test isequal_interval(atanh(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)), bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680)) - - @test isequal_interval(atanh(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)), bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640)) - - @test isequal_interval(atanh(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)), bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764)) - - @test isequal_interval(atanh(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)), bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976)) - - @test isequal_interval(atanh(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)), bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612)) - - @test isequal_interval(atanh(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)), bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536)) - - @test isequal_interval(atanh(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)), bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008)) - - @test isequal_interval(atanh(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)), bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796)) - - @test isequal_interval(atanh(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)), bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976)) - - @test isequal_interval(atanh(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)), bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948)) - - @test isequal_interval(atanh(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)), bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796)) - - @test isequal_interval(atanh(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)), bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556)) - - @test isequal_interval(atanh(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)), bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268)) - - @test isequal_interval(atanh(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)), bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232)) - - @test isequal_interval(atanh(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)), bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456)) - - @test isequal_interval(atanh(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)), bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C4732686C0P-24)) - - @test isequal_interval(atanh(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)), bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868)) - - @test isequal_interval(atanh(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)), bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840)) - - @test isequal_interval(atanh(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)), bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408)) - - @test isequal_interval(atanh(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)), bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512)) - - @test isequal_interval(atanh(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)), bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564)) - - @test isequal_interval(atanh(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)), bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856)) - - @test isequal_interval(atanh(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)), bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520)) - - @test isequal_interval(atanh(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)), bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688)) - - @test isequal_interval(atanh(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)), bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768)) - - @test isequal_interval(atanh(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)), bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548)) - - @test isequal_interval(atanh(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)), bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912)) - - @test isequal_interval(atanh(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)), bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664)) - - @test isequal_interval(atanh(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)), bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304)) - - @test isequal_interval(atanh(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)), bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020)) - - @test isequal_interval(acoth(bareinterval(0x5.AD89AD14DDC78P+272, 0x2.6EC5D31670A60P+860)), bareinterval(0x6.93B8C1A4ADA4CP-864, 0x2.D165505974CDCP-276)) - - @test isequal_interval(acoth(bareinterval(-0x2.6EC5D31670A60P+860, -0x5.AD89AD14DDC78P+272)), bareinterval(-0x2.D165505974CDCP-276, -0x6.93B8C1A4ADA4CP-864)) - - @test isequal_interval(acoth(bareinterval(0x4.A457C35864944P+344, 0x2.3ADEFB54BC04AP+444)), bareinterval(0x7.2CCCD8F3E4D84P-448, 0x3.726295CD6E028P-348)) - - @test isequal_interval(acoth(bareinterval(-0x2.3ADEFB54BC04AP+444, -0x4.A457C35864944P+344)), bareinterval(-0x3.726295CD6E028P-348, -0x7.2CCCD8F3E4D84P-448)) - - @test isequal_interval(acoth(bareinterval(0x6.941C8B9506D98P+56, 0x3.B11D8083AE95CP+744)), bareinterval(0x4.55780C09BB248P-748, 0x2.6EA0EC606D92CP-60)) - - @test isequal_interval(acoth(bareinterval(-0x3.B11D8083AE95CP+744, -0x6.941C8B9506D98P+56)), bareinterval(-0x2.6EA0EC606D92CP-60, -0x4.55780C09BB248P-748)) - - @test isequal_interval(acoth(bareinterval(0x1.09A940A083EE4P+132, 0x1.047FD514ADF09P+384)), bareinterval(0xF.B940FE60125C0P-388, 0xF.6B0B0DCA2D740P-136)) - - @test isequal_interval(acoth(bareinterval(-0x1.047FD514ADF09P+384, -0x1.09A940A083EE4P+132)), bareinterval(-0xF.6B0B0DCA2D740P-136, -0xF.B940FE60125C0P-388)) - - @test isequal_interval(acoth(bareinterval(0x7.710740B71A0DCP+256, 0xF.C0798D156BFB0P+560)), bareinterval(0x1.04086A3447A55P-564, 0x2.266CE7A905524P-260)) - - @test isequal_interval(acoth(bareinterval(-0xF.C0798D156BFB0P+560, -0x7.710740B71A0DCP+256)), bareinterval(-0x2.266CE7A905524P-260, -0x1.04086A3447A55P-564)) - - @test isequal_interval(acoth(bareinterval(0x2.3721A01F70458P+564, 0x9.C62BBF31FD298P+728)), bareinterval(0x1.A3110641EF7BCP-732, 0x7.38E97DB7ABD94P-568)) - - @test isequal_interval(acoth(bareinterval(-0x9.C62BBF31FD298P+728, -0x2.3721A01F70458P+564)), bareinterval(-0x7.38E97DB7ABD94P-568, -0x1.A3110641EF7BCP-732)) - - @test isequal_interval(acoth(bareinterval(0x6.F06D452BDCEF8P+44, 0x2.4825931366BBEP+520)), bareinterval(0x7.030E427A5F700P-524, 0x2.4E45C5E18EA0EP-48)) - - @test isequal_interval(acoth(bareinterval(-0x2.4825931366BBEP+520, -0x6.F06D452BDCEF8P+44)), bareinterval(-0x2.4E45C5E18EA0EP-48, -0x7.030E427A5F700P-524)) - - @test isequal_interval(acoth(bareinterval(0x5.D326D4B0883DCP+76, 0x1.77175C5A113AEP+528)), bareinterval(0xA.EB85BC1375C18P-532, 0x2.BF32E14DB1D26P-80)) - - @test isequal_interval(acoth(bareinterval(-0x1.77175C5A113AEP+528, -0x5.D326D4B0883DCP+76)), bareinterval(-0x2.BF32E14DB1D26P-80, -0xA.EB85BC1375C18P-532)) - - @test isequal_interval(acoth(bareinterval(0x1.05ADFE119D4C3P+296, 0x2.6BCDF50E05E36P+1020)), bareinterval(0x6.9BC8F6BE69A84P-1024, 0xF.A7190DED61120P-300)) - - @test isequal_interval(acoth(bareinterval(-0x2.6BCDF50E05E36P+1020, -0x1.05ADFE119D4C3P+296)), bareinterval(-0xF.A7190DED61120P-300, -0x6.9BC8F6BE69A84P-1024)) - - @test isequal_interval(acoth(bareinterval(0xA.7F5D255B81270P+408, 0x1.9D1EDDC132B38P+864)), bareinterval(0x9.EA2F16D4B51A8P-868, 0x1.8630054C790C6P-412)) - - @test isequal_interval(acoth(bareinterval(-0x1.9D1EDDC132B38P+864, -0xA.7F5D255B81270P+408)), bareinterval(-0x1.8630054C790C6P-412, -0x9.EA2F16D4B51A8P-868)) - - @test isequal_interval(acoth(bareinterval(0xC.FBE4E2C6D0A90P+484, 0x4.DF75BDC17C334P+868)), bareinterval(0x3.4891A2770DF7CP-872, 0x1.3B7754395DD7FP-488)) - - @test isequal_interval(acoth(bareinterval(-0x4.DF75BDC17C334P+868, -0xC.FBE4E2C6D0A90P+484)), bareinterval(-0x1.3B7754395DD7FP-488, -0x3.4891A2770DF7CP-872)) - - @test isequal_interval(acoth(bareinterval(0xB.241032F9700A8P+380, 0x1.04A65B06B2921P+640)), bareinterval(0xF.B6EE12E44E478P-644, 0x1.6FA7BD9AAC5D2P-384)) - - @test isequal_interval(acoth(bareinterval(-0x1.04A65B06B2921P+640, -0xB.241032F9700A8P+380)), bareinterval(-0x1.6FA7BD9AAC5D2P-384, -0xF.B6EE12E44E478P-644)) - - @test isequal_interval(acoth(bareinterval(0x5.F207EAF5F8BB8P+608, 0xA.BC87C6F90AEE8P+648)), bareinterval(0x1.7D8116060016CP-652, 0x2.B0EE9FA61C0DAP-612)) - - @test isequal_interval(acoth(bareinterval(-0xA.BC87C6F90AEE8P+648, -0x5.F207EAF5F8BB8P+608)), bareinterval(-0x2.B0EE9FA61C0DAP-612, -0x1.7D8116060016CP-652)) - - @test isequal_interval(acoth(bareinterval(0x1.BCD62C46ADFD9P+16, 0xA.CD289B35ECD08P+564)), bareinterval(0x1.7B35C74EEC020P-568, 0x9.35374E76B1BE8P-20)) - - @test isequal_interval(acoth(bareinterval(-0xA.CD289B35ECD08P+564, -0x1.BCD62C46ADFD9P+16)), bareinterval(-0x9.35374E76B1BE8P-20, -0x1.7B35C74EEC020P-568)) - - @test isequal_interval(acoth(bareinterval(0x6.534BBA40A0B4CP+224, 0x1.8DE35856E91FDP+452)), bareinterval(0xA.4B5AAEDFCE6A8P-456, 0x2.878CF52E5FBF8P-228)) - - @test isequal_interval(acoth(bareinterval(-0x1.8DE35856E91FDP+452, -0x6.534BBA40A0B4CP+224)), bareinterval(-0x2.878CF52E5FBF8P-228, -0xA.4B5AAEDFCE6A8P-456)) - - @test isequal_interval(expm1(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)), bareinterval(-0x1.0000000000000P+0, -0x1.B3E4076622F03P-232)) - - @test isequal_interval(expm1(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)), bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0506P-508)) - - @test isequal_interval(expm1(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)), bareinterval(-0x1.0000000000000P+0, -0x1.5D74CFDA6B291P-200)) - - @test isequal_interval(expm1(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)), bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3470P-456)) - - @test isequal_interval(expm1(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)), bareinterval(-0x1.0000000000000P+0, -0xD.45BCBA84EE268P-4)) - - @test isequal_interval(expm1(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)), bareinterval(-0x1.0000000000000P+0, -0x4.F0F28370909F8P-440)) - - @test isequal_interval(expm1(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)), bareinterval(-0x1.0000000000000P+0, -0x1.EB095183538C7P-344)) - - @test isequal_interval(expm1(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)), bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE88P-756)) - - @test isequal_interval(expm1(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)), bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357A8P-564)) - - @test isequal_interval(expm1(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)), bareinterval(-0x1.0000000000000P+0, -0x5.CBE2BD423AF1CP-48)) - - @test isequal_interval(expm1(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)), bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4)) - - @test isequal_interval(expm1(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)), bareinterval(-0x1.0000000000000P+0, -0x2.581DAD9AFE6DAP-172)) - - @test isequal_interval(expm1(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)), bareinterval(-0x1.0000000000000P+0, -0x7.19390F862F498P-544)) - - @test isequal_interval(expm1(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)), bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57190P-440)) - - @test isequal_interval(expm1(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)), bareinterval(-0x1.0000000000000P+0, -0xF.13E388B2165E8P-512)) - - @test isequal_interval(expm1(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)), bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED014P-316)) - - @test isequal_interval(expm1(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)), bareinterval(0x1.B7E151628AED2P+0, 0x6.63992E35376B8P+0)) - - @test isequal_interval(expm1(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)), bareinterval(-0xA.1D2A7274C4328P-4, +0x6.63992E35376B8P+0)) - - @test isequal_interval(expm1(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)), bareinterval(-0xF.E466C01FF2AD0P-4, -0xF.341279998A7A8P-4)) - - @test isequal_interval(expm1(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)), bareinterval(-0xD.D5AAAB880FC70P-4, +0xD.27660B11A9EF8P-4)) - - @test isequal_interval(expm1(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)), bareinterval(0x4.0000000000000P-1076, 0x4.4444800000000P-1056)) - - @test isequal_interval(expm1(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)), bareinterval(0x4.4440000000000P-1064, 0x1.B7E151628AED3P+0)) - - @test isequal_interval(expm1(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)), bareinterval(-0x4.4444000000000P-1060, +0x4.4448000000000P-1060)) - - @test isequal_interval(expm1(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)), bareinterval(-0x4.4400000000000P-1068, +0x6.6322F8540CFB4P+0)) - - @test isequal_interval(expm1(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)), bareinterval(-0xD.D5A88131A6240P-4, -0x8.8888840000000P-1052)) - - @test isequal_interval(expm1(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)), bareinterval(-0xD.D5AAAB656A718P-4, +0x8.CD11555800000P-1044)) - - @test isequal_interval(log1p(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)), bareinterval(0xC.4B4A6EB6B3AE8P-264, 0x4.227AD8183FB70P+4)) - - @test isequal_interval(log1p(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)), bareinterval(0x2.6213E21B14892P-516, 0x6.6606F0995E5F4P-224)) - - @test isequal_interval(log1p(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)), bareinterval(0x9.0FF2CAA1B3040P-240, 0xA.40B346F454218P+4)) - - @test isequal_interval(log1p(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)), bareinterval(0x8.E2ADA8DFBE930P-492, 0x3.67CB3BE0BB146P-452)) - - @test isequal_interval(log1p(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)), bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4)) - - @test isequal_interval(log1p(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)), bareinterval(0x6.A000A1283845CP-44, 0xC.091AAD1207058P+4)) - - @test isequal_interval(log1p(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)), bareinterval(0x1.3C84E4F9C80CDP-476, 0x8.A1137BDE55CF8P+4)) - - @test isequal_interval(log1p(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)), bareinterval(0x8.41D2DB6D93540P-376, 0x6.21D80D9193AB8P+4)) - - @test isequal_interval(log1p(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)), bareinterval(0x1.2C18FEEBCAEADP-768, 0x1.C369E759DF5E3P-328)) - - @test isequal_interval(log1p(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)), bareinterval(0x4.D94E91619D3ECP-580, 0x2.9F6CAF6B5513EP-132)) - - @test isequal_interval(log1p(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)), bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4)) - - @test isequal_interval(log1p(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)), bareinterval(0x3.36DE5C55594ECP-100, 0x8.DFF506FE0D9F8P+4)) - - @test isequal_interval(log1p(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)), bareinterval(0x4.5771391F308D8P+0, 0x1.9D179EA5204D0P+8)) - - @test isequal_interval(log1p(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)), bareinterval(0xE.CD14C501247C0P+0, 0x1.B46DC0D02B874P+8)) - - @test isequal_interval(log1p(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)), bareinterval(0x2.33950F38F830CP-176, 0x5.BE0377E504F78P-24)) - - @test isequal_interval(log1p(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)), bareinterval(0x3.24F03DF33568AP-560, 0x2.805CE2DC91036P+8)) - - @test isequal_interval(log1p(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)), bareinterval(0x2.D572639DC5FA6P-468, 0x1.95CF42AA171CDP-160)) - - @test isequal_interval(log1p(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)), bareinterval(0x4.705A028302DACP-532, 0xE.1A4A3523F2658P+4)) - - @test isequal_interval(log1p(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)), bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4)) - - @test isequal_interval(log1p(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)), bareinterval(0x4.9FA5A1E4DF73CP-328, 0x1.11B85141B78F6P-240)) - - @test isequal_interval(log1p(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)), bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8)) - - @test isequal_interval(log1p(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)), bareinterval(0x6.88441038D56B4P-108, 0x5.F718BBF0CE2F8P+4)) - - @test isequal_interval(log1p(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)), bareinterval(0x7.1761CAB055130P-356, 0x1.92EFD09488689P-76)) - - @test isequal_interval(log1p(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)), bareinterval(0x6.2085E427413C4P-252, 0xB.8CDD3AFE235D0P-36)) - - @test isequal_interval(log1p(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)), bareinterval(0xB.F5F1C0FA33970P-504, 0x3.36D2B121508A8P+4)) - - @test isequal_interval(log1p(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)), bareinterval(0xB.BC7E37EB2D380P-216, 0x8.5ADC069F618A8P+4)) - - @test isequal_interval(log1p(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)), bareinterval(0x1.E139DD116F867P-688, 0xD.2545346D68FD0P-148)) - - @test isequal_interval(log1p(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)), bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4)) - - @test isequal_interval(log1p(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)), bareinterval(0x5.9C4642ED78BC4P-340, 0x1.990C99B6124FEP+8)) - - @test isequal_interval(log1p(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)), bareinterval(0xF.C05EA810DFE80P-180, 0xA.05884FBED5F48P-152)) - - @test isequal_interval(sqrt(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)), bareinterval(0x3.819C8C44FCAE8P-132, 0xD.2F2830FA93228P+44)) - - @test isequal_interval(sqrt(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)), bareinterval(0x6.2CC8B5D1B7648P-260, 0x2.878F8E10E2752P-112)) - - @test isequal_interval(sqrt(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)), bareinterval(0x3.02A74AB0BBF36P-120, 0x5.0979194446A10P+116)) - - @test isequal_interval(sqrt(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)), bareinterval(0xB.EC63BFE10BCC8P-248, 0x7.61AC89CF17804P-228)) - - @test isequal_interval(sqrt(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)), bareinterval(0x4.6CBEB2D8F6718P+96, 0x2.E0F32319AC30AP+112)) - - @test isequal_interval(sqrt(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)), bareinterval(0xA.4BAEE7F482900P-24, 0x7.830C8D5A5F3D8P+136)) - - @test isequal_interval(sqrt(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)), bareinterval(0x4.729F7C344CE30P-240, 0xC.14519D6697FF0P+96)) - - @test isequal_interval(sqrt(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)), bareinterval(0x2.DF9F14A64C77AP-188, 0x6.D87D667089BD8P+68)) - - @test isequal_interval(sqrt(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)), bareinterval(0x1.152C585EDDB6AP-384, 0x1.53F1A81CAA4A0P-164)) - - @test isequal_interval(sqrt(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)), bareinterval(0x8.CEDC2135E05E8P-292, 0x6.7A5BEF2579C34P-68)) - - @test isequal_interval(sqrt(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)), bareinterval(0x6.7722C88D985D8P+56, 0x7.BE7173245A668P+136)) - - @test isequal_interval(sqrt(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)), bareinterval(0x7.2BE248A308D24P-52, 0x5.630224B50BCF8P+100)) - - @test isequal_interval(sqrt(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)), bareinterval(0x8.B53B61217B4F8P+0, 0x3.F40FA54A699E2P+296)) - - @test isequal_interval(sqrt(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)), bareinterval(0x6.64E1F64817930P+8, 0x7.0BBE006E8934CP+312)) - - @test isequal_interval(sqrt(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)), bareinterval(0x1.7BD69462CDAD2P-88, 0x2.6573BFB248EF0P-12)) - - @test isequal_interval(sqrt(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)), bareinterval(0x1.C5F168118C2B1P-280, 0x3.CB8CCAD62ED10P+460)) - - @test isequal_interval(sqrt(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)), bareinterval(0x6.BBC8A036CC930P-236, 0x1.4250C275A7B2BP-80)) - - @test isequal_interval(sqrt(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)), bareinterval(0x8.6D6D9A3EA2160P-268, 0x6.CEB17F56F1B50P+160)) - - @test isequal_interval(sqrt(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)), bareinterval(0x2.343E215EB2264P+72, 0x7.603E67F0E1DD0P+96)) - - @test isequal_interval(sqrt(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)), bareinterval(0x2.26777C4E368BEP-164, 0x1.08B63617A4210P-120)) - - @test isequal_interval(sqrt(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)), bareinterval(0x3.2B934CDCC29E0P+180, 0xF.CC99981010AD0P+260)) - - @test isequal_interval(sqrt(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)), bareinterval(0xA.392C9B2283838P-56, 0x1.CCC9C68E6B873P+68)) - - @test isequal_interval(sqrt(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)), bareinterval(0xA.A6DE001E1A878P-180, 0x5.04B0B42B185F4P-40)) - - @test isequal_interval(sqrt(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)), bareinterval(0x9.E6B17DD90B818P-128, 0xD.9821AE0A3F288P-20)) - - @test isequal_interval(sqrt(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)), bareinterval(0x3.755B7F9B147FCP-252, 0x2.235AF64AA2532P+36)) - - @test isequal_interval(sqrt(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)), bareinterval(0x3.6D0318CB65970P-108, 0x1.589B93C7CC280P+96)) - - @test isequal_interval(sqrt(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)), bareinterval(0x1.5EFD65C23F515P-344, 0xE.80B36809CA340P-76)) - - @test isequal_interval(sqrt(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)), bareinterval(0x1.B24CEBB3D4B84P+96, 0x6.37B4CD9068634P+128)) - - @test isequal_interval(sqrt(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)), bareinterval(0x9.797C4D6802170P-172, 0x8.60D1F01F1A8D8P+292)) - - @test isequal_interval(sqrt(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)), bareinterval(0xF.E00F72E6C82F8P-92, 0x3.2A6AD8ACFCBB0P-76)) - - @test isequal_interval(nthpow(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944), 2), bareinterval(0x0.0000000000000P+0, 0x6.BFD4840B33478P-300)) - - @test isequal_interval(nthpow(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624), 2), bareinterval(0x0.0000000000000P+0, 0x2.A05EA84E4893CP-872)) - - @test isequal_interval(nthpow(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960), 2), bareinterval(0x0.0000000000000P+0, 0x1.D1A144EFBEB44P+12)) - - @test isequal_interval(nthpow(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588), 2), bareinterval(0x0.0000000000000P+0, 0x2.8817BFAFBDF18P-744)) - - @test isequal_interval(nthpow(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564), 2), bareinterval(0x0.0000000000000P+0, 0xB.051CC05C2EBE0P-712)) - - @test isequal_interval(nthpow(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412), 2), bareinterval(0x4.5E83E96FF693CP-824, 0xA.548CA7F8C13A0P-660)) - - @test isequal_interval(nthpow(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792), 2), bareinterval(0x0.0000000000000P+0, 0x1.6EBF489D48CA5P-80)) - - @test isequal_interval(nthpow(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204), 2), bareinterval(0x8.C23056BA480A8P-408, 0x1.90CBA74D12CF4P-396)) - - @test isequal_interval(nthpow(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80), 2), bareinterval(0xE.89E458947EFA8P-532, 0xB.F4E1999D73020P-160)) - - @test isequal_interval(nthpow(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916), 2), bareinterval(0x0.0000000000000P+0, 0x8.8D07F2E827770P-748)) - - @test isequal_interval(nthpow(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16), 2), bareinterval(0x0.0000000000000P+0, 0xC.A9B03500DD578P-28)) - - @test isequal_interval(nthpow(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576), 2), bareinterval(0x0.0000000000000P+0, 0x5.F6582538F0F44P-668)) - - @test isequal_interval(nthpow(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388), 2), bareinterval(0x0.0000000000000P+0, 0x2.52887FE100FF0P-772)) - - @test isequal_interval(nthpow(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20), 2), bareinterval(0x0.0000000000000P+0, 0x1.B9CBC9B69E7BFP-36)) - - @test isequal_interval(nthpow(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836), 2), bareinterval(0x0.0000000000000P+0, 0x4.377B251ABDCC0P-604)) - - @test isequal_interval(nthpow(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760), 2), bareinterval(0x0.0000000000000P+0, 0x2.D668271745A42P-996)) - - @test isequal_interval(nthpow(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780), 2), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(nthpow(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780), 2), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(nthpow(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664), 2), bareinterval(0x0.0000000000000P+0, 0x9.7A69470135FA8P-100)) - - @test isequal_interval(nthpow(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548), 2), bareinterval(0x0.0000000000000P+0, 0x6.57CBD208B34ACP-244)) - - @test isequal_interval(nthpow(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008), 2), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(nthpow(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740), 2), bareinterval(0x0.0000000000000P+0, 0x8.CC15E342FC8D8P-332)) - - @test isequal_interval(nthpow(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928), 2), bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076)) - - @test isequal_interval(nthpow(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28), 2), bareinterval(0x0.0000000000000P+0, 0xD.46C8C24634FC8P-56)) - - @test isequal_interval(nthpow(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772), 2), bareinterval(0x0.0000000000000P+0, 0x4.264E23607BEA8P-752)) - - @test isequal_interval(nthpow(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540), 2), bareinterval(0x0.0000000000000P+0, 0x2.3A3F453ECAFB4P-168)) - - @test isequal_interval(nthpow(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496), 2), bareinterval(0xE.FCF2D2F52B4C0P-992, 0x1.0FE5AD9038BC9P-548)) - - @test isequal_interval(nthpow(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876), 2), bareinterval(0x0.0000000000000P+0, 0x3.ECDBE373EAC94P-652)) - - @test isequal_interval(nthpow(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608), 2), bareinterval(0x0.0000000000000P+0, 0x9.29DBB2B42A988P-508)) - - @test isequal_interval(nthpow(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432), 2), bareinterval(0xC.FE1B0DE21E568P-860, 0x8.B6138BE0C5B78P-468)) - -end diff --git a/test/test_ITF1788/ieee1788-constructors.jl b/test/test_ITF1788/ieee1788-constructors.jl deleted file mode 100755 index ca46f98ca..000000000 --- a/test/test_ITF1788/ieee1788-constructors.jl +++ /dev/null @@ -1,113 +0,0 @@ -@testset "IEEE1788.a" begin - - @test isequal_interval(bareinterval(-Inf, Inf), entireinterval(BareInterval{Float64})) - -end - -@testset "IEEE1788.b" begin - - @test isequal_interval(parse(BareInterval{Float64}, "[1.2345]"), bareinterval(0x1.3C083126E978DP+0, 0x1.3C083126E978EP+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[1,+infinity]"), bareinterval(1.0, Inf)) - - @test isequal_interval(parse(Interval{Float64}, "[1,1e3]_com"), Interval(bareinterval(1.0, 1000.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[1,1E3]_COM"), Interval(bareinterval(1.0, 1000.0), IntervalArithmetic.com)) - -end - -@testset "IEEE1788.c" begin - - @test isequal_interval(parse(BareInterval{Float64}, "[1.e-3, 1.1e-3]"), bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12)) - - @test isequal_interval(parse(BareInterval{Float64}, "[-0x1.3p-1, 2/3]"), bareinterval(-0x9.8000000000000P-4, +0xA.AAAAAAAAAAAB0P-4)) - - @test isequal_interval(parse(BareInterval{Float64}, "[3.56]"), bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8F5C28F5C28F6P+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "3.56?1"), bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "3.56?1e2"), bareinterval(355.0, 357.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "3.560?2"), bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "3.56?"), bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "3.560?2u"), bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "-10?"), bareinterval(-10.5, -9.5)) - - @test isequal_interval(parse(BareInterval{Float64}, "-10?u"), bareinterval(-10.0, -9.5)) - - @test isequal_interval(parse(BareInterval{Float64}, "-10?12"), bareinterval(-22.0, 2.0)) - -end - -@testset "IEEE1788.d" begin - - @test isequal_interval(parse(BareInterval{Float64}, "[1.234e5,Inf]"), bareinterval(123400.0, Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "3.1416?1"), bareinterval(0x3.24395810624DCP+0, 0x3.24467381D7DC0P+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[Empty]"), emptyinterval(BareInterval{Float64})) - -end - -@testset "IEEE1788.e" begin - - @test isnai(interval(2,1)) - -end - -@testset "IEEE1788.e" begin - - @test isequal_interval(parse(Interval{Float64}, "[ ]"), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[entire]"), Interval(bareinterval(-Inf, +Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[1.e-3, 1.1e-3]"), Interval(bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[-Inf, 2/3]"), Interval(bareinterval(-Inf, +0xA.AAAAAAAAAAAB0P-4), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[0x1.3p-1,]"), Interval(bareinterval(0x1.3p-1, Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[,]"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "3.56?1"), Interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "3.56?1e2"), Interval(bareinterval(355.0, 357.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "3.560?2"), Interval(bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "3.56?"), Interval(bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "3.560?2u"), Interval(bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "-10?"), Interval(bareinterval(-10.5, -9.5), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "-10?u"), Interval(bareinterval(-10.0, -9.5), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "-10?12"), Interval(bareinterval(-22.0, 2.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "-10??u"), Interval(bareinterval(-10.0, Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "-10??"), Interval(bareinterval(-Inf, Inf), IntervalArithmetic.dac)) - - @test isnai(parse(Interval{Float64}, "[nai]")) - - @test isequal_interval(parse(Interval{Float64}, "3.56?1_def"), Interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), IntervalArithmetic.def)) - -end - -@testset "IEEE1788.f" begin - - @test isequal_interval(parse(BareInterval{Float64}, "[]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[empty]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ empty ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[,]"), entireinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ entire ]"), entireinterval(BareInterval{Float64})) - -end diff --git a/test/test_ITF1788/ieee1788-exceptions.jl b/test/test_ITF1788/ieee1788-exceptions.jl deleted file mode 100755 index b4c7c5486..000000000 --- a/test/test_ITF1788/ieee1788-exceptions.jl +++ /dev/null @@ -1,11 +0,0 @@ -@testset "exceptions" begin - - @test isequal_interval(parse(BareInterval{Float64}, "[+infinity]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(bareinterval(+Inf, -Inf), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(bareinterval(nai()), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[1.0000000000000001, 1.0000000000000002]"), bareinterval(1.0, 0x1.0000000000001p+0)) - -end diff --git a/test/test_ITF1788/libieeep1788_bool.jl b/test/test_ITF1788/libieeep1788_bool.jl deleted file mode 100644 index 42c71d030..000000000 --- a/test/test_ITF1788/libieeep1788_bool.jl +++ /dev/null @@ -1,867 +0,0 @@ -@testset "minimal_is_empty_test" begin - - @test isempty_interval(emptyinterval(BareInterval{Float64})) == true - - @test isempty_interval(bareinterval(-Inf,+Inf)) == false - - @test isempty_interval(bareinterval(1.0,2.0)) == false - - @test isempty_interval(bareinterval(-1.0,2.0)) == false - - @test isempty_interval(bareinterval(-3.0,-2.0)) == false - - @test isempty_interval(bareinterval(-Inf,2.0)) == false - - @test isempty_interval(bareinterval(-Inf,0.0)) == false - - @test isempty_interval(bareinterval(-Inf,-0.0)) == false - - @test isempty_interval(bareinterval(0.0,Inf)) == false - - @test isempty_interval(bareinterval(-0.0,Inf)) == false - - @test isempty_interval(bareinterval(-0.0,0.0)) == false - - @test isempty_interval(bareinterval(0.0,-0.0)) == false - - @test isempty_interval(bareinterval(0.0,0.0)) == false - - @test isempty_interval(bareinterval(-0.0,-0.0)) == false - -end - -@testset "minimal_is_empty_dec_test" begin - - @test isempty_interval(nai()) == false - - @test isempty_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isempty_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.def)) == false - - @test isempty_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)) == false - - @test isempty_interval(Interval(bareinterval(-1.0,2.0), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(-3.0,-2.0), IntervalArithmetic.dac)) == false - - @test isempty_interval(Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def)) == false - - @test isempty_interval(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.com)) == false - - @test isempty_interval(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == false - - @test isempty_interval(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == false - -end - -@testset "minimal_is_entire_test" begin - - @test isentire_interval(emptyinterval(BareInterval{Float64})) == false - - @test isentire_interval(bareinterval(-Inf,+Inf)) == true - - @test isentire_interval(bareinterval(1.0,2.0)) == false - - @test isentire_interval(bareinterval(-1.0,2.0)) == false - - @test isentire_interval(bareinterval(-3.0,-2.0)) == false - - @test isentire_interval(bareinterval(-Inf,2.0)) == false - - @test isentire_interval(bareinterval(-Inf,0.0)) == false - - @test isentire_interval(bareinterval(-Inf,-0.0)) == false - - @test isentire_interval(bareinterval(0.0,Inf)) == false - - @test isentire_interval(bareinterval(-0.0,Inf)) == false - - @test isentire_interval(bareinterval(-0.0,0.0)) == false - - @test isentire_interval(bareinterval(0.0,-0.0)) == false - - @test isentire_interval(bareinterval(0.0,0.0)) == false - - @test isentire_interval(bareinterval(-0.0,-0.0)) == false - -end - -@testset "minimal_is_entire_dec_test" begin - - @test isentire_interval(nai()) == false - - @test isentire_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isentire_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.def)) == true - - @test isentire_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.dac)) == true - - @test isentire_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)) == false - - @test isentire_interval(Interval(bareinterval(-1.0,2.0), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(-3.0,-2.0), IntervalArithmetic.dac)) == false - - @test isentire_interval(Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def)) == false - - @test isentire_interval(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.com)) == false - - @test isentire_interval(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == false - - @test isentire_interval(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == false - -end - -@testset "minimal_is_nai_dec_test" begin - - @test isnai(nai()) == true - - @test isnai(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.def)) == false - - @test isnai(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.dac)) == false - - @test isnai(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)) == false - - @test isnai(Interval(bareinterval(-1.0,2.0), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(-3.0,-2.0), IntervalArithmetic.dac)) == false - - @test isnai(Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def)) == false - - @test isnai(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.com)) == false - - @test isnai(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == false - - @test isnai(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == false - -end - -@testset "minimal_equal_test" begin - - @test isequal_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) == true - - @test isequal_interval(bareinterval(1.0,2.1), bareinterval(1.0,2.0)) == false - - @test isequal_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test isequal_interval(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) == false - - @test isequal_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == true - - @test isequal_interval(bareinterval(1.0,2.4), bareinterval(-Inf,+Inf)) == false - - @test isequal_interval(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) == true - - @test isequal_interval(bareinterval(1.0,2.4), bareinterval(1.0,Inf)) == false - - @test isequal_interval(bareinterval(-Inf,2.0), bareinterval(-Inf,2.0)) == true - - @test isequal_interval(bareinterval(-Inf,2.4), bareinterval(-Inf,2.0)) == false - - @test isequal_interval(bareinterval(-2.0,0.0), bareinterval(-2.0,0.0)) == true - - @test isequal_interval(bareinterval(-0.0,2.0), bareinterval(0.0,2.0)) == true - - @test isequal_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test isequal_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) == true - - @test isequal_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) == true - -end - -@testset "minimal_equal_dec_test" begin - - @test isequal_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(1.0,2.1), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), nai()) == false - - @test isequal_interval(nai(), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isequal_interval(nai(), nai()) == false - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isequal_interval(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isequal_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.def), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(1.0,2.4), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isequal_interval(Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(1.0,2.4), IntervalArithmetic.def), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) == false - - @test isequal_interval(Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(-Inf,2.4), IntervalArithmetic.def), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) == false - - @test isequal_interval(Interval(bareinterval(-2.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0,0.0), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(-0.0,2.0), IntervalArithmetic.def), Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.def), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test isequal_interval(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - -end - -@testset "minimal_subset_test" begin - - @test issubset_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) == true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,4.0)) == true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,1.0)) == true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,0.0)) == true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,-0.0)) == true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) == true - - @test issubset_interval(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) == false - - @test issubset_interval(bareinterval(-0.0,4.0), emptyinterval(BareInterval{Float64})) == false - - @test issubset_interval(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) == false - - @test issubset_interval(bareinterval(-Inf,+Inf), emptyinterval(BareInterval{Float64})) == false - - @test issubset_interval(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) == true - - @test issubset_interval(bareinterval(-0.0,4.0), bareinterval(-Inf,+Inf)) == true - - @test issubset_interval(bareinterval(-0.1,1.0), bareinterval(-Inf,+Inf)) == true - - @test issubset_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == true - - @test issubset_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) == true - - @test issubset_interval(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) == true - - @test issubset_interval(bareinterval(1.0,2.0), bareinterval(-0.0,4.0)) == true - - @test issubset_interval(bareinterval(0.1,0.2), bareinterval(0.0,4.0)) == true - - @test issubset_interval(bareinterval(0.1,0.2), bareinterval(-0.0,4.0)) == true - - @test issubset_interval(bareinterval(-0.1,-0.1), bareinterval(-4.0, 3.4)) == true - - @test issubset_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) == true - - @test issubset_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) == true - - @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) == true - - @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) == true - -end - -@testset "minimal_subset_dec_test" begin - - @test issubset_interval(nai(), nai()) == false - - @test issubset_interval(nai(), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test issubset_interval(nai(), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == false - - @test issubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.0,4.0), IntervalArithmetic.def)) == true - - @test issubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.1,0.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.1,-0.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test issubset_interval(Interval(bareinterval(-0.0,4.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test issubset_interval(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test issubset_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test issubset_interval(Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(-0.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(-0.0,4.0), IntervalArithmetic.def)) == true - - @test issubset_interval(Interval(bareinterval(0.1,0.2), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(0.1,0.2), IntervalArithmetic.trv), Interval(bareinterval(-0.0,4.0), IntervalArithmetic.def)) == true - - @test issubset_interval(Interval(bareinterval(-0.1,-0.1), IntervalArithmetic.trv), Interval(bareinterval(-4.0, 3.4), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.def)) == true - - @test issubset_interval(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.def), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test issubset_interval(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv)) == true - -end - -@testset "minimal_less_test" begin - - @test isweakless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test isweakless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) == false - - @test isweakless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) == false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == true - - @test isweakless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test isweakless(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test isweakless(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) == false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(0.0,2.0)) == false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-0.0,2.0)) == false - - @test isweakless(bareinterval(0.0,2.0), bareinterval(0.0,2.0)) == true - - @test isweakless(bareinterval(0.0,2.0), bareinterval(-0.0,2.0)) == true - - @test isweakless(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) == true - - @test isweakless(bareinterval(-0.0,2.0), bareinterval(1.0,2.0)) == true - - @test isweakless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) == true - - @test isweakless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) == true - - @test isweakless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) == true - - @test isweakless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) == true - - @test isweakless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) == true - - @test isweakless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) == true - - @test isweakless(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) == true - - @test isweakless(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) == true - - @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) == true - - @test isweakless(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test isweakless(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) == true - -end - -@testset "minimal_less_dec_test" begin - - @test isweakless(nai(), nai()) == false - - @test isweakless(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), nai()) == false - - @test isweakless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), nai()) == false - - @test isweakless(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) == false - - @test isweakless(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(bareinterval(-0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(0.0,2.0), IntervalArithmetic.def)) == false - - @test isweakless(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-0.0,2.0), IntervalArithmetic.trv)) == false - - @test isweakless(Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,2.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(0.0,2.0), IntervalArithmetic.def), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) == true - - @test isweakless(Interval(bareinterval(-0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == true - - @test isweakless(Interval(bareinterval(1.0,3.5), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(1.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(-3.0,-1.5), IntervalArithmetic.trv), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.def)) == true - - @test isweakless(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.def), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test isweakless(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv)) == true - -end - -@testset "minimal_precedes_test" begin - - @test precedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) == true - - @test precedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) == true - - @test precedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test precedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test precedes(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test precedes(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test precedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) == false - - @test precedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == false - - @test precedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) == true - - @test precedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) == true - - @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,0.0)) == true - - @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,-0.0)) == true - - @test precedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) == false - - @test precedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) == false - - @test precedes(bareinterval(-3.0, -0.1), bareinterval(-1.0,0.0)) == false - - @test precedes(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) == true - - @test precedes(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) == true - - @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) == true - - @test precedes(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) == true - - @test precedes(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) == true - -end - -@testset "minimal_precedes_dec_test" begin - - @test precedes(nai(), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == false - - @test precedes(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), nai()) == false - - @test precedes(nai(), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test precedes(nai(), nai()) == false - - @test precedes(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == true - - @test precedes(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test precedes(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(-0.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(1.0,3.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == true - - @test precedes(Interval(bareinterval(-3.0, -1.0), IntervalArithmetic.def), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(-3.0, -1.0), IntervalArithmetic.trv), Interval(bareinterval(-1.0,-0.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(1.0,3.5), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(1.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(-3.0, -0.1), IntervalArithmetic.trv), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)) == false - - @test precedes(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.def)) == true - - @test precedes(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(-0.0,0.0), IntervalArithmetic.def), Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test precedes(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv)) == true - -end - -@testset "minimal_interior_test" begin - - @test isstrictsubset_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test isstrictsubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) == true - - @test isstrictsubset_interval(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) == false - - @test isstrictsubset_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == true - - @test isstrictsubset_interval(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) == true - - @test isstrictsubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) == true - - @test isstrictsubset_interval(bareinterval(-Inf,+Inf), bareinterval(0.0,4.0)) == false - - @test isstrictsubset_interval(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) == false - - @test isstrictsubset_interval(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) == true - - @test isstrictsubset_interval(bareinterval(-2.0,2.0), bareinterval(-2.0,4.0)) == false - - @test isstrictsubset_interval(bareinterval(-0.0,-0.0), bareinterval(-2.0,4.0)) == true - - @test isstrictsubset_interval(bareinterval(0.0,0.0), bareinterval(-2.0,4.0)) == true - - @test isstrictsubset_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) == false - - @test isstrictsubset_interval(bareinterval(0.0,4.4), bareinterval(0.0,4.0)) == false - - @test isstrictsubset_interval(bareinterval(-1.0,-1.0), bareinterval(0.0,4.0)) == false - - @test isstrictsubset_interval(bareinterval(2.0,2.0), bareinterval(-2.0,-1.0)) == false - -end - -@testset "minimal_interior_dec_test" begin - - @test isstrictsubset_interval(nai(), nai()) == false - - @test isstrictsubset_interval(nai(), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(nai(), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(Interval(bareinterval(0.0,4.0), IntervalArithmetic.def), nai()) == false - - @test isstrictsubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(bareinterval(0.0,4.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(bareinterval(-2.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0,4.0), IntervalArithmetic.def)) == false - - @test isstrictsubset_interval(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0,4.0), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(bareinterval(0.0,0.0), IntervalArithmetic.def), Interval(bareinterval(-2.0,4.0), IntervalArithmetic.trv)) == true - - @test isstrictsubset_interval(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(Interval(bareinterval(0.0,4.4), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == false - - @test isstrictsubset_interval(Interval(bareinterval(-1.0,-1.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.def)) == false - - @test isstrictsubset_interval(Interval(bareinterval(2.0,2.0), IntervalArithmetic.def), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.trv)) == false - -end - -@testset "minimal_strictly_less_test" begin - - @test isstrictless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test isstrictless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) == false - - @test isstrictless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) == false - - @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == true - - @test isstrictless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) == false - - @test isstrictless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) == false - - @test isstrictless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) == true - - @test isstrictless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) == true - - @test isstrictless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) == false - - @test isstrictless(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) == false - - @test isstrictless(bareinterval(-0.0,4.0), bareinterval(0.0,4.0)) == false - - @test isstrictless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) == false - - @test isstrictless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) == true - -end - -@testset "minimal_strictly_less_dec_test" begin - - @test isstrictless(nai(), nai()) == false - - @test isstrictless(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), nai()) == false - - @test isstrictless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), nai()) == false - - @test isstrictless(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) == false - - @test isstrictless(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isstrictless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isstrictless(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) == false - - @test isstrictless(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == true - - @test isstrictless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isstrictless(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isstrictless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test isstrictless(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test isstrictless(Interval(bareinterval(1.0,3.5), IntervalArithmetic.def), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test isstrictless(Interval(bareinterval(1.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == false - - @test isstrictless(Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,4.0), IntervalArithmetic.def)) == false - - @test isstrictless(Interval(bareinterval(-0.0,4.0), IntervalArithmetic.def), Interval(bareinterval(0.0,4.0), IntervalArithmetic.trv)) == false - - @test isstrictless(Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.def), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.def)) == false - - @test isstrictless(Interval(bareinterval(-3.0,-1.5), IntervalArithmetic.trv), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.trv)) == true - -end - -@testset "minimal_strictly_precedes_test" begin - - @test strictprecedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) == true - - @test strictprecedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) == true - - @test strictprecedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test strictprecedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) == false - - @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) == false - - @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == false - - @test strictprecedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) == true - - @test strictprecedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) == false - - @test strictprecedes(bareinterval(-3.0,-1.0), bareinterval(-1.0,0.0)) == false - - @test strictprecedes(bareinterval(-3.0,-0.0), bareinterval(0.0,1.0)) == false - - @test strictprecedes(bareinterval(-3.0,0.0), bareinterval(-0.0,1.0)) == false - - @test strictprecedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) == false - - @test strictprecedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) == false - - @test strictprecedes(bareinterval(-3.0,-0.1), bareinterval(-1.0,0.0)) == false - -end - -@testset "minimal_strictly_precedes_dec_test" begin - - @test strictprecedes(nai(), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(3.0,4.0), IntervalArithmetic.def), nai()) == false - - @test strictprecedes(nai(), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test strictprecedes(nai(), nai()) == false - - @test strictprecedes(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test strictprecedes(Interval(bareinterval(3.0,4.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test strictprecedes(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test strictprecedes(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == true - - @test strictprecedes(Interval(bareinterval(1.0,3.0), IntervalArithmetic.def), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(-3.0,-1.0), IntervalArithmetic.trv), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) == false - - @test strictprecedes(Interval(bareinterval(-3.0,-0.0), IntervalArithmetic.def), Interval(bareinterval(0.0,1.0), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(-3.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,1.0), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(1.0,3.5), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv)) == false - - @test strictprecedes(Interval(bareinterval(1.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == false - - @test strictprecedes(Interval(bareinterval(-3.0,-0.1), IntervalArithmetic.trv), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)) == false - -end - -@testset "minimal_disjoint_test" begin - - @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) == true - - @test isdisjoint_interval(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) == true - - @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) == true - - @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) == true - - @test isdisjoint_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) == false - - @test isdisjoint_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) == false - - @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,7.0)) == false - - @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(-Inf,+Inf)) == false - - @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(1.0,7.0)) == false - - @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) == false - -end - -@testset "minimal_disjoint_dec_test" begin - - @test isdisjoint_interval(nai(), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == false - - @test isdisjoint_interval(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), nai()) == false - - @test isdisjoint_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), nai()) == false - - @test isdisjoint_interval(nai(), nai()) == false - - @test isdisjoint_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) == true - - @test isdisjoint_interval(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isdisjoint_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test isdisjoint_interval(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) == true - - @test isdisjoint_interval(Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.trv)) == false - - @test isdisjoint_interval(Interval(bareinterval(0.0,-0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0,0.0), IntervalArithmetic.trv)) == false - - @test isdisjoint_interval(Interval(bareinterval(3.0,4.0), IntervalArithmetic.def), Interval(bareinterval(1.0,7.0), IntervalArithmetic.def)) == false - - @test isdisjoint_interval(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - - @test isdisjoint_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(1.0,7.0), IntervalArithmetic.trv)) == false - - @test isdisjoint_interval(Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,+Inf), IntervalArithmetic.trv)) == false - -end diff --git a/test/test_ITF1788/libieeep1788_cancel.jl b/test/test_ITF1788/libieeep1788_cancel.jl deleted file mode 100644 index 04968e1ff..000000000 --- a/test/test_ITF1788/libieeep1788_cancel.jl +++ /dev/null @@ -1,499 +0,0 @@ -@testset "minimal_cancel_plus_test" begin - - @test isequal_interval(cancelplus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-Inf, -1.0), bareinterval(-5.0,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-1.0, Inf), bareinterval(-5.0,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-5.0,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-1.0,5.0), bareinterval(1.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-1.0,5.0), bareinterval(-Inf,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-5.0, -1.0), bareinterval(1.0,5.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-0.9)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-0.9)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0,10.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,10.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-5.1,-0.0), bareinterval(0.0,5.0)), bareinterval(-0x1.999999999998P-4,0.0)) - - @test isequal_interval(cancelplus(bareinterval(-5.1,-1.0), bareinterval(1.0,5.0)), bareinterval(-0x1.999999999998P-4,0.0)) - - @test isequal_interval(cancelplus(bareinterval(-5.0,-0.9), bareinterval(1.0,5.0)), bareinterval(0.0, 0x1.9999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(-5.1,-0.9), bareinterval(1.0,5.0)), bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(-5.0,-1.0), bareinterval(1.0,5.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelplus(bareinterval(-10.1, 5.0), bareinterval(-5.0,10.0)), bareinterval(-0x1.999999999998P-4,0.0)) - - @test isequal_interval(cancelplus(bareinterval(-10.0, 5.1), bareinterval(-5.0,10.0)), bareinterval(0.0,0x1.999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(-10.1, 5.1), bareinterval(-5.0,10.0)), bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelplus(bareinterval(0.9, 5.0), bareinterval(-5.0,-1.0)), bareinterval(-0x1.9999999999998P-4,0.0)) - - @test isequal_interval(cancelplus(bareinterval(1.0, 5.1), bareinterval(-5.0,-1.0)), bareinterval(0.0,0x1.999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(0.0, 5.1), bareinterval(-5.0,-0.0)), bareinterval(0.0,0x1.999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(0.9, 5.1), bareinterval(-5.0,-1.0)), bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4)) - - @test isequal_interval(cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelplus(bareinterval(0.0, 5.0), bareinterval(-5.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelplus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)), bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0)) - - @test isequal_interval(cancelplus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,0.01)), bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0)) - - @test isequal_interval(cancelplus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0.0,0x1P+971)) - - @test isequal_interval(cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)), bareinterval(-0x1P+971,0.0)) - - @test isequal_interval(cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53)), bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1)) - - @test isequal_interval(cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53)), entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_cancel_plus_dec_test" begin - - @test isequal_interval(cancelplus(Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-1.0, Inf), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.dac), Interval(bareinterval(-5.0,1.0), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-1.0, Inf), IntervalArithmetic.trv), Interval(bareinterval(-5.0,1.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-5.0,1.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-1.0, Inf), IntervalArithmetic.def), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0, Inf), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-Inf,1.0), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.dac), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.def), Interval(bareinterval(-Inf,1.0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.com), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf,1.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.com), Interval(bareinterval(1.0,5.1), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.dac), Interval(bareinterval(0.9,5.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.def), Interval(bareinterval(0.9,5.1), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.trv), Interval(bareinterval(-5.0,10.1), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.com), Interval(bareinterval(-5.1,10.0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.dac), Interval(bareinterval(-5.1,10.1), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.def), Interval(bareinterval(-5.0,-0.9), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.trv), Interval(bareinterval(-5.1,-1.0), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.dac), Interval(bareinterval(-5.1,-0.9), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, -1.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0,10.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-5.0,10.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.1,-0.0), IntervalArithmetic.com), Interval(bareinterval(0.0,5.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.1,-1.0), IntervalArithmetic.com), Interval(bareinterval(1.0,5.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.0,-0.9), IntervalArithmetic.com), Interval(bareinterval(1.0,5.0), IntervalArithmetic.def)), Interval(bareinterval(0.0, 0x1.9999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.1,-0.9), IntervalArithmetic.dac), Interval(bareinterval(1.0,5.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.dac), Interval(bareinterval(1.0,5.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.1, 5.0), IntervalArithmetic.dac), Interval(bareinterval(-5.0,10.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, 5.1), IntervalArithmetic.def), Interval(bareinterval(-5.0,10.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.1, 5.1), IntervalArithmetic.def), Interval(bareinterval(-5.0,10.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.def), Interval(bareinterval(-5.0,10.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(0.9, 5.0), IntervalArithmetic.trv), Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.9999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(1.0, 5.1), IntervalArithmetic.trv), Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(0.0, 5.1), IntervalArithmetic.trv), Interval(bareinterval(-5.0,-0.0), IntervalArithmetic.trv)), Interval(bareinterval(0.0,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(0.9, 5.1), IntervalArithmetic.com), Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.dac), Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(0.0, 5.0), IntervalArithmetic.def), Interval(bareinterval(-5.0,-0.0), IntervalArithmetic.trv)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), IntervalArithmetic.com), Interval(bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4), IntervalArithmetic.com)), Interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), IntervalArithmetic.dac), Interval(bareinterval(-0x1.999999999999AP-4,0.01), IntervalArithmetic.com)), Interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac), Interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1P+971), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), IntervalArithmetic.com)), Interval(bareinterval(-0x1P+971,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), IntervalArithmetic.dac), Interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), IntervalArithmetic.com)), Interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), IntervalArithmetic.trv)) - - @test isequal_interval(cancelplus(Interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), IntervalArithmetic.def), Interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_cancel_minus_test" begin - - @test isequal_interval(cancelminus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-Inf, -1.0), bareinterval(-1.0,5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-1.0, Inf), bareinterval(-1.0,5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0,5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-1.0,5.0), bareinterval(-1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.0,-0.9)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-0.9)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, -1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, 5.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, 5.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-5.1,-0.0), bareinterval(-5.0, 0.0)), bareinterval(-0x1.999999999998P-4,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-5.1,-1.0), bareinterval(-5.0, -1.0)), bareinterval(-0x1.999999999998P-4,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-5.0,-0.9), bareinterval(-5.0, -1.0)), bareinterval(0.0, 0x1.9999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(-5.1,-0.9), bareinterval(-5.0, -1.0)), bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(-5.0,-1.0), bareinterval(-5.0, -1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-10.1, 5.0), bareinterval(-10.0, 5.0)), bareinterval(-0x1.999999999998P-4,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-10.0, 5.1), bareinterval(-10.0, 5.0)), bareinterval(0.0,0x1.999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(-10.1, 5.1), bareinterval(-10.0, 5.0)), bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelminus(bareinterval(0.9, 5.0), bareinterval(1.0, 5.0)), bareinterval(-0x1.9999999999998P-4,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-0.0, 5.1), bareinterval(0.0, 5.0)), bareinterval(0.0,0x1.999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(1.0, 5.1), bareinterval(1.0, 5.0)), bareinterval(0.0,0x1.999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(0.9, 5.1), bareinterval(1.0, 5.0)), bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4)) - - @test isequal_interval(cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-5.0, 1.0), bareinterval(-1.0, 5.0)), bareinterval(-4.0,-4.0)) - - @test isequal_interval(cancelminus(bareinterval(-5.0, 0.0), bareinterval(-0.0, 5.0)), bareinterval(-5.0,-5.0)) - - @test isequal_interval(cancelminus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0)) - - @test isequal_interval(cancelminus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0.01,0x1.999999999999AP-4)), bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0)) - - @test isequal_interval(cancelminus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023)), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)), bareinterval(0.0,0x1P+971)) - - @test isequal_interval(cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-0x1P+971,0.0)) - - @test isequal_interval(cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)), bareinterval(0.0,0.0)) - - @test isequal_interval(cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)), bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022)) - - @test isequal_interval(cancelminus(bareinterval(0x1P-1022,0x1.0000000000002P-1022), bareinterval(0x1P-1022,0x1.0000000000001P-1022)), bareinterval(0.0,0x0.0000000000001P-1022)) - - @test isequal_interval(cancelminus(bareinterval(0x1P-1022,0x1.0000000000001P-1022), bareinterval(0x1P-1022,0x1.0000000000002P-1022)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0)), bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1)) - - @test isequal_interval(cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0)), entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_cancel_minus_dec_test" begin - - @test isequal_interval(cancelminus(Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-1.0, Inf), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.trv), Interval(bareinterval(-1.0,5.0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-1.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-1.0,5.0), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-1.0,5.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.def), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-1.0, Inf), IntervalArithmetic.trv), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-1.0, Inf), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.def), Interval(bareinterval(-1.0, Inf), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.com), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -1.0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-1.0, Inf), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.com), Interval(bareinterval(-5.1,-1.0), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.dac), Interval(bareinterval(-5.0,-0.9), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.def), Interval(bareinterval(-5.1,-0.9), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.trv), Interval(bareinterval(-10.1, 5.0), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.com), Interval(bareinterval(-10.0, 5.1), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.dac), Interval(bareinterval(-10.1, 5.1), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.def), Interval(bareinterval(0.9, 5.0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.trv), Interval(bareinterval(1.0, 5.1), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.com), Interval(bareinterval(0.9, 5.1), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, -1.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-10.0, -1.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0, 5.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.1,-0.0), IntervalArithmetic.com), Interval(bareinterval(-5.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.1,-1.0), IntervalArithmetic.dac), Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0,-0.9), IntervalArithmetic.def), Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0, 0x1.9999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.1,-0.9), IntervalArithmetic.trv), Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0,-1.0), IntervalArithmetic.com), Interval(bareinterval(-5.0, -1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.1, 5.0), IntervalArithmetic.dac), Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, 5.1), IntervalArithmetic.def), Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.1, 5.1), IntervalArithmetic.trv), Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.com), Interval(bareinterval(-10.0, 5.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0.9, 5.0), IntervalArithmetic.dac), Interval(bareinterval(1.0, 5.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.9999999999998P-4,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0.0, 5.1), IntervalArithmetic.def), Interval(bareinterval(0.0, 5.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(1.0, 5.1), IntervalArithmetic.trv), Interval(bareinterval(1.0, 5.0), IntervalArithmetic.trv)), Interval(bareinterval(0.0,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0.9, 5.1), IntervalArithmetic.com), Interval(bareinterval(1.0, 5.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(1.0, 5.0), IntervalArithmetic.dac), Interval(bareinterval(1.0, 5.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(-1.0, 5.0), IntervalArithmetic.def)), Interval(bareinterval(-4.0,-4.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-5.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 5.0), IntervalArithmetic.trv)), Interval(bareinterval(-5.0,-5.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), IntervalArithmetic.com), Interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), IntervalArithmetic.com)), Interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), IntervalArithmetic.def), Interval(bareinterval(-0.01,0x1.999999999999AP-4), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1P+971), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-0x1P+971,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.com), Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.com), Interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), IntervalArithmetic.dac)), Interval(bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), IntervalArithmetic.dac), Interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x0.0000000000001P-1022), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), IntervalArithmetic.def), Interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), IntervalArithmetic.com), Interval(bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), IntervalArithmetic.trv)) - - @test isequal_interval(cancelminus(Interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), IntervalArithmetic.def), Interval(bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end diff --git a/test/test_ITF1788/libieeep1788_class.jl b/test/test_ITF1788/libieeep1788_class.jl deleted file mode 100755 index 04a8821c0..000000000 --- a/test/test_ITF1788/libieeep1788_class.jl +++ /dev/null @@ -1,451 +0,0 @@ -@testset "minimal_nums_to_interval_test" begin - - @test isequal_interval(bareinterval(-1.0,1.0), bareinterval(-1.0,1.0)) - - @test isequal_interval(bareinterval(-Inf,1.0), bareinterval(-Inf,1.0)) - - @test isequal_interval(bareinterval(-1.0,Inf), bareinterval(-1.0,Inf)) - - @test isequal_interval(bareinterval(-Inf,Inf), bareinterval(-Inf,Inf)) - - @test isequal_interval(bareinterval(NaN,NaN), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(bareinterval(1.0,-1.0), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(bareinterval(-Inf,-Inf), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(bareinterval(Inf,Inf), emptyinterval(BareInterval{Float64})) - -end - -@testset "minimal_nums_to_decorated_interval_test" begin - - @test isequal_interval(interval(-1.0,1.0), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.com)) - - @test isequal_interval(interval(-Inf,1.0), Interval(bareinterval(-Inf,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(interval(-1.0,Inf), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(interval(-Inf,Inf), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isnai(interval(NaN,NaN)) - - @test isnai(interval(1.0,-1.0)) - - @test isnai(interval(-Inf,-Inf)) - - @test isnai(interval(Inf,Inf)) - -end - -@testset "minimal_text_to_interval_test" begin - - @test isequal_interval(parse(BareInterval{Float64}, "[ Empty ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ Empty ]_trv"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ ]_trv"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[,]"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[,]_trv"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ entire ]"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ ENTIRE ]_dac"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ ENTIRE ]"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -inf , INF ]"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -inf, INF ]_def"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[-1.0,1.0]"), bareinterval(-1.0,1.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -1.0 , 1.0 ]"), bareinterval(-1.0,1.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -1.0 , 1.0]"), bareinterval(-1.0,1.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[-1,]"), bareinterval(-1.0,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[-1.0, +inf]"), bareinterval(-1.0,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[-1.0, +infinity]"), bareinterval(-1.0,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[-Inf, 1.000 ]"), bareinterval(-Inf,1.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[-Infinity, 1.000 ]"), bareinterval(-Inf,1.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[1.0E+400 ]"), bareinterval(0x1.fffffffffffffp+1023,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -4/2, 10/5 ]"), bareinterval(-2.0,2.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -1/10, 1/10 ]"), bareinterval(-0.1,0.1)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.0?"), bareinterval(-0.05,0.05)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.0?u"), bareinterval(0.0,0.05)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.0?d"), bareinterval(-0.05,0.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.5?"), bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.5?u"), bareinterval(2.5,0x1.4666666666667p+1)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.5?d"), bareinterval(0x1.3999999999999p+1,2.5)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.000?5"), bareinterval(-0.005,0.005)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.000?5u"), bareinterval(0.0,0.005)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.000?5d"), bareinterval(-0.005,0.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.500?5"), bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.500?5u"), bareinterval(2.5,0x1.40a3d70a3d70bp+1)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.500?5d"), bareinterval(0x1.3f5c28f5c28f5p+1,2.5)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.0??"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.0??u"), bareinterval(0.0,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "0.0??d"), bareinterval(-Inf,0.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.5??"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.5??u"), bareinterval(2.5,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.5??d"), bareinterval(-Inf,2.5)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.500?5e+27"), bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.500?5ue4"), bareinterval(0x1.86ap+14,0x1.8768p+14)) - - @test isequal_interval(parse(BareInterval{Float64}, "2.500?5de-5"), bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16)) - - @test isequal_interval(parse(BareInterval{Float64}, "10?3"), bareinterval(7.0,13.0)) - - @test isequal_interval(parse(BareInterval{Float64}, "10?3e380"), bareinterval(0x1.fffffffffffffp+1023,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "1.0000000000000001?1"), bareinterval(1.0,0x1.0000000000001p+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), bareinterval(-Inf,Inf)) - - @test isequal_interval(parse(BareInterval{Float64}, "[ Nai ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ Nai ]_ill"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ Nai ]_trv"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ Empty ]_ill"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ ]_com"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[,]_com"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ Entire ]_com"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -inf , INF ]_com"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -1.0 , 1.0]_ill"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -1.0 , 1.0]_fooo"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ -1.0 , 1.0]_da"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[-1.0,]_com"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[-Inf, 1.000 ]_ill"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[-I nf, 1.000 ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[-Inf, 1.0 00 ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[-Inf ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[Inf , INF]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[ foo ]"), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(parse(BareInterval{Float64}, "[1.0000000000000002,1.0000000000000001]"), bareinterval(1.0,0x1.0000000000001p+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]"), bareinterval(1.0,0x1.0000000000001p+0)) - - @test isequal_interval(parse(BareInterval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]"), bareinterval(1.0,0x1.0000000000001p+0)) - -end - -@testset "minimal_text_to_decorated_interval_test" begin - - @test isequal_interval(parse(Interval{Float64}, "[ Empty ]"), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[ Empty ]_trv"), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[ ]"), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[ ]_trv"), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[,]"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[,]_trv"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[ entire ]"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[ ENTIRE ]_dac"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[ -inf , INF ]"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[ -inf, INF ]_def"), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)) - - @test isequal_interval(parse(Interval{Float64}, "[-1.0,1.0]"), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[ -1.0 , 1.0 ]_com"), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[ -1.0 , 1.0]_trv"), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[-1,]"), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[-1.0, +inf]_def"), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(parse(Interval{Float64}, "[-1.0, +infinity]_def"), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(parse(Interval{Float64}, "[-Inf, 1.000 ]"), Interval(bareinterval(-Inf,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[-Infinity, 1.000 ]_trv"), Interval(bareinterval(-Inf,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "[1.0E+400 ]_com"), Interval(bareinterval(0x1.fffffffffffffp+1023,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "[ -4/2, 10/5 ]_com"), Interval(bareinterval(-2.0,2.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[ -1/10, 1/10 ]_com"), Interval(bareinterval(-0.1,0.1), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "0.0?"), Interval(bareinterval(-0.05,0.05), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "0.0?u_trv"), Interval(bareinterval(0.0,0.05), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "0.0?d_dac"), Interval(bareinterval(-0.05,0.0), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "2.5?"), Interval(bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "2.5?u"), Interval(bareinterval(2.5,0x1.4666666666667p+1), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "2.5?d_trv"), Interval(bareinterval(0x1.3999999999999p+1,2.5), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "0.000?5"), Interval(bareinterval(-0.005,0.005), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "0.000?5u_def"), Interval(bareinterval(0.0,0.005), IntervalArithmetic.def)) - - @test isequal_interval(parse(Interval{Float64}, "0.000?5d"), Interval(bareinterval(-0.005,0.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "2.500?5"), Interval(bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "2.500?5u"), Interval(bareinterval(2.5,0x1.40a3d70a3d70bp+1), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "2.500?5d"), Interval(bareinterval(0x1.3f5c28f5c28f5p+1,2.5), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "0.0??_dac"), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "0.0??u_trv"), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(parse(Interval{Float64}, "0.0??d"), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "2.5??"), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "2.5??u_def"), Interval(bareinterval(2.5,Inf), IntervalArithmetic.def)) - - @test isequal_interval(parse(Interval{Float64}, "2.5??d_dac"), Interval(bareinterval(-Inf,2.5), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "2.500?5e+27"), Interval(bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "2.500?5ue4_def"), Interval(bareinterval(0x1.86ap+14,0x1.8768p+14), IntervalArithmetic.def)) - - @test isequal_interval(parse(Interval{Float64}, "2.500?5de-5"), Interval(bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16), IntervalArithmetic.com)) - - @test isnai(parse(Interval{Float64}, "[ Nai ]")) - - @test isequal_interval(parse(Interval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_com"), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(parse(Interval{Float64}, "10?3_com"), Interval(bareinterval(7.0,13.0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "10?3e380_com"), Interval(bareinterval(0x1.fffffffffffffp+1023,Inf), IntervalArithmetic.dac)) - - @test isnai(parse(Interval{Float64}, "[ Nai ]_ill")) - - @test isnai(parse(Interval{Float64}, "[ Nai ]_trv")) - - @test isnai(parse(Interval{Float64}, "[ Empty ]_ill")) - - @test isnai(parse(Interval{Float64}, "[ ]_com")) - - @test isnai(parse(Interval{Float64}, "[,]_com")) - - @test isnai(parse(Interval{Float64}, "[ Entire ]_com")) - - @test isnai(parse(Interval{Float64}, "[ -inf , INF ]_com")) - - @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_ill")) - - @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_fooo")) - - @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_da")) - - @test isnai(parse(Interval{Float64}, "[-1.0,]_com")) - - @test isnai(parse(Interval{Float64}, "[-Inf, 1.000 ]_ill")) - - @test isnai(parse(Interval{Float64}, "[-I nf, 1.000 ]")) - - @test isnai(parse(Interval{Float64}, "[-Inf, 1.0 00 ]")) - - @test isnai(parse(Interval{Float64}, "[-Inf ]")) - - @test isnai(parse(Interval{Float64}, "[Inf , INF]")) - - @test isnai(parse(Interval{Float64}, "[ foo ]")) - - @test isnai(parse(Interval{Float64}, "0.0??_com")) - - @test isnai(parse(Interval{Float64}, "0.0??u_ill")) - - @test isnai(parse(Interval{Float64}, "0.0??d_com")) - - @test isnai(parse(Interval{Float64}, "0.0??_com")) - - @test isnai(parse(Interval{Float64}, "[1.0,2.0")) - - @test isequal_interval(parse(Interval{Float64}, "[1.0000000000000002,1.0000000000000001]"), Interval(bareinterval(1.0,0x1.0000000000001p+0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]"), Interval(bareinterval(1.0,0x1.0000000000001p+0), IntervalArithmetic.com)) - - @test isequal_interval(parse(Interval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]"), Interval(bareinterval(1.0,0x1.0000000000001p+0), IntervalArithmetic.com)) - -end - -@testset "minimal_interval_part_test" begin - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), IntervalArithmetic.trv)), bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com)), bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), IntervalArithmetic.dac)), bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), IntervalArithmetic.def)), bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), IntervalArithmetic.trv)), bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.trv)), bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022)) - - @test isequal_interval(bareinterval(Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.trv)), bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), IntervalArithmetic.trv)), bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.trv)), bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) - - @test isequal_interval(bareinterval(Interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.trv)), bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) - - @test isequal_interval(bareinterval(Interval(bareinterval(-Inf,Inf), IntervalArithmetic.trv)), bareinterval(-Inf,Inf)) - - @test isequal_interval(bareinterval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(bareinterval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com)), bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) - - @test isequal_interval(bareinterval(nai()), emptyinterval(BareInterval{Float64})) - -end - -@testset "minimal_new_dec_test" begin - - @test isequal_interval(Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4)), Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)), Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4)), Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4)), Interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)), Interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022)), Interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)), Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023)), Interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)), Interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)), Interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-Inf,Inf)), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64})), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)), Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com)) - -end - -@testset "minimal_set_dec_test" begin - - @test isequal_interval(Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), IntervalArithmetic.trv), Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com), Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), IntervalArithmetic.dac), Interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), IntervalArithmetic.dac)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), IntervalArithmetic.def), Interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), IntervalArithmetic.def)) - - @test isequal_interval(Interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), IntervalArithmetic.trv), Interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.def), Interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.def)) - - @test isequal_interval(Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.dac), Interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), IntervalArithmetic.dac)) - - @test isequal_interval(Interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), IntervalArithmetic.com), Interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), IntervalArithmetic.com)) - - @test isequal_interval(Interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.def), Interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.def)) - - @test isequal_interval(Interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.trv), Interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com), Interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), IntervalArithmetic.com)) - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(Interval(bareinterval(1.0,Inf), IntervalArithmetic.com), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(Interval(bareinterval(-Inf,3.0), IntervalArithmetic.com), Interval(bareinterval(-Inf,3.0), IntervalArithmetic.dac)) - - @test isequal_interval(Interval(bareinterval(-Inf,Inf), IntervalArithmetic.com), Interval(bareinterval(-Inf,Inf), IntervalArithmetic.dac)) - - @test isnai(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.ill)) - - @test isnai(Interval(bareinterval(-Inf,3.0), IntervalArithmetic.ill)) - - @test isnai(Interval(bareinterval(-1.0,3.0), IntervalArithmetic.ill)) - -end - -@testset "minimal_decoration_part_test" begin - - @test decoration(nai()) == IntervalArithmetic.ill - - @test decoration(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == IntervalArithmetic.trv - - @test decoration(Interval(bareinterval(-1.0,3.0), IntervalArithmetic.trv)) == IntervalArithmetic.trv - - @test decoration(Interval(bareinterval(-1.0,3.0), IntervalArithmetic.def)) == IntervalArithmetic.def - - @test decoration(Interval(bareinterval(-1.0,3.0), IntervalArithmetic.dac)) == IntervalArithmetic.dac - - @test decoration(Interval(bareinterval(-1.0,3.0), IntervalArithmetic.com)) == IntervalArithmetic.com - -end diff --git a/test/test_ITF1788/libieeep1788_elem.jl b/test/test_ITF1788/libieeep1788_elem.jl deleted file mode 100644 index df1914b1f..000000000 --- a/test/test_ITF1788/libieeep1788_elem.jl +++ /dev/null @@ -1,7955 +0,0 @@ -@testset "minimal_pos_test" begin - - @test isequal_interval(+(bareinterval(1.0,2.0)), bareinterval(1.0,2.0)) - - @test isequal_interval(+(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(1.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(+(bareinterval(-Inf,-1.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(+(bareinterval(0.0,2.0)), bareinterval(0.0,2.0)) - - @test isequal_interval(+(bareinterval(-0.0,2.0)), bareinterval(0.0,2.0)) - - @test isequal_interval(+(bareinterval(-2.5,-0.0)), bareinterval(-2.5,0.0)) - - @test isequal_interval(+(bareinterval(-2.5,0.0)), bareinterval(-2.5,0.0)) - - @test isequal_interval(+(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(+(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - -end - -@testset "minimal_pos_dec_test" begin - - @test isnai(+(nai())) - - @test isequal_interval(+(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(+(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(+(Interval(bareinterval(1.0, 2.0), IntervalArithmetic.com)), Interval(bareinterval(1.0, 2.0), IntervalArithmetic.com)) - -end - -@testset "minimal_neg_test" begin - - @test isequal_interval(-(bareinterval(1.0,2.0)), bareinterval(-2.0,-1.0)) - - @test isequal_interval(-(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(1.0,Inf)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(-(bareinterval(-Inf,1.0)), bareinterval(-1.0,Inf)) - - @test isequal_interval(-(bareinterval(0.0,2.0)), bareinterval(-2.0,0.0)) - - @test isequal_interval(-(bareinterval(-0.0,2.0)), bareinterval(-2.0,0.0)) - - @test isequal_interval(-(bareinterval(-2.0,0.0)), bareinterval(0.0,2.0)) - - @test isequal_interval(-(bareinterval(-2.0,-0.0)), bareinterval(0.0,2.0)) - - @test isequal_interval(-(bareinterval(0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(-(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - -end - -@testset "minimal_neg_dec_test" begin - - @test isnai(-(nai())) - - @test isequal_interval(-(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(-(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(-(Interval(bareinterval(1.0, 2.0), IntervalArithmetic.com)), Interval(bareinterval(-2.0, -1.0), IntervalArithmetic.com)) - -end - -@testset "minimal_add_test" begin - - @test isequal_interval(+(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(+(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(+(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)), bareinterval(-Inf,6.0)) - - @test isequal_interval(+(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)), bareinterval(-Inf,6.0)) - - @test isequal_interval(+(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)), bareinterval(-Inf,6.0)) - - @test isequal_interval(+(bareinterval(1.0,2.0), bareinterval(3.0,4.0)), bareinterval(4.0,6.0)) - - @test isequal_interval(+(bareinterval(1.0,2.0), bareinterval(3.0,Inf)), bareinterval(4.0,Inf)) - - @test isequal_interval(+(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(1.0,Inf), bareinterval(3.0,4.0)), bareinterval(4.0,Inf)) - - @test isequal_interval(+(bareinterval(1.0,Inf), bareinterval(3.0,Inf)), bareinterval(4.0,Inf)) - - @test isequal_interval(+(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(3.0,4.0)), bareinterval(4.0,Inf)) - - @test isequal_interval(+(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,4.0)), bareinterval(-Inf,6.0)) - - @test isequal_interval(+(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)), bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(+(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)), bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(+(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)), bareinterval(-3.0,4.0)) - - @test isequal_interval(+(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(+(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1)) - - @test isequal_interval(+(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)), bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0)) - - @test isequal_interval(+(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(-0x1.E666666666657P+0,0x1.0CCCCCCCCCCC5P+1)) - -end - -@testset "minimal_add_dec_test" begin - - @test isequal_interval(+(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,7.0), IntervalArithmetic.com)), Interval(bareinterval(6.0,9.0), IntervalArithmetic.com)) - - @test isequal_interval(+(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,7.0), IntervalArithmetic.def)), Interval(bareinterval(6.0,9.0), IntervalArithmetic.def)) - - @test isequal_interval(+(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(6.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(+(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), IntervalArithmetic.com), Interval(bareinterval(-0.1, 5.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,7.0), IntervalArithmetic.dac)) - - @test isequal_interval(+(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isnai(+(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv))) - -end - -@testset "minimal_sub_test" begin - - @test isequal_interval(-(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(-(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(-(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(-(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(-(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)), bareinterval(-3.0,Inf)) - - @test isequal_interval(-(bareinterval(1.0,2.0), bareinterval(3.0,4.0)), bareinterval(-3.0,-1.0)) - - @test isequal_interval(-(bareinterval(1.0,2.0), bareinterval(3.0,Inf)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(-(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)), bareinterval(-3.0,Inf)) - - @test isequal_interval(-(bareinterval(1.0,Inf), bareinterval(3.0,4.0)), bareinterval(-3.0,Inf)) - - @test isequal_interval(-(bareinterval(1.0,Inf), bareinterval(3.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-3.0,4.0)), bareinterval(-3.0,Inf)) - - @test isequal_interval(-(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(3.0,4.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(-(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-0x1.FFFFFFFFFFFFFp1023,4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)), bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(-(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)), bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(-(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)), bareinterval(-4.0,3.0)) - - @test isequal_interval(-(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-0x1.FFFFFFFFFFFFFp1023,3.0)) - - @test isequal_interval(-(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0)) - - @test isequal_interval(-(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)), bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1)) - - @test isequal_interval(-(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(-0x1.0CCCCCCCCCCC5P+1,0x1.E666666666657P+0)) - -end - -@testset "minimal_sub_dec_test" begin - - @test isequal_interval(-(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,7.0), IntervalArithmetic.com)), Interval(bareinterval(-6.0,-3.0), IntervalArithmetic.com)) - - @test isequal_interval(-(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,7.0), IntervalArithmetic.def)), Interval(bareinterval(-6.0,-3.0), IntervalArithmetic.def)) - - @test isequal_interval(-(Interval(bareinterval(-1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-Inf,-3.0), IntervalArithmetic.dac)) - - @test isequal_interval(-(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), IntervalArithmetic.com), Interval(bareinterval(-1.0, 5.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,3.0), IntervalArithmetic.dac)) - - @test isequal_interval(-(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isnai(-(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv))) - -end - -@testset "minimal_mul_test" begin - - @test isequal_interval(*(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(1.0, 3.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(-5.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(1.0,Inf), bareinterval(1.0, Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(*(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0)), bareinterval(-Inf,5.0)) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0)), bareinterval(-3.0,Inf)) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,Inf), bareinterval(1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0)), bareinterval(-15.0,Inf)) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0)), bareinterval(-Inf,9.0)) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,3.0), bareinterval(1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0)), bareinterval(3.0,Inf)) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0)), bareinterval(3.0,Inf)) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(*(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(1.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(-5.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), bareinterval(1.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0)), bareinterval(-25.0,-1.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0)), bareinterval(-25.0,15.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(1.0, 3.0)), bareinterval(1.0,15.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0)), bareinterval(-Inf,15.0)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(-5.0, Inf)), bareinterval(-25.0,Inf)) - - @test isequal_interval(*(bareinterval(1.0,5.0), bareinterval(1.0, Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(*(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0)), bareinterval(-25.0,5.0)) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0)), bareinterval(-25.0,15.0)) - - @test isequal_interval(*(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0)), bareinterval(-30.0,50.0)) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0)), bareinterval(-10.0,50.0)) - - @test isequal_interval(*(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0)), bareinterval(-10.0,10.0)) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0)), bareinterval(-3.0,15.0)) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,5.0), bareinterval(1.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0)), bareinterval(5.0,50.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0)), bareinterval(-30.0,50.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0)), bareinterval(-30.0,-5.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0)), bareinterval(-30.0,Inf)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf)), bareinterval(-Inf,50.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(*(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0, Inf)), bareinterval(-0x1.FFFFFFFFFFFE1P+1,Inf)) - - @test isequal_interval(*(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4)), bareinterval(-0x1.FFFFFFFFFFFE1P+1,0x1.999999999998EP-3)) - - @test isequal_interval(*(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4), bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)), bareinterval(-0x1.999999999998EP-3,0x1.999999999998EP-3)) - - @test isequal_interval(*(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4), bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)), bareinterval(-0x1.FFFFFFFFFFFE1P+1,-0x1.47AE147AE147BP-7)) - -end - -@testset "minimal_mul_dec_test" begin - - @test isequal_interval(*(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,7.0), IntervalArithmetic.com)), Interval(bareinterval(5.0,14.0), IntervalArithmetic.com)) - - @test isequal_interval(*(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,7.0), IntervalArithmetic.def)), Interval(bareinterval(5.0,14.0), IntervalArithmetic.def)) - - @test isequal_interval(*(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(5.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(*(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), IntervalArithmetic.com), Interval(bareinterval(-1.0, 5.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)) - - @test isequal_interval(*(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isnai(*(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv))) - -end - -@testset "minimal_div_test" begin - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), bareinterval(0.1,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(3.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-3.0, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-5.0, -3.0)), bareinterval(3.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(3.0, 5.0)), bareinterval(-10.0,-3.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(3.0,Inf)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-3.0, 0.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-3.0, -0.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(0.0, 3.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-0.0, 3.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), bareinterval(-0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-15.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-5.0, -3.0)), bareinterval(-5.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(3.0, 5.0)), bareinterval(-10.0,5.0)) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-Inf, -3.0)), bareinterval(-5.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(3.0,Inf)), bareinterval(-10.0,5.0)) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-3.0, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-Inf, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), bareinterval(-0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,15.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-5.0, -3.0)), bareinterval(-10.0,-3.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(3.0, 5.0)), bareinterval(3.0,10.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-Inf, -3.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(3.0,Inf)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-3.0, 0.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-3.0, -0.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(0.0, 3.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-0.0, 3.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,30.0), bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,30.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-5.0, -3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(3.0, 5.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(3.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-3.0, 0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-3.0, -0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-3.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(0.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-0.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-3.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(0.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), bareinterval(-0.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-5.0, -3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(3.0, 5.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(3.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-3.0, 0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-3.0, -0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-3.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(0.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-0.0, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-3.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(0.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), bareinterval(-0.0, Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-5.0, -3.0)), bareinterval(3.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(3.0, 5.0)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(3.0,Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-3.0, 0.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-3.0, -0.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(0.0, 3.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-0.0, 3.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), bareinterval(-0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-15.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-5.0, -3.0)), bareinterval(-5.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(3.0, 5.0)), bareinterval(-Inf,5.0)) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-Inf, -3.0)), bareinterval(-5.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(3.0,Inf)), bareinterval(-Inf,5.0)) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-3.0, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-Inf, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), bareinterval(-0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,15.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-5.0, -3.0)), bareinterval(-Inf,5.0)) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(3.0, 5.0)), bareinterval(-5.0,Inf)) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-Inf, -3.0)), bareinterval(-Inf,5.0)) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(3.0,Inf)), bareinterval(-5.0,Inf)) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-3.0, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-Inf, -0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), bareinterval(-0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-15.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-5.0, -3.0)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(3.0, 5.0)), bareinterval(3.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-Inf, -3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(3.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-3.0, 0.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-3.0, -0.0)), bareinterval(-Inf,-5.0)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(0.0, 3.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-0.0, 3.0)), bareinterval(5.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,Inf), bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(15.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-5.0, -3.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(3.0, 5.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(3.0,Inf)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-3.0, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-3.0, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), bareinterval(-0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-5.0, -3.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(3.0, 5.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(3.0,Inf)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-3.0, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-3.0, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), bareinterval(-0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-30.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-5.0, -3.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(3.0, 5.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-Inf, -3.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(3.0,Inf)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-3.0, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-3.0, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,30.0), bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,30.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-5.0, -3.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(3.0, 5.0)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-Inf, -3.0)), bareinterval(-10.0,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(3.0,Inf)), bareinterval(0.0,10.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-3.0, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-3.0, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,30.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-5.0, -3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(3.0, 5.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(3.0,Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-3.0, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-3.0, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), bareinterval(-0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-5.0, -3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(3.0, 5.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-Inf, -3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(3.0,Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-3.0, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-3.0, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-0.0, 3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-Inf, -0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), bareinterval(-0.0, Inf)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-5.0, -3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(3.0, 5.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-Inf, -3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(3.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-3.0, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-3.0, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,Inf), bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-5.0, -3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(3.0, 5.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-Inf, -3.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(3.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-3.0, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-3.0, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-0.0, 3.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-Inf, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-3.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(/(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-2.0,-1.0), bareinterval(-10.0, -3.0)), bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1)) - - @test isequal_interval(/(bareinterval(-2.0,-1.0), bareinterval(0.0, 10.0)), bareinterval(-Inf,-0x1.9999999999999P-4)) - - @test isequal_interval(/(bareinterval(-2.0,-1.0), bareinterval(-0.0, 10.0)), bareinterval(-Inf,-0x1.9999999999999P-4)) - - @test isequal_interval(/(bareinterval(-1.0,2.0), bareinterval(10.0,Inf)), bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-3)) - - @test isequal_interval(/(bareinterval(1.0,3.0), bareinterval(-Inf, -10.0)), bareinterval(-0x1.3333333333334P-2,0.0)) - - @test isequal_interval(/(bareinterval(-Inf,-1.0), bareinterval(1.0, 3.0)), bareinterval(-Inf,-0x1.5555555555555P-2)) - -end - -@testset "minimal_div_dec_test" begin - - @test isequal_interval(/(Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.com), Interval(bareinterval(-10.0, -3.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1), IntervalArithmetic.com)) - - @test isequal_interval(/(Interval(bareinterval(-200.0,-1.0), IntervalArithmetic.com), Interval(bareinterval(0x0.0000000000001p-1022, 10.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,-0x1.9999999999999P-4), IntervalArithmetic.dac)) - - @test isequal_interval(/(Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 10.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,-0x1.9999999999999P-4), IntervalArithmetic.trv)) - - @test isequal_interval(/(Interval(bareinterval(1.0,3.0), IntervalArithmetic.def), Interval(bareinterval(-Inf, -10.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.3333333333334P-2,0.0), IntervalArithmetic.def)) - - @test isequal_interval(/(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isnai(/(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv))) - -end - -@testset "minimal_recip_test" begin - - @test isequal_interval(inv(bareinterval(-50.0, -10.0)), bareinterval(-0x1.999999999999AP-4,-0x1.47AE147AE147AP-6)) - - @test isequal_interval(inv(bareinterval(10.0, 50.0)), bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4)) - - @test isequal_interval(inv(bareinterval(-Inf, -10.0)), bareinterval(-0x1.999999999999AP-4,0.0)) - - @test isequal_interval(inv(bareinterval(10.0,Inf)), bareinterval(0.0,0x1.999999999999AP-4)) - - @test isequal_interval(inv(bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(-10.0, 0.0)), bareinterval(-Inf,-0x1.9999999999999P-4)) - - @test isequal_interval(inv(bareinterval(-10.0, -0.0)), bareinterval(-Inf,-0x1.9999999999999P-4)) - - @test isequal_interval(inv(bareinterval(-10.0, 10.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(0.0, 10.0)), bareinterval(0x1.9999999999999P-4,Inf)) - - @test isequal_interval(inv(bareinterval(-0.0, 10.0)), bareinterval(0x1.9999999999999P-4,Inf)) - - @test isequal_interval(inv(bareinterval(-Inf, 0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(inv(bareinterval(-Inf, -0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(inv(bareinterval(-Inf, 10.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(-10.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(inv(bareinterval(-0.0, Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(inv(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_recip_dec_test" begin - - @test isequal_interval(inv(Interval(bareinterval(10.0, 50.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4), IntervalArithmetic.com)) - - @test isequal_interval(inv(Interval(bareinterval(-Inf, -10.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.999999999999AP-4,0.0), IntervalArithmetic.dac)) - - @test isequal_interval(inv(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, -0x0.0000000000001p-1022), IntervalArithmetic.def)), Interval(bareinterval(-Inf,-0x0.4P-1022), IntervalArithmetic.def)) - - @test isequal_interval(inv(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(inv(Interval(bareinterval(-10.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,-0x1.9999999999999P-4), IntervalArithmetic.trv)) - - @test isequal_interval(inv(Interval(bareinterval(-10.0, Inf), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(inv(Interval(bareinterval(-0.0, Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(inv(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_sqr_test" begin - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 2), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0x0.0000000000001p-1022), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-1.0,1.0), 2), bareinterval(0.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(0.0,1.0), 2), bareinterval(0.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,1.0), 2), bareinterval(0.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-5.0,3.0), 2), bareinterval(0.0,25.0)) - - @test isequal_interval(nthpow(bareinterval(-5.0,0.0), 2), bareinterval(0.0,25.0)) - - @test isequal_interval(nthpow(bareinterval(-5.0,-0.0), 2), bareinterval(0.0,25.0)) - - @test isequal_interval(nthpow(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), 2), bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4), 2), bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.FFFFFFFFFFFFP+0), 2), bareinterval(0x1.FFFFFFFFFFFEP+1,0x1.FFFFFFFFFFFE1P+1)) - -end - -@testset "minimal_sqr_dec_test" begin - - @test isequal_interval(nthpow(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x0.0000000000001p-1022), IntervalArithmetic.com), 2), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(nthpow(Interval(bareinterval(-1.0,1.0), IntervalArithmetic.def), 2), Interval(bareinterval(0.0,1.0), IntervalArithmetic.def)) - - @test isequal_interval(nthpow(Interval(bareinterval(-5.0,3.0), IntervalArithmetic.com), 2), Interval(bareinterval(0.0,25.0), IntervalArithmetic.com)) - - @test isequal_interval(nthpow(Interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), IntervalArithmetic.com), 2), Interval(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), IntervalArithmetic.com)) - -end - -@testset "minimal_sqrt_test" begin - - @test isequal_interval(sqrt(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sqrt(entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(sqrt(bareinterval(-Inf,-0x0.0000000000001p-1022)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sqrt(bareinterval(-1.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(sqrt(bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(sqrt(bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(sqrt(bareinterval(-5.0,25.0)), bareinterval(0.0,5.0)) - - @test isequal_interval(sqrt(bareinterval(0.0,25.0)), bareinterval(0.0,5.0)) - - @test isequal_interval(sqrt(bareinterval(-0.0,25.0)), bareinterval(0.0,5.0)) - - @test isequal_interval(sqrt(bareinterval(-5.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(sqrt(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(0x1.43D136248490FP-2,0x1.43D136248491P-2)) - - @test isequal_interval(sqrt(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)), bareinterval(0.0,0x1.43D136248491P-2)) - - @test isequal_interval(sqrt(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)), bareinterval(0x1.43D136248490FP-2,0x1.6A09E667F3BC7P+0)) - -end - -@testset "minimal_sqrt_dec_test" begin - - @test isequal_interval(sqrt(Interval(bareinterval(1.0,4.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)) - - @test isequal_interval(sqrt(Interval(bareinterval(-5.0,25.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqrt(Interval(bareinterval(0.0,25.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,5.0), IntervalArithmetic.def)) - - @test isequal_interval(sqrt(Interval(bareinterval(-5.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - -end - -@testset "minimal_fma_test" begin - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,7.0)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,11.0)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,17.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,17.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,17.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,7.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,17.0)) - - @test isequal_interval(fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,52.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,52.0)) - - @test isequal_interval(fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,12.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,17.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,52.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,52.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,52.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,7.0)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-5.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-17.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,11.0)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-Inf,-1.0)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-27.0,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-27.0,17.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-1.0,17.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,1.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), bareinterval(-Inf,17.0)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-27.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(-27.0,7.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-27.0,17.0)) - - @test isequal_interval(fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-32.0,52.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,2.0)), bareinterval(-12.0,52.0)) - - @test isequal_interval(fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-12.0,12.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-5.0,17.0)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)), bareinterval(3.0,52.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-32.0,52.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)), bareinterval(-32.0,-3.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)), bareinterval(3.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)), bareinterval(-32.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-Inf,52.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)), bareinterval(-Inf,-3.0)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-5.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(-17.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(-27.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-27.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-27.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), bareinterval(-1.0,Inf)) - - @test isequal_interval(fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(-27.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-27.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-32.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,Inf)), bareinterval(-12.0,Inf)) - - @test isequal_interval(fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-12.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-5.0,Inf)) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)), bareinterval(3.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-32.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)), bareinterval(-32.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)), bareinterval(3.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)), bareinterval(-32.0,Inf)) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(fma(bareinterval(0.1,0.5), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)), bareinterval(-0x1.4CCCCCCCCCCCDP+1,0x1.999999999999AP+0)) - - @test isequal_interval(fma(bareinterval(-0.5,0.2), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)), bareinterval(-0x1.999999999999AP+0,0x1.4CCCCCCCCCCCDP+1)) - - @test isequal_interval(fma(bareinterval(-0.5,-0.1), bareinterval(2.0, 3.0), bareinterval(-0.1,0.1)), bareinterval(-0x1.999999999999AP+0,-0x1.999999999999AP-4)) - - @test isequal_interval(fma(bareinterval(-0.5,-0.1), bareinterval(-Inf, 3.0), bareinterval(-0.1,0.1)), bareinterval(-0x1.999999999999AP+0,Inf)) - -end - -@testset "minimal_fma_dec_test" begin - - @test isequal_interval(fma(Interval(bareinterval(-0.5,-0.1), IntervalArithmetic.com), Interval(bareinterval(-Inf, 3.0), IntervalArithmetic.dac), Interval(bareinterval(-0.1,0.1), IntervalArithmetic.com)), Interval(bareinterval(-0x1.999999999999AP+0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(fma(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(1.0, 0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), Interval(bareinterval(0.0,1.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(fma(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(1.0, 2.0), IntervalArithmetic.com), Interval(bareinterval(2.0,5.0), IntervalArithmetic.com)), Interval(bareinterval(3.0,9.0), IntervalArithmetic.com)) - -end - -@testset "minimal_pown_test" begin - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 0), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), 0), bareinterval(1.0,1.0)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 2), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), 2), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), 2), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), 2), bareinterval(0x1.573851EB851EBP+7,0x1.573851EB851ECP+7)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), 2), bareinterval(0x1.A794A4E7CFAADP+25,0x1.A794A4E7CFAAEP+25)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 2), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 2), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), 2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), 2), bareinterval(0.0,0x1.9AD27D70A3D72P+16)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), 2), bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), 2), bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 8), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), 8), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), 8), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), 8), bareinterval(0x1.9D8FD495853F5P+29,0x1.9D8FD495853F6P+29)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), 8), bareinterval(0x1.DFB1BB622E70DP+102,0x1.DFB1BB622E70EP+102)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 8), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 8), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), 8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), 8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), 8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), 8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), 8), bareinterval(0.0,0x1.A87587109655P+66)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), 8), bareinterval(0x1.CD2B297D889BDP-54,0x1.B253D9F33CE4DP+9)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), 8), bareinterval(0x1.26F1FCDD502A3P-13,0x1.53ABD7BFC4FC6P+7)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 1), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 1), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), 1), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), 1), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), 1), bareinterval(13.1,13.1)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), 1), bareinterval(-7451.145,-7451.145)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 1), bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 1), bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), 1), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), 1), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), 1), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), 1), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), 1), bareinterval(-324.3,2.5)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), 1), bareinterval(0.01,2.33)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), 1), bareinterval(-1.9,-0.33)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 3), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 3), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), 3), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), 3), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), 3), bareinterval(0x1.1902E978D4FDEP+11,0x1.1902E978D4FDFP+11)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), 3), bareinterval(-0x1.81460637B9A3DP+38,-0x1.81460637B9A3CP+38)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 3), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 3), bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), 3), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), 3), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), 3), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), 3), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), 3), bareinterval(-0x1.0436D2F418938P+25,0x1.F4P+3)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), 3), bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), 3), bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), 7), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 7), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), 7), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), 7), bareinterval(0.0,0.0)) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), 7), bareinterval(0x1.F91D1B185493BP+25,0x1.F91D1B185493CP+25)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), 7), bareinterval(-0x1.07B1DA32F9B59P+90,-0x1.07B1DA32F9B58P+90)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 7), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 7), bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), 7), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), 7), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), 7), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), 7), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), 7), bareinterval(-0x1.4F109959E6D7FP+58,0x1.312DP+9)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), 7), bareinterval(0x1.6849B86A12B9BP-47,0x1.74D0373C76313P+8)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), 7), bareinterval(-0x1.658C775099757P+6,-0x1.BEE30301BF47AP-12)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), -2), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), -2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), -2), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), -2), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), -2), bareinterval(0x1.7DE3A077D1568P-8,0x1.7DE3A077D1569P-8)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), -2), bareinterval(0x1.3570290CD6E14P-26,0x1.3570290CD6E15P-26)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -2), bareinterval(0x0P+0,0x0.0000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -2), bareinterval(0x0P+0,0x0.0000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), -2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), -2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), -2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), -2), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), -2), bareinterval(0x1.3F0C482C977C9P-17,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), -2), bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), -2), bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), -8), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), -8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), -8), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), -8), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), -8), bareinterval(0x1.3CEF39247CA6DP-30,0x1.3CEF39247CA6EP-30)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), -8), bareinterval(0x1.113D9EF0A99ACP-103,0x1.113D9EF0A99ADP-103)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -8), bareinterval(0x0P+0,0x0.0000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -8), bareinterval(0x0P+0,0x0.0000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), -8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), -8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), -8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), -8), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), -8), bareinterval(0x1.34CC3764D1E0CP-67,Inf)) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), -8), bareinterval(0x1.2DC80DB11AB7CP-10,0x1.1C37937E08P+53)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), -8), bareinterval(0x1.81E104E61630DP-8,0x1.BC64F21560E34P+12)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), -1), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), -1), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), -1), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), -1), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), -1), bareinterval(0x1.38ABF82EE6986P-4,0x1.38ABF82EE6987P-4)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), -1), bareinterval(-0x1.197422C9048BFP-13,-0x1.197422C9048BEP-13)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -1), bareinterval(0x0.4P-1022,0x0.4000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -1), bareinterval(-0x0.4000000000001P-1022,-0x0.4P-1022)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), -1), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), -1), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), -1), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), -1), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), -1), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), -1), bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), -1), bareinterval(-0x1.83E0F83E0F83EP+1,-0x1.0D79435E50D79P-1)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), -3), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), -3), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), -3), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), -3), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), -3), bareinterval(0x1.D26DF4D8B1831P-12,0x1.D26DF4D8B1832P-12)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), -3), bareinterval(-0x1.54347DED91B19P-39,-0x1.54347DED91B18P-39)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -3), bareinterval(0x0P+0,0x0.0000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -3), bareinterval(-0x0.0000000000001P-1022,-0x0P+0)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), -3), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), -3), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), -3), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), -3), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), -3), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), -3), bareinterval(0x1.43CFBA61AACABP-4,0x1.E848P+19)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), -3), bareinterval(-0x1.BD393CE9E8E7CP+4,-0x1.2A95F6F7C066CP-3)) - - @test isequal_interval(nthpow(emptyinterval(BareInterval{Float64}), -7), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), -7), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.0,0.0), -7), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(-0.0,-0.0), -7), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(13.1,13.1), -7), bareinterval(0x1.037D76C912DBCP-26,0x1.037D76C912DBDP-26)) - - @test isequal_interval(nthpow(bareinterval(-7451.145,-7451.145), -7), bareinterval(-0x1.F10F41FB8858FP-91,-0x1.F10F41FB8858EP-91)) - - @test isequal_interval(nthpow(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -7), bareinterval(0x0P+0,0x0.0000000000001P-1022)) - - @test isequal_interval(nthpow(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -7), bareinterval(-0x0.0000000000001P-1022,-0x0P+0)) - - @test isequal_interval(nthpow(bareinterval(0.0,Inf), -7), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-0.0,Inf), -7), bareinterval(0.0,Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf,0.0), -7), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-Inf,-0.0), -7), bareinterval(-Inf,0.0)) - - @test isequal_interval(nthpow(bareinterval(-324.3,2.5), -7), entireinterval(BareInterval{Float64})) - - @test isequal_interval(nthpow(bareinterval(0.01,2.33), -7), bareinterval(0x1.5F934D64162A9P-9,0x1.6BCC41E9P+46)) - - @test isequal_interval(nthpow(bareinterval(-1.9,-0.33), -7), bareinterval(-0x1.254CDD3711DDBP+11,-0x1.6E95C4A761E19P-7)) - -end - -@testset "minimal_pown_dec_test" begin - - @test isequal_interval(nthpow(Interval(bareinterval(-5.0,10.0), IntervalArithmetic.com), 0), Interval(bareinterval(1.0,1.0), IntervalArithmetic.com)) - - @test isequal_interval(nthpow(Interval(bareinterval(-Inf,15.0), IntervalArithmetic.dac), 0), Interval(bareinterval(1.0,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(nthpow(Interval(bareinterval(-3.0,5.0), IntervalArithmetic.def), 2), Interval(bareinterval(0.0,25.0), IntervalArithmetic.def)) - - @test isequal_interval(nthpow(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), IntervalArithmetic.com), 2), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(nthpow(Interval(bareinterval(-3.0,5.0), IntervalArithmetic.dac), 3), Interval(bareinterval(-27.0,125.0), IntervalArithmetic.dac)) - - @test isequal_interval(nthpow(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), IntervalArithmetic.com), 3), Interval(bareinterval(-Inf, 8.0), IntervalArithmetic.dac)) - - @test isequal_interval(nthpow(Interval(bareinterval(3.0,5.0), IntervalArithmetic.com), -2), Interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), IntervalArithmetic.com)) - - @test isequal_interval(nthpow(Interval(bareinterval(-5.0,-3.0), IntervalArithmetic.def), -2), Interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), IntervalArithmetic.def)) - - @test isequal_interval(nthpow(Interval(bareinterval(-5.0,3.0), IntervalArithmetic.com), -2), Interval(bareinterval(0x1.47AE147AE147AP-5,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(nthpow(Interval(bareinterval(3.0,5.0), IntervalArithmetic.dac), -3), Interval(bareinterval(0x1.0624DD2F1A9FBP-7 ,0x1.2F684BDA12F69P-5), IntervalArithmetic.dac)) - - @test isequal_interval(nthpow(Interval(bareinterval(-3.0,5.0), IntervalArithmetic.com), -3), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_pow_test" begin - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(0.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(1.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-3.0,5.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-5.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(emptyinterval(BareInterval{Float64}), bareinterval(5.0,5.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.1,0.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.0,1.0)), bareinterval(0x1.999999999999AP-4,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.0,1.0)), bareinterval(0x1.999999999999AP-4,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.1,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.1,1.0)), bareinterval(0x1.999999999999AP-4,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.1,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(0.1,Inf)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(1.0,1.0)), bareinterval(0x1.999999999999AP-4,0x1P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(1.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(1.0,Inf)), bareinterval(0.0,0x1P-1)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(2.5,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(2.5,Inf)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.1,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.1,1.0)), bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.1,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.1,Inf)), bareinterval(0.0,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,1.0)), bareinterval(0x1.999999999999AP-4,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,Inf)), bareinterval(0.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,1.0)), bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,Inf)), bareinterval(0.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,0.1)), bareinterval(0x1.96B230BCDC434P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,1.0)), bareinterval(0x1.999999999999AP-4,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,0.0)), bareinterval(1.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,-0.0)), bareinterval(1.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,0.0)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,-0.0)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.125FBEE250664P+0,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.125FBEE250664P+0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.125FBEE250664P+0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-1.0,-1.0)), bareinterval(0x1P+1,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,-1.0)), bareinterval(0x1P+1,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,0.5), bareinterval(-Inf,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.0,1.0)), bareinterval(0x1.999999999999AP-4,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.0,1.0)), bareinterval(0x1.999999999999AP-4,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.1,0.1)), bareinterval(0x1.96B230BCDC434P-1,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.1,1.0)), bareinterval(0x1.999999999999AP-4,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.1,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(0.1,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(1.0,1.0)), bareinterval(0x1.999999999999AP-4,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(1.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(1.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(2.5,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(2.5,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,1.0)), bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,1.0)), bareinterval(0x1.999999999999AP-4,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,0.1)), bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,1.0)), bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,0.1)), bareinterval(0x1.96B230BCDC434P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,1.0)), bareinterval(0x1.999999999999AP-4,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,2.5)), bareinterval(0x1.9E7C6E43390B7P-9,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,0.0)), bareinterval(1.0,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,-0.0)), bareinterval(1.0,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,0.0)), bareinterval(1.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,-0.0)), bareinterval(1.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,0.0)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,-0.0)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-0.1,-0.1)), bareinterval(1.0,0x1.4248EF8FC2604P+0)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,-0.1)), bareinterval(1.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,-0.1)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-1.0,-1.0)), bareinterval(1.0,0x1.4P+3)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,-1.0)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-2.5,-2.5)), bareinterval(1.0,0x1.3C3A4EDFA9758P+8)) - - @test isequal_interval(^(bareinterval(0.1,1.0), bareinterval(-Inf,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.0,1.0)), bareinterval(0.5,1.5)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.0,1.0)), bareinterval(0.5,1.5)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.1,0.1)), bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.1,1.0)), bareinterval(0.5,1.5)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.1,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(1.0,1.0)), bareinterval(0.5,1.5)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(1.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(2.5,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.1,0.1)), bareinterval(0x1.DDB680117AB12P-1,0x1.125FBEE250665P+0)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.1,1.0)), bareinterval(0x1P-1,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.1,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.1,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,0.1)), bareinterval(0x1.5555555555555P-1,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,1.0)), bareinterval(0x1P-1,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), entireinterval(BareInterval{Float64})), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,0.0)), bareinterval(0x1.5555555555555P-1,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,-0.0)), bareinterval(0x1.5555555555555P-1,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,-0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,0.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,-0.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.125FBEE250665P+0)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.5555555555555P-1,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,-0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-1.0,-1.0)), bareinterval(0x1.5555555555555P-1,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,-1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,-1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,1.5), bareinterval(-Inf,-2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.0,1.0)), bareinterval(0.5,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.0,1.0)), bareinterval(0.5,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.1,0.1)), bareinterval(0x1.DDB680117AB12P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.1,1.0)), bareinterval(0.5,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.1,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(1.0,1.0)), bareinterval(0.5,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(1.0,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(2.5,2.5)), bareinterval(0x1.6A09E667F3BCCP-3,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,0.0)), bareinterval(0.0,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,-0.0)), bareinterval(0.0,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,0.0)), bareinterval(0.0,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,-0.0)), bareinterval(0.0,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-0.1,-0.1)), bareinterval(0.0,0x1.125FBEE250665P+0)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,-0.1)), bareinterval(0.0,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,-0.1)), bareinterval(0.0,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-1.0,-1.0)), bareinterval(0.0,0x1P+1)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,-1.0)), bareinterval(0.0,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.5,Inf), bareinterval(-2.5,-2.5)), bareinterval(0.0,0x1.6A09E667F3BCDP+2)) - - @test isequal_interval(^(bareinterval(1.0,1.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.0,1.0)), bareinterval(1.0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.0,1.0)), bareinterval(1.0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.0,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.0,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.1,0.1)), bareinterval(1.0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.1,1.0)), bareinterval(1.0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.1,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(0.1,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(1.0,1.0)), bareinterval(1.0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(1.0,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(1.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(2.5,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(2.5,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.1,0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.1,1.0)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.1,2.5)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.1,Inf)), bareinterval(0x1.EBA7C9E4D31E9P-1,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,0.1)), bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,1.0)), bareinterval(0x1.5555555555555P-1,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,2.5)), bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,Inf)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,Inf)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,0.1)), bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,1.0)), bareinterval(0x0P+0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,2.5)), bareinterval(0x0P+0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.0,1.5), entireinterval(BareInterval{Float64})), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,0.0)), bareinterval(0x1.5555555555555P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,-0.0)), bareinterval(0x1.5555555555555P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,-0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.5555555555555P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,-0.1)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-1.0,-1.0)), bareinterval(0x1.5555555555555P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,-1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,-1.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.0,1.5), bareinterval(-Inf,-2.5)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.0,1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.0,1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.0,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.0,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.1,0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.1,1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.1,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(0.1,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(1.0,1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(1.0,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(1.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(2.5,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(2.5,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.1,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.1,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.1,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.1,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-0.1,-0.1)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,-0.1)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,-0.1)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,-0.1)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-1.0,-1.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,-1.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,-1.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-2.5,-2.5)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.0,Inf), bareinterval(-Inf,-2.5)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.0,1.0)), bareinterval(1.0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.0,1.0)), bareinterval(1.0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.0,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.0,2.5)), bareinterval(1.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.1,0.1)), bareinterval(0x1.02739C65D58BFP+0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.1,1.0)), bareinterval(0x1.02739C65D58BFP+0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.1,2.5)), bareinterval(0x1.02739C65D58BFP+0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(0.1,Inf)), bareinterval(0x1.02739C65D58BFP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(1.0,1.0)), bareinterval(0x1.199999999999AP+0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(1.0,2.5)), bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(1.0,Inf)), bareinterval(0x1.199999999999AP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(2.5,2.5)), bareinterval(0x1.44E1080833B25P+0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(2.5,Inf)), bareinterval(0x1.44E1080833B25P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.1,0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.1,1.0)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.1,2.5)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.1,Inf)), bareinterval(0x1.EBA7C9E4D31E9P-1,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,0.1)), bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,1.0)), bareinterval(0x1.5555555555555P-1,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,2.5)), bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,Inf)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,Inf)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,0.1)), bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,1.0)), bareinterval(0x0P+0,0x1.8P+0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,2.5)), bareinterval(0x0P+0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), entireinterval(BareInterval{Float64})), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,0.0)), bareinterval(0x1.5555555555555P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,-0.0)), bareinterval(0x1.5555555555555P-1,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,-0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.5555555555555P-1,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,-0.1)), bareinterval(0x0P+0,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-1.0,-1.0)), bareinterval(0x1.5555555555555P-1,0x1.D1745D1745D17P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,-1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.D1745D1745D17P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,-1.0)), bareinterval(0x0P+0,0x1.D1745D1745D17P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,0x1.9372D999784C8P-1)) - - @test isequal_interval(^(bareinterval(1.1,1.5), bareinterval(-Inf,-2.5)), bareinterval(0x0P+0,0x1.9372D999784C8P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.0,1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.0,1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.0,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.0,2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.1,0.1)), bareinterval(0x1.02739C65D58BFP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.1,1.0)), bareinterval(0x1.02739C65D58BFP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.1,2.5)), bareinterval(0x1.02739C65D58BFP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(0.1,Inf)), bareinterval(0x1.02739C65D58BFP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(1.0,1.0)), bareinterval(0x1.199999999999AP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(1.0,2.5)), bareinterval(0x1.199999999999AP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(1.0,Inf)), bareinterval(0x1.199999999999AP+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(2.5,2.5)), bareinterval(0x1.44E1080833B25P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(2.5,Inf)), bareinterval(0x1.44E1080833B25P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.1,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.1,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.1,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.1,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,Inf)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,0.1)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,1.0)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,2.5)), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), entireinterval(BareInterval{Float64})), bareinterval(0x0P+0,Inf)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,-0.0)), bareinterval(0x0P+0,1.0)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-0.1,-0.1)), bareinterval(0x0P+0,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,-0.1)), bareinterval(0x0P+0,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,-0.1)), bareinterval(0x0P+0,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,-0.1)), bareinterval(0x0P+0,0x1.FB24AF5281928P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-1.0,-1.0)), bareinterval(0x0P+0,0x1.D1745D1745D17P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,-1.0)), bareinterval(0x0P+0,0x1.D1745D1745D17P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,-1.0)), bareinterval(0x0P+0,0x1.D1745D1745D17P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-2.5,-2.5)), bareinterval(0x0P+0,0x1.9372D999784C8P-1)) - - @test isequal_interval(^(bareinterval(1.1,Inf), bareinterval(-Inf,-2.5)), bareinterval(0x0P+0,0x1.9372D999784C8P-1)) - - @test isequal_interval(^(bareinterval(0.0,0.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.1,0.1)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.1,1.0)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.1,2.5)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(0.1,Inf)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(1.0,1.0)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(1.0,2.5)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(1.0,Inf)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(2.5,2.5)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(2.5,Inf)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-1.0,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.5), bareinterval(-Inf,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.1,0.1)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.1,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.1,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(0.1,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(1.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(1.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(1.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(2.5,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(2.5,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-0.1,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-1.0,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-2.5,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.0), bareinterval(-Inf,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.1,0.1)), bareinterval(0.0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.1,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.1,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(1.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(1.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(2.5,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,0.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,-0.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,-0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-1.0,-1.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,-1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(0.0,1.5), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-0.1,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-1.0,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,Inf), bareinterval(-2.5,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.1,0.1)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.1,1.0)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.1,2.5)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(0.1,Inf)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(1.0,1.0)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(1.0,2.5)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(1.0,Inf)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(2.5,2.5)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(2.5,Inf)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-1.0,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,0.5), bareinterval(-Inf,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.1,0.1)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.1,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.1,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(0.1,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(1.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(1.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(1.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(2.5,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(2.5,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-1.0,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-2.5,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.0), bareinterval(-Inf,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.1,0.1)), bareinterval(0.0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.1,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.1,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(1.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(1.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(2.5,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,0.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-1.0,-1.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,-1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,1.5), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-0.1,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-1.0,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.0,Inf), bareinterval(-2.5,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.1,0.1)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.1,1.0)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.1,2.5)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(0.1,Inf)), bareinterval(0.0,0x1.DDB680117AB13P-1)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(1.0,1.0)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(1.0,2.5)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(1.0,Inf)), bareinterval(0.0,0.5)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(2.5,2.5)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(2.5,Inf)), bareinterval(0.0,0x1.6A09E667F3BCDP-3)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.1)), bareinterval(0x1.125FBEE250664P+0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-1.0,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,-1.0)), bareinterval(0x1P+1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,0.5), bareinterval(-Inf,-2.5)), bareinterval(0x1.6A09E667F3BCCP+2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.1,0.1)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.1,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.1,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(0.1,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(1.0,1.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(1.0,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(1.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(2.5,2.5)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(2.5,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.1)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-1.0,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,-1.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-2.5,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.0), bareinterval(-Inf,-2.5)), bareinterval(1.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.1,0.1)), bareinterval(0.0,0x1.0A97DCE72A0CBP+0)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.1,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.1,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(1.0,1.0)), bareinterval(0.0,1.5)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(1.0,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(2.5,2.5)), bareinterval(0.0,0x1.60B9FD68A4555P+1)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,0.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-0.1,-0.1)), bareinterval(0x1.EBA7C9E4D31E9P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.1)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.1)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-1.0,-1.0)), bareinterval(0x1.5555555555555P-1,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,-1.0)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-2.5,-2.5)), bareinterval(0x1.7398BF1D1EE6FP-2,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,1.5), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.1,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.1,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.1,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.1,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-0.1,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.1)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-1.0,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,-1.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-Inf,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(-0.1,Inf), bareinterval(-2.5,-2.5)), bareinterval(0.0,Inf)) - - @test isequal_interval(^(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,0.0), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-0.0,0.0), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(0.0,-0.0), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,0.0), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.1,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.1,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.1,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.1,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.1)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,2.5)), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0.0)) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.0,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.0,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.1,0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.1,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.1,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(0.1,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(1.0,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(1.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(2.5,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(2.5,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.1,0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.1,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.1,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.1,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-0.1,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-2.5)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-2.5)), emptyinterval(BareInterval{Float64})) - -end - -@testset "minimal_pow_dec_test" begin - - @test isequal_interval(^(Interval(bareinterval(0.1,0.5), IntervalArithmetic.com), Interval(bareinterval(0.0,1.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.999999999999AP-4,1.0), IntervalArithmetic.com)) - - @test isequal_interval(^(Interval(bareinterval(0.1,0.5), IntervalArithmetic.com), Interval(bareinterval(0.1,0.1), IntervalArithmetic.def)), Interval(bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(0.1,0.5), IntervalArithmetic.trv), Interval(bareinterval(-2.5,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.1,0.5), IntervalArithmetic.com), Interval(bareinterval(-2.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.3C3A4EDFA9758P+8), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.1,0.5), IntervalArithmetic.trv), Interval(bareinterval(-Inf,0.1), IntervalArithmetic.dac)), Interval(bareinterval(0x1.96B230BCDC434P-1,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.1,1.0), IntervalArithmetic.com), Interval(bareinterval(0.0,2.5), IntervalArithmetic.com)), Interval(bareinterval(0x1.9E7C6E43390B7P-9,1.0), IntervalArithmetic.com)) - - @test isequal_interval(^(Interval(bareinterval(0.1,1.0), IntervalArithmetic.def), Interval(bareinterval(1.0,1.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.999999999999AP-4,1.0), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(0.1,1.0), IntervalArithmetic.trv), Interval(bareinterval(-2.5,1.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.5,1.5), IntervalArithmetic.dac), Interval(bareinterval(0.1,0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.5,1.5), IntervalArithmetic.def), Interval(bareinterval(-2.5,0.1), IntervalArithmetic.trv)), Interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.5,1.5), IntervalArithmetic.com), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.com)), Interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), IntervalArithmetic.com)) - - @test isequal_interval(^(Interval(bareinterval(0.5,Inf), IntervalArithmetic.dac), Interval(bareinterval(0.1,0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.DDB680117AB12P-1,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.5,Inf), IntervalArithmetic.def), Interval(bareinterval(-2.5,-0.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.6A09E667F3BCDP+2), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(1.0,1.5), IntervalArithmetic.com), Interval(bareinterval(-0.1,0.1), IntervalArithmetic.def)), Interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(1.0,1.5), IntervalArithmetic.trv), Interval(bareinterval(-0.1,-0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.EBA7C9E4D31E9P-1,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac), Interval(bareinterval(1.0,1.0), IntervalArithmetic.dac)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(1.0,Inf), IntervalArithmetic.def), Interval(bareinterval(-1.0,-0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x0P+0,1.0), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(1.1,1.5), IntervalArithmetic.def), Interval(bareinterval(1.0,2.5), IntervalArithmetic.com)), Interval(bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(1.1,1.5), IntervalArithmetic.com), Interval(bareinterval(-0.1,-0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1), IntervalArithmetic.com)) - - @test isequal_interval(^(Interval(bareinterval(1.1,Inf), IntervalArithmetic.dac), Interval(bareinterval(0.1,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0x1.02739C65D58BFP+0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(1.1,Inf), IntervalArithmetic.def), Interval(bareinterval(-2.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0x0P+0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(1.1,Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,-1.0), IntervalArithmetic.def)), Interval(bareinterval(0x0P+0,0x1.D1745D1745D17P-1), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,0.5), IntervalArithmetic.com), Interval(bareinterval(0.1,0.1), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.DDB680117AB13P-1), IntervalArithmetic.com)) - - @test isequal_interval(^(Interval(bareinterval(0.0,0.5), IntervalArithmetic.com), Interval(bareinterval(2.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.0,0.5), IntervalArithmetic.com), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.dac)), Interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.com), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.def), Interval(bareinterval(0.0,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.dac), Interval(bareinterval(1.0,2.5), IntervalArithmetic.com)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.com), Interval(bareinterval(-2.5,0.1), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.def), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.dac), Interval(bareinterval(-0.1,0.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.com), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.dac)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.0), IntervalArithmetic.def), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.dac)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.5), IntervalArithmetic.com), Interval(bareinterval(0.0,2.5), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.5), IntervalArithmetic.def), Interval(bareinterval(2.5,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.5), IntervalArithmetic.dac), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.5555555555555P-1,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,1.5), IntervalArithmetic.com), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.def)), Interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), Interval(bareinterval(0.1,0.1), IntervalArithmetic.com)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,-1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,0.5), IntervalArithmetic.com), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,0.5), IntervalArithmetic.def), Interval(bareinterval(0.1,Inf), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.DDB680117AB13P-1), IntervalArithmetic.def)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,0.5), IntervalArithmetic.dac), Interval(bareinterval(2.5,2.5), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,0.5), IntervalArithmetic.trv), Interval(bareinterval(-2.5,-0.0), IntervalArithmetic.dac)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,0.5), IntervalArithmetic.com), Interval(bareinterval(-Inf,-0.1), IntervalArithmetic.def)), Interval(bareinterval(0x1.125FBEE250664P+0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,0.5), IntervalArithmetic.def), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.dac)), Interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.0), IntervalArithmetic.com), Interval(bareinterval(2.5,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.0), IntervalArithmetic.dac), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.0), IntervalArithmetic.com), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.0), IntervalArithmetic.def), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.com)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.def)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.5), IntervalArithmetic.com), Interval(bareinterval(0.1,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.5), IntervalArithmetic.def), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.5555555555555P-1,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.5), IntervalArithmetic.dac), Interval(bareinterval(-2.5,-0.1), IntervalArithmetic.def)), Interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.5), IntervalArithmetic.com), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.com)), Interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,1.5), IntervalArithmetic.def), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.1,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.def), Interval(bareinterval(-2.5,-0.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.trv), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.trv)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.def), Interval(bareinterval(-Inf,-1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,0.5), IntervalArithmetic.def), Interval(bareinterval(0.1,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.DDB680117AB13P-1), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,0.5), IntervalArithmetic.com), Interval(bareinterval(-0.1,-0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.125FBEE250664P+0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,0.5), IntervalArithmetic.dac), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.def)), Interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.com), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.def), Interval(bareinterval(-Inf,-1.0), IntervalArithmetic.def)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.com), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.com)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv), Interval(bareinterval(-Inf,-2.5), IntervalArithmetic.trv)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.5), IntervalArithmetic.trv), Interval(bareinterval(0.0,2.5), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.5), IntervalArithmetic.com), Interval(bareinterval(2.5,2.5), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.5), IntervalArithmetic.dac), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.5555555555555P-1,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.5), IntervalArithmetic.com), Interval(bareinterval(-0.1,-0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.EBA7C9E4D31E9P-1,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,1.5), IntervalArithmetic.def), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.def)), Interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.1,2.5), IntervalArithmetic.com)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,Inf), IntervalArithmetic.def), Interval(bareinterval(-2.5,0.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-0.1,Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.5,-2.5), IntervalArithmetic.trv)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.dac)) - - @test isequal_interval(^(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com), Interval(bareinterval(-2.5,0.1), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(0.0,0.0), IntervalArithmetic.dac), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-1.0,-0.1), IntervalArithmetic.com), Interval(bareinterval(-0.1,1.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-1.0,-0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.1,2.5), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(^(Interval(bareinterval(-1.0,-0.1), IntervalArithmetic.def), Interval(bareinterval(-0.1,Inf), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_exp_test" begin - - @test isequal_interval(exp(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(exp(bareinterval(-Inf,0.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(exp(bareinterval(-Inf,-0.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(exp(bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(exp(bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(exp(entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(exp(bareinterval(-Inf,0x1.62E42FEFA39FP+9)), bareinterval(0.0,Inf)) - - @test isequal_interval(exp(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9)), bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf)) - - @test isequal_interval(exp(bareinterval(0.0,0x1.62E42FEFA39EP+9)), bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023)) - - @test isequal_interval(exp(bareinterval(-0.0,0x1.62E42FEFA39EP+9)), bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023)) - - @test isequal_interval(exp(bareinterval(-0x1.6232BDD7ABCD3P+9,0x1.62E42FEFA39EP+9)), bareinterval(0x0.FFFFFFFFFFE7BP-1022,0x1.FFFFFFFFFC32BP+1023)) - - @test isequal_interval(exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0x1.62E42FEFA39EP+9)), bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.FFFFFFFFFC32BP+1023)) - - @test isequal_interval(exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0.0)), bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0)) - - @test isequal_interval(exp(bareinterval(-0x1.6232BDD7ABCD3P+8,-0.0)), bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0)) - - @test isequal_interval(exp(bareinterval(-0x1.6232BDD7ABCD3P+8,1.0)), bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.5BF0A8B14576AP+1)) - - @test isequal_interval(exp(bareinterval(1.0,5.0)), bareinterval(0x1.5BF0A8B145769P+1,0x1.28D389970339P+7)) - - @test isequal_interval(exp(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)), bareinterval(0x1.2797F0A337A5FP-5,0x1.86091CC9095C5P+2)) - - @test isequal_interval(exp(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)), bareinterval(0x1.1337E9E45812AP+1, 0x1.805A5C88021B6P+142)) - - @test isequal_interval(exp(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)), bareinterval(0x1.EF461A783114CP+16,0x1.691D36C6B008CP+37)) - -end - -@testset "minimal_exp_dec_test" begin - - @test isequal_interval(exp(Interval(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9), IntervalArithmetic.com)), Interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(exp(Interval(bareinterval(0.0,0x1.62E42FEFA39EP+9), IntervalArithmetic.def)), Interval(bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023), IntervalArithmetic.def)) - -end - -@testset "minimal_exp2_test" begin - - @test isequal_interval(exp2(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(exp2(bareinterval(-Inf,0.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(exp2(bareinterval(-Inf,-0.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(exp2(bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(exp2(bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(exp2(entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(exp2(bareinterval(-Inf,1024.0)), bareinterval(0.0,Inf)) - - @test isequal_interval(exp2(bareinterval(1024.0,1024.0)), bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf)) - - @test isequal_interval(exp2(bareinterval(0.0,1023.0)), bareinterval(1.0,0x1P+1023)) - - @test isequal_interval(exp2(bareinterval(-0.0,1023.0)), bareinterval(1.0,0x1P+1023)) - - @test isequal_interval(exp2(bareinterval(-1022.0,1023.0)), bareinterval(0x1P-1022,0x1P+1023)) - - @test isequal_interval(exp2(bareinterval(-1022.0,0.0)), bareinterval(0x1P-1022,1.0)) - - @test isequal_interval(exp2(bareinterval(-1022.0,-0.0)), bareinterval(0x1P-1022,1.0)) - - @test isequal_interval(exp2(bareinterval(-1022.0,1.0)), bareinterval(0x1P-1022,2.0)) - - @test isequal_interval(exp2(bareinterval(1.0,5.0)), bareinterval(2.0,32.0)) - - @test isequal_interval(exp2(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)), bareinterval(0x1.9999999999998P-4,0x1.C000000000001P+1)) - - @test isequal_interval(exp2(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)), bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98)) - - @test isequal_interval(exp2(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)), bareinterval(0x1.AEA0000721857P+11,0x1.FCA0555555559P+25)) - -end - -@testset "minimal_exp2_dec_test" begin - - @test isequal_interval(exp2(Interval(bareinterval(1024.0,1024.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(exp2(Interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), IntervalArithmetic.def)), Interval(bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98), IntervalArithmetic.def)) - -end - -@testset "minimal_exp10_test" begin - - @test isequal_interval(exp10(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(exp10(bareinterval(-Inf,0.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(exp10(bareinterval(-Inf,-0.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(exp10(bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(exp10(bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(exp10(entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(exp10(bareinterval(-Inf,0x1.34413509F79FFP+8)), bareinterval(0.0,Inf)) - - @test isequal_interval(exp10(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8)), bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf)) - - @test isequal_interval(exp10(bareinterval(0.0,0x1.34413509F79FEP+8)), bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023)) - - @test isequal_interval(exp10(bareinterval(-0.0,0x1.34413509F79FEP+8)), bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023)) - - @test isequal_interval(exp10(bareinterval(-0x1.33A7146F72A42P+8,0x1.34413509F79FEP+8)), bareinterval(0x0.FFFFFFFFFFFE3P-1022,0x1.FFFFFFFFFFBA1P+1023)) - - @test isequal_interval(exp10(bareinterval(-0x1.22P+7,0x1.34413509F79FEP+8)), bareinterval(0x1.3FAAC3E3FA1F3P-482,0x1.FFFFFFFFFFBA1P+1023)) - - @test isequal_interval(exp10(bareinterval(-0x1.22P+7,0.0)), bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0)) - - @test isequal_interval(exp10(bareinterval(-0x1.22P+7,-0.0)), bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0)) - - @test isequal_interval(exp10(bareinterval(-0x1.22P+7,1.0)), bareinterval(0x1.3FAAC3E3FA1F3P-482,10.0)) - - @test isequal_interval(exp10(bareinterval(1.0,5.0)), bareinterval(10.0,100000.0)) - - @test isequal_interval(exp10(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)), bareinterval(0x1.F3A8254311F9AP-12,0x1.00B18AD5B7D56P+6)) - - @test isequal_interval(exp10(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)), bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328)) - - @test isequal_interval(exp10(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)), bareinterval(0x1.0608D2279A811P+39,0x1.43AF5D4271CB8P+86)) - -end - -@testset "minimal_exp10_dec_test" begin - - @test isequal_interval(exp10(Interval(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8), IntervalArithmetic.com)), Interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(exp10(Interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), IntervalArithmetic.def)), Interval(bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328), IntervalArithmetic.def)) - -end - -@testset "minimal_log_test" begin - - @test isequal_interval(log(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log(bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log(bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log(bareinterval(0.0,1.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(log(bareinterval(-0.0,1.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(log(bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(log(bareinterval(0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log(bareinterval(-0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,0x1.62E42FEFA39FP+9)) - - @test isequal_interval(log(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,0x1.62E42FEFA39FP+9)) - - @test isequal_interval(log(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0.0,0x1.62E42FEFA39FP+9)) - - @test isequal_interval(log(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-0x1.74385446D71C4p9, +0x1.62E42FEFA39Fp9)) - - @test isequal_interval(log(bareinterval(0x0.0000000000001p-1022,1.0)), bareinterval(-0x1.74385446D71C4p9,0.0)) - - @test isequal_interval(log(bareinterval(0x1.5BF0A8B145769P+1,0x1.5BF0A8B145769P+1)), bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0)) - - @test isequal_interval(log(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1)), bareinterval(0x1P+0,0x1.0000000000001P+0)) - - @test isequal_interval(log(bareinterval(0x0.0000000000001p-1022,0x1.5BF0A8B14576AP+1)), bareinterval(-0x1.74385446D71C4p9,0x1.0000000000001P+0)) - - @test isequal_interval(log(bareinterval(0x1.5BF0A8B145769P+1,32.0)), bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1.BB9D3BEB8C86CP+1)) - - @test isequal_interval(log(bareinterval(0x1.999999999999AP-4,0x1.CP+1)), bareinterval(-0x1.26BB1BBB55516P+1,0x1.40B512EB53D6P+0)) - - @test isequal_interval(log(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)), bareinterval(0x1.0FAE81914A99P-1,0x1.120627F6AE7F1P+6)) - - @test isequal_interval(log(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)), bareinterval(0x1.04A1363DB1E63P+3,0x1.203E52C0256B5P+4)) - -end - -@testset "minimal_log_dec_test" begin - - @test isequal_interval(log(Interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-0x1.74385446D71C4p9,0x1.62E42FEFA39FP+9), IntervalArithmetic.com)) - - @test isequal_interval(log(Interval(bareinterval(0.0,1.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(log(Interval(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1), IntervalArithmetic.def)), Interval(bareinterval(0x1P+0,0x1.0000000000001P+0), IntervalArithmetic.def)) - -end - -@testset "minimal_log2_test" begin - - @test isequal_interval(log2(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log2(bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log2(bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log2(bareinterval(0.0,1.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(log2(bareinterval(-0.0,1.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(log2(bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(log2(bareinterval(0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log2(bareinterval(-0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log2(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log2(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,1024.0)) - - @test isequal_interval(log2(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,1024.0)) - - @test isequal_interval(log2(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0.0,1024.0)) - - @test isequal_interval(log2(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-1074.0,1024.0)) - - @test isequal_interval(log2(bareinterval(0x0.0000000000001p-1022,1.0)), bareinterval(-1074.0,0.0)) - - @test isequal_interval(log2(bareinterval(0x0.0000000000001p-1022,2.0)), bareinterval(-1074.0,1.0)) - - @test isequal_interval(log2(bareinterval(2.0,32.0)), bareinterval(1.0,5.0)) - - @test isequal_interval(log2(bareinterval(0x1.999999999999AP-4,0x1.CP+1)), bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) - - @test isequal_interval(log2(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)), bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) - - @test isequal_interval(log2(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)), bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) - -end - -@testset "minimal_log2_dec_test" begin - - @test isequal_interval(log2(Interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-1074.0,1024.0), IntervalArithmetic.com)) - - @test isequal_interval(log2(Interval(bareinterval(0x0.0000000000001p-1022,Inf), IntervalArithmetic.dac)), Interval(bareinterval(-1074.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(log2(Interval(bareinterval(2.0,32.0), IntervalArithmetic.def)), Interval(bareinterval(1.0,5.0), IntervalArithmetic.def)) - - @test isequal_interval(log2(Interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-Inf,1024.0), IntervalArithmetic.trv)) - -end - -@testset "minimal_log10_test" begin - - @test isequal_interval(log10(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log10(bareinterval(-Inf,0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log10(bareinterval(-Inf,-0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(log10(bareinterval(0.0,1.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(log10(bareinterval(-0.0,1.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(log10(bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(log10(bareinterval(0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log10(bareinterval(-0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log10(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log10(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,0x1.34413509F79FFP+8)) - - @test isequal_interval(log10(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,0x1.34413509F79FFP+8)) - - @test isequal_interval(log10(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)), bareinterval(0.0,0x1.34413509F79FFP+8)) - - @test isequal_interval(log10(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)), bareinterval(-0x1.434E6420F4374p+8, +0x1.34413509F79FFp+8)) - - @test isequal_interval(log10(bareinterval(0x0.0000000000001p-1022,1.0)), bareinterval(-0x1.434E6420F4374p+8 ,0.0)) - - @test isequal_interval(log10(bareinterval(0x0.0000000000001p-1022,10.0)), bareinterval(-0x1.434E6420F4374p+8 ,1.0)) - - @test isequal_interval(log10(bareinterval(10.0,100000.0)), bareinterval(1.0,5.0)) - - @test isequal_interval(log10(bareinterval(0x1.999999999999AP-4,0x1.CP+1)), bareinterval(-0x1P+0,0x1.1690163290F4P-1)) - - @test isequal_interval(log10(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(log10(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)), bareinterval(0x1.D7F59AA5BECB9P-3,0x1.DC074D84E5AABP+4)) - - @test isequal_interval(log10(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)), bareinterval(0x1.C4C29DD829191P+1,0x1.F4BAEBBA4FA4P+2)) - -end - -@testset "minimal_log10_dec_test" begin - - @test isequal_interval(log10(Interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-0x1.434E6420F4374p+8,0x1.34413509F79FFP+8), IntervalArithmetic.com)) - - @test isequal_interval(log10(Interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)), Interval(bareinterval(-Inf,0x1.34413509F79FFP+8), IntervalArithmetic.trv)) - -end - -@testset "minimal_sin_test" begin - - @test isequal_interval(sin(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin(bareinterval(0.0,Inf)), bareinterval(-1.0,1.0)) - - @test isequal_interval(sin(bareinterval(-0.0,Inf)), bareinterval(-1.0,1.0)) - - @test isequal_interval(sin(bareinterval(-Inf,0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(sin(bareinterval(-Inf,-0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(sin(entireinterval(BareInterval{Float64})), bareinterval(-1.0,1.0)) - - @test isequal_interval(sin(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sin(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)), bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)), bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)), bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0.0,0x1.921FB54442D18P+0)), bareinterval(0.0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0.0,0x1.921FB54442D18P+0)), bareinterval(0.0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0.0,0x1.921FB54442D19P+0)), bareinterval(0.0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0.0,0x1.921FB54442D19P+0)), bareinterval(0.0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)), bareinterval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)), bareinterval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)), bareinterval(-0x1.72CECE675D1FDP-52,0x1.1A62633145C07P-53)) - - @test isequal_interval(sin(bareinterval(0.0,0x1.921FB54442D18P+1)), bareinterval(0.0,1.0)) - - @test isequal_interval(sin(bareinterval(-0.0,0x1.921FB54442D18P+1)), bareinterval(0.0,1.0)) - - @test isequal_interval(sin(bareinterval(0.0,0x1.921FB54442D19P+1)), bareinterval(-0x1.72CECE675D1FDP-52,1.0)) - - @test isequal_interval(sin(bareinterval(-0.0,0x1.921FB54442D19P+1)), bareinterval(-0x1.72CECE675D1FDP-52,1.0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)), bareinterval(0x1.1A62633145C06P-53,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)), bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)), bareinterval(0x1.1A62633145C06P-53,0x1P+0)) - - @test isequal_interval(sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)), bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+0,0.0)), bareinterval(-0x1P+0,0.0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+0,-0.0)), bareinterval(-0x1P+0,0.0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+0,0.0)), bareinterval(-0x1P+0,0.0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+0,-0.0)), bareinterval(-0x1P+0,0.0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)), bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)), bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)), bareinterval(-0x1.1A62633145C07P-53,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+1,0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+1,-0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+1,0.0)), bareinterval(-1.0,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+1,-0.0)), bareinterval(-1.0,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)), bareinterval(-0x1P+0,-0x1.1A62633145C06P-53)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)), bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)), bareinterval(-0x1P+0,-0x1.1A62633145C06P-53)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)), bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)), bareinterval(-0x1P+0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1P+0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)), bareinterval(-0x1P+0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1P+0,0x1P+0)) - - @test isequal_interval(sin(bareinterval(-0.7,0.1)), bareinterval(-0x1.49D6E694619B9P-1,0x1.98EAECB8BCB2DP-4)) - - @test isequal_interval(sin(bareinterval(1.0,2.0)), bareinterval(0x1.AED548F090CEEP-1,1.0)) - - @test isequal_interval(sin(bareinterval(-3.2,-2.9)), bareinterval(-0x1.E9FB8D64830E3P-3,0x1.DE33739E82D33P-5)) - - @test isequal_interval(sin(bareinterval(2.0,3.0)), bareinterval(0x1.210386DB6D55BP-3,0x1.D18F6EAD1B446P-1)) - -end - -@testset "minimal_sin_dec_test" begin - - @test isequal_interval(sin(Interval(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0), IntervalArithmetic.def)), Interval(bareinterval(-0x1P+0,-0x1.1A62633145C06P-53), IntervalArithmetic.def)) - - @test isequal_interval(sin(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sin(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.dac)) - -end - -@testset "minimal_cos_test" begin - - @test isequal_interval(cos(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos(bareinterval(0.0,Inf)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0.0,Inf)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-Inf,0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-Inf,-0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(entireinterval(BareInterval{Float64})), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)), bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(0.0,0x1.921FB54442D18P+0)), bareinterval(0x1.1A62633145C06P-54,1.0)) - - @test isequal_interval(cos(bareinterval(-0.0,0x1.921FB54442D18P+0)), bareinterval(0x1.1A62633145C06P-54,1.0)) - - @test isequal_interval(cos(bareinterval(0.0,0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(-0.0,0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(cos(bareinterval(0.0,0x1.921FB54442D18P+1)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0.0,0x1.921FB54442D18P+1)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(0.0,0x1.921FB54442D19P+1)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0.0,0x1.921FB54442D19P+1)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)), bareinterval(-1.0,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)), bareinterval(-1.0,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)), bareinterval(-1.0,-0x1.72CECE675D1FCP-53)) - - @test isequal_interval(cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)), bareinterval(-1.0,-0x1.72CECE675D1FCP-53)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)), bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)), bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+0,0.0)), bareinterval(0x1.1A62633145C06P-54,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+0,-0.0)), bareinterval(0x1.1A62633145C06P-54,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+0,0.0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+0,-0.0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+1,0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+1,-0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+1,0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+1,-0.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)), bareinterval(-1.0,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)), bareinterval(-1.0,0x1.1A62633145C07P-54)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)), bareinterval(-1.0,-0x1.72CECE675D1FCP-53)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)), bareinterval(-1.0,-0x1.72CECE675D1FCP-53)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)), bareinterval(0x1.1A62633145C06P-54,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1.72CECE675D1FDP-53,1.0)) - - @test isequal_interval(cos(bareinterval(-0.7,0.1)), bareinterval(0x1.87996529F9D92P-1,1.0)) - - @test isequal_interval(cos(bareinterval(1.0,2.0)), bareinterval(-0x1.AA22657537205P-2,0x1.14A280FB5068CP-1)) - - @test isequal_interval(cos(bareinterval(-3.2,-2.9)), bareinterval(-1.0,-0x1.F1216DBA340C8P-1)) - - @test isequal_interval(cos(bareinterval(2.0,3.0)), bareinterval(-0x1.FAE04BE85E5D3P-1,-0x1.AA22657537204P-2)) - -end - -@testset "minimal_cos_dec_test" begin - - @test isequal_interval(cos(Interval(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54), IntervalArithmetic.trv)) - - @test isequal_interval(cos(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def)), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.def)) - - @test isequal_interval(cos(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.dac)) - -end - -@testset "minimal_tan_test" begin - - @test isequal_interval(tan(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0.0,Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-Inf,0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-Inf,-0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(tan(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)), bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53)) - - @test isequal_interval(tan(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)), bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52)) - - @test isequal_interval(tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)), bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53)) - - @test isequal_interval(tan(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)), bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52)) - - @test isequal_interval(tan(bareinterval(0.0,0x1.921FB54442D18P+0)), bareinterval(0.0,0x1.D02967C31CDB5P+53)) - - @test isequal_interval(tan(bareinterval(-0.0,0x1.921FB54442D18P+0)), bareinterval(0.0,0x1.D02967C31CDB5P+53)) - - @test isequal_interval(tan(bareinterval(0.0,0x1.921FB54442D19P+0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0.0,0x1.921FB54442D19P+0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0.0,0x1.921FB54442D18P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0.0,0x1.921FB54442D18P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0.0,0x1.921FB54442D19P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0.0,0x1.921FB54442D19P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1P-51,0x1.921FB54442D18P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1P-51,0x1.921FB54442D19P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1P-52,0x1.921FB54442D18P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1P-52,0x1.921FB54442D19P+1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)), bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53)) - - @test isequal_interval(tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4)), bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4)) - - @test isequal_interval(tan(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12)), bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0)) - - @test isequal_interval(tan(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0)), bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0)) - -end - -@testset "minimal_tan_dec_test" begin - - @test isequal_interval(tan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)) - - @test isequal_interval(tan(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), IntervalArithmetic.com)), Interval(bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53), IntervalArithmetic.com)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52), IntervalArithmetic.def)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1), IntervalArithmetic.com)), Interval(bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52), IntervalArithmetic.com)) - - @test isequal_interval(tan(Interval(bareinterval(0.0,0x1.921FB54442D18P+0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), IntervalArithmetic.dac)) - - @test isequal_interval(tan(Interval(bareinterval(-0.0,0x1.921FB54442D18P+0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), IntervalArithmetic.com)) - - @test isequal_interval(tan(Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0.0,0x1.921FB54442D19P+0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0.0,0x1.921FB54442D18P+1), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0.0,0x1.921FB54442D18P+1), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0.0,0x1.921FB54442D19P+1), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1P-51,0x1.921FB54442D18P+1), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1P-51,0x1.921FB54442D19P+1), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1P-52,0x1.921FB54442D18P+1), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1P-52,0x1.921FB54442D19P+1), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53), IntervalArithmetic.com)) - - @test isequal_interval(tan(Interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4), IntervalArithmetic.com)), Interval(bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4), IntervalArithmetic.com)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0), IntervalArithmetic.dac)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12), IntervalArithmetic.def)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan(Interval(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0), IntervalArithmetic.trv)) - -end - -@testset "minimal_asin_test" begin - - @test isequal_interval(asin(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(asin(bareinterval(0.0,Inf)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(asin(bareinterval(-0.0,Inf)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(asin(bareinterval(-Inf,0.0)), bareinterval(-0x1.921FB54442D19P+0,0.0)) - - @test isequal_interval(asin(bareinterval(-Inf,-0.0)), bareinterval(-0x1.921FB54442D19P+0,0.0)) - - @test isequal_interval(asin(entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(asin(bareinterval(-1.0,1.0)), bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(asin(bareinterval(-Inf,-1.0)), bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) - - @test isequal_interval(asin(bareinterval(1.0,Inf)), bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(asin(bareinterval(-1.0,-1.0)), bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) - - @test isequal_interval(asin(bareinterval(1.0,1.0)), bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(asin(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(asin(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(asin(bareinterval(-Inf,-0x1.0000000000001P+0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(asin(bareinterval(0x1.0000000000001P+0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(asin(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(-0x1.9A49276037885P-4,0x1.9A49276037885P-4)) - - @test isequal_interval(asin(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)), bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0)) - - @test isequal_interval(asin(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)), bareinterval(-0x1.921FB50442D19P+0,0x1.921FB50442D19P+0)) - -end - -@testset "minimal_asin_dec_test" begin - - @test isequal_interval(asin(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(asin(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(asin(Interval(bareinterval(-1.0,1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), IntervalArithmetic.com)) - - @test isequal_interval(asin(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(asin(Interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.def)), Interval(bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0), IntervalArithmetic.def)) - -end - -@testset "minimal_acos_test" begin - - @test isequal_interval(acos(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(acos(bareinterval(0.0,Inf)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0.0,Inf)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-Inf,0.0)), bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) - - @test isequal_interval(acos(bareinterval(-Inf,-0.0)), bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) - - @test isequal_interval(acos(entireinterval(BareInterval{Float64})), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(acos(bareinterval(-1.0,1.0)), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(acos(bareinterval(-Inf,-1.0)), bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) - - @test isequal_interval(acos(bareinterval(1.0,Inf)), bareinterval(0.0,0.0)) - - @test isequal_interval(acos(bareinterval(-1.0,-1.0)), bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) - - @test isequal_interval(acos(bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(acos(bareinterval(0.0,0.0)), bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-0.0,-0.0)), bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(acos(bareinterval(-Inf,-0x1.0000000000001P+0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(acos(bareinterval(0x1.0000000000001P+0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(acos(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)), bareinterval(0x1.787B22CE3F59P+0,0x1.ABC447BA464A1P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)), bareinterval(0x1P-26,0x1.E837B2FD13428P+0)) - - @test isequal_interval(acos(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)), bareinterval(0x1P-26,0x1.921FB52442D19P+1)) - -end - -@testset "minimal_acos_dec_test" begin - - @test isequal_interval(acos(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(acos(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(acos(Interval(bareinterval(-1.0,1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.com)) - - @test isequal_interval(acos(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(acos(Interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.def)), Interval(bareinterval(0x1P-26,0x1.E837B2FD13428P+0), IntervalArithmetic.def)) - -end - -@testset "minimal_atan_test" begin - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0,Inf)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0,Inf)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-Inf,0.0)), bareinterval(-0x1.921FB54442D19P+0,0.0)) - - @test isequal_interval(atan(bareinterval(-Inf,-0.0)), bareinterval(-0x1.921FB54442D19P+0,0.0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(1.0,0x1.4C2463567C5ACP+25)), bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0)) - - @test isequal_interval(atan(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)), bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0)) - -end - -@testset "minimal_atan_dec_test" begin - - @test isequal_interval(atan(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(1.0,0x1.4C2463567C5ACP+25), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0), IntervalArithmetic.com)) - -end - -@testset "minimal_atan2_test" begin - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(emptyinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.1, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0, 0.0), bareinterval(0.1, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(0.0, -0.0), bareinterval(0.1, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, -0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-0.0, -0.0), bareinterval(0.1, 1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+1,0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.1)), bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 0.0)), bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.0)), bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 1.0)), bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.1), bareinterval(0.1, 1.0)), bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.1)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 1.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, 0.0), bareinterval(0.1, 1.0)), bareinterval(-0x1.8555A2787982P+0, 0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.1)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 1.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.0), bareinterval(0.1, 1.0)), bareinterval(-0x1.8555A2787982P+0, 0.0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), entireinterval(BareInterval{Float64})), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, -0.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.1)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 1.0)), bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 1.0)), bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-2.0, 1.0), bareinterval(0.1, 1.0)), bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(0.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 1.0)), bareinterval(0.0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(-0.0, 1.0), bareinterval(0.1, 1.0)), bareinterval(0.0, 0x1.789BD2C160054P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(0.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(0.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-0.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 1.0)), bareinterval(0.0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 1.0)), bareinterval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.0, 1.0), bareinterval(0.1, 1.0)), bareinterval(0.0,0x1.789BD2C160054P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0x1.921FB54442D19P+1)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(0.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(0.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-0.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.1)), bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.0)), bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 1.0)), bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(0.0, 1.0)), bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 1.0)), bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0)) - - @test isequal_interval(atan(bareinterval(0.1, 1.0), bareinterval(0.1, 1.0)), bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0)) - -end - -@testset "minimal_atan2_dec_test" begin - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.trv)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.def), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.def), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1,0.0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.trv), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.def), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com)), Interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.trv), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.def), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.8555A2787982P+0, 0.0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.trv), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.8555A2787982P+0, 0.0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.trv)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(bareinterval(0.0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com)), Interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0, 0x1.789BD2C160054P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.trv), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac)), Interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.trv)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0, 0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.trv)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.0, 1.0), IntervalArithmetic.com), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.789BD2C160054P+0), IntervalArithmetic.com)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0, 0x1.921FB54442D19P+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.trv), Interval(bareinterval(-0.0, 0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.trv), Interval(bareinterval(0.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-0.0, -0.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.trv)), Interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1), IntervalArithmetic.trv)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.com), Interval(bareinterval(-2.0, -0.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), IntervalArithmetic.dac)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.def), Interval(bareinterval(-2.0, 1.0), IntervalArithmetic.dac)), Interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.def), Interval(bareinterval(0.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.dac), Interval(bareinterval(-0.0, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), IntervalArithmetic.def)) - - @test isequal_interval(atan(Interval(bareinterval(0.1, 1.0), IntervalArithmetic.dac), Interval(bareinterval(0.1, 1.0), IntervalArithmetic.def)), Interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0), IntervalArithmetic.def)) - -end - -@testset "minimal_sinh_test" begin - - @test isequal_interval(sinh(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sinh(bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(sinh(bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(sinh(bareinterval(-Inf,0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(sinh(bareinterval(-Inf,-0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(sinh(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sinh(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sinh(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)), bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432)) - - @test isequal_interval(sinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)), bareinterval(-Inf,-0x1.53045B4F849DEP+815)) - - @test isequal_interval(sinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)), bareinterval(-0x1.55ECFE1B2B215P+0,0x1.3BF72EA61AF1BP+2)) - -end - -@testset "minimal_sinh_dec_test" begin - - @test isequal_interval(sinh(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(sinh(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(sinh(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)) - - @test isequal_interval(sinh(Interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), IntervalArithmetic.com)), Interval(bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432), IntervalArithmetic.com)) - - @test isequal_interval(sinh(Interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), IntervalArithmetic.com)), Interval(bareinterval(-Inf,-0x1.53045B4F849DEP+815), IntervalArithmetic.dac)) - -end - -@testset "minimal_cosh_test" begin - - @test isequal_interval(cosh(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cosh(bareinterval(0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(cosh(bareinterval(-0.0,Inf)), bareinterval(1.0,Inf)) - - @test isequal_interval(cosh(bareinterval(-Inf,0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(cosh(bareinterval(-Inf,-0.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(cosh(entireinterval(BareInterval{Float64})), bareinterval(1.0,Inf)) - - @test isequal_interval(cosh(bareinterval(0.0,0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(cosh(bareinterval(-0.0,-0.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(cosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)), bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432)) - - @test isequal_interval(cosh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)), bareinterval(0x1.53045B4F849DEP+815,Inf)) - - @test isequal_interval(cosh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)), bareinterval(1.0,0x1.4261D2B7D6181P+2)) - -end - -@testset "minimal_cosh_dec_test" begin - - @test isequal_interval(cosh(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(cosh(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(cosh(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(cosh(Interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), IntervalArithmetic.def)), Interval(bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), IntervalArithmetic.def)) - - @test isequal_interval(cosh(Interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), IntervalArithmetic.com)), Interval(bareinterval(0x1.53045B4F849DEP+815,Inf), IntervalArithmetic.dac)) - -end - -@testset "minimal_tanh_test" begin - - @test isequal_interval(tanh(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(tanh(bareinterval(0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(tanh(bareinterval(-0.0,Inf)), bareinterval(0.0,1.0)) - - @test isequal_interval(tanh(bareinterval(-Inf,0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(tanh(bareinterval(-Inf,-0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(tanh(entireinterval(BareInterval{Float64})), bareinterval(-1.0,1.0)) - - @test isequal_interval(tanh(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(tanh(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(tanh(bareinterval(1.0,0x1.2C903022DD7AAP+8)), bareinterval(0x1.85EFAB514F394P-1,0x1P+0)) - - @test isequal_interval(tanh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)), bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1)) - - @test isequal_interval(tanh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)), bareinterval(-0x1.99DB01FDE2406P-1,0x1.F5CF31E1C8103P-1)) - -end - -@testset "minimal_tanh_dec_test" begin - - @test isequal_interval(tanh(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(tanh(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(tanh(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.dac)) - - @test isequal_interval(tanh(Interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), IntervalArithmetic.com)), Interval(bareinterval(0x1.85EFAB514F394P-1,0x1P+0), IntervalArithmetic.com)) - - @test isequal_interval(tanh(Interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), IntervalArithmetic.trv)), Interval(bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.trv)) - -end - -@testset "minimal_asinh_test" begin - - @test isequal_interval(asinh(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(asinh(bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(asinh(bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(asinh(bareinterval(-Inf,0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(asinh(bareinterval(-Inf,-0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(asinh(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(asinh(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(asinh(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(asinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)), bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2)) - - @test isequal_interval(asinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)), bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2)) - - @test isequal_interval(asinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)), bareinterval(-0x1.E693DF6EDF1E7P-1,0x1.91FDC64DE0E51P+0)) - -end - -@testset "minimal_asinh_dec_test" begin - - @test isequal_interval(asinh(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(asinh(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(asinh(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) - - @test isequal_interval(asinh(Interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), IntervalArithmetic.com)), Interval(bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2), IntervalArithmetic.com)) - - @test isequal_interval(asinh(Interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), IntervalArithmetic.def)), Interval(bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2), IntervalArithmetic.def)) - -end - -@testset "minimal_acosh_test" begin - - @test isequal_interval(acosh(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(acosh(bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(acosh(bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(acosh(bareinterval(1.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(acosh(bareinterval(-Inf,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(acosh(bareinterval(-Inf,0x1.FFFFFFFFFFFFFP-1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(acosh(entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(acosh(bareinterval(1.0,1.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(acosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)), bareinterval(0.0,0x1.9985FB3D532AFP+2)) - - @test isequal_interval(acosh(bareinterval(0x1.199999999999AP+0,0x1.2666666666666P+1)), bareinterval(0x1.C636C1A882F2CP-2,0x1.799C88E79140DP+0)) - - @test isequal_interval(acosh(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29)), bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4)) - -end - -@testset "minimal_acosh_dec_test" begin - - @test isequal_interval(acosh(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(acosh(Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(acosh(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(acosh(Interval(bareinterval(1.0,1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)) - - @test isequal_interval(acosh(Interval(bareinterval(0.9,1.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(acosh(Interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), IntervalArithmetic.dac)) - - @test isequal_interval(acosh(Interval(bareinterval(0.9,0x1.2C903022DD7AAP+8), IntervalArithmetic.com)), Interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), IntervalArithmetic.trv)) - - @test isequal_interval(acosh(Interval(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29), IntervalArithmetic.def)), Interval(bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4), IntervalArithmetic.def)) - -end - -@testset "minimal_atanh_test" begin - - @test isequal_interval(atanh(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(atanh(bareinterval(-0.0,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(atanh(bareinterval(1.0,Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(-Inf,0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(atanh(bareinterval(-Inf,-0.0)), bareinterval(-Inf,0.0)) - - @test isequal_interval(atanh(bareinterval(-Inf,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(-1.0,1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atanh(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(atanh(bareinterval(-1.0,-1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(1.0,1.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1)), bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4)) - - @test isequal_interval(atanh(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4)), bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4)) - -end - -@testset "minimal_atanh_dec_test" begin - - @test isequal_interval(atanh(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(atanh(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def)), Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(atanh(Interval(bareinterval(-1.0,1.0), IntervalArithmetic.com)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atanh(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.com)) - - @test isequal_interval(atanh(Interval(bareinterval(1.0,1.0), IntervalArithmetic.def)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(atanh(Interval(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.com)), Interval(bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4), IntervalArithmetic.com)) - - @test isequal_interval(atanh(Interval(bareinterval(-1.0,0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.com)), Interval(bareinterval(-Inf,0x1.2B708872320E2P+4), IntervalArithmetic.trv)) - - @test isequal_interval(atanh(Interval(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4), IntervalArithmetic.def)), Interval(bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4), IntervalArithmetic.def)) - - @test isequal_interval(atanh(Interval(bareinterval(-0x1.FFB88E9EB6307P-1,1.0), IntervalArithmetic.com)), Interval(bareinterval(-0x1.06A3A97D7979CP+2,Inf), IntervalArithmetic.trv)) - -end - -@testset "minimal_sign_test" begin - - @test isequal_interval(sign(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sign(bareinterval(1.0,2.0)), bareinterval(1.0,1.0)) - - @test isequal_interval(sign(bareinterval(-1.0,2.0)), bareinterval(-1.0,1.0)) - - @test isequal_interval(sign(bareinterval(-1.0,0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(sign(bareinterval(0.0,2.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(sign(bareinterval(-0.0,2.0)), bareinterval(0.0,1.0)) - - @test isequal_interval(sign(bareinterval(-5.0,-2.0)), bareinterval(-1.0,-1.0)) - - @test isequal_interval(sign(bareinterval(0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sign(bareinterval(-0.0,-0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sign(bareinterval(-0.0,0.0)), bareinterval(0.0,0.0)) - - @test isequal_interval(sign(entireinterval(BareInterval{Float64})), bareinterval(-1.0,1.0)) - -end - -@testset "minimal_sign_dec_test" begin - - @test isequal_interval(sign(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,1.0), IntervalArithmetic.com)) - - @test isequal_interval(sign(Interval(bareinterval(-1.0,2.0), IntervalArithmetic.com)), Interval(bareinterval(-1.0,1.0), IntervalArithmetic.def)) - - @test isequal_interval(sign(Interval(bareinterval(-1.0,0.0), IntervalArithmetic.com)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(sign(Interval(bareinterval(0.0,2.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.def)) - - @test isequal_interval(sign(Interval(bareinterval(-0.0,2.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,1.0), IntervalArithmetic.def)) - - @test isequal_interval(sign(Interval(bareinterval(-5.0,-2.0), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,-1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sign(Interval(bareinterval(0.0,0.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,0.0), IntervalArithmetic.dac)) - -end - -@testset "minimal_ceil_test" begin - - @test isequal_interval(ceil(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(ceil(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(ceil(bareinterval(1.1,2.0)), bareinterval(2.0,2.0)) - - @test isequal_interval(ceil(bareinterval(-1.1,2.0)), bareinterval(-1.0,2.0)) - - @test isequal_interval(ceil(bareinterval(-1.1,0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(ceil(bareinterval(-1.1,-0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(ceil(bareinterval(-1.1,-0.4)), bareinterval(-1.0,0.0)) - - @test isequal_interval(ceil(bareinterval(-1.9,2.2)), bareinterval(-1.0,3.0)) - - @test isequal_interval(ceil(bareinterval(-1.0,2.2)), bareinterval(-1.0,3.0)) - - @test isequal_interval(ceil(bareinterval(0.0,2.2)), bareinterval(0.0,3.0)) - - @test isequal_interval(ceil(bareinterval(-0.0,2.2)), bareinterval(0.0,3.0)) - - @test isequal_interval(ceil(bareinterval(-1.5,Inf)), bareinterval(-1.0,Inf)) - - @test isequal_interval(ceil(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)), bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) - - @test isequal_interval(ceil(bareinterval(-Inf,2.2)), bareinterval(-Inf,3.0)) - - @test isequal_interval(ceil(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)), bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) - -end - -@testset "minimal_ceil_dec_test" begin - - @test isequal_interval(ceil(Interval(bareinterval(1.1,2.0), IntervalArithmetic.com)), Interval(bareinterval(2.0,2.0), IntervalArithmetic.dac)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.com)), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.1,0.0), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.1,-0.0), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.1,-0.4), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.9,2.2), IntervalArithmetic.com)), Interval(bareinterval(-1.0,3.0), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.0,2.2), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,3.0), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(0.0,2.2), IntervalArithmetic.trv)), Interval(bareinterval(0.0,3.0), IntervalArithmetic.trv)) - - @test isequal_interval(ceil(Interval(bareinterval(-0.0,2.2), IntervalArithmetic.def)), Interval(bareinterval(0.0,3.0), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(ceil(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), IntervalArithmetic.def)) - - @test isequal_interval(ceil(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)) - - @test isequal_interval(ceil(Interval(bareinterval(-Inf,2.2), IntervalArithmetic.trv)), Interval(bareinterval(-Inf,3.0), IntervalArithmetic.trv)) - - @test isequal_interval(ceil(Interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)), Interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.def)) - -end - -@testset "minimal_floor_test" begin - - @test isequal_interval(floor(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(floor(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(floor(bareinterval(1.1,2.0)), bareinterval(1.0,2.0)) - - @test isequal_interval(floor(bareinterval(-1.1,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(floor(bareinterval(-1.1,0.0)), bareinterval(-2.0,0.0)) - - @test isequal_interval(floor(bareinterval(-1.1,-0.0)), bareinterval(-2.0,0.0)) - - @test isequal_interval(floor(bareinterval(-1.1,-0.4)), bareinterval(-2.0,-1.0)) - - @test isequal_interval(floor(bareinterval(-1.9,2.2)), bareinterval(-2.0,2.0)) - - @test isequal_interval(floor(bareinterval(-1.0,2.2)), bareinterval(-1.0,2.0)) - - @test isequal_interval(floor(bareinterval(0.0,2.2)), bareinterval(0.0,2.0)) - - @test isequal_interval(floor(bareinterval(-0.0,2.2)), bareinterval(0.0,2.0)) - - @test isequal_interval(floor(bareinterval(-1.5,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(floor(bareinterval(-Inf,2.2)), bareinterval(-Inf,2.0)) - -end - -@testset "minimal_floor_dec_test" begin - - @test isequal_interval(floor(Interval(bareinterval(1.1,2.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.def)), Interval(bareinterval(-2.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-1.1,0.0), IntervalArithmetic.dac)), Interval(bareinterval(-2.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-1.2,-1.1), IntervalArithmetic.com)), Interval(bareinterval(-2.0,-2.0), IntervalArithmetic.com)) - - @test isequal_interval(floor(Interval(bareinterval(-1.1,-0.4), IntervalArithmetic.def)), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-1.9,2.2), IntervalArithmetic.com)), Interval(bareinterval(-2.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-1.0,2.2), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(floor(Interval(bareinterval(0.0,2.2), IntervalArithmetic.trv)), Interval(bareinterval(0.0,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(floor(Interval(bareinterval(-0.0,2.2), IntervalArithmetic.com)), Interval(bareinterval(0.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(-2.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(floor(Interval(bareinterval(-Inf,2.2), IntervalArithmetic.trv)), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(floor(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)) - -end - -@testset "minimal_trunc_test" begin - - @test isequal_interval(trunc(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(trunc(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(trunc(bareinterval(1.1,2.1)), bareinterval(1.0,2.0)) - - @test isequal_interval(trunc(bareinterval(-1.1,2.0)), bareinterval(-1.0,2.0)) - - @test isequal_interval(trunc(bareinterval(-1.1,0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(trunc(bareinterval(-1.1,-0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(trunc(bareinterval(-1.1,-0.4)), bareinterval(-1.0,0.0)) - - @test isequal_interval(trunc(bareinterval(-1.9,2.2)), bareinterval(-1.0,2.0)) - - @test isequal_interval(trunc(bareinterval(-1.0,2.2)), bareinterval(-1.0,2.0)) - - @test isequal_interval(trunc(bareinterval(0.0,2.2)), bareinterval(0.0,2.0)) - - @test isequal_interval(trunc(bareinterval(-0.0,2.2)), bareinterval(0.0,2.0)) - - @test isequal_interval(trunc(bareinterval(-1.5,Inf)), bareinterval(-1.0,Inf)) - - @test isequal_interval(trunc(bareinterval(-Inf,2.2)), bareinterval(-Inf,2.0)) - -end - -@testset "minimal_trunc_dec_test" begin - - @test isequal_interval(trunc(Interval(bareinterval(1.1,2.1), IntervalArithmetic.com)), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(1.1,1.9), IntervalArithmetic.com)), Interval(bareinterval(1.0,1.0), IntervalArithmetic.com)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.1,0.0), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.1,-0.0), IntervalArithmetic.def)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.1,-0.4), IntervalArithmetic.com)), Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.9,2.2), IntervalArithmetic.def)), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.0,2.2), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(-1.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(trunc(Interval(bareinterval(-Inf,2.2), IntervalArithmetic.trv)), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(trunc(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)) - - @test isequal_interval(trunc(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), IntervalArithmetic.def)) - -end - -@testset "minimal_round_ties_to_even_test" begin - - @test isequal_interval(round(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(round(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(round(bareinterval(1.1,2.1)), bareinterval(1.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.1,2.0)), bareinterval(-1.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.1,-0.4)), bareinterval(-1.0,0.0)) - - @test isequal_interval(round(bareinterval(-1.1,0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(round(bareinterval(-1.1,-0.0)), bareinterval(-1.0,0.0)) - - @test isequal_interval(round(bareinterval(-1.9,2.2)), bareinterval(-2.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.0,2.2)), bareinterval(-1.0,2.0)) - - @test isequal_interval(round(bareinterval(1.5,2.1)), bareinterval(2.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.5,2.0)), bareinterval(-2.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.1,-0.5)), bareinterval(-1.0,0.0)) - - @test isequal_interval(round(bareinterval(-1.9,2.5)), bareinterval(-2.0,2.0)) - - @test isequal_interval(round(bareinterval(0.0,2.5)), bareinterval(0.0,2.0)) - - @test isequal_interval(round(bareinterval(-0.0,2.5)), bareinterval(0.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.5,2.5)), bareinterval(-2.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.5,Inf)), bareinterval(-2.0,Inf)) - - @test isequal_interval(round(bareinterval(-Inf,2.2)), bareinterval(-Inf,2.0)) - -end - -@testset "minimal_round_ties_to_even_dec_test" begin - - @test isequal_interval(round(Interval(bareinterval(1.1,2.1), IntervalArithmetic.com)), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(round(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.trv)), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(round(Interval(bareinterval(-1.6,-1.5), IntervalArithmetic.com)), Interval(bareinterval(-2.0,-2.0), IntervalArithmetic.dac)) - - @test isequal_interval(round(Interval(bareinterval(-1.6,-1.4), IntervalArithmetic.com)), Interval(bareinterval(-2.0,-1.0), IntervalArithmetic.def)) - - @test isequal_interval(round(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(-2.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(round(Interval(bareinterval(-Inf,2.2), IntervalArithmetic.trv)), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.trv)) - -end - -@testset "minimal_round_ties_to_away_test" begin - - @test isequal_interval(round(emptyinterval(BareInterval{Float64}), RoundNearestTiesAway), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(round(entireinterval(BareInterval{Float64}), RoundNearestTiesAway), entireinterval(BareInterval{Float64})) - - @test isequal_interval(round(bareinterval(1.1,2.1), RoundNearestTiesAway), bareinterval(1.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.1,2.0), RoundNearestTiesAway), bareinterval(-1.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.1,0.0), RoundNearestTiesAway), bareinterval(-1.0,0.0)) - - @test isequal_interval(round(bareinterval(-1.1,-0.0), RoundNearestTiesAway), bareinterval(-1.0,-0.0)) - - @test isequal_interval(round(bareinterval(-1.1,-0.4), RoundNearestTiesAway), bareinterval(-1.0,0.0)) - - @test isequal_interval(round(bareinterval(-1.9,2.2), RoundNearestTiesAway), bareinterval(-2.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.0,2.2), RoundNearestTiesAway), bareinterval(-1.0,2.0)) - - @test isequal_interval(round(bareinterval(0.5,2.1), RoundNearestTiesAway), bareinterval(1.0,2.0)) - - @test isequal_interval(round(bareinterval(-2.5,2.0), RoundNearestTiesAway), bareinterval(-3.0,2.0)) - - @test isequal_interval(round(bareinterval(-1.1,-0.5), RoundNearestTiesAway), bareinterval(-1.0,-1.0)) - - @test isequal_interval(round(bareinterval(-1.9,2.5), RoundNearestTiesAway), bareinterval(-2.0,3.0)) - - @test isequal_interval(round(bareinterval(-1.5,2.5), RoundNearestTiesAway), bareinterval(-2.0,3.0)) - - @test isequal_interval(round(bareinterval(0.0,2.5), RoundNearestTiesAway), bareinterval(0.0,3.0)) - - @test isequal_interval(round(bareinterval(-0.0,2.5), RoundNearestTiesAway), bareinterval(0.0,3.0)) - - @test isequal_interval(round(bareinterval(-1.5,Inf), RoundNearestTiesAway), bareinterval(-2.0,Inf)) - - @test isequal_interval(round(bareinterval(-Inf,2.2), RoundNearestTiesAway), bareinterval(-Inf,2.0)) - -end - -@testset "minimal_round_ties_to_away_dec_test" begin - - @test isequal_interval(round(Interval(bareinterval(1.1,2.1), IntervalArithmetic.com), RoundNearestTiesAway), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(round(Interval(bareinterval(-1.9,2.2), IntervalArithmetic.com), RoundNearestTiesAway), Interval(bareinterval(-2.0,2.0), IntervalArithmetic.def)) - - @test isequal_interval(round(Interval(bareinterval(1.9,2.2), IntervalArithmetic.com), RoundNearestTiesAway), Interval(bareinterval(2.0,2.0), IntervalArithmetic.com)) - - @test isequal_interval(round(Interval(bareinterval(-1.0,2.2), IntervalArithmetic.trv), RoundNearestTiesAway), Interval(bareinterval(-1.0,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(round(Interval(bareinterval(2.5,2.6), IntervalArithmetic.com), RoundNearestTiesAway), Interval(bareinterval(3.0,3.0), IntervalArithmetic.dac)) - - @test isequal_interval(round(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.dac), RoundNearestTiesAway), Interval(bareinterval(-2.0,Inf), IntervalArithmetic.def)) - - @test isequal_interval(round(Interval(bareinterval(-Inf,2.2), IntervalArithmetic.def), RoundNearestTiesAway), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.def)) - -end - -@testset "minimal_abs_test" begin - - @test isequal_interval(abs(emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs(entireinterval(BareInterval{Float64})), bareinterval(0.0,Inf)) - - @test isequal_interval(abs(bareinterval(1.1,2.1)), bareinterval(1.1,2.1)) - - @test isequal_interval(abs(bareinterval(-1.1,2.0)), bareinterval(0.0,2.0)) - - @test isequal_interval(abs(bareinterval(-1.1,0.0)), bareinterval(0.0,1.1)) - - @test isequal_interval(abs(bareinterval(-1.1,-0.0)), bareinterval(0.0,1.1)) - - @test isequal_interval(abs(bareinterval(-1.1,-0.4)), bareinterval(0.4,1.1)) - - @test isequal_interval(abs(bareinterval(-1.9,0.2)), bareinterval(0.0,1.9)) - - @test isequal_interval(abs(bareinterval(0.0,0.2)), bareinterval(0.0,0.2)) - - @test isequal_interval(abs(bareinterval(-0.0,0.2)), bareinterval(0.0,0.2)) - - @test isequal_interval(abs(bareinterval(-1.5,Inf)), bareinterval(0.0,Inf)) - - @test isequal_interval(abs(bareinterval(-Inf,-2.2)), bareinterval(2.2,Inf)) - -end - -@testset "minimal_abs_dec_test" begin - - @test isequal_interval(abs(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.com)), Interval(bareinterval(0.0,2.0), IntervalArithmetic.com)) - - @test isequal_interval(abs(Interval(bareinterval(-1.1,0.0), IntervalArithmetic.dac)), Interval(bareinterval(0.0,1.1), IntervalArithmetic.dac)) - - @test isequal_interval(abs(Interval(bareinterval(-1.1,-0.0), IntervalArithmetic.def)), Interval(bareinterval(0.0,1.1), IntervalArithmetic.def)) - - @test isequal_interval(abs(Interval(bareinterval(-1.1,-0.4), IntervalArithmetic.trv)), Interval(bareinterval(0.4,1.1), IntervalArithmetic.trv)) - - @test isequal_interval(abs(Interval(bareinterval(-1.9,0.2), IntervalArithmetic.dac)), Interval(bareinterval(0.0,1.9), IntervalArithmetic.dac)) - - @test isequal_interval(abs(Interval(bareinterval(0.0,0.2), IntervalArithmetic.def)), Interval(bareinterval(0.0,0.2), IntervalArithmetic.def)) - - @test isequal_interval(abs(Interval(bareinterval(-0.0,0.2), IntervalArithmetic.com)), Interval(bareinterval(0.0,0.2), IntervalArithmetic.com)) - - @test isequal_interval(abs(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.dac)), Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac)) - -end - -@testset "minimal_min_test" begin - - @test isequal_interval(min(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(min(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(min(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(min(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)), bareinterval(-Inf,2.0)) - - @test isequal_interval(min(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})), bareinterval(-Inf,2.0)) - - @test isequal_interval(min(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(min(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(min(bareinterval(1.0,5.0), bareinterval(2.0,4.0)), bareinterval(1.0,4.0)) - - @test isequal_interval(min(bareinterval(0.0,5.0), bareinterval(2.0,4.0)), bareinterval(0.0,4.0)) - - @test isequal_interval(min(bareinterval(-0.0,5.0), bareinterval(2.0,4.0)), bareinterval(0.0,4.0)) - - @test isequal_interval(min(bareinterval(1.0,5.0), bareinterval(2.0,8.0)), bareinterval(1.0,5.0)) - - @test isequal_interval(min(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})), bareinterval(-Inf,5.0)) - - @test isequal_interval(min(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)), bareinterval(-7.0,-5.0)) - - @test isequal_interval(min(bareinterval(-7.0,0.0), bareinterval(2.0,4.0)), bareinterval(-7.0,0.0)) - - @test isequal_interval(min(bareinterval(-7.0,-0.0), bareinterval(2.0,4.0)), bareinterval(-7.0,0.0)) - -end - -@testset "minimal_min_dec_test" begin - - @test isequal_interval(min(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)), Interval(bareinterval(-Inf,2.0), IntervalArithmetic.dac)) - - @test isequal_interval(min(Interval(bareinterval(-7.0,-5.0), IntervalArithmetic.trv), Interval(bareinterval(2.0,4.0), IntervalArithmetic.def)), Interval(bareinterval(-7.0,-5.0), IntervalArithmetic.trv)) - - @test isequal_interval(min(Interval(bareinterval(-7.0,0.0), IntervalArithmetic.dac), Interval(bareinterval(2.0,4.0), IntervalArithmetic.def)), Interval(bareinterval(-7.0,0.0), IntervalArithmetic.def)) - - @test isequal_interval(min(Interval(bareinterval(-7.0,-0.0), IntervalArithmetic.com), Interval(bareinterval(2.0,4.0), IntervalArithmetic.com)), Interval(bareinterval(-7.0,0.0), IntervalArithmetic.com)) - -end - -@testset "minimal_max_test" begin - - @test isequal_interval(max(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(max(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(max(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(max(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)), bareinterval(1.0,Inf)) - - @test isequal_interval(max(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})), bareinterval(1.0,Inf)) - - @test isequal_interval(max(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(max(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(max(bareinterval(1.0,5.0), bareinterval(2.0,4.0)), bareinterval(2.0,5.0)) - - @test isequal_interval(max(bareinterval(1.0,5.0), bareinterval(2.0,8.0)), bareinterval(2.0,8.0)) - - @test isequal_interval(max(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})), bareinterval(-1.0,Inf)) - - @test isequal_interval(max(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)), bareinterval(2.0,4.0)) - - @test isequal_interval(max(bareinterval(-7.0,-5.0), bareinterval(0.0,4.0)), bareinterval(0.0,4.0)) - - @test isequal_interval(max(bareinterval(-7.0,-5.0), bareinterval(-0.0,4.0)), bareinterval(0.0,4.0)) - - @test isequal_interval(max(bareinterval(-7.0,-5.0), bareinterval(-2.0,0.0)), bareinterval(-2.0,0.0)) - - @test isequal_interval(max(bareinterval(-7.0,-5.0), bareinterval(-2.0,-0.0)), bareinterval(-2.0,0.0)) - -end - -@testset "minimal_max_dec_test" begin - - @test isequal_interval(max(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)), Interval(bareinterval(1.0,Inf), IntervalArithmetic.dac)) - - @test isequal_interval(max(Interval(bareinterval(-7.0,-5.0), IntervalArithmetic.trv), Interval(bareinterval(2.0,4.0), IntervalArithmetic.def)), Interval(bareinterval(2.0,4.0), IntervalArithmetic.trv)) - - @test isequal_interval(max(Interval(bareinterval(-7.0,5.0), IntervalArithmetic.dac), Interval(bareinterval(2.0,4.0), IntervalArithmetic.def)), Interval(bareinterval(2.0,5.0), IntervalArithmetic.def)) - - @test isequal_interval(max(Interval(bareinterval(3.0,3.5), IntervalArithmetic.com), Interval(bareinterval(2.0,4.0), IntervalArithmetic.com)), Interval(bareinterval(3.0,4.0), IntervalArithmetic.com)) - -end diff --git a/test/test_ITF1788/libieeep1788_mul_rev.jl b/test/test_ITF1788/libieeep1788_mul_rev.jl deleted file mode 100644 index 059b4f6a9..000000000 --- a/test/test_ITF1788/libieeep1788_mul_rev.jl +++ /dev/null @@ -1,701 +0,0 @@ -@testset "minimal_mulRevToPair_test" begin - - @test isequal_interval(mul_rev_to_pair(emptyinterval(BareInterval{Float64}), bareinterval(1.0, 2.0))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(emptyinterval(BareInterval{Float64}), bareinterval(1.0, 2.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(1.0, 2.0), emptyinterval(BareInterval{Float64}))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(1.0, 2.0), emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-2.1, -0.4))[1], bareinterval(0x1.999999999999AP-3, 0x1.5P+4)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-2.1, -0.4))[1], bareinterval(0x1.999999999999AP-3, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-2.1, -0.4))[1], bareinterval(-Inf, -0x1.745D1745D1745P-2)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-2.1, -0.4))[2], bareinterval(0x1.999999999999AP-3, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-2.1, -0.4))[1], bareinterval(-Inf, -0x1.745D1745D1745P-2)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-2.1, -0.4))[1], bareinterval(-0x1.A400000000001P+7, -0x1.745D1745D1745P-2)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-2.1, -0.4))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-2.1, -0.4))[1], bareinterval(0.0, 0x1.5P+4)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-2.1, -0.4))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-2.1, -0.4))[1], bareinterval(-Inf, -0x1.745D1745D1745P-2)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-2.1, -0.4))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-2.1, -0.4))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-2.1, -0.4))[2], bareinterval(0x1.999999999999AP-3, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-2.1, -0.4))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-2.1, -0.4))[1], bareinterval(-0x1.A400000000001P+7, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-2.1, -0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-2.1, -0.4))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-2.1, -0.4))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-2.1, 0.0))[1], bareinterval(0.0, 0x1.5P+4)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-2.1, 0.0))[1], bareinterval(-0x1.A400000000001P+7, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-2.1, 0.0))[1], bareinterval(0.0, 0x1.5P+4)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-2.1, 0.0))[1], bareinterval(-0x1.A400000000001P+7, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-2.1, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-2.1, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-2.1, 0.12))[1], bareinterval(-0x1.3333333333333P+0, 0x1.5P+4)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-2.1, 0.12))[1], bareinterval(-0x1.A400000000001P+7 , 0x1.8P+3)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-2.1, 0.12))[1], bareinterval(-0x1.3333333333333P+0, 0x1.5P+4)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-2.1, 0.12))[1], bareinterval(-0x1.A400000000001P+7 , 0x1.8P+3)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-2.1, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-2.1, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.12))[1], bareinterval(-0x1.3333333333333P+0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.0, 0.12))[1], bareinterval(0.0, 0x1.8P+3)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.0, 0.12))[1], bareinterval(-0x1.3333333333333P+0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.0, 0.12))[1], bareinterval(0.0, 0x1.8P+3)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.12))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.01, 0.12))[1], bareinterval(-0x1.3333333333333P+0, -0x1.47AE147AE147BP-8)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.01, 0.12))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-8)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.01, 0.12))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-8)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.01, 0.12))[2], bareinterval(0x1.29E4129E4129DP-7, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.01, 0.12))[1], bareinterval(0x1.29E4129E4129DP-7, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.01, 0.12))[1], bareinterval(0x1.29E4129E4129DP-7, 0x1.8P+3)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.01, 0.12))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.01, 0.12))[1], bareinterval(-0x1.3333333333333P+0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.01, 0.12))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.01, 0.12))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.01, 0.12))[2], bareinterval(0x1.29E4129E4129DP-7, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.01, 0.12))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-8)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.01, 0.12))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.01, 0.12))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.01, 0.12))[1], bareinterval(0.0, 0x1.8P+3)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.01, 0.12))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.01, 0.12))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.01, 0.12))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.0))[1], bareinterval(0.0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.0, 0.0))[1], bareinterval(0.0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.0, 0.0))[1], bareinterval(0.0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.0, 0.0))[1], bareinterval(0.0, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-Inf, -0.1))[1], bareinterval(0x1.999999999999AP-5, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-Inf, -0.1))[1], bareinterval(0x1.999999999999AP-5 , Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf , -0x1.745D1745D1745P-4)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-Inf, -0.1))[2], bareinterval(0x1.999999999999AP-5 , Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, -0x1.745D1745D1745P-4)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, -0x1.745D1745D1745P-4)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-Inf, -0.1))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-Inf, -0.1))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-Inf, -0.1))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, -0x1.745D1745D1745P-4)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-Inf, -0.1))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-Inf, -0.1))[2], bareinterval(0x1.999999999999AP-5 , Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-Inf, -0.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -0.1))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -0.1))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-Inf, 0.0))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-Inf, 0.0))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-Inf, 0.0))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-Inf, 0.0))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-Inf, 0.3))[1], bareinterval(-0x1.8P+1, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-Inf, 0.3))[1], bareinterval(-Inf, 0x1.EP+4)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-Inf, 0.3))[1], bareinterval(-0x1.8P+1, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-Inf, 0.3))[1], bareinterval(-Inf, 0x1.EP+4)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.3))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.3))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-0.21, Inf))[1], bareinterval(-Inf , 0x1.0CCCCCCCCCCCDP+1)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-0.21, Inf))[1], bareinterval(-0x1.5P+4, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-0.21, Inf))[1], bareinterval(-Inf, 0x1.0CCCCCCCCCCCDP+1)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-0.21, Inf))[1], bareinterval(-0x1.5P+4, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-0.21, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(-0.21, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.0, Inf))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.0, Inf))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.0, Inf))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.0, Inf))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.04, Inf))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-6)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.04, Inf))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-6)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.04, Inf))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-6)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), bareinterval(0.04, Inf))[2], bareinterval(0x1.29E4129E4129DP-5, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.04, Inf))[1], bareinterval(0x1.29E4129E4129DP-5, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.04, Inf))[1], bareinterval(0x1.29E4129E4129DP-5, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.04, Inf))[1], emptyinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.04, Inf))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.04, Inf))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.04, Inf))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), bareinterval(0.04, Inf))[2], bareinterval(0x1.29E4129E4129DP-5, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.04, Inf))[1], bareinterval(-Inf, -0x1.47AE147AE147BP-6)) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), bareinterval(0.04, Inf))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.04, Inf))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.04, Inf))[1], bareinterval(0.0, Inf)) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), bareinterval(0.04, Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.04, Inf))[1], bareinterval(-Inf, 0.0)) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), bareinterval(0.04, Inf))[2], bareinterval(0.0, Inf)) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, -0.1), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 0.0), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, 1.1), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 1.1), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, 1.1), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, -0.1), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 0.0), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-Inf, 1.1), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(-2.0, Inf), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.0, Inf), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(bareinterval(0.01, Inf), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}))[1], entireinterval(BareInterval{Float64})) && isequal_interval(mul_rev_to_pair(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - -end - -@testset "minimal_mulRevToPair_dec_test" begin - - @test isnai(mul_rev_to_pair(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def))[1]) && isnai(mul_rev_to_pair(nai(), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def))[2]) - - @test isnai(mul_rev_to_pair(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), nai())[1]) && isnai(mul_rev_to_pair(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), nai())[2]) - - @test isnai(mul_rev_to_pair(nai(), nai())[1]) && isnai(mul_rev_to_pair(nai(), nai())[2]) - - @test isequal_interval(mul_rev_to_pair(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0, 2.0), IntervalArithmetic.def))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0, 2.0), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(1.0, 2.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(1.0, 2.0), IntervalArithmetic.com), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[1], Interval(bareinterval(0x1.999999999999AP-3, 0x1.5P+4), IntervalArithmetic.com)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[1], Interval(bareinterval(0x1.999999999999AP-3, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.745D1745D1745P-2), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.999999999999AP-3, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.trv), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[1], Interval(bareinterval(-Inf, -0x1.745D1745D1745P-2), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.trv), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.com), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[1], Interval(bareinterval(-0x1.A400000000001P+7, -0x1.745D1745D1745P-2), IntervalArithmetic.com)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.com), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, 0x1.5P+4), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.trv), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[1], Interval(bareinterval(-Inf, -0x1.745D1745D1745P-2), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.trv), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.999999999999AP-3, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[1], Interval(bareinterval(-0x1.A400000000001P+7, 0.0), IntervalArithmetic.def)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.1, -0.4), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0x1.5P+4), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(-0x1.A400000000001P+7, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0x1.5P+4), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(-0x1.A400000000001P+7, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-2.1, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.3333333333333P+0, 0x1.5P+4), IntervalArithmetic.def)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.A400000000001P+7 , 0x1.8P+3), IntervalArithmetic.def)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.3333333333333P+0, 0x1.5P+4), IntervalArithmetic.def)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.A400000000001P+7 , 0x1.8P+3), IntervalArithmetic.def)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(bareinterval(-2.1, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(bareinterval(-0x1.3333333333333P+0, 0.0), IntervalArithmetic.com)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0x1.8P+3), IntervalArithmetic.com)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(bareinterval(-0x1.3333333333333P+0, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0x1.8P+3), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.12), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.3333333333333P+0, -0x1.47AE147AE147BP-8), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-8), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-8), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.29E4129E4129DP-7, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(0x1.29E4129E4129DP-7, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(0x1.29E4129E4129DP-7, 0x1.8P+3), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.3333333333333P+0, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.29E4129E4129DP-7, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-8), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, 0x1.8P+3), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.01, 0.12), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, 0.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(0x1.999999999999AP-5, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(0x1.999999999999AP-5 , Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf , -0x1.745D1745D1745P-4), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.999999999999AP-5 , Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.745D1745D1745P-4), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.745D1745D1745P-4), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.745D1745D1745P-4), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.999999999999AP-5 , Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.8P+1, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0x1.EP+4), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.8P+1, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0x1.EP+4), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-Inf, 0.3), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf , 0x1.0CCCCCCCCCCCDP+1), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.5P+4, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0x1.0CCCCCCCCCCCDP+1), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-0x1.5P+4, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(-0.21, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-6), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-6), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-6), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.29E4129E4129DP-5, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(0x1.29E4129E4129DP-5, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(0x1.29E4129E4129DP-5, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(bareinterval(0x1.29E4129E4129DP-5, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, -0x1.47AE147AE147BP-6), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[1], Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(bareinterval(0.04, Inf), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0, Inf), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, -0.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, -0.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 0.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-Inf, 1.1), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(-2.0, Inf), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.0, Inf), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) && isequal_interval(mul_rev_to_pair(Interval(bareinterval(0.01, Inf), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[1], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) && isequal_interval(mul_rev_to_pair(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end diff --git a/test/test_ITF1788/libieeep1788_num.jl b/test/test_ITF1788/libieeep1788_num.jl deleted file mode 100644 index 13bfc2a9d..000000000 --- a/test/test_ITF1788/libieeep1788_num.jl +++ /dev/null @@ -1,431 +0,0 @@ -@testset "minimal_inf_test" begin - - @test inf(emptyinterval(BareInterval{Float64})) === +Inf - - @test inf(interval(-Inf,+Inf)) === -Inf - - @test inf(interval(1.0,2.0)) === 1.0 - - @test inf(interval(-3.0,-2.0)) === -3.0 - - @test inf(interval(-Inf,2.0)) === -Inf - - @test inf(interval(-Inf,0.0)) === -Inf - - @test inf(interval(-Inf,-0.0)) === -Inf - - @test inf(interval(-2.0,Inf)) === -2.0 - - @test inf(interval(0.0,Inf)) === -0.0 - - @test inf(interval(-0.0,Inf)) === -0.0 - - @test inf(interval(-0.0,0.0)) === -0.0 - - @test inf(interval(0.0,-0.0)) === -0.0 - - @test inf(interval(0.0,0.0)) === -0.0 - - @test inf(interval(-0.0,-0.0)) === -0.0 - -end - -@testset "minimal_inf_dec_test" begin - - @test isnan(inf(nai())) - - @test inf(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) === +Inf - - @test inf(Interval(interval(-Inf,+Inf), IntervalArithmetic.def)) === -Inf - - @test inf(Interval(interval(1.0,2.0), IntervalArithmetic.com)) === 1.0 - - @test inf(Interval(interval(-3.0,-2.0), IntervalArithmetic.trv)) === -3.0 - - @test inf(Interval(interval(-Inf,2.0), IntervalArithmetic.dac)) === -Inf - - @test inf(Interval(interval(-Inf,0.0), IntervalArithmetic.def)) === -Inf - - @test inf(Interval(interval(-Inf,-0.0), IntervalArithmetic.trv)) === -Inf - - @test inf(Interval(interval(-2.0,Inf), IntervalArithmetic.trv)) === -2.0 - - @test inf(Interval(interval(0.0,Inf), IntervalArithmetic.def)) === -0.0 - - @test inf(Interval(interval(-0.0,Inf), IntervalArithmetic.trv)) === -0.0 - - @test inf(Interval(interval(-0.0,0.0), IntervalArithmetic.dac)) === -0.0 - - @test inf(Interval(interval(0.0,-0.0), IntervalArithmetic.trv)) === -0.0 - - @test inf(Interval(interval(0.0,0.0), IntervalArithmetic.trv)) === -0.0 - - @test inf(Interval(interval(-0.0,-0.0), IntervalArithmetic.trv)) === -0.0 - -end - -@testset "minimal_sup_test" begin - - @test sup(emptyinterval(BareInterval{Float64})) === -Inf - - @test sup(interval(-Inf,+Inf)) === +Inf - - @test sup(interval(1.0,2.0)) === 2.0 - - @test sup(interval(-3.0,-2.0)) === -2.0 - - @test sup(interval(-Inf,2.0)) === 2.0 - - @test sup(interval(-Inf,0.0)) === 0.0 - - @test sup(interval(-Inf,-0.0)) === 0.0 - - @test sup(interval(-2.0,Inf)) === Inf - - @test sup(interval(0.0,Inf)) === Inf - - @test sup(interval(-0.0,Inf)) === Inf - - @test sup(interval(-0.0,0.0)) === 0.0 - - @test sup(interval(0.0,-0.0)) === 0.0 - - @test sup(interval(0.0,0.0)) === 0.0 - - @test sup(interval(-0.0,-0.0)) === 0.0 - -end - -@testset "minimal_sup_dec_test" begin - - @test isnan(sup(nai())) - - @test sup(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) === -Inf - - @test sup(Interval(interval(-Inf,+Inf), IntervalArithmetic.def)) === +Inf - - @test sup(Interval(interval(1.0,2.0), IntervalArithmetic.com)) === 2.0 - - @test sup(Interval(interval(-3.0,-2.0), IntervalArithmetic.trv)) === -2.0 - - @test sup(Interval(interval(-Inf,2.0), IntervalArithmetic.dac)) === 2.0 - - @test sup(Interval(interval(-Inf,0.0), IntervalArithmetic.def)) === 0.0 - - @test sup(Interval(interval(-Inf,-0.0), IntervalArithmetic.trv)) === 0.0 - - @test sup(Interval(interval(-2.0,Inf), IntervalArithmetic.trv)) === Inf - - @test sup(Interval(interval(0.0,Inf), IntervalArithmetic.def)) === Inf - - @test sup(Interval(interval(-0.0,Inf), IntervalArithmetic.trv)) === Inf - - @test sup(Interval(interval(-0.0,0.0), IntervalArithmetic.dac)) === +0.0 - - @test sup(Interval(interval(0.0,-0.0), IntervalArithmetic.trv)) === +0.0 - - @test sup(Interval(interval(0.0,0.0), IntervalArithmetic.trv)) === +0.0 - - @test sup(Interval(interval(-0.0,-0.0), IntervalArithmetic.trv)) === +0.0 - -end - -@testset "minimal_mid_test" begin - - @test isnan(mid(emptyinterval(BareInterval{Float64}))) - - @test mid(interval(-Inf,+Inf)) === 0.0 - - @test mid(interval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023)) === 0.0 - - @test mid(interval(0.0,2.0)) === 1.0 - - @test mid(interval(2.0,2.0)) === 2.0 - - @test mid(interval(-2.0,2.0)) === 0.0 - - @test mid(interval(0.0,Inf)) === 0x1.FFFFFFFFFFFFFp1023 - - @test mid(interval(-Inf,1.2)) === -0x1.FFFFFFFFFFFFFp1023 - - @test mid(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0.0 - - @test mid(interval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0.0 - - @test mid(interval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023)) === 0x1.7FFFFFFFFFFFFP+1023 - - @test mid(interval(0x0.0000000000001P-1022,0x0.0000000000003P-1022)) === 0x0.0000000000002P-1022 - -end - -@testset "minimal_mid_dec_test" begin - - @test isnan(mid(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))) - - @test isnan(mid(nai())) - - @test mid(Interval(interval(-Inf,+Inf), IntervalArithmetic.def)) === 0.0 - - @test mid(Interval(interval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.trv)) === 0.0 - - @test mid(Interval(interval(0.0,2.0), IntervalArithmetic.com)) === 1.0 - - @test mid(Interval(interval(2.0,2.0), IntervalArithmetic.dac)) === 2.0 - - @test mid(Interval(interval(-2.0,2.0), IntervalArithmetic.trv)) === 0.0 - - @test mid(Interval(interval(0.0,Inf), IntervalArithmetic.trv)) === 0x1.FFFFFFFFFFFFFp1023 - - @test mid(Interval(interval(-Inf,1.2), IntervalArithmetic.trv)) === -0x1.FFFFFFFFFFFFFp1023 - - @test mid(Interval(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), IntervalArithmetic.trv)) === 0.0 - - @test mid(Interval(interval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), IntervalArithmetic.trv)) === 0.0 - - @test mid(Interval(interval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), IntervalArithmetic.trv)) === 0x1.7FFFFFFFFFFFFP+1023 - - @test mid(Interval(interval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), IntervalArithmetic.trv)) === 0x0.0000000000002P-1022 - -end - -@testset "minimal_rad_test" begin - - @test radius(interval(0.0,2.0)) === 1.0 - - @test radius(interval(2.0,2.0)) === 0.0 - - @test isnan(radius(emptyinterval(BareInterval{Float64}))) - - @test radius(interval(-Inf,+Inf)) === Inf - - @test radius(interval(0.0,Inf)) === Inf - - @test radius(interval(-Inf, 1.2)) === Inf - - @test radius(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0x0.0000000000002P-1022 - - @test radius(interval(0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0x0.0000000000001P-1022 - - @test radius(interval(0x1P+0,0x1.0000000000003P+0)) === 0x1P-51 - -end - -@testset "minimal_rad_dec_test" begin - - @test radius(Interval(interval(0.0,2.0), IntervalArithmetic.trv)) === 1.0 - - @test radius(Interval(interval(2.0,2.0), IntervalArithmetic.com)) === 0.0 - - @test isnan(radius(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))) - - @test isnan(radius(nai())) - - @test radius(Interval(interval(-Inf,+Inf), IntervalArithmetic.trv)) === Inf - - @test radius(Interval(interval(0.0,Inf), IntervalArithmetic.def)) === Inf - - @test radius(Interval(interval(-Inf, 1.2), IntervalArithmetic.trv)) === Inf - - @test radius(Interval(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), IntervalArithmetic.trv)) === 0x0.0000000000002P-1022 - - @test radius(Interval(interval(0x0.0000000000001P-1022,0x0.0000000000002P-1022), IntervalArithmetic.trv)) === 0x0.0000000000001P-1022 - - @test radius(Interval(interval(0x1P+0,0x1.0000000000003P+0), IntervalArithmetic.trv)) === 0x1P-51 - -end - -@testset "minimal_mid_rad_test" begin - - @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) - - @test midradius(interval(-Inf,Inf))[1] === 0.0 && midradius(interval(-Inf,Inf))[2] === Inf - - @test midradius(interval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[1] === 0.0 && midradius(interval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.FFFFFFFFFFFFFP+1023 - - @test midradius(interval(0.0,2.0))[1] === 1.0 && midradius(interval(0.0,2.0))[2] === 1.0 - - @test midradius(interval(2.0,2.0))[1] === 2.0 && midradius(interval(2.0,2.0))[2] === 0.0 - - @test midradius(interval(-2.0,2.0))[1] === 0.0 && midradius(interval(-2.0,2.0))[2] === 2.0 - - @test midradius(interval(0.0,Inf))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(0.0,Inf))[2] === Inf - - @test midradius(interval(-Inf, 1.2))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(-Inf, 1.2))[2] === Inf - - @test midradius(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[1] === 0.0 && midradius(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[2] === 0x0.0000000000002P-1022 - - @test midradius(interval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[1] === 0.0 && midradius(interval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[2] === 0x0.0000000000002P-1022 - - @test midradius(interval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(interval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.0p+1022 - - @test midradius(interval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[1] === 0x0.0000000000002P-1022 && midradius(interval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[2] === 0x0.0000000000001P-1022 - -end - -@testset "minimal_mid_rad_dec_test" begin - - @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) - - @test isnan(midradius(nai())[1]) && isnan(midradius(nai())[2]) - - @test midradius(Interval(interval(-Inf,Inf), IntervalArithmetic.def))[1] === 0.0 && midradius(Interval(interval(-Inf,Inf), IntervalArithmetic.def))[2] === Inf - - @test midradius(Interval(interval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), IntervalArithmetic.trv))[1] === 0.0 && midradius(Interval(interval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), IntervalArithmetic.trv))[2] === 0x1.FFFFFFFFFFFFFP+1023 - - @test midradius(Interval(interval(0.0,2.0), IntervalArithmetic.com))[1] === 1.0 && midradius(Interval(interval(0.0,2.0), IntervalArithmetic.com))[2] === 1.0 - - @test midradius(Interval(interval(2.0,2.0), IntervalArithmetic.dac))[1] === 2.0 && midradius(Interval(interval(2.0,2.0), IntervalArithmetic.dac))[2] === 0.0 - - @test midradius(Interval(interval(-2.0,2.0), IntervalArithmetic.trv))[1] === 0.0 && midradius(Interval(interval(-2.0,2.0), IntervalArithmetic.trv))[2] === 2.0 - - @test midradius(Interval(interval(0.0,Inf), IntervalArithmetic.trv))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(Interval(interval(0.0,Inf), IntervalArithmetic.trv))[2] === Inf - - @test midradius(Interval(interval(-Inf, 1.2), IntervalArithmetic.trv))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(Interval(interval(-Inf, 1.2), IntervalArithmetic.trv))[2] === Inf - - @test midradius(Interval(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), IntervalArithmetic.trv))[1] === 0.0 && midradius(Interval(interval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), IntervalArithmetic.trv))[2] === 0x0.0000000000002P-1022 - - @test midradius(Interval(interval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), IntervalArithmetic.trv))[1] === 0.0 && midradius(Interval(interval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), IntervalArithmetic.trv))[2] === 0x0.0000000000002P-1022 - - @test midradius(Interval(interval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), IntervalArithmetic.trv))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(Interval(interval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), IntervalArithmetic.trv))[2] === 0x1.0p+1022 - - @test midradius(Interval(interval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), IntervalArithmetic.trv))[1] === 0x0.0000000000002P-1022 && midradius(Interval(interval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), IntervalArithmetic.trv))[2] === 0x0.0000000000001P-1022 - -end - -@testset "minimal_wid_test" begin - - @test diam(interval(2.0,2.0)) === 0.0 - - @test diam(interval(1.0,2.0)) === 1.0 - - @test diam(interval(1.0,Inf)) === Inf - - @test diam(interval(-Inf,2.0)) === Inf - - @test diam(interval(-Inf,+Inf)) === Inf - - @test isnan(diam(emptyinterval(BareInterval{Float64}))) - - @test diam(interval(0x1P+0,0x1.0000000000001P+0)) === 0x1P-52 - - @test diam(interval(0x1P-1022,0x1.0000000000001P-1022)) === 0x0.0000000000001P-1022 - -end - -@testset "minimal_wid_dec_test" begin - - @test diam(Interval(interval(2.0,2.0), IntervalArithmetic.com)) === 0.0 - - @test diam(Interval(interval(1.0,2.0), IntervalArithmetic.trv)) === 1.0 - - @test diam(Interval(interval(1.0,Inf), IntervalArithmetic.trv)) === Inf - - @test diam(Interval(interval(-Inf,2.0), IntervalArithmetic.def)) === Inf - - @test diam(Interval(interval(-Inf,+Inf), IntervalArithmetic.trv)) === Inf - - @test isnan(diam(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))) - - @test isnan(diam(nai())) - - @test diam(Interval(interval(0x1P+0,0x1.0000000000001P+0), IntervalArithmetic.trv)) === 0x1P-52 - - @test diam(Interval(interval(0x1P-1022,0x1.0000000000001P-1022), IntervalArithmetic.trv)) === 0x0.0000000000001P-1022 - -end - -@testset "minimal_mag_test" begin - - @test mag(interval(1.0,2.0)) === 2.0 - - @test mag(interval(-4.0,2.0)) === 4.0 - - @test mag(interval(-Inf,2.0)) === Inf - - @test mag(interval(1.0,Inf)) === Inf - - @test mag(interval(-Inf,+Inf)) === Inf - - @test isnan(mag(emptyinterval(BareInterval{Float64}))) - - @test mag(interval(-0.0,0.0)) === 0.0 - - @test mag(interval(-0.0,-0.0)) === 0.0 - -end - -@testset "minimal_mag_dec_test" begin - - @test mag(Interval(interval(1.0,2.0), IntervalArithmetic.com)) === 2.0 - - @test mag(Interval(interval(-4.0,2.0), IntervalArithmetic.trv)) === 4.0 - - @test mag(Interval(interval(-Inf,2.0), IntervalArithmetic.trv)) === Inf - - @test mag(Interval(interval(1.0,Inf), IntervalArithmetic.def)) === Inf - - @test mag(Interval(interval(-Inf,+Inf), IntervalArithmetic.trv)) === Inf - - @test isnan(mag(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))) - - @test isnan(mag(nai())) - - @test mag(Interval(interval(-0.0,0.0), IntervalArithmetic.trv)) === 0.0 - - @test mag(Interval(interval(-0.0,-0.0), IntervalArithmetic.trv)) === 0.0 - -end - -@testset "minimal_mig_test" begin - - @test mig(interval(1.0,2.0)) === 1.0 - - @test mig(interval(-4.0,2.0)) === 0.0 - - @test mig(interval(-4.0,-2.0)) === 2.0 - - @test mig(interval(-Inf,2.0)) === 0.0 - - @test mig(interval(-Inf,-2.0)) === 2.0 - - @test mig(interval(-1.0,Inf)) === 0.0 - - @test mig(interval(1.0,Inf)) === 1.0 - - @test mig(interval(-Inf,+Inf)) === 0.0 - - @test isnan(mig(emptyinterval(BareInterval{Float64}))) - - @test mig(interval(-0.0,0.0)) === 0.0 - - @test mig(interval(-0.0,-0.0)) === 0.0 - -end - -@testset "minimal_mig_dec_test" begin - - @test mig(Interval(interval(1.0,2.0), IntervalArithmetic.com)) === 1.0 - - @test mig(Interval(interval(-4.0,2.0), IntervalArithmetic.trv)) === 0.0 - - @test mig(Interval(interval(-4.0,-2.0), IntervalArithmetic.trv)) === 2.0 - - @test mig(Interval(interval(-Inf,2.0), IntervalArithmetic.def)) === 0.0 - - @test mig(Interval(interval(-Inf,-2.0), IntervalArithmetic.trv)) === 2.0 - - @test mig(Interval(interval(-1.0,Inf), IntervalArithmetic.trv)) === 0.0 - - @test mig(Interval(interval(1.0,Inf), IntervalArithmetic.trv)) === 1.0 - - @test mig(Interval(interval(-Inf,+Inf), IntervalArithmetic.trv)) === 0.0 - - @test isnan(mig(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))) - - @test isnan(mig(nai())) - - @test mig(Interval(interval(-0.0,0.0), IntervalArithmetic.trv)) === 0.0 - - @test mig(Interval(interval(-0.0,-0.0), IntervalArithmetic.trv)) === 0.0 - -end diff --git a/test/test_ITF1788/libieeep1788_overlap.jl b/test/test_ITF1788/libieeep1788_overlap.jl deleted file mode 100644 index 87755e83f..000000000 --- a/test/test_ITF1788/libieeep1788_overlap.jl +++ /dev/null @@ -1,84 +0,0 @@ -@testset "minimal_overlap_test" begin - @test overlap(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === Overlap.both_empty - @test overlap(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === Overlap.first_empty - @test overlap(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === Overlap.second_empty - @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === Overlap.before - @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === Overlap.before - @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,4.0)) === Overlap.before - @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === Overlap.before - @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,3.0)) === Overlap.before - @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,3.0)) === Overlap.before - @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,Inf)) === Overlap.before - @test overlap(bareinterval(-Inf,2.0), bareinterval(2.0,3.0)) === Overlap.meets - @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,3.0)) === Overlap.meets - @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,Inf)) === Overlap.meets - @test overlap(bareinterval(1.0,2.0), bareinterval(1.5,2.5)) === Overlap.overlaps - @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === Overlap.starts - @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,3.0)) === Overlap.starts - @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,3.0)) === Overlap.starts - @test overlap(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === Overlap.contained_by - @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,3.0)) === Overlap.contained_by - @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,3.0)) === Overlap.contained_by - @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,3.0)) === Overlap.contained_by - @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,Inf)) === Overlap.contained_by - @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,2.0)) === Overlap.finishes - @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,2.0)) === Overlap.finishes - @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,2.0)) === Overlap.finishes - @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === Overlap.equals - @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,1.0)) === Overlap.equals - @test overlap(bareinterval(-Inf,1.0), bareinterval(-Inf,1.0)) === Overlap.equals - @test overlap(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === Overlap.equals - @test overlap(bareinterval(3.0,4.0), bareinterval(2.0,2.0)) === Overlap.after - @test overlap(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === Overlap.after - @test overlap(bareinterval(3.0,3.0), bareinterval(1.0,2.0)) === Overlap.after - @test overlap(bareinterval(3.0,3.0), bareinterval(2.0,2.0)) === Overlap.after - @test overlap(bareinterval(3.0,Inf), bareinterval(2.0,2.0)) === Overlap.after - @test overlap(bareinterval(2.0,3.0), bareinterval(1.0,2.0)) === Overlap.met_by - @test overlap(bareinterval(2.0,3.0), bareinterval(-Inf,2.0)) === Overlap.met_by - @test overlap(bareinterval(1.5,2.5), bareinterval(1.0,2.0)) === Overlap.overlapped_by - @test overlap(bareinterval(1.5,2.5), bareinterval(-Inf,2.0)) === Overlap.overlapped_by - @test overlap(bareinterval(1.0,Inf), bareinterval(1.0,2.0)) === Overlap.started_by - @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,2.0)) === Overlap.started_by - @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,1.0)) === Overlap.started_by - @test overlap(bareinterval(-Inf,3.0), bareinterval(1.0,2.0)) === Overlap.contains - @test overlap(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === Overlap.contains - @test overlap(bareinterval(0.0,3.0), bareinterval(1.0,2.0)) === Overlap.contains - @test overlap(bareinterval(0.0,3.0), bareinterval(2.0,2.0)) === Overlap.contains - @test overlap(bareinterval(-Inf,2.0), bareinterval(1.0,2.0)) === Overlap.finished_by - @test overlap(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === Overlap.finished_by - @test overlap(bareinterval(0.0,2.0), bareinterval(2.0,2.0)) === Overlap.finished_by - -end - -@testset "minimal_overlap_dec_test" begin - @test overlap(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) === Overlap.both_empty - @test overlap(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)) === Overlap.first_empty - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) === Overlap.second_empty - @test overlap(Interval(bareinterval(2.0,2.0), IntervalArithmetic.def), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)) === Overlap.before - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.dac), Interval(bareinterval(3.0,4.0), IntervalArithmetic.com)) === Overlap.before - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.com), Interval(bareinterval(3.0,3.0), IntervalArithmetic.trv)) === Overlap.before - @test overlap(Interval(bareinterval(2.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(3.0,3.0), IntervalArithmetic.def)) === Overlap.before - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(2.0,3.0), IntervalArithmetic.def)) === Overlap.meets - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.dac), Interval(bareinterval(1.5,2.5), IntervalArithmetic.def)) === Overlap.overlaps - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(1.0,3.0), IntervalArithmetic.com)) === Overlap.starts - @test overlap(Interval(bareinterval(1.0,1.0), IntervalArithmetic.trv), Interval(bareinterval(1.0,3.0), IntervalArithmetic.def)) === Overlap.starts - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(0.0,3.0), IntervalArithmetic.dac)) === Overlap.contained_by - @test overlap(Interval(bareinterval(2.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,3.0), IntervalArithmetic.def)) === Overlap.contained_by - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv), Interval(bareinterval(0.0,2.0), IntervalArithmetic.com)) === Overlap.finishes - @test overlap(Interval(bareinterval(2.0,2.0), IntervalArithmetic.def), Interval(bareinterval(0.0,2.0), IntervalArithmetic.dac)) === Overlap.finishes - @test overlap(Interval(bareinterval(1.0,2.0), IntervalArithmetic.def), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) === Overlap.equals - @test overlap(Interval(bareinterval(1.0,1.0), IntervalArithmetic.dac), Interval(bareinterval(1.0,1.0), IntervalArithmetic.dac)) === Overlap.equals - @test overlap(Interval(bareinterval(3.0,4.0), IntervalArithmetic.trv), Interval(bareinterval(2.0,2.0), IntervalArithmetic.trv)) === Overlap.after - @test overlap(Interval(bareinterval(3.0,4.0), IntervalArithmetic.def), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) === Overlap.after - @test overlap(Interval(bareinterval(3.0,3.0), IntervalArithmetic.com), Interval(bareinterval(1.0,2.0), IntervalArithmetic.dac)) === Overlap.after - @test overlap(Interval(bareinterval(3.0,3.0), IntervalArithmetic.def), Interval(bareinterval(2.0,2.0), IntervalArithmetic.trv)) === Overlap.after - @test overlap(Interval(bareinterval(2.0,3.0), IntervalArithmetic.def), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) === Overlap.met_by - @test overlap(Interval(bareinterval(1.5,2.5), IntervalArithmetic.com), Interval(bareinterval(1.0,2.0), IntervalArithmetic.com)) === Overlap.overlapped_by - @test overlap(Interval(bareinterval(1.0,3.0), IntervalArithmetic.dac), Interval(bareinterval(1.0,2.0), IntervalArithmetic.def)) === Overlap.started_by - @test overlap(Interval(bareinterval(1.0,3.0), IntervalArithmetic.com), Interval(bareinterval(1.0,1.0), IntervalArithmetic.dac)) === Overlap.started_by - @test overlap(Interval(bareinterval(0.0,3.0), IntervalArithmetic.com), Interval(bareinterval(1.0,2.0), IntervalArithmetic.dac)) === Overlap.contains - @test overlap(Interval(bareinterval(0.0,3.0), IntervalArithmetic.com), Interval(bareinterval(2.0,2.0), IntervalArithmetic.def)) === Overlap.contains - @test overlap(Interval(bareinterval(0.0,2.0), IntervalArithmetic.def), Interval(bareinterval(1.0,2.0), IntervalArithmetic.trv)) === Overlap.finished_by - @test overlap(Interval(bareinterval(0.0,2.0), IntervalArithmetic.dac), Interval(bareinterval(2.0,2.0), IntervalArithmetic.def)) === Overlap.finished_by - -end diff --git a/test/test_ITF1788/libieeep1788_rec_bool.jl b/test/test_ITF1788/libieeep1788_rec_bool.jl deleted file mode 100644 index f539db58b..000000000 --- a/test/test_ITF1788/libieeep1788_rec_bool.jl +++ /dev/null @@ -1,301 +0,0 @@ -@testset "minimal_is_common_interval_test" begin - - @test iscommon(interval(-27.0,-27.0)) == true - - @test iscommon(interval(-27.0, 0.0)) == true - - @test iscommon(interval(0.0,0.0)) == true - - @test iscommon(interval(-0.0,-0.0)) == true - - @test iscommon(interval(-0.0,0.0)) == true - - @test iscommon(interval(0.0,-0.0)) == true - - @test iscommon(interval(5.0, 12.4)) == true - - @test iscommon(interval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023)) == true - - @test iscommon(entireinterval(BareInterval{Float64})) == false - - @test iscommon(emptyinterval(BareInterval{Float64})) == false - - @test iscommon(interval(-Inf, 0.0)) == false - - @test iscommon(interval(0.0, Inf)) == false - -end - -@testset "minimal_is_common_interval_dec_test" begin - - @test iscommon(Interval(interval(-27.0,-27.0), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(-27.0, 0.0), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(0.0,0.0), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(-0.0,-0.0), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(-0.0,0.0), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(0.0,-0.0), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(5.0, 12.4), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com)) == true - - @test iscommon(Interval(interval(-27.0,-27.0), IntervalArithmetic.trv)) == true - - @test iscommon(Interval(interval(-27.0, 0.0), IntervalArithmetic.def)) == true - - @test iscommon(Interval(interval(0.0,0.0), IntervalArithmetic.dac)) == true - - @test iscommon(Interval(interval(-0.0,-0.0), IntervalArithmetic.trv)) == true - - @test iscommon(Interval(interval(-0.0,0.0), IntervalArithmetic.def)) == true - - @test iscommon(Interval(interval(0.0,-0.0), IntervalArithmetic.dac)) == true - - @test iscommon(Interval(interval(5.0, 12.4), IntervalArithmetic.def)) == true - - @test iscommon(Interval(interval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.trv)) == true - - @test iscommon(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) == false - - @test iscommon(nai()) == false - - @test iscommon(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test iscommon(Interval(interval(-Inf, 0.0), IntervalArithmetic.trv)) == false - - @test iscommon(Interval(interval(0.0, Inf), IntervalArithmetic.def)) == false - -end - -@testset "minimal_is_singleton_test" begin - - @test isthin(interval(-27.0,-27.0)) == true - - @test isthin(interval(-2.0, -2.0)) == true - - @test isthin(interval(12.0,12.0)) == true - - @test isthin(interval(17.1, 17.1)) == true - - @test isthin(interval(-0.0,-0.0)) == true - - @test isthin(interval(0.0,0.0)) == true - - @test isthin(interval(-0.0, 0.0)) == true - - @test isthin(interval(0.0, -0.0)) == true - - @test isthin(emptyinterval(BareInterval{Float64})) == false - - @test isthin(entireinterval(BareInterval{Float64})) == false - - @test isthin(interval(-1.0, 0.0)) == false - - @test isthin(interval(-1.0, -0.5)) == false - - @test isthin(interval(1.0, 2.0)) == false - - @test isthin(interval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) == false - - @test isthin(interval(-1.0,Inf)) == false - -end - -@testset "minimal_is_singleton_dec_test" begin - - @test isthin(Interval(interval(-27.0,-27.0), IntervalArithmetic.def)) == true - - @test isthin(Interval(interval(-2.0, -2.0), IntervalArithmetic.trv)) == true - - @test isthin(Interval(interval(12.0,12.0), IntervalArithmetic.dac)) == true - - @test isthin(Interval(interval(17.1, 17.1), IntervalArithmetic.com)) == true - - @test isthin(Interval(interval(-0.0,-0.0), IntervalArithmetic.def)) == true - - @test isthin(Interval(interval(0.0,0.0), IntervalArithmetic.com)) == true - - @test isthin(Interval(interval(-0.0, 0.0), IntervalArithmetic.def)) == true - - @test isthin(Interval(interval(0.0, -0.0), IntervalArithmetic.dac)) == true - - @test isthin(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test isthin(nai()) == false - - @test isthin(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)) == false - - @test isthin(Interval(interval(-1.0, 0.0), IntervalArithmetic.dac)) == false - - @test isthin(Interval(interval(-1.0, -0.5), IntervalArithmetic.com)) == false - - @test isthin(Interval(interval(1.0, 2.0), IntervalArithmetic.def)) == false - - @test isthin(Interval(interval(-Inf,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac)) == false - - @test isthin(Interval(interval(-1.0,Inf), IntervalArithmetic.trv)) == false - -end - -@testset "minimal_is_member_test" begin - - @test in_interval(-27.0, interval(-27.0,-27.0)) == true - - @test in_interval(-27.0, interval(-27.0, 0.0)) == true - - @test in_interval(-7.0, interval(-27.0, 0.0)) == true - - @test in_interval(0.0, interval(-27.0, 0.0)) == true - - @test in_interval(-0.0, interval(0.0,0.0)) == true - - @test in_interval(0.0, interval(0.0,0.0)) == true - - @test in_interval(0.0, interval(-0.0,-0.0)) == true - - @test in_interval(0.0, interval(-0.0,0.0)) == true - - @test in_interval(0.0, interval(0.0,-0.0)) == true - - @test in_interval(5.0, interval(5.0, 12.4)) == true - - @test in_interval(6.3, interval(5.0, 12.4)) == true - - @test in_interval(12.4, interval(5.0, 12.4)) == true - - @test in_interval(0.0, entireinterval(BareInterval{Float64})) == true - - @test in_interval(5.0, entireinterval(BareInterval{Float64})) == true - - @test in_interval(6.3, entireinterval(BareInterval{Float64})) == true - - @test in_interval(12.4, entireinterval(BareInterval{Float64})) == true - - @test in_interval(0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) == true - - @test in_interval(-0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) == true - - @test in_interval(0x1.0p-1022, entireinterval(BareInterval{Float64})) == true - - @test in_interval(-0x1.0p-1022, entireinterval(BareInterval{Float64})) == true - - @test in_interval(-71.0, interval(-27.0, 0.0)) == false - - @test in_interval(0.1, interval(-27.0, 0.0)) == false - - @test in_interval(-0.01, interval(0.0,0.0)) == false - - @test in_interval(0.000001, interval(0.0,0.0)) == false - - @test in_interval(111110.0, interval(-0.0,-0.0)) == false - - @test in_interval(4.9, interval(5.0, 12.4)) == false - - @test in_interval(-6.3, interval(5.0, 12.4)) == false - - @test in_interval(0.0, emptyinterval(BareInterval{Float64})) == false - - @test in_interval(-4535.3, emptyinterval(BareInterval{Float64})) == false - - @test in_interval(-Inf, emptyinterval(BareInterval{Float64})) == false - - @test in_interval(Inf, emptyinterval(BareInterval{Float64})) == false - - @test in_interval(NaN, emptyinterval(BareInterval{Float64})) == false - - @test in_interval(-Inf, entireinterval(BareInterval{Float64})) == false - - @test in_interval(Inf, entireinterval(BareInterval{Float64})) == false - - @test in_interval(NaN, entireinterval(BareInterval{Float64})) == false - -end - -@testset "minimal_is_member_dec_test" begin - - @test in_interval(-27.0, Interval(interval(-27.0,-27.0), IntervalArithmetic.trv)) == true - - @test in_interval(-27.0, Interval(interval(-27.0, 0.0), IntervalArithmetic.def)) == true - - @test in_interval(-7.0, Interval(interval(-27.0, 0.0), IntervalArithmetic.dac)) == true - - @test in_interval(0.0, Interval(interval(-27.0, 0.0), IntervalArithmetic.com)) == true - - @test in_interval(-0.0, Interval(interval(0.0,0.0), IntervalArithmetic.trv)) == true - - @test in_interval(0.0, Interval(interval(0.0,0.0), IntervalArithmetic.def)) == true - - @test in_interval(0.0, Interval(interval(-0.0,-0.0), IntervalArithmetic.dac)) == true - - @test in_interval(0.0, Interval(interval(-0.0,0.0), IntervalArithmetic.com)) == true - - @test in_interval(0.0, Interval(interval(0.0,-0.0), IntervalArithmetic.trv)) == true - - @test in_interval(5.0, Interval(interval(5.0, 12.4), IntervalArithmetic.def)) == true - - @test in_interval(6.3, Interval(interval(5.0, 12.4), IntervalArithmetic.dac)) == true - - @test in_interval(12.4, Interval(interval(5.0, 12.4), IntervalArithmetic.com)) == true - - @test in_interval(0.0, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test in_interval(5.0, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)) == true - - @test in_interval(6.3, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) == true - - @test in_interval(12.4, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test in_interval(0x1.FFFFFFFFFFFFFp1023, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)) == true - - @test in_interval(-0x1.FFFFFFFFFFFFFp1023, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) == true - - @test in_interval(0x1.0p-1022, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == true - - @test in_interval(-0x1.0p-1022, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)) == true - - @test in_interval(-71.0, Interval(interval(-27.0, 0.0), IntervalArithmetic.trv)) == false - - @test in_interval(0.1, Interval(interval(-27.0, 0.0), IntervalArithmetic.def)) == false - - @test in_interval(-0.01, Interval(interval(0.0,0.0), IntervalArithmetic.dac)) == false - - @test in_interval(0.000001, Interval(interval(0.0,0.0), IntervalArithmetic.com)) == false - - @test in_interval(111110.0, Interval(interval(-0.0,-0.0), IntervalArithmetic.trv)) == false - - @test in_interval(4.9, Interval(interval(5.0, 12.4), IntervalArithmetic.def)) == false - - @test in_interval(-6.3, Interval(interval(5.0, 12.4), IntervalArithmetic.dac)) == false - - @test in_interval(0.0, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(0.0, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(-4535.3, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(-4535.3, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(-Inf, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(-Inf, nai()) == false - - @test in_interval(Inf, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(Inf, nai()) == false - - @test in_interval(NaN, Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(NaN, nai()) == false - - @test in_interval(-Inf, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) == false - - @test in_interval(Inf, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def)) == false - - @test in_interval(NaN, Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)) == false - -end diff --git a/test/test_ITF1788/libieeep1788_rev.jl b/test/test_ITF1788/libieeep1788_rev.jl deleted file mode 100644 index d49a442e5..000000000 --- a/test/test_ITF1788/libieeep1788_rev.jl +++ /dev/null @@ -1,1687 +0,0 @@ -@testset "minimal_sqr_rev_test" begin - - @test isequal_interval(sqr_rev(emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sqr_rev(bareinterval(-10.0,-1.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sqr_rev(bareinterval(0.0,Inf))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(sqr_rev(bareinterval(0.0,1.0))[2], bareinterval(-1.0,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(-0.5,1.0))[2], bareinterval(-1.0,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(-1000.0,1.0))[2], bareinterval(-1.0,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(0.0,25.0))[2], bareinterval(-5.0,5.0)) - - @test isequal_interval(sqr_rev(bareinterval(-1.0,25.0))[2], bareinterval(-5.0,5.0)) - - @test isequal_interval(sqr_rev(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7))[2], bareinterval(-0x1.999999999999BP-4,0x1.999999999999BP-4)) - - @test isequal_interval(sqr_rev(bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1))[2], bareinterval(-0x1.ffffffffffff1p+0,0x1.ffffffffffff1p+0)) - -end - -@testset "minimal_sqr_rev_bin_test" begin - - @test isequal_interval(sqr_rev(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,1.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sqr_rev(bareinterval(-10.0,-1.0), bareinterval(-5.0,1.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sqr_rev(bareinterval(0.0,Inf), bareinterval(-5.0,1.0))[2], bareinterval(-5.0,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(0.0,1.0), bareinterval(-0.1,1.0))[2], bareinterval(-0.1,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(-0.5,1.0), bareinterval(-0.1,1.0))[2], bareinterval(-0.1,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(-1000.0,1.0), bareinterval(-0.1,1.0))[2], bareinterval(-0.1,1.0)) - - @test isequal_interval(sqr_rev(bareinterval(0.0,25.0), bareinterval(-4.1,6.0))[2], bareinterval(-4.1,5.0)) - - @test isequal_interval(sqr_rev(bareinterval(-1.0,25.0), bareinterval(-4.1,7.0))[2], bareinterval(-4.1,5.0)) - - @test isequal_interval(sqr_rev(bareinterval(1.0,25.0), bareinterval(0.0,7.0))[2], bareinterval(1.0,5.0)) - - @test isequal_interval(sqr_rev(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), bareinterval(-0.1,Inf))[2], bareinterval(-0.1,0x1.999999999999BP-4)) - - @test isequal_interval(sqr_rev(bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1), bareinterval(-0.1,Inf))[2], bareinterval(-0.1,0x1.ffffffffffff1p+0)) - -end - -@testset "minimal_sqr_rev_dec_test" begin - - @test isequal_interval(sqr_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-10.0,-1.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,1.0), IntervalArithmetic.def))[2], Interval(bareinterval(-1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-0.5,1.0), IntervalArithmetic.dac))[2], Interval(bareinterval(-1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-1000.0,1.0), IntervalArithmetic.com))[2], Interval(bareinterval(-1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,25.0), IntervalArithmetic.def))[2], Interval(bareinterval(-5.0,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-1.0,25.0), IntervalArithmetic.dac))[2], Interval(bareinterval(-5.0,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), IntervalArithmetic.com))[2], Interval(bareinterval(-0x1.999999999999BP-4,0x1.999999999999BP-4), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1), IntervalArithmetic.def))[2], Interval(bareinterval(-0x1.ffffffffffff1p+0,0x1.ffffffffffff1p+0), IntervalArithmetic.trv)) - -end - -@testset "minimal_sqr_rev_dec_bin_test" begin - - @test isequal_interval(sqr_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-5.0,1.0), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-10.0,-1.0), IntervalArithmetic.com), Interval(bareinterval(-5.0,1.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def), Interval(bareinterval(-5.0,1.0), IntervalArithmetic.dac))[2], Interval(bareinterval(-5.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,1.0), IntervalArithmetic.dac), Interval(bareinterval(-0.1,1.0), IntervalArithmetic.def))[2], Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-0.5,1.0), IntervalArithmetic.def), Interval(bareinterval(-0.1,1.0), IntervalArithmetic.dac))[2], Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-1000.0,1.0), IntervalArithmetic.com), Interval(bareinterval(-0.1,1.0), IntervalArithmetic.def))[2], Interval(bareinterval(-0.1,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,25.0), IntervalArithmetic.def), Interval(bareinterval(-4.1,6.0), IntervalArithmetic.com))[2], Interval(bareinterval(-4.1,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(-1.0,25.0), IntervalArithmetic.dac), Interval(bareinterval(-4.1,7.0), IntervalArithmetic.def))[2], Interval(bareinterval(-4.1,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(1.0,25.0), IntervalArithmetic.dac), Interval(bareinterval(0.0,7.0), IntervalArithmetic.def))[2], Interval(bareinterval(1.0,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), IntervalArithmetic.def), Interval(bareinterval(-0.1,Inf), IntervalArithmetic.dac))[2], Interval(bareinterval(-0.1,0x1.999999999999BP-4), IntervalArithmetic.trv)) - - @test isequal_interval(sqr_rev(Interval(bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1), IntervalArithmetic.dac), Interval(bareinterval(-0.1,Inf), IntervalArithmetic.dac))[2], Interval(bareinterval(-0.1,0x1.ffffffffffff1p+0), IntervalArithmetic.trv)) - -end - -@testset "minimal_abs_rev_test" begin - - @test isequal_interval(abs_rev(emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-1.1,-0.4))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(0.0,Inf))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(1.1,2.1))[2], bareinterval(-2.1,2.1)) - - @test isequal_interval(abs_rev(bareinterval(-1.1,2.0))[2], bareinterval(-2.0,2.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.1,0.0))[2], bareinterval(0.0,0.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.9,0.2))[2], bareinterval(-0.2,0.2)) - - @test isequal_interval(abs_rev(bareinterval(0.0,0.2))[2], bareinterval(-0.2,0.2)) - - @test isequal_interval(abs_rev(bareinterval(-1.5,Inf))[2], entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_abs_rev_bin_test" begin - - @test isequal_interval(abs_rev(emptyinterval(BareInterval{Float64}), bareinterval(-1.1,5.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(-1.1,-0.4), bareinterval(-1.1,5.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(abs_rev(bareinterval(0.0,Inf), bareinterval(-1.1,5.0))[2], bareinterval(-1.1,5.0)) - - @test isequal_interval(abs_rev(bareinterval(1.1,2.1), bareinterval(-1.0,5.0))[2], bareinterval(1.1,2.1)) - - @test isequal_interval(abs_rev(bareinterval(-1.1,2.0), bareinterval(-1.1,5.0))[2], bareinterval(-1.1,2.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.1,0.0), bareinterval(-1.1,5.0))[2], bareinterval(0.0,0.0)) - - @test isequal_interval(abs_rev(bareinterval(-1.9,0.2), bareinterval(-1.1,5.0))[2], bareinterval(-0.2,0.2)) - -end - -@testset "minimal_abs_rev_dec_test" begin - - @test isequal_interval(abs_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.1,-0.4), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(1.1,2.1), IntervalArithmetic.com))[2], Interval(bareinterval(-2.1,2.1), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.def))[2], Interval(bareinterval(-2.0,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.1,0.0), IntervalArithmetic.dac))[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.9,0.2), IntervalArithmetic.com))[2], Interval(bareinterval(-0.2,0.2), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(0.0,0.2), IntervalArithmetic.def))[2], Interval(bareinterval(-0.2,0.2), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.5,Inf), IntervalArithmetic.def))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_abs_rev_dec_bin_test" begin - - @test isequal_interval(abs_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(bareinterval(-1.1,5.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.1,-0.4), IntervalArithmetic.dac), Interval(bareinterval(-1.1,5.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def), Interval(bareinterval(-1.1,5.0), IntervalArithmetic.def))[2], Interval(bareinterval(-1.1,5.0), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(1.1,2.1), IntervalArithmetic.dac), Interval(bareinterval(-1.0,5.0), IntervalArithmetic.def))[2], Interval(bareinterval(1.1,2.1), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.1,2.0), IntervalArithmetic.com), Interval(bareinterval(-1.1,5.0), IntervalArithmetic.def))[2], Interval(bareinterval(-1.1,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.1,0.0), IntervalArithmetic.def), Interval(bareinterval(-1.1,5.0), IntervalArithmetic.def))[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(abs_rev(Interval(bareinterval(-1.9,0.2), IntervalArithmetic.dac), Interval(bareinterval(-1.1,5.0), IntervalArithmetic.def))[2], Interval(bareinterval(-0.2,0.2), IntervalArithmetic.trv)) - -end - -@testset "minimal_pown_rev_test" begin - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(1.0,1.0), 0)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-1.0,5.0), 0)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-1.0,0.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-1.0,-0.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(1.1,10.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), 1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), 1)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), 1)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), 1)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(13.1,13.1), 1)[2], bareinterval(13.1,13.1)) - - @test isequal_interval(power_rev(bareinterval(-7451.145,-7451.145), 1)[2], bareinterval(-7451.145,-7451.145)) - - @test isequal_interval(power_rev(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 1)[2], bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(power_rev(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 1)[2], bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023)) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), 1)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), 1)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), 1)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), 1)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-324.3,2.5), 1)[2], bareinterval(-324.3,2.5)) - - @test isequal_interval(power_rev(bareinterval(0.01,2.33), 1)[2], bareinterval(0.01,2.33)) - - @test isequal_interval(power_rev(bareinterval(-1.9,-0.33), 1)[2], bareinterval(-1.9,-0.33)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), 2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-5.0,-1.0), 2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), 2)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), 2)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), 2)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), 2)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.573851EB851EBP+7,0x1.573851EB851ECP+7), 2)[2], bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3)) - - @test isequal_interval(power_rev(bareinterval(0x1.A794A4E7CFAADP+25,0x1.A794A4E7CFAAEP+25), 2)[2], bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12)) - - @test isequal_interval(power_rev(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 2)[2], bareinterval(-0x1p+512,0x1p+512)) - - @test isequal_interval(power_rev(bareinterval(0.0,0x1.9AD27D70A3D72P+16), 2)[2], bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8)) - - @test isequal_interval(power_rev(bareinterval(-0.0,0x1.9AD27D70A3D72P+16), 2)[2], bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8)) - - @test isequal_interval(power_rev(bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2), 2)[2], bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1), 2)[2], bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), 8)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), 8)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), 8)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), 8)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), 8)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), 8)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.9D8FD495853F5P+29,0x1.9D8FD495853F6P+29), 8)[2], bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3)) - - @test isequal_interval(power_rev(bareinterval(0x1.DFB1BB622E70DP+102,0x1.DFB1BB622E70EP+102), 8)[2], bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12)) - - @test isequal_interval(power_rev(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 8)[2], bareinterval(-0x1p+128,0x1p+128)) - - @test isequal_interval(power_rev(bareinterval(0.0,0x1.A87587109655P+66), 8)[2], bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8)) - - @test isequal_interval(power_rev(bareinterval(-0.0,0x1.A87587109655P+66), 8)[2], bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8)) - - @test isequal_interval(power_rev(bareinterval(0x1.CD2B297D889BDP-54,0x1.B253D9F33CE4DP+9), 8)[2], bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.26F1FCDD502A3P-13,0x1.53ABD7BFC4FC6P+7), 8)[2], bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), 3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), 3)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), 3)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), 3)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.1902E978D4FDEP+11,0x1.1902E978D4FDFP+11), 3)[2], bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3)) - - @test isequal_interval(power_rev(bareinterval(-0x1.81460637B9A3DP+38,-0x1.81460637B9A3CP+38), 3)[2], bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12)) - - @test isequal_interval(power_rev(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 3)[2], bareinterval(0x1.428a2f98d728ap+341,0x1.428a2f98d728bp+341)) - - @test isequal_interval(power_rev(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 3)[2], bareinterval(-0x1.428a2f98d728bp+341, -0x1.428a2f98d728ap+341)) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), 3)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), 3)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), 3)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), 3)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0x1.0436D2F418938P+25,0x1.F4P+3), 3)[2], bareinterval(-0x1.444cccccccccep+8,0x1.4p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3), 3)[2], bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5), 3)[2], bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), 7)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), 7)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), 7)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), 7)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.F91D1B185493BP+25,0x1.F91D1B185493CP+25), 7)[2], bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3)) - - @test isequal_interval(power_rev(bareinterval(-0x1.07B1DA32F9B59P+90,-0x1.07B1DA32F9B58P+90), 7)[2], bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12)) - - @test isequal_interval(power_rev(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 7)[2], bareinterval(0x1.381147622f886p+146,0x1.381147622f887p+146)) - - @test isequal_interval(power_rev(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 7)[2], bareinterval(-0x1.381147622f887p+146,-0x1.381147622f886p+146)) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), 7)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), 7)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), 7)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), 7)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0x1.4F109959E6D7FP+58,0x1.312DP+9), 7)[2], bareinterval(-0x1.444cccccccccep+8,0x1.4p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.6849B86A12B9BP-47,0x1.74D0373C76313P+8), 7)[2], bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(-0x1.658C775099757P+6,-0x1.BEE30301BF47AP-12), 7)[2], bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), -2)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), -2)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-10.0,0.0), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-10.0,-0.0), -2)[2], emptyinterval(BareInterval{Float64})) - - @test_broken isequal_interval(power_rev(bareinterval(0x1.7DE3A077D1568P-8,0x1.7DE3A077D1569P-8), -2)[2], bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3)) - - @test_broken isequal_interval(power_rev(bareinterval(0x1.3570290CD6E14P-26,0x1.3570290CD6E15P-26), -2)[2], bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12)) - - @test isequal_interval(power_rev(bareinterval(0x0P+0,0x0.0000000000001P-1022), -2)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.3F0C482C977C9P-17,Inf), -2)[2], bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8)) - - @test isequal_interval(power_rev(bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13), -2)[2], bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3), -2)[2], bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), -8)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), -8)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), -8)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), -8)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), -8)[2], emptyinterval(BareInterval{Float64})) - - @test_broken isequal_interval(power_rev(bareinterval(0x1.3CEF39247CA6DP-30,0x1.3CEF39247CA6EP-30), -8)[2], bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3)) - - @test_broken isequal_interval(power_rev(bareinterval(0x1.113D9EF0A99ACP-103,0x1.113D9EF0A99ADP-103), -8)[2], bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12)) - - @test isequal_interval(power_rev(bareinterval(0x0P+0,0x0.0000000000001P-1022), -8)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.34CC3764D1E0CP-67,Inf), -8)[2], bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8)) - - @test isequal_interval(power_rev(bareinterval(0x1.2DC80DB11AB7CP-10,0x1.1C37937E08P+53), -8)[2], bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.81E104E61630DP-8,0x1.BC64F21560E34P+12), -8)[2], bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), -1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), -1)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), -1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), -1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.38ABF82EE6986P-4,0x1.38ABF82EE6987P-4), -1)[2], bareinterval(0x1.a333333333332p+3,0x1.a333333333335p+3)) - - @test isequal_interval(power_rev(bareinterval(-0x1.197422C9048BFP-13,-0x1.197422C9048BEP-13), -1)[2], bareinterval(-0x1.d1b251eb851eep+12,-0x1.d1b251eb851ebp+12)) - - @test isequal_interval(power_rev(bareinterval(0x0.4P-1022,0x0.4000000000001P-1022), -1)[2], bareinterval(0x1.ffffffffffff8p+1023,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0x0.4000000000001P-1022,-0x0.4P-1022), -1)[2], bareinterval(-Inf,-0x1.ffffffffffff8p+1023)) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), -1)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), -1)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), -1)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), -1)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6), -1)[2], bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(-0x1.83E0F83E0F83EP+1,-0x1.0D79435E50D79P-1), -1)[2], bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), -3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), -3)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), -3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), -3)[2], emptyinterval(BareInterval{Float64})) - - @test_broken isequal_interval(power_rev(bareinterval(0x1.D26DF4D8B1831P-12,0x1.D26DF4D8B1832P-12), -3)[2], bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3)) - - @test_broken isequal_interval(power_rev(bareinterval(-0x1.54347DED91B19P-39,-0x1.54347DED91B18P-39), -3)[2], bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12)) - - @test isequal_interval(power_rev(bareinterval(0x0P+0,0x0.0000000000001P-1022), -3)[2], bareinterval(0x1p+358,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0x0.0000000000001P-1022,-0x0P+0), -3)[2], bareinterval(-Inf,-0x1p+358)) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), -3)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), -3)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), -3)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), -3)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.43CFBA61AACABP-4,0x1.E848P+19), -3)[2], bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(-0x1.BD393CE9E8E7CP+4,-0x1.2A95F6F7C066CP-3), -3)[2], bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), -7)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), -7)[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), -7)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), -7)[2], emptyinterval(BareInterval{Float64})) - - @test_broken isequal_interval(power_rev(bareinterval(0x1.037D76C912DBCP-26,0x1.037D76C912DBDP-26), -7)[2], bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3)) - - @test_broken isequal_interval(power_rev(bareinterval(-0x1.F10F41FB8858FP-91,-0x1.F10F41FB8858EP-91), -7)[2], bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12)) - - @test isequal_interval(power_rev(bareinterval(0x0P+0,0x0.0000000000001P-1022), -7)[2], bareinterval(0x1.588cea3f093bcp+153,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0x0.0000000000001P-1022,-0x0P+0), -7)[2], bareinterval(-Inf,-0x1.588cea3f093bcp+153)) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), -7)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-0.0,Inf), -7)[2], bareinterval(0.0,Inf)) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), -7)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), -7)[2], bareinterval(-Inf,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.5F934D64162A9P-9,0x1.6BCC41E9P+46), -7)[2], bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(-0x1.254CDD3711DDBP+11,-0x1.6E95C4A761E19P-7), -7)[2], bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2)) - -end - -@testset "minimal_pown_rev_bin_test" begin - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(1.0,1.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(1.0,1.0), bareinterval(1.0,1.0), 0)[2], bareinterval(1.0,1.0)) - - @test isequal_interval(power_rev(bareinterval(-1.0,5.0), bareinterval(-51.0,12.0), 0)[2], bareinterval(-51.0,12.0)) - - @test isequal_interval(power_rev(bareinterval(-1.0,0.0), bareinterval(5.0,10.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-1.0,-0.0), bareinterval(-1.0,1.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(1.1,10.0), bareinterval(1.0,41.0), 0)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(0.0,100.1), 1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), bareinterval(-5.1,10.0), 1)[2], bareinterval(-5.1,10.0)) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), bareinterval(-10.0,5.1), 1)[2], bareinterval(0.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(-0.0,-0.0), bareinterval(1.0,5.0), 1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(5.0,17.1), 2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-5.0,-1.0), bareinterval(5.0,17.1), 2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), bareinterval(5.6,27.544), 2)[2], bareinterval(5.6,27.544)) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), bareinterval(1.0,2.0), 2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2), bareinterval(1.0,Inf), 2)[2], bareinterval(1.0,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1), bareinterval(-Inf,-1.0), 2)[2], bareinterval(-0x1.e666666666667p+0,-1.0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(-23.0,-1.0), 3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), bareinterval(-23.0,-1.0), 3)[2], bareinterval(-23.0,-1.0)) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), bareinterval(1.0,2.0), 3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3), bareinterval(1.0,Inf), 3)[2], bareinterval(1.0,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5), bareinterval(-Inf,-1.0), 3)[2], bareinterval(-0x1.e666666666667p+0,-1.0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(-3.0,17.3), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0.0,Inf), bareinterval(-5.1,-0.1), -2)[2], bareinterval(-5.1,-0.1)) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), bareinterval(27.2,55.1), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.3F0C482C977C9P-17,Inf), bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), -2)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13), bareinterval(1.0,Inf), -2)[2], bareinterval(1.0,0x1.2a3d70a3d70a5p+1)) - - @test isequal_interval(power_rev(bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3), bareinterval(-Inf,-1.0), -2)[2], bareinterval(-0x1.e666666666667p+0,-1.0)) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(-5.1,55.5), -1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), bareinterval(-5.1,55.5), -1)[2], bareinterval(-5.1,55.5)) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), bareinterval(-5.1,55.5), -1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), bareinterval(-1.0,1.0), -1)[2], bareinterval(-1.0,0.0)) - - @test isequal_interval(power_rev(bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6), bareinterval(-1.0,0.0), -1)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(emptyinterval(BareInterval{Float64}), bareinterval(-5.1,55.5), -3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(entireinterval(BareInterval{Float64}), bareinterval(-5.1,55.5), -3)[2], bareinterval(-5.1,55.5)) - - @test isequal_interval(power_rev(bareinterval(0.0,0.0), bareinterval(-5.1,55.5), -3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-Inf,0.0), bareinterval(5.1,55.5), -3)[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(power_rev(bareinterval(-Inf,-0.0), bareinterval(-32.0,1.1), -3)[2], bareinterval(-32.0,0.0)) - -end - -@testset "minimal_pown_rev_dec_test" begin - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(1.0,1.0), IntervalArithmetic.com), 0)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-1.0,5.0), IntervalArithmetic.dac), 0)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-1.0,0.0), IntervalArithmetic.def), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-1.0,-0.0), IntervalArithmetic.dac), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(1.1,10.0), IntervalArithmetic.com), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), 1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), 1)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com), 1)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), 1)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(13.1,13.1), IntervalArithmetic.def), 1)[2], Interval(bareinterval(13.1,13.1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-7451.145,-7451.145), IntervalArithmetic.dac), 1)[2], Interval(bareinterval(-7451.145,-7451.145), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), 1)[2], Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), 1)[2], Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), 1)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), 1)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def), 1)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def), 1)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-324.3,2.5), IntervalArithmetic.dac), 1)[2], Interval(bareinterval(-324.3,2.5), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.01,2.33), IntervalArithmetic.com), 1)[2], Interval(bareinterval(0.01,2.33), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-1.9,-0.33), IntervalArithmetic.def), 1)[2], Interval(bareinterval(-1.9,-0.33), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), 2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), 2)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.def), 2)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com), 2)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), 2)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.573851EB851EBP+7,0x1.573851EB851ECP+7), IntervalArithmetic.def), 2)[2], Interval(bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.A794A4E7CFAADP+25,0x1.A794A4E7CFAAEP+25), IntervalArithmetic.def), 2)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac), 2)[2], Interval(bareinterval(-0x1p+512,0x1p+512), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0x1.9AD27D70A3D72P+16), IntervalArithmetic.dac), 2)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,0x1.9AD27D70A3D72P+16), IntervalArithmetic.def), 2)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2), IntervalArithmetic.com), 2)[2], Interval(bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1), IntervalArithmetic.def), 2)[2], Interval(bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), 8)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), 8)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), 8)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), 8)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.def), 8)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), 8)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.9D8FD495853F5P+29,0x1.9D8FD495853F6P+29), IntervalArithmetic.com), 8)[2], Interval(bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.DFB1BB622E70DP+102,0x1.DFB1BB622E70EP+102), IntervalArithmetic.dac), 8)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.def), 8)[2], Interval(bareinterval(-0x1p+128,0x1p+128), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0x1.A87587109655P+66), IntervalArithmetic.dac), 8)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,0x1.A87587109655P+66), IntervalArithmetic.def), 8)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.CD2B297D889BDP-54,0x1.B253D9F33CE4DP+9), IntervalArithmetic.com), 8)[2], Interval(bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.26F1FCDD502A3P-13,0x1.53ABD7BFC4FC6P+7), IntervalArithmetic.dac), 8)[2], Interval(bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), 3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), 3)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.dac), 3)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.def), 3)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.1902E978D4FDEP+11,0x1.1902E978D4FDFP+11), IntervalArithmetic.com), 3)[2], Interval(bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.81460637B9A3DP+38,-0x1.81460637B9A3CP+38), IntervalArithmetic.def), 3)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac), 3)[2], Interval(bareinterval(0x1.428a2f98d728ap+341,0x1.428a2f98d728bp+341), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), 3)[2], Interval(bareinterval(-0x1.428a2f98d728bp+341, -0x1.428a2f98d728ap+341), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def), 3)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.def), 3)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.dac), 3)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def), 3)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.0436D2F418938P+25,0x1.F4P+3), IntervalArithmetic.com), 3)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.4p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3), IntervalArithmetic.dac), 3)[2], Interval(bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5), IntervalArithmetic.def), 3)[2], Interval(bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), 7)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), 7)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com), 7)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), 7)[2], Interval(bareinterval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.F91D1B185493BP+25,0x1.F91D1B185493CP+25), IntervalArithmetic.def), 7)[2], Interval(bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.07B1DA32F9B59P+90,-0x1.07B1DA32F9B58P+90), IntervalArithmetic.dac), 7)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.com), 7)[2], Interval(bareinterval(0x1.381147622f886p+146,0x1.381147622f887p+146), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.def), 7)[2], Interval(bareinterval(-0x1.381147622f887p+146,-0x1.381147622f886p+146), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), 7)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), 7)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def), 7)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def), 7)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.4F109959E6D7FP+58,0x1.312DP+9), IntervalArithmetic.dac), 7)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.4p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.6849B86A12B9BP-47,0x1.74D0373C76313P+8), IntervalArithmetic.com), 7)[2], Interval(bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.658C775099757P+6,-0x1.BEE30301BF47AP-12), IntervalArithmetic.def), 7)[2], Interval(bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), -2)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), -2)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.def), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.com), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-10.0,0.0), IntervalArithmetic.dac), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-10.0,-0.0), IntervalArithmetic.def), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(0x1.7DE3A077D1568P-8,0x1.7DE3A077D1569P-8), IntervalArithmetic.dac), -2)[2], Interval(bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(0x1.3570290CD6E14P-26,0x1.3570290CD6E15P-26), IntervalArithmetic.def), -2)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x0P+0,0x0.0000000000001P-1022), IntervalArithmetic.com), -2)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.3F0C482C977C9P-17,Inf), IntervalArithmetic.dac), -2)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13), IntervalArithmetic.def), -2)[2], Interval(bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3), IntervalArithmetic.com), -2)[2], Interval(bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), -8)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.def), -8)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), -8)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.def), -8)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), -8)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(0x1.3CEF39247CA6DP-30,0x1.3CEF39247CA6EP-30), IntervalArithmetic.com), -8)[2], Interval(bareinterval(-0x1.a333333333334p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(0x1.113D9EF0A99ACP-103,0x1.113D9EF0A99ADP-103), IntervalArithmetic.def), -8)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,0x1.d1b251eb851edp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x0P+0,0x0.0000000000001P-1022), IntervalArithmetic.dac), -8)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.34CC3764D1E0CP-67,Inf), IntervalArithmetic.def), -8)[2], Interval(bareinterval(-0x1.444cccccccccep+8,0x1.444cccccccccep+8), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.2DC80DB11AB7CP-10,0x1.1C37937E08P+53), IntervalArithmetic.com), -8)[2], Interval(bareinterval(-0x1.2a3d70a3d70a5p+1,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.81E104E61630DP-8,0x1.BC64F21560E34P+12), IntervalArithmetic.def), -8)[2], Interval(bareinterval(-0x1.e666666666667p+0,0x1.e666666666667p+0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), -1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), -1)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.dac), -1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), -1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.38ABF82EE6986P-4,0x1.38ABF82EE6987P-4), IntervalArithmetic.def), -1)[2], Interval(bareinterval(0x1.a333333333332p+3,0x1.a333333333335p+3), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.197422C9048BFP-13,-0x1.197422C9048BEP-13), IntervalArithmetic.dac), -1)[2], Interval(bareinterval(-0x1.d1b251eb851eep+12,-0x1.d1b251eb851ebp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x0.4P-1022,0x0.4000000000001P-1022), IntervalArithmetic.dac), -1)[2], Interval(bareinterval(0x1.ffffffffffff8p+1023,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x0.4000000000001P-1022,-0x0.4P-1022), IntervalArithmetic.def), -1)[2], Interval(bareinterval(-Inf,-0x1.ffffffffffff8p+1023), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), -1)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), -1)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.dac), -1)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def), -1)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6), IntervalArithmetic.com), -1)[2], Interval(bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.83E0F83E0F83EP+1,-0x1.0D79435E50D79P-1), IntervalArithmetic.com), -1)[2], Interval(bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), -3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), -3)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.def), -3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.dac), -3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(0x1.D26DF4D8B1831P-12,0x1.D26DF4D8B1832P-12), IntervalArithmetic.com), -3)[2], Interval(bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(-0x1.54347DED91B19P-39,-0x1.54347DED91B18P-39), IntervalArithmetic.def), -3)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x0P+0,0x0.0000000000001P-1022), IntervalArithmetic.dac), -3)[2], Interval(bareinterval(0x1p+358,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x0.0000000000001P-1022,-0x0P+0), IntervalArithmetic.def), -3)[2], Interval(bareinterval(-Inf,-0x1p+358), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), -3)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.dac), -3)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.def), -3)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def), -3)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x1.43CFBA61AACABP-4,0x1.E848P+19), IntervalArithmetic.com), -3)[2], Interval(bareinterval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x1.BD393CE9E8E7CP+4,-0x1.2A95F6F7C066CP-3), IntervalArithmetic.def), -3)[2], Interval(bareinterval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), -7)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), -7)[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,0.0), IntervalArithmetic.com), -7)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,-0.0), IntervalArithmetic.def), -7)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(0x1.037D76C912DBCP-26,0x1.037D76C912DBDP-26), IntervalArithmetic.dac), -7)[2], Interval(bareinterval(0x1.a333333333332p+3,0x1.a333333333334p+3), IntervalArithmetic.trv)) - - @test_broken isequal_interval(power_rev(Interval(bareinterval(-0x1.F10F41FB8858FP-91,-0x1.F10F41FB8858EP-91), IntervalArithmetic.dac), -7)[2], Interval(bareinterval(-0x1.d1b251eb851edp+12,-0x1.d1b251eb851ebp+12), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0x0P+0,0x0.0000000000001P-1022), IntervalArithmetic.def), -7)[2], Interval(bareinterval(0x1.588cea3f093bcp+153,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0x0.0000000000001P-1022,-0x0P+0), IntervalArithmetic.def), -7)[2], Interval(bareinterval(-Inf,-0x1.588cea3f093bcp+153), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(0.0,Inf), IntervalArithmetic.dac), -7)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-0.0,Inf), IntervalArithmetic.def), -7)[2], Interval(bareinterval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,0.0), IntervalArithmetic.dac), -7)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(bareinterval(-Inf,-0.0), IntervalArithmetic.def), -7)[2], Interval(bareinterval(-Inf,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.5F934D64162A9P-9,0x1.6BCC41E9P+46), IntervalArithmetic.com), -7)[2], Interval(interval(0x1.47ae147ae147ap-7,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-0x1.254CDD3711DDBP+11,-0x1.6E95C4A761E19P-7), IntervalArithmetic.com), -7)[2], Interval(interval(-0x1.e666666666667p+0,-0x1.51eb851eb851ep-2), IntervalArithmetic.trv)) - -end - -@testset "minimal_pown_rev_dec_bin_test" begin - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(1.0,1.0), IntervalArithmetic.def), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(1.0,1.0), IntervalArithmetic.dac), Interval(interval(1.0,1.0), IntervalArithmetic.dac), 0)[2], Interval(interval(1.0,1.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-1.0,5.0), IntervalArithmetic.def), Interval(interval(-51.0,12.0), IntervalArithmetic.dac), 0)[2], Interval(interval(-51.0,12.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-1.0,0.0), IntervalArithmetic.com), Interval(interval(5.0,10.0), IntervalArithmetic.dac), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-1.0,-0.0), IntervalArithmetic.dac), Interval(interval(-1.0,1.0), IntervalArithmetic.def), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(1.1,10.0), IntervalArithmetic.def), Interval(interval(1.0,41.0), IntervalArithmetic.dac), 0)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(0.0,100.1), IntervalArithmetic.dac), 1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(interval(-5.1,10.0), IntervalArithmetic.def), 1)[2], Interval(interval(-5.1,10.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,0.0), IntervalArithmetic.com), Interval(interval(-10.0,5.1), IntervalArithmetic.dac), 1)[2], Interval(interval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-0.0,-0.0), IntervalArithmetic.def), Interval(interval(1.0,5.0), IntervalArithmetic.dac), 1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(5.0,17.1), IntervalArithmetic.def), 2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,Inf), IntervalArithmetic.dac), Interval(interval(5.6,27.544), IntervalArithmetic.dac), 2)[2], Interval(interval(5.6,27.544), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,0.0), IntervalArithmetic.def), Interval(interval(1.0,2.0), IntervalArithmetic.def), 2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2), IntervalArithmetic.com), Interval(interval(1.0,Inf), IntervalArithmetic.def), 2)[2], Interval(interval(1.0,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1), IntervalArithmetic.dac), Interval(interval(-Inf,-1.0), IntervalArithmetic.def), 2)[2], Interval(interval(-0x1.e666666666667p+0,-1.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-23.0,-1.0), IntervalArithmetic.dac), 3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(interval(-23.0,-1.0), IntervalArithmetic.com), 3)[2], Interval(interval(-23.0,-1.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,0.0), IntervalArithmetic.def), Interval(interval(1.0,2.0), IntervalArithmetic.dac), 3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3), IntervalArithmetic.com), Interval(interval(1.0,Inf), IntervalArithmetic.dac), 3)[2], Interval(interval(1.0,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5), IntervalArithmetic.com), Interval(interval(-Inf,-1.0), IntervalArithmetic.dac), 3)[2], Interval(interval(-0x1.e666666666667p+0,-1.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-3.0,17.3), IntervalArithmetic.def), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,Inf), IntervalArithmetic.dac), Interval(interval(-5.1,-0.1), IntervalArithmetic.dac), -2)[2], Interval(interval(-5.1,-0.1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,0.0), IntervalArithmetic.def), Interval(interval(27.2,55.1), IntervalArithmetic.dac), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.3F0C482C977C9P-17,Inf), IntervalArithmetic.def), Interval(interval(-Inf,-0x1.FFFFFFFFFFFFFp1023), IntervalArithmetic.dac), -2)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.793D85EF38E47P-3,0x1.388P+13), IntervalArithmetic.com), Interval(interval(1.0,Inf), IntervalArithmetic.dac), -2)[2], Interval(interval(1.0,0x1.2a3d70a3d70a5p+1), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3), IntervalArithmetic.com), Interval(interval(-Inf,-1.0), IntervalArithmetic.dac), -2)[2], Interval(interval(-0x1.e666666666667p+0,-1.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-5.1,55.5), IntervalArithmetic.def), -1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(interval(-5.1,55.5), IntervalArithmetic.dac), -1)[2], Interval(interval(-5.1,55.5), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,0.0), IntervalArithmetic.dac), Interval(interval(-5.1,55.5), IntervalArithmetic.def), -1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-Inf,-0.0), IntervalArithmetic.dac), Interval(interval(-1.0,1.0), IntervalArithmetic.com), -1)[2], Interval(interval(-1.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0x1.B77C278DBBE13P-2,0x1.9P+6), IntervalArithmetic.def), Interval(interval(-1.0,0.0), IntervalArithmetic.dac), -1)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-5.1,55.5), IntervalArithmetic.dac), -3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(interval(-5.1,55.5), IntervalArithmetic.def), -3)[2], Interval(interval(-5.1,55.5), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(0.0,0.0), IntervalArithmetic.def), Interval(interval(-5.1,55.5), IntervalArithmetic.def), -3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-Inf,0.0), IntervalArithmetic.dac), Interval(interval(5.1,55.5), IntervalArithmetic.com), -3)[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(power_rev(Interval(interval(-Inf,-0.0), IntervalArithmetic.dac), Interval(interval(-32.0,1.1), IntervalArithmetic.def), -3)[2], Interval(interval(-32.0,0.0), IntervalArithmetic.trv)) - -end - -@testset "minimal_sin_rev_test" begin - - @test isequal_interval(sin_rev(emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(-2.0,-1.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(1.1, 2.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(-1.0,1.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(0.0,0.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53))[2], entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_sin_rev_bin_test" begin - - @test isequal_interval(sin_rev(emptyinterval(BareInterval{Float64}), interval(-1.2,12.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(-2.0,-1.1), interval(-5.0, 5.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(1.1, 2.0), interval(-5.0, 5.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(-1.0,1.0), interval(-1.2,12.1))[2], interval(-1.2,12.1)) - - @test isequal_interval(sin_rev(interval(0.0,0.0), interval(-1.0,1.0))[2], interval(0.0,0.0)) - - @test isequal_interval(sin_rev(interval(-0.0,-0.0), interval(2.0,2.5))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(sin_rev(interval(-0.0,-0.0), interval(3.0,3.5))[2], interval(0x1.921fb54442d18p+1,0x1.921fb54442d19p+1)) - - @test isequal_interval(sin_rev(interval(0x1.FFFFFFFFFFFFFP-1,0x1P+0), interval(1.57,1.58))[2], interval(0x1.921fb50442d18p+0,0x1.921fb58442d1ap+0)) - - @test isequal_interval(sin_rev(interval(0.0,0x1P+0), interval(-0.1,1.58))[2], interval(0.0,1.58)) - - @test isequal_interval(sin_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), interval(3.14,3.15))[2], interval(0x1.921FB54442D17P+1,0x1.921FB54442D19P+1)) - - @test isequal_interval(sin_rev(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), interval(3.14,3.15))[2], interval(0x1.921FB54442D18P+1,0x1.921FB54442D1aP+1)) - - @test isequal_interval(sin_rev(interval(-0x1.72CECE675D1FDP-52,0x1.1A62633145C07P-53), interval(3.14,3.15))[2], interval(0x1.921FB54442D17P+1,0x1.921FB54442D1aP+1)) - - @test isequal_interval(sin_rev(interval(0.0,1.0), interval(-0.1,3.15))[2], interval(0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(sin_rev(interval(0.0,1.0), interval(-0.1,3.15))[2], interval(-0.0,0x1.921FB54442D19P+1)) - - @test isequal_interval(sin_rev(interval(-0x1.72CECE675D1FDP-52,1.0), interval(-0.1,3.15))[2], interval(-0x1.72cece675d1fep-52,0x1.921FB54442D1aP+1)) - - @test isequal_interval(sin_rev(interval(-0x1.72CECE675D1FDP-52,1.0), interval(0.0,3.15))[2], interval(0.0,0x1.921FB54442D1aP+1)) - - @test isequal_interval(sin_rev(interval(0x1.1A62633145C06P-53,0x1P+0), interval(3.14,3.15))[2], interval(3.14,0x1.921FB54442D19P+1)) - - @test isequal_interval(sin_rev(interval(-0x1.72CECE675D1FDP-52,0x1P+0), interval(1.57,3.15))[2], interval(1.57,0x1.921FB54442D1AP+1)) - - @test isequal_interval(sin_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), interval(-Inf,3.15))[2], interval(-Inf,0x1.921FB54442D19P+1)) - - @test isequal_interval(sin_rev(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), interval(3.14,Inf))[2], interval(0x1.921FB54442D18P+1,Inf)) - -end - -@testset "minimal_sin_rev_dec_test" begin - - @test isequal_interval(sin_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-2.0,-1.1), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(1.1, 2.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-1.0,1.0), IntervalArithmetic.com))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0.0,0.0), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.def))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_sin_rev_dec_bin_test" begin - - @test isequal_interval(sin_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-1.2,12.1), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-2.0,-1.1), IntervalArithmetic.def), Interval(interval(-5.0, 5.0), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(1.1, 2.0), IntervalArithmetic.dac), Interval(interval(-5.0, 5.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-1.0,1.0), IntervalArithmetic.com), Interval(interval(-1.2,12.1), IntervalArithmetic.def))[2], Interval(interval(-1.2,12.1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0.0,0.0), IntervalArithmetic.dac), Interval(interval(-1.0,1.0), IntervalArithmetic.def))[2], Interval(interval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0.0,-0.0), IntervalArithmetic.def), Interval(interval(2.0,2.5), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0.0,-0.0), IntervalArithmetic.def), Interval(interval(3.0,3.5), IntervalArithmetic.dac))[2], Interval(interval(0x1.921fb54442d18p+1,0x1.921fb54442d19p+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0x1.FFFFFFFFFFFFFP-1,0x1P+0), IntervalArithmetic.dac), Interval(interval(1.57,1.58), IntervalArithmetic.dac))[2], Interval(interval(0x1.921fb50442d18p+0,0x1.921fb58442d1ap+0), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0.0,0x1P+0), IntervalArithmetic.com), Interval(interval(-0.1,1.58), IntervalArithmetic.dac))[2], Interval(interval(0.0,1.58), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.com), Interval(interval(3.14,3.15), IntervalArithmetic.def))[2], Interval(interval(0x1.921FB54442D17P+1,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), IntervalArithmetic.com), Interval(interval(3.14,3.15), IntervalArithmetic.dac))[2], Interval(interval(0x1.921FB54442D18P+1,0x1.921FB54442D1aP+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0x1.72CECE675D1FDP-52,0x1.1A62633145C07P-53), IntervalArithmetic.dac), Interval(interval(3.14,3.15), IntervalArithmetic.com))[2], Interval(interval(0x1.921FB54442D17P+1,0x1.921FB54442D1aP+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0.0,1.0), IntervalArithmetic.def), Interval(interval(-0.1,3.15), IntervalArithmetic.def))[2], Interval(interval(0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0.0,1.0), IntervalArithmetic.dac), Interval(interval(-0.1,3.15), IntervalArithmetic.com))[2], Interval(interval(-0.0,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0x1.72CECE675D1FDP-52,1.0), IntervalArithmetic.def), Interval(interval(-0.1,3.15), IntervalArithmetic.def))[2], Interval(interval(-0x1.72cece675d1fep-52,0x1.921FB54442D1aP+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0x1.72CECE675D1FDP-52,1.0), IntervalArithmetic.com), Interval(interval(0.0,3.15), IntervalArithmetic.dac))[2], Interval(interval(0.0,0x1.921FB54442D1aP+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0x1.1A62633145C06P-53,0x1P+0), IntervalArithmetic.def), Interval(interval(3.14,3.15), IntervalArithmetic.com))[2], Interval(interval(3.14,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0x1.72CECE675D1FDP-52,0x1P+0), IntervalArithmetic.dac), Interval(interval(1.57,3.15), IntervalArithmetic.com))[2], Interval(interval(1.57,0x1.921FB54442D1AP+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.com), Interval(interval(-Inf,3.15), IntervalArithmetic.dac))[2], Interval(interval(-Inf,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(sin_rev(Interval(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), IntervalArithmetic.com), Interval(interval(3.14,Inf), IntervalArithmetic.dac))[2], Interval(interval(0x1.921FB54442D18P+1,Inf), IntervalArithmetic.trv)) - -end - -@testset "minimal_cos_rev_test" begin - - @test isequal_interval(cos_rev(emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(-2.0,-1.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(1.1, 2.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(-1.0,1.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(0.0,0.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53))[2], entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_cos_rev_bin_test" begin - - @test isequal_interval(cos_rev(emptyinterval(BareInterval{Float64}), interval(-1.2,12.1))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(-2.0,-1.1), interval(-5.0, 5.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(1.1, 2.0), interval(-5.0, 5.0))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cos_rev(interval(-1.0,1.0), interval(-1.2,12.1))[2], interval(-1.2,12.1)) - - @test isequal_interval(cos_rev(interval(1.0,1.0), interval(-0.1,0.1))[2], interval(0.0,0.0)) - - @test isequal_interval(cos_rev(interval(-1.0,-1.0), interval(3.14,3.15))[2], interval(0x1.921fb54442d18p+1,0x1.921fb54442d1ap+1)) - - @test isequal_interval(cos_rev(interval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54), interval(1.57,1.58))[2], interval(0x1.921FB54442D17P+0,0x1.921FB54442D19P+0)) - - @test isequal_interval(cos_rev(interval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53), interval(1.57,1.58))[2], interval(0x1.921FB54442D18P+0,0x1.921FB54442D1AP+0)) - - @test isequal_interval(cos_rev(interval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54), interval(1.57,1.58))[2], interval(0x1.921FB54442D17P+0,0x1.921FB54442D1aP+0)) - - @test isequal_interval(cos_rev(interval(0x1.1A62633145C06P-54,1.0), interval(-2.0,2.0))[2], interval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0)) - - @test isequal_interval(cos_rev(interval(0x1.1A62633145C06P-54,1.0), interval(0.0,2.0))[2], interval(0.0,0x1.921FB54442D19P+0)) - - @test isequal_interval(cos_rev(interval(-0x1.72CECE675D1FDP-53,1.0), interval(-0.1,1.5708))[2], interval(-0.1,0x1.921FB54442D1aP+0)) - - @test isequal_interval(cos_rev(interval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), interval(3.14,3.15))[2], interval(0x1.921fb52442d18p+1,0x1.921fb56442d1ap+1)) - - @test isequal_interval(cos_rev(interval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), interval(-3.15,-3.14))[2], interval(-0x1.921fb56442d1ap+1,-0x1.921fb52442d18p+1)) - - @test isequal_interval(cos_rev(interval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), interval(9.42,9.45))[2], interval(0x1.2d97c7eb321d2p+3,0x1.2d97c7fb321d3p+3)) - - @test isequal_interval(cos_rev(interval(0x1.87996529F9D92P-1,1.0), interval(-1.0,0.1))[2], interval(-0x1.6666666666667p-1,0.1)) - - @test isequal_interval(cos_rev(interval(-0x1.AA22657537205P-2,0x1.14A280FB5068CP-1), interval(0.0,2.1))[2], interval(0x1.fffffffffffffp-1,0x1.0000000000001p+1)) - - @test isequal_interval(cos_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), interval(-Inf,1.58))[2], interval(-Inf,0x1.921FB54442D18P+0)) - - @test isequal_interval(cos_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), interval(-Inf,1.5))[2], interval(-Inf,-0x1.921FB54442D17P+0)) - - @test isequal_interval(cos_rev(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), interval(-1.58,Inf))[2], interval(-0x1.921fb54442d1ap+0,Inf)) - - @test isequal_interval(cos_rev(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), interval(-1.5,Inf))[2], interval(0x1.921fb54442d19p+0,Inf)) - -end - -@testset "minimal_cos_rev_dec_test" begin - - @test isequal_interval(cos_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-2.0,-1.1), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(1.1, 2.0), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-1.0,1.0), IntervalArithmetic.com))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0.0,0.0), IntervalArithmetic.def))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_cos_rev_dec_bin_test" begin - - @test isequal_interval(cos_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-1.2,12.1), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-2.0,-1.1), IntervalArithmetic.dac), Interval(interval(-5.0, 5.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(1.1, 2.0), IntervalArithmetic.dac), Interval(interval(-5.0, 5.0), IntervalArithmetic.com))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-1.0,1.0), IntervalArithmetic.dac), Interval(interval(-1.2,12.1), IntervalArithmetic.def))[2], Interval(interval(-1.2,12.1), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(1.0,1.0), IntervalArithmetic.def), Interval(interval(-0.1,0.1), IntervalArithmetic.dac))[2], Interval(interval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-1.0,-1.0), IntervalArithmetic.com), Interval(interval(3.14,3.15), IntervalArithmetic.dac))[2], Interval(interval(0x1.921fb54442d18p+1,0x1.921fb54442d1ap+1), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54), IntervalArithmetic.def), Interval(interval(1.57,1.58), IntervalArithmetic.def))[2], Interval(interval(0x1.921FB54442D17P+0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53), IntervalArithmetic.dac), Interval(interval(1.57,1.58), IntervalArithmetic.dac))[2], Interval(interval(0x1.921FB54442D18P+0,0x1.921FB54442D1AP+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54), IntervalArithmetic.com), Interval(interval(1.57,1.58), IntervalArithmetic.dac))[2], Interval(interval(0x1.921FB54442D17P+0,0x1.921FB54442D1aP+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.1A62633145C06P-54,1.0), IntervalArithmetic.def), Interval(interval(-2.0,2.0), IntervalArithmetic.com))[2], Interval(interval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.1A62633145C06P-54,1.0), IntervalArithmetic.dac), Interval(interval(0.0,2.0), IntervalArithmetic.def))[2], Interval(interval(0.0,0x1.921FB54442D19P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1.72CECE675D1FDP-53,1.0), IntervalArithmetic.def), Interval(interval(-0.1,1.5708), IntervalArithmetic.dac))[2], Interval(interval(-0.1,0x1.921FB54442D1aP+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.dac), Interval(interval(3.14,3.15), IntervalArithmetic.def))[2], Interval(interval(0x1.921fb52442d18p+1,0x1.921fb56442d1ap+1), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.def), Interval(interval(-3.15,-3.14), IntervalArithmetic.com))[2], Interval(interval(-0x1.921fb56442d1ap+1,-0x1.921fb52442d18p+1), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), IntervalArithmetic.def), Interval(interval(9.42,9.45), IntervalArithmetic.dac))[2], Interval(interval(0x1.2d97c7eb321d2p+3,0x1.2d97c7fb321d3p+3), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.87996529F9D92P-1,1.0), IntervalArithmetic.dac), Interval(interval(-1.0,0.1), IntervalArithmetic.def))[2], Interval(interval(-0x1.6666666666667p-1,0.1), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1.AA22657537205P-2,0x1.14A280FB5068CP-1), IntervalArithmetic.com), Interval(interval(0.0,2.1), IntervalArithmetic.dac))[2], Interval(interval(0x1.fffffffffffffp-1,0x1.0000000000001p+1), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.com), Interval(interval(-Inf,1.58), IntervalArithmetic.dac))[2], Interval(interval(-Inf,0x1.921FB54442D18P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.def), Interval(interval(-Inf,1.5), IntervalArithmetic.dac))[2], Interval(interval(-Inf,-0x1.921FB54442D17P+0), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), IntervalArithmetic.dac), Interval(interval(-1.58,Inf), IntervalArithmetic.dac))[2], Interval(interval(-0x1.921fb54442d1ap+0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(cos_rev(Interval(interval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52), IntervalArithmetic.def), Interval(interval(-1.5,Inf), IntervalArithmetic.dac))[2], Interval(interval(0x1.921fb54442d19p+0,Inf), IntervalArithmetic.trv)) - -end - -@testset "minimal_tan_rev_test" begin - - @test isequal_interval(tan_rev(emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(tan_rev(interval(-1.0,1.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan_rev(interval(-156.0,-12.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan_rev(interval(0.0,0.0))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan_rev(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53))[2], entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_tan_rev_bin_test" begin - - @test isequal_interval(tan_rev(emptyinterval(BareInterval{Float64}), interval(-1.5708,1.5708))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(tan_rev(entireinterval(BareInterval{Float64}), interval(-1.5708,1.5708))[2], interval(-1.5708,1.5708)) - - @test isequal_interval(tan_rev(interval(0.0,0.0), interval(-1.5708,1.5708))[2], interval(0.0,0.0)) - - @test isequal_interval(tan_rev(interval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53), interval(-1.5708,1.5708))[2], interval(-0x1.921fb54442d1bp+0,0x1.921fb54442d19p+0)) - - @test isequal_interval(tan_rev(interval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53), interval(3.14,3.15))[2], interval(0x1.921FB54442D17P+1,0x1.921FB54442D19P+1)) - - @test isequal_interval(tan_rev(interval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52), interval(-3.15,3.15))[2], interval(-0x1.921FB54442D19P+1,0x1.921FB54442D1aP+1)) - - @test isequal_interval(tan_rev(interval(-0x1.D02967C31p+53,0x1.D02967C31p+53), interval(-Inf,1.5707965))[2], interval(-Inf, +0x1.921FB82C2BD7Fp0)) - - @test isequal_interval(tan_rev(interval(-0x1.D02967C31p+53,0x1.D02967C31p+53), interval(-1.5707965,Inf))[2], interval(-0x1.921FB82C2BD7Fp0, +Inf)) - - @test isequal_interval(tan_rev(interval(-0x1.D02967C31p+53,0x1.D02967C31p+53), interval(-1.5707965,1.5707965))[2], interval(-0x1.921FB82C2BD7Fp0, +0x1.921FB82C2BD7Fp0)) - - @test isequal_interval(tan_rev(interval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53), interval(-1.5707965,1.5707965))[2], interval(-1.5707965,1.5707965)) - -end - -@testset "minimal_tan_rev_dec_test" begin - - @test isequal_interval(tan_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-1.0,1.0), IntervalArithmetic.com))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-156.0,-12.0), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(0.0,0.0), IntervalArithmetic.def))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53), IntervalArithmetic.com))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end - -@testset "minimal_tan_rev_dec_bin_test" begin - - @test isequal_interval(tan_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(-1.5708,1.5708), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.def), Interval(interval(-1.5708,1.5708), IntervalArithmetic.dac))[2], Interval(interval(-1.5708,1.5708), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(0.0,0.0), IntervalArithmetic.com), Interval(interval(-1.5708,1.5708), IntervalArithmetic.def))[2], Interval(interval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53), IntervalArithmetic.dac), Interval(interval(-1.5708,1.5708), IntervalArithmetic.def))[2], Interval(interval(-0x1.921fb54442d1bp+0,0x1.921fb54442d19p+0), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53), IntervalArithmetic.def), Interval(interval(3.14,3.15), IntervalArithmetic.dac))[2], Interval(interval(0x1.921FB54442D17P+1,0x1.921FB54442D19P+1), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52), IntervalArithmetic.com), Interval(interval(-3.15,3.15), IntervalArithmetic.com))[2], Interval(interval(-0x1.921FB54442D19P+1,0x1.921FB54442D1aP+1), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-0x1.D02967C31p+53,0x1.D02967C31p+53), IntervalArithmetic.def), Interval(interval(-Inf,1.5707965), IntervalArithmetic.def))[2], Interval(interval(-Inf,0x1.921FB82C2BD7Fp0), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-0x1.D02967C31p+53,0x1.D02967C31p+53), IntervalArithmetic.com), Interval(interval(-1.5707965,Inf), IntervalArithmetic.dac))[2], Interval(interval(-0x1.921FB82C2BD7Fp0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-0x1.D02967C31p+53,0x1.D02967C31p+53), IntervalArithmetic.com), Interval(interval(-1.5707965,1.5707965), IntervalArithmetic.com))[2], Interval(interval(-0x1.921FB82C2BD7Fp0,0x1.921FB82C2BD7Fp0), IntervalArithmetic.trv)) - - @test isequal_interval(tan_rev(Interval(interval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53), IntervalArithmetic.dac), Interval(interval(-1.5707965,1.5707965), IntervalArithmetic.def))[2], Interval(interval(-1.5707965,1.5707965), IntervalArithmetic.trv)) - -end - -@testset "minimal_cosh_rev_test" begin - - @test isequal_interval(cosh_rev(emptyinterval(BareInterval{Float64}))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cosh_rev(interval(1.0,Inf))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(cosh_rev(interval(0.0,Inf))[2], entireinterval(BareInterval{Float64})) - - @test isequal_interval(cosh_rev(interval(1.0,1.0))[2], interval(0.0,0.0)) - - @test isequal_interval(cosh_rev(interval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432))[2], interval(-0x1.2C903022DD7ABP+8,0x1.2C903022DD7ABP+8)) - -end - -@testset "minimal_cosh_rev_bin_test" begin - - @test isequal_interval(cosh_rev(emptyinterval(BareInterval{Float64}), interval(0.0,Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cosh_rev(interval(1.0,Inf), interval(0.0,Inf))[2], interval(0.0,Inf)) - - @test isequal_interval(cosh_rev(interval(0.0,Inf), interval(1.0,2.0))[2], interval(1.0,2.0)) - - @test isequal_interval(cosh_rev(interval(1.0,1.0), interval(1.0,Inf))[2], emptyinterval(BareInterval{Float64})) - - @test isequal_interval(cosh_rev(interval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), interval(-Inf,0.0))[2], interval(-0x1.2C903022DD7ABP+8,-0x1.fffffffffffffp-1)) - -end - -@testset "minimal_cosh_rev_dec_test" begin - - @test isequal_interval(cosh_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(1.0,Inf), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(0.0,Inf), IntervalArithmetic.dac))[2], Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(1.0,1.0), IntervalArithmetic.def))[2], Interval(interval(0.0,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), IntervalArithmetic.com))[2], Interval(interval(-0x1.2C903022DD7ABP+8,0x1.2C903022DD7ABP+8), IntervalArithmetic.trv)) - -end - -@testset "minimal_cosh_rev_dec_bin_test" begin - - @test isequal_interval(cosh_rev(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(interval(0.0,Inf), IntervalArithmetic.dac))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(1.0,Inf), IntervalArithmetic.def), Interval(interval(0.0,Inf), IntervalArithmetic.dac))[2], Interval(interval(0.0,Inf), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(0.0,Inf), IntervalArithmetic.def), Interval(interval(1.0,2.0), IntervalArithmetic.com))[2], Interval(interval(1.0,2.0), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(1.0,1.0), IntervalArithmetic.dac), Interval(interval(1.0,Inf), IntervalArithmetic.def))[2], Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(cosh_rev(Interval(interval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), IntervalArithmetic.com), Interval(interval(-Inf,0.0), IntervalArithmetic.dac))[2], Interval(interval(-0x1.2C903022DD7ABP+8,-0x1.fffffffffffffp-1), IntervalArithmetic.trv)) - -end - -@testset "minimal_mul_rev_test" begin - - @test isequal_interval(mul_rev_IEEE1788(emptyinterval(BareInterval{Float64}), interval(1.0, 2.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(1.0, 2.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-2.1, -0.4)), interval(0x1.999999999999AP-3, 0x1.5P+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-2.1, -0.4)), interval(0x1.999999999999AP-3, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-2.1, -0.4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-2.1, -0.4)), interval(-Inf, -0x1.745D1745D1745P-2)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-2.1, -0.4)), interval(-0x1.A400000000001P+7, -0x1.745D1745D1745P-2)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-2.1, -0.4)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-2.1, -0.4)), interval(0.0, 0x1.5P+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-2.1, -0.4)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-2.1, -0.4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-2.1, -0.4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-2.1, -0.4)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-2.1, -0.4)), interval(-0x1.A400000000001P+7, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-2.1, -0.4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-2.1, 0.0)), interval(0.0, 0x1.5P+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-2.1, 0.0)), interval(-0x1.A400000000001P+7, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-2.1, 0.0)), interval(0.0, 0x1.5P+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-2.1, 0.0)), interval(-0x1.A400000000001P+7, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-2.1, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-2.1, 0.12)), interval(-0x1.3333333333333P+0, 0x1.5P+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-2.1, 0.12)), interval(-0x1.A400000000001P+7 , 0x1.8P+3)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-2.1, 0.12)), interval(-0x1.3333333333333P+0, 0x1.5P+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-2.1, 0.12)), interval(-0x1.A400000000001P+7 , 0x1.8P+3)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-2.1, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(0.0, 0.12)), interval(-0x1.3333333333333P+0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(0.0, 0.12)), interval(0.0, 0x1.8P+3)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(0.0, 0.12)), interval(-0x1.3333333333333P+0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(0.0, 0.12)), interval(0.0, 0x1.8P+3)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(0.0, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(0.01, 0.12)), interval(-0x1.3333333333333P+0, -0x1.47AE147AE147BP-8)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(0.01, 0.12)), interval(-Inf, -0x1.47AE147AE147BP-8)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(0.01, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(0.01, 0.12)), interval(0x1.29E4129E4129DP-7, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(0.01, 0.12)), interval(0x1.29E4129E4129DP-7, 0x1.8P+3)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(0.01, 0.12)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(0.01, 0.12)), interval(-0x1.3333333333333P+0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(0.01, 0.12)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(0.01, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(0.01, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(0.01, 0.12)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(0.01, 0.12)), interval(0.0, 0x1.8P+3)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(0.01, 0.12)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(0.0, 0.0)), interval(0.0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(0.0, 0.0)), interval(0.0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(0.0, 0.0)), interval(0.0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(0.0, 0.0)), interval(0.0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(0.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-Inf, -0.1)), interval(0x1.999999999999AP-5, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-Inf, -0.1)), interval(0x1.999999999999AP-5 , Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-Inf, -0.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-Inf, -0.1)), interval(-Inf, -0x1.745D1745D1745P-4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-Inf, -0.1)), interval(-Inf, -0x1.745D1745D1745P-4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-Inf, -0.1)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-Inf, -0.1)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-Inf, -0.1)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-Inf, -0.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-Inf, -0.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-Inf, -0.1)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-Inf, -0.1)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-Inf, -0.1)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-Inf, 0.0)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-Inf, 0.0)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-Inf, 0.0)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-Inf, 0.0)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-Inf, 0.3)), interval(-0x1.8P+1, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-Inf, 0.3)), interval(-Inf, 0x1.EP+4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-Inf, 0.3)), interval(-0x1.8P+1, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-Inf, 0.3)), interval(-Inf, 0x1.EP+4)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-Inf, 0.3)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-0.21, Inf)), interval(-Inf , 0x1.0CCCCCCCCCCCDP+1)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-0.21, Inf)), interval(-0x1.5P+4, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(-0.21, Inf)), interval(-Inf, 0x1.0CCCCCCCCCCCDP+1)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(-0.21, Inf)), interval(-0x1.5P+4, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(-0.21, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(0.0, Inf)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(0.0, Inf)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(0.0, Inf)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(0.0, Inf)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(0.0, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(0.04, Inf)), interval(-Inf, -0x1.47AE147AE147BP-6)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), interval(0.04, Inf)), interval(-Inf, -0x1.47AE147AE147BP-6)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(0.04, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), interval(0.04, Inf)), interval(0x1.29E4129E4129DP-5, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(0.04, Inf)), interval(0x1.29E4129E4129DP-5, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), interval(0.04, Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(0.04, Inf)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), interval(0.04, Inf)), interval(-Inf, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), interval(0.04, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), interval(0.04, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), interval(0.04, Inf)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), interval(0.04, Inf)), interval(0.0, Inf)) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), interval(0.04, Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 1.1), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, 0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, 1.1), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.0, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, Inf), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_mul_rev_ten_test" begin - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, -0.1), interval(-2.1, -0.4), interval(-2.1, -0.4)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(-2.1, -0.4), interval(-2.1, -0.4)), interval(-2.1, -0.4)) - - @test isequal_interval(mul_rev_IEEE1788(interval(0.01, 1.1), interval(-2.1, 0.0), interval(-2.1, 0.0)), interval(-2.1,0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-Inf, -0.1), interval(0.0, 0.12), interval(0.0, 0.12)), interval(0.0, 0.0)) - - @test isequal_interval(mul_rev_IEEE1788(interval(-2.0, 1.1), interval(0.04, Inf), interval(0.04, Inf)), interval(0.04, Inf)) - -end - -@testset "minimal_mul_rev_dec_test" begin - - @test isnai(mul_rev_IEEE1788(nai(), Interval(interval(1.0,2.0), IntervalArithmetic.dac))) - - @test isnai(mul_rev_IEEE1788(Interval(interval(1.0,2.0), IntervalArithmetic.dac), nai())) - - @test isnai(mul_rev_IEEE1788(nai(), nai())) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-2.0, -0.1), IntervalArithmetic.dac), Interval(interval(-2.1, -0.4), IntervalArithmetic.dac)), Interval(interval(0x1.999999999999AP-3, 0x1.5P+4), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-2.0, -0.1), IntervalArithmetic.def), Interval(interval(-2.1, 0.0), IntervalArithmetic.def)), Interval(interval(0.0, 0x1.5P+4), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-2.0, -0.1), IntervalArithmetic.com), Interval(interval(-2.1, 0.12), IntervalArithmetic.dac)), Interval(interval(-0x1.3333333333333P+0, 0x1.5P+4), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-Inf, -0.1), IntervalArithmetic.dac), Interval(interval(0.0, 0.12), IntervalArithmetic.com)), Interval(interval(-0x1.3333333333333P+0, 0.0), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(0.01, 1.1), IntervalArithmetic.def), Interval(interval(0.01, 0.12), IntervalArithmetic.dac)), Interval(interval(0x1.29E4129E4129DP-7, 0x1.8P+3), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(0.01, 1.1), IntervalArithmetic.dac), Interval(interval(-Inf, 0.3), IntervalArithmetic.def)), Interval(interval(-Inf, 0x1.EP+4), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-Inf, -0.1), IntervalArithmetic.trv), Interval(interval(-0.21, Inf), IntervalArithmetic.dac)), Interval(interval(-Inf, 0x1.0CCCCCCCCCCCDP+1), IntervalArithmetic.trv)) - -end - -@testset "minimal_mul_rev_dec_ten_test" begin - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-2.0, -0.1), IntervalArithmetic.dac), Interval(interval(-2.1, -0.4), IntervalArithmetic.dac), Interval(interval(-2.1, -0.4), IntervalArithmetic.dac)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-2.0, 1.1), IntervalArithmetic.def), Interval(interval(-2.1, -0.4), IntervalArithmetic.com), Interval(interval(-2.1, -0.4), IntervalArithmetic.com)), Interval(interval(-2.1, -0.4), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(0.01, 1.1), IntervalArithmetic.com), Interval(interval(-2.1, 0.0), IntervalArithmetic.dac), Interval(interval(-2.1, 0.0), IntervalArithmetic.dac)), Interval(interval(-2.1,0.0), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-Inf, -0.1), IntervalArithmetic.dac), Interval(interval(0.0, 0.12), IntervalArithmetic.com), Interval(interval(0.0, 0.12), IntervalArithmetic.com)), Interval(interval(0.0, 0.0), IntervalArithmetic.trv)) - - @test isequal_interval(mul_rev_IEEE1788(Interval(interval(-2.0, 1.1), IntervalArithmetic.def), Interval(interval(0.04, Inf), IntervalArithmetic.dac), Interval(interval(0.04, Inf), IntervalArithmetic.dac)), Interval(interval(0.04, Inf), IntervalArithmetic.trv)) - -end diff --git a/test/test_ITF1788/libieeep1788_set.jl b/test/test_ITF1788/libieeep1788_set.jl deleted file mode 100644 index eee6b561c..000000000 --- a/test/test_ITF1788/libieeep1788_set.jl +++ /dev/null @@ -1,55 +0,0 @@ -@testset "minimal_intersection_test" begin - - @test isequal_interval(intersect_interval(bareinterval(1.0,3.0), bareinterval(2.1,4.0)), bareinterval(2.1,3.0)) - - @test isequal_interval(intersect_interval(bareinterval(1.0,3.0), bareinterval(3.0,4.0)), bareinterval(3.0,3.0)) - - @test isequal_interval(intersect_interval(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})), bareinterval(1.0,3.0)) - -end - -@testset "minimal_intersection_dec_test" begin - - @test isequal_interval(intersect_interval(Interval(bareinterval(1.0,3.0), IntervalArithmetic.com), Interval(bareinterval(2.1,4.0), IntervalArithmetic.com)), Interval(bareinterval(2.1,3.0), IntervalArithmetic.trv)) - - @test isequal_interval(intersect_interval(Interval(bareinterval(1.0,3.0), IntervalArithmetic.dac), Interval(bareinterval(3.0,4.0), IntervalArithmetic.def)), Interval(bareinterval(3.0,3.0), IntervalArithmetic.trv)) - - @test isequal_interval(intersect_interval(Interval(bareinterval(1.0,3.0), IntervalArithmetic.def), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(intersect_interval(Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(intersect_interval(Interval(bareinterval(1.0,3.0), IntervalArithmetic.dac), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(bareinterval(1.0,3.0), IntervalArithmetic.trv)) - -end - -@testset "minimal_convex_convexhull_test" begin - - @test isequal_interval(hull(bareinterval(1.0,3.0), bareinterval(2.1,4.0)), bareinterval(1.0,4.0)) - - @test isequal_interval(hull(bareinterval(1.0,1.0), bareinterval(2.1,4.0)), bareinterval(1.0,4.0)) - - @test isequal_interval(hull(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})), bareinterval(1.0,3.0)) - - @test isequal_interval(hull(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(hull(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - -end - -@testset "minimal_convex_convexhull_dec_test" begin - - @test isequal_interval(hull(Interval(bareinterval(1.0,3.0), IntervalArithmetic.trv), Interval(bareinterval(2.1,4.0), IntervalArithmetic.trv)), Interval(bareinterval(1.0,4.0), IntervalArithmetic.trv)) - - @test isequal_interval(hull(Interval(bareinterval(1.0,1.0), IntervalArithmetic.trv), Interval(bareinterval(2.1,4.0), IntervalArithmetic.trv)), Interval(bareinterval(1.0,4.0), IntervalArithmetic.trv)) - - @test isequal_interval(hull(Interval(bareinterval(1.0,3.0), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(bareinterval(1.0,3.0), IntervalArithmetic.trv)) - - @test isequal_interval(hull(Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)), Interval(emptyinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - - @test isequal_interval(hull(Interval(bareinterval(1.0,3.0), IntervalArithmetic.trv), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.dac)), Interval(entireinterval(BareInterval{Float64}), IntervalArithmetic.trv)) - -end diff --git a/test/test_ITF1788/mpfi.jl b/test/test_ITF1788/mpfi.jl deleted file mode 100644 index 80a84ac59..000000000 --- a/test/test_ITF1788/mpfi.jl +++ /dev/null @@ -1,2991 +0,0 @@ -@testset "mpfi_abs" begin - - @test isequal_interval(abs(bareinterval(-Inf, -7.0)), bareinterval(+7.0, +Inf)) - - @test isequal_interval(abs(bareinterval(-Inf, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(abs(bareinterval(-Inf, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(abs(bareinterval(-Inf, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(abs(entireinterval(BareInterval{Float64})), bareinterval(0.0, +Inf)) - - @test isequal_interval(abs(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(abs(bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(abs(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(abs(bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(abs(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(abs(bareinterval(0x123456789p-16, 0x123456799p-16)), bareinterval(0x123456789p-16, 0x123456799p-16)) - - @test isequal_interval(abs(bareinterval(-0x123456789p-16, 0x123456799p-16)), bareinterval(0.0, 0x123456799p-16)) - -end - -@testset "mpfi_acos" begin - - @test isequal_interval(acos(bareinterval(-1.0, 0.0)), bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51)) - - @test isequal_interval(acos(bareinterval(0.0, 0.0)), bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-52)) - - @test isequal_interval(acos(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x1921fb54442d19p-52)) - - @test isequal_interval(acos(bareinterval(-1.0, -0.5)), bareinterval(0x10c152382d7365p-51, 0x1921fb54442d19p-51)) - - @test isequal_interval(acos(bareinterval(-0.75, -0.25)), bareinterval(0x1d2cf5c7c70f0bp-52, 0x4d6749be4edb1p-49)) - - @test isequal_interval(acos(bareinterval(-0.5, 0.5)), bareinterval(0x10c152382d7365p-52, 0x860a91c16b9b3p-50)) - - @test isequal_interval(acos(bareinterval(0.25, 0.625)), bareinterval(0x1ca94936b98a21p-53, 0x151700e0c14b25p-52)) - - @test isequal_interval(acos(bareinterval(-1.0, 1.0)), bareinterval(0.0, 0x1921fb54442d19p-51)) - -end - -@testset "mpfi_acosh" begin - - @test isequal_interval(acosh(bareinterval(+1.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(acosh(bareinterval(+1.5, +Inf)), bareinterval(0x1ecc2caec51609p-53, +Inf)) - - @test isequal_interval(acosh(bareinterval(1.0, 1.5)), bareinterval(0.0, 0xf661657628b05p-52)) - - @test isequal_interval(acosh(bareinterval(1.5, 1.5)), bareinterval(0x1ecc2caec51609p-53, 0xf661657628b05p-52)) - - @test isequal_interval(acosh(bareinterval(2.0, 1000.0)), bareinterval(0x544909c66010dp-50, 0x799d4ba2a13b5p-48)) - -end - -@testset "mpfi_add" begin - - @test isequal_interval(+(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), bareinterval(-Inf, +1.0)) - - @test isequal_interval(+(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), bareinterval(-Inf, +16.0)) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(-Inf, -7.0)) - - @test isequal_interval(+(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(-7.0, +8.0)) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(+(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), bareinterval(+8.0, +Inf)) - - @test isequal_interval(+(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(0.0, +8.0), bareinterval(0.0, +8.0)), bareinterval(0.0, +16.0)) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(+(bareinterval(0.0, +Inf), bareinterval(-7.0, +8.0)), bareinterval(-7.0, +Inf)) - - @test isequal_interval(+(bareinterval(-0.375, -0x10187p-256), bareinterval(-0.125, 0x1p-240)), bareinterval(-0x1p-1, -0x187p-256)) - - @test isequal_interval(+(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x10000000000000p-93, 0x789abcdp0)), bareinterval(-0x10000000000001p-93, 0x123456789abcdp0)) - - @test isequal_interval(+(bareinterval(-4.0, +7.0), bareinterval(-0x123456789abcdp-17, 3e300)), bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947)) - - @test isequal_interval(+(bareinterval(0x1000100010001p+8, 0x1p+60), bareinterval(0x1000100010001p0, 3.0e300)), bareinterval(+0x1010101010101p+8, 0x8f596b3002c1bp+947)) - - @test isequal_interval(+(bareinterval(+4.0, +8.0), bareinterval(-4.0, -2.0)), bareinterval(0.0, +6.0)) - - @test isequal_interval(+(bareinterval(+4.0, +8.0), bareinterval(-9.0, -8.0)), bareinterval(-5.0, 0.0)) - -end - -@testset "mpfi_add_d" begin - - @test isequal_interval(+(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)), bareinterval(-Inf, -7.0)) - - @test isequal_interval(+(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)), bareinterval(-Inf, -7.0)) - - @test isequal_interval(+(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)), bareinterval(-Inf, -0x1bffffffffffffp-50)) - - @test isequal_interval(+(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)), bareinterval(-Inf, -8.0e-17)) - - @test isequal_interval(+(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(+(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)), bareinterval(-Inf, 0x170ef54646d497p-106)) - - @test isequal_interval(+(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)), bareinterval(-Inf, -0x16345785d89fff00p0)) - - @test isequal_interval(+(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)), bareinterval(-Inf, 8.0)) - - @test isequal_interval(+(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)), bareinterval(-Inf, 0x16345785d8a00100p0)) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(+(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) - - @test isequal_interval(+(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)), bareinterval(-0x114b37f4b51f71p-107, 8.0)) - - @test isequal_interval(+(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 8.0)) - - @test isequal_interval(+(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f7p-103, 0x114b37f4b51f7p-103)), bareinterval(0x114b37f4b51f7p-103, 0x10000000000001p-49)) - - @test isequal_interval(+(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)), bareinterval(-0x50b45a75f7e81p-104, +Inf)) - - @test isequal_interval(+(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(+(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)), bareinterval(0x142d169d7dfa03p-106, +Inf)) - - @test isequal_interval(+(bareinterval(-32.0, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)), bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47)) - - @test isequal_interval(+(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)), bareinterval(0.0, 0x7353d14aa9c2fp-47)) - - @test isequal_interval(+(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48)), bareinterval(-0x104ac2eb5563d1p-48, 0.0)) - - @test isequal_interval(+(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)), bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4)) - - @test isequal_interval(+(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)), bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4)) - - @test isequal_interval(+(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)), bareinterval(0x18p-4, 0x101a3456789abdp-44)) - - @test isequal_interval(+(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)), bareinterval(0xfff8p-4, 0x10018p-4)) - - @test isequal_interval(+(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)), bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4)) - - @test isequal_interval(+(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)), bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4)) - - @test isequal_interval(+(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)), bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44)) - - @test isequal_interval(+(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)), bareinterval(-0x10038p-4, -0x10018p-4)) - -end - -@testset "mpfi_asin" begin - - @test isequal_interval(asin(bareinterval(-1.0, 0.0)), bareinterval(-0x1921fb54442d19p-52, 0.0)) - - @test isequal_interval(asin(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(asin(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x1921fb54442d19p-52)) - - @test isequal_interval(asin(bareinterval(-1.0, -0.5)), bareinterval(-0x1921fb54442d19p-52, -0x10c152382d7365p-53)) - - @test isequal_interval(asin(bareinterval(-0.75, -0.25)), bareinterval(-0x1b235315c680ddp-53, -0x102be9ce0b87cdp-54)) - - @test isequal_interval(asin(bareinterval(-0.5, 0.5)), bareinterval(-0x860a91c16b9b3p-52, 0x860a91c16b9b3p-52)) - - @test isequal_interval(asin(bareinterval(0.25, 0.625)), bareinterval(0x102be9ce0b87cdp-54, 0x159aad71ced00fp-53)) - - @test isequal_interval(asin(bareinterval(-1.0, 1.0)), bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52)) - -end - -@testset "mpfi_asinh" begin - - @test isequal_interval(asinh(bareinterval(-Inf, -7.0)), bareinterval(-Inf, -0x152728c91b5f1dp-51)) - - @test isequal_interval(asinh(bareinterval(-Inf, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(asinh(bareinterval(-Inf, +8.0)), bareinterval(-Inf, 0x58d8dc657eaf5p-49)) - - @test isequal_interval(asinh(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(asinh(bareinterval(-1.0, 0.0)), bareinterval(-0x1c34366179d427p-53, 0.0)) - - @test isequal_interval(asinh(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(asinh(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x1c34366179d427p-53)) - - @test isequal_interval(asinh(bareinterval(0.0, +8.0)), bareinterval(0.0, 0x58d8dc657eaf5p-49)) - - @test isequal_interval(asinh(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(asinh(bareinterval(-6.0, -4.0)), bareinterval(-0x4fbca919fe219p-49, -0x10c1f8a6e80eebp-51)) - - @test isequal_interval(asinh(bareinterval(-2.0, -0.5)), bareinterval(-0x2e32430627a11p-49, -0x1ecc2caec51609p-54)) - - @test isequal_interval(asinh(bareinterval(-1.0, -0.5)), bareinterval(-0x1c34366179d427p-53, -0x1ecc2caec51609p-54)) - - @test isequal_interval(asinh(bareinterval(-0.75, -0.25)), bareinterval(-0x162e42fefa39fp-49, -0xfd67d91ccf31bp-54)) - - @test isequal_interval(asinh(bareinterval(-0.5, 0.5)), bareinterval(-0xf661657628b05p-53, 0xf661657628b05p-53)) - - @test isequal_interval(asinh(bareinterval(0.25, 0.625)), bareinterval(0xfd67d91ccf31bp-54, 0x4b89d40b2fecdp-51)) - - @test isequal_interval(asinh(bareinterval(-1.0, 1.0)), bareinterval(-0x1c34366179d427p-53, 0x1c34366179d427p-53)) - - @test isequal_interval(asinh(bareinterval(0.125, 17.0)), bareinterval(0xff5685b4cb4b9p-55, 0xe1be0ba541ef7p-50)) - - @test isequal_interval(asinh(bareinterval(17.0, 42.0)), bareinterval(0x1c37c174a83dedp-51, 0x8dca6976ad6bdp-49)) - - @test isequal_interval(asinh(bareinterval(-42.0, 17.0)), bareinterval(-0x8dca6976ad6bdp-49, 0xe1be0ba541ef7p-50)) - -end - -@testset "mpfi_atan" begin - - @test isequal_interval(atan(bareinterval(-Inf, -7.0)), bareinterval(-0x1921fb54442d19p-52, -0x5b7315eed597fp-50)) - - @test isequal_interval(atan(bareinterval(-Inf, 0.0)), bareinterval(-0x1921fb54442d19p-52, 0.0)) - - @test isequal_interval(atan(bareinterval(-Inf, +8.0)), bareinterval(-0x1921fb54442d19p-52, 0xb924fd54cb511p-51)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64})), bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52)) - - @test isequal_interval(atan(bareinterval(-1.0, 0.0)), bareinterval(-0x1921fb54442d19p-53, 0.0)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(atan(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x1921fb54442d19p-53)) - - @test isequal_interval(atan(bareinterval(0.0, +8.0)), bareinterval(0.0, 0xb924fd54cb511p-51)) - - @test isequal_interval(atan(bareinterval(0.0, +Inf)), bareinterval(0.0, 0x1921fb54442d19p-52)) - - @test isequal_interval(atan(bareinterval(-6.0, -4.0)), bareinterval(-0x167d8863bc99bdp-52, -0x54da32547a73fp-50)) - - @test isequal_interval(atan(bareinterval(-2.0, -0.5)), bareinterval(-0x11b6e192ebbe45p-52, -0x1dac670561bb4fp-54)) - - @test isequal_interval(atan(bareinterval(-1.0, -0.5)), bareinterval(-0x1921fb54442d19p-53, -0x1dac670561bb4fp-54)) - - @test isequal_interval(atan(bareinterval(-0.75, -0.25)), bareinterval(-0xa4bc7d1934f71p-52, -0x1f5b75f92c80ddp-55)) - - @test isequal_interval(atan(bareinterval(-0.5, 0.5)), bareinterval(-0x1dac670561bb5p-50, 0x1dac670561bb5p-50)) - - @test isequal_interval(atan(bareinterval(0.25, 0.625)), bareinterval(0x1f5b75f92c80ddp-55, 0x47802eaf7bfadp-51)) - - @test isequal_interval(atan(bareinterval(-1.0, 1.0)), bareinterval(-0x1921fb54442d19p-53, 0x1921fb54442d19p-53)) - - @test isequal_interval(atan(bareinterval(0.125, 17.0)), bareinterval(0x1fd5ba9aac2f6dp-56, 0x1831516233f561p-52)) - - @test isequal_interval(atan(bareinterval(17.0, 42.0)), bareinterval(0xc18a8b119fabp-47, 0x18c079f3350d27p-52)) - - @test isequal_interval(atan(bareinterval(-42.0, 17.0)), bareinterval(-0x18c079f3350d27p-52, 0x1831516233f561p-52)) - -end - -@testset "mpfi_atan2" begin - - @test isequal_interval(atan(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), bareinterval(-0x6d9cc4b34bd0dp-50, -0x1700a7c5784633p-53)) - - @test isequal_interval(atan(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), bareinterval(-0x1921fb54442d19p-52, 0.0)) - - @test isequal_interval(atan(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52)) - - @test isequal_interval(atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) - - @test isequal_interval(atan(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, 0x1921fb54442d19p-52)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), bareinterval(0.0, 0.0)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0x1921fb54442d19p-51)) - - @test isequal_interval(atan(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)), bareinterval(0.0, 0x1921fb54442d19p-51)) - - @test isequal_interval(atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, 0x1921fb54442d19p-52)) - - @test isequal_interval(atan(bareinterval(-17.0, -5.0), bareinterval(-4002.0, -1.0)), bareinterval(-0x191f6c4c09a81bp-51, -0x1a12a5465464cfp-52)) - - @test isequal_interval(atan(bareinterval(-17.0, -5.0), bareinterval(1.0, 4002.0)), bareinterval(-0x1831516233f561p-52, -0xa3c20ea13f5e5p-61)) - - @test isequal_interval(atan(bareinterval(5.0, 17.0), bareinterval(1.0, 4002.0)), bareinterval(0xa3c20ea13f5e5p-61, 0x1831516233f561p-52)) - - @test isequal_interval(atan(bareinterval(5.0, 17.0), bareinterval(-4002.0, -1.0)), bareinterval(0x1a12a5465464cfp-52, 0x191f6c4c09a81bp-51)) - - @test isequal_interval(atan(bareinterval(-17.0, 5.0), bareinterval(-4002.0, 1.0)), bareinterval(-0x1921fb54442d19p-51, 0x1921fb54442d19p-51)) - -end - -@testset "mpfi_atanh" begin - - @test isequal_interval(atanh(bareinterval(-1.0, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(atanh(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(atanh(bareinterval(0.0, +1.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(atanh(bareinterval(-1.0, -0.5)), bareinterval(-Inf, -0x8c9f53d568185p-52)) - - @test isequal_interval(atanh(bareinterval(-0.75, -0.25)), bareinterval(-0x3e44e55c64b4bp-50, -0x1058aefa811451p-54)) - - @test isequal_interval(atanh(bareinterval(-0.5, 0.5)), bareinterval(-0x1193ea7aad030bp-53, 0x1193ea7aad030bp-53)) - - @test isequal_interval(atanh(bareinterval(0.25, 0.625)), bareinterval(0x1058aefa811451p-54, 0x2eec3bb76c2b3p-50)) - - @test isequal_interval(atanh(bareinterval(-1.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(atanh(bareinterval(0.125, 1.0)), bareinterval(0x1015891c9eaef7p-55, +Inf)) - -end - -@testset "mpfi_bounded_p" begin - - @test iscommon(bareinterval(-Inf, -8.0)) == false - - @test iscommon(bareinterval(-Inf, 0.0)) == false - - @test iscommon(bareinterval(-Inf, 5.0)) == false - - @test iscommon(entireinterval(BareInterval{Float64})) == false - - @test iscommon(bareinterval(-8.0, 0.0)) == true - - @test iscommon(bareinterval(0.0, 0.0)) == true - - @test iscommon(bareinterval(0.0, 5.0)) == true - - @test iscommon(bareinterval(0.0, +Inf)) == false - - @test iscommon(bareinterval(5.0, +Inf)) == false - - @test iscommon(bareinterval(-34.0, -17.0)) == true - - @test iscommon(bareinterval(-8.0, -1.0)) == true - - @test iscommon(bareinterval(-34.0, 17.0)) == true - - @test iscommon(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == true - - @test iscommon(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == true - - @test iscommon(bareinterval(+8.0, +0x7fffffffffffbp+51)) == true - - @test iscommon(bareinterval(+0x1fffffffffffffp-53, 2.0)) == true - -end - -@testset "mpfi_cbrt" begin - - @test isequal_interval(cbrt(bareinterval(-Inf, -125.0)), bareinterval(-Inf, -5.0)) - - @test isequal_interval(cbrt(bareinterval(-Inf, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(cbrt(bareinterval(-Inf, +64.0)), bareinterval(-Inf, +4.0)) - - @test isequal_interval(cbrt(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cbrt(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(cbrt(bareinterval(0.0, +27.0)), bareinterval(0.0, +3.0)) - - @test isequal_interval(cbrt(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(cbrt(bareinterval(0x40p0, 0x7dp0)), bareinterval(4.0, 5.0)) - - @test isequal_interval(cbrt(bareinterval(-0x1856e4be527197p-354, 0xd8p0)), bareinterval(-0x2e5e58c0083b7bp-154, 6.0)) - - @test isequal_interval(cbrt(bareinterval(0x141a9019a2184dp-1047, 0xc29c78c66ac0fp-678)), bareinterval(0x2b8172e535d44dp-385, 0x24cbd1c55aaa1p-258)) - -end - -@testset "mpfi_cos" begin - - @test isequal_interval(cos(bareinterval(-Inf, -7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-Inf, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-Inf, +8.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(entireinterval(BareInterval{Float64})), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-1.0, 0.0)), bareinterval(0x114a280fb5068bp-53, 1.0)) - - @test isequal_interval(cos(bareinterval(0.0, 0.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(0.0, +1.0)), bareinterval(0x114a280fb5068bp-53, 1.0)) - - @test isequal_interval(cos(bareinterval(0.0, +8.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(0.0, +Inf)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-2.0, -0.5)), bareinterval(-0x1aa22657537205p-54, 0x1c1528065b7d5p-49)) - - @test isequal_interval(cos(bareinterval(-1.0, -0.25)), bareinterval(0x114a280fb5068bp-53, 0xf80aa4fbef751p-52)) - - @test isequal_interval(cos(bareinterval(-0.5, 0.5)), bareinterval(0x1c1528065b7d4fp-53, 1.0)) - - @test isequal_interval(cos(bareinterval(-4.5, 0.625)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(1.0, 0x3243f6a8885a3p-48)), bareinterval(-1.0, 0x4528a03ed41a3p-51)) - - @test isequal_interval(cos(bareinterval(0.125, 17.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(17.0, 42.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -4.0)), bareinterval(-0x14eaa606db24c1p-53, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -5.0)), bareinterval(0x122785706b4ad9p-54, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -6.0)), bareinterval(0x181ff79ed92017p-53, 1.0)) - - @test isequal_interval(cos(bareinterval(-7.0, -7.0)), bareinterval(0x181ff79ed92017p-53, 0x181ff79ed92018p-53)) - - @test isequal_interval(cos(bareinterval(-6.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-6.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-6.0, -1.0)), bareinterval(-1.0, 0x1eb9b7097822f6p-53)) - - @test isequal_interval(cos(bareinterval(-6.0, -2.0)), bareinterval(-1.0, 0x1eb9b7097822f6p-53)) - - @test isequal_interval(cos(bareinterval(-6.0, -3.0)), bareinterval(-1.0, 0x1eb9b7097822f6p-53)) - - @test isequal_interval(cos(bareinterval(-6.0, -4.0)), bareinterval(-0x14eaa606db24c1p-53, 0x1eb9b7097822f6p-53)) - - @test isequal_interval(cos(bareinterval(-6.0, -5.0)), bareinterval(0x122785706b4ad9p-54, 0x1eb9b7097822f6p-53)) - - @test isequal_interval(cos(bareinterval(-6.0, -6.0)), bareinterval(0x1eb9b7097822f5p-53, 0x1eb9b7097822f6p-53)) - - @test isequal_interval(cos(bareinterval(-5.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-5.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-5.0, -1.0)), bareinterval(-1.0, 0x114a280fb5068cp-53)) - - @test isequal_interval(cos(bareinterval(-5.0, -2.0)), bareinterval(-1.0, 0x122785706b4adap-54)) - - @test isequal_interval(cos(bareinterval(-5.0, -3.0)), bareinterval(-1.0, 0x122785706b4adap-54)) - - @test isequal_interval(cos(bareinterval(-5.0, -4.0)), bareinterval(-0x14eaa606db24c1p-53, 0x122785706b4adap-54)) - - @test isequal_interval(cos(bareinterval(-5.0, -5.0)), bareinterval(0x122785706b4ad9p-54, 0x122785706b4adap-54)) - - @test isequal_interval(cos(bareinterval(-4.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-4.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(cos(bareinterval(-4.0, -1.0)), bareinterval(-1.0, 0x114a280fb5068cp-53)) - - @test isequal_interval(cos(bareinterval(-4.0, -2.0)), bareinterval(-1.0, -0x1aa22657537204p-54)) - - @test isequal_interval(cos(bareinterval(-4.0, -3.0)), bareinterval(-1.0, -0x14eaa606db24c0p-53)) - - @test isequal_interval(cos(bareinterval(-4.0, -4.0)), bareinterval(-0x14eaa606db24c1p-53, -0x14eaa606db24c0p-53)) - -end - -@testset "mpfi_cosh" begin - - @test isequal_interval(cosh(bareinterval(-Inf, -7.0)), bareinterval(0x11228949ba3a8bp-43, +Inf)) - - @test isequal_interval(cosh(bareinterval(-Inf, 0.0)), bareinterval(1.0, +Inf)) - - @test isequal_interval(cosh(bareinterval(-Inf, +8.0)), bareinterval(1.0, +Inf)) - - @test isequal_interval(cosh(entireinterval(BareInterval{Float64})), bareinterval(1.0, +Inf)) - - @test isequal_interval(cosh(bareinterval(-1.0, 0.0)), bareinterval(1.0, 0x18b07551d9f551p-52)) - - @test isequal_interval(cosh(bareinterval(0.0, 0.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(cosh(bareinterval(0.0, +1.0)), bareinterval(1.0, 0x18b07551d9f551p-52)) - - @test isequal_interval(cosh(bareinterval(0.0, +8.0)), bareinterval(1.0, 0x1749eaa93f4e77p-42)) - - @test isequal_interval(cosh(bareinterval(0.0, +Inf)), bareinterval(1.0, +Inf)) - - @test isequal_interval(cosh(bareinterval(-0.125, 0.0)), bareinterval(1.0, 0x10200aac16db6fp-52)) - - @test isequal_interval(cosh(bareinterval(0.0, 0x10000000000001p-53)), bareinterval(1.0, 0x120ac1862ae8d1p-52)) - - @test isequal_interval(cosh(bareinterval(-4.5, -0.625)), bareinterval(0x99d310a496b6dp-51, 0x1681ceb0641359p-47)) - - @test isequal_interval(cosh(bareinterval(1.0, 3.0)), bareinterval(0x18b07551d9f55p-48, 0x1422a497d6185fp-49)) - - @test isequal_interval(cosh(bareinterval(17.0, 0xb145bb71d3dbp-38)), bareinterval(0x1709348c0ea503p-29, 0x3ffffffffffa34p+968)) - -end - -@testset "mpfi_cot" begin - - @test isequal_interval(cot(bareinterval(-Inf, -7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(-Inf, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(-8.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(-3.0, 0.0)), bareinterval(-Inf, 0xe07cf2eb32f0bp-49)) - - @test isequal_interval(cot(bareinterval(-1.0, 0.0)), bareinterval(-Inf, -0x148c05d04e1cfdp-53)) - - @test isequal_interval(cot(bareinterval(0.0, +1.0)), bareinterval(0x148c05d04e1cfdp-53, +Inf)) - - @test isequal_interval(cot(bareinterval(0.0, +3.0)), bareinterval(-0xe07cf2eb32f0bp-49, +Inf)) - - @test isequal_interval(cot(bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(-3.0, -2.0)), bareinterval(0x1d4a42e92faa4dp-54, 0xe07cf2eb32f0bp-49)) - - @test isequal_interval(cot(bareinterval(-3.0, -0x1921fb54442d19p-52)), bareinterval(0x5cb3b399d747fp-103, 0xe07cf2eb32f0bp-49)) - - @test isequal_interval(cot(bareinterval(-2.0, 0x1921fb54442d19p-52)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(0.125, 0.5)), bareinterval(0xea4d6bf23e051p-51, 0x1fd549f047f2bbp-50)) - - @test isequal_interval(cot(bareinterval(0.125, 0x1921fb54442d19p-52)), bareinterval(-0x172cece675d1fdp-105, 0x1fd549f047f2bbp-50)) - - @test isequal_interval(cot(bareinterval(0x1921fb54442d19p-52, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(cot(bareinterval(4.0, 0x3243f6a8885a3p-47)), bareinterval(-0x1d02967c31cdb5p-1, 0x1ba35ba1c6b75dp-53)) - - @test isequal_interval(cot(bareinterval(0x13a28c59d5433bp-44, 0x9d9462ceaa19dp-43)), bareinterval(0x148c05d04e1fb7p-53, 0x1cefdde7c84c27p-4)) - -end - -@testset "mpfi_coth" begin - - @test isequal_interval(coth(bareinterval(-Inf, -7.0)), bareinterval(-0x100001be6c882fp-52, -1.0)) - - @test isequal_interval(coth(bareinterval(-Inf, 0.0)), bareinterval(-Inf, -1.0)) - - @test isequal_interval(coth(bareinterval(-Inf, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(coth(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(coth(bareinterval(-8.0, 0.0)), bareinterval(-Inf, -0x1000003c6ab7e7p-52)) - - @test isequal_interval(coth(bareinterval(-3.0, 0.0)), bareinterval(-Inf, -0x10145b3cc9964bp-52)) - - @test isequal_interval(coth(bareinterval(-1.0, 0.0)), bareinterval(-Inf, -0x150231499b6b1dp-52)) - - @test isequal_interval(coth(bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(coth(bareinterval(0.0, +1.0)), bareinterval(0x150231499b6b1dp-52, +Inf)) - - @test isequal_interval(coth(bareinterval(0.0, +3.0)), bareinterval(0x10145b3cc9964bp-52, +Inf)) - - @test isequal_interval(coth(bareinterval(0.0, +8.0)), bareinterval(0x1000003c6ab7e7p-52, +Inf)) - - @test isequal_interval(coth(bareinterval(0.0, +Inf)), bareinterval(1.0, +Inf)) - - @test isequal_interval(coth(bareinterval(-3.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(coth(bareinterval(-10.0, -8.0)), bareinterval(-0x1000003c6ab7e8p-52, -0x100000011b4865p-52)) - - @test isequal_interval(coth(bareinterval(7.0, 17.0)), bareinterval(0x1000000000000fp-52, 0x100001be6c882fp-52)) - - @test isequal_interval(coth(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)), bareinterval(0x114fc6ceb099bdp-51, 0x10005554fa502fp-46)) - -end - -@testset "mpfi_csc" begin - - @test isequal_interval(csc(bareinterval(-Inf, -7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-Inf, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-8.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 0.0)), bareinterval(-Inf, -1.0)) - - @test isequal_interval(csc(bareinterval(-1.0, 0.0)), bareinterval(-Inf, -0x1303aa9620b223p-52)) - - @test isequal_interval(csc(bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(0.0, +1.0)), bareinterval(0x1303aa9620b223p-52, +Inf)) - - @test isequal_interval(csc(bareinterval(0.0, 3.0)), bareinterval(1.0, +Inf)) - - @test isequal_interval(csc(bareinterval(0.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-6.0, -4.0)), bareinterval(1.0, 0x1ca19615f903dap-51)) - - @test isequal_interval(csc(bareinterval(-6.0, -5.0)), bareinterval(0x10af73f9df86b7p-52, 0x1ca19615f903dap-51)) - - @test isequal_interval(csc(bareinterval(-6.0, -6.0)), bareinterval(0x1ca19615f903d9p-51, 0x1ca19615f903dap-51)) - - @test isequal_interval(csc(bareinterval(-5.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-5.0, -4.0)), bareinterval(1.0, 0x15243e8b2f4642p-52)) - - @test isequal_interval(csc(bareinterval(-5.0, -5.0)), bareinterval(0x10af73f9df86b7p-52, 0x10af73f9df86b8p-52)) - - @test isequal_interval(csc(bareinterval(-4.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-4.0, -4.0)), bareinterval(0x15243e8b2f4641p-52, 0x15243e8b2f4642p-52)) - - @test isequal_interval(csc(bareinterval(-3.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-3.0, 0.0)), bareinterval(-Inf, -1.0)) - - @test isequal_interval(csc(bareinterval(-3.0, -1.0)), bareinterval(-0x1c583c440ab0dap-50, -1.0)) - - @test isequal_interval(csc(bareinterval(-3.0, -2.0)), bareinterval(-0x1c583c440ab0dap-50, -0x119893a272f912p-52)) - - @test isequal_interval(csc(bareinterval(-3.0, -3.0)), bareinterval(-0x1c583c440ab0dap-50, -0x1c583c440ab0d9p-50)) - - @test isequal_interval(csc(bareinterval(-2.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-2.0, 0.0)), bareinterval(-Inf, -1.0)) - - @test isequal_interval(csc(bareinterval(-2.0, -1.0)), bareinterval(-0x1303aa9620b224p-52, -1.0)) - - @test isequal_interval(csc(bareinterval(-2.0, -2.0)), bareinterval(-0x119893a272f913p-52, -0x119893a272f912p-52)) - - @test isequal_interval(csc(bareinterval(-1.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(-1.0, 0.0)), bareinterval(-Inf, -0x1303aa9620b223p-52)) - - @test isequal_interval(csc(bareinterval(-1.0, -1.0)), bareinterval(-0x1303aa9620b224p-52, -0x1303aa9620b223p-52)) - - @test isequal_interval(csc(bareinterval(1.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(1.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(1.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(1.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(1.0, 3.0)), bareinterval(1.0, 0x1c583c440ab0dap-50)) - - @test isequal_interval(csc(bareinterval(1.0, 2.0)), bareinterval(1.0, 0x1303aa9620b224p-52)) - - @test isequal_interval(csc(bareinterval(1.0, 1.0)), bareinterval(0x1303aa9620b223p-52, 0x1303aa9620b224p-52)) - - @test isequal_interval(csc(bareinterval(2.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(2.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(2.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(2.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(2.0, 3.0)), bareinterval(0x119893a272f912p-52, 0x1c583c440ab0dap-50)) - - @test isequal_interval(csc(bareinterval(2.0, 2.0)), bareinterval(0x119893a272f912p-52, 0x119893a272f913p-52)) - - @test isequal_interval(csc(bareinterval(3.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(3.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(3.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(3.0, 3.0)), bareinterval(0x1c583c440ab0d9p-50, 0x1c583c440ab0dap-50)) - - @test isequal_interval(csc(bareinterval(4.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(4.0, 6.0)), bareinterval(-0x1ca19615f903dap-51, -1.0)) - - @test isequal_interval(csc(bareinterval(4.0, 5.0)), bareinterval(-0x15243e8b2f4642p-52, -1.0)) - - @test isequal_interval(csc(bareinterval(4.0, 4.0)), bareinterval(-0x15243e8b2f4642p-52, -0x15243e8b2f4641p-52)) - - @test isequal_interval(csc(bareinterval(5.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(5.0, 6.0)), bareinterval(-0x1ca19615f903dap-51, -0x10af73f9df86b7p-52)) - - @test isequal_interval(csc(bareinterval(5.0, 5.0)), bareinterval(-0x10af73f9df86b8p-52, -0x10af73f9df86b7p-52)) - - @test isequal_interval(csc(bareinterval(6.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csc(bareinterval(6.0, 6.0)), bareinterval(-0x1ca19615f903dap-51, -0x1ca19615f903d9p-51)) - - @test isequal_interval(csc(bareinterval(7.0, 7.0)), bareinterval(+0x185a86a4ceb06cp-52, +0x185a86a4ceb06dp-52)) - -end - -@testset "mpfi_csch" begin - - @test isequal_interval(csch(bareinterval(-Inf, -7.0)), bareinterval(-0x1de16d3cffcd54p-62, 0.0)) - - @test isequal_interval(csch(bareinterval(-Inf, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(csch(bareinterval(-Inf, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csch(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csch(bareinterval(-8.0, 0.0)), bareinterval(-Inf, -0x15fc212d92371ap-63)) - - @test isequal_interval(csch(bareinterval(-3.0, 0.0)), bareinterval(-Inf, -0x198de80929b901p-56)) - - @test isequal_interval(csch(bareinterval(-1.0, 0.0)), bareinterval(-Inf, -0x1b3ab8a78b90c0p-53)) - - @test isequal_interval(csch(bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(csch(bareinterval(0.0, +1.0)), bareinterval(0x1b3ab8a78b90c0p-53, +Inf)) - - @test isequal_interval(csch(bareinterval(0.0, +3.0)), bareinterval(0x198de80929b901p-56, +Inf)) - - @test isequal_interval(csch(bareinterval(0.0, +8.0)), bareinterval(0x15fc212d92371ap-63, +Inf)) - - @test isequal_interval(csch(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(csch(bareinterval(-3.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(csch(bareinterval(-10.0, -8.0)), bareinterval(-0x15fc212d92371bp-63, -0x17cd79b63733a0p-66)) - - @test isequal_interval(csch(bareinterval(7.0, 17.0)), bareinterval(0x1639e3175a68a7p-76, 0x1de16d3cffcd54p-62)) - - @test isequal_interval(csch(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)), bareinterval(0x1eb45dc88defeap-52, 0x3fff555693e722p-48)) - -end - -@testset "mpfi_d_div" begin - - @test isequal_interval(/(bareinterval(-0x170ef54646d496p-107, -0x170ef54646d496p-107), bareinterval(-Inf, -7.0)), bareinterval(0.0, 0x1a5a3ce29a1787p-110)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0x170ef54646d496p-107, 0x170ef54646d496p-107), bareinterval(-Inf, -7.0)), bareinterval(-0x1a5a3ce29a1787p-110, 0.0)) - - @test isequal_interval(/(bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106), bareinterval(-Inf, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106), bareinterval(-Inf, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)), bareinterval(-Inf, -0x13c3ada9f391a5p-110)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(0.0, 7.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)), bareinterval(0x13c3ada9f391a5p-110, +Inf)) - - @test isequal_interval(/(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(-2.5, -2.5), bareinterval(-8.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-2.5, -2.5), bareinterval(-8.0, -5.0)), bareinterval(0x5p-4, 0.5)) - - @test isequal_interval(/(bareinterval(-2.5, -2.5), bareinterval(25.0, 40.0)), bareinterval(-0x1999999999999ap-56, -0x1p-4)) - - @test isequal_interval(/(bareinterval(-2.5, -2.5), bareinterval(-16.0, -7.0)), bareinterval(0x5p-5, 0x16db6db6db6db7p-54)) - - @test isequal_interval(/(bareinterval(-2.5, -2.5), bareinterval(11.0, 143.0)), bareinterval(-0x1d1745d1745d18p-55, -0x11e6efe35b4cfap-58)) - - @test isequal_interval(/(bareinterval(33.125, 33.125), bareinterval(8.28125, 530.0)), bareinterval(0x1p-4, 4.0)) - - @test isequal_interval(/(bareinterval(33.125, 33.125), bareinterval(-530.0, -496.875)), bareinterval(-0x11111111111112p-56, -0x1p-4)) - - @test isequal_interval(/(bareinterval(33.125, 33.125), bareinterval(54.0, 265.0)), bareinterval(0.125, 0x13a12f684bda13p-53)) - - @test isequal_interval(/(bareinterval(33.125, 33.125), bareinterval(52.0, 54.0)), bareinterval(0x13a12f684bda12p-53, 0x14627627627628p-53)) - -end - -@testset "mpfi_diam_abs" begin - - @test diam(bareinterval(-Inf, -8.0)) == +Inf - - @test diam(bareinterval(-Inf, 0.0)) == +Inf - - @test diam(bareinterval(-Inf, 5.0)) == +Inf - - @test diam(entireinterval(BareInterval{Float64})) == +Inf - - @test diam(bareinterval(-Inf, 0.0)) == +Inf - - @test diam(bareinterval(-8.0, 0.0)) == +8.0 - - @test diam(bareinterval(0.0, 0.0)) == 0.0 - - @test diam(bareinterval(0.0, 5.0)) == +5.0 - - @test diam(bareinterval(0.0, +Inf)) == +Inf - - @test diam(bareinterval(-34.0, -17.0)) == 17.0 - -end - -@testset "mpfi_div" begin - - @test isequal_interval(/(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(-0x75bcd15p0, -0x754ep0), bareinterval(-0x11ep0, -0x9p0)), bareinterval(0x69p0, 0xd14fadp0)) - - @test isequal_interval(/(bareinterval(-0x75bcd15p0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+4, -0x9p0)), bareinterval(0x7.0ef61537b1704p-12, 0xd14fadp0)) - - @test isequal_interval(/(bareinterval(-0x1.02f0415f9f596p+0, -0x754ep-16), bareinterval(-0x11ep0, -0x7.62ce64fbacd2cp-8)), bareinterval(0x69p-16, 0x2.30ee5eef9c36cp+4)) - - @test isequal_interval(/(bareinterval(-0x1.02f0415f9f596p+0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+0, -0x7.62ce64fbacd2cp-8)), bareinterval(0x7.0ef61537b1704p-8, 0x2.30ee5eef9c36cp+4)) - - @test isequal_interval(/(bareinterval(-0xacbp+256, -0x6f9p0), bareinterval(-0x7p0, 0.0)), bareinterval(0xffp0, +Inf)) - - @test isequal_interval(/(bareinterval(-0x100p0, -0xe.bb80d0a0824ep-4), bareinterval(-0x1.7c6d760a831fap+0, 0.0)), bareinterval(0x9.e9f24790445fp-4, +Inf)) - - @test isequal_interval(/(bareinterval(-0x1.25f2d73472753p+0, -0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-100.0, -15.0), bareinterval(0.0, +3.0)), bareinterval(-Inf, -5.0)) - - @test isequal_interval(/(bareinterval(-2.0, -0x1.25f2d73472753p+0), bareinterval(0.0, +0x9.3b0c8074ccc18p-4)), bareinterval(-Inf, -0x1.fd8457415f917p+0)) - - @test isequal_interval(/(bareinterval(-0x123456789p0, -0x754ep+4), bareinterval(0x40bp0, 0x11ep+4)), bareinterval(-0x480b3bp0, -0x69p0)) - - @test isequal_interval(/(bareinterval(-0xd.67775e4b8588p-4, -0x754ep-53), bareinterval(0x4.887091874ffc8p+0, 0x11ep+201)), bareinterval(-0x2.f5008d2df94ccp-4, -0x69p-254)) - - @test isequal_interval(/(bareinterval(-0x123456789p0, -0x1.b0a62934c76e9p+0), bareinterval(0x40bp-17, 0x2.761ec797697a4p-4)), bareinterval(-0x480b3bp+17, -0xa.fc5e7338f3e4p+0)) - - @test isequal_interval(/(bareinterval(-0xd.67775e4b8588p+0, -0x1.b0a62934c76e9p+0), bareinterval(0x4.887091874ffc8p-4, 0x2.761ec797697a4p+4)), bareinterval(-0x2.f5008d2df94ccp+4, -0xa.fc5e7338f3e4p-8)) - - @test isequal_interval(/(bareinterval(-0x75bcd15p0, 0.0), bareinterval(-0x90p0, -0x9p0)), bareinterval(0.0, 0xd14fadp0)) - - @test isequal_interval(/(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(-0x1p-8, -0xf.5e4900c9c19fp-12)), bareinterval(0.0, 0x1.4fdb41a33d6cep+4)) - - @test isequal_interval(/(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(-0xaaaaaaaaap0, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(-0x1.25f2d73472753p+0, 0.0), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(0.0, +0x3p0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(-0x75bcd15p0, 0.0), bareinterval(0x9p0, 0x90p0)), bareinterval(-0xd14fadp0, 0.0)) - - @test isequal_interval(/(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(0xf.5e4900c9c19fp-12, 0x9p0)), bareinterval(-0x1.4fdb41a33d6cep+4, 0.0)) - - @test isequal_interval(/(bareinterval(-0x75bcd15p0, 0xa680p0), bareinterval(-0xaf6p0, -0x9p0)), bareinterval(-0x1280p0, 0xd14fadp0)) - - @test isequal_interval(/(bareinterval(-0x12p0, 0x10p0), bareinterval(-0xbbbbbbbbbbp0, -0x9p0)), bareinterval(-0x1.c71c71c71c71dp0, 2.0)) - - @test isequal_interval(/(bareinterval(-0x1p0, 0x754ep-16), bareinterval(-0xccccccccccp0, -0x11ep0)), bareinterval(-0x69p-16, 0xe.525982af70c9p-12)) - - @test isequal_interval(/(bareinterval(-0xb.5b90b4d32136p-4, 0x6.e694ac6767394p+0), bareinterval(-0xdddddddddddp0, -0xc.f459be9e80108p-4)), bareinterval(-0x8.85e40b3c3f63p+0, 0xe.071cbfa1de788p-4)) - - @test isequal_interval(/(bareinterval(-0xacbp+256, 0x6f9p0), bareinterval(-0x7p0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0x1.25f2d73472753p+0, +0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, +15.0), bareinterval(-3.0, +3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-0x754ep0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)), bareinterval(-0x69p0, 0xbaffep+12)) - - @test isequal_interval(/(bareinterval(-0x10p0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)), bareinterval(-0xe.525982af70c9p-8, 0xbaffep+12)) - - @test isequal_interval(/(bareinterval(-0x754ep0, 0x1p+10), bareinterval(0x11ep0, 0xbbbp0)), bareinterval(-0x69p0, 0xe.525982af70c9p-2)) - - @test isequal_interval(/(bareinterval(-0x1.18333622af827p+0, 0x2.14b836907297p+0), bareinterval(0x1.263147d1f4bcbp+0, 0x111p0)), bareinterval(-0xf.3d2f5db8ec728p-4, 0x1.cf8fa732de129p+0)) - - @test isequal_interval(/(bareinterval(0.0, 0x75bcd15p0), bareinterval(-0xap0, -0x9p0)), bareinterval(-0xd14fadp0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0x1.acbf1702af6edp+0), bareinterval(-0x0.fp0, -0xe.3d7a59e2bdacp-4)), bareinterval(-0x1.e1bb896bfda07p+0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0xap0), bareinterval(-0x9p0, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0xap0), bareinterval(-1.0, +1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, 0x75bcd15p0), bareinterval(+0x9p0, +0xap0)), bareinterval(0.0, 0xd14fadp0)) - - @test isequal_interval(/(bareinterval(0.0, 0x1.5f6b03dc8c66fp+0), bareinterval(+0x2.39ad24e812dcep+0, 0xap0)), bareinterval(0.0, 0x9.deb65b02baep-4)) - - @test isequal_interval(/(bareinterval(0x754ep0, 0x75bcd15p0), bareinterval(-0x11ep0, -0x9p0)), bareinterval(-0xd14fadp0, -0x69p0)) - - @test isequal_interval(/(bareinterval(0x754ep-16, 0x1.008a3accc766dp+4), bareinterval(-0x11ep0, -0x2.497403b31d32ap+0)), bareinterval(-0x7.02d3edfbc8b6p+0, -0x69p-16)) - - @test isequal_interval(/(bareinterval(0x9.ac412ff1f1478p-4, 0x75bcd15p0), bareinterval(-0x1.5232c83a0e726p+4, -0x9p0)), bareinterval(-0xd14fadp0, -0x7.52680a49e5d68p-8)) - - @test isequal_interval(/(bareinterval(0xe.1552a314d629p-4, 0x1.064c5adfd0042p+0), bareinterval(-0x5.0d4d319a50b04p-4, -0x2.d8f51df1e322ep-4)), bareinterval(-0x5.c1d97d57d81ccp+0, -0x2.c9a600c455f5ap+0)) - - @test isequal_interval(/(bareinterval(0x754ep0, 0xeeeep0), bareinterval(-0x11ep0, 0.0)), bareinterval(-Inf, -0x69p0)) - - @test isequal_interval(/(bareinterval(0x1.a9016514490e6p-4, 0xeeeep0), bareinterval(-0xe.316e87be0b24p-4, 0.0)), bareinterval(-Inf, -0x1.df1cc82e6a583p-4)) - - @test isequal_interval(/(bareinterval(5.0, 6.0), bareinterval(-0x5.0d4d319a50b04p-4, 0x2.d8f51df1e322ep-4)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0x754ep0, +0xeeeeep0), bareinterval(0.0, +0x11ep0)), bareinterval(0x69p0, +Inf)) - - @test isequal_interval(/(bareinterval(0x1.7f03f2a978865p+0, 0xeeeeep0), bareinterval(0.0, 0x1.48b08624606b9p+0)), bareinterval(0x1.2a4fcda56843p+0, +Inf)) - - @test isequal_interval(/(bareinterval(0x5efc1492p0, 0x1ba2dc763p0), bareinterval(0x2fdd1fp0, 0x889b71p0)), bareinterval(0xb2p0, 0x93dp0)) - - @test isequal_interval(/(bareinterval(0x1.d7c06f9ff0706p-8, 0x1ba2dc763p0), bareinterval(0x2fdd1fp-20, 0xe.3d7a59e2bdacp+0)), bareinterval(0x2.120d75be74b54p-12, 0x93dp+20)) - - @test isequal_interval(/(bareinterval(0x5.efc1492p-4, 0x1.008a3accc766dp+0), bareinterval(0x2.497403b31d32ap+0, 0x8.89b71p+0)), bareinterval(0xb.2p-8, 0x7.02d3edfbc8b6p-4)) - - @test isequal_interval(/(bareinterval(0x8.440e7d65be6bp-8, 0x3.99982e9eae09ep+0), bareinterval(0x8.29fa8d0659e48p-4, 0xc.13d2fd762e4a8p-4)), bareinterval(0xa.f3518768b206p-8, 0x7.0e2acad54859cp+0)) - -end - -@testset "mpfi_div_d" begin - - @test isequal_interval(/(bareinterval(-Inf, -7.0), bareinterval(-7.0, -7.0)), bareinterval(1.0, +Inf)) - - @test isequal_interval(/(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf, -7.0), bareinterval(7.0, 7.0)), bareinterval(-Inf, -1.0)) - - @test isequal_interval(/(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(-Inf, 8.0), bareinterval(-3.0, -3.0)), bareinterval(-0x15555555555556p-51, +Inf)) - - @test isequal_interval(/(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(-Inf, 8.0), bareinterval(3.0, 3.0)), bareinterval(-Inf, 0x15555555555556p-51)) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(/(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)), bareinterval(0.0, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)), bareinterval(-0x1d9b1f5d20d556p+5, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)), bareinterval(0.0, 0x1d9b1f5d20d556p+5)) - - @test isequal_interval(/(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(/(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)), bareinterval(0.0, +Inf)) - - @test isequal_interval(/(bareinterval(-0x10000000000001p-20, -0x10000000000001p-53), bareinterval(-1.0, -1.0)), bareinterval(0x10000000000001p-53, 0x10000000000001p-20)) - - @test isequal_interval(/(bareinterval(-0x10000000000002p-20, -0x10000000000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)), bareinterval(-0x10000000000001p-19, -1.0)) - - @test isequal_interval(/(bareinterval(-0x10000000000001p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)), bareinterval(-0x1p+33, -0x1000001fffffffp-52)) - - @test isequal_interval(/(bareinterval(-0x10000000000002p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)), bareinterval(-0x10000000000001p-19, -0x1000001fffffffp-52)) - - @test isequal_interval(/(bareinterval(-0x123456789abcdfp-53, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)), bareinterval(-0x1p-7, 0x1p-53)) - - @test isequal_interval(/(bareinterval(-0x123456789abcdfp-53, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)), bareinterval(-0x1c200000000002p-106, 0x1p-53)) - - @test isequal_interval(/(bareinterval(-1.0, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)), bareinterval(-0x1p-7, 0x1c200000000001p-105)) - - @test isequal_interval(/(bareinterval(-1.0, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)), bareinterval(-0x1c200000000002p-106, 0x1c200000000001p-105)) - -end - -@testset "mpfi_d_sub" begin - - @test isequal_interval(-(bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107), bareinterval(-Inf, -7.0)), bareinterval(0x1bffffffffffffp-50, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(7.0, +Inf)) - - @test isequal_interval(-(bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107), bareinterval(-Inf, -7.0)), bareinterval(7.0, +Inf)) - - @test isequal_interval(-(bareinterval(-0x170ef54646d497p-96, -0x170ef54646d497p-96), bareinterval(-Inf, 0.0)), bareinterval(-0x170ef54646d497p-96, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(-(bareinterval(0x170ef54646d497p-96, 0x170ef54646d497p-96), bareinterval(-Inf, 0.0)), bareinterval(0x170ef54646d497p-96, +Inf)) - - @test isequal_interval(-(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)), bareinterval(-0x16345785d8a00100p0, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)), bareinterval(-8.0, +Inf)) - - @test isequal_interval(-(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)), bareinterval(0x16345785d89fff00p0, +Inf)) - - @test isequal_interval(-(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(0x170ef54646d497p-105, 0x170ef54646d497p-105), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(-(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) - - @test isequal_interval(-(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)), bareinterval(-0x10000000000001p-49, -0x114b37f4b51f71p-107)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)), bareinterval(-8.0, 0.0)) - - @test isequal_interval(-(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)), bareinterval(-8.0, 0x114b37f4b51f71p-107)) - - @test isequal_interval(-(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)), bareinterval(-Inf, -0x50b45a75f7e81p-104)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(-(bareinterval(-0x142d169d7dfa03p-106, -0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)), bareinterval(-Inf, -0x142d169d7dfa03p-106)) - - @test isequal_interval(-(bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47), bareinterval(17.0, 32.0)), bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47)) - - @test isequal_interval(-(bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47), bareinterval(17.0, 0xfb53d14aa9c2fp-47)), bareinterval(0.0, 0x7353d14aa9c2fp-47)) - - @test isequal_interval(-(bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 32.0)), bareinterval(-0x104ac2eb5563d1p-48, 0.0)) - - @test isequal_interval(-(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)), bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4)) - - @test isequal_interval(-(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)), bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4)) - - @test isequal_interval(-(bareinterval(256.5, 256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)), bareinterval(0x18p-4, 0x101a3456789abdp-44)) - - @test isequal_interval(-(bareinterval(4097.5, 4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)), bareinterval(0xfff8p-4, 0x10018p-4)) - - @test isequal_interval(-(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)), bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4)) - - @test isequal_interval(-(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)), bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4)) - - @test isequal_interval(-(bareinterval(-256.5, -256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)), bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44)) - - @test isequal_interval(-(bareinterval(-4097.5, -4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)), bareinterval(-0x10038p-4, -0x10018p-4)) - -end - -@testset "mpfi_exp" begin - - @test isequal_interval(exp(bareinterval(-Inf, -7.0)), bareinterval(0.0, 0x1de16b9c24a98fp-63)) - - @test isequal_interval(exp(bareinterval(-Inf, 0.0)), bareinterval(0.0, 1.0)) - - @test isequal_interval(exp(bareinterval(-Inf, +1.0)), bareinterval(0.0, 0x15bf0a8b14576ap-51)) - - @test isequal_interval(exp(entireinterval(BareInterval{Float64})), bareinterval(0.0, +Inf)) - - @test isequal_interval(exp(bareinterval(0.0, 0.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(exp(bareinterval(0.0, +1.0)), bareinterval(1.0, 0x15bf0a8b14576ap-51)) - - @test isequal_interval(exp(bareinterval(0.0, +Inf)), bareinterval(1.0, +Inf)) - - @test isequal_interval(exp(bareinterval(-123.0, -17.0)), bareinterval(0x1766b45dd84f17p-230, 0x1639e3175a689dp-77)) - - @test isequal_interval(exp(bareinterval(-0.125, 0.25)), bareinterval(0x1c3d6a24ed8221p-53, 0x148b5e3c3e8187p-52)) - - @test isequal_interval(exp(bareinterval(-0.125, 0.0)), bareinterval(0x1c3d6a24ed8221p-53, 1.0)) - - @test isequal_interval(exp(bareinterval(0.0, 0.25)), bareinterval(1.0, 0x148b5e3c3e8187p-52)) - - @test isequal_interval(exp(bareinterval(0xap-47, 0xbp-47)), bareinterval(0x10000000000140p-52, 0x10000000000161p-52)) - -end - -@testset "mpfi_exp2" begin - - @test isequal_interval(exp2(bareinterval(-Inf, -1.0)), bareinterval(0.0, 0.5)) - - @test isequal_interval(exp2(bareinterval(-Inf, 0.0)), bareinterval(0.0, 1.0)) - - @test isequal_interval(exp2(bareinterval(-Inf, 1.0)), bareinterval(0.0, 2.0)) - - @test isequal_interval(exp2(entireinterval(BareInterval{Float64})), bareinterval(0.0, +Inf)) - - @test isequal_interval(exp2(bareinterval(0.0, 0.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(exp2(bareinterval(0.0, +1.0)), bareinterval(1.0, 2.0)) - - @test isequal_interval(exp2(bareinterval(0.0, +Inf)), bareinterval(1.0, +Inf)) - - @test isequal_interval(exp2(bareinterval(-123.0, -17.0)), bareinterval(0x1p-123, 0x1p-17)) - - @test isequal_interval(exp2(bareinterval(-7.0, 7.0)), bareinterval(0x1p-7, 0x1p+7)) - - @test isequal_interval(exp2(bareinterval(-0.125, 0.25)), bareinterval(0x1d5818dcfba487p-53, 0x1306fe0a31b716p-52)) - - @test isequal_interval(exp2(bareinterval(-0.125, 0.0)), bareinterval(0x1d5818dcfba487p-53, 1.0)) - - @test isequal_interval(exp2(bareinterval(0.0, 0.25)), bareinterval(1.0, 0x1306fe0a31b716p-52)) - - @test isequal_interval(exp2(bareinterval(0xap-47, 0xbp-47)), bareinterval(0x100000000000ddp-52, 0x100000000000f4p-52)) - -end - -@testset "mpfi_expm1" begin - - @test isequal_interval(expm1(bareinterval(-Inf, -7.0)), bareinterval(-1.0, -0x1ff887a518f6d5p-53)) - - @test isequal_interval(expm1(bareinterval(-Inf, 0.0)), bareinterval(-1.0, 0.0)) - - @test isequal_interval(expm1(bareinterval(-Inf, 1.0)), bareinterval(-1.0, 0x1b7e151628aed3p-52)) - - @test isequal_interval(expm1(entireinterval(BareInterval{Float64})), bareinterval(-1.0, +Inf)) - - @test isequal_interval(expm1(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(expm1(bareinterval(0.0, 1.0)), bareinterval(0.0, 0x1b7e151628aed3p-52)) - - @test isequal_interval(expm1(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(expm1(bareinterval(-36.0, -36.0)), bareinterval(-0x1ffffffffffffep-53, -0x1ffffffffffffdp-53)) - - @test isequal_interval(expm1(bareinterval(-0.125, 0.25)), bareinterval(-0x1e14aed893eef4p-56, 0x122d78f0fa061ap-54)) - - @test isequal_interval(expm1(bareinterval(-0.125, 0.0)), bareinterval(-0x1e14aed893eef4p-56, 0.0)) - - @test isequal_interval(expm1(bareinterval(0.0, 0.25)), bareinterval(0.0, 0x122d78f0fa061ap-54)) - - @test isequal_interval(expm1(bareinterval(0xap-47, 0xbp-47)), bareinterval(0x140000000000c8p-96, 0x160000000000f3p-96)) - -end - -@testset "mpfi_hypot" begin - - @test isequal_interval(hypot(bareinterval(-Inf, -7.0), bareinterval(-1.0, 8.0)), bareinterval(7.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(-Inf, 0.0), bareinterval(8.0, +Inf)), bareinterval(8.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(-Inf, 8.0), bareinterval(0.0, 8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hypot(entireinterval(BareInterval{Float64}), bareinterval(0.0, 8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(7.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(0.0, 3.0), bareinterval(-4.0, 0.0)), bareinterval(0.0, 5.0)) - - @test isequal_interval(hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)), bareinterval(0.0, 8.0)) - - @test isequal_interval(hypot(bareinterval(0.0, +Inf), bareinterval(0.0, 8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(0.0, 0.0), bareinterval(8.0, +Inf)), bareinterval(8.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(0.0, 5.0), bareinterval(0.0, 12.0)), bareinterval(0.0, 13.0)) - - @test isequal_interval(hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(hypot(bareinterval(0.0, +Inf), bareinterval(-7.0, 8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hypot(bareinterval(-12.0, -5.0), bareinterval(-35.0, -12.0)), bareinterval(13.0, 37.0)) - - @test isequal_interval(hypot(bareinterval(6.0, 7.0), bareinterval(1.0, 24.0)), bareinterval(0x1854bfb363dc39p-50, 25.0)) - - @test isequal_interval(hypot(bareinterval(-4.0, +7.0), bareinterval(-25.0, 3.0)), bareinterval(0.0, 0x19f625847a5899p-48)) - - @test isequal_interval(hypot(bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48), bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48)), bareinterval(0x113463fa37014dp-49, 0x125b89092b8fc0p-47)) - -end - -@testset "mpfi_intersect" begin - - @test isequal_interval(intersect_interval(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(intersect_interval(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(intersect_interval(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(intersect_interval(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)), bareinterval(0x12p0, 0x34p0)) - -end - -@testset "mpfi_inv" begin - - @test isequal_interval(inv(bareinterval(-Inf, -.25)), bareinterval(-4.0, 0.0)) - - @test isequal_interval(inv(bareinterval(-Inf, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(inv(bareinterval(-Inf, +4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(inv(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(0.0, 0.0)), emptyinterval(BareInterval{Float64})) - - @test isequal_interval(inv(bareinterval(0.0, +2.0)), bareinterval(+.5, +Inf)) - - @test isequal_interval(inv(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(inv(bareinterval(-8.0, -2.0)), bareinterval(-.5, -0.125)) - - @test isequal_interval(inv(bareinterval(0x1p-4, 0x1440c131282cd9p-53)), bareinterval(0x1947bfce1bc417p-52, 0x10p0)) - - @test isequal_interval(inv(bareinterval(0x19f1a539c91fddp-55, +64.0)), bareinterval(0.015625, 0x13bc205a76b3fdp-50)) - - @test isequal_interval(inv(bareinterval(-0xae83b95effd69p-52, -0x63e3cb4ed72a3p-53)), bareinterval(-0x1480a9b5772a23p-50, -0x177887d65484c9p-52)) - -end - -@testset "mpfi_is_neg" begin - - @test precedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) == false - - @test precedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) == false - -end - -@testset "mpfi_is_nonneg" begin - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) == false - - @test precedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) == true - -end - -@testset "mpfi_is_nonpos" begin - - @test precedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) == false - - @test precedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(8.0, 0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) == false - - @test precedes(bareinterval(0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) == false - -end - -@testset "mpfi_is_pos" begin - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) == false - - @test precedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) == true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) == true - -end - -@testset "mpfi_is_strictly_neg" begin - - @test strictprecedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) == true - - @test strictprecedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) == true - - @test strictprecedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) == true - - @test strictprecedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) == false - -end - -@testset "mpfi_is_strictly_pos" begin - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) == true - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == true - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) == true - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) == true - -end - -@testset "mpfi_log" begin - - @test isequal_interval(log(bareinterval(0.0, +1.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(log(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log(bareinterval(+1.0, +1.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(log(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)), bareinterval(0xc6dc8a2928579p-47, 0x1a9500bc7ffcc5p-48)) - - @test isequal_interval(log(bareinterval(0xb616ab8b683b5p-52, +1.0)), bareinterval(-0x2b9b8b1fb2fb9p-51, 0.0)) - - @test isequal_interval(log(bareinterval(+1.0, 0x8ac74d932fae3p-21)), bareinterval(0.0, 0x5380455576989p-46)) - - @test isequal_interval(log(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)), bareinterval(0xbdee7228cfedfp-47, 0x1b3913fc99f555p-48)) - -end - -@testset "mpfi_log1p" begin - - @test isequal_interval(log1p(bareinterval(-1.0, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(log1p(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(log1p(bareinterval(0.0, 1.0)), bareinterval(0.0, 0x162e42fefa39f0p-53)) - - @test isequal_interval(log1p(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(log1p(bareinterval(-0xb616ab8b683b5p-52, 0.0)), bareinterval(-0x13e080325bab7bp-52, 0.0)) - - @test isequal_interval(log1p(bareinterval(0.0, 0x8ac74d932fae3p-21)), bareinterval(0.0, 0x14e0115561569cp-48)) - - @test isequal_interval(log1p(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)), bareinterval(0x17bdce451a337fp-48, 0x1b3913fc99f6fcp-48)) - -end - -@testset "mpfi_log2" begin - - @test isequal_interval(log2(bareinterval(0.0, +1.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(log2(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log2(bareinterval(1.0, 1.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(log2(bareinterval(0xb616ab8b683b5p-52, 1.0)), bareinterval(-0x1f74cb5d105b3ap-54, 0.0)) - - @test isequal_interval(log2(bareinterval(1.0, 0x8ac74d932fae3p-21)), bareinterval(0.0, 0x1e1ddc27c2c70fp-48)) - - @test isequal_interval(log2(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)), bareinterval(0x112035c9390c07p-47, 0x13a3208f61f10cp-47)) - -end - -@testset "mpfi_log10" begin - - @test isequal_interval(log10(bareinterval(0.0, 1.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(log10(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(log10(bareinterval(1.0, 1.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(log10(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)), bareinterval(0x159753104a9401p-49, 0x1716c01a04b570p-49)) - - @test isequal_interval(log10(bareinterval(0xb616ab8b683b5p-52, 1.0)), bareinterval(-0x12f043ec00f8d6p-55, 0.0)) - - @test isequal_interval(log10(bareinterval(100.0, 0x8ac74d932fae3p-21)), bareinterval(2.0, 0x1221cc590b9946p-49)) - - @test isequal_interval(log10(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)), bareinterval(0x149f1d70168f49p-49, 0x17a543a94fb65ep-49)) - -end - -@testset "mpfi_mag" begin - - @test mag(bareinterval(-Inf, -8.0)) == +Inf - - @test mag(bareinterval(-Inf, 0.0)) == +Inf - - @test mag(bareinterval(-Inf, 5.0)) == +Inf - - @test mag(entireinterval(BareInterval{Float64})) == +Inf - - @test mag(bareinterval(-Inf, 0.0)) == +Inf - - @test mag(bareinterval(-8.0, 0.0)) == +8.0 - - @test mag(bareinterval(0.0, 0.0)) == +0.0 - - @test mag(bareinterval(0.0, 5.0)) == +5.0 - - @test mag(bareinterval(0.0, +Inf)) == +Inf - - @test mag(bareinterval(-34.0, -17.0)) == 34.0 - -end - -@testset "mpfi_mid" begin - - @test mid(bareinterval(-8.0, 0.0)) == -4.0 - - @test mid(bareinterval(0.0, 0.0)) == +0.0 - - @test mid(bareinterval(0.0, 5.0)) == +2.5 - - @test mid(bareinterval(-34.0, -17.0)) == -0x33p-1 - - @test mid(bareinterval(-34.0, 17.0)) == -8.5 - - @test mid(bareinterval(0.0, +0x123456789abcdp-2)) == +0x123456789abcdp-3 - - @test mid(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) == 0x1921fb54442d18p-51 - - @test mid(bareinterval(-0x1921fb54442d19p-51, -0x1921fb54442d18p-51)) == -0x1921fb54442d18p-51 - - @test mid(bareinterval(-4.0, -0x7fffffffffffdp-51)) == -0x27fffffffffffbp-52 - - @test mid(bareinterval(-8.0, -0x7fffffffffffbp-51)) == -0x47fffffffffffbp-52 - - @test mid(bareinterval(-0x1fffffffffffffp-53, 2.0)) == 0.5 - -end - -@testset "mpfi_mig" begin - - @test mig(bareinterval(-Inf, -8.0)) == 8.0 - - @test mig(bareinterval(-Inf, 0.0)) == +0.0 - - @test mig(bareinterval(-Inf, 5.0)) == +0.0 - - @test mig(entireinterval(BareInterval{Float64})) == +0.0 - - @test mig(bareinterval(-Inf, 0.0)) == +0.0 - - @test mig(bareinterval(-8.0, 0.0)) == +0.0 - - @test mig(bareinterval(0.0, 0.0)) == +0.0 - - @test mig(bareinterval(0.0, 5.0)) == +0.0 - - @test mig(bareinterval(0.0, +Inf)) == +0.0 - - @test mig(bareinterval(-34.0, -17.0)) == 17.0 - -end - -@testset "mpfi_mul" begin - - @test isequal_interval(*(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(*(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), bareinterval(-Inf, +64.0)) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(-56.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)), bareinterval(-56.0, +64.0)) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(*(bareinterval(-3.0, +7.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(-0x0dp0, -0x09p0), bareinterval(-0x04p0, -0x02p0)), bareinterval(0x12p0, 0x34p0)) - - @test isequal_interval(*(bareinterval(-0x0dp0, -0xd.f0e7927d247cp-4), bareinterval(-0x04p0, -0xa.41084aff48f8p-8)), bareinterval(0x8.ef3aa21dba748p-8, 0x34p0)) - - @test isequal_interval(*(bareinterval(-0xe.26c9e9eb67b48p-4, -0x8.237d2eb8b1178p-4), bareinterval(-0x5.8c899a0706d5p-4, -0x3.344e57a37b5e8p-4)), bareinterval(0x1.a142a930de328p-4, 0x4.e86c3434cd924p-4)) - - @test isequal_interval(*(bareinterval(-0x37p0, -0x07p0), bareinterval(-0x01p0, 0x22p0)), bareinterval(-0x74ep0, 0x37p0)) - - @test isequal_interval(*(bareinterval(-0xe.063f267ed51ap-4, -0x0.33p0), bareinterval(-0x01p0, 0x1.777ab178b4a1ep+0)), bareinterval(-0x1.491df346a9f15p+0, 0xe.063f267ed51ap-4)) - - @test isequal_interval(*(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x01p0)), bareinterval(-0x1.cb540b71699a8p+4, 0x2.804cce4a3f42ep+4)) - - @test isequal_interval(*(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x1.eb67a1a6ef725p+4)), bareinterval(-0x3.71b422ce817f4p+8, 0x2.804cce4a3f42ep+4)) - - @test isequal_interval(*(bareinterval(-0x123456789ap0, -0x01p0), bareinterval(0x01p0, 0x10p0)), bareinterval(-0x123456789a0p0, -0x01p0)) - - @test isequal_interval(*(bareinterval(-0xb.6c67d3a37d54p-4, -0x0.8p0), bareinterval(0x02p0, 0x2.0bee4e8bb3dfp+0)), bareinterval(-0x1.7611a672948a5p+0, -0x01p0)) - - @test isequal_interval(*(bareinterval(-0x04p0, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x04p0)), bareinterval(-0x10p0, -0x7.99b990532d434p-8)) - - @test isequal_interval(*(bareinterval(-0xb.6c67d3a37d54p-4, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x2.0bee4e8bb3dfp+0)), bareinterval(-0x1.7611a672948a5p+0, -0x7.99b990532d434p-8)) - - @test isequal_interval(*(bareinterval(-0x01p0, 0x11p0), bareinterval(-0x07p0, -0x04p0)), bareinterval(-0x77p0, 0x07p0)) - - @test isequal_interval(*(bareinterval(-0x01p0, 0xe.ca7ddfdb8572p-4), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)), bareinterval(-0x2.101b41d3d48b8p+0, 0x2.3b46226145234p+0)) - - @test isequal_interval(*(bareinterval(-0x1.1d069e75e8741p+8, 0x01p0), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)), bareinterval(-0x2.3b46226145234p+0, 0x2.7c0bd9877f404p+8)) - - @test isequal_interval(*(bareinterval(-0xe.ca7ddfdb8572p-4, 0x1.1d069e75e8741p+8), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)), bareinterval(-0x2.7c0bd9877f404p+8, 0x2.101b41d3d48b8p+0)) - - @test isequal_interval(*(bareinterval(-0x01p0, 0x10p0), bareinterval(-0x02p0, 0x03p0)), bareinterval(-0x20p0, 0x30p0)) - - @test isequal_interval(*(bareinterval(-0x01p0, 0x2.db091cea593fap-4), bareinterval(-0x2.6bff2625fb71cp-4, 0x1p-8)), bareinterval(-0x6.ea77a3ee43de8p-8, 0x2.6bff2625fb71cp-4)) - - @test isequal_interval(*(bareinterval(-0x01p0, 0x6.e211fefc216ap-4), bareinterval(-0x1p-4, 0x1.8e3fe93a4ea52p+0)), bareinterval(-0x1.8e3fe93a4ea52p+0, 0xa.b52fe22d72788p-4)) - - @test isequal_interval(*(bareinterval(-0x1.15e079e49a0ddp+0, 0x1p-8), bareinterval(-0x2.77fc84629a602p+0, 0x8.3885932f13fp-4)), bareinterval(-0x8.ec5de73125be8p-4, 0x2.adfe651d3b19ap+0)) - - @test isequal_interval(*(bareinterval(-0x07p0, 0x07p0), bareinterval(0x13p0, 0x24p0)), bareinterval(-0xfcp0, 0xfcp0)) - - @test isequal_interval(*(bareinterval(-0xa.8071f870126cp-4, 0x10p0), bareinterval(0x02p0, 0x2.3381083e7d3b4p+0)), bareinterval(-0x1.71dc5b5607781p+0, 0x2.3381083e7d3b4p+4)) - - @test isequal_interval(*(bareinterval(-0x01p0, 0x1.90aa487ecf153p+0), bareinterval(0x01p-53, 0x1.442e2695ac81ap+0)), bareinterval(-0x1.442e2695ac81ap+0, 0x1.fb5fbebd0cbc6p+0)) - - @test isequal_interval(*(bareinterval(-0x1.c40db77f2f6fcp+0, 0x1.8eb70bbd94478p+0), bareinterval(0x02p0, 0x3.45118635235c6p+0)), bareinterval(-0x5.c61fcad908df4p+0, 0x5.17b7c49130824p+0)) - - @test isequal_interval(*(bareinterval(0xcp0, 0x2dp0), bareinterval(-0x679p0, -0xe5p0)), bareinterval(-0x12345p0, -0xabcp0)) - - @test isequal_interval(*(bareinterval(0xcp0, 0x1.1833fdcab4c4ap+10), bareinterval(-0x2.4c0afc50522ccp+40, -0xe5p0)), bareinterval(-0x2.83a3712099234p+50, -0xabcp0)) - - @test isequal_interval(*(bareinterval(0xb.38f1fb0ef4308p+0, 0x2dp0), bareinterval(-0x679p0, -0xa.4771d7d0c604p+0)), bareinterval(-0x12345p0, -0x7.35b3c8400ade4p+4)) - - @test isequal_interval(*(bareinterval(0xf.08367984ca1cp-4, 0xa.bcf6c6cbe341p+0), bareinterval(-0x5.cbc445e9952c4p+0, -0x2.8ad05a7b988fep-8)), bareinterval(-0x3.e3ce52d4a139cp+4, -0x2.637164cf2f346p-8)) - - @test isequal_interval(*(bareinterval(0x01p0, 0xcp0), bareinterval(-0xe5p0, 0x01p0)), bareinterval(-0xabcp0, 0xcp0)) - - @test isequal_interval(*(bareinterval(0x123p-52, 0x1.ec24910ac6aecp+0), bareinterval(-0xa.a97267f56a9b8p-4, 0x1p+32)), bareinterval(-0x1.47f2dbe4ef916p+0, 0x1.ec24910ac6aecp+32)) - - @test isequal_interval(*(bareinterval(0x03p0, 0x7.2bea531ef4098p+0), bareinterval(-0x01p0, 0xa.a97267f56a9b8p-4)), bareinterval(-0x7.2bea531ef4098p+0, 0x4.c765967f9468p+0)) - - @test isequal_interval(*(bareinterval(0x0.3p0, 0xa.a97267f56a9b8p-4), bareinterval(-0x1.ec24910ac6aecp+0, 0x7.2bea531ef4098p+0)), bareinterval(-0x1.47f2dbe4ef916p+0, 0x4.c765967f9468p+0)) - - @test isequal_interval(*(bareinterval(0x3p0, 0x7p0), bareinterval(0x5p0, 0xbp0)), bareinterval(0xfp0, 0x4dp0)) - - @test isequal_interval(*(bareinterval(0x2.48380232f6c16p+0, 0x7p0), bareinterval(0x3.71cb6c53e68eep+0, 0xbp0)), bareinterval(0x7.dc58fb323ad78p+0, 0x4dp0)) - - @test isequal_interval(*(bareinterval(0x3p0, 0x3.71cb6c53e68eep+0), bareinterval(0x5p-25, 0x2.48380232f6c16p+0)), bareinterval(0xfp-25, 0x7.dc58fb323ad7cp+0)) - - @test isequal_interval(*(bareinterval(0x3.10e8a605572p-4, 0x2.48380232f6c16p+0), bareinterval(0xc.3d8e305214ecp-4, 0x2.9e7db05203c88p+0)), bareinterval(0x2.587a32d02bc04p-4, 0x5.fa216b7c20c6cp+0)) - -end - -@testset "mpfi_mul_d" begin - - @test isequal_interval(*(bareinterval(-Inf, -7.0), bareinterval(-0x17p0, -0x17p0)), bareinterval(+0xa1p0, +Inf)) - - @test isequal_interval(*(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)), bareinterval(-Inf, -0xa168b4ebefd020p-107)) - - @test isequal_interval(*(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)), bareinterval(0.0, +Inf)) - - @test isequal_interval(*(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(*(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)), bareinterval(-0xb1a2bc2ec5000000p0, +Inf)) - - @test isequal_interval(*(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)), bareinterval(-Inf, 0xb1a2bc2ec5000000p0)) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 7.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)), bareinterval(-0x790e87b0f3dc18p-107, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, 9.0), bareinterval(0x114b37f4b51f71p-103, 0x114b37f4b51f71p-103)), bareinterval(0.0, 0x9ba4f79a5e1b00p-103)) - - @test isequal_interval(*(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(*(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)), bareinterval(0.0, +Inf)) - - @test isequal_interval(*(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)), bareinterval(0xfffffffffffffp-123, 0x22a2a28p0)) - - @test isequal_interval(*(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(-1.5, -1.5)), bareinterval(-0x22a2a28p+401, 0xfffffffffffffp0)) - - @test isequal_interval(*(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)), bareinterval(-0x1222222222221p+654, -0x22000000000022p0)) - - @test isequal_interval(*(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)), bareinterval(-0x22a2a28p0, -0xfffffffffffffp-123)) - - @test isequal_interval(*(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(1.5, 1.5)), bareinterval(-0xfffffffffffffp0, 0x22a2a28p+401)) - - @test isequal_interval(*(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(2.125, 2.125)), bareinterval(0x22000000000022p0, 0x1222222222221p+654)) - - @test isequal_interval(*(bareinterval(-0x1717170p+36, -0x10000000000001p0), bareinterval(-1.5, -1.5)), bareinterval(0x18000000000001p0, 0x22a2a28p+36)) - - @test isequal_interval(*(bareinterval(-0xaaaaaaaaaaaaap0, 0x10000000000001p0), bareinterval(-1.5, -1.5)), bareinterval(-0x18000000000002p0, 0xfffffffffffffp0)) - - @test isequal_interval(*(bareinterval(0x10000000000010p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)), bareinterval(-0x12222222222223p+1, -0x22000000000022p0)) - - @test isequal_interval(*(bareinterval(-0x10000000000001p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)), bareinterval(-0x18000000000002p0, -0xfffffffffffffp-123)) - - @test isequal_interval(*(bareinterval(-0xaaaaaaaaaaaabp0, 0x1717170p+401), bareinterval(1.5, 1.5)), bareinterval(-0x10000000000001p0, 0x22a2a28p+401)) - - @test isequal_interval(*(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(2.125, 2.125)), bareinterval(0x22000000000002p0, 0x1222222222221p+654)) - - @test isequal_interval(*(bareinterval(-0x11717171717171p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)), bareinterval(0xfffffffffffffp-123, 0x1a2a2a2a2a2a2ap0)) - - @test isequal_interval(*(bareinterval(-0x10000000000001p0, 0x1717170p+401), bareinterval(-1.5, -1.5)), bareinterval(-0x22a2a28p+401, 0x18000000000002p0)) - - @test isequal_interval(*(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)), bareinterval(-0x1222222222221p+654, -0x22000000000002p0)) - - @test isequal_interval(*(bareinterval(-0x1717170p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)), bareinterval(-0x22a2a28p0, -0x27fffffffffffep-123)) - - @test isequal_interval(*(bareinterval(-0xaaaaaaaaaaaaap0, 0x11717171717171p0), bareinterval(1.5, 1.5)), bareinterval(-0xfffffffffffffp0, 0x1a2a2a2a2a2a2ap0)) - - @test isequal_interval(*(bareinterval(0x10000000000010p0, 0x18888888888889p0), bareinterval(2.125, 2.125)), bareinterval(0x22000000000022p0, 0x34222222222224p0)) - - @test isequal_interval(*(bareinterval(-0x11717171717171p0, -0x10000000000001p0), bareinterval(-1.5, -1.5)), bareinterval(0x18000000000001p0, 0x1a2a2a2a2a2a2ap0)) - - @test isequal_interval(*(bareinterval(-0x10000000000001p0, 0x10000000000001p0), bareinterval(-1.5, -1.5)), bareinterval(-0x18000000000002p0, 0x18000000000002p0)) - - @test isequal_interval(*(bareinterval(0x10000000000001p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)), bareinterval(-0x12222222222223p+1, -0x22000000000002p0)) - - @test isequal_interval(*(bareinterval(-0x10000000000001p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)), bareinterval(-0x18000000000002p0, -0x27fffffffffffep-123)) - - @test isequal_interval(*(bareinterval(-0xaaaaaaaaaaaabp0, 0x11717171717171p0), bareinterval(1.5, 1.5)), bareinterval(-0x10000000000001p0, 0x1a2a2a2a2a2a2ap0)) - - @test isequal_interval(*(bareinterval(0x10000000000001p0, 0x18888888888889p0), bareinterval(2.125, 2.125)), bareinterval(0x22000000000002p0, 0x34222222222224p0)) - -end - -@testset "mpfi_neg" begin - - @test isequal_interval(-(bareinterval(-Inf, -7.0)), bareinterval(+7.0, +Inf)) - - @test isequal_interval(-(bareinterval(-Inf, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(-(bareinterval(-Inf, +8.0)), bareinterval(-8.0, +Inf)) - - @test isequal_interval(-(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(-(bareinterval(0.0, +8.0)), bareinterval(-8.0, 0.0)) - - @test isequal_interval(-(bareinterval(0.0, +Inf)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(-(bareinterval(0x123456789p-16, 0x123456799p-16)), bareinterval(-0x123456799p-16, -0x123456789p-16)) - -end - -@testset "mpfi_put_d" begin - - @test isequal_interval(hull(bareinterval(0.0, 0.0), bareinterval(-8.0, -8.0)), bareinterval(-8.0, 0.0)) - - @test isequal_interval(hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(hull(bareinterval(+5.0, +5.0), bareinterval(0.0, 0.0)), bareinterval(0.0, +5.0)) - -end - -@testset "mpfi_sec" begin - - @test isequal_interval(sec(bareinterval(-Inf, -7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-Inf, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-8.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 0.0)), bareinterval(1.0, 0x1d9cf0f125cc2ap-52)) - - @test isequal_interval(sec(bareinterval(0.0, 0.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(sec(bareinterval(0.0, +1.0)), bareinterval(1.0, 0x1d9cf0f125cc2ap-52)) - - @test isequal_interval(sec(bareinterval(0.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(0.0, 8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, -4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-6.0, -5.0)), bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51)) - - @test isequal_interval(sec(bareinterval(-6.0, -6.0)), bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52)) - - @test isequal_interval(sec(bareinterval(-5.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, -4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-5.0, -5.0)), bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51)) - - @test isequal_interval(sec(bareinterval(-4.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-4.0, -2.0)), bareinterval(-0x133956fecf9e49p-51, -1.0)) - - @test isequal_interval(sec(bareinterval(-4.0, -3.0)), bareinterval(-0x187a6961d2485fp-52, -1.0)) - - @test isequal_interval(sec(bareinterval(-4.0, -4.0)), bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52)) - - @test isequal_interval(sec(bareinterval(-3.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-3.0, -2.0)), bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52)) - - @test isequal_interval(sec(bareinterval(-3.0, -3.0)), bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52)) - - @test isequal_interval(sec(bareinterval(-2.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-2.0, -2.0)), bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51)) - - @test isequal_interval(sec(bareinterval(-1.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(-1.0, 1.0)), bareinterval(1.0, 0x1d9cf0f125cc2ap-52)) - - @test isequal_interval(sec(bareinterval(-1.0, 0.0)), bareinterval(1.0, 0x1d9cf0f125cc2ap-52)) - - @test isequal_interval(sec(bareinterval(-1.0, -1.0)), bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52)) - - @test isequal_interval(sec(bareinterval(1.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(1.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(1.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(1.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(1.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(1.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(1.0, 1.0)), bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52)) - - @test isequal_interval(sec(bareinterval(2.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(2.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(2.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(2.0, 4.0)), bareinterval(-0x133956fecf9e49p-51, -1.0)) - - @test isequal_interval(sec(bareinterval(2.0, 3.0)), bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52)) - - @test isequal_interval(sec(bareinterval(2.0, 2.0)), bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51)) - - @test isequal_interval(sec(bareinterval(3.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(3.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(3.0, 4.0)), bareinterval(-0x187a6961d2485fp-52, -1.0)) - - @test isequal_interval(sec(bareinterval(3.0, 3.0)), bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52)) - - @test isequal_interval(sec(bareinterval(4.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(4.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(4.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sec(bareinterval(4.0, 4.0)), bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52)) - - @test isequal_interval(sec(bareinterval(5.0, 7.0)), bareinterval(1.0, 0x1c33db0464189bp-51)) - - @test isequal_interval(sec(bareinterval(5.0, 6.0)), bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51)) - - @test isequal_interval(sec(bareinterval(5.0, 5.0)), bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51)) - - @test isequal_interval(sec(bareinterval(6.0, 7.0)), bareinterval(1.0, 0x153910a80e7db5p-52)) - - @test isequal_interval(sec(bareinterval(6.0, 6.0)), bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52)) - - @test isequal_interval(sec(bareinterval(7.0, 7.0)), bareinterval(0x153910a80e7db4p-52, 0x153910a80e7db5p-52)) - -end - -@testset "mpfi_sech" begin - - @test isequal_interval(sech(bareinterval(-Inf, -7.0)), bareinterval(0.0, 0x1de169fb49b339p-62)) - - @test isequal_interval(sech(bareinterval(-Inf, 0.0)), bareinterval(0.0, 1.0)) - - @test isequal_interval(sech(bareinterval(-Inf, +8.0)), bareinterval(0.0, 1.0)) - - @test isequal_interval(sech(entireinterval(BareInterval{Float64})), bareinterval(0.0, 1.0)) - - @test isequal_interval(sech(bareinterval(-1.0, 0.0)), bareinterval(0x14bcdc50ed6be7p-53, 1.0)) - - @test isequal_interval(sech(bareinterval(0.0, 0.0)), bareinterval(1.0, 1.0)) - - @test isequal_interval(sech(bareinterval(0.0, +1.0)), bareinterval(0x14bcdc50ed6be7p-53, 1.0)) - - @test isequal_interval(sech(bareinterval(0.0, +8.0)), bareinterval(0x15fc20da8e18dbp-63, 1.0)) - - @test isequal_interval(sech(bareinterval(0.0, +Inf)), bareinterval(0.0, 1.0)) - - @test isequal_interval(sech(bareinterval(-0.125, 0.0)), bareinterval(0x1fc069fe3f72bep-53, 1.0)) - - @test isequal_interval(sech(bareinterval(0.0, 0x10000000000001p-53)), bareinterval(0x1c60d1ff040dcfp-53, 1.0)) - - @test isequal_interval(sech(bareinterval(-4.5, -0.625)), bareinterval(0x16bf984a9a2355p-58, 0x1aa0b464a5e24ap-53)) - - @test isequal_interval(sech(bareinterval(1.0, 3.0)), bareinterval(0x196d8e17d88eb1p-56, 0x14bcdc50ed6be8p-53)) - - @test isequal_interval(sech(bareinterval(17.0, 0xb145bb71d3dbp-38)), bareinterval(0x10000000000173p-1074, 0x1639e3175a6893p-76)) - -end - -@testset "mpfi_sin" begin - - @test isequal_interval(sin(bareinterval(-Inf, -7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-Inf, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-Inf, +8.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(entireinterval(BareInterval{Float64})), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 0.0)), bareinterval(-0x1aed548f090cefp-53, 0.0)) - - @test isequal_interval(sin(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(sin(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x1aed548f090cefp-53)) - - @test isequal_interval(sin(bareinterval(0.0, +8.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(0.0, +Inf)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(0.125, 17.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)), bareinterval(0x1fffffffffffffp-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, -0.5)), bareinterval(-1.0, -0x1eaee8744b05efp-54)) - - @test isequal_interval(sin(bareinterval(-4.5, 0.625)), bareinterval(-1.0, 0x1f47ed3dc74081p-53)) - - @test isequal_interval(sin(bareinterval(-1.0, -0.25)), bareinterval(-0x1aed548f090cefp-53, -0x1faaeed4f31576p-55)) - - @test isequal_interval(sin(bareinterval(-0.5, 0.5)), bareinterval(-0x1eaee8744b05f0p-54, 0x1eaee8744b05f0p-54)) - - @test isequal_interval(sin(bareinterval(0x71p+76, 0x71p+76)), bareinterval(0x1bde6c11cbfc46p-55, 0x1bde6c11cbfc47p-55)) - - @test isequal_interval(sin(bareinterval(-7.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 4.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, -1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, -2.0)), bareinterval(-0x1d18f6ead1b446p-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, -3.0)), bareinterval(-0x150608c26d0a09p-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, -4.0)), bareinterval(-0x150608c26d0a09p-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-7.0, -5.0)), bareinterval(-0x150608c26d0a09p-53, 0x1eaf81f5e09934p-53)) - - @test isequal_interval(sin(bareinterval(-7.0, -6.0)), bareinterval(-0x150608c26d0a09p-53, 0x11e1f18ab0a2c1p-54)) - - @test isequal_interval(sin(bareinterval(-7.0, -7.0)), bareinterval(-0x150608c26d0a09p-53, -0x150608c26d0a08p-53)) - - @test isequal_interval(sin(bareinterval(-6.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 4.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, -1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, -2.0)), bareinterval(-0x1d18f6ead1b446p-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, -3.0)), bareinterval(-0x1210386db6d55cp-55, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, -4.0)), bareinterval(0x11e1f18ab0a2c0p-54, 1.0)) - - @test isequal_interval(sin(bareinterval(-6.0, -5.0)), bareinterval(0x11e1f18ab0a2c0p-54, 0x1eaf81f5e09934p-53)) - - @test isequal_interval(sin(bareinterval(-6.0, -6.0)), bareinterval(0x11e1f18ab0a2c0p-54, 0x11e1f18ab0a2c1p-54)) - - @test isequal_interval(sin(bareinterval(-5.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 4.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, 0.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, -1.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, -2.0)), bareinterval(-0x1d18f6ead1b446p-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, -3.0)), bareinterval(-0x1210386db6d55cp-55, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, -4.0)), bareinterval(0x1837b9dddc1eaep-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-5.0, -5.0)), bareinterval(0x1eaf81f5e09933p-53, 0x1eaf81f5e09934p-53)) - - @test isequal_interval(sin(bareinterval(-4.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-4.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-4.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-4.0, 4.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-4.0, 3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-4.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-4.0, 1.0)), bareinterval(-1.0, 0x1aed548f090cefp-53)) - - @test isequal_interval(sin(bareinterval(-4.0, 0.0)), bareinterval(-1.0, 0x1837b9dddc1eafp-53)) - - @test isequal_interval(sin(bareinterval(-4.0, -1.0)), bareinterval(-1.0, 0x1837b9dddc1eafp-53)) - - @test isequal_interval(sin(bareinterval(-4.0, -2.0)), bareinterval(-0x1d18f6ead1b446p-53, 0x1837b9dddc1eafp-53)) - - @test isequal_interval(sin(bareinterval(-4.0, -3.0)), bareinterval(-0x1210386db6d55cp-55, 0x1837b9dddc1eafp-53)) - - @test isequal_interval(sin(bareinterval(-4.0, -4.0)), bareinterval(0x1837b9dddc1eaep-53, 0x1837b9dddc1eafp-53)) - - @test isequal_interval(sin(bareinterval(-3.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-3.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-3.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-3.0, 4.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-3.0, 3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-3.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-3.0, 1.0)), bareinterval(-1.0, 0x1aed548f090cefp-53)) - - @test isequal_interval(sin(bareinterval(-3.0, 0.0)), bareinterval(-1.0, 0.0)) - - @test isequal_interval(sin(bareinterval(-3.0, -1.0)), bareinterval(-1.0, -0x1210386db6d55bp-55)) - - @test isequal_interval(sin(bareinterval(-3.0, -2.0)), bareinterval(-0x1d18f6ead1b446p-53, -0x1210386db6d55bp-55)) - - @test isequal_interval(sin(bareinterval(-3.0, -3.0)), bareinterval(-0x1210386db6d55cp-55, -0x1210386db6d55bp-55)) - - @test isequal_interval(sin(bareinterval(-2.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, 4.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, 3.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, 2.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-2.0, 1.0)), bareinterval(-1.0, 0x1aed548f090cefp-53)) - - @test isequal_interval(sin(bareinterval(-2.0, 0.0)), bareinterval(-1.0, 0.0)) - - @test isequal_interval(sin(bareinterval(-2.0, -1.0)), bareinterval(-1.0, -0x1aed548f090ceep-53)) - - @test isequal_interval(sin(bareinterval(-2.0, -2.0)), bareinterval(-0x1d18f6ead1b446p-53, -0x1d18f6ead1b445p-53)) - - @test isequal_interval(sin(bareinterval(-1.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 4.0)), bareinterval(-0x1aed548f090cefp-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 3.0)), bareinterval(-0x1aed548f090cefp-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 2.0)), bareinterval(-0x1aed548f090cefp-53, 1.0)) - - @test isequal_interval(sin(bareinterval(-1.0, 1.0)), bareinterval(-0x1aed548f090cefp-53, 0x1aed548f090cefp-53)) - - @test isequal_interval(sin(bareinterval(-1.0, 0.0)), bareinterval(-0x1aed548f090cefp-53, 0.0)) - - @test isequal_interval(sin(bareinterval(-1.0, -1.0)), bareinterval(-0x1aed548f090cefp-53, -0x1aed548f090ceep-53)) - - @test isequal_interval(sin(bareinterval(1.0, 7.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(1.0, 6.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(1.0, 5.0)), bareinterval(-1.0, 1.0)) - - @test isequal_interval(sin(bareinterval(1.0, 4.0)), bareinterval(-0x1837b9dddc1eafp-53, 1.0)) - - @test isequal_interval(sin(bareinterval(1.0, 3.0)), bareinterval(0x1210386db6d55bp-55, 1.0)) - - @test isequal_interval(sin(bareinterval(1.0, 2.0)), bareinterval(0x1aed548f090ceep-53, 1.0)) - - @test isequal_interval(sin(bareinterval(1.0, 1.0)), bareinterval(0x1aed548f090ceep-53, 0x1aed548f090cefp-53)) - - @test isequal_interval(sin(bareinterval(2.0, 7.0)), bareinterval(-1.0, 0x1d18f6ead1b446p-53)) - - @test isequal_interval(sin(bareinterval(2.0, 6.0)), bareinterval(-1.0, 0x1d18f6ead1b446p-53)) - - @test isequal_interval(sin(bareinterval(2.0, 5.0)), bareinterval(-1.0, 0x1d18f6ead1b446p-53)) - - @test isequal_interval(sin(bareinterval(2.0, 4.0)), bareinterval(-0x1837b9dddc1eafp-53, 0x1d18f6ead1b446p-53)) - - @test isequal_interval(sin(bareinterval(2.0, 3.0)), bareinterval(0x1210386db6d55bp-55, 0x1d18f6ead1b446p-53)) - - @test isequal_interval(sin(bareinterval(2.0, 2.0)), bareinterval(0x1d18f6ead1b445p-53, 0x1d18f6ead1b446p-53)) - - @test isequal_interval(sin(bareinterval(3.0, 7.0)), bareinterval(-1.0, 0x150608c26d0a09p-53)) - - @test isequal_interval(sin(bareinterval(3.0, 6.0)), bareinterval(-1.0, 0x1210386db6d55cp-55)) - - @test isequal_interval(sin(bareinterval(3.0, 5.0)), bareinterval(-1.0, 0x1210386db6d55cp-55)) - - @test isequal_interval(sin(bareinterval(3.0, 4.0)), bareinterval(-0x1837b9dddc1eafp-53, 0x1210386db6d55cp-55)) - - @test isequal_interval(sin(bareinterval(3.0, 3.0)), bareinterval(0x1210386db6d55bp-55, 0x1210386db6d55cp-55)) - - @test isequal_interval(sin(bareinterval(4.0, 7.0)), bareinterval(-1.0, 0x150608c26d0a09p-53)) - - @test isequal_interval(sin(bareinterval(4.0, 6.0)), bareinterval(-1.0, -0x11e1f18ab0a2c0p-54)) - - @test isequal_interval(sin(bareinterval(4.0, 5.0)), bareinterval(-1.0, -0x1837b9dddc1eaep-53)) - - @test isequal_interval(sin(bareinterval(4.0, 4.0)), bareinterval(-0x1837b9dddc1eafp-53, -0x1837b9dddc1eaep-53)) - - @test isequal_interval(sin(bareinterval(5.0, 7.0)), bareinterval(-0x1eaf81f5e09934p-53, 0x150608c26d0a09p-53)) - - @test isequal_interval(sin(bareinterval(5.0, 6.0)), bareinterval(-0x1eaf81f5e09934p-53, -0x11e1f18ab0a2c0p-54)) - - @test isequal_interval(sin(bareinterval(5.0, 5.0)), bareinterval(-0x1eaf81f5e09934p-53, -0x1eaf81f5e09933p-53)) - - @test isequal_interval(sin(bareinterval(6.0, 7.0)), bareinterval(-0x11e1f18ab0a2c1p-54, 0x150608c26d0a09p-53)) - - @test isequal_interval(sin(bareinterval(6.0, 6.0)), bareinterval(-0x11e1f18ab0a2c1p-54, -0x11e1f18ab0a2c0p-54)) - - @test isequal_interval(sin(bareinterval(7.0, 7.0)), bareinterval(0x150608c26d0a08p-53, 0x150608c26d0a09p-53)) - -end - -@testset "mpfi_sinh" begin - - @test isequal_interval(sinh(bareinterval(-Inf, -7.0)), bareinterval(-Inf, -0x1122876ba380c9p-43)) - - @test isequal_interval(sinh(bareinterval(-Inf, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(sinh(bareinterval(-Inf, +8.0)), bareinterval(-Inf, 0x1749ea514eca66p-42)) - - @test isequal_interval(sinh(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(sinh(bareinterval(-1.0, 0.0)), bareinterval(-0x12cd9fc44eb983p-52, 0.0)) - - @test isequal_interval(sinh(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(sinh(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x12cd9fc44eb983p-52)) - - @test isequal_interval(sinh(bareinterval(0.0, +8.0)), bareinterval(0.0, 0x1749ea514eca66p-42)) - - @test isequal_interval(sinh(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(sinh(bareinterval(-0.125, 0.0)), bareinterval(-0x100aaccd00d2f1p-55, 0.0)) - - @test isequal_interval(sinh(bareinterval(0.0, 0x10000000000001p-53)), bareinterval(0.0, 0x10acd00fe63b98p-53)) - - @test isequal_interval(sinh(bareinterval(-4.5, -0.625)), bareinterval(-0x168062ab5fa9fdp-47, -0x1553e795dc19ccp-53)) - - @test isequal_interval(sinh(bareinterval(1.0, 3.0)), bareinterval(0x12cd9fc44eb982p-52, 0x140926e70949aep-49)) - -end - -@testset "mpfi_sqr" begin - - @test isequal_interval(nthpow(bareinterval(-Inf, -7.0), 2), bareinterval(+49.0, +Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf, 0.0), 2), bareinterval(0.0, +Inf)) - - @test isequal_interval(nthpow(bareinterval(-Inf, +8.0), 2), bareinterval(0.0, +Inf)) - - @test isequal_interval(nthpow(entireinterval(BareInterval{Float64}), 2), bareinterval(0.0, +Inf)) - - @test isequal_interval(nthpow(bareinterval(0.0, 0.0), 2), bareinterval(0.0, 0.0)) - - @test isequal_interval(nthpow(bareinterval(0.0, +8.0), 2), bareinterval(0.0, +64.0)) - - @test isequal_interval(nthpow(bareinterval(0.0, +Inf), 2), bareinterval(0.0, +Inf)) - - @test isequal_interval(nthpow(bareinterval(0x8.6374d8p-4, 0x3.f1d929p+8), 2), bareinterval(0x4.65df11464764p-4, 0xf.8f918d688891p+16)) - - @test isequal_interval(nthpow(bareinterval(0x6.61485c33c0b14p+4, 0x123456p0), 2), bareinterval(0x2.8b45c3cc03ea6p+12, 0x14b66cb0ce4p0)) - - @test isequal_interval(nthpow(bareinterval(-0x1.64722ad2480c9p+0, 0x1p0), 2), bareinterval(0.0, 0x1.f04dba0302d4dp+0)) - - @test isequal_interval(nthpow(bareinterval(0x1.6b079248747a2p+0, 0x2.b041176d263f6p+0), 2), bareinterval(0x2.02ce7912cddf6p+0, 0x7.3a5dee779527p+0)) - -end - -@testset "mpfi_sqrt" begin - - @test isequal_interval(sqrt(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(sqrt(bareinterval(0.0, +9.0)), bareinterval(0.0, +3.0)) - - @test isequal_interval(sqrt(bareinterval(0.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(sqrt(bareinterval(0xaaa1p0, 0x14b66cb0ce4p0)), bareinterval(0xd1p0, 0x123456p0)) - - @test isequal_interval(sqrt(bareinterval(0xe.49ae7969e41bp-4, 0xaaa1p0)), bareinterval(0xf.1ea42821b27a8p-4, 0xd1p0)) - - @test isequal_interval(sqrt(bareinterval(0xa.aa1p-4, 0x1.0c348f804c7a9p+0)), bareinterval(0xd.1p-4, 0x1.06081714eef1dp+0)) - - @test isequal_interval(sqrt(bareinterval(0xe.49ae7969e41bp-4, 0x1.0c348f804c7a9p+0)), bareinterval(0xf.1ea42821b27a8p-4, 0x1.06081714eef1dp+0)) - -end - -@testset "mpfi_sub" begin - - @test isequal_interval(-(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), bareinterval(-Inf, -6.0)) - - @test isequal_interval(-(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), bareinterval(-Inf, -8.0)) - - @test isequal_interval(-(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), bareinterval(-Inf, +8.0)) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(+7.0, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(0.0, +15.0)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(-8.0, 0.0)) - - @test isequal_interval(-(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(-8.0, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), bareinterval(-Inf, -8.0)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)), bareinterval(-8.0, +15.0)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(-(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(-8.0, +Inf)) - - @test isequal_interval(-(bareinterval(-5.0, 59.0), bareinterval(17.0, 81.0)), bareinterval(-86.0, 42.0)) - - @test isequal_interval(-(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x789abcdp0, 0x10000000000000p-93)), bareinterval(-0x10000000000001p-93, 0x123456789abcdp0)) - - @test isequal_interval(-(bareinterval(-4.0, 7.0), bareinterval(-3e300, 0x123456789abcdp-17)), bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947)) - - @test isequal_interval(-(bareinterval(-0x1000100010001p+8, 0x1p+60), bareinterval(-3e300, 0x1000100010001p0)), bareinterval(-0x10101010101011p+4, 0x8f596b3002c1bp+947)) - - @test isequal_interval(-(bareinterval(-5.0, 1.0), bareinterval(1.0, 0x1p+70)), bareinterval(-0x10000000000001p+18, 0.0)) - - @test isequal_interval(-(bareinterval(5.0, 0x1p+70), bareinterval(3.0, 5.0)), bareinterval(0.0, 0x1p+70)) - -end - -@testset "mpfi_sub_d" begin - - @test isequal_interval(-(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)), bareinterval(-Inf, -0x1bffffffffffffp-50)) - - @test isequal_interval(-(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)), bareinterval(-Inf, -7.0)) - - @test isequal_interval(-(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)), bareinterval(-Inf, -7.0)) - - @test isequal_interval(-(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)), bareinterval(-Inf, 0x170ef54646d497p-106)) - - @test isequal_interval(-(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(-(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)), bareinterval(-Inf, -8.0e-17)) - - @test isequal_interval(-(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)), bareinterval(-Inf, 0x16345785d8a00100p0)) - - @test isequal_interval(-(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)), bareinterval(-Inf, 8.0)) - - @test isequal_interval(-(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)), bareinterval(-Inf, -0x16345785d89fff00p0)) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)), bareinterval(+0x170ef54646d497p-109, +0x170ef54646d497p-109)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(-(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) - - @test isequal_interval(-(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)), bareinterval(0x114b37f4b51f71p-107, 0x10000000000001p-49)) - - @test isequal_interval(-(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 8.0)) - - @test isequal_interval(-(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)), bareinterval(-0x114b37f4b51f71p-107, 8.0)) - - @test isequal_interval(-(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)), bareinterval(0x50b45a75f7e81p-104, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(-(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)), bareinterval(-0x142d169d7dfa03p-106, +Inf)) - - @test isequal_interval(-(bareinterval(-32.0, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)), bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47)) - - @test isequal_interval(-(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)), bareinterval(0.0, 0x7353d14aa9c2fp-47)) - - @test isequal_interval(-(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(-0xfb53d14aa9c2fp-48, -0xfb53d14aa9c2fp-48)), bareinterval(-0x104ac2eb5563d1p-48, 0.0)) - - @test isequal_interval(-(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)), bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4)) - - @test isequal_interval(-(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)), bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4)) - - @test isequal_interval(-(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)), bareinterval(0x18p-4, 0x101a3456789abdp-44)) - - @test isequal_interval(-(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)), bareinterval(0xfff8p-4, 0x10018p-4)) - - @test isequal_interval(-(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)), bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4)) - - @test isequal_interval(-(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)), bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4)) - - @test isequal_interval(-(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)), bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44)) - - @test isequal_interval(-(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)), bareinterval(-0x10038p-4, -0x10018p-4)) - -end - -@testset "mpfi_tan" begin - - @test isequal_interval(tan(bareinterval(-Inf, -7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-Inf, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-Inf, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 0.0)), bareinterval(-0x18eb245cbee3a6p-52, 0.0)) - - @test isequal_interval(tan(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(tan(bareinterval(0.0, +1.0)), bareinterval(0.0, 0x18eb245cbee3a6p-52)) - - @test isequal_interval(tan(bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0.125, 17.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, -0.5)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.5, 0.625)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, -0.25)), bareinterval(-0x18eb245cbee3a6p-52, -0x105785a43c4c55p-54)) - - @test isequal_interval(tan(bareinterval(-0.5, 0.5)), bareinterval(-0x117b4f5bf3474bp-53, 0x117b4f5bf3474bp-53)) - - @test isequal_interval(tan(bareinterval(0x71p+76, 0x71p+76)), bareinterval(-0x1c8dc87ddcc134p-55, -0x1c8dc87ddcc133p-55)) - - @test isequal_interval(tan(bareinterval(-7.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, -4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-7.0, -5.0)), bareinterval(-0x1be2e6e13eea79p-53, 0x1b0b4b739bbb07p-51)) - - @test isequal_interval(tan(bareinterval(-7.0, -6.0)), bareinterval(-0x1be2e6e13eea79p-53, 0x129fd86ebb95bfp-54)) - - @test isequal_interval(tan(bareinterval(-7.0, -7.0)), bareinterval(-0x1be2e6e13eea79p-53, -0x1be2e6e13eea78p-53)) - - @test isequal_interval(tan(bareinterval(-6.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, -4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-6.0, -5.0)), bareinterval(0x129fd86ebb95bep-54, 0x1b0b4b739bbb07p-51)) - - @test isequal_interval(tan(bareinterval(-6.0, -6.0)), bareinterval(0x129fd86ebb95bep-54, 0x129fd86ebb95bfp-54)) - - @test isequal_interval(tan(bareinterval(-5.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, -2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, -3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, -4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-5.0, -5.0)), bareinterval(0x1b0b4b739bbb06p-51, 0x1b0b4b739bbb07p-51)) - - @test isequal_interval(tan(bareinterval(-4.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-4.0, -2.0)), bareinterval(-0x12866f9be4de14p-52, 0x117af62e0950f9p-51)) - - @test isequal_interval(tan(bareinterval(-4.0, -3.0)), bareinterval(-0x12866f9be4de14p-52, 0x123ef71254b870p-55)) - - @test isequal_interval(tan(bareinterval(-4.0, -4.0)), bareinterval(-0x12866f9be4de14p-52, -0x12866f9be4de13p-52)) - - @test isequal_interval(tan(bareinterval(-3.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-3.0, -2.0)), bareinterval(0x123ef71254b86fp-55, 0x117af62e0950f9p-51)) - - @test isequal_interval(tan(bareinterval(-3.0, -3.0)), bareinterval(0x123ef71254b86fp-55, 0x123ef71254b870p-55)) - - @test isequal_interval(tan(bareinterval(-2.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, 0.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, -1.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-2.0, -2.0)), bareinterval(0x117af62e0950f8p-51, 0x117af62e0950f9p-51)) - - @test isequal_interval(tan(bareinterval(-1.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(-1.0, 1.0)), bareinterval(-0x18eb245cbee3a6p-52, 0x18eb245cbee3a6p-52)) - - @test isequal_interval(tan(bareinterval(-1.0, 0.0)), bareinterval(-0x18eb245cbee3a6p-52, 0.0)) - - @test isequal_interval(tan(bareinterval(-1.0, -1.0)), bareinterval(-0x18eb245cbee3a6p-52, -0x18eb245cbee3a5p-52)) - - @test isequal_interval(tan(bareinterval(1.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(1.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(1.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(1.0, 4.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(1.0, 3.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(1.0, 2.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(1.0, 1.0)), bareinterval(0x18eb245cbee3a5p-52, 0x18eb245cbee3a6p-52)) - - @test isequal_interval(tan(bareinterval(2.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(2.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(2.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(2.0, 4.0)), bareinterval(-0x117af62e0950f9p-51, 0x12866f9be4de14p-52)) - - @test isequal_interval(tan(bareinterval(2.0, 3.0)), bareinterval(-0x117af62e0950f9p-51, -0x123ef71254b86fp-55)) - - @test isequal_interval(tan(bareinterval(2.0, 2.0)), bareinterval(-0x117af62e0950f9p-51, -0x117af62e0950f8p-51)) - - @test isequal_interval(tan(bareinterval(3.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(3.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(3.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(3.0, 4.0)), bareinterval(-0x123ef71254b870p-55, 0x12866f9be4de14p-52)) - - @test isequal_interval(tan(bareinterval(3.0, 3.0)), bareinterval(-0x123ef71254b870p-55, -0x123ef71254b86fp-55)) - - @test isequal_interval(tan(bareinterval(4.0, 7.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(4.0, 6.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(4.0, 5.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(tan(bareinterval(4.0, 4.0)), bareinterval(0x12866f9be4de13p-52, 0x12866f9be4de14p-52)) - - @test isequal_interval(tan(bareinterval(5.0, 7.0)), bareinterval(-0x1b0b4b739bbb07p-51, 0x1be2e6e13eea79p-53)) - - @test isequal_interval(tan(bareinterval(5.0, 6.0)), bareinterval(-0x1b0b4b739bbb07p-51, -0x129fd86ebb95bep-54)) - - @test isequal_interval(tan(bareinterval(5.0, 5.0)), bareinterval(-0x1b0b4b739bbb07p-51, -0x1b0b4b739bbb06p-51)) - - @test isequal_interval(tan(bareinterval(6.0, 7.0)), bareinterval(-0x129fd86ebb95bfp-54, 0x1be2e6e13eea79p-53)) - - @test isequal_interval(tan(bareinterval(6.0, 6.0)), bareinterval(-0x129fd86ebb95bfp-54, -0x129fd86ebb95bep-54)) - - @test isequal_interval(tan(bareinterval(7.0, 7.0)), bareinterval(0x1be2e6e13eea78p-53, 0x1be2e6e13eea79p-53)) - -end - -@testset "mpfi_tanh" begin - - @test isequal_interval(tanh(bareinterval(-Inf, -7.0)), bareinterval(-1.0, -0x1ffffc832750f1p-53)) - - @test isequal_interval(tanh(bareinterval(-Inf, 0.0)), bareinterval(-1.0, 0.0)) - - @test isequal_interval(tanh(bareinterval(-Inf, 8.0)), bareinterval(-1.0, 0x1fffff872a91f9p-53)) - - @test isequal_interval(tanh(entireinterval(BareInterval{Float64})), bareinterval(-1.0, +1.0)) - - @test isequal_interval(tanh(bareinterval(-1.0, 0.0)), bareinterval(-0x185efab514f395p-53, 0.0)) - - @test isequal_interval(tanh(bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(tanh(bareinterval(0.0, 1.0)), bareinterval(0.0, 0x185efab514f395p-53)) - - @test isequal_interval(tanh(bareinterval(0.0, 8.0)), bareinterval(0.0, 0x1fffff872a91f9p-53)) - - @test isequal_interval(tanh(bareinterval(0.0, +Inf)), bareinterval(0.0, +1.0)) - - @test isequal_interval(tanh(bareinterval(-0.125, 0.0)), bareinterval(-0x1fd5992bc4b835p-56, 0.0)) - - @test isequal_interval(tanh(bareinterval(0.0, 0x10000000000001p-53)), bareinterval(0.0, 0x1d9353d7568af5p-54)) - - @test isequal_interval(tanh(bareinterval(-4.5, -0.625)), bareinterval(-0x1ffdfa72153984p-53, -0x11bf47eabb8f95p-53)) - - @test isequal_interval(tanh(bareinterval(1.0, 3.0)), bareinterval(0x185efab514f394p-53, 0x1fd77d111a0b00p-53)) - - @test isequal_interval(tanh(bareinterval(17.0, 18.0)), bareinterval(0x1fffffffffffe1p-53, 0x1ffffffffffffcp-53)) - -end - -@testset "mpfi_union" begin - - @test isequal_interval(hull(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)), bareinterval(-Inf, +8.0)) - - @test isequal_interval(hull(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(hull(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)), bareinterval(-Inf, +8.0)) - - @test isequal_interval(hull(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)), entireinterval(BareInterval{Float64})) - - @test isequal_interval(hull(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)), bareinterval(-Inf, 0.0)) - - @test isequal_interval(hull(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)), bareinterval(-7.0, +8.0)) - - @test isequal_interval(hull(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)), bareinterval(0.0, +8.0)) - - @test isequal_interval(hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hull(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hull(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})), entireinterval(BareInterval{Float64})) - - @test isequal_interval(hull(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)), bareinterval(-7.0, +8.0)) - - @test isequal_interval(hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)), bareinterval(0.0, 0.0)) - - @test isequal_interval(hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)), bareinterval(0.0, +Inf)) - - @test isequal_interval(hull(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)), bareinterval(-0x0dp0, 0x90p0)) - -end diff --git a/test/test_ITF1788/pow_rev.jl b/test/test_ITF1788/pow_rev.jl deleted file mode 100644 index 026c9bdf2..000000000 --- a/test/test_ITF1788/pow_rev.jl +++ /dev/null @@ -1,1615 +0,0 @@ -@testset "minimal.powRev1_test" begin - - @test pow_rev1(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(-Inf,-1.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(-Inf,0.9), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(1.1,Inf), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.1,Inf), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,0.9), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,1.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test pow_rev1(bareinterval(1.0,2.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test pow_rev1(bareinterval(1.0,1.0), bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,1.0), bareinterval(1.0,1.0)) === bareinterval(1.0,1.0) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,1.0), bareinterval(2.0,3.0)) === bareinterval(2.0,3.0) - - @test_broken pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test_broken pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,1.0), bareinterval(20.0,30.0)) === bareinterval(20.0,30.0) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,1.0), bareinterval(1.0,1.0)) === bareinterval(1.0,1.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, 2.0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 2.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 2.0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 2.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, 1.0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, 1.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 1.0) - - @test pow_rev1(bareinterval(-4.0,-2.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-Inf,-2.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,0.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,0.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,0.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,0.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,0.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,0.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,0.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,0.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,0.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,0.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,0.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-Inf,0.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,0.5), bareinterval(1.0, Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,0.5), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,0.5), bareinterval(1.0, Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,0.5), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,0.5), bareinterval(1.0, Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.5), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,0.5), bareinterval(1.0, Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,0.5), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.25,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.25,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.25,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.25,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.25,0.5), bareinterval(1.0, Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.25,0.5), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.25,0.5), bareinterval(1.0, Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.25,0.5), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.25,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.25,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.25,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.25,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.25,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.25,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.25,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.25,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(-Inf,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(-Inf,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(-Inf,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(-Inf,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.5,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.5,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.5,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.5,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.5,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.5,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.5,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.5,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,4.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(2.0,4.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(2.0,4.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(2.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(-Inf,4.0), bareinterval(2.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(2.0,4.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(2.0,4.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,Inf), bareinterval(2.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(2.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(2.0,4.0), bareinterval(1.0,Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(2.0,4.0), bareinterval(1.0,Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test_broken pow_rev1(bareinterval(-4.0,4.0), bareinterval(2.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test_broken pow_rev1(bareinterval(-Inf,4.0), bareinterval(2.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(2.0,4.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(2.0,4.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(-4.0,Inf), bareinterval(2.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(entireinterval(BareInterval{Float64}), bareinterval(2.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,0.5), bareinterval(1.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,0.5), bareinterval(1.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,0.5), bareinterval(1.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,0.5), bareinterval(1.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.25,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.25,0.5), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.25,0.5), bareinterval(1.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(0.25,0.5), bareinterval(1.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.25,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.25,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(0.25,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(0.25,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,1.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,2.0), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,Inf), bareinterval(0.0, 1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(-Inf,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,2.0), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(-Inf,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.5,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.5,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.5,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.5,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,2.0), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(2.0,4.0), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(2.0,Inf), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(2.0,4.0), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev1(bareinterval(0.0,Inf), bareinterval(2.0,Inf), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(2.0,4.0), bareinterval(1.0,Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(0.0,4.0), bareinterval(2.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(2.0,4.0), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(0.0,Inf), bareinterval(2.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(-Inf,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 0x1.AE89F995AD3AEp-1) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.25,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 1.0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 1.0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 1.0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.25,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 1.0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(1.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 1.0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(-Inf,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(-Inf,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, Inf) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.5,2.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x1.6A09E667F3BCCp-1, Inf) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 0x1.6A09E667F3BCDp0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, 2.0) - - @test pow_rev1(bareinterval(2.0,4.0), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x1.306FE0A31B715p0, Inf) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(2.0,4.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, 2.0) - - @test pow_rev1(bareinterval(2.0,Inf), bareinterval(2.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - -end - -@testset "minimal.powRev2_test" begin - - @test pow_rev2(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 0.0), bareinterval(-Inf, -0.1), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 0.0), bareinterval(0.1, Inf), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(-Inf, 0.9), bareinterval(0.0, 0.9), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.1, Inf), bareinterval(1.1, Inf), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(-Inf, 0.9), bareinterval(1.1, Inf), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.1, Inf), bareinterval(0.0, 0.9), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(-Inf, 0.0), bareinterval(-Inf, 0.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(-Inf, 0.0), bareinterval(-Inf, 0.0), bareinterval(1.0, 2.0)) === bareinterval(1.0, 2.0) - - @test_broken pow_rev2(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0), bareinterval(1.0, 2.0)) === bareinterval(1.0, 2.0) - - @test_broken pow_rev2(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(-Inf, 0.0), entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(-Inf, 0.0), entireinterval(BareInterval{Float64}), bareinterval(1.0, 2.0)) === bareinterval(1.0, 2.0) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0), bareinterval(2.0, 3.0)) === bareinterval(2.0, 3.0) - - @test_broken pow_rev2(entireinterval(BareInterval{Float64}), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(entireinterval(BareInterval{Float64}), bareinterval(1.0, 1.0), bareinterval(2.0, 3.0)) === bareinterval(2.0, 3.0) - - @test pow_rev2(bareinterval(2.0, 3.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(2.0, 3.0), bareinterval(1.0, 1.0), bareinterval(2.0, 3.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 0.5), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 0.5), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 0.5), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 2.0) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.5) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-0.5, Inf) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-0.5, 0.5) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.5) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-0.5, 0.0) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(1.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 0.25), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 0.25), bareinterval(2.0, Inf), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.5, Inf) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 2.0) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev2(bareinterval(0.25, 0.5), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, Inf) - - @test pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 1.0) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 0.0) - - @test pow_rev2(bareinterval(0.25, 0.5), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(-2.0, -0.5) - - @test_broken pow_rev2(bareinterval(0.25, 0.5), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.5, Inf) - - @test pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.5, Inf) - - @test pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.25, 1.0), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 1.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, -0.5) - - @test pow_rev2(bareinterval(1.0, 1.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.25, 1.0), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, 1.0), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(1.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 1.0), bareinterval(2.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 1.0), bareinterval(2.0, Inf), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(1.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(1.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, 2.0), bareinterval(2.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.0, 2.0), bareinterval(2.0, Inf), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(2.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.0, Inf), bareinterval(2.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.5, Inf), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(1.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(1.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(0.5, 2.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test_broken pow_rev2(bareinterval(0.5, 2.0), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(0.5, Inf), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test pow_rev2(bareinterval(0.5, Inf), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, -1.0) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, -1.0) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.25, 0.5), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 1.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.0, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(0.5, Inf), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(1.0, 2.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test pow_rev2(bareinterval(1.0, 2.0), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, Inf), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(1.0, 2.0), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === bareinterval(1.0, Inf) - - @test pow_rev2(bareinterval(1.0, Inf), bareinterval(2.0, 4.0), bareinterval(0.0, Inf)) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, -0.5) - - @test pow_rev2(bareinterval(2.0, Inf), bareinterval(0.0, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(0.0, 0.5), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-2.0, -0.5) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(0.25, 0.5), entireinterval(BareInterval{Float64})) === bareinterval(-2.0, 0.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(0.25, 0.5), bareinterval(0.0, Inf)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 0.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(0.5, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 0.0) - - @test pow_rev2(bareinterval(2.0, 4.0), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(2.0, Inf), bareinterval(1.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(2.0, Inf), bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 0.0) - - @test pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(2.0, Inf), bareinterval(0.0, 1.0), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 1.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(0.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf, 1.0) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(0.5, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(1.0, 2.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test pow_rev2(bareinterval(2.0, 4.0), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) - - @test pow_rev2(bareinterval(2.0, Inf), bareinterval(1.0, 2.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.5, 2.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(2.0, 4.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 2.0) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(2.0, 4.0), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test_broken pow_rev2(bareinterval(2.0, 4.0), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.5, Inf) - - @test pow_rev2(bareinterval(2.0, Inf), bareinterval(2.0, Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0, Inf) - - @test_broken pow_rev2(bareinterval(2.0, Inf), bareinterval(2.0, Inf), bareinterval(-Inf, 0.0)) === emptyinterval(BareInterval{Float64}) - -end diff --git a/test/test_ITF1788/run_ITF1788.jl b/test/test_ITF1788/run_ITF1788.jl deleted file mode 100644 index a0fd71f00..000000000 --- a/test/test_ITF1788/run_ITF1788.jl +++ /dev/null @@ -1,22 +0,0 @@ -include("atan2.jl") -include("c-xsc.jl") -include("fi_lib.jl") -include("ieee1788-constructors.jl") -include("ieee1788-exceptions.jl") -include("libieeep1788_bool.jl") -include("libieeep1788_cancel.jl") -include("libieeep1788_class.jl") -include("libieeep1788_elem.jl") -include("libieeep1788_num.jl") -include("libieeep1788_overlap.jl") -include("libieeep1788_rec_bool.jl") -include("libieeep1788_reduction.jl") -include("libieeep1788_set.jl") -include("mpfi.jl") - -# TODO: CHECK CONTRACTORS -# using IntervalContractors -# include("abs_rev.jl") -# include("libieeep1788_rev.jl") -# include("libieeep1788_mul_rev.jl") -# include("pow_rev.jl") diff --git a/test/tests_warning.log b/test/tests_warning.log new file mode 100644 index 000000000..2e5140e58 --- /dev/null +++ b/test/tests_warning.log @@ -0,0 +1,22 @@ +┌ Warning: invalid interval, empty interval is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:202 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: interval part of NaI +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:320 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 +┌ Warning: invalid interval, NaI is returned +└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 From d05ef6fa0b3f9e25728b7f8f16a626d78c412cc6 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 00:30:00 +0100 Subject: [PATCH 02/54] Remove `Random` --- Project.toml | 1 - src/IntervalArithmetic.jl | 2 -- src/rand.jl | 7 ------- test/interval_tests/rand.jl | 28 ---------------------------- 4 files changed, 38 deletions(-) delete mode 100644 src/rand.jl delete mode 100644 test/interval_tests/rand.jl diff --git a/Project.toml b/Project.toml index 5d88e89d9..37166b5b5 100644 --- a/Project.toml +++ b/Project.toml @@ -6,7 +6,6 @@ version = "0.21.2" [deps] CRlibm = "96374032-68de-5a5b-8d9e-752f78720389" FastRounding = "fa42c844-2597-5d31-933b-ebd51ab2693f" -Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" RoundingEmulator = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" SetRounding = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index 82d3fce0a..56cb650fa 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -21,8 +21,6 @@ end include("intervals/intervals.jl") -include("rand.jl") - include("display.jl") export setdisplay diff --git a/src/rand.jl b/src/rand.jl deleted file mode 100644 index f8c107dd5..000000000 --- a/src/rand.jl +++ /dev/null @@ -1,7 +0,0 @@ -using Random - -Base.rand(X::Interval{T}) where {T<:NumTypes} = inf(X) + rand(T) * (sup(X) - inf(X)) - -Random.gentype(::Type{Interval{T}}) where {T<:NumTypes} = T - -Random.rand(::AbstractRNG, X::Random.SamplerTrivial{Interval{T}}) where {T<:NumTypes} = rand(X[]) diff --git a/test/interval_tests/rand.jl b/test/interval_tests/rand.jl deleted file mode 100644 index fd470ee08..000000000 --- a/test/interval_tests/rand.jl +++ /dev/null @@ -1,28 +0,0 @@ -using Random - -@testset "rand tests" begin - - X = interval(3, 4) - for i in 1:100 - @test in_interval(rand(X), X) - end - - X = interval(3, 4) - for i in 1:100 - @test in_interval(rand(X, 4)[(i%4)+1], X) - end - - for T in (Float32, Float64, BigFloat) - X = interval(T, 3, 4) - @test rand(X) isa T - end - - for T in (Float32, Float64, BigFloat) - X = interval(T, 3, 7) - Y = rand(X, 7) - @test Y isa Array{T, 1} - for x in Y - @test x isa T - end - end -end From 1e44ea9cac0aff743c426952cb46a6260f7563b2 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 00:48:09 +0100 Subject: [PATCH 03/54] Update CI --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b23df77f3..440564755 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -11,7 +11,7 @@ jobs: fail-fast: false matrix: version: - - '1.8' + - '1.9' - '1' - 'nightly' os: From 9bfaab49eaa6a10c3d590da2dc6206d81809ea6e Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 00:54:12 +0100 Subject: [PATCH 04/54] Fix jldoctest in display.jl --- src/display.jl | 54 +++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/display.jl b/src/display.jl index 31561dca7..4dd9c3037 100644 --- a/src/display.jl +++ b/src/display.jl @@ -1,10 +1,10 @@ -mutable struct DisplayParameters +mutable struct DisplayOptions format :: Symbol decorations :: Bool sigdigits :: Int end -function Base.show(io::IO, ::MIME"text/plain", params::DisplayParameters) +function Base.show(io::IO, ::MIME"text/plain", params::DisplayOptions) println(io, "Display options:") println(io, " - format: ", params.format) println(io, " - decorations: ", params.decorations) @@ -15,7 +15,7 @@ function Base.show(io::IO, ::MIME"text/plain", params::DisplayParameters) end end -const display_params = DisplayParameters(:infsup, true, 6) # default +const display_options = DisplayOptions(:infsup, true, 6) # default """ setdisplay(format::Symbol; decorations::Bool, sigdigits::Int) @@ -42,7 +42,7 @@ julia> x = interval(0.1, 0.3) # default display options [0.0999999, 0.300001]_com julia> setdisplay(:full) -Display parameters: +Display options: - format: full - decorations: true - significant digits: 6 (ignored) @@ -51,8 +51,8 @@ julia> x Interval(0.09999999999999999, 0.30000000000000004, com) julia> setdisplay(:infsup; sigdigits = 3) -Display parameters: - - format: standard +Display options: + - format: infsup - decorations: true - significant digits: 3 @@ -60,8 +60,8 @@ julia> x [0.0999, 0.301]_com julia> setdisplay(; decorations = false) -Display parameters: - - format: standard +Display options: + - format: infsup - decorations: false - significant digits: 3 @@ -69,27 +69,27 @@ julia> x [0.0999, 0.301] ``` """ -function setdisplay(format::Symbol = display_params.format; - decorations::Bool = display_params.decorations, - sigdigits::Int = display_params.sigdigits) +function setdisplay(format::Symbol = display_options.format; + decorations::Bool = display_options.decorations, + sigdigits::Int = display_options.sigdigits) format ∉ (:infsup, :midpoint, :full) && return throw(ArgumentError("`format` must be `:infsup`, `:midpoint` or `:full`")) sigdigits < 1 && return throw(ArgumentError("`sigdigits` must be `≥ 1`")) - display_params.format = format - display_params.decorations = decorations - display_params.sigdigits = sigdigits + display_options.format = format + display_options.decorations = decorations + display_options.sigdigits = sigdigits - return display_params + return display_options end # printing mechanism Base.show(io::IO, ::MIME"text/plain", a::Union{BareInterval,Interval,Complex{<:Interval}}) = - print(io, _str_repr(a, display_params.format)) + print(io, _str_repr(a, display_options.format)) function Base.show(io::IO, a::Union{BareInterval,Interval,Complex{<:Interval}}) - get(io, :compact, false) && return print(io, _str_repr(a, display_params.format)) + get(io, :compact, false) && return print(io, _str_repr(a, display_options.format)) return print(io, _str_repr(a, :full)) end @@ -117,7 +117,7 @@ function _str_repr(a::Interval{T}, format::Symbol) where {T<:NumTypes} str_interval = _str_basic_repr(a.bareinterval, format) # use `a.bareinterval` to not print a warning if `a` is an NaI if isguaranteed(a) format === :full && return string("Interval{", T, "}(", str_interval, ", ", decoration(a), ')') - display_params.decorations || return str_interval + display_options.decorations || return str_interval if format === :midpoint && str_interval != "∅" str_interval = string('(', str_interval, ')') end @@ -127,7 +127,7 @@ function _str_repr(a::Interval{T}, format::Symbol) where {T<:NumTypes} if format === :midpoint && str_interval != "∅" str_interval = string('(', str_interval, ')') end - display_params.decorations || return string(str_interval, "_NG") + display_options.decorations || return string(str_interval, "_NG") return string(str_interval, '_', decoration(a), "_NG") end end @@ -140,14 +140,14 @@ function _str_repr(a::Interval{BigFloat}, format::Symbol) if format === :midpoint && str_interval != "∅" str_interval = string('(', str_interval, ')') end - display_params.decorations || return string(str_interval, _subscriptify(precision(BigFloat))) + display_options.decorations || return string(str_interval, _subscriptify(precision(BigFloat))) return string(str_interval, _subscriptify(precision(BigFloat)), '_', decoration(a)) else format === :full && return string("Interval{", T, "}(", str_interval, ", ", decoration(a), ", NG)") if format === :midpoint && str_interval != "∅" str_interval = string('(', str_interval, ')') end - display_params.decorations || return string(str_interval, _subscriptify(precision(BigFloat)), "_NG") + display_options.decorations || return string(str_interval, _subscriptify(precision(BigFloat)), "_NG") return string(str_interval, _subscriptify(precision(BigFloat)), '_', decoration(a), "_NG") end end @@ -157,17 +157,17 @@ function _str_repr(x::Complex{<:Interval}, format::Symbol) if format === :full return string(_str_repr(real(x), format), " + ", _str_repr(imag(x), format), "im") elseif format === :infsup - display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") + display_options.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") return string(_str_repr(real(x), format), " + ", _str_repr(imag(x), format), "im") else - display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") + display_options.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") return string('(', _str_repr(real(x), format), ") + (", _str_repr(imag(x), format), ")im") end end function _str_repr(x::Complex{Interval{BigFloat}}, format::Symbol) # `format` is either `:infsup`, `:midpoint` or `:full` - display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") + display_options.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") return string(_str_repr(real(x), format), " + ", _str_repr(imag(x), format), "im") end @@ -177,7 +177,7 @@ function _str_basic_repr(a::BareInterval{<:AbstractFloat}, format::Symbol) # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" - sigdigits = display_params.sigdigits + sigdigits = display_options.sigdigits if format === :full return string(a.lo, ", ", sup(a)) elseif format === :midpoint @@ -197,7 +197,7 @@ function _str_basic_repr(a::BareInterval{Float32}, format::Symbol) # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" - sigdigits = display_params.sigdigits + sigdigits = display_options.sigdigits if format === :full lo = replace(string(a.lo, "f0"), "NaNf0" => "NaN32", "Inff0" => "Inf32") if contains(lo, 'e') @@ -239,7 +239,7 @@ function _str_basic_repr(a::BareInterval{Float16}, format::Symbol) # `format` is either `:infsup`, `:midpoint` or `:full` # do not use `inf(a)` to avoid `-0.0` isempty_interval(a) && return "∅" - sigdigits = display_params.sigdigits + sigdigits = display_options.sigdigits if format === :full output = string("Float16(", a.lo, "), Float16(", sup(a), ')') return replace(output, "Float16(NaN)" => "NaN16", "Float16(-Inf)" => "-Inf16", "Float16(Inf)" => "Inf16") From e6bd64a6ea150c611d2a790ba721f8d5fd55770d Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 01:06:22 +0100 Subject: [PATCH 05/54] More fixes of jldoctest --- src/display.jl | 10 ++++++++-- src/intervals/construction.jl | 2 +- src/intervals/flavors.jl | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/display.jl b/src/display.jl index 4dd9c3037..72bbb78f7 100644 --- a/src/display.jl +++ b/src/display.jl @@ -38,7 +38,13 @@ left unchanged. # Examples ```jldoctest -julia> x = interval(0.1, 0.3) # default display options +julia> setdisplay(:infsup; decorations = true, sigdigits = 6) # default display options +Display options: + - format: infsup + - decorations: true + - significant digits: 6 + +julia> x = interval(0.1, 0.3) [0.0999999, 0.300001]_com julia> setdisplay(:full) @@ -48,7 +54,7 @@ Display options: - significant digits: 6 (ignored) julia> x -Interval(0.09999999999999999, 0.30000000000000004, com) +Interval(0.1, 0.3, com) julia> setdisplay(:infsup; sigdigits = 3) Display options: diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 93a8e8010..223e7c262 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -396,7 +396,7 @@ julia> interval(1, π) Interval{Float64}(1.0, 3.1415926535897936, com) julia> interval(BigFloat, 1, π) -Interval{BigFloat}(1.0, 3.141592653589793238462643383279502884197169399375105820974944592307816406286233) +Interval{BigFloat}(1.0, 3.141592653589793238462643383279502884197169399375105820974944592307816406286233, com) ``` """ function interval(::Type{T}, a, b, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} diff --git a/src/intervals/flavors.jl b/src/intervals/flavors.jl index 226d9bbad..3f0168319 100644 --- a/src/intervals/flavors.jl +++ b/src/intervals/flavors.jl @@ -32,6 +32,8 @@ julia> IntervalArithmetic.default_flavor() IntervalArithmetic.Flavor{:set_based}() julia> isempty_interval(bareinterval(Inf, Inf)) +┌ Warning: invalid interval, empty interval is returned +└ @ IntervalArithmetic ~/work/IntervalArithmetic.jl/IntervalArithmetic.jl/src/intervals/construction.jl:202 true julia> isempty_interval(bareinterval(0)/bareinterval(0)) From 651c1e3b4102c7a3a47787c9d45562798c84aa4f Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 01:08:53 +0100 Subject: [PATCH 06/54] One more fix --- src/display.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/display.jl b/src/display.jl index 72bbb78f7..bcc9f6971 100644 --- a/src/display.jl +++ b/src/display.jl @@ -54,7 +54,7 @@ Display options: - significant digits: 6 (ignored) julia> x -Interval(0.1, 0.3, com) +Interval{Float64}(0.1, 0.3, com) julia> setdisplay(:infsup; sigdigits = 3) Display options: From d54099d7db789858a7ed7001c8f93196104f9be9 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 12:46:22 +0100 Subject: [PATCH 07/54] Fix propagation of `isguaranteed` --- src/intervals/construction.jl | 149 ++++++++++++++-------------------- 1 file changed, 59 insertions(+), 90 deletions(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 223e7c262..fab1b33ae 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -367,7 +367,7 @@ Interval(x::Union{BareInterval,Interval}) = interval(bareinterval(x)) # """ - interval([T<:Union{Rational,AbstractFloat}=default_numtype()], a, b, [d::Decoration]) + interval([T<:Union{Rational,AbstractFloat}=default_numtype()], a, b, d = com) Create the interval ``[a, b]`` according to the IEEE Standard 1788-2015. The validity of the interval is checked by [`is_valid_interval`](@ref): if `true` @@ -399,65 +399,22 @@ julia> interval(BigFloat, 1, π) Interval{BigFloat}(1.0, 3.141592653589793238462643383279502884197169399375105820974944592307816406286233, com) ``` """ -function interval(::Type{T}, a, b, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} +function interval(::Type{T}, a, b, d::Decoration = com; format::Symbol = :infsup) where {T<:NumTypes} format === :infsup && return _interval_infsup(T, a, b, d) format === :midpoint && return _interval_midpoint(T, a, b, d) return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -interval(a, b, d::Decoration; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(b)), a, b, d; format = format) +interval(a, b, d::Decoration = com; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(b)), a, b, d; format = format) -function interval(::Type{T}, a, b; format::Symbol = :infsup) where {T<:NumTypes} - format === :infsup && return _interval_infsup(T, a, b) - format === :midpoint && return _interval_midpoint(T, a, b) - return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) -end -interval(a, b; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(b)), a, b; format = format) - -function interval(::Type{T}, a, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} +function interval(::Type{T}, a, d::Decoration = com; format::Symbol = :infsup) where {T<:NumTypes} (format === :infsup) | (format === :midpoint) && return _interval_infsup(T, a, a, d) return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) end -function interval(::Type{T}, x::BareInterval, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} - if d == ill - @warn "invalid interval, NaI is returned" - return nai(T) - else - (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x), min(decoration(x), d), isguaranteed(x)) # assumes valid interval - return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) - end -end -function interval(::Type{T}, x::Interval, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} - if d == ill - @warn "invalid interval, NaI is returned" - return nai(T) - else - # use `x.bareinterval` to not print a warning if `x` is an NaI - (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x.bareinterval), min(decoration(x), d), isguaranteed(x)) # assumes valid interval - return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) - end -end -interval(a, d::Decoration; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(a)), a, d; format = format) - -function interval(::Type{T}, a; format::Symbol = :infsup) where {T<:NumTypes} - (format === :infsup) | (format === :midpoint) && return _interval_infsup(T, a, a) - return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) -end -function interval(::Type{T}, x::BareInterval; format::Symbol = :infsup) where {T<:NumTypes} - (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x), decoration(x), isguaranteed(x)) # assumes valid interval - return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) -end -function interval(::Type{T}, x::Interval; format::Symbol = :infsup) where {T<:NumTypes} - # use `x.bareinterval` to not print warning if `x` is an NaI - (format === :infsup) | (format === :midpoint) && return _unsafe_interval(bareinterval(T, x.bareinterval), decoration(x), isguaranteed(x)) # assumes valid interval - return throw(ArgumentError("`format` must be `:infsup` or `:midpoint`")) -end -interval(a; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(a)), a; format = format) +interval(a, d::Decoration = com; format::Symbol = :infsup) = interval(promote_numtype(numtype(a), numtype(a)), a, d; format = format) # some useful extra constructor -interval(::Type{T}, a::Tuple, d::Decoration; format::Symbol = :infsup) where {T<:NumTypes} = interval(T, a..., d; format = format) -interval(a::Tuple, d::Decoration; format::Symbol = :infsup) = interval(a..., d; format = format) -interval(::Type{T}, a::Tuple; format::Symbol = :infsup) where {T<:NumTypes} = interval(T, a...; format = format) -interval(a::Tuple; format::Symbol = :infsup) = interval(a...; format = format) +interval(::Type{T}, a::Tuple, d::Decoration = com; format::Symbol = :infsup) where {T<:NumTypes} = interval(T, a..., d; format = format) +interval(a::Tuple, d::Decoration = com; format::Symbol = :infsup) = interval(a..., d; format = format) interval(A::AbstractArray; format::Symbol = :infsup) = interval.(A; format = format) # standard format @@ -491,77 +448,89 @@ function _interval_infsup(::Type{T}, a, b) where {T<:NumTypes} end end -_interval_infsup(::Type{T}, a::Complex, b::Complex, d::Decoration) where {T<:NumTypes} = +# needed for special warnings and propagation of `isguaranteed` +function _interval_infsup(::Type{T}, x::Union{BareInterval,Interval}, y::Union{BareInterval,Interval}, d::Decoration) where {T<:NumTypes} + lo = _inf(x) + hi = _sup(y) + t = isguaranteed(x) & isguaranteed(y) + if d == ill + @warn "invalid interval, NaI is returned" + return _unsafe_interval(nai(T).bareinterval, ill, t) + elseif isempty_interval(x) && isempty_interval(y) + return _unsafe_interval(emptyinterval(BareInterval{T}), trv, t) + elseif !is_valid_interval(lo, hi) + @warn "invalid interval, NaI is returned" + return _unsafe_interval(nai(T).bareinterval, ill, t) + else + z = _unsafe_bareinterval(T, lo, hi) + return _unsafe_interval(z, min(decoration(x), decoration(y), decoration(z), d), t) + end +end +function _interval_infsup(::Type{T}, x::Union{BareInterval,Interval}, y, d::Decoration) where {T<:NumTypes} + lo = _inf(x) + hi = _sup(y) + if !is_valid_interval(lo, hi) || d == ill + @warn "invalid interval, NaI is returned" + return nai(T) + else + z = _unsafe_bareinterval(T, lo, hi) + return _unsafe_interval(z, min(decoration(x), decoration(z), d), isguaranteed(x)) + end +end +function _interval_infsup(::Type{T}, x, y::Union{BareInterval,Interval}, d::Decoration) where {T<:NumTypes} + lo = _inf(x) + hi = _sup(y) + if !is_valid_interval(lo, hi) || d == ill + @warn "invalid interval, NaI is returned" + return nai(T) + else + z = _unsafe_bareinterval(T, lo, hi) + return _unsafe_interval(z, min(decoration(y), decoration(z), d), isguaranteed(y)) + end +end + +_interval_infsup(::Type{T}, a::Complex, b::Complex, d::Decoration = com) where {T<:NumTypes} = complex(_interval_infsup(T, real(a), real(b), d), _interval_infsup(T, imag(a), imag(b), d)) -_interval_infsup(::Type{T}, a::Complex, b, d::Decoration) where {T<:NumTypes} = +_interval_infsup(::Type{T}, a::Complex, b, d::Decoration = com) where {T<:NumTypes} = complex(_interval_infsup(T, real(a), b, d), _interval_infsup(T, imag(a), d)) -_interval_infsup(::Type{T}, a, b::Complex, d::Decoration) where {T<:NumTypes} = +_interval_infsup(::Type{T}, a, b::Complex, d::Decoration = com) where {T<:NumTypes} = complex(_interval_infsup(T, a, real(b), d), _interval_infsup(T, imag(b), d)) -_interval_infsup(::Type{T}, a::Complex, b::Complex) where {T<:NumTypes} = - complex(_interval_infsup(T, real(a), real(b)), _interval_infsup(T, imag(a), imag(b))) -_interval_infsup(::Type{T}, a::Complex, b) where {T<:NumTypes} = - complex(_interval_infsup(T, real(a), b), _interval_infsup(T, imag(a))) -_interval_infsup(::Type{T}, a, b::Complex) where {T<:NumTypes} = - complex(_interval_infsup(T, a, real(b)), _interval_infsup(T, imag(b))) - # midpoint constructors """ - _interval_midpoint(T<:NumTypes, m, r, [d::Decoration]) + _interval_midpoint(T<:NumTypes, m, r, d = com) Internal constructor for intervals described by their midpoint and radius, i.e. of the form ``m \\pm r`. """ -function _interval_midpoint(::Type{T}, m, r, d::Decoration) where {T<:NumTypes} +function _interval_midpoint(::Type{T}, m, r, d::Decoration = com) where {T<:NumTypes} x = _interval_infsup(T, m, m, d) - return _interval_infsup(T, _inf(x - r), _sup(x + r), d) -end -function _interval_midpoint(::Type{T}, m, r) where {T<:NumTypes} - x = _interval_infsup(T, m, m) - return _interval_infsup(T, _inf(x - r), _sup(x + r)) + return _interval_infsup(T, x - r, x + r, d) end -_interval_midpoint(::Type{T}, m::Complex, r, d::Decoration) where {T<:NumTypes} = +_interval_midpoint(::Type{T}, m::Complex, r, d::Decoration = com) where {T<:NumTypes} = complex(_interval_midpoint(T, real(m), r, d), _interval_midpoint(T, imag(m), r, d)) -_interval_midpoint(::Type{T}, m::Complex, r) where {T<:NumTypes} = - complex(_interval_midpoint(T, real(m), r), _interval_midpoint(T, imag(m), r)) -function _interval_midpoint(::Type{T}, m, r::Complex{<:Interval}, d::Decoration) where {T<:NumTypes} +function _interval_midpoint(::Type{T}, m, r::Complex{<:Interval}, d::Decoration = com) where {T<:NumTypes} isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end -function _interval_midpoint(::Type{T}, m, r::Complex{<:Interval}) where {T<:NumTypes} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) - return _interval_midpoint(T, m, real(r)) -end -function _interval_midpoint(::Type{T}, m, r::Complex, d::Decoration) where {T<:NumTypes} +function _interval_midpoint(::Type{T}, m, r::Complex, d::Decoration = com) where {T<:NumTypes} iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end -function _interval_midpoint(::Type{T}, m, r::Complex) where {T<:NumTypes} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) - return _interval_midpoint(T, m, real(r)) -end -function _interval_midpoint(::Type{T}, m::Complex, r::Complex{<:Interval}, d::Decoration) where {T<:NumTypes} +function _interval_midpoint(::Type{T}, m::Complex, r::Complex{<:Interval}, d::Decoration = com) where {T<:NumTypes} isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end -function _interval_midpoint(::Type{T}, m::Complex, r::Complex{<:Interval}) where {T<:NumTypes} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) - return _interval_midpoint(T, m, real(r)) -end -function _interval_midpoint(::Type{T}, m::Complex, r::Complex, d::Decoration) where {T<:NumTypes} +function _interval_midpoint(::Type{T}, m::Complex, r::Complex, d::Decoration = com) where {T<:NumTypes} iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) return _interval_midpoint(T, m, real(r), d) end -function _interval_midpoint(::Type{T}, m::Complex, r::Complex) where {T<:NumTypes} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero")) - return _interval_midpoint(T, m, real(r)) -end # promotion From 0d8f8e5d4a5557a68aeede0421f2dd710beef762 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 13:01:28 +0100 Subject: [PATCH 08/54] Improve tests --- test/Project.toml | 2 +- test/interval_tests/autodiff.jl | 26 ++++++++++++++++++++++++++ test/interval_tests/construction.jl | 13 +++++++++++-- test/interval_tests/hyperbolic.jl | 1 - test/interval_tests/numeric.jl | 2 +- test/interval_tests/trig.jl | 4 ++-- test/tests_warning.log | 22 ---------------------- 7 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 test/interval_tests/autodiff.jl delete mode 100644 test/tests_warning.log diff --git a/test/Project.toml b/test/Project.toml index 2c7156f6f..a7e449099 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,4 +1,4 @@ [deps] +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/test/interval_tests/autodiff.jl b/test/interval_tests/autodiff.jl new file mode 100644 index 000000000..655e0d48b --- /dev/null +++ b/test/interval_tests/autodiff.jl @@ -0,0 +1,26 @@ +import ForwardDiff + +@testset "BareInterval" begin + @testset "abs" begin + @test_throws MethodError ForwardDiff.derivative(abs, bareinterval(-1, 1)) + end +end + +@testset "Interval" begin + @testset "abs" begin + @test ForwardDiff.derivative(abs, interval(-2, -1)) === interval(-1, -1, com) + @test ForwardDiff.derivative(abs, interval( 1, 2)) === interval( 1, 1, com) + @test ForwardDiff.derivative(abs, interval( 0 )) === interval( 0 , trv) + @test ForwardDiff.derivative(abs, interval(-1, 0)) === interval(-1, 0, trv) + @test ForwardDiff.derivative(abs, interval( 0, 1)) === interval( 0, 1, trv) + @test ForwardDiff.derivative(abs, interval(-2, 2)) === interval(-1, 1, trv) + + f(x) = abs(x)^interval(2) + @test_broken ForwardDiff.derivative(f, interval(-1, 1)) === interval(-2, 2, trv) + + g(x) = abs(x)^2 + @test ForwardDiff.derivative(g, interval(-1, 1) ) === interval(convert(Interval{Float64}, -2), convert(Interval{Float64}, 2), trv) + @test all(ForwardDiff.gradient( v -> g(v[1]), [interval(-1, 1)]) .=== [interval(convert(Interval{Float64}, -2), convert(Interval{Float64}, 2), trv)]) + @test_broken all(ForwardDiff.hessian( v -> g(v[1]), [interval( 0 )]) .=== [interval(convert(Interval{Float64}, -2), convert(Interval{Float64}, 2), trv)]) + end +end diff --git a/test/interval_tests/construction.jl b/test/interval_tests/construction.jl index 983ded562..743699b06 100644 --- a/test/interval_tests/construction.jl +++ b/test/interval_tests/construction.jl @@ -1,10 +1,13 @@ -@testset "Difference between checked and unchecked Intervals" begin - @test isequal_interval(IntervalArithmetic._unsafe_bareinterval(Float64, 1, 2), bareinterval(1, 2)) +@testset "Difference between checked and unchecked bare intervals" begin + @test IntervalArithmetic._unsafe_bareinterval(Float64, 1, 2) === bareinterval(1, 2) @test inf(IntervalArithmetic._unsafe_bareinterval(Float64, 3, 2)) == 3 + @test isempty_interval(bareinterval(3, 2)) @test isnai(interval(3, 2)) + # `:set_based` flavor @test sup(IntervalArithmetic._unsafe_bareinterval(Float64, Inf, Inf)) == Inf + @test isempty_interval(bareinterval(Inf, Inf)) @test isnai(interval(Inf, Inf)) end @@ -153,3 +156,9 @@ end @test_throws DomainError convert(Interval{Float64}, 1+im) @test_throws DomainError convert(Interval{Float64}, interval(1+im)) end + +@testset "Propagation of `isguaranteed" begin + @test !isguaranteed(interval(convert(Interval{Float64}, 0), interval(convert(Interval{Float64}, 1)))) + @test !isguaranteed(interval(0, convert(Interval{Float64}, 1))) + @test !isguaranteed(interval(convert(Interval{Float64}, 0), 1)) +end diff --git a/test/interval_tests/hyperbolic.jl b/test/interval_tests/hyperbolic.jl index 935473809..2d0fe8d0c 100644 --- a/test/interval_tests/hyperbolic.jl +++ b/test/interval_tests/hyperbolic.jl @@ -50,7 +50,6 @@ end end end -# TODO For reason unkown these tests fail when put in the previous testset @testset "tanh with Float32" begin @test issubset_interval(tanh(interval(0.5)), tanh(interval(Float32, 0.5, 0.5))) @test issubset_interval(tanh(interval(0.5, 1.67)), tanh(interval(Float32, 0.5, 1.67))) diff --git a/test/interval_tests/numeric.jl b/test/interval_tests/numeric.jl index 04399f794..b5ca963cc 100644 --- a/test/interval_tests/numeric.jl +++ b/test/interval_tests/numeric.jl @@ -270,7 +270,7 @@ end @test isequal_interval(cbrt(interval(2, 3)), interval(1.259921049894873, 1.4422495703074085)) @test isequal_interval(cbrt(big(interval(2, 3))), interval(big"1.259921049894873164767210607278228350570251464701507980081975112155299676513956", big"1.442249570307408382321638310780109588391869253499350577546416194541687596830003")) @test issubset_interval(cbrt(big(interval(2, 3))), cbrt(interval(2, 3))) - @test_skip ismissing(cbrt(big(interval(3, 4))) == cbrt(interval(3, 4))) + @test issubset_interval(Interval{Float64}(cbrt(big(interval(3, 4)))), cbrt(interval(3, 4))) @test isequal_interval(cbrt(interval(2f0, 3f0)), interval(1.259921f0, 1.4422497f0)) @test issubset_interval(cbrt(interval(2, 3)), cbrt(interval(2f0, 3f0))) end diff --git a/test/interval_tests/trig.jl b/test/interval_tests/trig.jl index 5ae7f73c7..4271a6c24 100644 --- a/test/interval_tests/trig.jl +++ b/test/interval_tests/trig.jl @@ -7,7 +7,7 @@ end @test isequal_interval(sin(interval(0.5)), interval(0.47942553860420295, 0.47942553860420301)) @test isequal_interval(sin(interval(0.5, 1.67)), interval(4.7942553860420295e-01, 1.0)) @test isequal_interval(sin(interval(1.67, 3.2)), interval(-5.8374143427580093e-02, 9.9508334981018021e-01)) - @test_broken isequal_interval(sin(interval(2.1, 5.6)), interval(-1.0, 0.863209366648874)) + @test isequal_interval(sin(interval(2.1, 5.6)), interval(-1.0, 0.8632093666488738)) @test isequal_interval(sin(interval(0.5, 8.5)), interval(-1.0, 1.0)) @test isequal_interval(sin(interval(Float64, -4.5, 0.1)), interval(-1.0, 0.9775301176650971)) @test isequal_interval(sin(interval(Float64, 1.3, 6.3)), interval(-1.0, 1.0)) @@ -24,7 +24,7 @@ end @testset "cos" begin @test isequal_interval(cos(interval(0.5)), interval(0.87758256189037265, 0.87758256189037276)) @test isequal_interval(cos(interval(0.5, 1.67)), interval(cos(1.67, RoundDown), cos(0.5, RoundUp))) - @test_broken isequal_interval(cos(interval(2.1, 5.6)), interval(-1.0, 0.77556587851025016)) + @test isequal_interval(cos(interval(2.1, 5.6)), interval(-1.0, 0.7755658785102496)) @test isequal_interval(cos(interval(0.5, 8.5)), interval(-1.0, 1.0)) @test isequal_interval(cos(interval(1.67, 3.2)), interval(-1.0, -0.09904103659872801)) diff --git a/test/tests_warning.log b/test/tests_warning.log deleted file mode 100644 index 2e5140e58..000000000 --- a/test/tests_warning.log +++ /dev/null @@ -1,22 +0,0 @@ -┌ Warning: invalid interval, empty interval is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:202 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: interval part of NaI -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:320 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 -┌ Warning: invalid interval, NaI is returned -└ @ IntervalArithmetic ~/.julia/dev/IntervalArithmetic/src/intervals/construction.jl:486 From 7a89de208400cd4a0ec93c9658915eaff5955fb2 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 13:09:22 +0100 Subject: [PATCH 09/54] Fix `isguaranteed` for midpoint constructor --- src/intervals/construction.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index fab1b33ae..e74cf01de 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -506,6 +506,7 @@ i.e. of the form ``m \\pm r`. """ function _interval_midpoint(::Type{T}, m, r, d::Decoration = com) where {T<:NumTypes} x = _interval_infsup(T, m, m, d) + r = _interval_infsup(T, r, r, d) return _interval_infsup(T, x - r, x + r, d) end From 6a8f8532d80e829fa15cc7929f693519b94ae212 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 13:12:23 +0100 Subject: [PATCH 10/54] Small cleanup --- Project.toml | 2 +- ext/{IADiffRulesExt.jl => IntervalArithmeticDiffRulesExt.jl} | 2 +- src/intervals/construction.jl | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename ext/{IADiffRulesExt.jl => IntervalArithmeticDiffRulesExt.jl} (88%) diff --git a/Project.toml b/Project.toml index 37166b5b5..3ed005e78 100644 --- a/Project.toml +++ b/Project.toml @@ -13,7 +13,7 @@ SetRounding = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" [extensions] -IADiffRulesExt = "DiffRules" +IntervalArithmeticDiffRulesExt = "DiffRules" [compat] CRlibm = "0.7, 0.8, 1" diff --git a/ext/IADiffRulesExt.jl b/ext/IntervalArithmeticDiffRulesExt.jl similarity index 88% rename from ext/IADiffRulesExt.jl rename to ext/IntervalArithmeticDiffRulesExt.jl index 431043e44..f87454cb1 100644 --- a/ext/IADiffRulesExt.jl +++ b/ext/IntervalArithmeticDiffRulesExt.jl @@ -1,4 +1,4 @@ -module IADiffRulesExt +module IntervalArithmeticDiffRulesExt using IntervalArithmetic, DiffRules diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index e74cf01de..2d14ee1de 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -501,8 +501,8 @@ _interval_infsup(::Type{T}, a, b::Complex, d::Decoration = com) where {T<:NumTyp """ _interval_midpoint(T<:NumTypes, m, r, d = com) -Internal constructor for intervals described by their midpoint and radius, -i.e. of the form ``m \\pm r`. +Internal constructor for intervals described by their midpoint and radius, i.e. +of the form ``m \\pm r``. """ function _interval_midpoint(::Type{T}, m, r, d::Decoration = com) where {T<:NumTypes} x = _interval_infsup(T, m, m, d) From 5ef5a6eb593528f92d155aa7f8b90d575e483c76 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 2 Dec 2023 13:54:14 +0100 Subject: [PATCH 11/54] Add more ForwardDiff related tests --- .../{autodiff.jl => forwarddiff.jl} | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) rename test/interval_tests/{autodiff.jl => forwarddiff.jl} (57%) diff --git a/test/interval_tests/autodiff.jl b/test/interval_tests/forwarddiff.jl similarity index 57% rename from test/interval_tests/autodiff.jl rename to test/interval_tests/forwarddiff.jl index 655e0d48b..397151094 100644 --- a/test/interval_tests/autodiff.jl +++ b/test/interval_tests/forwarddiff.jl @@ -23,4 +23,31 @@ end @test all(ForwardDiff.gradient( v -> g(v[1]), [interval(-1, 1)]) .=== [interval(convert(Interval{Float64}, -2), convert(Interval{Float64}, 2), trv)]) @test_broken all(ForwardDiff.hessian( v -> g(v[1]), [interval( 0 )]) .=== [interval(convert(Interval{Float64}, -2), convert(Interval{Float64}, 2), trv)]) end + + @testset "sin" begin + x, w = interval(2), interval(-0.5, 0.5) + ϕ(t) = sin(x + (1+t)*w) + ϕ′(t) = cos(x + (1+t)*w) * w + ϕ′′(t) = -sin(x + (1+t)*w) * w * w + ϕ′′′(t) = -cos(x + (1+t)*w) * w * w * w + dϕ(t) = ForwardDiff.derivative(ϕ, t) + ddϕ(t) = ForwardDiff.derivative(dϕ, t) + dddϕ(t) = ForwardDiff.derivative(ddϕ, t) + + @test ϕ′(0) === dϕ(0) + @test ϕ′′(0) === ddϕ(0) + @test ϕ′′′(0) === dddϕ(0) + + y = interval(1) + ψ(t) = sin(x + (y+t)*w) + ψ′(t) = cos(x + (y+t)*w) * w + ψ′′(t) = -sin(x + (y+t)*w) * w * w + ψ′′′(t) = -cos(x + (y+t)*w) * w * w * w + dψ(t) = ForwardDiff.derivative(ψ, t) + ddψ(t) = ForwardDiff.derivative(dψ, t) + dddψ(t) = ForwardDiff.derivative(ddψ, t) + @test ψ′(0) === dψ(0) + @test_broken ψ′′(0) === ddψ(0) + @test_broken ψ′′′(0) === dddψ(0) + end end From d9df61d879377fd963f7fb0513b3852766922750 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:57:00 +0100 Subject: [PATCH 12/54] Revised files --- docs/src/manual/usage.md | 2 +- src/intervals/arithmetic/power.jl | 2 +- src/intervals/construction.jl | 28 ++++++++++++++++------------ test/interval_tests/forwarddiff.jl | 20 +++++++++++++++++--- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/docs/src/manual/usage.md b/docs/src/manual/usage.md index 8907ffd3f..c0cb489c0 100644 --- a/docs/src/manual/usage.md +++ b/docs/src/manual/usage.md @@ -108,4 +108,4 @@ intersect_interval(interval(1, 2), interval(2)) ## Custom interval bounds type -A `BareInterval{T}` or `Interval{T}` has the restriction `T <: Union{Rational,AbstractFloat}` which is type for the bounds of the interval. Supposing one wishes to use their own numeric type `MyNumType <: Union{Rational,AbstractFloat}`, they must provide their own arithmetic operations (with correct rounding!). +A `BareInterval{T}` or `Interval{T}` have the restriction `T <: Union{Rational,AbstractFloat}` which is the parametric type for the bounds of the interval. Supposing one wishes to use their own numeric type `MyNumType <: Union{Rational,AbstractFloat}`, they must provide their own arithmetic operations (with correct rounding!). diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 73fe38293..6d2ab848a 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -326,7 +326,7 @@ function Base.:^(xx::Interval, qq::Interval) end Base.:^(x::Interval, y::Real) = ^(promote(x, y)...) Base.:^(x::Real, y::Interval) = ^(promote(x, y)...) -# needed to resolve ambiguities +# needed to resolve method ambiguities Base.:^(x::Interval, n::Integer) = x ^ (n//1) for S ∈ (:Rational, :AbstractFloat) @eval function Base.:^(x::Interval{T}, y::$S) where {T<:NumTypes} diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 2d14ee1de..5091e689a 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -107,11 +107,11 @@ Internal constructor which assumes that `is_valid_interval(lo, hi) == true`. _unsafe_bareinterval _normalisezero(a) = ifelse(iszero(a), zero(a), a) -# used only to construct intervals -_inf(a::BareInterval) = a.lo -_sup(a::BareInterval) = a.hi -_inf(a::Real) = a -_sup(a::Real) = a +# used only to construct intervals; needed to avoid `inf` and `sup` normalization +_inf(x::BareInterval) = x.lo +_sup(x::BareInterval) = x.hi +_inf(x::Real) = x +_sup(x::Real) = x # _unsafe_bareinterval(::Type{T}, a::Rational, b::Rational) where {S<:Integer,T<:Rational{S}} = @@ -160,7 +160,7 @@ for sym ∈ (:(:ℯ), :(:φ)) end end -BareInterval{T}(x::BareInterval) where {T<:NumTypes} = bareinterval(T, x) +BareInterval{T}(x::BareInterval) where {T<:NumTypes} = convert(BareInterval{T}, x) """ bareinterval([T<:Union{Rational,AbstractFloat}=default_numtype()], a, b) @@ -220,6 +220,11 @@ bareinterval(a::Tuple) = bareinterval(T, a...) return :($res) # set body of the function to return the precomputed result end +# atomic constructor + +atomic(::Type{T}, x::AbstractString) where {T<:NumTypes} = parse(BareInterval{T}, x) +atomic(::Type{T}, x::T) where {T<:NumTypes} = atomic(T, string(x)) + # promotion Base.promote_rule(::Type{BareInterval{T}}, ::Type{BareInterval{S}}) where {T<:NumTypes,S<:NumTypes} = @@ -227,8 +232,8 @@ Base.promote_rule(::Type{BareInterval{T}}, ::Type{BareInterval{S}}) where {T<:Nu # conversion -Base.convert(::Type{BareInterval{T}}, a::BareInterval) where {T<:NumTypes} = - bareinterval(T, a) +Base.convert(::Type{BareInterval{T}}, x::BareInterval) where {T<:NumTypes} = + bareinterval(T, x) @@ -359,10 +364,9 @@ isguaranteed(x::Interval) = x.isguaranteed isguaranteed(::BareInterval) = true isguaranteed(x::Complex{<:Interval}) = isguaranteed(real(x)) & isguaranteed(imag(x)) -Interval{T}(x::Union{BareInterval,Interval}, d::Decoration) where {T<:NumTypes} = interval(T, bareinterval(T, x), d) -Interval{T}(x::Union{BareInterval,Interval}) where {T<:NumTypes} = interval(T, bareinterval(T, x)) -Interval(x::Union{BareInterval,Interval}, d::Decoration) = interval(bareinterval(x), d) -Interval(x::Union{BareInterval,Interval}) = interval(bareinterval(x)) +Interval{T}(x::Interval) where {T<:NumTypes} = convert(Interval{T}, x) # needed to resolve method ambiguity +# Interval{T}(x) where {T<:NumTypes} = convert(Interval{T}, x) +# Interval{T}(x::Interval{T}) where {T<:NumTypes} = convert(Interval{T}, x) # needed to resolve method ambiguity # diff --git a/test/interval_tests/forwarddiff.jl b/test/interval_tests/forwarddiff.jl index 397151094..21ec86277 100644 --- a/test/interval_tests/forwarddiff.jl +++ b/test/interval_tests/forwarddiff.jl @@ -46,8 +46,22 @@ end dψ(t) = ForwardDiff.derivative(ψ, t) ddψ(t) = ForwardDiff.derivative(dψ, t) dddψ(t) = ForwardDiff.derivative(ddψ, t) - @test ψ′(0) === dψ(0) - @test_broken ψ′′(0) === ddψ(0) - @test_broken ψ′′′(0) === dddψ(0) + @test ψ′(0) === dψ(0) && !isguaranteed(ψ′(0)) + @test_broken ψ′′(0) === ddψ(0) && !isguaranteed(ψ′′(0)) # rely on `Interval{T}(::Real)` being defined + @test_broken ψ′′′(0) === dddψ(0) && !isguaranteed(ψ′′′(0)) # rely on `Interval{T}(::Real)` being defined + t₀ = interval(0) + @test ψ′(t₀) === dψ(t₀) && isguaranteed(ψ′(t₀)) + @test ψ′′(t₀) === ddψ(t₀) && isguaranteed(ψ′′(t₀)) + @test ψ′′′(t₀) === dddψ(t₀) && isguaranteed(ψ′′′(t₀)) + end + + @testset "Power" begin + f(x) = interval(2)^x + f′(x) = log(interval(2)) * f(x) + df(t) = ForwardDiff.derivative(f, t) + + # g(x) = 2^x # not guaranteed + + @test_broken f′(0) === df(0) end end From af7cfce3ae71f19dcec66aff8a13cd72e17a9b17 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:04:33 +0100 Subject: [PATCH 13/54] Update LICENSE.md --- LICENSE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 9387a1e8e..7724a1ffc 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ MIT License -Copyright (c) 2014 David P. Sanders, Luis Benet, and other contributors: -https://github.com/JuliaIntervals/IntervalArithmetic.jl/contributors +Copyright (c) 2014 David P. Sanders and Luis Benet +Copyright (c) 2023 Luis Benet, Luca Ferranti, Olivier Hénot and Benoît Richard Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: From f430b1c7ca62f96e877ca19f56e00b992d0a5a3c Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:04:58 +0100 Subject: [PATCH 14/54] Re-work unexported constructor `atomic` --- src/intervals/construction.jl | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 5091e689a..e8bf36bc8 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -220,8 +220,30 @@ bareinterval(a::Tuple) = bareinterval(T, a...) return :($res) # set body of the function to return the precomputed result end -# atomic constructor +""" + atomic(T<:Union{Rational,AbstractFloat}, x) + +Create an interval according to the IEEE Standard 1788-2015. The returned +`BareInterval{T}` always contains the value `x`; this is semantically equivalent +to `parse(BareInterval{T}, string(x))`. + +# Examples +```jldoctest +julia> setdisplay(:full); + +julia> x = IntervalArithmetic.atomic(Float64, 0.1) +BareInterval{Float64}(0.09999999999999999, 0.1) +julia> in_interval(1//10, IntervalArithmetic.atomic(Float64, 0.1)) +true + +julia> IntervalArithmetic.atomic(Float64, 0.3) +BareInterval{Float64}(0.3, 0.30000000000000004) + +julia> in_interval(3//10, IntervalArithmetic.atomic(Float64, 0.3)) +true +``` +""" atomic(::Type{T}, x::AbstractString) where {T<:NumTypes} = parse(BareInterval{T}, x) atomic(::Type{T}, x::T) where {T<:NumTypes} = atomic(T, string(x)) From 66b0a68a969222af7fffb602f29d821f11506a92 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:18:20 +0100 Subject: [PATCH 15/54] Improve docstring for powers --- src/intervals/arithmetic/power.jl | 40 ++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 6d2ab848a..7ef4e78da 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -32,6 +32,24 @@ Base.@assume_effects :terminates_locally function _positive_power_by_squaring(x: return y end +""" + pown(x, n) + +Implement the `pown` function of the IEEE Standard 1788-2015 (Table 9.1). + +# Examples + +```jldoctest +julia> pown(bareinterval(2, 3), 2) +[4.0, 9.0] + +julia> pown(interval(-1, 1), 3) +[-1.0, 1.0]_com + +julia> pown(interval(-1, 1), -3) +(-∞, ∞)_trv +``` +""" pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = BareInterval{T}(pown(_bigequiv(x), n)) function pown(a::BareInterval{BigFloat}, n::Integer) @@ -82,9 +100,27 @@ function pown(a::BareInterval{BigFloat}, n::Integer) end """ - ^(x::BareInterval, y::BareInterval) + ^(x, y) + +Compute the power of the positive real part of `x` by `y`. In particular, even +if `y` is a thin integer, this is not equivalent to `pown(x, sup(y))`. Implement the `pow` function of the IEEE Standard 1788-2015 (Table 9.1). + +See also: [`pown`](@ref). + +# Examples + +```jldoctest +julia> bareinterval(2, 3) ^ bareinterval(2) +[4.0, 9.0] + +julia> interval(-1, 1) ^ interval(3) +[0.0, 1.0]_com + +julia> interval(-1, 1) ^ interval(-3) +[1.0, ∞)_trv +``` """ Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}(_bigequiv(x)^y) @@ -218,6 +254,8 @@ end rootn(a::BareInterval, n::Integer) Compute the real `n`-th root of `a`. + +Implement the `rootn` function of the IEEE Standard 1788-2015 (Table 9.1). """ function rootn(a::BareInterval{BigFloat}, n::Integer) isempty_interval(a) && return a From a2c36d9ccb5eac8a130b3ee1dffba567a1ada18d Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:18:29 +0100 Subject: [PATCH 16/54] Fix typo --- src/symbols.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/symbols.jl b/src/symbols.jl index a26734a9a..3380d3bf0 100644 --- a/src/symbols.jl +++ b/src/symbols.jl @@ -31,7 +31,6 @@ Interval{Rational{Int64}}(1//1, 85563208//27235615, com) julia> 0.1..0.3 Interval{Float64}(0.1, 0.3, com) ``` -``` """ .. = interval From d80d4aa2c8b74ce5470b35ec3b936cc9f01cbfd5 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sat, 9 Dec 2023 17:35:49 +0100 Subject: [PATCH 17/54] Revive `@interval`; conversion of `AbstratcIrrational` is guaranteed --- src/intervals/construction.jl | 69 ++++++++++++++++++++++++++++++++++- src/intervals/intervals.jl | 2 +- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index e8bf36bc8..236931f5e 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -245,7 +245,7 @@ true ``` """ atomic(::Type{T}, x::AbstractString) where {T<:NumTypes} = parse(BareInterval{T}, x) -atomic(::Type{T}, x::T) where {T<:NumTypes} = atomic(T, string(x)) +atomic(::Type{T}, x) where {T<:NumTypes} = atomic(T, string(x)) # promotion @@ -593,6 +593,9 @@ function Base.convert(::Type{Interval{T}}, x::Complex{<:Interval}) where {T<:Num return convert(Interval{T}, real(x)) end +Base.convert(::Type{Interval{T}}, x::AbstractIrrational) where {T<:NumTypes} = + interval(T, x) # always guaranteed since an `AbstractIrrational` is a defined fixed constant + function Base.convert(::Type{Interval{T}}, x::Real) where {T<:NumTypes} y = interval(T, x) return _unsafe_interval(bareinterval(y), decoration(y), false) @@ -602,3 +605,67 @@ function Base.convert(::Type{Interval{T}}, x::Complex) where {T<:NumTypes} iszero(imag(x)) || return throw(DomainError(x, "imaginary part must be zero")) return convert(Interval{T}, real(x)) end + + + + + +# macro + +""" + @interval(T, expr) + @interval(T, expr1, expr2) + +Walk through an expression and wrap each argument of functions with the internal +constructor [`atomic`](@ref). + +# Examples + +```jldoctest +julia> setdisplay(:full); + +julia> @macroexpand IntervalArithmetic.@interval Float64 sin(1) +:(sin(IntervalArithmetic.interval(IntervalArithmetic.atomic(Float64, 1)))) + +julia> IntervalArithmetic.@interval Float64 sin(1) exp(1) +Interval{Float64}(0.8414709848078965, 2.7182818284590455, com) +``` +""" +macro interval(T, expr) + return _wrap_interval(T, expr) +end + +macro interval(T, expr1, expr2) + x = _wrap_interval(T, expr1) + y = _wrap_interval(T, expr2) + return :(interval($(esc(T)), $x, $y)) +end + +_wrap_interval(T::Symbol, x) = :(interval(atomic($(esc(T)), $x))) + +_wrap_interval(T::Symbol, x::Symbol) = :(interval(atomic($(esc(T)), $(esc(x))))) + +function _wrap_interval(T::Symbol, expr::Expr) + if expr.head ∈ (:(.), :ref, :macrocall) # a.i, or a[i], or BigInt + return :(interval($(esc(T)), $(esc(expr)), $(esc(expr)))) + end + + new_expr = copy(expr) + + first = 1 # where to start processing arguments + + if expr.head === :call + first = 2 # skip operator + if expr.args[1] ∉ (:+, :-, :*, :/, :^) + new_expr.args[1] = :($(esc(expr.args[1]))) # escape functions + end + end + + for (i, arg) ∈ enumerate(expr.args) + if i ≥ first + new_expr.args[i] = _wrap_interval(T, arg) + end + end + + return new_expr +end diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index 1565f2498..9cc4b85e8 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -1,7 +1,7 @@ # Construction and composability with numbers include("construction.jl") export BareInterval, bareinterval, decoration, ill, trv, def, dac, com, - Interval, interval, isguaranteed, @I_str + Interval, interval, isguaranteed, @interval, @I_str include("parsing.jl") include("real_interface.jl") From 004a2d777c9ae03ed7438553c82f8b33b1a09140 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Sun, 10 Dec 2023 14:53:40 +0100 Subject: [PATCH 18/54] Cleanup power.jl --- src/intervals/arithmetic/power.jl | 533 ++++++++++++++---------------- 1 file changed, 241 insertions(+), 292 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 7ef4e78da..807f78dc5 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -2,103 +2,6 @@ # of the IEEE Standard 1788-2015 and required for set-based flavor in Section # 10.5.3 - - -# bare intervals - -# code inspired by `power_by_squaring(::Any, ::Integer)` in base/intfuncs.jl -Base.@assume_effects :terminates_locally function _positive_power_by_squaring(x::BareInterval, p::Integer) - if p == 1 - return x - elseif p == 0 - return one(x) - elseif p == 2 - return x*x - end - t = trailing_zeros(p) + 1 - p >>= t - while (t -= 1) > 0 - x *= x - end - y = x - while p > 0 - t = trailing_zeros(p) + 1 - p >>= t - while (t -= 1) >= 0 - x *= x - end - y *= x - end - return y -end - -""" - pown(x, n) - -Implement the `pown` function of the IEEE Standard 1788-2015 (Table 9.1). - -# Examples - -```jldoctest -julia> pown(bareinterval(2, 3), 2) -[4.0, 9.0] - -julia> pown(interval(-1, 1), 3) -[-1.0, 1.0]_com - -julia> pown(interval(-1, 1), -3) -(-∞, ∞)_trv -``` -""" -pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = BareInterval{T}(pown(_bigequiv(x), n)) - -function pown(a::BareInterval{BigFloat}, n::Integer) - isempty_interval(a) && return a - iszero(n) && return one(BareInterval{BigFloat}) - n == 1 && return a - (n < 0 && isthinzero(a)) && return emptyinterval(BareInterval{BigFloat}) - - if isodd(n) # odd power - isentire_interval(a) && return a - if n > 0 - inf(a) == 0 && return @round(BigFloat, zero(BigFloat), sup(a)^n) - sup(a) == 0 && return @round(BigFloat, inf(a)^n, zero(BigFloat)) - return @round(BigFloat, inf(a)^n, sup(a)^n) - else - if inf(a) ≥ 0 - inf(a) == 0 && return @round(BigFloat, sup(a)^n, typemax(BigFloat)) - return @round(BigFloat, sup(a)^n, inf(a)^n) - - elseif sup(a) ≤ 0 - sup(a) == 0 && return @round(BigFloat, typemin(BigFloat), inf(a)^n) - return @round(BigFloat, sup(a)^n, inf(a)^n) - else - return entireinterval(a) - end - end - - else # even power - if n > 0 - if inf(a) ≥ 0 - return @round(BigFloat, inf(a)^n, sup(a)^n) - elseif sup(a) ≤ 0 - return @round(BigFloat, sup(a)^n, inf(a)^n) - else - return @round(BigFloat, mig(a)^n, mag(a)^n) - end - - else - if inf(a) ≥ 0 - return @round(BigFloat, sup(a)^n, inf(a)^n) - elseif sup(a) ≤ 0 - return @round(BigFloat, inf(a)^n, sup(a)^n) - else - return @round(BigFloat, mag(a)^n, mig(a)^n) - end - end - end -end - """ ^(x, y) @@ -122,7 +25,8 @@ julia> interval(-1, 1) ^ interval(-3) [1.0, ∞)_trv ``` """ -Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}(_bigequiv(x)^y) +Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} = # no CRlibm version + BareInterval{T}(_bigequiv(x)^y) Base.:^(x::BareInterval, y::BareInterval) = ^(promote(x, y)...) @@ -134,40 +38,52 @@ function Base.:^(x::BareInterval{BigFloat}, y::BareInterval) return hull(_pow(x, inf(y)), _pow(x, sup(y))) end -# function _pow(a::BareInterval{T}, x::AbstractFloat) where {T<:Rational} -# a = unsafe_interval(float(T), inf(a).num/inf(a).den, sup(a).num/sup(a).den) -# return BareInterval{T}(a^x) -# end +function Base.:^(x::Interval, y::Interval) + bx = bareinterval(x) + by = bareinterval(y) + r = bx^by + d = min(decoration(x), decoration(y), decoration(r)) + d = min(d, ifelse((in_interval(0, bx) & (inf(by) ≤ 0)) | ((inf(bx) < 0) & !isthininteger(by)), trv, d)) + t = isguaranteed(x) & isguaranteed(y) + return _unsafe_interval(r, d, t) +end + +# overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 +Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n + +Base.:^(x::Interval, n::Integer) = ^(promote(x, n)...) + +# helper functions for power -_pow(a::BareInterval{BigFloat}, b::AbstractFloat) = _pow(a, big(b)) +_pow(x::BareInterval{BigFloat}, y::AbstractFloat) = _pow(x, big(y)) -function _pow(a::BareInterval{BigFloat}, x::BigFloat) +function _pow(x::BareInterval{BigFloat}, y::BigFloat) domain = _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat)) - if isthinzero(a) - x > 0 && return zero(BareInterval{BigFloat}) + if isthinzero(x) + y > 0 && return zero(BareInterval{BigFloat}) return emptyinterval(BareInterval{BigFloat}) end - isinteger(x) && return pown(a, Integer(x)) - x == 0.5 && return sqrt(a) + isinteger(y) && return pown(x, Integer(y)) + y == 0.5 && return sqrt(x) - a = intersect_interval(a, domain) - isempty_interval(a) && return a + x = intersect_interval(x, domain) + isempty_interval(x) && return x M = typemax(BigFloat) MM = typemax(BareInterval{BigFloat}) - lo = @round(BigFloat, inf(a)^x, inf(a)^x) + lo = @round(BigFloat, inf(x)^y, inf(x)^y) lo = (inf(lo) == M) ? MM : lo - lo1 = @round(BigFloat, inf(a)^x, inf(a)^x) + lo1 = @round(BigFloat, inf(x)^y, inf(x)^y) lo1 = (inf(lo1) == M) ? MM : lo1 - hi = @round(BigFloat, sup(a)^x, sup(a)^x) + hi = @round(BigFloat, sup(x)^y, sup(x)^y) hi = (inf(hi) == M) ? MM : hi - hi1 = @round(BigFloat, sup(a)^x, sup(a)^x) + hi1 = @round(BigFloat, sup(x)^y, sup(x)^y) hi1 = (inf(hi1) == M) ? MM : hi1 lo = hull(lo, lo1) @@ -176,142 +92,175 @@ function _pow(a::BareInterval{BigFloat}, x::BigFloat) return hull(lo, hi) end -function _pow(a::BareInterval{BigFloat}, x::Rational{T}) where {T<:Integer} - p = x.num - q = x.den +function _pow(x::BareInterval{BigFloat}, y::Rational{T}) where {T<:Integer} + p = y.num + q = y.den - isempty_interval(a) && return a - iszero(x) && return one(a) - x < 0 && return inv(_pow(a, -x)) + isempty_interval(x) && return x + iszero(y) && return one(x) + y < 0 && return inv(_pow(x, -y)) - if isthinzero(a) - x > zero(x) && return zero(a) - return emptyinterval(a) + if isthinzero(x) + y > zero(y) && return zero(x) + return emptyinterval(x) end - isinteger(x) && return pown(a, T(x)) + isinteger(y) && return pown(x, T(y)) - x == (1//2) && return sqrt(a) + y == (1//2) && return sqrt(x) - alo, ahi = bounds(a) + lo, hi = bounds(x) - if ahi < 0 + if lo < 0 return emptyinterval(BareInterval{BigFloat}) end - if alo < 0 && ahi ≥ 0 - a = intersect_interval(a, _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat))) + if lo < 0 && hi ≥ 0 + x = intersect_interval(x, _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat))) end - b = rootn(a, q) + return pown(rootn(x, q), ifelse(p == 1, q, p)) +end - p == 1 && return b +""" + pown(x, n) - return pown(b, p) -end +Implement the `pown` function of the IEEE Standard 1788-2015 (Table 9.1). -for f ∈ (:exp, :expm1) - @eval begin - function Base.$f(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - return @round( T, $f(inf(a)), $f(sup(a)) ) - end - end -end +# Examples -for f ∈ (:exp2, :exp10, :cbrt) - @eval begin - Base.$f(a::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}($f(_bigequiv(a))) # no CRlibm version +```jldoctest +julia> pown(bareinterval(2, 3), 2) +[4.0, 9.0] - function Base.$f(a::BareInterval{BigFloat}) - isempty_interval(a) && return a - return @round( BigFloat, $f(inf(a)), $f(sup(a)) ) - end - end -end +julia> pown(interval(-1, 1), 3) +[-1.0, 1.0]_com -for f ∈ (:log, :log2, :log10) - @eval function Base.$f(a::BareInterval{T}) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - a = intersect_interval(a, domain) +julia> pown(interval(-1, 1), -3) +(-∞, ∞)_trv +``` +""" +pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = # no CRlibm version + BareInterval{T}(pown(_bigequiv(x), n)) - isempty_interval(a) | (sup(a) ≤ 0) && return emptyinterval(BareInterval{T}) +function pown(x::BareInterval{BigFloat}, n::Integer) + isempty_interval(x) && return x + iszero(n) && return one(BareInterval{BigFloat}) + n == 1 && return x + (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{BigFloat}) - return @round( T, $f(inf(a)), $f(sup(a)) ) + if isodd(n) + isentire_interval(x) && return x + if n > 0 + inf(x) == 0 && return @round(BigFloat, zero(BigFloat), sup(x)^n) + sup(x) == 0 && return @round(BigFloat, inf(x)^n, zero(BigFloat)) + return @round(BigFloat, inf(x)^n, sup(x)^n) + else + if inf(x) ≥ 0 + inf(x) == 0 && return @round(BigFloat, sup(x)^n, typemax(BigFloat)) + return @round(BigFloat, sup(x)^n, inf(x)^n) + elseif sup(x) ≤ 0 + sup(x) == 0 && return @round(BigFloat, typemin(BigFloat), inf(x)^n) + return @round(BigFloat, sup(x)^n, inf(x)^n) + else + return entireinterval(x) + end + end + else + if n > 0 + if inf(x) ≥ 0 + return @round(BigFloat, inf(x)^n, sup(x)^n) + elseif sup(x) ≤ 0 + return @round(BigFloat, sup(x)^n, inf(x)^n) + else + return @round(BigFloat, mig(x)^n, mag(x)^n) + end + else + if inf(x) ≥ 0 + return @round(BigFloat, sup(x)^n, inf(x)^n) + elseif sup(x) ≤ 0 + return @round(BigFloat, inf(x)^n, sup(x)^n) + else + return @round(BigFloat, mag(x)^n, mig(x)^n) + end + end end end -function Base.log1p(a::BareInterval{T}) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, -one(T), typemax(T)) - a = intersect_interval(a, domain) - - isempty_interval(a) | (sup(a) ≤ -1) && return emptyinterval(BareInterval{T}) - - @round( T, log1p(inf(a)), log1p(sup(a)) ) +function pown(x::Interval, n::Integer) + r = pown(bareinterval(x), n) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse((n < 0) & in_interval(0, x), trv, d)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ - rootn(a::BareInterval, n::Integer) + rootn(x::BareInterval, n::Integer) -Compute the real `n`-th root of `a`. +Compute the real `n`-th root of `x`. Implement the `rootn` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function rootn(a::BareInterval{BigFloat}, n::Integer) - isempty_interval(a) && return a - n == 1 && return a - n == 2 && return sqrt(a) - n == 0 && return emptyinterval(a) - # n < 0 && isthinzero(a) && return emptyinterval(a) - n < 0 && return inv(rootn(a, -n)) - - alo, ahi = bounds(a) - ahi < 0 && iseven(n) && return emptyinterval(BareInterval{BigFloat}) - if alo < 0 && ahi ≥ 0 && iseven(n) - a = intersect_interval(a, _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat))) - alo, ahi = bounds(a) - end +function rootn(x::BareInterval{T}, n::Integer) where {T<:NumTypes} + isempty_interval(x) && return x + n == 0 && return emptyinterval(BareInterval{T}) + n == 1 && return x + n == 2 && return sqrt(x) + n > 0 && return BareInterval{T}(rootn(_bigequiv(x), n)) + issubnormal(mag(x)) && return inv(rootn(x, -n)) + return BareInterval{T}(inv(rootn(_bigequiv(x), -n))) +end + +function rootn(x::BareInterval{BigFloat}, n::Integer) + isempty_interval(x) && return x + n == 0 && return emptyinterval(BareInterval{BigFloat}) + n == 1 && return x + n == 2 && return sqrt(x) + n < 0 && return inv(rootn(x, -n)) + + domain = _unsafe_bareinterval(BigFloat, ifelse(iseven(n), zero(BigFloat), typemin(BigFloat)), typemax(BigFloat)) + x = intersect_interval(x, domain) + isempty_interval(x) && return x + + # no CRlibm version + lo, hi = bounds(x) ui = convert(Culong, n) low = BigFloat() high = BigFloat() - ccall((:mpfr_rootn_ui, :libmpfr), Int32 , (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode) , low , alo , ui, MPFRRoundDown) - ccall((:mpfr_rootn_ui, :libmpfr), Int32 , (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode) , high , ahi , ui, MPFRRoundUp) - return bareinterval(BigFloat, low , high) + ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), low, lo, ui, MPFRRoundDown) + ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), high, hi, ui, MPFRRoundUp) + return _unsafe_bareinterval(BigFloat, low, high) end -function rootn(a::BareInterval{T}, n::Integer) where {T<:NumTypes} - n == 1 && return a - n == 2 && return sqrt(a) - - abig = _bigequiv(a) - if n < 0 - issubnormal(mag(a)) && return inv(rootn(a, -n)) - return BareInterval{T}(inv(rootn(abig, -n))) - end - - b = rootn(abig, n) - return BareInterval{T}(b) +function rootn(x::Interval{T}, n::Integer) where {T<:NumTypes} + domain = _unsafe_bareinterval(T, ifelse(iseven(n), zero(T), typemin(T)), typemax(T)) + bx = bareinterval(x) + r = rootn(bx, n) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(issubset_interval(bx, domain), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) end + """ - hypot(x::BareInterval, n::BareInterval) + hypot(x, y) -Compute the hypotenuse. +Compute the hypotenuse; this is semantically equivalent to +`sqrt(pown(x, 2) + pown(y, 2))`. """ Base.hypot(x::BareInterval, y::BareInterval) = sqrt(pown(x, 2) + pown(y, 2)) +Base.hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) + """ - fastpow(x::BareInterval, n::Integer) + fastpow(x, n) -A faster implementation of `x^n`, currently using `power_by_squaring`. -`fastpow(x, n)` will usually return an interval that is slightly larger than that -calculated by `x^n`, but is guaranteed to be a correct -enclosure when using multiplication with correct rounding. +A faster implementation of `x^n`; the returned interval may be slightly large +than `x^n`. """ function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} n < 0 && return inv(fastpow(x, -n)) isempty_interval(x) && return x - if iseven(n) && in_interval(0, x) xmig = mig(x) xmag = mag(x) @@ -327,7 +276,6 @@ function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} end function fastpow(x::BareInterval, y::BareInterval) - isempty_interval(x) && return x isthininteger(y) && return fastpow(x, Integer(sup(y))) return exp(y * log(x)) end @@ -335,116 +283,117 @@ end fastpow(x::BareInterval{T}, y::S) where {T<:NumTypes,S<:Real} = fastpow(x, bareinterval(promote_numtype(T, S), y)) +function fastpow(x::Interval, y::Interval) + bx = bareinterval(x) + by = bareinterval(y) + r = fastpow(bx, by) + d = min(decoration(x), decoration(y), decoration(r)) + d = min(d, ifelse((in_interval(0, bx) & (inf(by) ≤ 0)) | ((inf(bx) < 0) & !isthininteger(by)), trv, d)) + t = isguaranteed(x) & isguaranteed(y) + return _unsafe_interval(r, d, t) +end - -# decorated intervals - -# overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 -Base.literal_pow(::typeof(^), x::Interval, ::Val{p}) where {p} = x^p - -function pown(x::Interval, n::Integer) - r = pown(bareinterval(x), n) +function fastpow(x::Interval, y::Real) + bx = bareinterval(x) + r = fastpow(bx, y) d = min(decoration(x), decoration(r)) - d = min(d, ifelse(n < 0 && in_interval(0, x), trv, d)) + d = min(d, ifelse((in_interval(0, bx) & (y ≤ 0)) | ((inf(bx) < 0) & !isinteger(y)), trv, d)) return _unsafe_interval(r, d, isguaranteed(x)) end -function Base.:^(xx::Interval, qq::Interval) - x = bareinterval(xx) - q = bareinterval(qq) - r = x^q - d = min(decoration(xx), decoration(qq), decoration(r)) - t = isguaranteed(xx) & isguaranteed(qq) - if inf(x) > 0 || (inf(x) ≥ 0 && inf(q) > 0) || - (isthininteger(q) && inf(q) > 0) || - (isthininteger(q) && !in_interval(0, x)) - return _unsafe_interval(r, d, t) +# helper function for fast power + +# code inspired by `power_by_squaring(::Any, ::Integer)` in base/intfuncs.jl +Base.@assume_effects :terminates_locally function _positive_power_by_squaring(x::BareInterval, n::Integer) + if n == 1 + return x + elseif n == 0 + return one(x) + elseif n == 2 + return x*x end - return _unsafe_interval(r, trv, t) -end -Base.:^(x::Interval, y::Real) = ^(promote(x, y)...) -Base.:^(x::Real, y::Interval) = ^(promote(x, y)...) -# needed to resolve method ambiguities -Base.:^(x::Interval, n::Integer) = x ^ (n//1) -for S ∈ (:Rational, :AbstractFloat) - @eval function Base.:^(x::Interval{T}, y::$S) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - bx = bareinterval(x) - bx = intersect_interval(bx, domain) - isempty_interval(x) && return x - r = BareInterval{T}(_pow(_bigequiv(bx), y)) - d = min(decoration(x), decoration(r)) - if inf(x) > 0 || (inf(x) ≥ 0 && y > 0) || - (isinteger(y) && y > 0) || - (isinteger(y) && !in_interval(0, x)) - return _unsafe_interval(r, d, false) + t = trailing_zeros(n) + 1 + n >>= t + while (t -= 1) > 0 + x *= x + end + y = x + while n > 0 + t = trailing_zeros(n) + 1 + n >>= t + while (t -= 1) >= 0 + x *= x end - return _unsafe_interval(r, min(d, trv), false) + y *= x end + return y end -for f ∈ (:exp, :exp2, :exp10, :expm1, :cbrt) - @eval function Base.$f(xx::Interval) - x = bareinterval(xx) - r = $f(x) - d = min(decoration(r), decoration(xx)) - return _unsafe_interval(r, d, isguaranteed(xx)) +# + +for f ∈ (:exp, :expm1) + @eval begin + function Base.$f(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return @round(T, $f(inf(x)), $f(sup(x))) + end end end -for f ∈ (:log, :log2, :log10) - @eval function Base.$f(a::Interval{T}) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - x = bareinterval(a) - r = $f(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isinterior(x, domain), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) +for f ∈ (:exp2, :exp10, :cbrt) # no CRlibm version + @eval begin + Base.$f(x::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}($f(_bigequiv(x))) + + function Base.$f(x::BareInterval{BigFloat}) + isempty_interval(x) && return x + return @round(BigFloat, $f(inf(x)), $f(sup(x)) ) + end end end -function Base.log1p(a::Interval{T}) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, -one(T), typemax(T)) - x = bareinterval(a) - r = log1p(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isinterior(x, domain), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) +for f ∈ (:exp, :exp2, :exp10, :expm1, :cbrt) + @eval function Base.$f(x::Interval) + bx = bareinterval(x) + r = $f(bx) + d = min(decoration(r), decoration(x)) + return _unsafe_interval(r, d, isguaranteed(x)) + end end -function rootn(a::Interval{T}, n::Integer) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, ifelse(iseven(n), zero(T), typemin(T)), typemax(T)) - x = bareinterval(a) - r = rootn(x, n) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(issubset_interval(x, domain), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) -end +# -Base.hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) +for f ∈ (:log, :log2, :log10) + @eval begin + function Base.$f(x::BareInterval{T}) where {T<:NumTypes} + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) + x = intersect_interval(x, domain) + isempty_interval(x) | (sup(x) == 0) && return emptyinterval(BareInterval{T}) + return @round(T, $f(inf(x)), $f(sup(x))) + end -function fastpow(xx::Interval, qq::Interval) - x = bareinterval(xx) - q = bareinterval(qq) - r = fastpow(x, q) - d = min(decoration(xx), decoration(qq), decoration(r)) - t = isguaranteed(xx) & isguaranteed(qq) - if inf(x) > 0 || (inf(x) ≥ 0 && inf(q) > 0) || - (isthininteger(q) && inf(q) > 0) || - (isthininteger(q) && !in_interval(0, x)) - return _unsafe_interval(r, d, t) + function Base.$f(x::Interval{T}) where {T<:NumTypes} + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) + bx = bareinterval(x) + r = $f(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(isinterior(bx, domain), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) + end end - return _unsafe_interval(r, trv, t) end -function fastpow(xx::Interval, q::Real) - x = bareinterval(xx) - r = fastpow(x, q) - d = min(decoration(xx), decoration(r)) - if inf(x) > 0 || (inf(x) ≥ 0 && q > 0) || - (isinteger(q) && q > 0) || - (isinteger(q) && !in_interval(0, x)) - return _unsafe_interval(r, d, false) - end - return _unsafe_interval(r, trv, false) +function Base.log1p(x::BareInterval{T}) where {T<:NumTypes} + domain = _unsafe_bareinterval(T, -one(T), typemax(T)) + x = intersect_interval(x, domain) + isempty_interval(x) | (sup(x) == -1) && return emptyinterval(BareInterval{T}) + return @round(T, log1p(inf(x)), log1p(sup(x))) +end + +function Base.log1p(x::Interval{T}) where {T<:NumTypes} + domain = _unsafe_bareinterval(T, -one(T), typemax(T)) + bx = bareinterval(x) + r = log1p(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(isinterior(bx, domain), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) end From 72f4b88d034acf6ea7537910131b6b3123869b31 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 00:47:06 +0100 Subject: [PATCH 19/54] Rework rounding --- src/intervals/arithmetic/basic.jl | 89 ++-- src/intervals/arithmetic/hyperbolic.jl | 149 +++---- src/intervals/arithmetic/power.jl | 177 ++++---- src/intervals/arithmetic/trigonometric.jl | 291 +++++++++---- src/intervals/interval_operations/numeric.jl | 4 +- src/intervals/intervals.jl | 2 - src/intervals/rounding.jl | 400 ++++++++---------- src/intervals/rounding_macros.jl | 48 --- test/interval_tests/consistency.jl | 23 +- test/interval_tests/numeric.jl | 7 +- test/interval_tests/power.jl | 4 +- test/interval_tests/rounding.jl | 18 +- .../{trig.jl => trigonometric.jl} | 1 - 13 files changed, 586 insertions(+), 627 deletions(-) delete mode 100644 src/intervals/rounding_macros.jl rename test/interval_tests/{trig.jl => trigonometric.jl} (99%) diff --git a/src/intervals/arithmetic/basic.jl b/src/intervals/arithmetic/basic.jl index 945712ecc..30be4334b 100644 --- a/src/intervals/arithmetic/basic.jl +++ b/src/intervals/arithmetic/basic.jl @@ -74,7 +74,7 @@ function Base.:*(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} isthinzero(x) && return x isthinzero(y) && return y isbounded(x) & isbounded(y) && return _mult(*, x, y) - return _mult((x, y, r) -> _unbounded_mult(x, y, r), x, y) + return _mult(_unbounded_mul, x, y) end Base.:*(x::BareInterval, y::BareInterval) = *(promote(x, y)...) @@ -87,26 +87,28 @@ end # helper functions for multiplication -function _unbounded_mult(x::T, y::T, r::RoundingMode) where {T<:NumTypes} +function _unbounded_mul(x::T, y::T, r::RoundingMode) where {T<:NumTypes} iszero(x) && return sign(y) * zero_times_infinity(T) iszero(y) && return sign(x) * zero_times_infinity(T) - return *(x, y, r) + return _mul_round(x, y, r) end -function _mult(op, a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - if inf(b) ≥ 0 - inf(a) ≥ 0 && return @round(T, op(inf(a), inf(b)), op(sup(a), sup(b))) - sup(a) ≤ 0 && return @round(T, op(inf(a), sup(b)), op(sup(a), inf(b))) - return @round(T, inf(a)*sup(b), sup(a)*sup(b)) # 0 ∈ a - elseif sup(b) ≤ 0 - inf(a) ≥ 0 && return @round(T, op(sup(a), inf(b)), op(inf(a), sup(b))) - sup(a) ≤ 0 && return @round(T, op(sup(a), sup(b)), op(inf(a), inf(b))) - return @round(T, sup(a)*inf(b), inf(a)*inf(b)) # 0 ∈ a - else - inf(a) > 0 && return @round(T, op(sup(a), inf(b)), op(sup(a), sup(b))) - sup(a) < 0 && return @round(T, op(inf(a), sup(b)), op(inf(a), inf(b))) - return @round(T, min( op(inf(a), sup(b)), op(sup(a), inf(b)) ), - max( op(inf(a), inf(b)), op(sup(a), sup(b)) )) +for f ∈ (:_unbounded_mul, :*) + @eval function _mult(::typeof($f), x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + if inf(y) ≥ 0 + inf(x) ≥ 0 && return @round(T, $f(inf(x), inf(y)), $f(sup(x), sup(y))) + sup(x) ≤ 0 && return @round(T, $f(inf(x), sup(y)), $f(sup(x), inf(y))) + return @round(T, inf(x)*sup(y), sup(x)*sup(y)) + elseif sup(y) ≤ 0 + inf(x) ≥ 0 && return @round(T, $f(sup(x), inf(y)), $f(inf(x), sup(y))) + sup(x) ≤ 0 && return @round(T, $f(sup(x), sup(y)), $f(inf(x), inf(y))) + return @round(T, sup(x)*inf(y), inf(x)*inf(y)) + else + inf(x) > 0 && return @round(T, $f(sup(x), inf(y)), $f(sup(x), sup(y))) + sup(x) < 0 && return @round(T, $f(inf(x), sup(y)), $f(inf(x), inf(y))) + return @round(T, min( $f(inf(x), sup(y)), $f(sup(x), inf(y)) ), + max( $f(inf(x), inf(y)), $f(sup(x), sup(y)) )) + end end end @@ -147,27 +149,27 @@ Implement the `div` function of the IEEE Standard 1788-2015 (Table 9.1). !!! note The behavior of `/` is flavor dependent for some edge cases. """ -function Base.:/(a::BareInterval{T}, b::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isempty_interval(b) && return b - isthinzero(b) && return div_by_thin_zero(a) - if inf(b) > 0 # b strictly positive - inf(a) ≥ 0 && return @round(T, inf(a)/sup(b), sup(a)/inf(b)) - sup(a) ≤ 0 && return @round(T, inf(a)/inf(b), sup(a)/sup(b)) - return @round(T, inf(a)/inf(b), sup(a)/inf(b)) # 0 ∈ a - elseif sup(b) < 0 # b strictly negative - inf(a) ≥ 0 && return @round(T, sup(a)/sup(b), inf(a)/inf(b)) - sup(a) ≤ 0 && return @round(T, sup(a)/inf(b), inf(a)/sup(b)) - return @round(T, sup(a)/sup(b), inf(a)/sup(b)) # 0 ∈ a - else # 0 ∈ b - isthinzero(a) && return a - if iszero(inf(b)) - inf(a) ≥ 0 && return @round(T, inf(a)/sup(b), typemax(T)) - sup(a) ≤ 0 && return @round(T, typemin(T), sup(a)/sup(b)) +function Base.:/(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isempty_interval(y) && return y + isthinzero(y) && return div_by_thin_zero(x) + if inf(y) > 0 + inf(x) ≥ 0 && return @round(T, inf(x)/sup(y), sup(x)/inf(y)) + sup(x) ≤ 0 && return @round(T, inf(x)/inf(y), sup(x)/sup(y)) + return @round(T, inf(x)/inf(y), sup(x)/inf(y)) + elseif sup(y) < 0 + inf(x) ≥ 0 && return @round(T, sup(x)/sup(y), inf(x)/inf(y)) + sup(x) ≤ 0 && return @round(T, sup(x)/inf(y), inf(x)/sup(y)) + return @round(T, sup(x)/sup(y), inf(x)/sup(y)) + else + isthinzero(x) && return x + if iszero(inf(y)) + inf(x) ≥ 0 && return @round(T, inf(x)/sup(y), typemax(T)) + sup(x) ≤ 0 && return @round(T, typemin(T), sup(x)/sup(y)) return entireinterval(BareInterval{T}) - elseif sup(b) == 0 - inf(a) ≥ 0 && return @round(T, typemin(T), inf(a)/inf(b)) - sup(a) ≤ 0 && return @round(T, sup(a)/inf(b), typemax(T)) + elseif sup(y) == 0 + inf(x) ≥ 0 && return @round(T, typemin(T), inf(x)/inf(y)) + sup(x) ≤ 0 && return @round(T, sup(x)/inf(y), typemax(T)) return entireinterval(BareInterval{T}) else return entireinterval(BareInterval{T}) @@ -187,16 +189,6 @@ end Base.:\(x::BareInterval, y::BareInterval) = /(y, x) -""" - //(x::BareInterval, y::BareInterval) - //(x::Interval, y::Interval) - -Implement the rational division; this is semantically equivalent to `x / y`. -""" -Base.://(x::BareInterval, y::BareInterval) = /(x, y) # not in the IEEE Standard 1788-2015 - -Base.://(x::Interval, y::Interval) = /(x, y) - """ muladd(x::BareInterval, y::BareInterval z::BareInterval) muladd(x::Interval, y::Interval z::Interval) @@ -269,8 +261,7 @@ function Base.sqrt(x::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) isempty_interval(x) && return x - lo, hi = bounds(x) - return @round(T, sqrt(lo), sqrt(hi)) + return @round(T, sqrt(inf(x)), sqrt(sup(x))) end function Base.sqrt(x::Interval{T}) where {T<:NumTypes} diff --git a/src/intervals/arithmetic/hyperbolic.jl b/src/intervals/arithmetic/hyperbolic.jl index 68fd34b3d..b559b9e98 100644 --- a/src/intervals/arithmetic/hyperbolic.jl +++ b/src/intervals/arithmetic/hyperbolic.jl @@ -2,17 +2,6 @@ # Section 9.1 of the IEEE Standard 1788-2015 and required for set-based flavor # in Section 10.5.3 -# Float64 versions of functions missing from CRlibm - -for f ∈ (:tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth) - @eval function Base.$f(a::BareInterval{Float64}) - isempty_interval(a) && return a - return BareInterval{Float64}($f(_bigequiv(a))) - end -end - -# - for f ∈ (:sinh, :tanh, :asinh) @eval begin """ @@ -21,16 +10,15 @@ for f ∈ (:sinh, :tanh, :asinh) Implement the `$($f)` function of the IEEE Standard 1788-2015 (Table 9.1). """ - function Base.$f(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - lo, hi = bounds(a) - return @round(T, $f(lo), $f(hi)) + function Base.$f(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return @round(T, $f(inf(x)), $f(sup(x))) end - function Base.$f(a::Interval) - r = $f(bareinterval(a)) - d = min(decoration(a), decoration(r)) - return _unsafe_interval(r, d, isguaranteed(a)) + function Base.$f(x::Interval) + r = $f(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) end end end @@ -41,15 +29,15 @@ end Implement the `cosh` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.cosh(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - return @round(T, cosh(mig(a)), cosh(mag(a))) +function Base.cosh(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return @round(T, cosh(mig(x)), cosh(mag(x))) end -function Base.cosh(a::Interval) - r = cosh(bareinterval(a)) - d = min(decoration(a), decoration(r)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.cosh(x::Interval) + r = cosh(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ @@ -58,10 +46,10 @@ end Implement the `coth` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.coth(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isthinzero(a) && return emptyinterval(BareInterval{T}) - lo, hi = bounds(a) +function Base.coth(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isthinzero(x) && return emptyinterval(BareInterval{T}) + lo, hi = bounds(x) if lo < 0 < hi return entireinterval(BareInterval{T}) elseif lo == 0 @@ -73,12 +61,12 @@ function Base.coth(a::BareInterval{T}) where {T<:NumTypes} end end -function Base.coth(a::Interval) - x = bareinterval(a) - r = coth(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(in_interval(0, x), trv, d)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.coth(x::Interval) + bx = bareinterval(x) + r = coth(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(in_interval(0, bx), trv, d)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ @@ -87,9 +75,9 @@ end Implement the `sech` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.sech(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - lo, hi = bounds(a) +function Base.sech(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + lo, hi = bounds(x) if lo ≥ 0 # decreasing function return @round(T, sech(hi), sech(lo)) elseif hi ≤ 0 # increasing function @@ -99,10 +87,10 @@ function Base.sech(a::BareInterval{T}) where {T<:NumTypes} end end -function Base.sech(a::Interval) - r = sech(bareinterval(a)) - d = min(decoration(a), decoration(r)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.sech(x::Interval) + r = sech(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ @@ -111,10 +99,10 @@ end Implement the `csch` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.csch(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - isthinzero(a) && return emptyinterval(BareInterval{T}) - lo, hi = bounds(a) +function Base.csch(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + isthinzero(x) && return emptyinterval(BareInterval{T}) + lo, hi = bounds(x) if lo < 0 < hi return entireinterval(BareInterval{T}) elseif lo == 0 @@ -126,12 +114,12 @@ function Base.csch(a::BareInterval{T}) where {T<:NumTypes} end end -function Base.csch(a::Interval) - x = bareinterval(a) - r = csch(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(in_interval(0, x), trv, d)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.csch(x::Interval) + bx = bareinterval(x) + r = csch(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(in_interval(0, bx), trv, d)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ @@ -140,21 +128,20 @@ end Implement the `acosh` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.acosh(a::BareInterval{T}) where {T<:NumTypes} +function Base.acosh(x::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, one(T), typemax(T)) - x = intersect_interval(a, domain) + x = intersect_interval(x, domain) isempty_interval(x) && return x - lo, hi = bounds(x) - return @round(T, acosh(lo), acosh(hi)) + return @round(T, acosh(inf(x)), acosh(sup(x))) end -function Base.acosh(a::Interval{T}) where {T<:NumTypes} +function Base.acosh(x::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, one(T), typemax(T)) - x = bareinterval(a) - r = acosh(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(issubset_interval(x, domain), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) + bx = bareinterval(x) + r = acosh(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(issubset_interval(bx, domain), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ @@ -163,22 +150,22 @@ end Implement the `atanh` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.atanh(a::BareInterval{T}) where {T<:NumTypes} +function Base.atanh(x::BareInterval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) - x = intersect_interval(a, domain) + x = intersect_interval(x, domain) isempty_interval(x) && return x lo, hi = bounds(x) res_lo, res_hi = bounds(@round(T, atanh(lo), atanh(hi))) return bareinterval(T, res_lo, res_hi) end -function Base.atanh(a::Interval{T}) where {T<:NumTypes} +function Base.atanh(x::Interval{T}) where {T<:NumTypes} domain = _unsafe_bareinterval(T, -one(T), one(T)) - x = bareinterval(a) - r = atanh(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isinterior(x, domain), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) + bx = bareinterval(x) + r = atanh(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(isinterior(bx, domain), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) end """ @@ -187,11 +174,11 @@ end Implement the `acoth` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.acoth(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a +function Base.acoth(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x singular_domain = _unsafe_bareinterval(T, -one(T), one(T)) - issubset_interval(a, singular_domain) && return emptyinterval(BareInterval{T}) - lo, hi = bounds(a) + issubset_interval(x, singular_domain) && return emptyinterval(BareInterval{T}) + lo, hi = bounds(x) if lo ≤ -1 && 1 ≤ hi return entireinterval(BareInterval{T}) elseif lo < -1 < hi || lo < 1 < hi @@ -205,11 +192,11 @@ function Base.acoth(a::BareInterval{T}) where {T<:NumTypes} end end -function Base.acoth(a::Interval{T}) where {T<:NumTypes} +function Base.acoth(x::Interval{T}) where {T<:NumTypes} singular_domain = _unsafe_bareinterval(T, -one(T), one(T)) - x = bareinterval(a) - r = acoth(x) - d = min(decoration(a), decoration(r)) - d = min(d, ifelse(isempty_interval(intersect_interval(x, singular_domain)), d, trv)) - return _unsafe_interval(r, d, isguaranteed(a)) + bx = bareinterval(x) + r = acoth(bx) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse(isempty_interval(intersect_interval(bx, singular_domain)), d, trv)) + return _unsafe_interval(r, d, isguaranteed(x)) end diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 807f78dc5..049942474 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -16,27 +16,44 @@ See also: [`pown`](@ref). ```jldoctest julia> bareinterval(2, 3) ^ bareinterval(2) -[4.0, 9.0] +BareInterval{Float64}(4.0, 9.0) julia> interval(-1, 1) ^ interval(3) -[0.0, 1.0]_com +Interval{Float64}(0.0, 1.0, com) julia> interval(-1, 1) ^ interval(-3) -[1.0, ∞)_trv +Interval{Float64}(1.0, Inf, trv) ``` """ -Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} = # no CRlibm version - BareInterval{T}(_bigequiv(x)^y) - -Base.:^(x::BareInterval, y::BareInterval) = ^(promote(x, y)...) - -function Base.:^(x::BareInterval{BigFloat}, y::BareInterval) +function Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:AbstractFloat} isempty_interval(y) && return y - domain = _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat)) + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) isempty_interval(x) && return x + isthin(y) && return _pow(x, sup(y)) return hull(_pow(x, inf(y)), _pow(x, sup(y))) end +function Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:Rational} + isempty_interval(y) && return y + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) + x = intersect_interval(x, domain) + isempty_interval(x) && return x + isthin(y) && return _pow(x, sup(y)) + return hull(_pow(x, inf(y)), _pow(x, sup(y))) +end +Base.:^(x::BareInterval{<:AbstractFloat}, y::BareInterval{<:AbstractFloat}) = ^(promote(x, y)...) +Base.:^(x::BareInterval{<:Rational}, y::BareInterval{<:Rational}) = ^(promote(x, y)...) +Base.:^(x::BareInterval{<:Rational}, y::BareInterval{<:AbstractFloat}) = ^(promote(x, y)...) +# specialize on rational to improve exactness +function Base.:^(x::BareInterval{T}, y::BareInterval{S}) where {T<:NumTypes,S<:Rational} + R = promote_numtype(T, S) + isempty_interval(y) && return emptyinterval(BareInterval{R}) + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) + x = intersect_interval(x, domain) + isempty_interval(x) && return emptyinterval(BareInterval{R}) + isthin(y) && return BareInterval{R}(_pow(x, sup(y))) + return BareInterval{R}(hull(_pow(x, inf(y)), _pow(x, sup(y)))) +end function Base.:^(x::Interval, y::Interval) bx = bareinterval(x) @@ -48,42 +65,42 @@ function Base.:^(x::Interval, y::Interval) return _unsafe_interval(r, d, t) end +Base.:^(n::Integer, y::Interval) = ^(n//one(n), y) +Base.:^(x::Interval, n::Integer) = ^(x, n//one(n)) +Base.:^(x::Rational, y::Interval) = ^(convert(Interval{typeof(x)}, x), y) +Base.:^(x::Interval, y::Rational) = ^(x, convert(Interval{typeof(y)}, y)) + # overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n -Base.:^(x::Interval, n::Integer) = ^(promote(x, n)...) - # helper functions for power -_pow(x::BareInterval{BigFloat}, y::AbstractFloat) = _pow(x, big(y)) - -function _pow(x::BareInterval{BigFloat}, y::BigFloat) - domain = _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat)) - +function _pow(x::BareInterval{T}, y::T) where {T<:NumTypes} if isthinzero(x) - y > 0 && return zero(BareInterval{BigFloat}) - return emptyinterval(BareInterval{BigFloat}) + y > 0 && return zero(BareInterval{T}) + return emptyinterval(BareInterval{T}) end isinteger(y) && return pown(x, Integer(y)) y == 0.5 && return sqrt(x) + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) isempty_interval(x) && return x - M = typemax(BigFloat) - MM = typemax(BareInterval{BigFloat}) + M = typemax(T) + MM = typemax(BareInterval{T}) - lo = @round(BigFloat, inf(x)^y, inf(x)^y) + lo = @round(T, inf(x)^y, inf(x)^y) lo = (inf(lo) == M) ? MM : lo - lo1 = @round(BigFloat, inf(x)^y, inf(x)^y) + lo1 = @round(T, inf(x)^y, inf(x)^y) lo1 = (inf(lo1) == M) ? MM : lo1 - hi = @round(BigFloat, sup(x)^y, sup(x)^y) + hi = @round(T, sup(x)^y, sup(x)^y) hi = (inf(hi) == M) ? MM : hi - hi1 = @round(BigFloat, sup(x)^y, sup(x)^y) + hi1 = @round(T, sup(x)^y, sup(x)^y) hi1 = (inf(hi1) == M) ? MM : hi1 lo = hull(lo, lo1) @@ -92,7 +109,7 @@ function _pow(x::BareInterval{BigFloat}, y::BigFloat) return hull(lo, hi) end -function _pow(x::BareInterval{BigFloat}, y::Rational{T}) where {T<:Integer} +function _pow(x::BareInterval{T}, y::Rational{S}) where {T<:NumTypes,S<:Integer} p = y.num q = y.den @@ -101,25 +118,25 @@ function _pow(x::BareInterval{BigFloat}, y::Rational{T}) where {T<:Integer} y < 0 && return inv(_pow(x, -y)) if isthinzero(x) - y > zero(y) && return zero(x) - return emptyinterval(x) + y > 0 && return x + return emptyinterval(BareInterval{T}) end - isinteger(y) && return pown(x, T(y)) + isinteger(y) && return pown(x, S(y)) y == (1//2) && return sqrt(x) lo, hi = bounds(x) if lo < 0 - return emptyinterval(BareInterval{BigFloat}) + return emptyinterval(BareInterval{T}) end if lo < 0 && hi ≥ 0 - x = intersect_interval(x, _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat))) + x = intersect_interval(x, _unsafe_bareinterval(T, zero(T), typemax(T))) end - return pown(rootn(x, q), ifelse(p == 1, q, p)) + return pown(rootn(x, q), p) end """ @@ -130,58 +147,57 @@ Implement the `pown` function of the IEEE Standard 1788-2015 (Table 9.1). # Examples ```jldoctest +julia> setdisplay(:full); + julia> pown(bareinterval(2, 3), 2) -[4.0, 9.0] +BareInterval{Float64}(4.0, 9.0) julia> pown(interval(-1, 1), 3) -[-1.0, 1.0]_com +Interval{Float64}(-1.0, 1.0, com) julia> pown(interval(-1, 1), -3) -(-∞, ∞)_trv +Interval{Float64}(-Inf, Inf, trv) ``` """ -pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = # no CRlibm version - BareInterval{T}(pown(_bigequiv(x), n)) - -function pown(x::BareInterval{BigFloat}, n::Integer) +function pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} isempty_interval(x) && return x - iszero(n) && return one(BareInterval{BigFloat}) + iszero(n) && return one(BareInterval{T}) n == 1 && return x - (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{BigFloat}) + (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{T}) if isodd(n) isentire_interval(x) && return x if n > 0 - inf(x) == 0 && return @round(BigFloat, zero(BigFloat), sup(x)^n) - sup(x) == 0 && return @round(BigFloat, inf(x)^n, zero(BigFloat)) - return @round(BigFloat, inf(x)^n, sup(x)^n) + inf(x) == 0 && return @round(T, zero(T), sup(x)^n) + sup(x) == 0 && return @round(T, inf(x)^n, zero(T)) + return @round(T, inf(x)^n, sup(x)^n) else if inf(x) ≥ 0 - inf(x) == 0 && return @round(BigFloat, sup(x)^n, typemax(BigFloat)) - return @round(BigFloat, sup(x)^n, inf(x)^n) + inf(x) == 0 && return @round(T, sup(x)^n, typemax(T)) + return @round(T, sup(x)^n, inf(x)^n) elseif sup(x) ≤ 0 - sup(x) == 0 && return @round(BigFloat, typemin(BigFloat), inf(x)^n) - return @round(BigFloat, sup(x)^n, inf(x)^n) + sup(x) == 0 && return @round(T, typemin(T), inf(x)^n) + return @round(T, sup(x)^n, inf(x)^n) else - return entireinterval(x) + return entireinterval(BareInterval{T}) end end else if n > 0 if inf(x) ≥ 0 - return @round(BigFloat, inf(x)^n, sup(x)^n) + return @round(T, inf(x)^n, sup(x)^n) elseif sup(x) ≤ 0 - return @round(BigFloat, sup(x)^n, inf(x)^n) + return @round(T, sup(x)^n, inf(x)^n) else - return @round(BigFloat, mig(x)^n, mag(x)^n) + return @round(T, mig(x)^n, mag(x)^n) end else if inf(x) ≥ 0 - return @round(BigFloat, sup(x)^n, inf(x)^n) + return @round(T, sup(x)^n, inf(x)^n) elseif sup(x) ≤ 0 - return @round(BigFloat, inf(x)^n, sup(x)^n) + return @round(T, inf(x)^n, sup(x)^n) else - return @round(BigFloat, mag(x)^n, mig(x)^n) + return @round(T, mag(x)^n, mig(x)^n) end end end @@ -206,30 +222,19 @@ function rootn(x::BareInterval{T}, n::Integer) where {T<:NumTypes} n == 0 && return emptyinterval(BareInterval{T}) n == 1 && return x n == 2 && return sqrt(x) - n > 0 && return BareInterval{T}(rootn(_bigequiv(x), n)) - issubnormal(mag(x)) && return inv(rootn(x, -n)) - return BareInterval{T}(inv(rootn(_bigequiv(x), -n))) -end - -function rootn(x::BareInterval{BigFloat}, n::Integer) - isempty_interval(x) && return x - n == 0 && return emptyinterval(BareInterval{BigFloat}) - n == 1 && return x - n == 2 && return sqrt(x) n < 0 && return inv(rootn(x, -n)) - domain = _unsafe_bareinterval(BigFloat, ifelse(iseven(n), zero(BigFloat), typemin(BigFloat)), typemax(BigFloat)) + domain = _unsafe_bareinterval(T, ifelse(iseven(n), zero(T), typemin(T)), typemax(T)) x = intersect_interval(x, domain) isempty_interval(x) && return x # no CRlibm version - lo, hi = bounds(x) - ui = convert(Culong, n) - low = BigFloat() - high = BigFloat() - ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), low, lo, ui, MPFRRoundDown) - ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), high, hi, ui, MPFRRoundUp) - return _unsafe_bareinterval(BigFloat, low, high) + N = convert(Culong, n) + lo = BigFloat() + hi = BigFloat() + ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), lo, inf(x), N, MPFRRoundDown) + ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), hi, sup(x), N, MPFRRoundUp) + return _unsafe_bareinterval(T, lo, hi) end function rootn(x::Interval{T}, n::Integer) where {T<:NumTypes} @@ -241,7 +246,6 @@ function rootn(x::Interval{T}, n::Integer) where {T<:NumTypes} return _unsafe_interval(r, d, isguaranteed(x)) end - """ hypot(x, y) @@ -331,35 +335,22 @@ end # -for f ∈ (:exp, :expm1) +for f ∈ (:cbrt, :exp, :exp2, :exp10, :expm1) @eval begin function Base.$f(x::BareInterval{T}) where {T<:NumTypes} isempty_interval(x) && return x return @round(T, $f(inf(x)), $f(sup(x))) end - end -end -for f ∈ (:exp2, :exp10, :cbrt) # no CRlibm version - @eval begin - Base.$f(x::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}($f(_bigequiv(x))) - - function Base.$f(x::BareInterval{BigFloat}) - isempty_interval(x) && return x - return @round(BigFloat, $f(inf(x)), $f(sup(x)) ) + function Base.$f(x::Interval) + bx = bareinterval(x) + r = $f(bx) + d = min(decoration(r), decoration(x)) + return _unsafe_interval(r, d, isguaranteed(x)) end end end -for f ∈ (:exp, :exp2, :exp10, :expm1, :cbrt) - @eval function Base.$f(x::Interval) - bx = bareinterval(x) - r = $f(bx) - d = min(decoration(r), decoration(x)) - return _unsafe_interval(r, d, isguaranteed(x)) - end -end - # for f ∈ (:log, :log2, :log10) diff --git a/src/intervals/arithmetic/trigonometric.jl b/src/intervals/arithmetic/trigonometric.jl index 59f20fa40..39a7c7308 100644 --- a/src/intervals/arithmetic/trigonometric.jl +++ b/src/intervals/arithmetic/trigonometric.jl @@ -4,14 +4,20 @@ # not in the IEEE Standard 1788-2015 -Base.rad2deg(a::BareInterval{T}) where {T<:NumTypes} = (a / bareinterval(T, π)) * bareinterval(T, 180) -Base.rad2deg(a::Interval{T}) where {T<:NumTypes} = (a / interval(T, π)) * interval(T, 180) +Base.rad2deg(x::BareInterval{T}) where {T<:NumTypes} = (x / bareinterval(T, π)) * bareinterval(T, 180) +Base.rad2deg(x::Interval{T}) where {T<:NumTypes} = (x / interval(T, π)) * interval(T, 180) -Base.deg2rad(a::BareInterval{T}) where {T<:NumTypes} = (a * bareinterval(T, π)) / bareinterval(T, 180) -Base.deg2rad(a::Interval{T}) where {T<:NumTypes} = (a * interval(T, π)) / interval(T, 180) +Base.deg2rad(x::BareInterval{T}) where {T<:NumTypes} = (x * bareinterval(T, π)) / bareinterval(T, 180) +Base.deg2rad(x::Interval{T}) where {T<:NumTypes} = (x * interval(T, π)) / interval(T, 180) -Base.sincospi(a::BareInterval) = (sinpi(a), cospi(a)) -Base.sincospi(a::Interval) = (sinpi(a), cospi(a)) +Base.sincospi(x::BareInterval) = (sinpi(x), cospi(x)) +Base.sincospi(x::Interval) = (sinpi(x), cospi(x)) + +Base.sinpi(x::BareInterval{T}) where {T<:NumTypes} = sin(x * bareinterval(T, π)) +Base.sinpi(x::Interval{T}) where {T<:NumTypes} = sin(x * interval(T, π)) + +Base.cospi(x::BareInterval{T}) where {T<:NumTypes} = cos(x * bareinterval(T, π)) +Base.cospi(x::Interval{T}) where {T<:NumTypes} = cos(x * interval(T, π)) # @@ -56,8 +62,8 @@ function _quadrant(x::Float64) end """ - sin(a::BareInterval) - sin(a::Interval) + sin(::BareInterval) + sin(::Interval) Implement the `sin` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -152,12 +158,9 @@ function Base.sin(a::Interval) return _unsafe_interval(r, d, isguaranteed(a)) end -Base.sinpi(a::BareInterval{T}) where {T<:NumTypes} = sin(a * bareinterval(T, π)) # not in the IEEE Standard 1788-2015 -Base.sinpi(a::Interval{T}) where {T<:NumTypes} = sin(a * interval(T, π)) - """ - cos(a::BareInterval) - cos(a::Interval) + cos(::BareInterval) + cos(::Interval) Implement the `cos` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -244,18 +247,15 @@ function Base.cos(a::BareInterval{Float64}) end end -function Base.cos(a::Interval) - r = cos(bareinterval(a)) - d = min(decoration(a), decoration(r)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.cos(x::Interval) + r = cos(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) end -Base.cospi(a::BareInterval{T}) where {T<:NumTypes} = cos(a * bareinterval(T, π)) # not in the IEEE Standard 1788-2015 -Base.cospi(a::Interval{T}) where {T<:NumTypes} = cos(a * interval(T, π)) - """ - tan(a::BareInterval) - tan(a::Interval) + tan(::BareInterval) + tan(::Interval) Implement the `tan` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -291,8 +291,8 @@ function Base.tan(a::BareInterval{Float64}) diam(a) > inf(bareinterval(Float64, π)) && return entireinterval(BareInterval{Float64}) alo, ahi = bounds(a) - lo_quadrant, lo = _quadrant(alo) - hi_quadrant, hi = _quadrant(ahi) + lo_quadrant, _ = _quadrant(alo) + hi_quadrant, _ = _quadrant(ahi) lo_quadrant_mod = mod(lo_quadrant, 2) hi_quadrant_mod = mod(hi_quadrant, 2) @@ -317,8 +317,8 @@ function Base.tan(a::Interval) end """ - cot(a::BareInterval) - cot(a::Interval) + cot(::BareInterval) + cot(::Interval) Implement the `cot` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -360,10 +360,49 @@ function Base.cot(a::BareInterval{T}) where {T<:NumTypes} end end -Base.cot(a::BareInterval{Float64}) = BareInterval{Float64}(cot(_bigequiv(a))) +function Base.cot(a::BareInterval{Float64}) + isempty_interval(a) && return a + + diam(a) > inf(bareinterval(Float64, π)) && return entireinterval(BareInterval{Float64}) + + isthinzero(a) && return emptyinterval(BareInterval{Float64}) + + alo, ahi = bounds(a) + lo_quadrant, _ = _quadrant(alo) + hi_quadrant, _ = _quadrant(ahi) + + lo_quadrant = mod(lo_quadrant, 4) + hi_quadrant = mod(hi_quadrant, 4) + + # Different cases depending on the two quadrants: + if lo_quadrant == hi_quadrant + iszero(alo) && return @round(Float64, cot(ahi), typemax(Float64)) + + return @round(Float64, cot(ahi), cot(alo)) + + elseif (lo_quadrant == 3 && iszero(hi_quadrant)) || (lo_quadrant == 1 && hi_quadrant ==2) + iszero(ahi) && return @round(Float64, typemin(Float64), cot(alo)) + + return entireinterval(BareInterval{Float64}) + + elseif (iszero(lo_quadrant) && hi_quadrant == 1) || (lo_quadrant == 2 && hi_quadrant == 3) + return @round(Float64, cot(ahi), cot(alo)) + + elseif ( lo_quadrant == 2 && iszero(hi_quadrant)) + iszero(ahi) && return @round(Float64, typemin(Float64), cot(alo)) + + return entireinterval(BareInterval{Float64}) + + else + return entireinterval(BareInterval{Float64}) + end +end + +# automatically defined for `Interval` since it is a subtype of `Real` """ - sec(a::BareInterval) + sec(::BareInterval) + sec(::Interval) Implement the `sec` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -399,10 +438,43 @@ function Base.sec(a::BareInterval{T}) where {T<:NumTypes} end end -Base.sec(a::BareInterval{Float64}) = BareInterval{Float64}(sec(_bigequiv(a))) +function Base.sec(a::BareInterval{Float64}) + isempty_interval(a) && return a + + diam(a) > inf(interval(Float64, π)) && return entireinterval(BareInterval{Float64}) + + alo, ahi = bounds(a) + lo_quadrant, _ = _quadrant(alo) + hi_quadrant, _ = _quadrant(ahi) + + lo_quadrant = mod(lo_quadrant, 4) + hi_quadrant = mod(hi_quadrant, 4) + + # Different cases depending on the two quadrants: + if lo_quadrant == hi_quadrant # Interval limits in the same quadrant + lo = @round(Float64, sec(alo), sec(alo)) + hi = @round(Float64, sec(ahi), sec(ahi)) + return hull(lo, hi) + + elseif (iszero(lo_quadrant) && hi_quadrant == 1) || (lo_quadrant == 2 && hi_quadrant ==3) + return entireinterval(BareInterval{Float64}) + + elseif lo_quadrant == 3 && iszero(hi_quadrant) + return @round(Float64, one(Float64), max(sec(alo), sec(ahi))) + + elseif lo_quadrant == 1 && hi_quadrant == 2 + return @round(Float64, min(sec(alo), sec(ahi)), -one(Float64)) + + else + return entireinterval(BareInterval{Float64}) + end +end + +# automatically defined for `Interval` since it is a subtype of `Real` """ - csc(a::BareInterval) + csc(::BareInterval) + csc(::Interval) Implement the `csc` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -449,11 +521,54 @@ function Base.csc(a::BareInterval{T}) where {T<:NumTypes} end end -Base.csc(a::BareInterval{Float64}) = BareInterval{Float64}(csc(_bigequiv(a))) +function Base.csc(a::BareInterval{Float64}) + isempty_interval(a) && return a + + diam(a) > inf(bareinterval(Float64, π)) && return entireinterval(BareInterval{Float64}) + + isthinzero(a) && return emptyinterval(BareInterval{Float64}) + + alo, ahi = bounds(a) + lo_quadrant, _ = _quadrant(alo) + hi_quadrant, _ = _quadrant(ahi) + + lo_quadrant = mod(lo_quadrant, 4) + hi_quadrant = mod(hi_quadrant, 4) + + # Different cases depending on the two quadrants: + if lo_quadrant == hi_quadrant + iszero(alo) && return @round(Float64, csc(ahi), typemax(Float64)) + + lo = @round(Float64, csc(alo), csc(alo)) + hi = @round(Float64, csc(ahi), csc(ahi)) + return hull(lo, hi) + + elseif (lo_quadrant == 3 && iszero(hi_quadrant)) || (lo_quadrant == 1 && hi_quadrant == 2) + iszero(ahi) && return @round(Float64, typemin(Float64), csc(alo)) + + return entireinterval(BareInterval{Float64}) + + elseif iszero(lo_quadrant) && hi_quadrant == 1 + return @round(Float64, one(Float64), max(csc(alo), csc(ahi))) + + elseif lo_quadrant == 2 && hi_quadrant == 3 + return @round(Float64, min(csc(alo), csc(ahi)), -one(Float64)) + + elseif ( lo_quadrant == 2 && iszero(hi_quadrant)) + iszero(ahi) && return @round(Float64, typemin(Float64), -one(Float64)) + + return entireinterval(BareInterval{Float64}) + + else + return entireinterval(BareInterval{Float64}) + end +end + +# automatically defined for `Interval` since it is a subtype of `Real` """ - asin(a::BareInterval) - asin(a::Interval) + asin(::BareInterval) + asin(::Interval) Implement the `asin` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -475,8 +590,8 @@ function Base.asin(a::Interval{T}) where {T<:NumTypes} end """ - acos(a::BareInterval) - acos(a::Interval) + acos(::BareInterval) + acos(::Interval) Implement the `acos` function of the IEEE Standard 1788-2015 (Table 9.1). """ @@ -498,116 +613,112 @@ function Base.acos(a::Interval{T}) where {T<:NumTypes} end """ - atan(a::BareInterval) - atan(a::Interval) + atan(::BareInterval) + atan(::Interval) Implement the `atan` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.atan(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - alo, ahi = bounds(a) - return @round(T, atan(alo), atan(ahi)) -end - -function Base.atan(a::Interval) - r = atan(bareinterval(a)) - d = min(decoration(a), decoration(r)) - return _unsafe_interval(r, d, isguaranteed(a)) +function Base.atan(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return @round(T, atan(inf(x)), atan(sup(x))) end -function Base.atan(y::BareInterval{T}, x::BareInterval{S}) where {T<:NumTypes,S<:NumTypes} - F = BareInterval{promote_type(T, S)} - (isempty_interval(y) || isempty_interval(x)) && return emptyinterval(F) - return F(atan(_bigequiv(y), _bigequiv(x))) +function Base.atan(x::Interval) + r = atan(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) end -function Base.atan(y::BareInterval{BigFloat}, x::BareInterval{BigFloat}) +function Base.atan(y::BareInterval{T}, x::BareInterval{T}) where {T<:NumTypes} isempty_interval(y) && return y isempty_interval(x) && return x ylo, yhi = bounds(y) xlo, xhi = bounds(x) - z = zero(BigFloat) + z = zero(T) # Prevent nonsense results when y has a signed zero: if iszero(ylo) - y = _unsafe_bareinterval(BigFloat, z, yhi) + y = _unsafe_bareinterval(T, z, yhi) end if iszero(yhi) - y = _unsafe_bareinterval(BigFloat, ylo, z) + y = _unsafe_bareinterval(T, ylo, z) end # Check cases based on x if isthinzero(x) - isthinzero(y) && return emptyinterval(BareInterval{BigFloat}) - ylo ≥ z && return _half_pi(BigFloat) - yhi ≤ z && return -_half_pi(BigFloat) - return _half_range_atan(BigFloat) + isthinzero(y) && return emptyinterval(BareInterval{T}) + ylo ≥ z && return _half_pi(T) + yhi ≤ z && return -_half_pi(T) + return _half_range_atan(T) elseif xlo > z isthinzero(y) && return y ylo ≥ z && - return @round(BigFloat, atan(ylo, xhi), atan(yhi, xlo)) # refinement lo bound + return @round(T, atan(ylo, xhi), atan(yhi, xlo)) # refinement lo bound yhi ≤ z && - return @round(BigFloat, atan(ylo, xlo), atan(yhi, xhi)) - return @round(BigFloat, atan(ylo, xlo), atan(yhi, xlo)) + return @round(T, atan(ylo, xlo), atan(yhi, xhi)) + return @round(T, atan(ylo, xlo), atan(yhi, xlo)) elseif xhi < z - isthinzero(y) && return bareinterval(BigFloat, π) + isthinzero(y) && return bareinterval(T, π) ylo ≥ z && - return @round(BigFloat, atan(yhi, xhi), atan(ylo, xlo)) + return @round(T, atan(yhi, xhi), atan(ylo, xlo)) yhi < z && - return @round(BigFloat, atan(yhi, xlo), atan(ylo, xhi)) - return _range_atan(BigFloat) + return @round(T, atan(yhi, xlo), atan(ylo, xhi)) + return _range_atan(T) else # z ∈ x if iszero(xlo) isthinzero(y) && return y ylo ≥ z && - return _unsafe_bareinterval(BigFloat, atan(ylo, xhi, RoundDown), sup(_half_range_atan(BigFloat))) + return _unsafe_bareinterval(T, _atan_round(ylo, xhi, RoundDown), sup(_half_range_atan(T))) yhi ≤ z && - return _unsafe_bareinterval(BigFloat, inf(_half_range_atan(BigFloat)), atan(yhi, xhi, RoundUp)) - return _half_range_atan(BigFloat) + return _unsafe_bareinterval(T, inf(_half_range_atan(T)), _atan_round(yhi, xhi, RoundUp)) + return _half_range_atan(T) elseif iszero(xhi) - isthinzero(y) && return bareinterval(BigFloat, π) + isthinzero(y) && return bareinterval(T, π) ylo ≥ z && - return _unsafe_bareinterval(BigFloat, inf(_half_pi(BigFloat)), atan(ylo, xlo, RoundUp)) + return _unsafe_bareinterval(T, inf(_half_pi(T)), _atan_round(ylo, xlo, RoundUp)) yhi < z && - return _unsafe_bareinterval(BigFloat, atan(yhi, xlo, RoundDown), inf(-_half_pi(BigFloat))) - return _range_atan(BigFloat) + return _unsafe_bareinterval(T, _atan_round(yhi, xlo, RoundDown), sup(-_half_pi(T))) + return _range_atan(T) else ylo ≥ z && - return @round(BigFloat, atan(ylo, xhi), atan(ylo, xlo)) + return @round(T, atan(ylo, xhi), atan(ylo, xlo)) yhi < z && - return @round(BigFloat, atan(yhi, xlo), atan(yhi, xhi)) - return _range_atan(BigFloat) + return @round(T, atan(yhi, xlo), atan(yhi, xhi)) + return _range_atan(T) end end end -function Base.atan(b::Interval, a::Interval) - y = bareinterval(b) - x = bareinterval(a) - r = atan(y, x) - d = min(decoration(b), decoration(a), decoration(r)) - d = min(d, ifelse(in_interval(0, y), - ifelse(in_interval(0, x), trv, - ifelse(sup(x) < 0, ifelse(inf(y) < 0, def, dac), d)), +Base.atan(y::BareInterval, x::BareInterval) = atan(promote(y, x)...) + +function Base.atan(y::Interval, x::Interval) + by = bareinterval(y) + bx = bareinterval(x) + r = atan(by, bx) + d = min(decoration(y), decoration(x), decoration(r)) + d = min(d, ifelse(in_interval(0, by), + ifelse(in_interval(0, bx), trv, + ifelse(sup(bx) < 0, ifelse(inf(by) < 0, def, dac), d)), d)) - return _unsafe_interval(r, d, isguaranteed(a)) + t = isguaranteed(y) & isguaranteed(x) + return _unsafe_interval(r, d, t) end """ - acot(a::BareInterval) - acot(a::Interval) + acot(::BareInterval) + acot(::Interval) Implement the `acot` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.acot(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - return BareInterval{T}(@round(BigFloat, acot(_bigequiv(sup(a))), acot(_bigequiv(inf(a))))) +function Base.acot(x::BareInterval{T}) where {T<:NumTypes} + isempty_interval(x) && return x + return @round(T, acot(sup(x)), acot(inf(x))) end # automatically defined for `Interval` since it is a subtype of `Real` diff --git a/src/intervals/interval_operations/numeric.jl b/src/intervals/interval_operations/numeric.jl index 7d2ed10b9..436f21a91 100644 --- a/src/intervals/interval_operations/numeric.jl +++ b/src/intervals/interval_operations/numeric.jl @@ -191,11 +191,11 @@ See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), """ function diam(x::BareInterval{T}) where {T<:AbstractFloat} isempty_interval(x) && return convert(T, NaN) - return -(sup(x), inf(x), RoundUp) # cf. Section 12.12.8 + return _sub_round(sup(x), inf(x), RoundUp) # cf. Section 12.12.8 end function diam(x::BareInterval{<:Rational}) isempty_interval(x) && return throw(ArgumentError("cannot compute the diameter of empty intervals; cannot return a `Rational` NaN")) - return -(sup(x), inf(x), RoundUp) # cf. Section 12.12.8 + return _sub_round(sup(x), inf(x), RoundUp) # cf. Section 12.12.8 end function diam(x::Interval{T}) where {T<:AbstractFloat} diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index 9cc4b85e8..ce6d29d42 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -7,8 +7,6 @@ include("real_interface.jl") # Rounding include("rounding.jl") - export IntervalRounding -include("rounding_macros.jl") # Flavors include("flavors.jl") diff --git a/src/intervals/rounding.jl b/src/intervals/rounding.jl index dbfcf0428..58cca2a1c 100644 --- a/src/intervals/rounding.jl +++ b/src/intervals/rounding.jl @@ -1,291 +1,237 @@ -#= Design summary: +# prevents multiple threads from calling `setprecision` concurrently, used in `_bigequiv` +const precision_lock = ReentrantLock() -This is a so-called "traits-based" design, as follows. +""" + _bigequiv(x) -The main body of the file defines versions of elementary functions with all allowed -interval rounding types, e.g. -+(IntervalRounding{:fast}(), a, b, RoundDown) -+(IntervalRounding{:tight}(), a, b, RoundDown) -+(IntervalRounding{:accurate}(), a, b, RoundDown) -+(IntervalRounding{:slow}(), a, b, RoundDown) -+(IntervalRounding{:none}(), a, b, RoundDown) +Create a `BigFloat` with the same underlying precision. +""" +function _bigequiv(x::T) where {T<:NumTypes} + lock(precision_lock) do + setprecision(precision(float(T))) do + return BigFloat(x) + end + end +end -The current allowed rounding types are -- :fast # fast, tight (correct) rounding with errorfree arithmetic via FastRounding.jl -- :tight # tight (correct) rounding with improved errorfree arithmetic via RoundingEmulator.jl -- :accurate # fast "accurate" rounding using prevfloat and nextfloat (slightly wider than needed) -- :slow # tight (correct) rounding by changing rounding mode (slow) -- :none # no rounding (for speed comparisons; no enclosure is guaranteed) +_bigequiv(x::BigFloat) = x -All function on intervals are then defined by default as - +(IntervalArithmetic.interval_rounding(), a, b, RoundDown) -By rededfining `IntervalArithmetic.interval_rounding()`, the user can -select the default. -Moreover the `:slow` rounding mode is used as a fallback if the chosen -rounding mode is not available. -This is done by defining the generic case as - +(::IntervalRounding, a, b, RoundDown) = +(IntervalRounding{:slow}(), a, b, RoundDown) -=# """ - IntervalRounding{T} + IntervalRounding -Interval rounding trait type. +Interval rounding type. -Allowed rounding types are -- `:tight`: fast, tight (correct) rounding with errorfree arithmetic via - FastRounding.jl. -- `:accurate`: fast "accurate" rounding using prevfloat and nextfloat - (slightly wider than needed). -- `:slow`: tight (correct) rounding by changing rounding mode (slow). -- `:none`: no rounding (for speed comparisons; no enclosure is guaranteed). +Available rounding types: +- `:tight`: rounding via `prevfloat` and `nextfloat` (cf. [RoundingEmulator.jl](https://github.com/matsueushi/RoundingEmulator.jl)). +- `:slow`: rounding via `setrounding`. +- `:none`: no rounding (non-rigorous numerics). """ struct IntervalRounding{T} end -## Default -const rounding_types = (:fast, :tight, :accurate, :slow, :none) - interval_rounding() = IntervalRounding{:tight}() -# BigFloat conversion -Base.convert(::Type{BigFloat}, x, rounding_mode::RoundingMode) = - setrounding(BigFloat, rounding_mode) do - convert(BigFloat, x) - end - -# Parsing from string -Base.parse(::Type{T}, x::AbstractString, rounding_mode::RoundingMode) where T = setrounding(Float64, rounding_mode) do - return float(parse(T, x)) -end - -# use higher precision float parser to get round issues on Windows -@static if Sys.iswindows() - function Base.parse(::Type{Float64}, s::AbstractString, r::RoundingMode) - a = setprecision(BigFloat, 53) do - setrounding(BigFloat, r) do - parse(BigFloat, s) # correctly takes account of rounding mode - end +# + +for (f, fname) ∈ ((:+, :add), (:-, :sub), (:*, :mul), (:/, :div)) + g = Symbol(:_, fname, :_round) + + @eval begin + $g(x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = $g(interval_rounding(), x, y, r) + $g(x::T, y::T, ::RoundingMode) where {T<:Rational} = $f(x, y) # exact operation + + $g(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = + $g(IntervalRounding{:slow}(), x, y, r) + $g(::IntervalRounding{:fast}, x::T, y::T, r::RoundingMode) where {T<:Union{Float32,Float64}} = + FastRounding.$(Symbol(fname, "_round"))(x, y, r) + $g(::IntervalRounding{:tight}, x::T, y::T, ::RoundingMode{:Down}) where {T<:Union{Float32,Float64}} = + RoundingEmulator.$(Symbol(fname, :_down))(x, y) + $g(::IntervalRounding{:tight}, x::T, y::T, ::RoundingMode{:Up}) where {T<:Union{Float32,Float64}} = + RoundingEmulator.$(Symbol(fname, :_up))(x, y) + function $g(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} + bigx = _bigequiv(x) + bigy = _bigequiv(y) + return setrounding(BigFloat, r) do + return $f(bigx, bigy) end - - return Float64(a, r) - end - - function Base.parse(::Type{T}, s::AbstractString, r::RoundingMode) where {T <: Union{Float16, Float32}} - return T(parse(Float64, s, r), r) + end + $g(::IntervalRounding{:none}, x::T, y::T, ::RoundingMode) where {T<:AbstractFloat} = $f(x, y) end end +# -## Functions that are the same for all rounding types: -Base.:+(a::T, ::RoundingMode) where {T<:AbstractFloat} = a # ignore rounding -Base.:-(a::T, ::RoundingMode) where {T<:AbstractFloat} = -a # ignore rounding -Base.zero(::Interval{T}, ::RoundingMode) where {T<:AbstractFloat} = zero(T) -Base.zero(::Type{T}, ::RoundingMode) where {T<:AbstractFloat} = zero(T) +_pow_round(x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = _pow_round(interval_rounding(), x, y, r) +_pow_round(x::AbstractFloat, n::Integer, r::RoundingMode) = _pow_round(promote(x, n)..., r) +_pow_round(x::T, y::T, ::RoundingMode) where {T<:Rational} = ^(x, y) # exact operation +_pow_round(x::Rational, n::Integer, ::RoundingMode) = ^(x, n) # exact operation -## Rationals -# TODO Restore full support for rational intervals -# no-ops for rational rounding: -for f ∈ (:+, :-, :*, :/) - @eval Base.$f(a::T, b::T, ::RoundingMode) where {T<:Rational} = $f(a, b) -end - -function Base.sqrt(a::T, rounding_mode::RoundingMode) where {T<:Rational} - setrounding(float(T), rounding_mode) do - return sqrt(float(a)) +_pow_round(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = + _pow_round(IntervalRounding{:slow}(), x, y, r) +function _pow_round(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} + bigx = _bigequiv(x) + bigy = _bigequiv(y) + return setrounding(BigFloat, r) do + return ^(bigx, bigy) end end - - -for f ∈ (:exp2, :exp10, :cbrt) - @eval function Base.$f(x::BigFloat, r::RoundingMode) # add BigFloat functions with rounding: - setrounding(BigFloat, r) do - $f(x) - end +_pow_round(::IntervalRounding{:none}, x::T, y::T, ::RoundingMode) where {T<:AbstractFloat} = ^(x, y) + +# + +_inv_round(x::AbstractFloat, r::RoundingMode) = _inv_round(interval_rounding(), x, r) +_inv_round(x::Rational, ::RoundingMode) = inv(x) # exact operation + +_inv_round(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = + _inv_round(IntervalRounding{:slow}(), x, r) +_inv_round(::IntervalRounding{:fast}, x::Union{Float32,Float64}, r::RoundingMode) = + FastRounding.inv_round(x, r) +_inv_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Down}) = + RoundingEmulator.div_down(one(x), x) +_inv_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Up}) = + RoundingEmulator.div_up(one(x), x) +function _inv_round(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) + bigx = _bigequiv(x) + return setrounding(BigFloat, r) do + return inv(bigx) end end +_inv_round(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = inv(x) +# -rounding_directions = [ - (:down, RoundingMode{:Down}, prevfloat), - (:up, RoundingMode{:Up}, nextfloat) -] - -for (dir, RoundingDirection, outfloat) ∈ rounding_directions - #= :fast and :tight for functions supported by FastRounding.jl - and RoundingEmulator.jl respectively =# - # NOTE RoundingEmulator.jl only works with Float32 and Float64 - for (op, f) ∈ ( (:+, :add), (:-, :sub), (:*, :mul), (:/, :div) ) - @eval function Base.$op(::IntervalRounding{:fast}, a, b, ::$RoundingDirection) - return FastRounding.$(Symbol(f, "_round"))(a, b, $RoundingDirection()) - end - - @eval function Base.$op( - ::IntervalRounding{:tight}, a::T, b::T, - ::$RoundingDirection) where {T<:Union{Float32, Float64}} - return RoundingEmulator.$(Symbol(f, "_", dir))(a, b) - end - end +_sqrt_round(x::NumTypes, r::RoundingMode) = _sqrt_round(interval_rounding(), float(x), r) # rationals are converted to floats - # Sqrt - @eval function Base.sqrt(::IntervalRounding{:fast}, a, ::$RoundingDirection) - return FastRounding.sqrt_round(a, $dir) +_sqrt_round(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = + _sqrt_round(IntervalRounding{:slow}(), x, r) +_sqrt_round(::IntervalRounding{:fast}, x::Union{Float32,Float64}, r::RoundingMode) = + FastRounding.sqrt_round(x, r) +_sqrt_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Down}) = + RoundingEmulator.sqrt_down(x) +_sqrt_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Up}) = + RoundingEmulator.sqrt_up(x) +function _sqrt_round(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) + bigx = _bigequiv(x) + return setrounding(BigFloat, r) do + return sqrt(bigx) end +end +_sqrt_round(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = sqrt(x) - @eval function Base.sqrt(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) - return RoundingEmulator.$(Symbol("sqrt_", dir))(a) - end +# - # Inverse - @eval function Base.inv(::IntervalRounding{:fast}, a, ::$RoundingDirection) - return FastRounding.inv_round(a, $dir) - end +_atan_round(x::T, y::T, r::RoundingMode) where {T<:NumTypes} = _atan_round(interval_rounding(), promote(float(x), float(y))..., r) # rationals are converted to floats - @eval function Base.inv(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) - return RoundingEmulator.$(Symbol("div_", dir))(one(a), a) +_atan_round(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = + _atan_round(IntervalRounding{:slow}(), x, y, r) +function _atan_round(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} + bigx = _bigequiv(x) + bigy = _bigequiv(y) + return setrounding(BigFloat, r) do + return atan(bigx, bigy) end +end +_atan_round(::IntervalRounding{:none}, x::T, y::T, ::RoundingMode) where {T<:AbstractFloat} = atan(x, y) - #= :accurate and :slow =# - # Power - @eval function Base.:^(::IntervalRounding{:accurate}, a::AbstractFloat, b, ::$RoundingDirection) - return $outfloat(a^b) - end +# - @eval function Base.:^(::IntervalRounding{:slow}, a::BigFloat, b::AbstractFloat, ::$RoundingDirection) - setrounding(BigFloat, $RoundingDirection()) do - return a^b - end - end +for f ∈ [:cbrt, :exp2, :exp10, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth] + g = Symbol(:_, f, :_round) - # Correct rounding of other floats must pass through BigFloat - @eval function Base.:^(::IntervalRounding{:slow}, a::T, b, ::$RoundingDirection) where {T<:AbstractFloat} - setprecision(BigFloat, 53) do - return T(^(IntervalRounding{:slow}, BigFloat(a), b, $RoundingDirection())) - end - end + @eval begin + $g(x::NumTypes, r::RoundingMode) = $g(interval_rounding(), float(x), r) # rationals are converted to floats - # Binary function - for f ∈ (:+, :-, :*, :/, :^, :atan) - @eval function Base.$f(::IntervalRounding{:accurate}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} - return $outfloat($f(a, b)) - end - - @eval function Base.$f(::IntervalRounding{:slow}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} - setrounding(T, $RoundingDirection()) do - return $f(a, b) + $g(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = $g(IntervalRounding{:slow}(), x, r) + function $g(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) + bigx = _bigequiv(x) + return setrounding(BigFloat, r) do + return $f(bigx) end end + $g(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = $f(x) end +end - # Unary functions not in CRlibm - for f ∈ (:sqrt, :inv, :cot, :sec, :csc, :acot, - :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth) - @eval function Base.$f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) - return $outfloat($f(a)) - end - - @eval function Base.$f(::IntervalRounding{:slow}, a::T, ::$RoundingDirection) where {T<:AbstractFloat} - setrounding(T, $RoundingDirection()) do - return $f(a) - end - end - end +# - # Functions defined in CRlibm - for f ∈ CRlibm.functions - if isdefined(Base, f) - @eval function Base.$f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) - return $outfloat($f(a)) - end +for f ∈ CRlibm.functions + if isdefined(Base, f) + g = Symbol(:_, f, :_round) - @eval function Base.$f(::IntervalRounding{:slow}, a::AbstractFloat, ::$RoundingDirection) - return CRlibm.$f(a, $RoundingDirection()) - end - else - @eval function $f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) - return $outfloat($f(a)) - end + @eval begin + $g(x::NumTypes, r::RoundingMode) = $g(interval_rounding(), float(x), r) # rationals are converted to floats - @eval function $f(::IntervalRounding{:slow}, a::AbstractFloat, ::$RoundingDirection) - return CRlibm.$f(a, $RoundingDirection()) - end + $g(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = $g(IntervalRounding{:slow}(), x, r) + $g(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) = CRlibm.$f(x, r) + $g(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = CRlibm.$f(x) end end end -#= Default definitions, fallback and :none =# -# Unary functions -for f ∈ vcat(CRlibm.functions, [:sqrt, :inv, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth]) - if isdefined(Base, f) - @eval Base.$f(a::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), a, r) - @eval Base.$f(a::Real, r::RoundingMode) = $f(interval_rounding(), float(a), r) - # Fallback to :slow if the requested interval rounding is unavailable - @eval function Base.$f(::IntervalRounding, a, r::RoundingMode) - return $f(IntervalRounding{:slow}(), a, r) - end - # No rounding - @eval function Base.$f(::IntervalRounding{:none}, a, r::RoundingMode) - return $f(a) - end - else - @eval $f(a::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), a, r) - @eval $f(a::Real, r::RoundingMode) = $f(interval_rounding(), float(a), r) - # Fallback to :slow if the requested interval rounding is unavailable - @eval function $f(::IntervalRounding, a, r::RoundingMode) - return $f(IntervalRounding{:slow}(), a, r) - end - # No rounding - @eval function $f(::IntervalRounding{:none}, a, r::RoundingMode) - return $f(a) - end - end -end +""" + @round(T, ex1, ex2) -# Binary functions -for f ∈ (:+, :-, :*, :/, :^, :atan) - @eval Base.$f(a::T, b::T, r::RoundingMode) where {T<:AbstractFloat} = $f(interval_rounding(), a, b, r) - @eval Base.$f(a::Real, b::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) - @eval Base.$f(a::AbstractFloat, b::Real, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) - @eval Base.$f(a::AbstractFloat, b::AbstractFloat, r::RoundingMode) = $f(interval_rounding(), promote(a, b)..., r) - @eval Base.$f(a::Real, b::Real, r::RoundingMode) = $f(interval_rounding(), float(a), float(b), r) - - # Fallback to :slow if the requested interval rounding is unavailable - @eval function Base.$f(::IntervalRounding, a, b, r::RoundingMode) - return $f(IntervalRounding{:slow}(), a, b, r) - end +Macro for internal use that creates an interval by rounding down `ex1` and +rounding up `ex2`. Each expression may consist of only a *single* operation that +needs rounding, e.g. `a.lo + b.lo` or `sin(a.lo)`. It also handles `min(...)` +and `max(...)`, where the arguments are each themselves single operations. - # No rounding - @eval function Base.$f(::IntervalRounding{:none}, a, b, r::RoundingMode) - return $f(a, b) - end +The macro uses the internal `_round_expr` function to transform e.g. `a + b` into +`+(a, b, RoundDown)`. +""" +macro round(T, ex1, ex2) + return :(_unsafe_bareinterval($(esc(T)), $(_round_expr(ex1, RoundDown)), $(_round_expr(ex2, RoundUp)))) end -# prevents multiple threads from calling `setprecision` concurrently, used in `_bigequiv` -const precision_lock = ReentrantLock() - """ - _bigequiv(x) + _round_expr(ex::Expr, rounding_mode::RoundingMode) -Create a `BigFloat` equivalent with the same underlying precision as `x`. +Transforms a single expression by applying a rounding mode, e.g. + +- `a + b` into `+(a, b, RoundDown)` +- `sin(a)` into `sin(a, RoundDown)` """ -function _bigequiv(x::BareInterval{T}) where {T<:NumTypes} - lock(precision_lock) do - setprecision(precision(float(T))) do - return BareInterval{BigFloat}(x) +function _round_expr(ex::Expr, r::RoundingMode) + if ex.head == :call + op = ex.args[1] + if op ∈ (:min, :max) + mapped_args = _round_expr.(ex.args[2:end], r) + return :( $op($(mapped_args...)) ) + elseif op ∈ (:typemin, :typemax, :one, :zero) + return :( $(esc(ex)) ) + elseif length(ex.args) == 3 # binary operator + if op == :+ + return :( _add_round($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + elseif op == :- + return :( _sub_round($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + elseif op == :* + return :( _mul_round($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + elseif op == :/ + return :( _div_round($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + elseif op == :^ + return :( _pow_round($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + elseif op == :_unbounded_mul + return :( _unbounded_mul($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + else + op2 = Symbol(:_, op, :_round) + return :( $op2($(esc(ex.args[2])), $(esc(ex.args[3])), $r) ) + end + elseif op ∈ (:+, :-) # unary operator that does not need rounding + return :( $(esc(ex)) ) + else # unary operator + op2 = Symbol(:_, op, :_round) + return :( $op2($(esc(ex.args[2])), $r) ) end + else + return :( $(esc(ex)) ) end end -function _bigequiv(x::T) where {T<:NumTypes} - lock(precision_lock) do - setprecision(precision(float(T))) do - return BigFloat(x) - end - end -end +_round_expr(ex, _) = ex diff --git a/src/intervals/rounding_macros.jl b/src/intervals/rounding_macros.jl deleted file mode 100644 index 425344594..000000000 --- a/src/intervals/rounding_macros.jl +++ /dev/null @@ -1,48 +0,0 @@ -""" - round_expr(ex::Expr, rounding_mode::RoundingMode) - -Transforms a single expression by applying a rounding mode, e.g. - -- `a + b` into `+(a, b, RoundDown)` -- `sin(a)` into `sin(a, RoundDown)` -""" -function round_expr(ex::Expr, rounding_mode::RoundingMode) - if ex.head == :call - op = ex.args[1] - - if op ∈ (:min, :max) - mapped_args = round_expr.(ex.args[2:end], rounding_mode) - return :($op($(mapped_args...))) - elseif op ∈ (:typemin, :typemax, :one, :zero) - return :( $(esc(ex)) ) - end - - if length(ex.args) == 3 # binary operator - return :( $(esc(op))( $(esc(ex.args[2])), $(esc(ex.args[3])), $rounding_mode) ) - - else # unary operator - return :( $(esc(op))($(esc(ex.args[2])), $rounding_mode ) ) - end - else - return :( $(esc(ex)) ) - end -end - -round_expr(ex, rounding_mode) = ex # generic fallback that doesn't round - - -""" - @round(F, ex1, ex2) - -Macro for internal use that creates an interval of flavor F by rounding down -`ex1` and rounding up `ex2`. Each expression may consist of only a *single* -operation that needs rounding, e.g. `a.lo + b.lo` or `sin(a.lo)`. -It also handles `min(...)` and `max(...)`, where the arguments are each -themselves single operations. - -The macro uses the internal `round_expr` function to transform e.g. -`a + b` into `+(a, b, RoundDown)`. -""" -macro round(T, ex1, ex2) - return :(_unsafe_bareinterval($(esc(T)), $(round_expr(ex1, RoundDown)), $(round_expr(ex2, RoundUp)))) -end diff --git a/test/interval_tests/consistency.jl b/test/interval_tests/consistency.jl index 407ea27ff..1e1f6fada 100644 --- a/test/interval_tests/consistency.jl +++ b/test/interval_tests/consistency.jl @@ -32,7 +32,6 @@ @test isequal_interval(interval(0.25) - one(c)/interval(4), zero(c)) @test isequal_interval(emptyinterval(a) - interval(0, 1), emptyinterval(a)) @test isequal_interval(interval(0, 1) - emptyinterval(a), emptyinterval(a)) - @test isequal_interval(a*b, interval(*(inf(a), inf(b), RoundDown), *(sup(a), sup(b), RoundUp))) @test isequal_interval(interval(0, 1) * emptyinterval(a), emptyinterval(a)) @test isequal_interval(a * interval(0), zero(a)) end @@ -275,16 +274,6 @@ @test issubset_interval(log(interval(-2, 5)), interval(-Inf, log(interval(5)))) end - # @testset "Interval rounding tests" begin - # # setrounding(Interval, :wide) - # @test rounding(Interval) == :wide - # - # @test_throws ArgumentError # setrounding(Interval, :hello) - # - # # setrounding(Interval, :narrow) - # @test rounding(Interval) == :narrow - # end - @testset "Interval power of an interval" begin a = interval(1, 2) b = interval(3, 4) @@ -317,21 +306,21 @@ end @testset "Type stability" begin - for T in (Float32, Float64, BigFloat) + for T ∈ (Float32, Float64, BigFloat) xs = [interval(3, 4), interval(0, 4), interval(0), interval(-4, 0), interval(-4, 4), interval(-Inf, 4), interval(4, Inf), interval(-Inf, Inf)] - for x in xs - for y in xs + for x ∈ xs + for y ∈ xs xx = Interval{T}(x) yy = Interval{T}(y) - for op in (+, -, *, /, atan) - # @inferred op(x, y) TODO solve the problem for * + for op ∈ (+, -, *, /, atan) + @inferred op(x, y) end end - for op in (sin, cos, exp, log, tan, abs, mid, diam) + for op ∈ (sin, cos, exp, log, tan, abs, mid, diam) @inferred op(x) end end diff --git a/test/interval_tests/numeric.jl b/test/interval_tests/numeric.jl index b5ca963cc..159b22baa 100644 --- a/test/interval_tests/numeric.jl +++ b/test/interval_tests/numeric.jl @@ -14,9 +14,7 @@ end ## Basic arithmetic @test isequal_interval(+a, a) - @test isequal_interval(a + b, interval(+(inf(a), inf(b), RoundDown), +(sup(a), sup(b), RoundUp))) @test isequal_interval(-a, interval(-sup(a), -inf(a))) - @test isequal_interval(a - b, interval(-(inf(a), sup(b), RoundDown), -(sup(a), inf(b), RoundUp))) for f in (:+, :-, :*, :/) @eval begin @test isequal_interval($f(interval(Float64, pi), interval(Float32, pi)), @@ -28,7 +26,6 @@ end @test isequal_interval(interval(-30.0,-15.0) / interval(-5.0,-3.0), interval(3.0, 10.0)) @test isequal_interval(interval(-30,-15) / interval(-5,-3), interval(3.0, 10.0)) - @test isequal_interval(b/a, interval(/(inf(b), sup(a), RoundDown), /(sup(b), inf(a), RoundUp))) @test isequal_interval(a/c, interval(0.025, 4.4)) @test isequal_interval(c/interval(4.0), interval(6.25e-02, 1e+00)) @test isequal_interval(c/zero(c), emptyinterval(c)) @@ -116,7 +113,7 @@ end @test dist(interval(1, 27)^interval(1/3), interval(1, 3)) < 2*inf(eps(interval(1, 3))) @test dist(interval(1, 27)^interval(1/3), interval(1, 3)) < 2*inf(eps(interval(1, 3))) @test issubset_interval(interval(1, 3), interval(1, 27)^interval(1//3)) - @test isequal_interval(interval(0.1, 0.7)^interval(1//3), interval(0.4641588833612778, 0.8879040017426008)) # interval(0.46415888336127786, 0.8879040017426008) + @test isequal_interval(interval(0.1, 0.7)^interval(1//3), interval(0.46415888336127786, 0.8879040017426008)) @test dist(interval(0.1, 0.7)^interval(1/3), interval(0.46415888336127786, 0.8879040017426008)) < 2*inf(eps(interval(0.1, 0.7)^interval(1/3))) @@ -152,9 +149,7 @@ end @test issubset_interval(log2(interval(BigFloat, 1//2)), log2(interval(1//2))) @test isequal_interval(log2(interval(0.25, 0.5)), interval(-2.0, -1.0)) @test in_interval(log10(big(1//10)), log10(interval(1//10))) - @test isequal_interval(log10(interval(0.01, 0.1)), interval(log10(0.01, RoundDown), log10(0.1, RoundUp))) - @test isequal_interval(log1p(interval(-0.5, 0.1)), interval(log1p(-0.5, RoundDown), log1p(0.1, RoundUp))) @test isequal_interval(log1p(interval(-10.0)), emptyinterval()) end diff --git a/test/interval_tests/power.jl b/test/interval_tests/power.jl index 795eb52f7..dd910d843 100644 --- a/test/interval_tests/power.jl +++ b/test/interval_tests/power.jl @@ -52,9 +52,9 @@ end a = interval(Rational{Int64}, 1//2, 3//4) b = interval(Rational{Int64}, 3//7, 9//12) - @test isequal_interval(sqrt(a + b), interval(Int64(137482504)//142672337, Int64(46099201)//37639840)) + @test issubset_interval(sqrt(a + b), interval(Int64(137482504)//142672337, Int64(46099201)//37639840)) - @test isequal_interval(sqrt(interval(1//3)), interval(Int64(29354524)//50843527, Int64(50843527)//88063572)) + @test issubset_interval(sqrt(interval(1//3)), interval(Int64(29354524)//50843527, Int64(50843527)//88063572)) end @testset "Decorations" begin diff --git a/test/interval_tests/rounding.jl b/test/interval_tests/rounding.jl index 98402f3d1..4d1d4a34d 100644 --- a/test/interval_tests/rounding.jl +++ b/test/interval_tests/rounding.jl @@ -1,27 +1,27 @@ x = interval(0.5) @testset "IntervalRounding{:slow}" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:slow}() + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:slow}() @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) end -@testset "IntervalRounding{:accurate}" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:accurate}() - @test isequal_interval(sin(x), interval(0.47942553860420295, 0.47942553860420306)) -end +# @testset "IntervalRounding{:accurate}" begin +# IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:accurate}() +# @test isequal_interval(sin(x), interval(0.47942553860420295, 0.47942553860420306)) +# end @testset "No rounding" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:none}() + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:none}() @test isequal_interval(sin(x), interval(0.479425538604203, 0.479425538604203)) end @testset "IntervalRounding{:fast}" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:fast}() + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:fast}() @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) end @testset "IntervalRounding{:tight}" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:tight}() + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:tight}() @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) # https://github.com/JuliaIntervals/IntervalArithmetic.jl/issues/215 @@ -33,4 +33,4 @@ end @test isequal_interval(tiny / huge, interval(0, nextfloat(0.0))) end -IntervalArithmetic.interval_rounding() = IntervalRounding{:tight}() +IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:tight}() diff --git a/test/interval_tests/trig.jl b/test/interval_tests/trigonometric.jl similarity index 99% rename from test/interval_tests/trig.jl rename to test/interval_tests/trigonometric.jl index 4271a6c24..dc6dd176c 100644 --- a/test/interval_tests/trig.jl +++ b/test/interval_tests/trigonometric.jl @@ -23,7 +23,6 @@ end @testset "cos" begin @test isequal_interval(cos(interval(0.5)), interval(0.87758256189037265, 0.87758256189037276)) - @test isequal_interval(cos(interval(0.5, 1.67)), interval(cos(1.67, RoundDown), cos(0.5, RoundUp))) @test isequal_interval(cos(interval(2.1, 5.6)), interval(-1.0, 0.7755658785102496)) @test isequal_interval(cos(interval(0.5, 8.5)), interval(-1.0, 1.0)) @test isequal_interval(cos(interval(1.67, 3.2)), interval(-1.0, -0.09904103659872801)) From 11b43c507ea32d1376fb55ebb92dc9c94da08192 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 01:53:49 +0100 Subject: [PATCH 20/54] Fix typo --- README.md | 2 +- docs/src/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 78e40cf92..9e5bcc57e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ The official documentation is available online: https://juliaintervals.github.io ## Installation -The IntervalArithmetic.jl package requires to [install Julia](https://julialang.org/downloads/) (v1.8 or above). +The IntervalArithmetic.jl package requires to [install Julia](https://julialang.org/downloads/) (v1.9 or above). Then, start Julia and execute the following command in the REPL: diff --git a/docs/src/index.md b/docs/src/index.md index 31843e19d..455bab479 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -7,7 +7,7 @@ IntervalArithmetic.jl is a Julia package for validated numerics in Julia. All ca ## Installation ```@repl -using Pkg # Julia v1.8 or above +using Pkg # Julia v1.9 or above redirect_stderr(devnull) do # hide Pkg.add("IntervalArithmetic") end # hide From aa32a19246549c761c6a36b9c92fe2f9b5612e37 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 02:14:22 +0100 Subject: [PATCH 21/54] Remove `FastRounding`, make `:accurate` the `:fast` rounding option --- Project.toml | 2 - src/IntervalArithmetic.jl | 10 ++--- src/intervals/arithmetic/power.jl | 16 +++----- src/intervals/rounding.jl | 61 +++++++++++++++++++++++++++---- test/interval_tests/rounding.jl | 27 ++++++-------- 5 files changed, 72 insertions(+), 44 deletions(-) diff --git a/Project.toml b/Project.toml index 3ed005e78..1c0352a00 100644 --- a/Project.toml +++ b/Project.toml @@ -5,7 +5,6 @@ version = "0.21.2" [deps] CRlibm = "96374032-68de-5a5b-8d9e-752f78720389" -FastRounding = "fa42c844-2597-5d31-933b-ebd51ab2693f" RoundingEmulator = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" SetRounding = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" @@ -18,7 +17,6 @@ IntervalArithmeticDiffRulesExt = "DiffRules" [compat] CRlibm = "0.7, 0.8, 1" DiffRules = "1" -FastRounding = "0.2, 0.3" RoundingEmulator = "0.2" SetRounding = "0.2" julia = "1.9" diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index 56cb650fa..c5a321f1e 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -1,21 +1,17 @@ module IntervalArithmetic import CRlibm -import FastRounding import RoundingEmulator +import Base.MPFR using SetRounding -import Base.MPFR: MPFRRoundingMode -import Base.MPFR: MPFRRoundUp, MPFRRoundDown, MPFRRoundNearest, MPFRRoundToZero, MPFRRoundFromZero - function __init__() setrounding(BigFloat, RoundNearest) end -function Base.setrounding(f::Function, ::Type{Rational{T}}, rounding_mode::RoundingMode) where {T<:Integer} - return setrounding(f, float(Rational{T}), rounding_mode) -end +Base.setrounding(f::Function, ::Type{Rational{T}}, rounding_mode::RoundingMode) where {T<:Integer} = + setrounding(f, float(Rational{T}), rounding_mode) # diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 049942474..dcb6860f1 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -228,13 +228,7 @@ function rootn(x::BareInterval{T}, n::Integer) where {T<:NumTypes} x = intersect_interval(x, domain) isempty_interval(x) && return x - # no CRlibm version - N = convert(Culong, n) - lo = BigFloat() - hi = BigFloat() - ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), lo, inf(x), N, MPFRRoundDown) - ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFRRoundingMode), hi, sup(x), N, MPFRRoundUp) - return _unsafe_bareinterval(T, lo, hi) + return @round(T, rootn(inf(x), n), rootn(sup(x), n)) end function rootn(x::Interval{T}, n::Integer) where {T<:NumTypes} @@ -269,13 +263,13 @@ function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} xmig = mig(x) xmag = mag(x) return hull(zero(x), - _positive_power_by_squaring(_unsafe_bareinterval(T, xmig, xmig), n), - _positive_power_by_squaring(_unsafe_bareinterval(T, xmag, xmag), n)) + _positive_power_by_squaring(bareinterval(T, xmig, xmig), n), + _positive_power_by_squaring(bareinterval(T, xmag, xmag), n)) else xinf = inf(x) xsup = sup(x) - return hull(_positive_power_by_squaring(_unsafe_bareinterval(T, xinf, xinf), n), - _positive_power_by_squaring(_unsafe_bareinterval(T, xsup, xsup), n)) + return hull(_positive_power_by_squaring(bareinterval(T, xinf, xinf), n), + _positive_power_by_squaring(bareinterval(T, xsup, xsup), n)) end end diff --git a/src/intervals/rounding.jl b/src/intervals/rounding.jl index 58cca2a1c..6dff4a44c 100644 --- a/src/intervals/rounding.jl +++ b/src/intervals/rounding.jl @@ -26,7 +26,8 @@ _bigequiv(x::BigFloat) = x Interval rounding type. Available rounding types: -- `:tight`: rounding via `prevfloat` and `nextfloat` (cf. [RoundingEmulator.jl](https://github.com/matsueushi/RoundingEmulator.jl)). +- `:fast`: rounding via `prevfloat` and `nextfloat`. +- `:tight`: rounding via [RoundingEmulator.jl](https://github.com/matsueushi/RoundingEmulator.jl). - `:slow`: rounding via `setrounding`. - `:none`: no rounding (non-rigorous numerics). """ @@ -45,8 +46,10 @@ for (f, fname) ∈ ((:+, :add), (:-, :sub), (:*, :mul), (:/, :div)) $g(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = $g(IntervalRounding{:slow}(), x, y, r) - $g(::IntervalRounding{:fast}, x::T, y::T, r::RoundingMode) where {T<:Union{Float32,Float64}} = - FastRounding.$(Symbol(fname, "_round"))(x, y, r) + $g(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = + prevfloat($f(x, y)) + $g(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = + nextfloat($f(x, y)) $g(::IntervalRounding{:tight}, x::T, y::T, ::RoundingMode{:Down}) where {T<:Union{Float32,Float64}} = RoundingEmulator.$(Symbol(fname, :_down))(x, y) $g(::IntervalRounding{:tight}, x::T, y::T, ::RoundingMode{:Up}) where {T<:Union{Float32,Float64}} = @@ -71,6 +74,10 @@ _pow_round(x::Rational, n::Integer, ::RoundingMode) = ^(x, n) # exact operation _pow_round(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = _pow_round(IntervalRounding{:slow}(), x, y, r) +_pow_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = + prevfloat(^(x, y)) +_pow_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = + nextfloat(^(x, y)) function _pow_round(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} bigx = _bigequiv(x) bigy = _bigequiv(y) @@ -87,8 +94,10 @@ _inv_round(x::Rational, ::RoundingMode) = inv(x) # exact operation _inv_round(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = _inv_round(IntervalRounding{:slow}(), x, r) -_inv_round(::IntervalRounding{:fast}, x::Union{Float32,Float64}, r::RoundingMode) = - FastRounding.inv_round(x, r) +_inv_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = + prevfloat(inv(x)) +_inv_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = + nextfloat(inv(x)) _inv_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Down}) = RoundingEmulator.div_down(one(x), x) _inv_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Up}) = @@ -107,8 +116,10 @@ _sqrt_round(x::NumTypes, r::RoundingMode) = _sqrt_round(interval_rounding(), flo _sqrt_round(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = _sqrt_round(IntervalRounding{:slow}(), x, r) -_sqrt_round(::IntervalRounding{:fast}, x::Union{Float32,Float64}, r::RoundingMode) = - FastRounding.sqrt_round(x, r) +_sqrt_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = + prevfloat(sqrt(x)) +_sqrt_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = + nextfloat(sqrt(x)) _sqrt_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Down}) = RoundingEmulator.sqrt_down(x) _sqrt_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Up}) = @@ -123,10 +134,36 @@ _sqrt_round(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = sqrt( # +_rootn_round(x::NumTypes, n::Integer, r::RoundingMode) = _rootn_round(interval_rounding(), float(x), n, r) # rationals are converted to floats + +_rootn_round(::IntervalRounding, x::AbstractFloat, n::Integer, r::RoundingMode) = + _rootn_round(IntervalRounding{:slow}(), x, n, r) +_rootn_round(::IntervalRounding{:fast}, x::AbstractFloat, n::Integer, ::RoundingMode{:Down}) = + prevfloat(x^(1//n)) +_rootn_round(::IntervalRounding{:fast}, x::AbstractFloat, n::Integer, ::RoundingMode{:Up}) = + nextfloat(x^(1//n)) +function _rootn_round(::IntervalRounding{:slow}, x::AbstractFloat, n::Integer, ::RoundingMode{:Down}) + r = BigFloat() + ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFR.MPFRRoundingMode), r, x, convert(Culong, n), MPFR.MPFRRoundDown) + return r +end +function _rootn_round(::IntervalRounding{:slow}, x::AbstractFloat, n::Integer, ::RoundingMode{:Up}) + r = BigFloat() + ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFR.MPFRRoundingMode), r, x, convert(Culong, n), MPFR.MPFRRoundUp) + return r +end +_rootn_round(::IntervalRounding{:none}, x::AbstractFloat, n::Integer, ::RoundingMode) = x^(1//n) + +# + _atan_round(x::T, y::T, r::RoundingMode) where {T<:NumTypes} = _atan_round(interval_rounding(), promote(float(x), float(y))..., r) # rationals are converted to floats _atan_round(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = _atan_round(IntervalRounding{:slow}(), x, y, r) +_atan_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = + prevfloat(atan(x, y)) +_atan_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = + nextfloat(atan(x, y)) function _atan_round(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} bigx = _bigequiv(x) bigy = _bigequiv(y) @@ -145,6 +182,10 @@ for f ∈ [:cbrt, :exp2, :exp10, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, : $g(x::NumTypes, r::RoundingMode) = $g(interval_rounding(), float(x), r) # rationals are converted to floats $g(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = $g(IntervalRounding{:slow}(), x, r) + $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = + prevfloat($f(x)) + $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = + nextfloat($f(x)) function $g(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) bigx = _bigequiv(x) return setrounding(BigFloat, r) do @@ -165,8 +206,12 @@ for f ∈ CRlibm.functions $g(x::NumTypes, r::RoundingMode) = $g(interval_rounding(), float(x), r) # rationals are converted to floats $g(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = $g(IntervalRounding{:slow}(), x, r) + $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = + prevfloat($f(x)) + $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = + nextfloat($f(x)) $g(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) = CRlibm.$f(x, r) - $g(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = CRlibm.$f(x) + $g(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = $f(x) end end end diff --git a/test/interval_tests/rounding.jl b/test/interval_tests/rounding.jl index 4d1d4a34d..b6ce97856 100644 --- a/test/interval_tests/rounding.jl +++ b/test/interval_tests/rounding.jl @@ -1,23 +1,8 @@ x = interval(0.5) -@testset "IntervalRounding{:slow}" begin - IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:slow}() - @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) -end - -# @testset "IntervalRounding{:accurate}" begin -# IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:accurate}() -# @test isequal_interval(sin(x), interval(0.47942553860420295, 0.47942553860420306)) -# end - -@testset "No rounding" begin - IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:none}() - @test isequal_interval(sin(x), interval(0.479425538604203, 0.479425538604203)) -end - @testset "IntervalRounding{:fast}" begin IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:fast}() - @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) + @test isequal_interval(sin(x), interval(0.47942553860420295, 0.47942553860420306)) end @testset "IntervalRounding{:tight}" begin @@ -33,4 +18,14 @@ end @test isequal_interval(tiny / huge, interval(0, nextfloat(0.0))) end +@testset "IntervalRounding{:slow}" begin + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:slow}() + @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) +end + +@testset "No rounding" begin + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:none}() + @test isequal_interval(sin(x), interval(0.479425538604203, 0.479425538604203)) +end + IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:tight}() From de3a6df003df467d33deb00ea6980ece0b0931e9 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 13:36:53 +0100 Subject: [PATCH 22/54] Fix decoration for `^` and `fastpow` --- src/intervals/arithmetic/power.jl | 28 +++++++++++++++++----------- test/interval_tests/numeric.jl | 19 +++++++++---------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index dcb6860f1..e69759b28 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -60,7 +60,7 @@ function Base.:^(x::Interval, y::Interval) by = bareinterval(y) r = bx^by d = min(decoration(x), decoration(y), decoration(r)) - d = min(d, ifelse((in_interval(0, bx) & (inf(by) ≤ 0)) | ((inf(bx) < 0) & !isthininteger(by)), trv, d)) + d = min(d, ifelse((inf(bx) > 0) | ((inf(bx) == 0) & (inf(by) > 0)), d, trv)) t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end @@ -256,14 +256,25 @@ Base.hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) A faster implementation of `x^n`; the returned interval may be slightly large than `x^n`. """ +function fastpow(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isthininteger(y) && return fastpow(x, Integer(sup(y))) + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) + x = intersect_interval(x, domain) + isempty_interval(x) && return x + inf(y) > 0 == sup(x) && return zero(BareInterval{T}) + return exp(y * log(x)) +end + +fastpow(x::BareInterval, y::BareInterval) = fastpow(promote(x, y)...) + function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} n < 0 && return inv(fastpow(x, -n)) + domain = _unsafe_bareinterval(T, zero(T), typemax(T)) + x = intersect_interval(x, domain) isempty_interval(x) && return x if iseven(n) && in_interval(0, x) - xmig = mig(x) xmag = mag(x) - return hull(zero(x), - _positive_power_by_squaring(bareinterval(T, xmig, xmig), n), + return hull(zero(BareInterval{T}), _positive_power_by_squaring(bareinterval(T, xmag, xmag), n)) else xinf = inf(x) @@ -273,11 +284,6 @@ function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} end end -function fastpow(x::BareInterval, y::BareInterval) - isthininteger(y) && return fastpow(x, Integer(sup(y))) - return exp(y * log(x)) -end - fastpow(x::BareInterval{T}, y::S) where {T<:NumTypes,S<:Real} = fastpow(x, bareinterval(promote_numtype(T, S), y)) @@ -286,7 +292,7 @@ function fastpow(x::Interval, y::Interval) by = bareinterval(y) r = fastpow(bx, by) d = min(decoration(x), decoration(y), decoration(r)) - d = min(d, ifelse((in_interval(0, bx) & (inf(by) ≤ 0)) | ((inf(bx) < 0) & !isthininteger(by)), trv, d)) + d = min(d, ifelse((inf(bx) > 0) | ((inf(bx) == 0) & (inf(by) > 0)), d, trv)) t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end @@ -295,7 +301,7 @@ function fastpow(x::Interval, y::Real) bx = bareinterval(x) r = fastpow(bx, y) d = min(decoration(x), decoration(r)) - d = min(d, ifelse((in_interval(0, bx) & (y ≤ 0)) | ((inf(bx) < 0) & !isinteger(y)), trv, d)) + d = min(d, ifelse((inf(bx) > 0) | ((inf(bx) == 0) & (y > 0)), d, trv)) return _unsafe_interval(r, d, isguaranteed(x)) end diff --git a/test/interval_tests/numeric.jl b/test/interval_tests/numeric.jl index 159b22baa..98a6df65c 100644 --- a/test/interval_tests/numeric.jl +++ b/test/interval_tests/numeric.jl @@ -207,24 +207,23 @@ end @testset "Fast integer powers" begin x = interval(1, 2) - @test isequal_interval(fastpow(x, 2), fastpow(-x, 2)) - @test isequal_interval(fastpow(-x, 2), interval(1, 4)) - @test isequal_interval(fastpow(-x, 3), interval(-8.0, -1.0)) + @test isequal_interval(fastpow(x, 2), interval(1, 4)) + @test isequal_interval(fastpow(x, 3), interval(1, 8)) + @test isempty_interval(fastpow(-x, 3)) @test isequal_interval(fastpow(interval(-1, 2), 2), interval(0, 4)) - @test isequal_interval(fastpow(interval(-1, 2), 3), interval(-1, 8)) + @test isequal_interval(fastpow(interval(-1, 2), 3), interval(0, 8)) @test isequal_interval(fastpow(interval(-1, 2), 4), interval(0, 16)) - @test isequal_interval(fastpow(interval(-2, -1), interval(4)), interval(1, 16)) - @test isequal_interval(fastpow(interval(-2, -1), interval(-1, -1)), interval(-1, -0.5)) + @test isempty_interval(fastpow(interval(-2, -1), interval(-1, -1))) @test isequal_interval(fastpow(interval(BigFloat, -1, 2), 2), interval(0, 4)) - @test isequal_interval(fastpow(interval(BigFloat, -1, 2), 3), interval(-1, 8)) + @test isequal_interval(fastpow(interval(BigFloat, -1, 2), 3), interval(0, 8)) @test isequal_interval(fastpow(interval(BigFloat, 1, 2), 2), interval(1, 4)) - x = interval(pi) - @test issubset_interval(x^100, fastpow(x, 100)) - @test issubset_interval(x^50, fastpow(x, 50)) + x = interval(π) + @test isinterior(x^100, fastpow(x, 100)) + @test isinterior(x^50, fastpow(x, 50)) @test isinterior(x^50, fastpow(x, 50)) x = interval(2) From 1197c84c79f434729ceba01f82b912e6a3510b8c Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 13:41:29 +0100 Subject: [PATCH 23/54] Fix docstring --- src/intervals/arithmetic/power.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index e69759b28..4d22938d4 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -19,7 +19,7 @@ julia> bareinterval(2, 3) ^ bareinterval(2) BareInterval{Float64}(4.0, 9.0) julia> interval(-1, 1) ^ interval(3) -Interval{Float64}(0.0, 1.0, com) +Interval{Float64}(0.0, 1.0, trv) julia> interval(-1, 1) ^ interval(-3) Interval{Float64}(1.0, Inf, trv) From 40cdd2fd983efddc5bb24e3c9379bc6a10387b63 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 15:54:33 +0100 Subject: [PATCH 24/54] Cleanup --- src/intervals/arithmetic/power.jl | 92 +- test/ITF1788_tests/atan2.jl | 79 - test/ITF1788_tests/c-xsc.jl | 344 - test/ITF1788_tests/fi_lib.jl | 1741 ---- test/ITF1788_tests/ieee1788-constructors.jl | 107 - test/ITF1788_tests/ieee1788-exceptions.jl | 11 - test/ITF1788_tests/libieeep1788_bool.jl | 847 -- test/ITF1788_tests/libieeep1788_cancel.jl | 496 -- test/ITF1788_tests/libieeep1788_class.jl | 444 - test/ITF1788_tests/libieeep1788_elem.jl | 7876 ------------------ test/ITF1788_tests/libieeep1788_num.jl | 416 - test/ITF1788_tests/libieeep1788_overlap.jl | 160 - test/ITF1788_tests/libieeep1788_rec_bool.jl | 296 - test/ITF1788_tests/libieeep1788_reduction.jl | 42 - test/ITF1788_tests/libieeep1788_set.jl | 52 - test/ITF1788_tests/mpfi.jl | 2935 ------- test/generate_ITF1788.jl | 177 +- 17 files changed, 97 insertions(+), 16018 deletions(-) delete mode 100644 test/ITF1788_tests/atan2.jl delete mode 100644 test/ITF1788_tests/c-xsc.jl delete mode 100644 test/ITF1788_tests/fi_lib.jl delete mode 100644 test/ITF1788_tests/ieee1788-constructors.jl delete mode 100644 test/ITF1788_tests/ieee1788-exceptions.jl delete mode 100644 test/ITF1788_tests/libieeep1788_bool.jl delete mode 100644 test/ITF1788_tests/libieeep1788_cancel.jl delete mode 100644 test/ITF1788_tests/libieeep1788_class.jl delete mode 100644 test/ITF1788_tests/libieeep1788_elem.jl delete mode 100644 test/ITF1788_tests/libieeep1788_num.jl delete mode 100644 test/ITF1788_tests/libieeep1788_overlap.jl delete mode 100644 test/ITF1788_tests/libieeep1788_rec_bool.jl delete mode 100644 test/ITF1788_tests/libieeep1788_reduction.jl delete mode 100644 test/ITF1788_tests/libieeep1788_set.jl delete mode 100644 test/ITF1788_tests/mpfi.jl diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 4d22938d4..b75915946 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -76,67 +76,29 @@ Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n # helper functions for power function _pow(x::BareInterval{T}, y::T) where {T<:NumTypes} - if isthinzero(x) - y > 0 && return zero(BareInterval{T}) + # assume `inf(x) ≥ 0` and `!isempty_interval(x)` + if sup(x) == 0 + y > 0 && return x # zero(x) return emptyinterval(BareInterval{T}) + else + isinteger(y) && return pown(x, Integer(y)) + y == 0.5 && return sqrt(x) + lo = @round(T, inf(x)^y, inf(x)^y) + hi = @round(T, sup(x)^y, sup(x)^y) + return hull(lo, hi) end - - isinteger(y) && return pown(x, Integer(y)) - y == 0.5 && return sqrt(x) - - domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - x = intersect_interval(x, domain) - isempty_interval(x) && return x - - M = typemax(T) - MM = typemax(BareInterval{T}) - - lo = @round(T, inf(x)^y, inf(x)^y) - lo = (inf(lo) == M) ? MM : lo - - lo1 = @round(T, inf(x)^y, inf(x)^y) - lo1 = (inf(lo1) == M) ? MM : lo1 - - hi = @round(T, sup(x)^y, sup(x)^y) - hi = (inf(hi) == M) ? MM : hi - - hi1 = @round(T, sup(x)^y, sup(x)^y) - hi1 = (inf(hi1) == M) ? MM : hi1 - - lo = hull(lo, lo1) - hi = hull(hi, hi1) - - return hull(lo, hi) end function _pow(x::BareInterval{T}, y::Rational{S}) where {T<:NumTypes,S<:Integer} - p = y.num - q = y.den - - isempty_interval(x) && return x - iszero(y) && return one(x) - y < 0 && return inv(_pow(x, -y)) - - if isthinzero(x) - y > 0 && return x + # assume `inf(x) ≥ 0` and `!isempty_interval(x)` + if sup(x) == 0 + y > 0 && return x # zero(x) return emptyinterval(BareInterval{T}) + else + isinteger(y) && return pown(x, S(y)) + y == (1//2) && return sqrt(x) + return pown(rootn(x, y.den), y.num) end - - isinteger(y) && return pown(x, S(y)) - - y == (1//2) && return sqrt(x) - - lo, hi = bounds(x) - - if lo < 0 - return emptyinterval(BareInterval{T}) - end - - if lo < 0 && hi ≥ 0 - x = intersect_interval(x, _unsafe_bareinterval(T, zero(T), typemax(T))) - end - - return pown(rootn(x, q), p) end """ @@ -164,7 +126,6 @@ function pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} iszero(n) && return one(BareInterval{T}) n == 1 && return x (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{T}) - if isodd(n) isentire_interval(x) && return x if n > 0 @@ -257,12 +218,17 @@ A faster implementation of `x^n`; the returned interval may be slightly large than `x^n`. """ function fastpow(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} + isempty_interval(y) && return y isthininteger(y) && return fastpow(x, Integer(sup(y))) domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) isempty_interval(x) && return x - inf(y) > 0 == sup(x) && return zero(BareInterval{T}) - return exp(y * log(x)) + if sup(x) == 0 + sup(y) > 0 && return x # zero(x) + return emptyinterval(BareInterval{T}) + else + return exp(y * log(x)) + end end fastpow(x::BareInterval, y::BareInterval) = fastpow(promote(x, y)...) @@ -272,15 +238,11 @@ function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) isempty_interval(x) && return x - if iseven(n) && in_interval(0, x) - xmag = mag(x) - return hull(zero(BareInterval{T}), - _positive_power_by_squaring(bareinterval(T, xmag, xmag), n)) + if sup(x) == 0 + n > 0 && return x # zero(x) + return emptyinterval(BareInterval{T}) # n == 0 else - xinf = inf(x) - xsup = sup(x) - return hull(_positive_power_by_squaring(bareinterval(T, xinf, xinf), n), - _positive_power_by_squaring(bareinterval(T, xsup, xsup), n)) + return _positive_power_by_squaring(x, n) end end diff --git a/test/ITF1788_tests/atan2.jl b/test/ITF1788_tests/atan2.jl deleted file mode 100644 index 8bf1fd93c..000000000 --- a/test/ITF1788_tests/atan2.jl +++ /dev/null @@ -1,79 +0,0 @@ -@testset "minimal.atan2_test" begin - - @test atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0x1.921FB54442D18p1, 0x1.921FB54442D19p1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) - - @test atan(bareinterval(0.0, Inf), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p0) - - @test atan(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19p0, -0x1.921FB54442D18p0) - - @test atan(bareinterval(-0x1p-1022, 0.0), bareinterval(-0x1p-1022, -0x1p-1022)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) - - @test atan(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === bareinterval(0x1.2D97C7F3321D2p1, 0x1.2D97C7F3321D3p1) - - @test atan(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0)) === bareinterval(0x1.921FB54442D18p-1, 0x1.921FB54442D19p-1) - - @test atan(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === bareinterval(-0x1.921FB54442D19p-1, -0x1.921FB54442D18p-1) - - @test atan(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === bareinterval(-0x1.2D97C7F3321D3p1, -0x1.2D97C7F3321D2p1) - - @test atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, -0x1p-1022)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) - - @test atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(0x1p-1022, 0x1p-1022)) === bareinterval(-0x1.921FB54442D19p-1, +0x1.921FB54442D19p-1) - - @test atan(bareinterval(-0x1p-1022, -0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)) === bareinterval(-0x1.2D97C7F3321D3p1, -0x1.921FB54442D18p-1) - - @test atan(bareinterval(0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)) === bareinterval(0x1.921FB54442D18p-1, 0x1.2D97C7F3321D3p1) - - @test atan(bareinterval(-2.0, 2.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) - - @test atan(bareinterval(0.0, 2.0), bareinterval(-3.0, -1.0)) === bareinterval(0x1.0468A8ACE4DF6p1, 0x1.921FB54442D19p1) - - @test atan(bareinterval(1.0, 3.0), bareinterval(-3.0, -1.0)) === bareinterval(0x1.E47DF3D0DD4Dp0, 0x1.68F095FDF593Dp1) - - @test atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.56C6E7397F5AFp1) - - @test atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 2.0)) === bareinterval(0x1.DAC670561BB4Fp-2, 0x1.56C6E7397F5AFp1) - - @test atan(bareinterval(1.0, 3.0), bareinterval(0.0, 2.0)) === bareinterval(0x1.DAC670561BB4Fp-2, 0x1.921FB54442D19p0) - - @test atan(bareinterval(1.0, 3.0), bareinterval(1.0, 3.0)) === bareinterval(0x1.4978FA3269EE1p-2, 0x1.3FC176B7A856p0) - - @test atan(bareinterval(0.0, 2.0), bareinterval(1.0, 3.0)) === bareinterval(0x0p0, 0x1.1B6E192EBBE45p0) - - @test atan(bareinterval(-2.0, 2.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.1B6E192EBBE45p0, +0x1.1B6E192EBBE45p0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.1B6E192EBBE45p0, 0x0p0) - - @test atan(bareinterval(-3.0, -1.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.3FC176B7A856p0, -0x1.4978FA3269EE1p-2) - - @test atan(bareinterval(-3.0, -1.0), bareinterval(0.0, 2.0)) === bareinterval(-0x1.921FB54442D19p0, -0x1.DAC670561BB4Fp-2) - - @test atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-0x1.56C6E7397F5AFp1, -0x1.DAC670561BB4Fp-2) - - @test atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.56C6E7397F5AFp1, -0x1.921FB54442D18p0) - - @test atan(bareinterval(-3.0, -1.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.68F095FDF593Dp1, -0x1.E47DF3D0DD4Dp0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) - - @test atan(bareinterval(-5.0, 0.0), bareinterval(-5.0, 0.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) - - @test atan(bareinterval(0.0, 5.0), bareinterval(-5.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p1) - - @test atan(bareinterval(0.0, 5.0), bareinterval(0.0, 5.0)) === bareinterval(0x0p0, 0x1.921FB54442D19p0) - - @test atan(bareinterval(-5.0, 0.0), bareinterval(0.0, 5.0)) === bareinterval(-0x1.921FB54442D19p0, 0x0p0) - -end diff --git a/test/ITF1788_tests/c-xsc.jl b/test/ITF1788_tests/c-xsc.jl deleted file mode 100644 index 0de3c91ce..000000000 --- a/test/ITF1788_tests/c-xsc.jl +++ /dev/null @@ -1,344 +0,0 @@ -@testset "cxsc.intervaladdsub" begin - - @test +(bareinterval(10.0, 20.0), bareinterval(13.0, 17.0)) === bareinterval(23.0, 37.0) - - @test +(bareinterval(13.0, 17.0), bareinterval(10.0, 20.0)) === bareinterval(23.0, 37.0) - - @test -(bareinterval(10.0, 20.0), bareinterval(13.0, 16.0)) === bareinterval(-6.0, 7.0) - - @test -(bareinterval(13.0, 16.0), bareinterval(10.0, 20.0)) === bareinterval(-7.0, 6.0) - - @test -(bareinterval(10.0, 20.0)) === bareinterval(-20.0, -10.0) - - @test +(bareinterval(10.0, 20.0)) === bareinterval(10.0, 20.0) - -end -@testset "cxsc.intervalmuldiv" begin - - @test *(bareinterval(1.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(3.0, 8.0) - - @test *(bareinterval(-1.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(-4.0, 8.0) - - @test *(bareinterval(-2.0, 1.0), bareinterval(3.0, 4.0)) === bareinterval(-8.0, 4.0) - - @test *(bareinterval(-2.0, -1.0), bareinterval(3.0, 4.0)) === bareinterval(-8.0, -3.0) - - @test *(bareinterval(1.0, 2.0), bareinterval(-3.0, 4.0)) === bareinterval(-6.0, 8.0) - - @test *(bareinterval(-1.0, 2.0), bareinterval(-3.0, 4.0)) === bareinterval(-6.0, 8.0) - - @test *(bareinterval(-2.0, 1.0), bareinterval(-3.0, 4.0)) === bareinterval(-8.0, 6.0) - - @test *(bareinterval(-2.0, -1.0), bareinterval(-3.0, 4.0)) === bareinterval(-8.0, 6.0) - - @test *(bareinterval(1.0, 2.0), bareinterval(-4.0, 3.0)) === bareinterval(-8.0, 6.0) - - @test *(bareinterval(-1.0, 2.0), bareinterval(-4.0, 3.0)) === bareinterval(-8.0, 6.0) - - @test *(bareinterval(-2.0, 1.0), bareinterval(-4.0, 3.0)) === bareinterval(-6.0, 8.0) - - @test *(bareinterval(-2.0, -1.0), bareinterval(-4.0, 3.0)) === bareinterval(-6.0, 8.0) - - @test *(bareinterval(1.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-8.0, -3.0) - - @test *(bareinterval(-1.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-8.0, 4.0) - - @test *(bareinterval(-2.0, -1.0), bareinterval(-4.0, -3.0)) === bareinterval(3.0, 8.0) - - @test /(bareinterval(1.0, 2.0), bareinterval(4.0, 8.0)) === bareinterval(0.125, 0.5) - - @test /(bareinterval(-1.0, 2.0), bareinterval(4.0, 8.0)) === bareinterval(-0.25, 0.5) - - @test /(bareinterval(-2.0, 1.0), bareinterval(4.0, 8.0)) === bareinterval(-0.5, 0.25) - - @test /(bareinterval(-2.0, -1.0), bareinterval(4.0, 8.0)) === bareinterval(-0.5, -0.125) - - @test /(bareinterval(1.0, 2.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-1.0, 2.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-2.0, 1.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-2.0, -1.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(1.0, 2.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-1.0, 2.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-2.0, 1.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-2.0, -1.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(1.0, 2.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.5, -0.125) - - @test /(bareinterval(-1.0, 2.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.5, 0.25) - - @test /(bareinterval(-2.0, 1.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.25, 0.5) - - @test /(bareinterval(-2.0, -1.0), bareinterval(-8.0, -4.0)) === bareinterval(0.125, 0.5) - -end -@testset "cxsc.intervalsetops" begin - - @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-4.0, 2.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)) === bareinterval(-4.0, 2.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)) === bareinterval(-4.0, 4.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === bareinterval(-2.0, 2.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)) === bareinterval(-2.0, 4.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(-2.0, 4.0) - - @test hull(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) - - @test hull(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) - - @test hull(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 4.0) - - @test hull(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) - - @test hull(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) - - @test hull(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)) === bareinterval(-2.0, -1.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)) === bareinterval(-2.0, 2.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)) === bareinterval(1.0, 2.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, -1.0) - - @test intersect_interval(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) - - @test intersect_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test intersect_interval(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(1.0, 2.0) - - @test intersect_interval(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) - -end -@testset "cxsc.intervalmixsetops" begin - - @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)) === bareinterval(-4.0, 2.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)) === bareinterval(-2.0, 2.0) - - @test hull(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)) === bareinterval(-2.0, 4.0) - - @test hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) - - @test hull(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) - - @test hull(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)) === bareinterval(1.0, 1.0) - - @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(1.0, 1.0) - - @test intersect_interval(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) - -end -@testset "cxsc.scalarmixsetops" begin - - @test hull(bareinterval(-2.0, -2.0), bareinterval(-4.0, -4.0)) === bareinterval(-4.0, -2.0) - - @test hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, -2.0) - - @test hull(bareinterval(-2.0, -2.0), bareinterval(2.0, 2.0)) === bareinterval(-2.0, 2.0) - - @test hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, -2.0)) === bareinterval(-4.0, -2.0) - - @test hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, -2.0) - - @test hull(bareinterval(2.0, 2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, 2.0) - -end -@testset "cxsc.intervalsetcompops" begin - - @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === false - - @test isinterior(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === true - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === false - - @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === false - - @test isinterior(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) === false - - @test isinterior(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === true - - @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) === false - - @test isinterior(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) === false - - @test isinterior(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) === false - - @test isinterior(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) === false - - @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === true - - @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === true - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === true - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === true - - @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) === false - - @test issubset_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === true - - @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) === true - - @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) === true - - @test issubset_interval(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) === false - - @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) === false - - @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === true - - @test isequal_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === false - -end -@testset "cxsc.intervalscalarsetcompops" begin - - @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false - - @test isinterior(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false - - @test isinterior(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false - - @test isinterior(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === false - - @test isinterior(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) === false - - @test isinterior(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) === false - - @test isinterior(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) === true - - @test isinterior(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) === false - - @test isinterior(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) === false - - @test isinterior(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === false - - @test isinterior(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === false - - @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false - - @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false - - @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false - - @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true - - @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) === false - - @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) === true - - @test issubset_interval(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) === true - - @test issubset_interval(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) === true - - @test issubset_interval(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) === false - - @test issubset_interval(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === false - - @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true - - @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false - - @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false - - @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false - - @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true - -end -@testset "cxsc.intervalstdfunc" begin - - @test pown(bareinterval(11.0, 11.0), 2) === bareinterval(121.0, 121.0) - - @test pown(bareinterval(0.0, 0.0), 2) === bareinterval(0.0, 0.0) - - @test pown(bareinterval(-9.0, -9.0), 2) === bareinterval(81.0, 81.0) - - @test sqrt(bareinterval(121.0, 121.0)) === bareinterval(11.0, 11.0) - - @test sqrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test sqrt(bareinterval(81.0, 81.0)) === bareinterval(9.0, 9.0) - - @test rootn(bareinterval(27.0, 27.0), 3) === bareinterval(3.0, 3.0) - - @test rootn(bareinterval(0.0, 0.0), 4) === bareinterval(0.0, 0.0) - - @test rootn(bareinterval(1024.0, 1024.0), 10) === bareinterval(2.0, 2.0) - - @test ^(bareinterval(2.0, 2.0), bareinterval(2.0, 2.0)) === bareinterval(4.0, 4.0) - - @test ^(bareinterval(4.0, 4.0), bareinterval(5.0, 5.0)) === bareinterval(1024.0, 1024.0) - - @test ^(bareinterval(2.0, 2.0), bareinterval(3.0, 3.0)) === bareinterval(8.0, 8.0) - -end diff --git a/test/ITF1788_tests/fi_lib.jl b/test/ITF1788_tests/fi_lib.jl deleted file mode 100644 index c659bf418..000000000 --- a/test/ITF1788_tests/fi_lib.jl +++ /dev/null @@ -1,1741 +0,0 @@ -@testset "FI_LIB.addii" begin - - @test +(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test +(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x3.0000000000000P+0, 0x3.0000000000000P+0) - - @test +(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, -0x3.0000000000000P+0) - - @test +(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test +(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test +(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x3.F400000000000P-1064, 0x3.F400000000000P-1064) - - @test +(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test +(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(-0x3.F400000000000P-1064, -0x3.F400000000000P-1064) - - @test +(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test +(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020) - - @test +(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020) - - @test +(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) - - @test +(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) - - @test +(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0) - - @test +(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0) - - @test +(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0) - - @test +(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0) - - @test +(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) - - @test +(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) - -end -@testset "FI_LIB.subii" begin - - @test -(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test -(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) - - @test -(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) - - @test -(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0) - - @test -(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0) - - @test -(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test -(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4) - - @test -(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test -(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) - - @test -(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020) - - @test -(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020) - - @test -(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x2.0000000000000P+0, 0x0.0000000000000P+0) - - @test -(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0) - - @test -(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, -0x1.0000000000000P+0) - - @test -(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) - - @test -(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0) - - @test -(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x4.0000000000000P+0, -0x2.0000000000000P+0) - - @test -(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)) === bareinterval(-0xA.0000000000000P+0, -0x8.0000000000000P+0) - - @test -(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)) === bareinterval(0x8.0000000000000P+0, 0xA.0000000000000P+0) - -end -@testset "FI_LIB.mulii" begin - - @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) - - @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) - - @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) - - @test *(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)) === bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020) - - @test *(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)) === bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020) - - @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) - - @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) - - @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0) - - @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0) - - @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0) - - @test *(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0xF.0000000000000P+0, +0x1.4000000000000P+4) - - @test *(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, +0x8.0000000000000P+0)) === bareinterval(-0x2.8000000000000P+4, +0x1.0000000000000P+4) - - @test *(bareinterval(-0x2.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0x1.4000000000000P+4, +0xF.0000000000000P+0) - - @test *(bareinterval(-0x4.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0x1.4000000000000P+4, +0x1.0000000000000P+4) - - @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) - - @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) - - @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) - - @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) - - @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x6.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) - - @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) - - @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(-0x4.0000000000000P-1076, 0x0.0000000000000P+0) - - @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - -end -@testset "FI_LIB.divii" begin - - @test /(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) - - @test /(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) - - @test /(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test /(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) - - @test /(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) - - @test /(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) - - @test /(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020) - - @test /(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020) - - @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) - - @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) - - @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) - - @test /(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0) - - @test /(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4) - - @test /(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4) - - @test /(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4) - - @test /(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4) - - @test /(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0) - - @test /(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0) - - @test /(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0) - - @test /(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0) - - @test /(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0) - -end -@testset "FI_LIB.unary_functions" begin - - @test exp(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(0x0.0000000000000P+0, 0x2.BA43457B11D98P-4) - - @test exp(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA38P-4) - - @test exp(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(0x0.0000000000000P+0, 0x1.5D7A2F6655DFCP-848) - - @test exp(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(0x9.34C0766401B20P-472, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x2.B7E151628AED2P+0, 0x7.63992E35376B8P+0) - - @test exp(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(0x5.E2D58D8B3BCDCP-4, 0x7.63992E35376B8P+0) - - @test exp(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x1.B993FE00D5376P-8, 0xC.BED8666758578P-8) - - @test exp(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(0x2.2A555477F0396P-4, 0x1.D27660B11A9F0P+0) - - @test exp(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test exp(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x2.B7E151628AED4P+0) - - @test exp(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) - - @test exp(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x7.6322F8540CFB4P+0) - - @test exp(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)) === bareinterval(0x2.2A577ECE59DC6P-4, 0x1.0000000000000P+0) - - @test exp(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)) === bareinterval(0x2.2A55549A958EAP-4, 0x1.0000000000001P+0) - - @test exp2(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(0x0.0000000000000P+0, 0x4.B1AC6F8470484P-4) - - @test exp2(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFC00P-4) - - @test exp2(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(0x0.0000000000000P+0, 0x1.6FB78C613E5ECP-588) - - @test exp2(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(0x8.4EB038B9B8508P-328, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp2(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp2(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0) - - @test exp2(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(0x8.0000000000000P-4, 0x4.0000000000000P+0) - - @test exp2(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x8.0000000000000P-8, 0x2.0000000000000P-4) - - @test exp2(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(0x4.0000000000000P-4, 0x1.8406003B2AE5DP+0) - - @test exp2(bareinterval(0x4.4400000000000P-1068, 0x4.48CD100000000P-1052)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test exp2(bareinterval(-0x4.8D15088880000P-1040, +0x4.8D11554000000P-1048)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) - - @test exp2(bareinterval(0xD.0888D11000000P-1044, 0x1.000003443AAAAP+0)) === bareinterval(0x1.0000000000000P+0, 0x2.0000048742860P+0) - - @test exp2(bareinterval(-0xD.15550CC880000P-1040, +0x4.8D150CC000000P-1048)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) - - @test exp2(bareinterval(-0x4.8D159E0000000P-1048, +0x1.FFFFFF0999999P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x3.FFFFFD54D58B0P+0) - - @test exp2(bareinterval(-0x1.FFFFFFFFFFFFFP+0, +0x1.14C8911540000P-1040)) === bareinterval(0x4.0000000000000P-4, 0x1.0000000000001P+0) - - @test exp10(bareinterval(-0x2.8457BC029986EP+112, -0x1.7A77BFCCF5A9EP-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x6.05C0BB1BCB730P-220, -0x3.C5EC30FBB68C8P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x2.9B09919BF9D9EP+272, -0xE.20FF41BD18058P-204)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.1503444763FC5P-416, -0x2.075DF98B2478CP-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x4.ECBC855871080P+332, -0x1.3A01905E36F84P+0)) === bareinterval(0x0.0000000000000P+0, 0xF.317F8555628F0P-8) - - @test exp10(bareinterval(-0x7.32EDAB7F60A50P+236, -0x2.404E44C49C644P-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x6.5263CF84EF388P+172, -0x1.63A15E999EB64P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.4171976A1CA54P-288, -0x6.941F470A70074P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x4.69BB1D34B9570P-76, -0x7.78A1F475A306CP-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x2.E046DB554037CP+256, -0x2.6ABC15579B2B2P-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA70P-4) - - @test exp10(bareinterval(-0xE.33C49CF5B8790P+652, -0x8.297A99ED9ED08P+8)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test exp10(bareinterval(-0x1.7AAA15EBBD3F2P+8, -0x6.3E590E626451CP-172)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x2.8F9204BC4041EP+988, -0x6.ACFA418D8F92CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x2.B00450A48D586P-148, -0x2.BB570B356C6CAP-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.9E7DDBBE00F75P+352, -0xC.41329461A0C30P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.5BD629B25AA23P-236, -0x7.DEA605DEC97CCP-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x3.AE1DC13A652CAP+168, -0x6.65D7E0A247778P-56)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFFF8P-4) - - @test exp10(bareinterval(-0xA.27B4555158148P-68, -0x5.2B55801231EC8P-344)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.D68A6BA7E617FP+12, -0x6.36B661DCE2688P-236)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.98EF0C6A8BD66P+132, -0x1.EB0E1AB78F314P-480)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x1.C08152CC09416P+220, -0x7.4CF193131FA64P-192)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x6.F70E0DA4D2BA0P-140, -0x1.7036C237D5B00P-672)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0xF.CC937FA330E40P+648, -0x3.A0EE84451C92CP-324)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) - - @test exp10(bareinterval(-0x5.F775993940188P-120, -0x1.8BCA641025A83P-124)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test log(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0xB.47B530A1054D8P+4, +0x4.227AD8183FB70P+4) - - @test log(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x1.64CBA844FC0EAP+8, -0x9.968AD8B569FE0P+4) - - @test log(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0xA.426B5145A44A0P+4, +0xA.40B346F454218P+4) - - @test log(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x1.52D81024E4C23P+8, -0x1.3813C01ACD25CP+8) - - @test log(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4) - - @test log(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0x1.C9B8D4127E3DAP+4, +0xC.091AAD1207058P+4) - - @test log(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x1.49B9D16B7E46AP+8, +0x8.A1137BDE55CF8P+4) - - @test log(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x1.028323B4D95B4P+8, +0x6.21D80D9193AB8P+4) - - @test log(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0x2.142D983D15A28P+8, -0xE.2C8FA3F896A50P+4) - - @test log(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0x1.907255D3994FEP+8, -0x5.A87FCF5FBD800P+4) - - @test log(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4) - - @test log(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x4.425A8474E3980P+4, +0x8.DFF506FE0D9F8P+4) - - @test log(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x4.54169A4297548P+0, 0x1.9D179EA5204D0P+8) - - @test log(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0xE.CD14BEBE2CD68P+0, 0x1.B46DC0D02B874P+8) - - @test log(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0x7.9346BAB839B58P+4, -0xE.E33F2C933B990P+0) - - @test log(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0x1.83044F26AAA2BP+8, +0x2.805CE2DC91036P+8) - - @test log(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x1.4359ECD75CB6CP+8, -0x6.E715E1BA0E35CP+4) - - @test log(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x1.6F438EE9F6020P+8, +0xE.1A4A3523F2658P+4) - - @test log(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4) - - @test log(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0xE.1D2336A5BE1A8P+4, -0xA.649D44362A2F0P+4) - - @test log(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8) - - @test log(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x4.8FBAEF1169C24P+4, +0x5.F718BBF0CE2F8P+4) - - @test log(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0xF.4CD3094A3B4B8P+4, -0x3.439BFD719BAE8P+4) - - @test log(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0xA.CDC41AEE74318P+4, -0x1.681AFF89E9C89P+4) - - @test log(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x1.5ADD53379EF4DP+8, +0x3.36D2B121508A8P+4) - - @test log(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0x9.341D196AD2D58P+4, +0x8.5ADC069F618A8P+4) - - @test log(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0x1.DC410CBC8E1C8P+8, -0x6.4027B79D2EAA8P+4) - - @test log(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4) - - @test log(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0xE.9F20674285418P+4, +0x1.990C99B6124FEP+8) - - @test log(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0x7.A02728D7D3790P+4, -0x6.70DBA893A16E0P+4) - - @test log2(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0x1.04614E93EA794P+8, +0x5.F7104B04804E4P+4) - - @test log2(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x2.02BF4547CF74AP+8, -0xD.D527F669B7AA0P+4) - - @test log2(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0xE.CD1F394A2C268P+4, +0xE.CAA4613C31FD0P+4) - - @test log2(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x1.E8D93AC78E47CP+8, -0x1.C23B6E9F9BE73P+8) - - @test log2(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0xC.44A8D0A480900P+4, 0xE.30D042BD32E08P+4) - - @test log2(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0x2.945A6DE3564F2P+4, +0x1.15D18004DA527P+8) - - @test log2(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x1.DBB1A03AD9911P+8, +0xC.7305ECF8E75D8P+4) - - @test log2(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x1.74F450FB5F194P+8, +0x8.D8CE5C08208D0P+4) - - @test log2(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0x2.FFC54D5EF9E5AP+8, -0x1.472E83799CCFAP+8) - - @test log2(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0x2.41B8EC5041B68P+8, -0x8.29BE215800410P+4) - - @test log2(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x7.562AE05DF4698P+4, 0x1.15E7F7FA196AAP+8) - - @test log2(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x6.250C3695FCF20P+4, +0xC.CDBDC5938D560P+4) - - @test log2(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x6.3EA22BED11920P+0, 0x2.53F7565A6FA4CP+8) - - @test log2(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x1.55A7D090E9BC4P+4, 0x2.75A230A6EF148P+8) - - @test log2(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0xA.EDC8C6AE09A00P+4, -0x1.57A778189781EP+4) - - @test log2(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0x2.2E58E661BEF52P+8, +0x3.9BD9297418726P+8) - - @test log2(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x1.D27F4D5811EC0P+8, -0x9.F55D8E4A51F88P+4) - - @test log2(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x2.11D98CE9F01E8P+8, +0x1.4588C1B9F05FCP+8) - - @test log2(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x9.247C4A0D6A240P+4, 0xC.5C40234316DE0P+4) - - @test log2(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0x1.45CA7D7508D73P+8, -0xE.FE7480A8A6A70P+4) - - @test log2(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x1.6B54440063A2FP+8, 0x2.0FF6AC0A1DF08P+8) - - @test log2(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x6.94ADB7A807630P+4, +0x8.9B227CD69B7B0P+4) - - @test log2(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0x1.612C877FDEFC9P+8, -0x4.B58789B7D2AB8P+4) - - @test log2(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0xF.96282D809EDE0P+4, -0x2.0785B9A270C10P+4) - - @test log2(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x1.F46B75E4932F4P+8, +0x4.A3152AC221298P+4) - - @test log2(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0xD.47274C2E0B298P+4, +0xC.0DB8D252704A8P+4) - - @test log2(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0x2.AF16E4D3D6128P+8, -0x9.048930492A7A0P+4) - - @test log2(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0xC.1866CEA5B0408P+4, 0x1.0545D0C4DA7BAP+8) - - @test log2(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0x1.51830AD8B30FCP+8, +0x2.4E221EC1DB53EP+8) - - @test log2(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0xB.005C8501548A8P+4, -0x9.4ACCA02A24828P+4) - - @test log10(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0x4.E61D94C4C8D58P+4, +0x1.CBB1247192AE0P+4) - - @test log10(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x9.AF44F24283358P+4, -0x4.29FE8451F9E24P+4) - - @test log10(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0x4.74A3ADB971C48P+4, +0x4.73E4925024C64P+4) - - @test log10(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x9.32877CA0160B8P+4, -0x8.7888BDDBCE5D0P+4) - - @test log10(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x3.B16EC52507DF2P+4, 0x4.4595F97548968P+4) - - @test log10(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0xC.6C93FFEF64F78P+0, +0x5.3A1B471A21FF4P+4) - - @test log10(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x8.F32B7DBB21008P+4, +0x3.BF63BA7A3C658P+4) - - @test log10(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x7.0453C2F061648P+4, +0x2.A9C64A16830FCP+4) - - @test log10(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0xE.71F3C5029D848P+4, -0x6.27DD331C437F0P+4) - - @test log10(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0xA.DE968FD95ABE0P+4, -0x2.7513429684674P+4) - - @test log10(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x2.35627EFD00A60P+4, 0x5.3A877F4AD58E8P+4) - - @test log10(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x1.D988D7EBC5AE3P+4, +0x3.DAB2CD7F2625EP+4) - - @test log10(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x1.E13C93CF0C5D8P+0, 0xB.367584AC914D0P+4) - - @test log10(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x6.6D93B54D66420P+0, 0xB.D89E0CA927598P+4) - - @test log10(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0x3.4A378CAAD54DAP+4, -0x6.773414D886C14P+0) - - @test log10(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0xA.8144B5B8F5DD8P+4, +0x1.161B25DAC86ECP+8) - - @test log10(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x8.C6DFF01C76970P+4, -0x2.FF6F7B088B0CCP+4) - - @test log10(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x9.F802CE339E840P+4, +0x6.1FEDD0FB88D78P+4) - - @test log10(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x2.C08E6C63F32E4P+4, 0x3.B888C99289754P+4) - - @test log10(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0x6.212A6B69124F0P+4, -0x4.837D7868C93BCP+4) - - @test log10(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x6.D5F7B5F14DD48P+4, 0x9.EEED0801EA480P+4) - - @test log10(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x1.FB238786D64F9P+4, +0x2.9735AA99F42AAP+4) - - @test log10(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0x6.A50E2200DFF14P+4, -0x1.6AE688B7C8203P+4) - - @test log10(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0x4.B1282C68FE4F8P+4, -0x9.C644DFB9EE3E0P+0) - - @test log10(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x9.6A430336AD680P+4, +0x1.6558F570C1420P+4) - - @test log10(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0x3.FF3F46384E0E2P+4, +0x3.A0E51611FF75EP+4) - - @test log10(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0xC.ED5A39E5D4878P+4, -0x2.B6F044CDE4A0CP+4) - - @test log10(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x3.A41C190FE9E7AP+4, 0x4.EA6A3021E4FB8P+4) - - @test log10(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0x6.599E84FEF71BCP+4, +0xB.1A5D77BC55F98P+4) - - @test log10(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0x3.4FCF2BC10B840P+4, -0x2.CC1706E0167D2P+4) - - @test sin(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)) === bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F10P-944) - - @test sin(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)) === bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FE8P-624) - - @test sin(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) - - @test sin(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) === bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588) - - @test sin(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)) === bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025104P-564) - - @test sin(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)) === bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4DEP-412) - - @test sin(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)) === bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C80P-792) - - @test sin(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)) === bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301854P-204) - - @test sin(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)) === bareinterval(0xF.4077C7E8CD698P-268, 0x3.753426098AC5AP-80) - - @test sin(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)) === bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05AP-916) - - @test sin(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)) === bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE491D517170P-16) - - @test sin(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)) === bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B6P-576) - - @test sin(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) === bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388) - - @test sin(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)) === bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DCFF7D4P-20) - - @test sin(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)) === bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D50EP-836) - - @test sin(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)) === bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99665P-760) - - @test sin(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)) === bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0664P-780) - - @test sin(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) === bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780) - - @test sin(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) === bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664) - - @test sin(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)) === bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106CP-548) - - @test sin(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)) === bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF502P-1008) - - @test sin(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) === bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740) - - @test sin(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)) === bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E4P-928) - - @test sin(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)) === bareinterval(0x1.455801D3D2B62P-704, 0x3.A4C915783D07AP-28) - - @test sin(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) === bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772) - - @test sin(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)) === bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F44P-540) - - @test sin(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)) === bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756420P-496) - - @test sin(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)) === bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F4P-876) - - @test sin(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) === bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608) - - @test sin(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)) === bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B78P-432) - - @test cos(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) - - @test cos(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)) === bareinterval(0xF.FFFFF9AB27E58P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)) === bareinterval(0xF.FFFFFFFF231A0P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test cos(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tan(bareinterval(0x4.6AF931A62EB70P+4, 0x4.6C0D89ACF83F0P+4)) === bareinterval(-0x4.2B94A5B864748P+16, -0xE.CC7EFFC39BBE8P+0) - - @test tan(bareinterval(0x9.B824319678E98P+4, 0x9.B8365416B3188P+4)) === bareinterval(-0x9.517610C9FF4F0P+28, -0xE.1DCEBD0ABA128P+4) - - @test tan(bareinterval(0xE.231D6DE6B2910P+0, 0xE.232155989FD58P+0)) === bareinterval(-0x1.1A74CC770CA81P+20, -0x4.09E5FC000B430P+12) - - @test tan(bareinterval(0x3.A1E994576AF38P+4, 0x3.A1F62CB3D8B0CP+4)) === bareinterval(-0x3.EDBBE63A85A20P+12, -0x1.3EC2E09B0B82DP+8) - - @test tan(bareinterval(0x4.504512C674C88P+8, 0x4.5045147DF4570P+8)) === bareinterval(-0xC.5E819F2BCA708P+28, -0x9.51D20751384C0P+12) - - @test tan(bareinterval(0x7.DA9E8C267B000P+0, 0xA.CCC7028A13E50P+0)) === bareinterval(-0x8.CE26DA7B8CCA8P+20, +0x5.0BA299C8F763CP+0) - - @test tan(bareinterval(0xC.CA9E956E09870P+12, 0xC.CA9FEB35E8D28P+12)) === bareinterval(-0x9.40D68D3420248P+16, -0xB.F4CB43C962B98P+0) - - @test tan(bareinterval(0x2.F6B1D30E1AC2CP+8, 0x2.F6B1EAD90ED6EP+8)) === bareinterval(-0x1.1E211833A60A2P+20, -0xA.BBFD5C235E8E8P+8) - - @test tan(bareinterval(0xB.C33774AC8C510P+8, 0xB.C3378F9640B80P+8)) === bareinterval(-0x3.B8E9A3359EA76P+12, -0x8.33C065B080F78P+8) - - @test tan(bareinterval(0x4.B65F2027400ECP+0, 0x4.B65F690A4503CP+0)) === bareinterval(-0x2.D46AD27DDB548P+24, -0x3.7ECF31F99ADC4P+16) - - @test tan(bareinterval(0x3.C60A2C774D8A6P+8, 0x3.C60A76B28E42CP+8)) === bareinterval(-0x3.28E3C44C11B44P+24, -0x3.72D85B31BD660P+8) - - @test tan(bareinterval(0x7.DA9E8A5DF3B7CP+0, 0x7.DAA9CFE45466CP+0)) === bareinterval(-0x1.D9B11082E8FC3P+28, -0x1.6B6333E88C1DFP+12) - - @test tan(bareinterval(0x3.A1E953315B022P+4, 0x3.A3624FC9B84C0P+4)) === bareinterval(-0x4.91A5298A762FCP+24, -0xA.D59BACA695F48P+0) - - @test tan(bareinterval(0x7.DA9E8AB1B7B7CP+0, 0x8.E4A2BCBB988B0P+0)) === bareinterval(-0x2.C52AD8545AC54P+24, -0x9.691CCDB9751E8P-4) - - @test tan(bareinterval(0x5.48783C12B018CP+8, 0x5.487863A8A0C78P+8)) === bareinterval(-0x4.7465D978FF1E8P+4, -0x4.455187267B294P+4) - - @test tan(bareinterval(0x1.AB41B772619C2P+4, 0x1.AB96C295E1A23P+4)) === bareinterval(-0x2.55DE9F429F276P+16, -0x3.02439C1296068P+4) - - @test tan(bareinterval(0x1.87E20C8B7CCC1P+16, 0x1.87E20E060934FP+16)) === bareinterval(-0x7.5F7BB0C55311CP+28, -0xA.D1F5D5F3730E8P+4) - - @test tan(bareinterval(0x2.5BA5629043048P+16, 0x2.5BA5A6106DDF4P+16)) === bareinterval(-0x4.BDE3C915168D8P+4, -0x3.84ED584601B4CP+0) - - @test tan(bareinterval(0x1.A9AF913EE27CFP+8, 0x1.A9AFA6D06E549P+8)) === bareinterval(-0x2.CB455269CB954P+16, -0xB.ACE6E2EAA9098P+8) - - @test tan(bareinterval(0x7.64CF403A51948P+8, 0x7.64D139F1912E4P+8)) === bareinterval(-0x5.38F704820A47CP+28, -0x8.19686283B81E8P+4) - - @test tan(bareinterval(0x4.1437B08F8BA70P+16, 0x4.1439A27E86D50P+16)) === bareinterval(-0x1.3ADB30F7A9B56P+24, +0x6.48C7464A8F9A0P-4) - - @test tan(bareinterval(0x2.74518B3BAFB7CP+4, 0x2.74518DE5A60C0P+4)) === bareinterval(-0xF.8E3A10DB36640P+24, -0x5.FF456443FD8B8P+16) - - @test tan(bareinterval(0x1.DD85A7816A0FFP+4, 0x1.DD89849DFDF09P+4)) === bareinterval(-0x3.FA5C8BD1A67ECP+20, -0x4.23D96B0387510P+8) - - @test tan(bareinterval(0x1.AB41B29964887P+4, 0x1.B5CBD4ED0D1DDP+4)) === bareinterval(-0x7.FC8B577B97310P+16, -0x1.4AB8A7BB81552P+0) - - @test tan(bareinterval(0x1.19454E95BC804P+12, 0x1.194551E9AD95AP+12)) === bareinterval(-0x1.2A53ECF4C9B1AP+12, -0x3.D27F074C2DA94P+8) - - @test tan(bareinterval(0x4.C4823D2C30D00P+8, 0x4.C482DEAE395CCP+8)) === bareinterval(-0x7.F7B434A3F3544P+28, -0x1.95C659F53B09BP+8) - - @test tan(bareinterval(0x1.DD85BAAB9BAF9P+4, 0x1.DD8660423BAACP+4)) === bareinterval(-0xD.2F5338751C9C8P+12, -0x1.623D682415BE0P+12) - - @test tan(bareinterval(0x2.F798BB3536690P+16, 0x2.F79A363308C32P+16)) === bareinterval(-0x2.F8C1AC15A9CCEP+16, -0x1.731B7ACF94603P-4) - - @test tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.78FDB9F143616P+4)) === bareinterval(-0xC.9CFD638FE0A18P+24, -0xC.9CFD638FE0A10P+24) - - @test tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.79367E02D4EAAP+4)) === bareinterval(-0xC.9CFD638FE0A18P+24, -0x4.826BF805C4E68P+4) - - @test cot(bareinterval(0x4.51D73651EA89CP+4, 0x4.52EB8E58B411CP+4)) === bareinterval(0xE.CC7EFFC39DE08P+0, 0x4.2B94A5E391E20P+16) - - @test cot(bareinterval(0x9.9F02364234BC8P+4, 0x9.9F1458C26EEB8P+4)) === bareinterval(0xE.1DCEBD0AA72D0P+4, 0x9.516DD4FA21CF0P+28) - - @test cot(bareinterval(0xC.90FDB8A26FBF8P+0, 0xC.9101A0545D040P+0)) === bareinterval(0x4.09E5FC0006C38P+12, 0x1.1A74CC76B6B71P+20) - - @test cot(bareinterval(0x3.88C7990326C68P+4, 0x3.88D4315F9483CP+4)) === bareinterval(0x1.3EC2E09B0928AP+8, 0x3.EDBBE6390EF44P+12) - - @test cot(bareinterval(0x4.4EB2F3113085CP+8, 0x4.4EB2F4C8B0144P+8)) === bareinterval(0x9.51D206F220E70P+12, 0xC.5DDA26E3680B8P+28) - - @test cot(bareinterval(0x6.487ED6E2382ECP+0, 0x9.3AA74D45D1138P+0)) === bareinterval(-0x5.0BA299C8F7644P+0, +0x8.CE26D93009840P+20) - - @test cot(bareinterval(0xC.CA857372B5428P+12, 0xC.CA86C93A948E0P+12)) === bareinterval(0xB.F4CB43CC4C9E8P+0, 0x9.40D848DDFC130P+16) - - @test cot(bareinterval(0x2.F51FB358D6800P+8, 0x2.F51FCB23CA942P+8)) === bareinterval(0xA.BBFD5C1B7C1D8P+8, 0x1.1E2116D584957P+20) - - @test cot(bareinterval(0xB.C1A554F7480E0P+8, 0xB.C1A56FE0FC750P+8)) === bareinterval(0x8.33C065BCB81C8P+8, 0x3.B8E9A35DDF6BCP+12) - - @test cot(bareinterval(0x3.243F6AE2FD3D8P+0, 0x3.243FB3C602324P+0)) === bareinterval(0x3.7ECF31F964F42P+16, 0x2.D46AD05A0B746P+24) - - @test cot(bareinterval(0x3.C4780CC209478P+8, 0x3.C47856FD49FFEP+8)) === bareinterval(0x3.72D85B3269A44P+8, 0x3.28E454E439A90P+24) - - @test cot(bareinterval(0x6.487ED519B0E68P+0, 0x6.488A1AA011958P+0)) === bareinterval(0x1.6B6333E883806P+12, 0x1.D9B101DF34E20P+28) - - @test cot(bareinterval(0x3.88C757DD16D52P+4, 0x3.8A405475741F0P+4)) === bareinterval(0xA.D59BACA695410P+0, 0x4.91A509DE53224P+24) - - @test cot(bareinterval(0x6.487ED56D74E68P+0, 0x7.5283077755B9CP+0)) === bareinterval(0x9.691CCDB975190P-4, 0x2.C52AD6475D346P+24) - - @test cot(bareinterval(0x5.46E61C5D6BD60P+8, 0x5.46E643F35C84CP+8)) === bareinterval(0x4.4551872667304P+4, 0x4.7465D978E9638P+4) - - @test cot(bareinterval(0x1.921FBC1E1D6F1P+4, 0x1.9274C7419D752P+4)) === bareinterval(0x3.02439C1295BB8P+4, 0x2.55DE9F3FCCF28P+16) - - @test cot(bareinterval(0x1.87E07A6BC787DP+16, 0x1.87E07BE653F0BP+16)) === bareinterval(0xA.D1F5D5DED35E0P+4, 0x7.55F4ABD4357C8P+28) - - @test cot(bareinterval(0x2.5BA3D0708DC04P+16, 0x2.5BA413F0B89B0P+16)) === bareinterval(0x3.84ED5845DBFB2P+0, 0x4.BDE3C91120740P+4) - - @test cot(bareinterval(0x1.A81D71899E3A2P+8, 0x1.A81D871B2A11CP+8)) === bareinterval(0xB.ACE6E2E9DA370P+8, 0x2.CB45525DF368EP+16) - - @test cot(bareinterval(0x7.633D20850D51CP+8, 0x7.633F1A3C4CEB8P+8)) === bareinterval(0x8.19686283704C0P+4, 0x5.38D928BC4D11CP+28) - - @test cot(bareinterval(0x4.14361E6FD662CP+16, 0x4.1438105ED190CP+16)) === bareinterval(-0x6.48C7464AC3A74P-4, +0x1.3AD6ED9B4C193P+24) - - @test cot(bareinterval(0x2.5B2F8FE76B8ACP+4, 0x2.5B2F929161DF0P+4)) === bareinterval(0x5.FF45640D6BF8CP+16, 0xF.8E38A1B8F3CE0P+24) - - @test cot(bareinterval(0x1.C463AC2D25E2EP+4, 0x1.C4678949B9C38P+4)) === bareinterval(0x4.23D96B037E734P+8, 0x3.FA5C8B4EB13BAP+20) - - @test cot(bareinterval(0x1.921FB745205B6P+4, 0x1.9CA9D998C8F0CP+4)) === bareinterval(0x1.4AB8A7BB8153CP+0, 0x7.FC8B575A99618P+16) - - @test cot(bareinterval(0x1.192C2C9A683C1P+12, 0x1.192C2FEE59517P+12)) === bareinterval(0x3.D27F074ED4C1AP+8, 0x1.2A53ECF8BBB09P+12) - - @test cot(bareinterval(0x4.C2F01D76EC8D4P+8, 0x4.C2F0BEF8F51A0P+8)) === bareinterval(0x1.95C659F50F06FP+8, 0x7.F76EB663A7898P+28) - - @test cot(bareinterval(0x1.C463BF5757828P+4, 0x1.C46464EDF77DBP+4)) === bareinterval(0x1.623D682405E56P+12, 0xD.2F53386F7DF28P+12) - - @test cot(bareinterval(0x2.F79729158124CP+16, 0x2.F798A413537EEP+16)) === bareinterval(0x1.731B7ACF66E92P-4, 0x2.F8C19331ECBFCP+16) - - @test cot(bareinterval(0x3.371943E536E9EP+8, 0x3.371D0784693FAP+8)) === bareinterval(0x3.E06D09FC7DDC2P+4, 0x2.C1B5E6F32FDEEP+8) - - @test cot(bareinterval(0x1.5FDBBE9CFF344P+4, 0x1.601482AE90BD8P+4)) === bareinterval(0x4.826BF805C583CP+4, 0xC.9CFDB05DEF930P+24) - - @test asin(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680) - - @test asin(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640) - - @test asin(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764) - - @test asin(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976) - - @test asin(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612) - - @test asin(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536) - - @test asin(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008) - - @test asin(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796) - - @test asin(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976) - - @test asin(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948) - - @test asin(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796) - - @test asin(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556) - - @test asin(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268) - - @test asin(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232) - - @test asin(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456) - - @test asin(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C473266E68P-24) - - @test asin(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868) - - @test asin(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840) - - @test asin(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408) - - @test asin(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512) - - @test asin(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564) - - @test asin(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856) - - @test asin(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520) - - @test asin(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688) - - @test asin(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768) - - @test asin(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548) - - @test asin(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912) - - @test asin(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664) - - @test asin(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304) - - @test asin(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020) - - @test acos(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(0x1.921FA7FF368A5P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442FC7P+0) - - @test acos(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) - - @test atan(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) - - @test atan(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0xE.3062E34353278P-4, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) - - @test atan(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) - - @test atan(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0x1.920057E3A66F1P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0x1.921FB54442D13P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x1.9172A3136EB8DP+0) - - @test atan(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) - - @test atan(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) - - @test atan(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) - - @test atan(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x1.921700D14CFE5P+0) - - @test atan(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) - - @test atan(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x3.A0EE84451C92AP-324, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) - - @test acot(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x6.5B5B8AA0A6884P-116, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0x6.23FD67FFA09A4P-276, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0x6.70A3F8408ABF0P-296, 0xC.099B90EB0FA30P-256) - - @test acot(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0x3.3FB79247499D6P-336, 0xA.F1987100D9F08P-4) - - @test acot(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.38F904C465F6AP-240, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x2.87E9C09D98938P-176, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x8.3E949ACCB0F88P-316, 0x9.443E1DD721FE8P-184) - - @test acot(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x5.9028FAA64FBC8P-260, 0x1.921FB54442CF2P+0) - - @test acot(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0x1.2067D7F96AFE5P-656, 0x1.F5D609C62725FP-12) - - @test acot(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0x6.09322FE56F794P-692, 0x4.E7223FE097808P-52) - - @test acot(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0xA.D1230D418C238P-12, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.3F7C8D3DDFC74P-992, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0x9.E1C9C04F15630P-356, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x1.326922CF32B2EP-240, 0x2.7ECD966556E9CP-192) - - @test acot(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0x1.5F401B7014200P-568, 0x1.3A84A0CB7AC42P-428) - - @test acot(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x4.59002C447A028P-172, 0x1.921FB54442D18P+0) - - @test acot(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x8.B472F5D335130P-16, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0xA.042BAEF7787B8P-136, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x9.21EF65D6A5190P-224, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0x1.6F8ED062CAC9BP-328, 0x8.C7ADFB6368868P-256) - - @test acot(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x1.03413E0E19942P-652, 0x1.921FB54442D19P+0) - - @test acot(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test sinh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)) === bareinterval(-0x3.53DC9496DE0A2P-160, -0xC.287E0E10EC1B8P-960) - - @test sinh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)) === bareinterval(-0x1.CF3637DCBCC9BP-452, -0x5.E4846462FF33CP-636) - - @test sinh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)) === bareinterval(-0x1.32197576F3697P+0, -0x3.3D2CCEF698A5AP-972) - - @test sinh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)) === bareinterval(-0x1.494A24A7585D2P-380, +0x1.A0790A9E3013FP-604) - - @test sinh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)) === bareinterval(-0x2.B64BC5E999868P-368, -0xF.0633041110C28P-572) - - @test sinh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)) === bareinterval(-0x7.56F52F4FED858P-336, -0x4.F40A3934B3354P-416) - - @test sinh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)) === bareinterval(-0xA.0E33C2BA95C90P-48, -0x1.1927CA3847669P-808) - - @test sinh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)) === bareinterval(-0x1.1BBBD6FE8B951P-208, -0x1.463A32DBA649DP-220) - - @test sinh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)) === bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C4P-96) - - @test sinh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)) === bareinterval(-0x2.E7332C654ABB8P-384, -0x1.4363967367F55P-932) - - @test sinh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)) === bareinterval(-0x1.55EBB1D70A46FP-592, +0x4.733FA51477038P-20) - - @test sinh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)) === bareinterval(-0x1.1B4B8388A3D93P-340, -0xD.51D4A3CE4C490P-600) - - @test sinh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)) === bareinterval(-0x4.21B73745BC4C4P-952, +0xD.E40D83923C3E8P-404) - - @test sinh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)) === bareinterval(-0x1.73D14FA7DA1CCP-504, +0x1.5B3AFEEB17A86P-28) - - @test sinh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)) === bareinterval(-0x3.3CD34997DF068P-320, -0x1.606C7BCE75819P-852) - - @test sinh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)) === bareinterval(-0xC.5356A56E59750P-516, -0x1.33B9A95C55513P-772) - - @test sinh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)) === bareinterval(-0x5.FA887950A63D0P-588, -0x2.B707741B15478P-800) - - @test sinh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)) === bareinterval(-0x2.9476464AAE5BCP-548, +0x4.0734E17C026D8P-784) - - @test sinh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)) === bareinterval(-0xF.A46AC05B0EAB0P-68, +0x1.EFA89F34F4189P-684) - - @test sinh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)) === bareinterval(-0x9.9488CB205AFB0P-124, -0x2.940180D1AA2AEP-556) - - @test sinh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)) === bareinterval(-0x3.F9D9FE5792CE2P-912, -0x3.F00FC8CE24ADCP-1016) - - @test sinh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)) === bareinterval(-0x7.D5A28EF80D6B4P-176, +0xC.5D2B8FFCB2AE0P-756) - - @test sinh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)) === bareinterval(-0x5.B5DCAA821A62CP-784, -0x1.48532232C10FDP-940) - - @test sinh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)) === bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C4P-44) - - @test sinh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)) === bareinterval(-0x1.4AD562C0B5179P-380, +0x3.CEB34F40EA9BCP-792) - - @test sinh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)) === bareinterval(-0x7.ED02EF56E40B4P-92, -0x1.8C80275A696B0P-552) - - @test sinh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)) === bareinterval(-0x1.56FBE834FC823P-296, -0x3.66041558BACA8P-516) - - @test sinh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)) === bareinterval(-0x6.44524F6FCCF90P-340, -0x5.3E8ED576A1334P-896) - - @test sinh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)) === bareinterval(-0x8.92F5BEDA59C80P-268, +0x2.51B11C2EC76BCP-612) - - @test sinh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)) === bareinterval(-0x4.785C46BDC2A54P-244, -0x1.BA5C062DE8F00P-432) - - @test cosh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)) === bareinterval(0x1.0000000000000P+0, 0x1.8F0A39674B193P+0) - - @test cosh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000009E6FP+0) - - @test cosh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test cosh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test tanh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) - - @test tanh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) - - @test tanh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0xD.772335E624B98P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) - - @test tanh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) - - @test tanh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) - - @test tanh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) - - @test tanh(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) - - @test tanh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) - - @test tanh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x3.A0EE84451C92AP-324, 0x1.0000000000000P+0) - - @test tanh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) - - @test coth(bareinterval(0x5.9D7EEEA9B9EE0P-264, 0x3.F03D06503CAA2P+92)) === bareinterval(0x1.0000000000000P+0, 0x2.D97240157D2C8P+260) - - @test coth(bareinterval(-0x3.F03D06503CAA2P+92, -0x5.9D7EEEA9B9EE0P-264)) === bareinterval(-0x2.D97240157D2C8P+260, -0x1.0000000000000P+0) - - @test coth(bareinterval(0xB.6600F238FE060P-520, 0x1.BB63631B595B0P-224)) === bareinterval(0x9.3CEA8A8C76FC0P+220, 0x1.6758D7D180F69P+516) - - @test coth(bareinterval(-0x1.BB63631B595B0P-224, -0xB.6600F238FE060P-520)) === bareinterval(-0x1.6758D7D180F69P+516, -0x9.3CEA8A8C76FC0P+220) - - @test coth(bareinterval(0x4.DC89ED0034C6CP-240, 0xD.A1D118A3891E8P+232)) === bareinterval(0x1.0000000000000P+0, 0x3.4A8AB6B06359AP+236) - - @test coth(bareinterval(-0xD.A1D118A3891E8P+232, -0x4.DC89ED0034C6CP-240)) === bareinterval(-0x3.4A8AB6B06359AP+236, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x4.7F93F879A61A4P-492, 0x1.BDC6388153882P-452)) === bareinterval(0x9.3041F45FA3D78P+448, 0x3.8E8E46D77A03EP+488) - - @test coth(bareinterval(-0x1.BDC6388153882P-452, -0x4.7F93F879A61A4P-492)) === bareinterval(-0x3.8E8E46D77A03EP+488, -0x9.3041F45FA3D78P+448) - - @test coth(bareinterval(0xF.C7C928D9BB718P+192, 0x8.41A7954605A98P+224)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test coth(bareinterval(-0x8.41A7954605A98P+224, -0xF.C7C928D9BB718P+192)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x3.F07C0B8005270P-44, 0x2.DD3C8580FCBE0P+276)) === bareinterval(0x1.0000000000000P+0, 0x4.0FC1103283A70P+40) - - @test coth(bareinterval(-0x2.DD3C8580FCBE0P+276, -0x3.F07C0B8005270P-44)) === bareinterval(-0x4.0FC1103283A70P+40, -0x1.0000000000000P+0) - - @test coth(bareinterval(0xA.A97DED29FFF30P-480, 0x5.35EEA9C504860P+196)) === bareinterval(0x1.0000000000000P+0, 0x1.802A4F4EFE3B2P+476) - - @test coth(bareinterval(-0x5.35EEA9C504860P+196, -0xA.A97DED29FFF30P-480)) === bareinterval(-0x1.802A4F4EFE3B2P+476, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x3.CF4B727451402P-376, 0x1.759F6C21DAF9AP+140)) === bareinterval(0x1.0000000000000P+0, 0x4.33233873998C8P+372) - - @test coth(bareinterval(-0x1.759F6C21DAF9AP+140, -0x3.CF4B727451402P-376)) === bareinterval(-0x4.33233873998C8P+372, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x6.55376F4C1C50CP-772, 0x1.0120DD4EBC019P-328)) === bareinterval(0xF.EE06735C6D910P+324, 0x2.86C88F09A2CBEP+768) - - @test coth(bareinterval(-0x1.0120DD4EBC019P-328, -0x6.55376F4C1C50CP-772)) === bareinterval(-0x2.86C88F09A2CBEP+768, -0xF.EE06735C6D910P+324) - - @test coth(bareinterval(0x1.B63F1F7AED49EP-580, 0x2.245AF5BCB3356P-132)) === bareinterval(0x7.7838528478BF8P+128, 0x9.58A984202B8E8P+576) - - @test coth(bareinterval(-0x2.245AF5BCB3356P-132, -0x1.B63F1F7AED49EP-580)) === bareinterval(-0x9.58A984202B8E8P+576, -0x7.7838528478BF8P+128) - - @test coth(bareinterval(0x2.73B23CC8D8F76P+116, 0x1.F1E4F59403FC3P+276)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test coth(bareinterval(-0x1.F1E4F59403FC3P+276, -0x2.73B23CC8D8F76P+116)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x2.5B4F5F71CA5FCP-100, 0x1.5C244CE1AC6B3P+204)) === bareinterval(0x1.0000000000000P+0, 0x6.CA09D0DDC330CP+96) - - @test coth(bareinterval(-0x1.5C244CE1AC6B3P+204, -0x2.5B4F5F71CA5FCP-100)) === bareinterval(-0x6.CA09D0DDC330CP+96, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x1.4E7212DD5ABB9P+4, 0xD.9F35E61FDF7E8P+592)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test coth(bareinterval(-0xD.9F35E61FDF7E8P+592, -0x1.4E7212DD5ABB9P+4)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x1.271B33491E515P+20, 0x2.B3031CF3AF4ECP+628)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) - - @test coth(bareinterval(-0x2.B3031CF3AF4ECP+628, -0x1.271B33491E515P+20)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) - - @test coth(bareinterval(0x9.DB635E2FF52B0P-180, 0x2.AF04176524D06P-24)) === bareinterval(0x5.F646A7779F114P+20, 0x1.9F8AFAA8DBFF9P+176) - - @test coth(bareinterval(-0x2.AF04176524D06P-24, -0x9.DB635E2FF52B0P-180)) === bareinterval(-0x1.9F8AFAA8DBFF9P+176, -0x5.F646A7779F114P+20) - - @test asinh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x4.F3FA9CD060658P+4) - - @test asinh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) - - @test asinh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0xB.E2FD554E373E0P+4) - - @test asinh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) - - @test asinh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0xA.FA69A93525138P+4, 0xC.C008F1DBA8390P+4) - - @test asinh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0x1.086AFFAE230B6P+0, 0xE.8698B81E22AB0P+4) - - @test asinh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0xA.63FF3E7D6B730P+4) - - @test asinh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x7.9C22B35B1CEE0P+4) - - @test asinh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) - - @test asinh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) - - @test asinh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x7.E017D1421AED4P+4, 0xD.99E3CCF428D70P+4) - - @test asinh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0xB.331FC2BC20E70P+4) - - @test asinh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x6.A13A85E654788P+0) - - @test asinh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x2.AE767FF2330E0P+8) - - @test asinh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) - - @test asinh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0xF.529AF3B8107E0P+4) - - @test asinh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x8.4DCECB852E1E8P+4, 0xA.6DE648AA01A20P+4) - - @test asinh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) - - @test asinh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x7.671E008768830P+4) - - @test asinh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) - - @test asinh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x9.9E9F4F5A56088P+0) - - @test asinh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x5.CA82DEDB3D320P+4) - - @test asinh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x9.9BF0B87669850P+4) - - @test asinh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) - - @test asinh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0xA.FF762A8B30EA0P+4, 0xE.3AF0836B2F5B0P+4) - - @test asinh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) - - @test acosh(bareinterval(0x5.AD89AD14DDC74P+272, 0x2.6EC5D31670A5EP+860)) === bareinterval(0xB.EF73BF42C19D8P+4, 0x2.55B05064B6C2AP+8) - - @test acosh(bareinterval(0x4.A457C35864940P+344, 0x2.3ADEFB54BC048P+444)) === bareinterval(0xF.0ABC113DB1AF0P+4, 0x1.3540A29BC6B5EP+8) - - @test acosh(bareinterval(0x6.941C8B9506D90P+56, 0x3.B11D8083AE958P+744)) === bareinterval(0x2.964A9197BF832P+4, 0x2.05B3663FAE652P+8) - - @test acosh(bareinterval(0x1.09A940A083EE3P+132, 0x1.047FD514ADF08P+384)) === bareinterval(0x5.C39C22D7AA908P+4, 0x1.0AE10BDF7FE81P+8) - - @test acosh(bareinterval(0x7.710740B71A0D4P+256, 0xF.C0798D156BFA0P+560)) === bareinterval(0xB.42559B5CF34E8P+4, 0x1.879CCE87EE3A1P+8) - - @test acosh(bareinterval(0x2.3721A01F70456P+564, 0x9.C62BBF31FD290P+728)) === bareinterval(0x1.886C6F1DDDFF7P+8, 0x1.FB958311209BFP+8) - - @test acosh(bareinterval(0x6.F06D452BDCEF0P+44, 0x2.4825931366BBCP+520)) === bareinterval(0x2.120F95BD1F706P+4, 0x1.69F464545899AP+8) - - @test acosh(bareinterval(0x5.D326D4B0883D8P+76, 0x1.77175C5A113ADP+528)) === bareinterval(0x3.7226BF0157930P+4, 0x1.6F0E8DBF98710P+8) - - @test acosh(bareinterval(0x1.05ADFE119D4C2P+296, 0x2.6BCDF50E05E34P+1020)) === bareinterval(0xC.DE2FBE78FEC28P+4, 0x2.C49666459E1A4P+8) - - @test acosh(bareinterval(0xA.7F5D255B81268P+408, 0x1.9D1EDDC132B36P+864)) === bareinterval(0x1.1DD92C82827A1P+8, 0x2.580D06072BF20P+8) - - @test acosh(bareinterval(0xC.FBE4E2C6D0A80P+484, 0x4.DF75BDC17C330P+868)) === bareinterval(0x1.52BD770642386P+8, 0x2.5BEDB7E376E18P+8) - - @test acosh(bareinterval(0xB.241032F9700A0P+380, 0x1.04A65B06B2920P+640)) === bareinterval(0x1.0A7FEC190CCEEP+8, 0x1.BC5349B021815P+8) - - @test acosh(bareinterval(0x5.F207EAF5F8BB4P+608, 0xA.BC87C6F90AEE0P+648)) === bareinterval(0x1.A7E8C5069EA32P+8, 0x1.C439E5E8A511CP+8) - - @test acosh(bareinterval(0x1.BCD62C46ADFD7P+16, 0xA.CD289B35ECD00P+564)) === bareinterval(0xC.56062C0C41518P+0, 0x1.8A0201556D85AP+8) - - @test acosh(bareinterval(0x6.534BBA40A0B44P+224, 0x1.8DE35856E91FBP+452)) === bareinterval(0x9.DCD7CC0C7FFB8P+4, 0x1.3A6FC95911674P+8) - - @test acosh(bareinterval(0x2.C4F59012F4E48P+508, 0x1.1854765A9A205P+688)) === bareinterval(0x1.61D49DF92AB79P+8, 0x1.DDAB5081E5A0EP+8) - - @test acosh(bareinterval(0x8.6F890522C18B0P+44, 0x3.F87592D71E06CP+220)) === bareinterval(0x2.152F7D2DBF2BCP+4, 0x9.A907E7C701690P+4) - - @test acosh(bareinterval(0x9.2A9035A578970P+124, 0x1.35EE42DCA8B75P+608)) === bareinterval(0x5.8DBE2A7E96990P+4, 0x1.A6515B9ECF2F1P+8) - - @test acosh(bareinterval(0x5.2641115F86D38P+204, 0x7.BE33D080E6584P+252)) === bareinterval(0x8.FBBEB3B84C708P+4, 0xB.169BBE1313F68P+4) - - @test acosh(bareinterval(0xA.8746F72A1BD90P+72, 0x5.6ABE29A315520P+872)) === bareinterval(0x3.4F42DBFC0E4B4P+4, 0x2.5ECE9922C7894P+8) - - @test acosh(bareinterval(0xB.D0973FF704000P+224, 0x2.2FD9ABBD09D34P+976)) === bareinterval(0x9.E6D6EA0633070P+4, 0x2.A5FCBEDD15F2CP+8) - - @test acosh(bareinterval(0xA.C15D51DB7D9F0P+536, 0x1.7207A70831D7AP+796)) === bareinterval(0x1.76986E964982DP+8, 0x2.28CE847F69DCAP+8) - - @test acosh(bareinterval(0x4.280BEC7911E7CP+180, 0x6.B4F11E86ECA38P+792)) === bareinterval(0x7.EE261446DD5F8P+4, 0x2.27919F48F2C20P+8) - - @test acosh(bareinterval(0x3.4B22674960B0EP+468, 0xA.505A061DF4CD8P+808)) === bareinterval(0x1.4647297977E4EP+8, 0x2.3316ED57009D4P+8) - - @test acosh(bareinterval(0x2.383FC27D5E4E4P+756, 0x5.88E9C96565E54P+920)) === bareinterval(0x2.0D82822002358P+8, 0x2.801980299550CP+8) - - @test acosh(bareinterval(0x1.20E762C8AAB55P+72, 0x1.DBB7B8FE35847P+960)) === bareinterval(0x3.2B87D37C9EAFAP+4, 0x2.9ABBED2A77E62P+8) - - @test acosh(bareinterval(0x1.1265074E9E3DFP+792, 0x2.229B285A709C0P+920)) === bareinterval(0x2.25BC2FC876EBCP+8, 0x2.7F25A89FE16E6P+8) - - @test acosh(bareinterval(0x1.054DCDEF21349P+436, 0x1.618994D07D9A7P+636)) === bareinterval(0x1.2EED02D819A15P+8, 0x1.B9DB8970CC5ECP+8) - - @test acosh(bareinterval(0x4.5BE0D9A7FF0CCP+460, 0x2.6F2C55F16354AP+568)) === bareinterval(0x1.4103588C86AB6P+8, 0x1.8B4A572E180D4P+8) - - @test acosh(bareinterval(0x9.BD8B9A7FB6630P+80, 0x2.AD5F8458C8722P+768)) === bareinterval(0x3.A6BD416FCCF70P+4, 0x2.1603D4EDCB36AP+8) - - @test atanh(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680) - - @test atanh(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640) - - @test atanh(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764) - - @test atanh(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976) - - @test atanh(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612) - - @test atanh(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536) - - @test atanh(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008) - - @test atanh(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796) - - @test atanh(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976) - - @test atanh(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948) - - @test atanh(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796) - - @test atanh(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556) - - @test atanh(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268) - - @test atanh(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232) - - @test atanh(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456) - - @test atanh(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C4732686C0P-24) - - @test atanh(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868) - - @test atanh(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840) - - @test atanh(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408) - - @test atanh(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512) - - @test atanh(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564) - - @test atanh(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856) - - @test atanh(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520) - - @test atanh(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688) - - @test atanh(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768) - - @test atanh(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548) - - @test atanh(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912) - - @test atanh(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664) - - @test atanh(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304) - - @test atanh(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020) - - @test acoth(bareinterval(0x5.AD89AD14DDC78P+272, 0x2.6EC5D31670A60P+860)) === bareinterval(0x6.93B8C1A4ADA4CP-864, 0x2.D165505974CDCP-276) - - @test acoth(bareinterval(-0x2.6EC5D31670A60P+860, -0x5.AD89AD14DDC78P+272)) === bareinterval(-0x2.D165505974CDCP-276, -0x6.93B8C1A4ADA4CP-864) - - @test acoth(bareinterval(0x4.A457C35864944P+344, 0x2.3ADEFB54BC04AP+444)) === bareinterval(0x7.2CCCD8F3E4D84P-448, 0x3.726295CD6E028P-348) - - @test acoth(bareinterval(-0x2.3ADEFB54BC04AP+444, -0x4.A457C35864944P+344)) === bareinterval(-0x3.726295CD6E028P-348, -0x7.2CCCD8F3E4D84P-448) - - @test acoth(bareinterval(0x6.941C8B9506D98P+56, 0x3.B11D8083AE95CP+744)) === bareinterval(0x4.55780C09BB248P-748, 0x2.6EA0EC606D92CP-60) - - @test acoth(bareinterval(-0x3.B11D8083AE95CP+744, -0x6.941C8B9506D98P+56)) === bareinterval(-0x2.6EA0EC606D92CP-60, -0x4.55780C09BB248P-748) - - @test acoth(bareinterval(0x1.09A940A083EE4P+132, 0x1.047FD514ADF09P+384)) === bareinterval(0xF.B940FE60125C0P-388, 0xF.6B0B0DCA2D740P-136) - - @test acoth(bareinterval(-0x1.047FD514ADF09P+384, -0x1.09A940A083EE4P+132)) === bareinterval(-0xF.6B0B0DCA2D740P-136, -0xF.B940FE60125C0P-388) - - @test acoth(bareinterval(0x7.710740B71A0DCP+256, 0xF.C0798D156BFB0P+560)) === bareinterval(0x1.04086A3447A55P-564, 0x2.266CE7A905524P-260) - - @test acoth(bareinterval(-0xF.C0798D156BFB0P+560, -0x7.710740B71A0DCP+256)) === bareinterval(-0x2.266CE7A905524P-260, -0x1.04086A3447A55P-564) - - @test acoth(bareinterval(0x2.3721A01F70458P+564, 0x9.C62BBF31FD298P+728)) === bareinterval(0x1.A3110641EF7BCP-732, 0x7.38E97DB7ABD94P-568) - - @test acoth(bareinterval(-0x9.C62BBF31FD298P+728, -0x2.3721A01F70458P+564)) === bareinterval(-0x7.38E97DB7ABD94P-568, -0x1.A3110641EF7BCP-732) - - @test acoth(bareinterval(0x6.F06D452BDCEF8P+44, 0x2.4825931366BBEP+520)) === bareinterval(0x7.030E427A5F700P-524, 0x2.4E45C5E18EA0EP-48) - - @test acoth(bareinterval(-0x2.4825931366BBEP+520, -0x6.F06D452BDCEF8P+44)) === bareinterval(-0x2.4E45C5E18EA0EP-48, -0x7.030E427A5F700P-524) - - @test acoth(bareinterval(0x5.D326D4B0883DCP+76, 0x1.77175C5A113AEP+528)) === bareinterval(0xA.EB85BC1375C18P-532, 0x2.BF32E14DB1D26P-80) - - @test acoth(bareinterval(-0x1.77175C5A113AEP+528, -0x5.D326D4B0883DCP+76)) === bareinterval(-0x2.BF32E14DB1D26P-80, -0xA.EB85BC1375C18P-532) - - @test acoth(bareinterval(0x1.05ADFE119D4C3P+296, 0x2.6BCDF50E05E36P+1020)) === bareinterval(0x6.9BC8F6BE69A84P-1024, 0xF.A7190DED61120P-300) - - @test acoth(bareinterval(-0x2.6BCDF50E05E36P+1020, -0x1.05ADFE119D4C3P+296)) === bareinterval(-0xF.A7190DED61120P-300, -0x6.9BC8F6BE69A84P-1024) - - @test acoth(bareinterval(0xA.7F5D255B81270P+408, 0x1.9D1EDDC132B38P+864)) === bareinterval(0x9.EA2F16D4B51A8P-868, 0x1.8630054C790C6P-412) - - @test acoth(bareinterval(-0x1.9D1EDDC132B38P+864, -0xA.7F5D255B81270P+408)) === bareinterval(-0x1.8630054C790C6P-412, -0x9.EA2F16D4B51A8P-868) - - @test acoth(bareinterval(0xC.FBE4E2C6D0A90P+484, 0x4.DF75BDC17C334P+868)) === bareinterval(0x3.4891A2770DF7CP-872, 0x1.3B7754395DD7FP-488) - - @test acoth(bareinterval(-0x4.DF75BDC17C334P+868, -0xC.FBE4E2C6D0A90P+484)) === bareinterval(-0x1.3B7754395DD7FP-488, -0x3.4891A2770DF7CP-872) - - @test acoth(bareinterval(0xB.241032F9700A8P+380, 0x1.04A65B06B2921P+640)) === bareinterval(0xF.B6EE12E44E478P-644, 0x1.6FA7BD9AAC5D2P-384) - - @test acoth(bareinterval(-0x1.04A65B06B2921P+640, -0xB.241032F9700A8P+380)) === bareinterval(-0x1.6FA7BD9AAC5D2P-384, -0xF.B6EE12E44E478P-644) - - @test acoth(bareinterval(0x5.F207EAF5F8BB8P+608, 0xA.BC87C6F90AEE8P+648)) === bareinterval(0x1.7D8116060016CP-652, 0x2.B0EE9FA61C0DAP-612) - - @test acoth(bareinterval(-0xA.BC87C6F90AEE8P+648, -0x5.F207EAF5F8BB8P+608)) === bareinterval(-0x2.B0EE9FA61C0DAP-612, -0x1.7D8116060016CP-652) - - @test acoth(bareinterval(0x1.BCD62C46ADFD9P+16, 0xA.CD289B35ECD08P+564)) === bareinterval(0x1.7B35C74EEC020P-568, 0x9.35374E76B1BE8P-20) - - @test acoth(bareinterval(-0xA.CD289B35ECD08P+564, -0x1.BCD62C46ADFD9P+16)) === bareinterval(-0x9.35374E76B1BE8P-20, -0x1.7B35C74EEC020P-568) - - @test acoth(bareinterval(0x6.534BBA40A0B4CP+224, 0x1.8DE35856E91FDP+452)) === bareinterval(0xA.4B5AAEDFCE6A8P-456, 0x2.878CF52E5FBF8P-228) - - @test acoth(bareinterval(-0x1.8DE35856E91FDP+452, -0x6.534BBA40A0B4CP+224)) === bareinterval(-0x2.878CF52E5FBF8P-228, -0xA.4B5AAEDFCE6A8P-456) - - @test expm1(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(-0x1.0000000000000P+0, -0x1.B3E4076622F03P-232) - - @test expm1(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0506P-508) - - @test expm1(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(-0x1.0000000000000P+0, -0x1.5D74CFDA6B291P-200) - - @test expm1(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3470P-456) - - @test expm1(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(-0x1.0000000000000P+0, -0xD.45BCBA84EE268P-4) - - @test expm1(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(-0x1.0000000000000P+0, -0x4.F0F28370909F8P-440) - - @test expm1(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(-0x1.0000000000000P+0, -0x1.EB095183538C7P-344) - - @test expm1(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE88P-756) - - @test expm1(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357A8P-564) - - @test expm1(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(-0x1.0000000000000P+0, -0x5.CBE2BD423AF1CP-48) - - @test expm1(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4) - - @test expm1(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(-0x1.0000000000000P+0, -0x2.581DAD9AFE6DAP-172) - - @test expm1(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(-0x1.0000000000000P+0, -0x7.19390F862F498P-544) - - @test expm1(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57190P-440) - - @test expm1(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(-0x1.0000000000000P+0, -0xF.13E388B2165E8P-512) - - @test expm1(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED014P-316) - - @test expm1(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.B7E151628AED2P+0, 0x6.63992E35376B8P+0) - - @test expm1(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(-0xA.1D2A7274C4328P-4, +0x6.63992E35376B8P+0) - - @test expm1(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(-0xF.E466C01FF2AD0P-4, -0xF.341279998A7A8P-4) - - @test expm1(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(-0xD.D5AAAB880FC70P-4, +0xD.27660B11A9EF8P-4) - - @test expm1(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)) === bareinterval(0x4.0000000000000P-1076, 0x4.4444800000000P-1056) - - @test expm1(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)) === bareinterval(0x4.4440000000000P-1064, 0x1.B7E151628AED3P+0) - - @test expm1(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)) === bareinterval(-0x4.4444000000000P-1060, +0x4.4448000000000P-1060) - - @test expm1(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)) === bareinterval(-0x4.4400000000000P-1068, +0x6.6322F8540CFB4P+0) - - @test expm1(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)) === bareinterval(-0xD.D5A88131A6240P-4, -0x8.8888840000000P-1052) - - @test expm1(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)) === bareinterval(-0xD.D5AAAB656A718P-4, +0x8.CD11555800000P-1044) - - @test log1p(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(0xC.4B4A6EB6B3AE8P-264, 0x4.227AD8183FB70P+4) - - @test log1p(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(0x2.6213E21B14892P-516, 0x6.6606F0995E5F4P-224) - - @test log1p(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(0x9.0FF2CAA1B3040P-240, 0xA.40B346F454218P+4) - - @test log1p(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(0x8.E2ADA8DFBE930P-492, 0x3.67CB3BE0BB146P-452) - - @test log1p(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4) - - @test log1p(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(0x6.A000A1283845CP-44, 0xC.091AAD1207058P+4) - - @test log1p(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(0x1.3C84E4F9C80CDP-476, 0x8.A1137BDE55CF8P+4) - - @test log1p(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(0x8.41D2DB6D93540P-376, 0x6.21D80D9193AB8P+4) - - @test log1p(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(0x1.2C18FEEBCAEADP-768, 0x1.C369E759DF5E3P-328) - - @test log1p(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(0x4.D94E91619D3ECP-580, 0x2.9F6CAF6B5513EP-132) - - @test log1p(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4) - - @test log1p(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(0x3.36DE5C55594ECP-100, 0x8.DFF506FE0D9F8P+4) - - @test log1p(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x4.5771391F308D8P+0, 0x1.9D179EA5204D0P+8) - - @test log1p(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0xE.CD14C501247C0P+0, 0x1.B46DC0D02B874P+8) - - @test log1p(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(0x2.33950F38F830CP-176, 0x5.BE0377E504F78P-24) - - @test log1p(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(0x3.24F03DF33568AP-560, 0x2.805CE2DC91036P+8) - - @test log1p(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(0x2.D572639DC5FA6P-468, 0x1.95CF42AA171CDP-160) - - @test log1p(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(0x4.705A028302DACP-532, 0xE.1A4A3523F2658P+4) - - @test log1p(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4) - - @test log1p(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(0x4.9FA5A1E4DF73CP-328, 0x1.11B85141B78F6P-240) - - @test log1p(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8) - - @test log1p(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(0x6.88441038D56B4P-108, 0x5.F718BBF0CE2F8P+4) - - @test log1p(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(0x7.1761CAB055130P-356, 0x1.92EFD09488689P-76) - - @test log1p(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(0x6.2085E427413C4P-252, 0xB.8CDD3AFE235D0P-36) - - @test log1p(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(0xB.F5F1C0FA33970P-504, 0x3.36D2B121508A8P+4) - - @test log1p(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(0xB.BC7E37EB2D380P-216, 0x8.5ADC069F618A8P+4) - - @test log1p(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(0x1.E139DD116F867P-688, 0xD.2545346D68FD0P-148) - - @test log1p(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4) - - @test log1p(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(0x5.9C4642ED78BC4P-340, 0x1.990C99B6124FEP+8) - - @test log1p(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(0xF.C05EA810DFE80P-180, 0xA.05884FBED5F48P-152) - - @test sqrt(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(0x3.819C8C44FCAE8P-132, 0xD.2F2830FA93228P+44) - - @test sqrt(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(0x6.2CC8B5D1B7648P-260, 0x2.878F8E10E2752P-112) - - @test sqrt(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(0x3.02A74AB0BBF36P-120, 0x5.0979194446A10P+116) - - @test sqrt(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(0xB.EC63BFE10BCC8P-248, 0x7.61AC89CF17804P-228) - - @test sqrt(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x4.6CBEB2D8F6718P+96, 0x2.E0F32319AC30AP+112) - - @test sqrt(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(0xA.4BAEE7F482900P-24, 0x7.830C8D5A5F3D8P+136) - - @test sqrt(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(0x4.729F7C344CE30P-240, 0xC.14519D6697FF0P+96) - - @test sqrt(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(0x2.DF9F14A64C77AP-188, 0x6.D87D667089BD8P+68) - - @test sqrt(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(0x1.152C585EDDB6AP-384, 0x1.53F1A81CAA4A0P-164) - - @test sqrt(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(0x8.CEDC2135E05E8P-292, 0x6.7A5BEF2579C34P-68) - - @test sqrt(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x6.7722C88D985D8P+56, 0x7.BE7173245A668P+136) - - @test sqrt(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(0x7.2BE248A308D24P-52, 0x5.630224B50BCF8P+100) - - @test sqrt(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x8.B53B61217B4F8P+0, 0x3.F40FA54A699E2P+296) - - @test sqrt(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x6.64E1F64817930P+8, 0x7.0BBE006E8934CP+312) - - @test sqrt(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(0x1.7BD69462CDAD2P-88, 0x2.6573BFB248EF0P-12) - - @test sqrt(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(0x1.C5F168118C2B1P-280, 0x3.CB8CCAD62ED10P+460) - - @test sqrt(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(0x6.BBC8A036CC930P-236, 0x1.4250C275A7B2BP-80) - - @test sqrt(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(0x8.6D6D9A3EA2160P-268, 0x6.CEB17F56F1B50P+160) - - @test sqrt(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x2.343E215EB2264P+72, 0x7.603E67F0E1DD0P+96) - - @test sqrt(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(0x2.26777C4E368BEP-164, 0x1.08B63617A4210P-120) - - @test sqrt(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x3.2B934CDCC29E0P+180, 0xF.CC99981010AD0P+260) - - @test sqrt(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(0xA.392C9B2283838P-56, 0x1.CCC9C68E6B873P+68) - - @test sqrt(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(0xA.A6DE001E1A878P-180, 0x5.04B0B42B185F4P-40) - - @test sqrt(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(0x9.E6B17DD90B818P-128, 0xD.9821AE0A3F288P-20) - - @test sqrt(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(0x3.755B7F9B147FCP-252, 0x2.235AF64AA2532P+36) - - @test sqrt(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(0x3.6D0318CB65970P-108, 0x1.589B93C7CC280P+96) - - @test sqrt(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(0x1.5EFD65C23F515P-344, 0xE.80B36809CA340P-76) - - @test sqrt(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x1.B24CEBB3D4B84P+96, 0x6.37B4CD9068634P+128) - - @test sqrt(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(0x9.797C4D6802170P-172, 0x8.60D1F01F1A8D8P+292) - - @test sqrt(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(0xF.E00F72E6C82F8P-92, 0x3.2A6AD8ACFCBB0P-76) - - @test pown(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944), 2) === bareinterval(0x0.0000000000000P+0, 0x6.BFD4840B33478P-300) - - @test pown(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624), 2) === bareinterval(0x0.0000000000000P+0, 0x2.A05EA84E4893CP-872) - - @test pown(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960), 2) === bareinterval(0x0.0000000000000P+0, 0x1.D1A144EFBEB44P+12) - - @test pown(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588), 2) === bareinterval(0x0.0000000000000P+0, 0x2.8817BFAFBDF18P-744) - - @test pown(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564), 2) === bareinterval(0x0.0000000000000P+0, 0xB.051CC05C2EBE0P-712) - - @test pown(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412), 2) === bareinterval(0x4.5E83E96FF693CP-824, 0xA.548CA7F8C13A0P-660) - - @test pown(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792), 2) === bareinterval(0x0.0000000000000P+0, 0x1.6EBF489D48CA5P-80) - - @test pown(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204), 2) === bareinterval(0x8.C23056BA480A8P-408, 0x1.90CBA74D12CF4P-396) - - @test pown(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80), 2) === bareinterval(0xE.89E458947EFA8P-532, 0xB.F4E1999D73020P-160) - - @test pown(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916), 2) === bareinterval(0x0.0000000000000P+0, 0x8.8D07F2E827770P-748) - - @test pown(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16), 2) === bareinterval(0x0.0000000000000P+0, 0xC.A9B03500DD578P-28) - - @test pown(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576), 2) === bareinterval(0x0.0000000000000P+0, 0x5.F6582538F0F44P-668) - - @test pown(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388), 2) === bareinterval(0x0.0000000000000P+0, 0x2.52887FE100FF0P-772) - - @test pown(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20), 2) === bareinterval(0x0.0000000000000P+0, 0x1.B9CBC9B69E7BFP-36) - - @test pown(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836), 2) === bareinterval(0x0.0000000000000P+0, 0x4.377B251ABDCC0P-604) - - @test pown(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760), 2) === bareinterval(0x0.0000000000000P+0, 0x2.D668271745A42P-996) - - @test pown(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test pown(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test pown(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664), 2) === bareinterval(0x0.0000000000000P+0, 0x9.7A69470135FA8P-100) - - @test pown(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548), 2) === bareinterval(0x0.0000000000000P+0, 0x6.57CBD208B34ACP-244) - - @test pown(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test pown(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740), 2) === bareinterval(0x0.0000000000000P+0, 0x8.CC15E342FC8D8P-332) - - @test pown(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) - - @test pown(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28), 2) === bareinterval(0x0.0000000000000P+0, 0xD.46C8C24634FC8P-56) - - @test pown(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772), 2) === bareinterval(0x0.0000000000000P+0, 0x4.264E23607BEA8P-752) - - @test pown(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540), 2) === bareinterval(0x0.0000000000000P+0, 0x2.3A3F453ECAFB4P-168) - - @test pown(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496), 2) === bareinterval(0xE.FCF2D2F52B4C0P-992, 0x1.0FE5AD9038BC9P-548) - - @test pown(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876), 2) === bareinterval(0x0.0000000000000P+0, 0x3.ECDBE373EAC94P-652) - - @test pown(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608), 2) === bareinterval(0x0.0000000000000P+0, 0x9.29DBB2B42A988P-508) - - @test pown(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432), 2) === bareinterval(0xC.FE1B0DE21E568P-860, 0x8.B6138BE0C5B78P-468) - -end diff --git a/test/ITF1788_tests/ieee1788-constructors.jl b/test/ITF1788_tests/ieee1788-constructors.jl deleted file mode 100644 index cff337fbc..000000000 --- a/test/ITF1788_tests/ieee1788-constructors.jl +++ /dev/null @@ -1,107 +0,0 @@ -@testset "IEEE1788.a" begin - - @test bareinterval(-Inf,Inf) === entireinterval(BareInterval{Float64}) - -end -@testset "IEEE1788.b" begin - - @test parse(BareInterval{Float64}, "[1.2345]") === bareinterval(0x1.3C083126E978DP+0, 0x1.3C083126E978EP+0) - - @test parse(BareInterval{Float64}, "[1,+infinity]") === bareinterval(1.0, Inf) - - @test parse(Interval{Float64}, "[1,1e3]_com") === interval(bareinterval(1.0, 1000.0), com) - - @test parse(Interval{Float64}, "[1,1E3]_COM") === interval(bareinterval(1.0, 1000.0), com) - -end -@testset "IEEE1788.c" begin - - @test parse(BareInterval{Float64}, "[1.e-3, 1.1e-3]") === bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12) - - @test parse(BareInterval{Float64}, "[-0x1.3p-1, 2/3]") === bareinterval(-0x9.8000000000000P-4, +0xA.AAAAAAAAAAAB0P-4) - - @test parse(BareInterval{Float64}, "[3.56]") === bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8F5C28F5C28F6P+0) - - @test parse(BareInterval{Float64}, "3.56?1") === bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0) - - @test parse(BareInterval{Float64}, "3.56?1e2") === bareinterval(355.0, 357.0) - - @test parse(BareInterval{Float64}, "3.560?2") === bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0) - - @test parse(BareInterval{Float64}, "3.56?") === bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0) - - @test parse(BareInterval{Float64}, "3.560?2u") === bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0) - - @test parse(BareInterval{Float64}, "-10?") === bareinterval(-10.5, -9.5) - - @test parse(BareInterval{Float64}, "-10?u") === bareinterval(-10.0, -9.5) - - @test parse(BareInterval{Float64}, "-10?12") === bareinterval(-22.0, 2.0) - -end -@testset "IEEE1788.d" begin - - @test parse(BareInterval{Float64}, "[1.234e5,Inf]") === bareinterval(123400.0, Inf) - - @test parse(BareInterval{Float64}, "3.1416?1") === bareinterval(0x3.24395810624DCP+0, 0x3.24467381D7DC0P+0) - - @test parse(BareInterval{Float64}, "[Empty]") === emptyinterval(BareInterval{Float64}) - -end -@testset "IEEE1788.e" begin - - @test_logs (:warn,) @test isnai(interval(2,1)) - -end -@testset "IEEE1788.e" begin - - @test parse(Interval{Float64}, "[ ]") === interval(emptyinterval(BareInterval{Float64}), trv) - - @test parse(Interval{Float64}, "[entire]") === interval(bareinterval(-Inf, +Inf), dac) - - @test parse(Interval{Float64}, "[1.e-3, 1.1e-3]") === interval(bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12), com) - - @test parse(Interval{Float64}, "[-Inf, 2/3]") === interval(bareinterval(-Inf, +0xA.AAAAAAAAAAAB0P-4), dac) - - @test parse(Interval{Float64}, "[0x1.3p-1,]") === interval(bareinterval(0x1.3p-1, Inf), dac) - - @test parse(Interval{Float64}, "[,]") === interval(entireinterval(BareInterval{Float64}), dac) - - @test parse(Interval{Float64}, "3.56?1") === interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), com) - - @test parse(Interval{Float64}, "3.56?1e2") === interval(bareinterval(355.0, 357.0), com) - - @test parse(Interval{Float64}, "3.560?2") === interval(bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0), com) - - @test parse(Interval{Float64}, "3.56?") === interval(bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0), com) - - @test parse(Interval{Float64}, "3.560?2u") === interval(bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0), com) - - @test parse(Interval{Float64}, "-10?") === interval(bareinterval(-10.5, -9.5), com) - - @test parse(Interval{Float64}, "-10?u") === interval(bareinterval(-10.0, -9.5), com) - - @test parse(Interval{Float64}, "-10?12") === interval(bareinterval(-22.0, 2.0), com) - - @test parse(Interval{Float64}, "-10??u") === interval(bareinterval(-10.0, Inf), dac) - - @test parse(Interval{Float64}, "-10??") === interval(bareinterval(-Inf, Inf), dac) - - @test isnai(parse(Interval{Float64}, "[nai]")) - - @test parse(Interval{Float64}, "3.56?1_def") === interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), def) - -end -@testset "IEEE1788.f" begin - - @test parse(BareInterval{Float64}, "[]") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[empty]") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[ empty ]") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[,]") === entireinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[ entire ]") === entireinterval(BareInterval{Float64}) - -end diff --git a/test/ITF1788_tests/ieee1788-exceptions.jl b/test/ITF1788_tests/ieee1788-exceptions.jl deleted file mode 100644 index 318563bfa..000000000 --- a/test/ITF1788_tests/ieee1788-exceptions.jl +++ /dev/null @@ -1,11 +0,0 @@ -@testset "exceptions" begin - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[+infinity]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test bareinterval(+Inf,-Inf) === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test bareinterval(nai()) === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[1.0000000000000001, 1.0000000000000002]") === bareinterval(1.0, 0x1.0000000000001p+0) - -end diff --git a/test/ITF1788_tests/libieeep1788_bool.jl b/test/ITF1788_tests/libieeep1788_bool.jl deleted file mode 100644 index 938739981..000000000 --- a/test/ITF1788_tests/libieeep1788_bool.jl +++ /dev/null @@ -1,847 +0,0 @@ -@testset "minimal_is_empty_test" begin - - @test isempty_interval(emptyinterval(BareInterval{Float64})) === true - - @test isempty_interval(bareinterval(-Inf,+Inf)) === false - - @test isempty_interval(bareinterval(1.0,2.0)) === false - - @test isempty_interval(bareinterval(-1.0,2.0)) === false - - @test isempty_interval(bareinterval(-3.0,-2.0)) === false - - @test isempty_interval(bareinterval(-Inf,2.0)) === false - - @test isempty_interval(bareinterval(-Inf,0.0)) === false - - @test isempty_interval(bareinterval(-Inf,-0.0)) === false - - @test isempty_interval(bareinterval(0.0,Inf)) === false - - @test isempty_interval(bareinterval(-0.0,Inf)) === false - - @test isempty_interval(bareinterval(-0.0,0.0)) === false - - @test isempty_interval(bareinterval(0.0,-0.0)) === false - - @test isempty_interval(bareinterval(0.0,0.0)) === false - - @test isempty_interval(bareinterval(-0.0,-0.0)) === false - -end -@testset "minimal_is_empty_dec_test" begin - - @test isempty_interval(nai()) === false - - @test isempty_interval(interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isempty_interval(interval(bareinterval(-Inf,+Inf), def)) === false - - @test isempty_interval(interval(bareinterval(1.0,2.0), com)) === false - - @test isempty_interval(interval(bareinterval(-1.0,2.0), trv)) === false - - @test isempty_interval(interval(bareinterval(-3.0,-2.0), dac)) === false - - @test isempty_interval(interval(bareinterval(-Inf,2.0), trv)) === false - - @test isempty_interval(interval(bareinterval(-Inf,0.0), trv)) === false - - @test isempty_interval(interval(bareinterval(-Inf,-0.0), trv)) === false - - @test isempty_interval(interval(bareinterval(0.0,Inf), def)) === false - - @test isempty_interval(interval(bareinterval(-0.0,Inf), trv)) === false - - @test isempty_interval(interval(bareinterval(-0.0,0.0), com)) === false - - @test isempty_interval(interval(bareinterval(0.0,-0.0), trv)) === false - - @test isempty_interval(interval(bareinterval(0.0,0.0), trv)) === false - - @test isempty_interval(interval(bareinterval(-0.0,-0.0), trv)) === false - -end -@testset "minimal_is_entire_test" begin - - @test isentire_interval(emptyinterval(BareInterval{Float64})) === false - - @test isentire_interval(bareinterval(-Inf,+Inf)) === true - - @test isentire_interval(bareinterval(1.0,2.0)) === false - - @test isentire_interval(bareinterval(-1.0,2.0)) === false - - @test isentire_interval(bareinterval(-3.0,-2.0)) === false - - @test isentire_interval(bareinterval(-Inf,2.0)) === false - - @test isentire_interval(bareinterval(-Inf,0.0)) === false - - @test isentire_interval(bareinterval(-Inf,-0.0)) === false - - @test isentire_interval(bareinterval(0.0,Inf)) === false - - @test isentire_interval(bareinterval(-0.0,Inf)) === false - - @test isentire_interval(bareinterval(-0.0,0.0)) === false - - @test isentire_interval(bareinterval(0.0,-0.0)) === false - - @test isentire_interval(bareinterval(0.0,0.0)) === false - - @test isentire_interval(bareinterval(-0.0,-0.0)) === false - -end -@testset "minimal_is_entire_dec_test" begin - - @test isentire_interval(nai()) === false - - @test isentire_interval(interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isentire_interval(interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isentire_interval(interval(bareinterval(-Inf,+Inf), def)) === true - - @test isentire_interval(interval(bareinterval(-Inf,+Inf), dac)) === true - - @test isentire_interval(interval(bareinterval(1.0,2.0), com)) === false - - @test isentire_interval(interval(bareinterval(-1.0,2.0), trv)) === false - - @test isentire_interval(interval(bareinterval(-3.0,-2.0), dac)) === false - - @test isentire_interval(interval(bareinterval(-Inf,2.0), trv)) === false - - @test isentire_interval(interval(bareinterval(-Inf,0.0), trv)) === false - - @test isentire_interval(interval(bareinterval(-Inf,-0.0), trv)) === false - - @test isentire_interval(interval(bareinterval(0.0,Inf), def)) === false - - @test isentire_interval(interval(bareinterval(-0.0,Inf), trv)) === false - - @test isentire_interval(interval(bareinterval(-0.0,0.0), com)) === false - - @test isentire_interval(interval(bareinterval(0.0,-0.0), trv)) === false - - @test isentire_interval(interval(bareinterval(0.0,0.0), trv)) === false - - @test isentire_interval(interval(bareinterval(-0.0,-0.0), trv)) === false - -end -@testset "minimal_is_nai_dec_test" begin - - @test isnai(nai()) === true - - @test isnai(interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isnai(interval(bareinterval(-Inf,+Inf), def)) === false - - @test isnai(interval(bareinterval(-Inf,+Inf), dac)) === false - - @test isnai(interval(bareinterval(1.0,2.0), com)) === false - - @test isnai(interval(bareinterval(-1.0,2.0), trv)) === false - - @test isnai(interval(bareinterval(-3.0,-2.0), dac)) === false - - @test isnai(interval(bareinterval(-Inf,2.0), trv)) === false - - @test isnai(interval(bareinterval(-Inf,0.0), trv)) === false - - @test isnai(interval(bareinterval(-Inf,-0.0), trv)) === false - - @test isnai(interval(bareinterval(0.0,Inf), def)) === false - - @test isnai(interval(bareinterval(-0.0,Inf), trv)) === false - - @test isnai(interval(bareinterval(-0.0,0.0), com)) === false - - @test isnai(interval(bareinterval(0.0,-0.0), trv)) === false - - @test isnai(interval(bareinterval(0.0,0.0), trv)) === false - - @test isnai(interval(bareinterval(-0.0,-0.0), trv)) === false - -end -@testset "minimal_equal_test" begin - - @test isequal_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true - - @test isequal_interval(bareinterval(1.0,2.1), bareinterval(1.0,2.0)) === false - - @test isequal_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test isequal_interval(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false - - @test isequal_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true - - @test isequal_interval(bareinterval(1.0,2.4), bareinterval(-Inf,+Inf)) === false - - @test isequal_interval(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === true - - @test isequal_interval(bareinterval(1.0,2.4), bareinterval(1.0,Inf)) === false - - @test isequal_interval(bareinterval(-Inf,2.0), bareinterval(-Inf,2.0)) === true - - @test isequal_interval(bareinterval(-Inf,2.4), bareinterval(-Inf,2.0)) === false - - @test isequal_interval(bareinterval(-2.0,0.0), bareinterval(-2.0,0.0)) === true - - @test isequal_interval(bareinterval(-0.0,2.0), bareinterval(0.0,2.0)) === true - - @test isequal_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test isequal_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true - - @test isequal_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true - -end -@testset "minimal_equal_dec_test" begin - - @test isequal_interval(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,2.0), trv)) === true - - @test isequal_interval(interval(bareinterval(1.0,2.1), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false - - @test isequal_interval(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isequal_interval(nai(), nai()) === false - - @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test isequal_interval(nai(), interval(bareinterval(1.0,2.0), trv)) === false - - @test isequal_interval(interval(bareinterval(-Inf,+Inf), def), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isequal_interval(interval(bareinterval(1.0,2.4), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isequal_interval(interval(bareinterval(1.0,Inf), trv), interval(bareinterval(1.0,Inf), trv)) === true - - @test isequal_interval(interval(bareinterval(1.0,2.4), def), interval(bareinterval(1.0,Inf), trv)) === false - - @test isequal_interval(interval(bareinterval(-Inf,2.0), trv), interval(bareinterval(-Inf,2.0), trv)) === true - - @test isequal_interval(interval(bareinterval(-Inf,2.4), def), interval(bareinterval(-Inf,2.0), trv)) === false - - @test isequal_interval(interval(bareinterval(-2.0,0.0), trv), interval(bareinterval(-2.0,0.0), trv)) === true - - @test isequal_interval(interval(bareinterval(-0.0,2.0), def), interval(bareinterval(0.0,2.0), trv)) === true - - @test isequal_interval(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true - - @test isequal_interval(interval(bareinterval(-0.0,0.0), def), interval(bareinterval(0.0,0.0), trv)) === true - - @test isequal_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true - -end -@testset "minimal_subset_test" begin - - @test issubset_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) === true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,4.0)) === true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,1.0)) === true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,0.0)) === true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,-0.0)) === true - - @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) === true - - @test issubset_interval(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) === false - - @test issubset_interval(bareinterval(-0.0,4.0), emptyinterval(BareInterval{Float64})) === false - - @test issubset_interval(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) === false - - @test issubset_interval(bareinterval(-Inf,+Inf), emptyinterval(BareInterval{Float64})) === false - - @test issubset_interval(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) === true - - @test issubset_interval(bareinterval(-0.0,4.0), bareinterval(-Inf,+Inf)) === true - - @test issubset_interval(bareinterval(-0.1,1.0), bareinterval(-Inf,+Inf)) === true - - @test issubset_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true - - @test issubset_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true - - @test issubset_interval(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) === true - - @test issubset_interval(bareinterval(1.0,2.0), bareinterval(-0.0,4.0)) === true - - @test issubset_interval(bareinterval(0.1,0.2), bareinterval(0.0,4.0)) === true - - @test issubset_interval(bareinterval(0.1,0.2), bareinterval(-0.0,4.0)) === true - - @test issubset_interval(bareinterval(-0.1,-0.1), bareinterval(-4.0, 3.4)) === true - - @test issubset_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true - - @test issubset_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true - - @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true - - @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true - -end -@testset "minimal_subset_dec_test" begin - - @test issubset_interval(nai(), nai()) === false - - @test issubset_interval(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test issubset_interval(nai(), interval(bareinterval(0.0,4.0), trv)) === false - - @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0,4.0), trv)) === true - - @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0,4.0), def)) === true - - @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,1.0), trv)) === true - - @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,0.0), trv)) === true - - @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,-0.0), trv)) === true - - @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test issubset_interval(interval(bareinterval(0.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test issubset_interval(interval(bareinterval(-0.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test issubset_interval(interval(bareinterval(-0.1,1.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test issubset_interval(interval(bareinterval(-Inf,+Inf), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test issubset_interval(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test issubset_interval(interval(bareinterval(-0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test issubset_interval(interval(bareinterval(-0.1,1.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test issubset_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test issubset_interval(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true - - @test issubset_interval(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(0.0,4.0), trv)) === true - - @test issubset_interval(interval(bareinterval(1.0,2.0), def), interval(bareinterval(-0.0,4.0), def)) === true - - @test issubset_interval(interval(bareinterval(0.1,0.2), trv), interval(bareinterval(0.0,4.0), trv)) === true - - @test issubset_interval(interval(bareinterval(0.1,0.2), trv), interval(bareinterval(-0.0,4.0), def)) === true - - @test issubset_interval(interval(bareinterval(-0.1,-0.1), trv), interval(bareinterval(-4.0, 3.4), trv)) === true - - @test issubset_interval(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true - - @test issubset_interval(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true - - @test issubset_interval(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true - - @test issubset_interval(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,-0.0), trv)) === true - - @test issubset_interval(interval(bareinterval(0.0,-0.0), def), interval(bareinterval(0.0,0.0), trv)) === true - - @test issubset_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true - -end -@testset "minimal_less_test" begin - - @test isweakless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test isweakless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === false - - @test isweakless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true - - @test isweakless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test isweakless(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test isweakless(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(0.0,2.0)) === false - - @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-0.0,2.0)) === false - - @test isweakless(bareinterval(0.0,2.0), bareinterval(0.0,2.0)) === true - - @test isweakless(bareinterval(0.0,2.0), bareinterval(-0.0,2.0)) === true - - @test isweakless(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === true - - @test isweakless(bareinterval(-0.0,2.0), bareinterval(1.0,2.0)) === true - - @test isweakless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true - - @test isweakless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true - - @test isweakless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === true - - @test isweakless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === true - - @test isweakless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) === true - - @test isweakless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) === true - - @test isweakless(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true - - @test isweakless(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true - - @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true - - @test isweakless(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test isweakless(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true - -end -@testset "minimal_less_dec_test" begin - - @test isweakless(nai(), nai()) === false - - @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false - - @test isweakless(interval(bareinterval(1.0,2.0), trv), nai()) === false - - @test isweakless(nai(), interval(bareinterval(1.0,2.0), def)) === false - - @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isweakless(interval(bareinterval(1.0,2.0), def), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isweakless(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(0.0,2.0), def)) === false - - @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-0.0,2.0), trv)) === false - - @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(0.0,2.0), trv)) === true - - @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-0.0,2.0), trv)) === true - - @test isweakless(interval(bareinterval(0.0,2.0), def), interval(bareinterval(1.0,2.0), def)) === true - - @test isweakless(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true - - @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true - - @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), def)) === true - - @test isweakless(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === true - - @test isweakless(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), trv)) === true - - @test isweakless(interval(bareinterval(-2.0,-1.0), trv), interval(bareinterval(-2.0,-1.0), trv)) === true - - @test isweakless(interval(bareinterval(-3.0,-1.5), trv), interval(bareinterval(-2.0,-1.0), trv)) === true - - @test isweakless(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true - - @test isweakless(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true - - @test isweakless(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true - - @test isweakless(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,-0.0), trv)) === true - - @test isweakless(interval(bareinterval(0.0,-0.0), def), interval(bareinterval(0.0,0.0), trv)) === true - - @test isweakless(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true - -end -@testset "minimal_precedes_test" begin - - @test precedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true - - @test precedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true - - @test precedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test precedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test precedes(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test precedes(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test precedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false - - @test precedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false - - @test precedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true - - @test precedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === true - - @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,0.0)) === true - - @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,-0.0)) === true - - @test precedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === false - - @test precedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false - - @test precedes(bareinterval(-3.0, -0.1), bareinterval(-1.0,0.0)) === false - - @test precedes(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true - - @test precedes(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true - - @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true - - @test precedes(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true - - @test precedes(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true - -end -@testset "minimal_precedes_dec_test" begin - - @test precedes(nai(), interval(bareinterval(3.0,4.0), def)) === false - - @test precedes(interval(bareinterval(3.0,4.0), trv), nai()) === false - - @test precedes(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test precedes(nai(), nai()) === false - - @test precedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), def)) === true - - @test precedes(interval(bareinterval(3.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test precedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test precedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test precedes(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test precedes(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test precedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test precedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test precedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true - - @test precedes(interval(bareinterval(1.0,3.0), trv), interval(bareinterval(3.0,4.0), def)) === true - - @test precedes(interval(bareinterval(-3.0, -1.0), def), interval(bareinterval(-1.0,0.0), trv)) === true - - @test precedes(interval(bareinterval(-3.0, -1.0), trv), interval(bareinterval(-1.0,-0.0), trv)) === true - - @test precedes(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === false - - @test precedes(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), trv)) === false - - @test precedes(interval(bareinterval(-3.0, -0.1), trv), interval(bareinterval(-1.0,0.0), trv)) === false - - @test precedes(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true - - @test precedes(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true - - @test precedes(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true - - @test precedes(interval(bareinterval(-0.0,0.0), def), interval(bareinterval(0.0,-0.0), trv)) === true - - @test precedes(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true - - @test precedes(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true - -end -@testset "minimal_interior_test" begin - - @test isinterior(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test isinterior(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) === true - - @test isinterior(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) === false - - @test isinterior(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true - - @test isinterior(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) === true - - @test isinterior(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) === true - - @test isinterior(bareinterval(-Inf,+Inf), bareinterval(0.0,4.0)) === false - - @test isinterior(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) === false - - @test isinterior(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) === true - - @test isinterior(bareinterval(-2.0,2.0), bareinterval(-2.0,4.0)) === false - - @test isinterior(bareinterval(-0.0,-0.0), bareinterval(-2.0,4.0)) === true - - @test isinterior(bareinterval(0.0,0.0), bareinterval(-2.0,4.0)) === true - - @test isinterior(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === false - - @test isinterior(bareinterval(0.0,4.4), bareinterval(0.0,4.0)) === false - - @test isinterior(bareinterval(-1.0,-1.0), bareinterval(0.0,4.0)) === false - - @test isinterior(bareinterval(2.0,2.0), bareinterval(-2.0,-1.0)) === false - -end -@testset "minimal_interior_dec_test" begin - - @test isinterior(nai(), nai()) === false - - @test isinterior(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isinterior(nai(), interval(bareinterval(0.0,4.0), trv)) === false - - @test isinterior(interval(bareinterval(0.0,4.0), def), nai()) === false - - @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0,4.0), trv)) === true - - @test isinterior(interval(bareinterval(0.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isinterior(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isinterior(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isinterior(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(0.0,4.0), trv)) === false - - @test isinterior(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(0.0,4.0), trv)) === false - - @test isinterior(interval(bareinterval(1.0,2.0), def), interval(bareinterval(0.0,4.0), trv)) === true - - @test isinterior(interval(bareinterval(-2.0,2.0), trv), interval(bareinterval(-2.0,4.0), def)) === false - - @test isinterior(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(-2.0,4.0), trv)) === true - - @test isinterior(interval(bareinterval(0.0,0.0), def), interval(bareinterval(-2.0,4.0), trv)) === true - - @test isinterior(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === false - - @test isinterior(interval(bareinterval(0.0,4.4), trv), interval(bareinterval(0.0,4.0), trv)) === false - - @test isinterior(interval(bareinterval(-1.0,-1.0), trv), interval(bareinterval(0.0,4.0), def)) === false - - @test isinterior(interval(bareinterval(2.0,2.0), def), interval(bareinterval(-2.0,-1.0), trv)) === false - -end -@testset "minimal_strictly_less_test" begin - - @test isstrictless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test isstrictless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === false - - @test isstrictless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false - - @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true - - @test isstrictless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false - - @test isstrictless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === false - - @test isstrictless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true - - @test isstrictless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === true - - @test isstrictless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false - - @test isstrictless(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) === false - - @test isstrictless(bareinterval(-0.0,4.0), bareinterval(0.0,4.0)) === false - - @test isstrictless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) === false - - @test isstrictless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) === true - -end -@testset "minimal_strictly_less_dec_test" begin - - @test isstrictless(nai(), nai()) === false - - @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false - - @test isstrictless(interval(bareinterval(1.0,2.0), trv), nai()) === false - - @test isstrictless(nai(), interval(bareinterval(1.0,2.0), def)) === false - - @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), def)) === false - - @test isstrictless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true - - @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isstrictless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true - - @test isstrictless(interval(bareinterval(1.0,3.5), def), interval(bareinterval(3.0,4.0), trv)) === true - - @test isstrictless(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), def)) === false - - @test isstrictless(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(0.0,4.0), def)) === false - - @test isstrictless(interval(bareinterval(-0.0,4.0), def), interval(bareinterval(0.0,4.0), trv)) === false - - @test isstrictless(interval(bareinterval(-2.0,-1.0), def), interval(bareinterval(-2.0,-1.0), def)) === false - - @test isstrictless(interval(bareinterval(-3.0,-1.5), trv), interval(bareinterval(-2.0,-1.0), trv)) === true - -end -@testset "minimal_strictly_precedes_test" begin - - @test strictprecedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true - - @test strictprecedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true - - @test strictprecedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test strictprecedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false - - @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false - - @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false - - @test strictprecedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true - - @test strictprecedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === false - - @test strictprecedes(bareinterval(-3.0,-1.0), bareinterval(-1.0,0.0)) === false - - @test strictprecedes(bareinterval(-3.0,-0.0), bareinterval(0.0,1.0)) === false - - @test strictprecedes(bareinterval(-3.0,0.0), bareinterval(-0.0,1.0)) === false - - @test strictprecedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === false - - @test strictprecedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false - - @test strictprecedes(bareinterval(-3.0,-0.1), bareinterval(-1.0,0.0)) === false - -end -@testset "minimal_strictly_precedes_dec_test" begin - - @test strictprecedes(nai(), interval(bareinterval(3.0,4.0), trv)) === false - - @test strictprecedes(interval(bareinterval(3.0,4.0), def), nai()) === false - - @test strictprecedes(nai(), interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test strictprecedes(nai(), nai()) === false - - @test strictprecedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), trv)) === true - - @test strictprecedes(interval(bareinterval(3.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test strictprecedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test strictprecedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test strictprecedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false - - @test strictprecedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test strictprecedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true - - @test strictprecedes(interval(bareinterval(1.0,3.0), def), interval(bareinterval(3.0,4.0), trv)) === false - - @test strictprecedes(interval(bareinterval(-3.0,-1.0), trv), interval(bareinterval(-1.0,0.0), def)) === false - - @test strictprecedes(interval(bareinterval(-3.0,-0.0), def), interval(bareinterval(0.0,1.0), trv)) === false - - @test strictprecedes(interval(bareinterval(-3.0,0.0), trv), interval(bareinterval(-0.0,1.0), trv)) === false - - @test strictprecedes(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === false - - @test strictprecedes(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), def)) === false - - @test strictprecedes(interval(bareinterval(-3.0,-0.1), trv), interval(bareinterval(-1.0,0.0), trv)) === false - -end -@testset "minimal_disjoint_test" begin - - @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true - - @test isdisjoint_interval(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true - - @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true - - @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === true - - @test isdisjoint_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === false - - @test isdisjoint_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === false - - @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,7.0)) === false - - @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(-Inf,+Inf)) === false - - @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(1.0,7.0)) === false - - @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false - -end -@testset "minimal_disjoint_dec_test" begin - - @test isdisjoint_interval(nai(), interval(bareinterval(3.0,4.0), def)) === false - - @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), nai()) === false - - @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), nai()) === false - - @test isdisjoint_interval(nai(), nai()) === false - - @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), def)) === true - - @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true - - @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(1.0,2.0), def)) === true - - @test isdisjoint_interval(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === false - - @test isdisjoint_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === false - - @test isdisjoint_interval(interval(bareinterval(3.0,4.0), def), interval(bareinterval(1.0,7.0), def)) === false - - @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - - @test isdisjoint_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,7.0), trv)) === false - - @test isdisjoint_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false - -end diff --git a/test/ITF1788_tests/libieeep1788_cancel.jl b/test/ITF1788_tests/libieeep1788_cancel.jl deleted file mode 100644 index df879daed..000000000 --- a/test/ITF1788_tests/libieeep1788_cancel.jl +++ /dev/null @@ -1,496 +0,0 @@ -@testset "minimal_cancel_plus_test" begin - - @test cancelplus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-Inf, -1.0), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-1.0, Inf), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-1.0,5.0), bareinterval(1.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-1.0,5.0), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(1.0,5.1)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.1)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.1)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.1)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-0.9)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-0.9)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0,10.0)) === emptyinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,10.0)) === emptyinterval(BareInterval{Float64}) - - @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-5.1,-0.0), bareinterval(0.0,5.0)) === bareinterval(-0x1.999999999998P-4,0.0) - - @test cancelplus(bareinterval(-5.1,-1.0), bareinterval(1.0,5.0)) === bareinterval(-0x1.999999999998P-4,0.0) - - @test cancelplus(bareinterval(-5.0,-0.9), bareinterval(1.0,5.0)) === bareinterval(0.0, 0x1.9999999999998P-4) - - @test cancelplus(bareinterval(-5.1,-0.9), bareinterval(1.0,5.0)) === bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4) - - @test cancelplus(bareinterval(-5.0,-1.0), bareinterval(1.0,5.0)) === bareinterval(0.0,0.0) - - @test cancelplus(bareinterval(-10.1, 5.0), bareinterval(-5.0,10.0)) === bareinterval(-0x1.999999999998P-4,0.0) - - @test cancelplus(bareinterval(-10.0, 5.1), bareinterval(-5.0,10.0)) === bareinterval(0.0,0x1.999999999998P-4) - - @test cancelplus(bareinterval(-10.1, 5.1), bareinterval(-5.0,10.0)) === bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4) - - @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.0)) === bareinterval(0.0,0.0) - - @test cancelplus(bareinterval(0.9, 5.0), bareinterval(-5.0,-1.0)) === bareinterval(-0x1.9999999999998P-4,0.0) - - @test cancelplus(bareinterval(1.0, 5.1), bareinterval(-5.0,-1.0)) === bareinterval(0.0,0x1.999999999998P-4) - - @test cancelplus(bareinterval(0.0, 5.1), bareinterval(-5.0,-0.0)) === bareinterval(0.0,0x1.999999999998P-4) - - @test cancelplus(bareinterval(0.9, 5.1), bareinterval(-5.0,-1.0)) === bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4) - - @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-1.0)) === bareinterval(0.0,0.0) - - @test cancelplus(bareinterval(0.0, 5.0), bareinterval(-5.0,-0.0)) === bareinterval(0.0,0.0) - - @test cancelplus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) - - @test cancelplus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,0.01)) === bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0) - - @test cancelplus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0.0) - - @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1P+971) - - @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)) === bareinterval(-0x1P+971,0.0) - - @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) - - @test cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53)) === bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1) - - @test cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53)) === entireinterval(BareInterval{Float64}) - -end -@testset "minimal_cancel_plus_dec_test" begin - - @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-1.0, Inf), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(entireinterval(BareInterval{Float64}), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(bareinterval(-5.0,1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-1.0, Inf), trv), interval(bareinterval(-5.0,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-5.0,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-1.0, Inf), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0, Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,1.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-1.0,5.0), dac), interval(bareinterval(1.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-1.0,5.0), def), interval(bareinterval(-Inf,1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-1.0,5.0), com), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-Inf,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-5.0, -1.0), com), interval(bareinterval(1.0,5.1), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-5.0, -1.0), dac), interval(bareinterval(0.9,5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-5.0, -1.0), def), interval(bareinterval(0.9,5.1), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-10.0, 5.0), trv), interval(bareinterval(-5.0,10.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-5.1,10.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-10.0, 5.0), dac), interval(bareinterval(-5.1,10.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(1.0, 5.0), def), interval(bareinterval(-5.0,-0.9), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(1.0, 5.0), trv), interval(bareinterval(-5.1,-1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(-5.1,-0.9), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-10.0, -1.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-10.0, 5.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(1.0, 5.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,10.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-5.0,10.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-5.0,-1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-5.1,-0.0), com), interval(bareinterval(0.0,5.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) - - @test cancelplus(interval(bareinterval(-5.1,-1.0), com), interval(bareinterval(1.0,5.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) - - @test cancelplus(interval(bareinterval(-5.0,-0.9), com), interval(bareinterval(1.0,5.0), def)) === interval(bareinterval(0.0, 0x1.9999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(-5.1,-0.9), dac), interval(bareinterval(1.0,5.0), trv)) === interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(-5.0,-1.0), dac), interval(bareinterval(1.0,5.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelplus(interval(bareinterval(-10.1, 5.0), dac), interval(bareinterval(-5.0,10.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) - - @test cancelplus(interval(bareinterval(-10.0, 5.1), def), interval(bareinterval(-5.0,10.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(-10.1, 5.1), def), interval(bareinterval(-5.0,10.0), trv)) === interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(-10.0, 5.0), def), interval(bareinterval(-5.0,10.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelplus(interval(bareinterval(0.9, 5.0), trv), interval(bareinterval(-5.0,-1.0), dac)) === interval(bareinterval(-0x1.9999999999998P-4,0.0), trv) - - @test cancelplus(interval(bareinterval(1.0, 5.1), trv), interval(bareinterval(-5.0,-1.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(0.0, 5.1), trv), interval(bareinterval(-5.0,-0.0), trv)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(0.9, 5.1), com), interval(bareinterval(-5.0,-1.0), com)) === interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), trv) - - @test cancelplus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(-5.0,-1.0), dac)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelplus(interval(bareinterval(0.0, 5.0), def), interval(bareinterval(-5.0,-0.0), trv)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelplus(interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), com), interval(bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4), com)) === interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), trv) - - @test cancelplus(interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), dac), interval(bareinterval(-0x1.999999999999AP-4,0.01), com)) === interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), trv) - - @test cancelplus(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), trv) - - @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac), interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0x1P+971), trv) - - @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com)) === interval(bareinterval(-0x1P+971,0.0), trv) - - @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelplus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), dac), interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), com)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), trv) - - @test cancelplus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), def), interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), com)) === interval(entireinterval(BareInterval{Float64}), trv) - -end -@testset "minimal_cancel_minus_test" begin - - @test cancelminus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-Inf, -1.0), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-1.0, Inf), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-1.0,5.0), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-1.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.0,-0.9)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-0.9)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.1)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.1)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.0)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.1)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.1)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, -1.0)) === emptyinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, 5.0)) === emptyinterval(BareInterval{Float64}) - - @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, 5.0)) === emptyinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-5.1,-0.0), bareinterval(-5.0, 0.0)) === bareinterval(-0x1.999999999998P-4,0.0) - - @test cancelminus(bareinterval(-5.1,-1.0), bareinterval(-5.0, -1.0)) === bareinterval(-0x1.999999999998P-4,0.0) - - @test cancelminus(bareinterval(-5.0,-0.9), bareinterval(-5.0, -1.0)) === bareinterval(0.0, 0x1.9999999999998P-4) - - @test cancelminus(bareinterval(-5.1,-0.9), bareinterval(-5.0, -1.0)) === bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4) - - @test cancelminus(bareinterval(-5.0,-1.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) - - @test cancelminus(bareinterval(-10.1, 5.0), bareinterval(-10.0, 5.0)) === bareinterval(-0x1.999999999998P-4,0.0) - - @test cancelminus(bareinterval(-10.0, 5.1), bareinterval(-10.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) - - @test cancelminus(bareinterval(-10.1, 5.1), bareinterval(-10.0, 5.0)) === bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4) - - @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.0)) === bareinterval(0.0,0.0) - - @test cancelminus(bareinterval(0.9, 5.0), bareinterval(1.0, 5.0)) === bareinterval(-0x1.9999999999998P-4,0.0) - - @test cancelminus(bareinterval(-0.0, 5.1), bareinterval(0.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) - - @test cancelminus(bareinterval(1.0, 5.1), bareinterval(1.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) - - @test cancelminus(bareinterval(0.9, 5.1), bareinterval(1.0, 5.0)) === bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4) - - @test cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.0)) === bareinterval(0.0,0.0) - - @test cancelminus(bareinterval(-5.0, 1.0), bareinterval(-1.0, 5.0)) === bareinterval(-4.0,-4.0) - - @test cancelminus(bareinterval(-5.0, 0.0), bareinterval(-0.0, 5.0)) === bareinterval(-5.0,-5.0) - - @test cancelminus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) - - @test cancelminus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0.01,0x1.999999999999AP-4)) === bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0) - - @test cancelminus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0.0) - - @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)) === bareinterval(0.0,0x1P+971) - - @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1P+971,0.0) - - @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === bareinterval(0.0,0.0) - - @test cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) === bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022) - - @test cancelminus(bareinterval(0x1P-1022,0x1.0000000000002P-1022), bareinterval(0x1P-1022,0x1.0000000000001P-1022)) === bareinterval(0.0,0x0.0000000000001P-1022) - - @test cancelminus(bareinterval(0x1P-1022,0x1.0000000000001P-1022), bareinterval(0x1P-1022,0x1.0000000000002P-1022)) === entireinterval(BareInterval{Float64}) - - @test cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0)) === bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1) - - @test cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0)) === entireinterval(BareInterval{Float64}) - -end -@testset "minimal_cancel_minus_dec_test" begin - - @test cancelminus(interval(bareinterval(-Inf, -1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-1.0, Inf), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-Inf, -1.0), trv), interval(bareinterval(-1.0,5.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-1.0, Inf), dac), interval(bareinterval(-1.0,5.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-1.0,5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-Inf, -1.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-1.0, Inf), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf, -1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-1.0, Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-1.0,5.0), dac), interval(bareinterval(-Inf, -1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-1.0,5.0), def), interval(bareinterval(-1.0, Inf), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-1.0,5.0), com), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-Inf, -1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-1.0, Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-5.0, -1.0), com), interval(bareinterval(-5.1,-1.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-5.0, -1.0), dac), interval(bareinterval(-5.0,-0.9), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-5.0, -1.0), def), interval(bareinterval(-5.1,-0.9), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-10.0, 5.0), trv), interval(bareinterval(-10.1, 5.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-10.0, 5.1), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-10.0, 5.0), dac), interval(bareinterval(-10.1, 5.1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(1.0, 5.0), def), interval(bareinterval(0.9, 5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(1.0, 5.0), trv), interval(bareinterval(1.0, 5.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(1.0, 5.0), com), interval(bareinterval(0.9, 5.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-10.0, -1.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-10.0, 5.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(1.0, 5.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-10.0, -1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-10.0, 5.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0, 5.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-5.1,-0.0), com), interval(bareinterval(-5.0, 0.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) - - @test cancelminus(interval(bareinterval(-5.1,-1.0), dac), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) - - @test cancelminus(interval(bareinterval(-5.0,-0.9), def), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(0.0, 0x1.9999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(-5.1,-0.9), trv), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(-5.0,-1.0), com), interval(bareinterval(-5.0, -1.0), dac)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelminus(interval(bareinterval(-10.1, 5.0), dac), interval(bareinterval(-10.0, 5.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) - - @test cancelminus(interval(bareinterval(-10.0, 5.1), def), interval(bareinterval(-10.0, 5.0), dac)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(-10.1, 5.1), trv), interval(bareinterval(-10.0, 5.0), def)) === interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-10.0, 5.0), def)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelminus(interval(bareinterval(0.9, 5.0), dac), interval(bareinterval(1.0, 5.0), def)) === interval(bareinterval(-0x1.9999999999998P-4,0.0), trv) - - @test cancelminus(interval(bareinterval(-0.0, 5.1), def), interval(bareinterval(0.0, 5.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(1.0, 5.1), trv), interval(bareinterval(1.0, 5.0), trv)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(0.9, 5.1), com), interval(bareinterval(1.0, 5.0), trv)) === interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), trv) - - @test cancelminus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(1.0, 5.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelminus(interval(bareinterval(-5.0, 1.0), def), interval(bareinterval(-1.0, 5.0), def)) === interval(bareinterval(-4.0,-4.0), trv) - - @test cancelminus(interval(bareinterval(-5.0, 0.0), trv), interval(bareinterval(-0.0, 5.0), trv)) === interval(bareinterval(-5.0,-5.0), trv) - - @test cancelminus(interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), com), interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), com)) === interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), trv) - - @test cancelminus(interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), def), interval(bareinterval(-0.01,0x1.999999999999AP-4), dac)) === interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), trv) - - @test cancelminus(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), trv) - - @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com)) === interval(bareinterval(0.0,0x1P+971), trv) - - @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1P+971,0.0), trv) - - @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com), interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com)) === interval(bareinterval(0.0,0.0), trv) - - @test cancelminus(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com), interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), dac)) === interval(bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022), trv) - - @test cancelminus(interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), dac), interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), dac)) === interval(bareinterval(0.0,0x0.0000000000001P-1022), trv) - - @test cancelminus(interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), def), interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test cancelminus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), com), interval(bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0), dac)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), trv) - - @test cancelminus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), def), interval(bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - -end diff --git a/test/ITF1788_tests/libieeep1788_class.jl b/test/ITF1788_tests/libieeep1788_class.jl deleted file mode 100644 index 652936445..000000000 --- a/test/ITF1788_tests/libieeep1788_class.jl +++ /dev/null @@ -1,444 +0,0 @@ -@testset "minimal_nums_to_interval_test" begin - - @test bareinterval(-1.0,1.0) === bareinterval(-1.0,1.0) - - @test bareinterval(-Inf,1.0) === bareinterval(-Inf,1.0) - - @test bareinterval(-1.0,Inf) === bareinterval(-1.0,Inf) - - @test bareinterval(-Inf,Inf) === bareinterval(-Inf,Inf) - - @test_logs (:warn,) @test bareinterval(NaN,NaN) === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test bareinterval(1.0,-1.0) === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test bareinterval(-Inf,-Inf) === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test bareinterval(Inf,Inf) === emptyinterval(BareInterval{Float64}) - -end -@testset "minimal_nums_to_decorated_interval_test" begin - - @test interval(-1.0,1.0) === interval(bareinterval(-1.0,1.0), com) - - @test interval(-Inf,1.0) === interval(bareinterval(-Inf,1.0), dac) - - @test interval(-1.0,Inf) === interval(bareinterval(-1.0,Inf), dac) - - @test interval(-Inf,Inf) === interval(bareinterval(-Inf,Inf), dac) - - @test_logs (:warn,) @test isnai(interval(NaN,NaN)) - - @test_logs (:warn,) @test isnai(interval(1.0,-1.0)) - - @test_logs (:warn,) @test isnai(interval(-Inf,-Inf)) - - @test_logs (:warn,) @test isnai(interval(Inf,Inf)) - -end -@testset "minimal_text_to_interval_test" begin - - @test parse(BareInterval{Float64}, "[ Empty ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Empty ]_trv") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[ ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ]_trv") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[,]") === bareinterval(-Inf,Inf) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[,]_trv") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[ entire ]") === bareinterval(-Inf,Inf) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ENTIRE ]_dac") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[ ENTIRE ]") === bareinterval(-Inf,Inf) - - @test parse(BareInterval{Float64}, "[ -inf , INF ]") === bareinterval(-Inf,Inf) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -inf, INF ]_def") === emptyinterval(BareInterval{Float64}) - - @test parse(BareInterval{Float64}, "[-1.0,1.0]") === bareinterval(-1.0,1.0) - - @test parse(BareInterval{Float64}, "[ -1.0 , 1.0 ]") === bareinterval(-1.0,1.0) - - @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]") === bareinterval(-1.0,1.0) - - @test parse(BareInterval{Float64}, "[-1,]") === bareinterval(-1.0,Inf) - - @test parse(BareInterval{Float64}, "[-1.0, +inf]") === bareinterval(-1.0,Inf) - - @test parse(BareInterval{Float64}, "[-1.0, +infinity]") === bareinterval(-1.0,Inf) - - @test parse(BareInterval{Float64}, "[-Inf, 1.000 ]") === bareinterval(-Inf,1.0) - - @test parse(BareInterval{Float64}, "[-Infinity, 1.000 ]") === bareinterval(-Inf,1.0) - - @test parse(BareInterval{Float64}, "[1.0E+400 ]") === bareinterval(0x1.fffffffffffffp+1023,Inf) - - @test parse(BareInterval{Float64}, "[ -4/2, 10/5 ]") === bareinterval(-2.0,2.0) - - @test parse(BareInterval{Float64}, "[ -1/10, 1/10 ]") === bareinterval(-0.1,0.1) - - @test parse(BareInterval{Float64}, "0.0?") === bareinterval(-0.05,0.05) - - @test parse(BareInterval{Float64}, "0.0?u") === bareinterval(0.0,0.05) - - @test parse(BareInterval{Float64}, "0.0?d") === bareinterval(-0.05,0.0) - - @test parse(BareInterval{Float64}, "2.5?") === bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1) - - @test parse(BareInterval{Float64}, "2.5?u") === bareinterval(2.5,0x1.4666666666667p+1) - - @test parse(BareInterval{Float64}, "2.5?d") === bareinterval(0x1.3999999999999p+1,2.5) - - @test parse(BareInterval{Float64}, "0.000?5") === bareinterval(-0.005,0.005) - - @test parse(BareInterval{Float64}, "0.000?5u") === bareinterval(0.0,0.005) - - @test parse(BareInterval{Float64}, "0.000?5d") === bareinterval(-0.005,0.0) - - @test parse(BareInterval{Float64}, "2.500?5") === bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1) - - @test parse(BareInterval{Float64}, "2.500?5u") === bareinterval(2.5,0x1.40a3d70a3d70bp+1) - - @test parse(BareInterval{Float64}, "2.500?5d") === bareinterval(0x1.3f5c28f5c28f5p+1,2.5) - - @test parse(BareInterval{Float64}, "0.0??") === bareinterval(-Inf,Inf) - - @test parse(BareInterval{Float64}, "0.0??u") === bareinterval(0.0,Inf) - - @test parse(BareInterval{Float64}, "0.0??d") === bareinterval(-Inf,0.0) - - @test parse(BareInterval{Float64}, "2.5??") === bareinterval(-Inf,Inf) - - @test parse(BareInterval{Float64}, "2.5??u") === bareinterval(2.5,Inf) - - @test parse(BareInterval{Float64}, "2.5??d") === bareinterval(-Inf,2.5) - - @test parse(BareInterval{Float64}, "2.500?5e+27") === bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91) - - @test parse(BareInterval{Float64}, "2.500?5ue4") === bareinterval(0x1.86ap+14,0x1.8768p+14) - - @test parse(BareInterval{Float64}, "2.500?5de-5") === bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16) - - @test parse(BareInterval{Float64}, "10?3") === bareinterval(7.0,13.0) - - @test parse(BareInterval{Float64}, "10?3e380") === bareinterval(0x1.fffffffffffffp+1023,Inf) - - @test parse(BareInterval{Float64}, "1.0000000000000001?1") === bareinterval(1.0,0x1.0000000000001p+0) - - @test parse(BareInterval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") === bareinterval(-Inf,Inf) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]_ill") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]_trv") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Empty ]_ill") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ]_com") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[,]_com") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Entire ]_com") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -inf , INF ]_com") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_ill") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_fooo") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_da") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-1.0,]_com") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf, 1.000 ]_ill") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-I nf, 1.000 ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf, 1.0 00 ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[Inf , INF]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ foo ]") === emptyinterval(BareInterval{Float64}) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[1.0000000000000002,1.0000000000000001]") === bareinterval(1.0,0x1.0000000000001p+0) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]") === bareinterval(1.0,0x1.0000000000001p+0) - - @test_logs (:warn,) @test parse(BareInterval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]") === bareinterval(1.0,0x1.0000000000001p+0) - -end -@testset "minimal_text_to_decorated_interval_test" begin - - @test parse(Interval{Float64}, "[ Empty ]") === interval(emptyinterval(BareInterval{Float64}), trv) - - @test parse(Interval{Float64}, "[ Empty ]_trv") === interval(emptyinterval(BareInterval{Float64}), trv) - - @test parse(Interval{Float64}, "[ ]") === interval(emptyinterval(BareInterval{Float64}), trv) - - @test parse(Interval{Float64}, "[ ]_trv") === interval(emptyinterval(BareInterval{Float64}), trv) - - @test parse(Interval{Float64}, "[,]") === interval(entireinterval(BareInterval{Float64}), dac) - - @test parse(Interval{Float64}, "[,]_trv") === interval(entireinterval(BareInterval{Float64}), trv) - - @test parse(Interval{Float64}, "[ entire ]") === interval(entireinterval(BareInterval{Float64}), dac) - - @test parse(Interval{Float64}, "[ ENTIRE ]_dac") === interval(entireinterval(BareInterval{Float64}), dac) - - @test parse(Interval{Float64}, "[ -inf , INF ]") === interval(entireinterval(BareInterval{Float64}), dac) - - @test parse(Interval{Float64}, "[ -inf, INF ]_def") === interval(entireinterval(BareInterval{Float64}), def) - - @test parse(Interval{Float64}, "[-1.0,1.0]") === interval(bareinterval(-1.0,1.0), com) - - @test parse(Interval{Float64}, "[ -1.0 , 1.0 ]_com") === interval(bareinterval(-1.0,1.0), com) - - @test parse(Interval{Float64}, "[ -1.0 , 1.0]_trv") === interval(bareinterval(-1.0,1.0), trv) - - @test parse(Interval{Float64}, "[-1,]") === interval(bareinterval(-1.0,Inf), dac) - - @test parse(Interval{Float64}, "[-1.0, +inf]_def") === interval(bareinterval(-1.0,Inf), def) - - @test parse(Interval{Float64}, "[-1.0, +infinity]_def") === interval(bareinterval(-1.0,Inf), def) - - @test parse(Interval{Float64}, "[-Inf, 1.000 ]") === interval(bareinterval(-Inf,1.0), dac) - - @test parse(Interval{Float64}, "[-Infinity, 1.000 ]_trv") === interval(bareinterval(-Inf,1.0), trv) - - @test parse(Interval{Float64}, "[1.0E+400 ]_com") === interval(bareinterval(0x1.fffffffffffffp+1023,Inf), dac) - - @test parse(Interval{Float64}, "[ -4/2, 10/5 ]_com") === interval(bareinterval(-2.0,2.0), com) - - @test parse(Interval{Float64}, "[ -1/10, 1/10 ]_com") === interval(bareinterval(-0.1,0.1), com) - - @test parse(Interval{Float64}, "0.0?") === interval(bareinterval(-0.05,0.05), com) - - @test parse(Interval{Float64}, "0.0?u_trv") === interval(bareinterval(0.0,0.05), trv) - - @test parse(Interval{Float64}, "0.0?d_dac") === interval(bareinterval(-0.05,0.0), dac) - - @test parse(Interval{Float64}, "2.5?") === interval(bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1), com) - - @test parse(Interval{Float64}, "2.5?u") === interval(bareinterval(2.5,0x1.4666666666667p+1), com) - - @test parse(Interval{Float64}, "2.5?d_trv") === interval(bareinterval(0x1.3999999999999p+1,2.5), trv) - - @test parse(Interval{Float64}, "0.000?5") === interval(bareinterval(-0.005,0.005), com) - - @test parse(Interval{Float64}, "0.000?5u_def") === interval(bareinterval(0.0,0.005), def) - - @test parse(Interval{Float64}, "0.000?5d") === interval(bareinterval(-0.005,0.0), com) - - @test parse(Interval{Float64}, "2.500?5") === interval(bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1), com) - - @test parse(Interval{Float64}, "2.500?5u") === interval(bareinterval(2.5,0x1.40a3d70a3d70bp+1), com) - - @test parse(Interval{Float64}, "2.500?5d") === interval(bareinterval(0x1.3f5c28f5c28f5p+1,2.5), com) - - @test parse(Interval{Float64}, "0.0??_dac") === interval(bareinterval(-Inf,Inf), dac) - - @test parse(Interval{Float64}, "0.0??u_trv") === interval(bareinterval(0.0,Inf), trv) - - @test parse(Interval{Float64}, "0.0??d") === interval(bareinterval(-Inf,0.0), dac) - - @test parse(Interval{Float64}, "2.5??") === interval(bareinterval(-Inf,Inf), dac) - - @test parse(Interval{Float64}, "2.5??u_def") === interval(bareinterval(2.5,Inf), def) - - @test parse(Interval{Float64}, "2.5??d_dac") === interval(bareinterval(-Inf,2.5), dac) - - @test parse(Interval{Float64}, "2.500?5e+27") === interval(bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91), com) - - @test parse(Interval{Float64}, "2.500?5ue4_def") === interval(bareinterval(0x1.86ap+14,0x1.8768p+14), def) - - @test parse(Interval{Float64}, "2.500?5de-5") === interval(bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16), com) - - @test isnai(parse(Interval{Float64}, "[ Nai ]")) - - @test parse(Interval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_com") === interval(bareinterval(-Inf,Inf), dac) - - @test parse(Interval{Float64}, "10?3_com") === interval(bareinterval(7.0,13.0), com) - - @test parse(Interval{Float64}, "10?3e380_com") === interval(bareinterval(0x1.fffffffffffffp+1023,Inf), dac) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Nai ]_ill")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Nai ]_trv")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Empty ]_ill")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ ]_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[,]_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ Entire ]_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -inf , INF ]_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_ill")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_fooo")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ -1.0 , 1.0]_da")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-1.0,]_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-Inf, 1.000 ]_ill")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-I nf, 1.000 ]")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-Inf, 1.0 00 ]")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[-Inf ]")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[Inf , INF]")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[ foo ]")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??u_ill")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??d_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "0.0??_com")) - - @test_logs (:warn,) @test isnai(parse(Interval{Float64}, "[1.0,2.0")) - - @test_logs (:warn,) @test parse(Interval{Float64}, "[1.0000000000000002,1.0000000000000001]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) - - @test_logs (:warn,) @test parse(Interval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) - - @test_logs (:warn,) @test parse(Interval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) - -end -@testset "minimal_interval_part_test" begin - - @test bareinterval(interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv)) === bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4) - - @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com)) === bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4) - - @test bareinterval(interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac)) === bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4) - - @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def)) === bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4) - - @test bareinterval(interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv)) === bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022) - - @test bareinterval(interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), trv)) === bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022) - - @test bareinterval(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), trv)) === bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022) - - @test bareinterval(interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), trv)) === bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023) - - @test bareinterval(interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv)) === bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023) - - @test bareinterval(interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv)) === bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023) - - @test bareinterval(interval(bareinterval(-Inf,Inf), trv)) === bareinterval(-Inf,Inf) - - @test bareinterval(interval(emptyinterval(BareInterval{Float64}), trv)) === emptyinterval(BareInterval{Float64}) - - @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com)) === bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4) - - @test_logs (:warn,) @test bareinterval(nai()) === emptyinterval(BareInterval{Float64}) - -end -@testset "minimal_new_dec_test" begin - - @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), com) - - @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) - - @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4)) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), com) - - @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), com) - - @test interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) === interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), com) - - @test interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), com) - - @test interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com) - - @test interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023)) === interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) - - @test interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) === interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), com) - - @test interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) === interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), com) - - @test interval(bareinterval(-Inf,Inf)) === interval(bareinterval(-Inf,Inf), dac) - - @test interval(emptyinterval(BareInterval{Float64})) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) - -end -@testset "minimal_set_dec_test" begin - - @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv) - - @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) - - @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac) - - @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def) - - @test interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv) === interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv) - - @test interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), def) === interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), def) - - @test interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), dac) === interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), dac) - - @test interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) === interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) - - @test interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), def) === interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), def) - - @test interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv) === interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv) - - @test interval(bareinterval(-Inf,Inf), dac) === interval(bareinterval(-Inf,Inf), dac) - - @test interval(emptyinterval(BareInterval{Float64}), trv) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) - - @test interval(emptyinterval(BareInterval{Float64}), def) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test interval(emptyinterval(BareInterval{Float64}), dac) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test interval(emptyinterval(BareInterval{Float64}), com) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test interval(bareinterval(1.0,Inf), com) === interval(bareinterval(1.0,Inf), dac) - - @test interval(bareinterval(-Inf,3.0), com) === interval(bareinterval(-Inf,3.0), dac) - - @test interval(bareinterval(-Inf,Inf), com) === interval(bareinterval(-Inf,Inf), dac) - - @test_logs (:warn,) @test isnai(interval(emptyinterval(BareInterval{Float64}), ill)) - - @test_logs (:warn,) @test isnai(interval(bareinterval(-Inf,3.0), ill)) - - @test_logs (:warn,) @test isnai(interval(bareinterval(-1.0,3.0), ill)) - -end -@testset "minimal_decoration_part_test" begin - - @test decoration(nai()) === ill - - @test decoration(interval(emptyinterval(BareInterval{Float64}), trv)) === trv - - @test decoration(interval(bareinterval(-1.0,3.0), trv)) === trv - - @test decoration(interval(bareinterval(-1.0,3.0), def)) === def - - @test decoration(interval(bareinterval(-1.0,3.0), dac)) === dac - - @test decoration(interval(bareinterval(-1.0,3.0), com)) === com - -end diff --git a/test/ITF1788_tests/libieeep1788_elem.jl b/test/ITF1788_tests/libieeep1788_elem.jl deleted file mode 100644 index d8ad7baa8..000000000 --- a/test/ITF1788_tests/libieeep1788_elem.jl +++ /dev/null @@ -1,7876 +0,0 @@ -@testset "minimal_pos_test" begin - - @test +(bareinterval(1.0,2.0)) === bareinterval(1.0,2.0) - - @test +(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) - - @test +(bareinterval(-Inf,-1.0)) === bareinterval(-Inf,-1.0) - - @test +(bareinterval(0.0,2.0)) === bareinterval(0.0,2.0) - - @test +(bareinterval(-0.0,2.0)) === bareinterval(0.0,2.0) - - @test +(bareinterval(-2.5,-0.0)) === bareinterval(-2.5,0.0) - - @test +(bareinterval(-2.5,0.0)) === bareinterval(-2.5,0.0) - - @test +(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test +(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - -end -@testset "minimal_pos_dec_test" begin - - @test isnai(+(nai())) - - @test +(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test +(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) - - @test +(interval(bareinterval(1.0, 2.0), com)) === interval(bareinterval(1.0, 2.0), com) - -end -@testset "minimal_neg_test" begin - - @test -(bareinterval(1.0,2.0)) === bareinterval(-2.0,-1.0) - - @test -(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(1.0,Inf)) === bareinterval(-Inf,-1.0) - - @test -(bareinterval(-Inf,1.0)) === bareinterval(-1.0,Inf) - - @test -(bareinterval(0.0,2.0)) === bareinterval(-2.0,0.0) - - @test -(bareinterval(-0.0,2.0)) === bareinterval(-2.0,0.0) - - @test -(bareinterval(-2.0,0.0)) === bareinterval(0.0,2.0) - - @test -(bareinterval(-2.0,-0.0)) === bareinterval(0.0,2.0) - - @test -(bareinterval(0.0,-0.0)) === bareinterval(0.0,0.0) - - @test -(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - -end -@testset "minimal_neg_dec_test" begin - - @test isnai(-(nai())) - - @test -(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test -(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) - - @test -(interval(bareinterval(1.0, 2.0), com)) === interval(bareinterval(-2.0, -1.0), com) - -end -@testset "minimal_add_test" begin - - @test +(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test +(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test +(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test +(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)) === bareinterval(-Inf,6.0) - - @test +(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,6.0) - - @test +(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)) === bareinterval(-Inf,6.0) - - @test +(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === bareinterval(4.0,6.0) - - @test +(bareinterval(1.0,2.0), bareinterval(3.0,Inf)) === bareinterval(4.0,Inf) - - @test +(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(1.0,Inf), bareinterval(3.0,4.0)) === bareinterval(4.0,Inf) - - @test +(bareinterval(1.0,Inf), bareinterval(3.0,Inf)) === bareinterval(4.0,Inf) - - @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(3.0,4.0)) === bareinterval(4.0,Inf) - - @test +(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,4.0)) === bareinterval(-Inf,6.0) - - @test +(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) - - @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) - - @test +(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)) === bareinterval(-3.0,4.0) - - @test +(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023) - - @test +(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1) - - @test +(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) - - @test +(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.E666666666657P+0,0x1.0CCCCCCCCCCC5P+1) - -end -@testset "minimal_add_dec_test" begin - - @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(6.0,9.0), com) - - @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(6.0,9.0), def) - - @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(6.0,Inf), dac) - - @test +(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-0.1, 5.0), com)) === interval(bareinterval(-Inf,7.0), dac) - - @test +(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test isnai(+(nai(), interval(bareinterval(1.0,2.0), trv))) - -end -@testset "minimal_sub_test" begin - - @test -(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test -(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test -(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test -(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,-1.0) - - @test -(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,-1.0) - - @test -(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)) === bareinterval(-3.0,Inf) - - @test -(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === bareinterval(-3.0,-1.0) - - @test -(bareinterval(1.0,2.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,-1.0) - - @test -(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)) === bareinterval(-3.0,Inf) - - @test -(bareinterval(1.0,Inf), bareinterval(3.0,4.0)) === bareinterval(-3.0,Inf) - - @test -(bareinterval(1.0,Inf), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-3.0,4.0)) === bareinterval(-3.0,Inf) - - @test -(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,-1.0) - - @test -(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-0x1.FFFFFFFFFFFFFp1023,4.0)) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) - - @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) - - @test -(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)) === bareinterval(-4.0,3.0) - - @test -(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.FFFFFFFFFFFFFp1023,3.0) - - @test -(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) - - @test -(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1) - - @test -(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.0CCCCCCCCCCC5P+1,0x1.E666666666657P+0) - -end -@testset "minimal_sub_dec_test" begin - - @test -(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(-6.0,-3.0), com) - - @test -(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(-6.0,-3.0), def) - - @test -(interval(bareinterval(-1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-Inf,-3.0), dac) - - @test -(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-1.0, 5.0), com)) === interval(bareinterval(-Inf,3.0), dac) - - @test -(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test isnai(-(nai(), interval(bareinterval(1.0,2.0), trv))) - -end -@testset "minimal_mul_test" begin - - @test *(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test *(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test *(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test *(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test *(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test *(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test *(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0)) === bareinterval(-Inf,-1.0) - - @test *(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(1.0,Inf), bareinterval(1.0, 3.0)) === bareinterval(1.0,Inf) - - @test *(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0)) === bareinterval(-Inf,-1.0) - - @test *(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(1.0,Inf), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(1.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0,Inf) - - @test *(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0)) === bareinterval(-Inf,5.0) - - @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0)) === bareinterval(-3.0,Inf) - - @test *(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,Inf), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,3.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0)) === bareinterval(-15.0,Inf) - - @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,9.0) - - @test *(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,3.0), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0)) === bareinterval(3.0,Inf) - - @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,-3.0) - - @test *(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0)) === bareinterval(3.0,Inf) - - @test *(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf)) === bareinterval(-Inf,-3.0) - - @test *(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(1.0, 3.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(-5.0, Inf)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), bareinterval(1.0, Inf)) === bareinterval(0.0,0.0) - - @test *(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test *(bareinterval(1.0,5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0)) === bareinterval(-25.0,-1.0) - - @test *(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0)) === bareinterval(-25.0,15.0) - - @test *(bareinterval(1.0,5.0), bareinterval(1.0, 3.0)) === bareinterval(1.0,15.0) - - @test *(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0)) === bareinterval(-Inf,-1.0) - - @test *(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0)) === bareinterval(-Inf,15.0) - - @test *(bareinterval(1.0,5.0), bareinterval(-5.0, Inf)) === bareinterval(-25.0,Inf) - - @test *(bareinterval(1.0,5.0), bareinterval(1.0, Inf)) === bareinterval(1.0,Inf) - - @test *(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0)) === bareinterval(-25.0,5.0) - - @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0)) === bareinterval(-25.0,15.0) - - @test *(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0)) === bareinterval(-30.0,50.0) - - @test *(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0)) === bareinterval(-10.0,50.0) - - @test *(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0)) === bareinterval(-10.0,10.0) - - @test *(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0)) === bareinterval(-3.0,15.0) - - @test *(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,5.0), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0)) === bareinterval(5.0,50.0) - - @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0)) === bareinterval(-30.0,50.0) - - @test *(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0)) === bareinterval(-30.0,-5.0) - - @test *(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0)) === bareinterval(5.0,Inf) - - @test *(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0)) === bareinterval(-30.0,Inf) - - @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf)) === bareinterval(-Inf,50.0) - - @test *(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf)) === bareinterval(-Inf,-5.0) - - @test *(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0, Inf)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,Inf) - - @test *(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,0x1.999999999998EP-3) - - @test *(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4), bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)) === bareinterval(-0x1.999999999998EP-3,0x1.999999999998EP-3) - - @test *(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4), bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,-0x1.47AE147AE147BP-7) - -end -@testset "minimal_mul_dec_test" begin - - @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(5.0,14.0), com) - - @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(5.0,14.0), def) - - @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(5.0,Inf), dac) - - @test *(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-1.0, 5.0), com)) === interval(bareinterval(-Inf,0x1.FFFFFFFFFFFFFp1023), dac) - - @test *(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test isnai(*(nai(), interval(bareinterval(1.0,2.0), trv))) - -end -@testset "minimal_div_test" begin - - @test /(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test /(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test /(emptyinterval(BareInterval{Float64}), bareinterval(0.1,1.0)) === emptyinterval(BareInterval{Float64}) - - @test /(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test /(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test /(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test /(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -3.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-5.0, -3.0)) === bareinterval(3.0,10.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,-3.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, 0.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, -0.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-15.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-15.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,-15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-5.0, -3.0)) === bareinterval(-5.0,10.0) - - @test /(bareinterval(-30.0,15.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,5.0) - - @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, -3.0)) === bareinterval(-5.0,10.0) - - @test /(bareinterval(-30.0,15.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,5.0) - - @test /(bareinterval(-30.0,15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,-3.0) - - @test /(bareinterval(15.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(3.0,10.0) - - @test /(bareinterval(15.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(15.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) - - @test /(bareinterval(15.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(15.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(15.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(15.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(15.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(15.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(15.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(15.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(15.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(3.0,Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-3.0, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-3.0, Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(0.0, Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(3.0,Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(0.0, Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,0.0) - - @test /(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-5.0, -3.0)) === bareinterval(3.0,Inf) - - @test /(bareinterval(-Inf,-15.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,-3.0) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-15.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, 0.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, -0.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-15.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-15.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-5.0, -3.0)) === bareinterval(-5.0,Inf) - - @test /(bareinterval(-Inf,15.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,5.0) - - @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, -3.0)) === bareinterval(-5.0,Inf) - - @test /(bareinterval(-Inf,15.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,5.0) - - @test /(bareinterval(-Inf,15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,5.0) - - @test /(bareinterval(-15.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(-5.0,Inf) - - @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,5.0) - - @test /(bareinterval(-15.0,Inf), bareinterval(3.0,Inf)) === bareinterval(-5.0,Inf) - - @test /(bareinterval(-15.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-15.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,-3.0) - - @test /(bareinterval(15.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(3.0,Inf) - - @test /(bareinterval(15.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(15.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(15.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(15.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,-5.0) - - @test /(bareinterval(15.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(15.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(15.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(5.0,Inf) - - @test /(bareinterval(15.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(15.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(15.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(15.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(15.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-30.0,-0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-30.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(0.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(0.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(0.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) - - @test /(bareinterval(0.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,0.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,0.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-0.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-0.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf,-0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-Inf,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(0.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test /(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-2.0,-1.0), bareinterval(-10.0, -3.0)) === bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1) - - @test /(bareinterval(-2.0,-1.0), bareinterval(0.0, 10.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) - - @test /(bareinterval(-2.0,-1.0), bareinterval(-0.0, 10.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) - - @test /(bareinterval(-1.0,2.0), bareinterval(10.0,Inf)) === bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-3) - - @test /(bareinterval(1.0,3.0), bareinterval(-Inf, -10.0)) === bareinterval(-0x1.3333333333334P-2,0.0) - - @test /(bareinterval(-Inf,-1.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,-0x1.5555555555555P-2) - -end -@testset "minimal_div_dec_test" begin - - @test /(interval(bareinterval(-2.0,-1.0), com), interval(bareinterval(-10.0, -3.0), com)) === interval(bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1), com) - - @test /(interval(bareinterval(-200.0,-1.0), com), interval(bareinterval(0x0.0000000000001p-1022, 10.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), dac) - - @test /(interval(bareinterval(-2.0,-1.0), com), interval(bareinterval(0.0, 10.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), trv) - - @test /(interval(bareinterval(1.0,3.0), def), interval(bareinterval(-Inf, -10.0), dac)) === interval(bareinterval(-0x1.3333333333334P-2,0.0), def) - - @test /(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test isnai(/(nai(), interval(bareinterval(1.0,2.0), trv))) - -end -@testset "minimal_recip_test" begin - - @test inv(bareinterval(-50.0, -10.0)) === bareinterval(-0x1.999999999999AP-4,-0x1.47AE147AE147AP-6) - - @test inv(bareinterval(10.0, 50.0)) === bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4) - - @test inv(bareinterval(-Inf, -10.0)) === bareinterval(-0x1.999999999999AP-4,0.0) - - @test inv(bareinterval(10.0,Inf)) === bareinterval(0.0,0x1.999999999999AP-4) - - @test inv(bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test inv(bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test inv(bareinterval(-10.0, 0.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) - - @test inv(bareinterval(-10.0, -0.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) - - @test inv(bareinterval(-10.0, 10.0)) === entireinterval(BareInterval{Float64}) - - @test inv(bareinterval(0.0, 10.0)) === bareinterval(0x1.9999999999999P-4,Inf) - - @test inv(bareinterval(-0.0, 10.0)) === bareinterval(0x1.9999999999999P-4,Inf) - - @test inv(bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) - - @test inv(bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) - - @test inv(bareinterval(-Inf, 10.0)) === entireinterval(BareInterval{Float64}) - - @test inv(bareinterval(-10.0, Inf)) === entireinterval(BareInterval{Float64}) - - @test inv(bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) - - @test inv(bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) - - @test inv(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - -end -@testset "minimal_recip_dec_test" begin - - @test inv(interval(bareinterval(10.0, 50.0), com)) === interval(bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4), com) - - @test inv(interval(bareinterval(-Inf, -10.0), dac)) === interval(bareinterval(-0x1.999999999999AP-4,0.0), dac) - - @test inv(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, -0x0.0000000000001p-1022), def)) === interval(bareinterval(-Inf,-0x0.4P-1022), def) - - @test inv(interval(bareinterval(0.0,0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test inv(interval(bareinterval(-10.0, 0.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), trv) - - @test inv(interval(bareinterval(-10.0, Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test inv(interval(bareinterval(-0.0, Inf), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test inv(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - -end -@testset "minimal_sqr_test" begin - - @test pown(emptyinterval(BareInterval{Float64}), 2) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,-0x0.0000000000001p-1022), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-1.0,1.0), 2) === bareinterval(0.0,1.0) - - @test pown(bareinterval(0.0,1.0), 2) === bareinterval(0.0,1.0) - - @test pown(bareinterval(-0.0,1.0), 2) === bareinterval(0.0,1.0) - - @test pown(bareinterval(-5.0,3.0), 2) === bareinterval(0.0,25.0) - - @test pown(bareinterval(-5.0,0.0), 2) === bareinterval(0.0,25.0) - - @test pown(bareinterval(-5.0,-0.0), 2) === bareinterval(0.0,25.0) - - @test pown(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), 2) === bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4), 2) === bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.FFFFFFFFFFFFP+0), 2) === bareinterval(0x1.FFFFFFFFFFFEP+1,0x1.FFFFFFFFFFFE1P+1) - -end -@testset "minimal_sqr_dec_test" begin - - @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x0.0000000000001p-1022), com), 2) === interval(bareinterval(0.0,Inf), dac) - - @test pown(interval(bareinterval(-1.0,1.0), def), 2) === interval(bareinterval(0.0,1.0), def) - - @test pown(interval(bareinterval(-5.0,3.0), com), 2) === interval(bareinterval(0.0,25.0), com) - - @test pown(interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), com), 2) === interval(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), com) - -end -@testset "minimal_sqrt_test" begin - - @test sqrt(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test sqrt(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test sqrt(bareinterval(-Inf,-0x0.0000000000001p-1022)) === emptyinterval(BareInterval{Float64}) - - @test sqrt(bareinterval(-1.0,1.0)) === bareinterval(0.0,1.0) - - @test sqrt(bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test sqrt(bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test sqrt(bareinterval(-5.0,25.0)) === bareinterval(0.0,5.0) - - @test sqrt(bareinterval(0.0,25.0)) === bareinterval(0.0,5.0) - - @test sqrt(bareinterval(-0.0,25.0)) === bareinterval(0.0,5.0) - - @test sqrt(bareinterval(-5.0,Inf)) === bareinterval(0.0,Inf) - - @test sqrt(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.43D136248490FP-2,0x1.43D136248491P-2) - - @test sqrt(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)) === bareinterval(0.0,0x1.43D136248491P-2) - - @test sqrt(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)) === bareinterval(0x1.43D136248490FP-2,0x1.6A09E667F3BC7P+0) - -end -@testset "minimal_sqrt_dec_test" begin - - @test sqrt(interval(bareinterval(1.0,4.0), com)) === interval(bareinterval(1.0,2.0), com) - - @test sqrt(interval(bareinterval(-5.0,25.0), com)) === interval(bareinterval(0.0,5.0), trv) - - @test sqrt(interval(bareinterval(0.0,25.0), def)) === interval(bareinterval(0.0,5.0), def) - - @test sqrt(interval(bareinterval(-5.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) - -end -@testset "minimal_fma_test" begin - - @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,7.0) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,11.0) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-1.0) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-1.0) - - @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,7.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) - - @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) - - @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,12.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-3.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-3.0) - - @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,7.0) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-5.0,Inf) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-17.0,Inf) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,11.0) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(1.0,Inf) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-1.0) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(1.0,Inf) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-1.0) - - @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,1.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,17.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-1.0,17.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,17.0) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-27.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,7.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,17.0) - - @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,52.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,2.0)) === bareinterval(-12.0,52.0) - - @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-12.0,12.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-5.0,17.0) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(3.0,52.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,52.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,-3.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(3.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,52.0) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-3.0) - - @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-5.0,Inf) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-17.0,Inf) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(1.0,Inf) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(1.0,Inf) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) - - @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) - - @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,Inf)) === bareinterval(-12.0,Inf) - - @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-12.0,Inf) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-5.0,Inf) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(3.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(3.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test fma(bareinterval(0.1,0.5), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.4CCCCCCCCCCCDP+1,0x1.999999999999AP+0) - - @test fma(bareinterval(-0.5,0.2), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,0x1.4CCCCCCCCCCCDP+1) - - @test fma(bareinterval(-0.5,-0.1), bareinterval(2.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,-0x1.999999999999AP-4) - - @test fma(bareinterval(-0.5,-0.1), bareinterval(-Inf, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,Inf) - -end -@testset "minimal_fma_dec_test" begin - - @test fma(interval(bareinterval(-0.5,-0.1), com), interval(bareinterval(-Inf, 3.0), dac), interval(bareinterval(-0.1,0.1), com)) === interval(bareinterval(-0x1.999999999999AP+0,Inf), dac) - - @test fma(interval(bareinterval(1.0,2.0), com), interval(bareinterval(1.0, 0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(1.0,Inf), dac) - - @test fma(interval(bareinterval(1.0,2.0), com), interval(bareinterval(1.0, 2.0), com), interval(bareinterval(2.0,5.0), com)) === interval(bareinterval(3.0,9.0), com) - -end -@testset "minimal_pown_test" begin - - @test pown(emptyinterval(BareInterval{Float64}), 0) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(0.0,0.0), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-0.0,-0.0), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(13.1,13.1), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-7451.145,-7451.145), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(0.0,Inf), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-0.0,Inf), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-Inf,0.0), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-Inf,-0.0), 0) === bareinterval(1.0,1.0) - - @test pown(bareinterval(-324.3,2.5), 0) === bareinterval(1.0,1.0) - - @test pown(emptyinterval(BareInterval{Float64}), 2) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(0.0,0.0), 2) === bareinterval(0.0,0.0) - - @test pown(bareinterval(-0.0,-0.0), 2) === bareinterval(0.0,0.0) - - @test pown(bareinterval(13.1,13.1), 2) === bareinterval(0x1.573851EB851EBP+7,0x1.573851EB851ECP+7) - - @test pown(bareinterval(-7451.145,-7451.145), 2) === bareinterval(0x1.A794A4E7CFAADP+25,0x1.A794A4E7CFAAEP+25) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 2) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 2) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test pown(bareinterval(0.0,Inf), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,-0.0), 2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-324.3,2.5), 2) === bareinterval(0.0,0x1.9AD27D70A3D72P+16) - - @test pown(bareinterval(0.01,2.33), 2) === bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2) - - @test pown(bareinterval(-1.9,-0.33), 2) === bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1) - - @test pown(emptyinterval(BareInterval{Float64}), 8) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(0.0,0.0), 8) === bareinterval(0.0,0.0) - - @test pown(bareinterval(-0.0,-0.0), 8) === bareinterval(0.0,0.0) - - @test pown(bareinterval(13.1,13.1), 8) === bareinterval(0x1.9D8FD495853F5P+29,0x1.9D8FD495853F6P+29) - - @test pown(bareinterval(-7451.145,-7451.145), 8) === bareinterval(0x1.DFB1BB622E70DP+102,0x1.DFB1BB622E70EP+102) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 8) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 8) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test pown(bareinterval(0.0,Inf), 8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), 8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), 8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,-0.0), 8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-324.3,2.5), 8) === bareinterval(0.0,0x1.A87587109655P+66) - - @test pown(bareinterval(0.01,2.33), 8) === bareinterval(0x1.CD2B297D889BDP-54,0x1.B253D9F33CE4DP+9) - - @test pown(bareinterval(-1.9,-0.33), 8) === bareinterval(0x1.26F1FCDD502A3P-13,0x1.53ABD7BFC4FC6P+7) - - @test pown(emptyinterval(BareInterval{Float64}), 1) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 1) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.0,0.0), 1) === bareinterval(0.0,0.0) - - @test pown(bareinterval(-0.0,-0.0), 1) === bareinterval(0.0,0.0) - - @test pown(bareinterval(13.1,13.1), 1) === bareinterval(13.1,13.1) - - @test pown(bareinterval(-7451.145,-7451.145), 1) === bareinterval(-7451.145,-7451.145) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 1) === bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 1) === bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023) - - @test pown(bareinterval(0.0,Inf), 1) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), 1) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), 1) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-Inf,-0.0), 1) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-324.3,2.5), 1) === bareinterval(-324.3,2.5) - - @test pown(bareinterval(0.01,2.33), 1) === bareinterval(0.01,2.33) - - @test pown(bareinterval(-1.9,-0.33), 1) === bareinterval(-1.9,-0.33) - - @test pown(emptyinterval(BareInterval{Float64}), 3) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 3) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.0,0.0), 3) === bareinterval(0.0,0.0) - - @test pown(bareinterval(-0.0,-0.0), 3) === bareinterval(0.0,0.0) - - @test pown(bareinterval(13.1,13.1), 3) === bareinterval(0x1.1902E978D4FDEP+11,0x1.1902E978D4FDFP+11) - - @test pown(bareinterval(-7451.145,-7451.145), 3) === bareinterval(-0x1.81460637B9A3DP+38,-0x1.81460637B9A3CP+38) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 3) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 3) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) - - @test pown(bareinterval(0.0,Inf), 3) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), 3) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), 3) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-Inf,-0.0), 3) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-324.3,2.5), 3) === bareinterval(-0x1.0436D2F418938P+25,0x1.F4P+3) - - @test pown(bareinterval(0.01,2.33), 3) === bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3) - - @test pown(bareinterval(-1.9,-0.33), 3) === bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5) - - @test pown(emptyinterval(BareInterval{Float64}), 7) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), 7) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.0,0.0), 7) === bareinterval(0.0,0.0) - - @test pown(bareinterval(-0.0,-0.0), 7) === bareinterval(0.0,0.0) - - @test pown(bareinterval(13.1,13.1), 7) === bareinterval(0x1.F91D1B185493BP+25,0x1.F91D1B185493CP+25) - - @test pown(bareinterval(-7451.145,-7451.145), 7) === bareinterval(-0x1.07B1DA32F9B59P+90,-0x1.07B1DA32F9B58P+90) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 7) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 7) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) - - @test pown(bareinterval(0.0,Inf), 7) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), 7) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), 7) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-Inf,-0.0), 7) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-324.3,2.5), 7) === bareinterval(-0x1.4F109959E6D7FP+58,0x1.312DP+9) - - @test pown(bareinterval(0.01,2.33), 7) === bareinterval(0x1.6849B86A12B9BP-47,0x1.74D0373C76313P+8) - - @test pown(bareinterval(-1.9,-0.33), 7) === bareinterval(-0x1.658C775099757P+6,-0x1.BEE30301BF47AP-12) - - @test pown(emptyinterval(BareInterval{Float64}), -2) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), -2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(0.0,0.0), -2) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(-0.0,-0.0), -2) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(13.1,13.1), -2) === bareinterval(0x1.7DE3A077D1568P-8,0x1.7DE3A077D1569P-8) - - @test pown(bareinterval(-7451.145,-7451.145), -2) === bareinterval(0x1.3570290CD6E14P-26,0x1.3570290CD6E15P-26) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -2) === bareinterval(0x0P+0,0x0.0000000000001P-1022) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -2) === bareinterval(0x0P+0,0x0.0000000000001P-1022) - - @test pown(bareinterval(0.0,Inf), -2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), -2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), -2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,-0.0), -2) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-324.3,2.5), -2) === bareinterval(0x1.3F0C482C977C9P-17,Inf) - - @test pown(bareinterval(0.01,2.33), -2) === bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13) - - @test pown(bareinterval(-1.9,-0.33), -2) === bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3) - - @test pown(emptyinterval(BareInterval{Float64}), -8) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), -8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(0.0,0.0), -8) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(-0.0,-0.0), -8) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(13.1,13.1), -8) === bareinterval(0x1.3CEF39247CA6DP-30,0x1.3CEF39247CA6EP-30) - - @test pown(bareinterval(-7451.145,-7451.145), -8) === bareinterval(0x1.113D9EF0A99ACP-103,0x1.113D9EF0A99ADP-103) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -8) === bareinterval(0x0P+0,0x0.0000000000001P-1022) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -8) === bareinterval(0x0P+0,0x0.0000000000001P-1022) - - @test pown(bareinterval(0.0,Inf), -8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), -8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), -8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,-0.0), -8) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-324.3,2.5), -8) === bareinterval(0x1.34CC3764D1E0CP-67,Inf) - - @test pown(bareinterval(0.01,2.33), -8) === bareinterval(0x1.2DC80DB11AB7CP-10,0x1.1C37937E08P+53) - - @test pown(bareinterval(-1.9,-0.33), -8) === bareinterval(0x1.81E104E61630DP-8,0x1.BC64F21560E34P+12) - - @test pown(emptyinterval(BareInterval{Float64}), -1) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), -1) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.0,0.0), -1) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(-0.0,-0.0), -1) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(13.1,13.1), -1) === bareinterval(0x1.38ABF82EE6986P-4,0x1.38ABF82EE6987P-4) - - @test pown(bareinterval(-7451.145,-7451.145), -1) === bareinterval(-0x1.197422C9048BFP-13,-0x1.197422C9048BEP-13) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -1) === bareinterval(0x0.4P-1022,0x0.4000000000001P-1022) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -1) === bareinterval(-0x0.4000000000001P-1022,-0x0.4P-1022) - - @test pown(bareinterval(0.0,Inf), -1) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), -1) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), -1) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-Inf,-0.0), -1) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-324.3,2.5), -1) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.01,2.33), -1) === bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6) - - @test pown(bareinterval(-1.9,-0.33), -1) === bareinterval(-0x1.83E0F83E0F83EP+1,-0x1.0D79435E50D79P-1) - - @test pown(emptyinterval(BareInterval{Float64}), -3) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), -3) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.0,0.0), -3) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(-0.0,-0.0), -3) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(13.1,13.1), -3) === bareinterval(0x1.D26DF4D8B1831P-12,0x1.D26DF4D8B1832P-12) - - @test pown(bareinterval(-7451.145,-7451.145), -3) === bareinterval(-0x1.54347DED91B19P-39,-0x1.54347DED91B18P-39) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -3) === bareinterval(0x0P+0,0x0.0000000000001P-1022) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -3) === bareinterval(-0x0.0000000000001P-1022,-0x0P+0) - - @test pown(bareinterval(0.0,Inf), -3) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), -3) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), -3) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-Inf,-0.0), -3) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-324.3,2.5), -3) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.01,2.33), -3) === bareinterval(0x1.43CFBA61AACABP-4,0x1.E848P+19) - - @test pown(bareinterval(-1.9,-0.33), -3) === bareinterval(-0x1.BD393CE9E8E7CP+4,-0x1.2A95F6F7C066CP-3) - - @test pown(emptyinterval(BareInterval{Float64}), -7) === emptyinterval(BareInterval{Float64}) - - @test pown(entireinterval(BareInterval{Float64}), -7) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.0,0.0), -7) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(-0.0,-0.0), -7) === emptyinterval(BareInterval{Float64}) - - @test pown(bareinterval(13.1,13.1), -7) === bareinterval(0x1.037D76C912DBCP-26,0x1.037D76C912DBDP-26) - - @test pown(bareinterval(-7451.145,-7451.145), -7) === bareinterval(-0x1.F10F41FB8858FP-91,-0x1.F10F41FB8858EP-91) - - @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -7) === bareinterval(0x0P+0,0x0.0000000000001P-1022) - - @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -7) === bareinterval(-0x0.0000000000001P-1022,-0x0P+0) - - @test pown(bareinterval(0.0,Inf), -7) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-0.0,Inf), -7) === bareinterval(0.0,Inf) - - @test pown(bareinterval(-Inf,0.0), -7) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-Inf,-0.0), -7) === bareinterval(-Inf,0.0) - - @test pown(bareinterval(-324.3,2.5), -7) === entireinterval(BareInterval{Float64}) - - @test pown(bareinterval(0.01,2.33), -7) === bareinterval(0x1.5F934D64162A9P-9,0x1.6BCC41E9P+46) - - @test pown(bareinterval(-1.9,-0.33), -7) === bareinterval(-0x1.254CDD3711DDBP+11,-0x1.6E95C4A761E19P-7) - -end -@testset "minimal_pown_dec_test" begin - - @test pown(interval(bareinterval(-5.0,10.0), com), 0) === interval(bareinterval(1.0,1.0), com) - - @test pown(interval(bareinterval(-Inf,15.0), dac), 0) === interval(bareinterval(1.0,1.0), dac) - - @test pown(interval(bareinterval(-3.0,5.0), def), 2) === interval(bareinterval(0.0,25.0), def) - - @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), 2) === interval(bareinterval(0.0,Inf), dac) - - @test pown(interval(bareinterval(-3.0,5.0), dac), 3) === interval(bareinterval(-27.0,125.0), dac) - - @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), 3) === interval(bareinterval(-Inf, 8.0), dac) - - @test pown(interval(bareinterval(3.0,5.0), com), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), com) - - @test pown(interval(bareinterval(-5.0,-3.0), def), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), def) - - @test pown(interval(bareinterval(-5.0,3.0), com), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,Inf), trv) - - @test pown(interval(bareinterval(3.0,5.0), dac), -3) === interval(bareinterval(0x1.0624DD2F1A9FBP-7 ,0x1.2F684BDA12F69P-5), dac) - - @test pown(interval(bareinterval(-3.0,5.0), com), -3) === interval(entireinterval(BareInterval{Float64}), trv) - -end -@testset "minimal_pow_test" begin - - @test ^(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(0.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-3.0,5.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-5.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(emptyinterval(BareInterval{Float64}), bareinterval(5.0,5.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.1,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0x1P-1) - - @test ^(bareinterval(0.1,0.5), bareinterval(2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(0.1,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,0.1)) === bareinterval(0x1.96B230BCDC434P-1,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,1.0)) === bareinterval(0x1.999999999999AP-4,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,Inf) - - @test ^(bareinterval(0.1,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,0x1.4P+3) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(0.1,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(0.1,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.1,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(1.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,0.1)) === bareinterval(0x1.96B230BCDC434P-1,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,1.0)) === bareinterval(0x1.999999999999AP-4,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,Inf) - - @test ^(bareinterval(0.1,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,0x1.4P+3) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.1,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) - - @test ^(bareinterval(0.1,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.5,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.0,1.0)) === bareinterval(0.5,1.5) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.5,1.5) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.1,1.0)) === bareinterval(0.5,1.5) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(1.0,1.0)) === bareinterval(0.5,1.5) - - @test ^(bareinterval(0.5,1.5), bareinterval(1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,0x1.125FBEE250665P+0) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1P-1,0x1.8P+0) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1P-1,0x1P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.125FBEE250665P+0) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,0x1P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(0.5,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.5,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.5,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.1,1.0)) === bareinterval(0.5,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(1.0,1.0)) === bareinterval(0.5,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,0x1P+1) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,0x1P+1) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,0x1.125FBEE250665P+0) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,0x1P+1) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,0x1P+1) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.5,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) - - @test ^(bareinterval(1.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.0,1.0)) === bareinterval(1.0,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(1.0,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.1,0.1)) === bareinterval(1.0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.1,1.0)) === bareinterval(1.0,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.1,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(0.1,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(1.0,1.0)) === bareinterval(1.0,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(1.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(2.5,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(2.5,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.5555555555555P-1,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,0x1.8P+0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.0,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.1,0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.1,1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.1,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(0.1,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(1.0,1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(1.0,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(2.5,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(2.5,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.0,1.0)) === bareinterval(1.0,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,1.0)) === bareinterval(1.0,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.1,0.1)) === bareinterval(0x1.02739C65D58BFP+0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.1,1.0)) === bareinterval(0x1.02739C65D58BFP+0,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.1,2.5)) === bareinterval(0x1.02739C65D58BFP+0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(0.1,Inf)) === bareinterval(0x1.02739C65D58BFP+0,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(1.0,1.0)) === bareinterval(0x1.199999999999AP+0,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(1.0,2.5)) === bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(1.0,Inf)) === bareinterval(0x1.199999999999AP+0,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(2.5,2.5)) === bareinterval(0x1.44E1080833B25P+0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(2.5,Inf)) === bareinterval(0x1.44E1080833B25P+0,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.5555555555555P-1,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,0x1.8P+0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(1.1,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,0x1.D1745D1745D17P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.D1745D1745D17P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.9372D999784C8P-1) - - @test ^(bareinterval(1.1,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) - - @test ^(bareinterval(1.1,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.0,1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.0,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.1,0.1)) === bareinterval(0x1.02739C65D58BFP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.1,1.0)) === bareinterval(0x1.02739C65D58BFP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.1,2.5)) === bareinterval(0x1.02739C65D58BFP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(0.1,Inf)) === bareinterval(0x1.02739C65D58BFP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(1.0,1.0)) === bareinterval(0x1.199999999999AP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(1.0,2.5)) === bareinterval(0x1.199999999999AP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(1.0,Inf)) === bareinterval(0x1.199999999999AP+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(2.5,2.5)) === bareinterval(0x1.44E1080833B25P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(2.5,Inf)) === bareinterval(0x1.44E1080833B25P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) - - @test ^(bareinterval(1.1,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) - - @test ^(bareinterval(1.1,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) - - @test ^(bareinterval(0.0,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.0,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(0.0,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(0.0,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(0.0,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(0.0,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(0.0,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(0.0,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(0.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(0.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.0,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(0.0,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.0,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(0.0,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(0.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.0,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.0,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(-0.0,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(-0.0,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(-0.0,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(-0.0,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(-0.0,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(-0.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.0,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.0,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.0,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.0,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.1,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) - - @test ^(bareinterval(-0.1,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(-0.1,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(-0.1,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) - - @test ^(bareinterval(-0.1,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(-0.1,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(-0.1,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) - - @test ^(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) - - @test ^(bareinterval(-0.1,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.1,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) - - @test ^(bareinterval(-0.1,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.1,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) - - @test ^(bareinterval(-0.1,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) - - @test ^(bareinterval(-0.1,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(-0.1,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) - - @test ^(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-0.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(0.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(0.1,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(1.0,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(2.5,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(2.5,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,Inf)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) - - @test ^(bareinterval(-1.0,-0.1), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) - -end -@testset "minimal_pow_dec_test" begin - - @test ^(interval(bareinterval(0.1,0.5), com), interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(0x1.999999999999AP-4,1.0), com) - - @test ^(interval(bareinterval(0.1,0.5), com), interval(bareinterval(0.1,0.1), def)) === interval(bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1), def) - - @test ^(interval(bareinterval(0.1,0.5), trv), interval(bareinterval(-2.5,2.5), dac)) === interval(bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8), trv) - - @test ^(interval(bareinterval(0.1,0.5), com), interval(bareinterval(-2.5,Inf), dac)) === interval(bareinterval(0.0,0x1.3C3A4EDFA9758P+8), dac) - - @test ^(interval(bareinterval(0.1,0.5), trv), interval(bareinterval(-Inf,0.1), dac)) === interval(bareinterval(0x1.96B230BCDC434P-1,Inf), trv) - - @test ^(interval(bareinterval(0.1,1.0), com), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0x1.9E7C6E43390B7P-9,1.0), com) - - @test ^(interval(bareinterval(0.1,1.0), def), interval(bareinterval(1.0,1.0), dac)) === interval(bareinterval(0x1.999999999999AP-4,1.0), def) - - @test ^(interval(bareinterval(0.1,1.0), trv), interval(bareinterval(-2.5,1.0), def)) === interval(bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8), trv) - - @test ^(interval(bareinterval(0.5,1.5), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0), dac) - - @test ^(interval(bareinterval(0.5,1.5), def), interval(bareinterval(-2.5,0.1), trv)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), trv) - - @test ^(interval(bareinterval(0.5,1.5), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), com) - - @test ^(interval(bareinterval(0.5,Inf), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0x1.DDB680117AB12P-1,Inf), dac) - - @test ^(interval(bareinterval(0.5,Inf), def), interval(bareinterval(-2.5,-0.0), com)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP+2), def) - - @test ^(interval(bareinterval(1.0,1.5), com), interval(bareinterval(-0.1,0.1), def)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0), def) - - @test ^(interval(bareinterval(1.0,1.5), trv), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,1.0), trv) - - @test ^(interval(bareinterval(1.0,Inf), dac), interval(bareinterval(1.0,1.0), dac)) === interval(bareinterval(1.0,Inf), dac) - - @test ^(interval(bareinterval(1.0,Inf), def), interval(bareinterval(-1.0,-0.0), dac)) === interval(bareinterval(0x0P+0,1.0), def) - - @test ^(interval(bareinterval(1.1,1.5), def), interval(bareinterval(1.0,2.5), com)) === interval(bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1), def) - - @test ^(interval(bareinterval(1.1,1.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1), com) - - @test ^(interval(bareinterval(1.1,Inf), dac), interval(bareinterval(0.1,Inf), dac)) === interval(bareinterval(0x1.02739C65D58BFP+0,Inf), dac) - - @test ^(interval(bareinterval(1.1,Inf), def), interval(bareinterval(-2.5,Inf), dac)) === interval(bareinterval(0x0P+0,Inf), def) - - @test ^(interval(bareinterval(1.1,Inf), trv), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0x0P+0,0x1.D1745D1745D17P-1), trv) - - @test ^(interval(bareinterval(0.0,0.5), com), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), com) - - @test ^(interval(bareinterval(0.0,0.5), com), interval(bareinterval(2.5,Inf), dac)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), dac) - - @test ^(interval(bareinterval(0.0,0.5), com), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.0), com), interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(1.0,1.0), trv) - - @test ^(interval(bareinterval(0.0,1.0), def), interval(bareinterval(0.0,2.5), dac)) === interval(bareinterval(0.0,1.0), trv) - - @test ^(interval(bareinterval(0.0,1.0), dac), interval(bareinterval(1.0,2.5), com)) === interval(bareinterval(0.0,1.0), dac) - - @test ^(interval(bareinterval(0.0,1.0), com), interval(bareinterval(-2.5,0.1), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.0), def), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.0), dac), interval(bareinterval(-0.1,0.0), com)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.0), com), interval(bareinterval(-Inf,0.0), dac)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.0), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.5), com), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) - - @test ^(interval(bareinterval(0.0,1.5), def), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), def) - - @test ^(interval(bareinterval(0.0,1.5), dac), interval(bareinterval(-1.0,0.0), com)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) - - @test ^(interval(bareinterval(0.0,1.5), com), interval(bareinterval(-2.5,-2.5), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) - - @test ^(interval(bareinterval(0.0,Inf), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0.0,Inf), dac) - - @test ^(interval(bareinterval(0.0,Inf), def), interval(bareinterval(-1.0,1.0), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,Inf), trv), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,Inf), dac), interval(bareinterval(-2.5,-2.5), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,0.5), com), interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,1.0), trv) - - @test ^(interval(bareinterval(-0.0,0.5), def), interval(bareinterval(0.1,Inf), def)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), def) - - @test ^(interval(bareinterval(-0.0,0.5), dac), interval(bareinterval(2.5,2.5), com)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), dac) - - @test ^(interval(bareinterval(-0.0,0.5), trv), interval(bareinterval(-2.5,-0.0), dac)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,0.5), com), interval(bareinterval(-Inf,-0.1), def)) === interval(bareinterval(0x1.125FBEE250664P+0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,0.5), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.0), com), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,1.0), dac) - - @test ^(interval(bareinterval(-0.0,1.0), dac), interval(bareinterval(-1.0,Inf), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.0), com), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.0), def), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.0), dac), interval(bareinterval(-Inf,-2.5), def)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.5), com), interval(bareinterval(0.1,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), dac) - - @test ^(interval(bareinterval(-0.0,1.5), def), interval(bareinterval(-1.0,0.0), trv)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.5), dac), interval(bareinterval(-2.5,-0.1), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.5), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) - - @test ^(interval(bareinterval(-0.0,1.5), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,Inf), dac), interval(bareinterval(-0.1,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,Inf), def), interval(bareinterval(-2.5,-0.0), com)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,Inf), trv), interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,Inf), dac), interval(bareinterval(-Inf,-0.0), trv)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.0,Inf), def), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,0.5), def), interval(bareinterval(0.1,Inf), dac)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), trv) - - @test ^(interval(bareinterval(-0.1,0.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.125FBEE250664P+0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,0.5), dac), interval(bareinterval(-Inf,-2.5), def)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.0), com), interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(1.0,1.0), trv) - - @test ^(interval(bareinterval(-0.1,1.0), dac), interval(bareinterval(-Inf,2.5), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.0), def), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.0), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.0), trv), interval(bareinterval(-Inf,-2.5), trv)) === interval(bareinterval(1.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.5), trv), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) - - @test ^(interval(bareinterval(-0.1,1.5), com), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) - - @test ^(interval(bareinterval(-0.1,1.5), dac), interval(bareinterval(-1.0,0.0), trv)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,Inf), trv) - - @test ^(interval(bareinterval(-0.1,1.5), def), interval(bareinterval(-2.5,-2.5), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) - - @test ^(interval(bareinterval(-0.1,Inf), dac), interval(bareinterval(-0.1,2.5), com)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,Inf), def), interval(bareinterval(-2.5,0.0), def)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(-0.1,Inf), dac), interval(bareinterval(-2.5,-2.5), trv)) === interval(bareinterval(0.0,Inf), trv) - - @test ^(interval(bareinterval(0.0,0.0), com), interval(bareinterval(1.0,Inf), dac)) === interval(bareinterval(0.0,0.0), dac) - - @test ^(interval(bareinterval(0.0,0.0), com), interval(bareinterval(-2.5,0.1), com)) === interval(bareinterval(0.0,0.0), trv) - - @test ^(interval(bareinterval(0.0,0.0), dac), interval(bareinterval(-1.0,0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test ^(interval(bareinterval(-1.0,-0.1), com), interval(bareinterval(-0.1,1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test ^(interval(bareinterval(-1.0,-0.1), dac), interval(bareinterval(-0.1,2.5), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test ^(interval(bareinterval(-1.0,-0.1), def), interval(bareinterval(-0.1,Inf), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - -end -@testset "minimal_exp_test" begin - - @test exp(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test exp(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) - - @test exp(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) - - @test exp(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test exp(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test exp(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test exp(bareinterval(-Inf,0x1.62E42FEFA39FP+9)) === bareinterval(0.0,Inf) - - @test exp(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9)) === bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf) - - @test exp(bareinterval(0.0,0x1.62E42FEFA39EP+9)) === bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023) - - @test exp(bareinterval(-0.0,0x1.62E42FEFA39EP+9)) === bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023) - - @test exp(bareinterval(-0x1.6232BDD7ABCD3P+9,0x1.62E42FEFA39EP+9)) === bareinterval(0x0.FFFFFFFFFFE7BP-1022,0x1.FFFFFFFFFC32BP+1023) - - @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0x1.62E42FEFA39EP+9)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.FFFFFFFFFC32BP+1023) - - @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0) - - @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,-0.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0) - - @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,1.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.5BF0A8B14576AP+1) - - @test exp(bareinterval(1.0,5.0)) === bareinterval(0x1.5BF0A8B145769P+1,0x1.28D389970339P+7) - - @test exp(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.2797F0A337A5FP-5,0x1.86091CC9095C5P+2) - - @test exp(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.1337E9E45812AP+1, 0x1.805A5C88021B6P+142) - - @test exp(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.EF461A783114CP+16,0x1.691D36C6B008CP+37) - -end -@testset "minimal_exp_dec_test" begin - - @test exp(interval(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9), com)) === interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), dac) - - @test exp(interval(bareinterval(0.0,0x1.62E42FEFA39EP+9), def)) === interval(bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023), def) - -end -@testset "minimal_exp2_test" begin - - @test exp2(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test exp2(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) - - @test exp2(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) - - @test exp2(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test exp2(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test exp2(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test exp2(bareinterval(-Inf,1024.0)) === bareinterval(0.0,Inf) - - @test exp2(bareinterval(1024.0,1024.0)) === bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf) - - @test exp2(bareinterval(0.0,1023.0)) === bareinterval(1.0,0x1P+1023) - - @test exp2(bareinterval(-0.0,1023.0)) === bareinterval(1.0,0x1P+1023) - - @test exp2(bareinterval(-1022.0,1023.0)) === bareinterval(0x1P-1022,0x1P+1023) - - @test exp2(bareinterval(-1022.0,0.0)) === bareinterval(0x1P-1022,1.0) - - @test exp2(bareinterval(-1022.0,-0.0)) === bareinterval(0x1P-1022,1.0) - - @test exp2(bareinterval(-1022.0,1.0)) === bareinterval(0x1P-1022,2.0) - - @test exp2(bareinterval(1.0,5.0)) === bareinterval(2.0,32.0) - - @test exp2(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.9999999999998P-4,0x1.C000000000001P+1) - - @test exp2(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98) - - @test exp2(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.AEA0000721857P+11,0x1.FCA0555555559P+25) - -end -@testset "minimal_exp2_dec_test" begin - - @test exp2(interval(bareinterval(1024.0,1024.0), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf), dac) - - @test exp2(interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), def)) === interval(bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98), def) - -end -@testset "minimal_exp10_test" begin - - @test exp10(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test exp10(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) - - @test exp10(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) - - @test exp10(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test exp10(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test exp10(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test exp10(bareinterval(-Inf,0x1.34413509F79FFP+8)) === bareinterval(0.0,Inf) - - @test exp10(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8)) === bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf) - - @test exp10(bareinterval(0.0,0x1.34413509F79FEP+8)) === bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023) - - @test exp10(bareinterval(-0.0,0x1.34413509F79FEP+8)) === bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023) - - @test exp10(bareinterval(-0x1.33A7146F72A42P+8,0x1.34413509F79FEP+8)) === bareinterval(0x0.FFFFFFFFFFFE3P-1022,0x1.FFFFFFFFFFBA1P+1023) - - @test exp10(bareinterval(-0x1.22P+7,0x1.34413509F79FEP+8)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,0x1.FFFFFFFFFFBA1P+1023) - - @test exp10(bareinterval(-0x1.22P+7,0.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0) - - @test exp10(bareinterval(-0x1.22P+7,-0.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0) - - @test exp10(bareinterval(-0x1.22P+7,1.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,10.0) - - @test exp10(bareinterval(1.0,5.0)) === bareinterval(10.0,100000.0) - - @test exp10(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.F3A8254311F9AP-12,0x1.00B18AD5B7D56P+6) - - @test exp10(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328) - - @test exp10(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.0608D2279A811P+39,0x1.43AF5D4271CB8P+86) - -end -@testset "minimal_exp10_dec_test" begin - - @test exp10(interval(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8), com)) === interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), dac) - - @test exp10(interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), def)) === interval(bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328), def) - -end -@testset "minimal_log_test" begin - - @test log(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test log(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test log(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test log(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) - - @test log(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) - - @test log(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test log(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test log(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test log(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test log(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.62E42FEFA39FP+9) - - @test log(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.62E42FEFA39FP+9) - - @test log(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1.62E42FEFA39FP+9) - - @test log(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.74385446D71C4p9, +0x1.62E42FEFA39Fp9) - - @test log(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-0x1.74385446D71C4p9,0.0) - - @test log(bareinterval(0x1.5BF0A8B145769P+1,0x1.5BF0A8B145769P+1)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) - - @test log(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1)) === bareinterval(0x1P+0,0x1.0000000000001P+0) - - @test log(bareinterval(0x0.0000000000001p-1022,0x1.5BF0A8B14576AP+1)) === bareinterval(-0x1.74385446D71C4p9,0x1.0000000000001P+0) - - @test log(bareinterval(0x1.5BF0A8B145769P+1,32.0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1.BB9D3BEB8C86CP+1) - - @test log(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1.26BB1BBB55516P+1,0x1.40B512EB53D6P+0) - - @test log(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.0FAE81914A99P-1,0x1.120627F6AE7F1P+6) - - @test log(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.04A1363DB1E63P+3,0x1.203E52C0256B5P+4) - -end -@testset "minimal_log_dec_test" begin - - @test log(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.74385446D71C4p9,0x1.62E42FEFA39FP+9), com) - - @test log(interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(-Inf,0.0), trv) - - @test log(interval(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1), def)) === interval(bareinterval(0x1P+0,0x1.0000000000001P+0), def) - -end -@testset "minimal_log2_test" begin - - @test log2(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test log2(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test log2(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test log2(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) - - @test log2(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) - - @test log2(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test log2(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test log2(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test log2(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test log2(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,1024.0) - - @test log2(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,1024.0) - - @test log2(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,1024.0) - - @test log2(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-1074.0,1024.0) - - @test log2(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-1074.0,0.0) - - @test log2(bareinterval(0x0.0000000000001p-1022,2.0)) === bareinterval(-1074.0,1.0) - - @test log2(bareinterval(2.0,32.0)) === bareinterval(1.0,5.0) - - @test log2(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0) - - @test log2(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6) - - @test log2(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4) - -end -@testset "minimal_log2_dec_test" begin - - @test log2(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-1074.0,1024.0), com) - - @test log2(interval(bareinterval(0x0.0000000000001p-1022,Inf), dac)) === interval(bareinterval(-1074.0,Inf), dac) - - @test log2(interval(bareinterval(2.0,32.0), def)) === interval(bareinterval(1.0,5.0), def) - - @test log2(interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-Inf,1024.0), trv) - -end -@testset "minimal_log10_test" begin - - @test log10(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test log10(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) - - @test log10(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) - - @test log10(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) - - @test log10(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) - - @test log10(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test log10(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test log10(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test log10(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test log10(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.34413509F79FFP+8) - - @test log10(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.34413509F79FFP+8) - - @test log10(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1.34413509F79FFP+8) - - @test log10(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.434E6420F4374p+8, +0x1.34413509F79FFp+8) - - @test log10(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-0x1.434E6420F4374p+8 ,0.0) - - @test log10(bareinterval(0x0.0000000000001p-1022,10.0)) === bareinterval(-0x1.434E6420F4374p+8 ,1.0) - - @test log10(bareinterval(10.0,100000.0)) === bareinterval(1.0,5.0) - - @test log10(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1P+0,0x1.1690163290F4P-1) - - @test log10(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test log10(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.D7F59AA5BECB9P-3,0x1.DC074D84E5AABP+4) - - @test log10(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.C4C29DD829191P+1,0x1.F4BAEBBA4FA4P+2) - -end -@testset "minimal_log10_dec_test" begin - - @test log10(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.434E6420F4374p+8,0x1.34413509F79FFP+8), com) - - @test log10(interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), dac)) === interval(bareinterval(-Inf,0x1.34413509F79FFP+8), trv) - -end -@testset "minimal_sin_test" begin - - @test sin(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test sin(bareinterval(0.0,Inf)) === bareinterval(-1.0,1.0) - - @test sin(bareinterval(-0.0,Inf)) === bareinterval(-1.0,1.0) - - @test sin(bareinterval(-Inf,0.0)) === bareinterval(-1.0,1.0) - - @test sin(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,1.0) - - @test sin(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) - - @test sin(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test sin(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) - - @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) - - @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) - - @test sin(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1P+0) - - @test sin(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1P+0) - - @test sin(bareinterval(0.0,0x1.921FB54442D19P+0)) === bareinterval(0.0,0x1P+0) - - @test sin(bareinterval(-0.0,0x1.921FB54442D19P+0)) === bareinterval(0.0,0x1P+0) - - @test sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53) - - @test sin(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52) - - @test sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1.1A62633145C07P-53) - - @test sin(bareinterval(0.0,0x1.921FB54442D18P+1)) === bareinterval(0.0,1.0) - - @test sin(bareinterval(-0.0,0x1.921FB54442D18P+1)) === bareinterval(0.0,1.0) - - @test sin(bareinterval(0.0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,1.0) - - @test sin(bareinterval(-0.0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,1.0) - - @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1P+0) - - @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0) - - @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1P+0) - - @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0) - - @test sin(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test sin(bareinterval(-0x1.921FB54442D18P+0,0.0)) === bareinterval(-0x1P+0,0.0) - - @test sin(bareinterval(-0x1.921FB54442D18P+0,-0.0)) === bareinterval(-0x1P+0,0.0) - - @test sin(bareinterval(-0x1.921FB54442D19P+0,0.0)) === bareinterval(-0x1P+0,0.0) - - @test sin(bareinterval(-0x1.921FB54442D19P+0,-0.0)) === bareinterval(-0x1P+0,0.0) - - @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53) - - @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)) === bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52) - - @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,0x1.72CECE675D1FDP-52) - - @test sin(bareinterval(-0x1.921FB54442D18P+1,0.0)) === bareinterval(-1.0,0.0) - - @test sin(bareinterval(-0x1.921FB54442D18P+1,-0.0)) === bareinterval(-1.0,0.0) - - @test sin(bareinterval(-0x1.921FB54442D19P+1,0.0)) === bareinterval(-1.0,0x1.72CECE675D1FDP-52) - - @test sin(bareinterval(-0x1.921FB54442D19P+1,-0.0)) === bareinterval(-1.0,0x1.72CECE675D1FDP-52) - - @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.1A62633145C06P-53) - - @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52) - - @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,-0x1.1A62633145C06P-53) - - @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52) - - @test sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1P+0) - - @test sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1P+0) - - @test sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1P+0) - - @test sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1P+0) - - @test sin(bareinterval(-0.7,0.1)) === bareinterval(-0x1.49D6E694619B9P-1,0x1.98EAECB8BCB2DP-4) - - @test sin(bareinterval(1.0,2.0)) === bareinterval(0x1.AED548F090CEEP-1,1.0) - - @test sin(bareinterval(-3.2,-2.9)) === bareinterval(-0x1.E9FB8D64830E3P-3,0x1.DE33739E82D33P-5) - - @test sin(bareinterval(2.0,3.0)) === bareinterval(0x1.210386DB6D55BP-3,0x1.D18F6EAD1B446P-1) - -end -@testset "minimal_sin_dec_test" begin - - @test sin(interval(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0), def)) === interval(bareinterval(-0x1P+0,-0x1.1A62633145C06P-53), def) - - @test sin(interval(bareinterval(-Inf,-0.0), trv)) === interval(bareinterval(-1.0,1.0), trv) - - @test sin(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) - -end -@testset "minimal_cos_test" begin - - @test cos(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test cos(bareinterval(0.0,Inf)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0.0,Inf)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-Inf,0.0)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,1.0) - - @test cos(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test cos(bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54) - - @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53) - - @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54) - - @test cos(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) - - @test cos(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) - - @test cos(bareinterval(0.0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(-0.0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test cos(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test cos(bareinterval(0.0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0.0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(0.0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0.0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,0x1.1A62633145C07P-54) - - @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,0x1.1A62633145C07P-54) - - @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) - - @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) - - @test cos(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54) - - @test cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53) - - @test cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54) - - @test cos(bareinterval(-0x1.921FB54442D18P+0,0.0)) === bareinterval(0x1.1A62633145C06P-54,1.0) - - @test cos(bareinterval(-0x1.921FB54442D18P+0,-0.0)) === bareinterval(0x1.1A62633145C06P-54,1.0) - - @test cos(bareinterval(-0x1.921FB54442D19P+0,0.0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(-0x1.921FB54442D19P+0,-0.0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test cos(bareinterval(-0x1.921FB54442D18P+1,0.0)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0x1.921FB54442D18P+1,-0.0)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0x1.921FB54442D19P+1,0.0)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0x1.921FB54442D19P+1,-0.0)) === bareinterval(-1.0,1.0) - - @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)) === bareinterval(-1.0,0x1.1A62633145C07P-54) - - @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)) === bareinterval(-1.0,0x1.1A62633145C07P-54) - - @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) - - @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) - - @test cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) - - @test cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) - - @test cos(bareinterval(-0.7,0.1)) === bareinterval(0x1.87996529F9D92P-1,1.0) - - @test cos(bareinterval(1.0,2.0)) === bareinterval(-0x1.AA22657537205P-2,0x1.14A280FB5068CP-1) - - @test cos(bareinterval(-3.2,-2.9)) === bareinterval(-1.0,-0x1.F1216DBA340C8P-1) - - @test cos(bareinterval(2.0,3.0)) === bareinterval(-0x1.FAE04BE85E5D3P-1,-0x1.AA22657537204P-2) - -end -@testset "minimal_cos_dec_test" begin - - @test cos(interval(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0), trv)) === interval(bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54), trv) - - @test cos(interval(bareinterval(-Inf,-0.0), def)) === interval(bareinterval(-1.0,1.0), def) - - @test cos(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) - -end -@testset "minimal_tan_test" begin - - @test tan(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test tan(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-Inf,0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-Inf,-0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test tan(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53) - - @test tan(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52) - - @test tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53) - - @test tan(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52) - - @test tan(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1.D02967C31CDB5P+53) - - @test tan(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1.D02967C31CDB5P+53) - - @test tan(bareinterval(0.0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0.0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0.0,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0.0,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0.0,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0.0,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1P-51,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1P-51,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1P-52,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1P-52,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53) - - @test tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4)) === bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4) - - @test tan(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12)) === bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0) - - @test tan(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0)) === bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0) - -end -@testset "minimal_tan_dec_test" begin - - @test tan(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0.0,Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-Inf,0.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-Inf,-0.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(0.0,0.0), com) - - @test tan(interval(bareinterval(-0.0,-0.0), def)) === interval(bareinterval(0.0,0.0), def) - - @test tan(interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53), com) - - @test tan(interval(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), def)) === interval(bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52), def) - - @test tan(interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1), trv)) === interval(bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53), trv) - - @test tan(interval(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1), com)) === interval(bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52), com) - - @test tan(interval(bareinterval(0.0,0x1.921FB54442D18P+0), dac)) === interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), dac) - - @test tan(interval(bareinterval(-0.0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), com) - - @test tan(interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0.0,0x1.921FB54442D19P+0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0.0,0x1.921FB54442D18P+1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0.0,0x1.921FB54442D18P+1), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0.0,0x1.921FB54442D19P+1), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0x1P-51,0x1.921FB54442D18P+1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0x1P-51,0x1.921FB54442D19P+1), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0x1P-52,0x1.921FB54442D18P+1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0x1P-52,0x1.921FB54442D19P+1), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53), com) - - @test tan(interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4), com)) === interval(bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4), com) - - @test tan(interval(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12), dac)) === interval(bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0), dac) - - @test tan(interval(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12), def)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test tan(interval(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0), trv)) === interval(bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0), trv) - -end -@testset "minimal_asin_test" begin - - @test asin(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test asin(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test asin(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test asin(bareinterval(-Inf,0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) - - @test asin(bareinterval(-Inf,-0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) - - @test asin(entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) - - @test asin(bareinterval(-1.0,1.0)) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) - - @test asin(bareinterval(-Inf,-1.0)) === bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0) - - @test asin(bareinterval(1.0,Inf)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) - - @test asin(bareinterval(-1.0,-1.0)) === bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0) - - @test asin(bareinterval(1.0,1.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) - - @test asin(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test asin(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test asin(bareinterval(-Inf,-0x1.0000000000001P+0)) === emptyinterval(BareInterval{Float64}) - - @test asin(bareinterval(0x1.0000000000001P+0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test asin(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.9A49276037885P-4,0x1.9A49276037885P-4) - - @test asin(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0) - - @test asin(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(-0x1.921FB50442D19P+0,0x1.921FB50442D19P+0) - -end -@testset "minimal_asin_dec_test" begin - - @test asin(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) - - @test asin(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0,0.0), trv) - - @test asin(interval(bareinterval(-1.0,1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), com) - - @test asin(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), trv) - - @test asin(interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), def)) === interval(bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0), def) - -end -@testset "minimal_acos_test" begin - - @test acos(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test acos(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test acos(bareinterval(-Inf,0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1) - - @test acos(bareinterval(-Inf,-0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1) - - @test acos(entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test acos(bareinterval(-1.0,1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test acos(bareinterval(-Inf,-1.0)) === bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1) - - @test acos(bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) - - @test acos(bareinterval(-1.0,-1.0)) === bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1) - - @test acos(bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test acos(bareinterval(0.0,0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) - - @test acos(bareinterval(-0.0,-0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) - - @test acos(bareinterval(-Inf,-0x1.0000000000001P+0)) === emptyinterval(BareInterval{Float64}) - - @test acos(bareinterval(0x1.0000000000001P+0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test acos(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.787B22CE3F59P+0,0x1.ABC447BA464A1P+0) - - @test acos(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1P-26,0x1.E837B2FD13428P+0) - - @test acos(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1P-26,0x1.921FB52442D19P+1) - -end -@testset "minimal_acos_dec_test" begin - - @test acos(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) - - @test acos(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1), trv) - - @test acos(interval(bareinterval(-1.0,1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), com) - - @test acos(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test acos(interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), def)) === interval(bareinterval(0x1P-26,0x1.E837B2FD13428P+0), def) - -end -@testset "minimal_atan_test" begin - - @test atan(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(-Inf,0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) - - @test atan(bareinterval(-Inf,-0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) - - @test atan(entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(1.0,0x1.4C2463567C5ACP+25)) === bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0) - - @test atan(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0) - -end -@testset "minimal_atan_dec_test" begin - - @test atan(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), dac) - - @test atan(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0,0.0), def) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), dac) - - @test atan(interval(bareinterval(1.0,0x1.4C2463567C5ACP+25), trv)) === interval(bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0), trv) - - @test atan(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0), com) - -end -@testset "minimal_atan2_test" begin - - @test atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(0.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(0.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-0.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) - - @test atan(bareinterval(-2.0, -0.1), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-2.0, -0.1), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1,0.0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4) - - @test atan(bareinterval(-2.0, -0.1), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4) - - @test atan(bareinterval(-2.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-2.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) - - @test atan(bareinterval(-2.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0.0) - - @test atan(bareinterval(-2.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-2.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) - - @test atan(bareinterval(-2.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0.0) - - @test atan(bareinterval(-2.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-2.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-2.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0) - - @test atan(bareinterval(-0.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(-0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(-0.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0.0, 0x1.789BD2C160054P+0) - - @test atan(bareinterval(0.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0x1.789BD2C160054P+0) - - @test atan(bareinterval(0.1, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.1, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) - - @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1) - - @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0) - - @test atan(bareinterval(0.1, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0) - -end -@testset "minimal_atan2_dec_test" begin - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, -0.1), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, 1.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, 1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.1, 1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), dac) - - @test atan(interval(bareinterval(0.0, 0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, 0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 0.0), def), interval(bareinterval(0.0, 0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, 0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) - - @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 0.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 0.0), def), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) - - @test atan(interval(bareinterval(-0.0, 0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), def), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) - - @test atan(interval(bareinterval(-0.0, 0.0), trv), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), def), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) - - @test atan(interval(bareinterval(0.0, -0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, -0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, -0.0), trv), interval(bareinterval(-0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, -0.0), dac), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) - - @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, -0.0), dac), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(0.0, 1.0), trv)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(0.1, 1.0), def)) === interval(bareinterval(0.0,0.0), def) - - @test atan(interval(bareinterval(-0.0, -0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-0.0, 0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), def), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), def) - - @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), def), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) - - @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) - - @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-2.0, -0.1), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1,0.0), def) - - @test atan(interval(bareinterval(-2.0, -0.1), trv), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), dac) - - @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(bareinterval(-0.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), def) - - @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.1), def), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0), def) - - @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), def) - - @test atan(interval(bareinterval(-2.0, -0.1), trv), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.1), def), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4), trv) - - @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), def) - - @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), dac) - - @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4), com) - - @test atan(interval(bareinterval(-2.0, 0.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), dac), interval(bareinterval(0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), def), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) - - @test atan(interval(bareinterval(-2.0, 0.0), dac), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), trv), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), def), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) - - @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0.0), com) - - @test atan(interval(bareinterval(-2.0, -0.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) - - @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), trv), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) - - @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0.0), com) - - @test atan(interval(bareinterval(-2.0, 1.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), def), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(-0.0, -0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) - - @test atan(interval(bareinterval(-2.0, 1.0), def), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0), com) - - @test atan(interval(bareinterval(-0.0, 1.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), com), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), com), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), dac) - - @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0, 0x1.789BD2C160054P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), trv), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), def), interval(bareinterval(-0.0, -0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), dac) - - @test atan(interval(bareinterval(0.0, 1.0), def), interval(bareinterval(-2.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(0.0, 1.0), trv)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.0, 1.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0x1.789BD2C160054P+0), com) - - @test atan(interval(bareinterval(0.1, 1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atan(interval(bareinterval(0.1, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), dac) - - @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), def) - - @test atan(interval(bareinterval(0.1, 1.0), trv), interval(bareinterval(-0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.1, 1.0), trv), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) - - @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), def) - - @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, -0.1), trv)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1), trv) - - @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), dac) - - @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), dac) - - @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(-2.0, 1.0), dac)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1), def) - - @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), def) - - @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), def) - - @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(0.1, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0), def) - -end -@testset "minimal_sinh_test" begin - - @test sinh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test sinh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test sinh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test sinh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) - - @test sinh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) - - @test sinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test sinh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test sinh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test sinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432) - - @test sinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-Inf,-0x1.53045B4F849DEP+815) - - @test sinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.55ECFE1B2B215P+0,0x1.3BF72EA61AF1BP+2) - -end -@testset "minimal_sinh_dec_test" begin - - @test sinh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) - - @test sinh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) - - @test sinh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-Inf,0.0), def) - - @test sinh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432), com) - - @test sinh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(-Inf,-0x1.53045B4F849DEP+815), dac) - -end -@testset "minimal_cosh_test" begin - - @test cosh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test cosh(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) - - @test cosh(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) - - @test cosh(bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) - - @test cosh(bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) - - @test cosh(entireinterval(BareInterval{Float64})) === bareinterval(1.0,Inf) - - @test cosh(bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) - - @test cosh(bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) - - @test cosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432) - - @test cosh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(0x1.53045B4F849DEP+815,Inf) - - @test cosh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(1.0,0x1.4261D2B7D6181P+2) - -end -@testset "minimal_cosh_dec_test" begin - - @test cosh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(1.0,Inf), dac) - - @test cosh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(1.0,Inf), def) - - @test cosh(interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(1.0,Inf), def) - - @test cosh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), def)) === interval(bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), def) - - @test cosh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(0x1.53045B4F849DEP+815,Inf), dac) - -end -@testset "minimal_tanh_test" begin - - @test tanh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test tanh(bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) - - @test tanh(bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) - - @test tanh(bareinterval(-Inf,0.0)) === bareinterval(-1.0,0.0) - - @test tanh(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,0.0) - - @test tanh(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) - - @test tanh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test tanh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test tanh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.85EFAB514F394P-1,0x1P+0) - - @test tanh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) - - @test tanh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.99DB01FDE2406P-1,0x1.F5CF31E1C8103P-1) - -end -@testset "minimal_tanh_dec_test" begin - - @test tanh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,1.0), dac) - - @test tanh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-1.0,0.0), def) - - @test tanh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) - - @test tanh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.85EFAB514F394P-1,0x1P+0), com) - - @test tanh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), trv)) === interval(bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), trv) - -end -@testset "minimal_asinh_test" begin - - @test asinh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test asinh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test asinh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test asinh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) - - @test asinh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) - - @test asinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test asinh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test asinh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test asinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2) - - @test asinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2) - - @test asinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.E693DF6EDF1E7P-1,0x1.91FDC64DE0E51P+0) - -end -@testset "minimal_asinh_dec_test" begin - - @test asinh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) - - @test asinh(interval(bareinterval(-Inf,0.0), trv)) === interval(bareinterval(-Inf,0.0), trv) - - @test asinh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) - - @test asinh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2), com) - - @test asinh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), def)) === interval(bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2), def) - -end -@testset "minimal_acosh_test" begin - - @test acosh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test acosh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test acosh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test acosh(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) - - @test acosh(bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) - - @test acosh(bareinterval(-Inf,0x1.FFFFFFFFFFFFFP-1)) === emptyinterval(BareInterval{Float64}) - - @test acosh(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test acosh(bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) - - @test acosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0.0,0x1.9985FB3D532AFP+2) - - @test acosh(bareinterval(0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(0x1.C636C1A882F2CP-2,0x1.799C88E79140DP+0) - - @test acosh(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29)) === bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4) - -end -@testset "minimal_acosh_dec_test" begin - - @test acosh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test acosh(interval(bareinterval(1.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) - - @test acosh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test acosh(interval(bareinterval(1.0,1.0), com)) === interval(bareinterval(0.0,0.0), com) - - @test acosh(interval(bareinterval(0.9,1.0), com)) === interval(bareinterval(0.0,0.0), trv) - - @test acosh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), dac)) === interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), dac) - - @test acosh(interval(bareinterval(0.9,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), trv) - - @test acosh(interval(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29), def)) === interval(bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4), def) - -end -@testset "minimal_atanh_test" begin - - @test atanh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test atanh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) - - @test atanh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) - - @test atanh(bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) - - @test atanh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) - - @test atanh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) - - @test atanh(bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test atanh(bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) - - @test atanh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test atanh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test atanh(bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) - - @test atanh(bareinterval(1.0,1.0)) === emptyinterval(BareInterval{Float64}) - - @test atanh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test atanh(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4) - - @test atanh(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4)) === bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4) - -end -@testset "minimal_atanh_dec_test" begin - - @test atanh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) - - @test atanh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-Inf,0.0), trv) - - @test atanh(interval(bareinterval(-1.0,1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) - - @test atanh(interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(0.0,0.0), com) - - @test atanh(interval(bareinterval(1.0,1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test atanh(interval(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1), com)) === interval(bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4), com) - - @test atanh(interval(bareinterval(-1.0,0x1.FFFFFFFFFFFFFP-1), com)) === interval(bareinterval(-Inf,0x1.2B708872320E2P+4), trv) - - @test atanh(interval(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4), def)) === interval(bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4), def) - - @test atanh(interval(bareinterval(-0x1.FFB88E9EB6307P-1,1.0), com)) === interval(bareinterval(-0x1.06A3A97D7979CP+2,Inf), trv) - -end -@testset "minimal_sign_test" begin - - @test sign(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test sign(bareinterval(1.0,2.0)) === bareinterval(1.0,1.0) - - @test sign(bareinterval(-1.0,2.0)) === bareinterval(-1.0,1.0) - - @test sign(bareinterval(-1.0,0.0)) === bareinterval(-1.0,0.0) - - @test sign(bareinterval(0.0,2.0)) === bareinterval(0.0,1.0) - - @test sign(bareinterval(-0.0,2.0)) === bareinterval(0.0,1.0) - - @test sign(bareinterval(-5.0,-2.0)) === bareinterval(-1.0,-1.0) - - @test sign(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) - - @test sign(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) - - @test sign(bareinterval(-0.0,0.0)) === bareinterval(0.0,0.0) - - @test sign(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) - -end -@testset "minimal_sign_dec_test" begin - - @test sign(interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(1.0,1.0), com) - - @test sign(interval(bareinterval(-1.0,2.0), com)) === interval(bareinterval(-1.0,1.0), def) - - @test sign(interval(bareinterval(-1.0,0.0), com)) === interval(bareinterval(-1.0,0.0), def) - - @test sign(interval(bareinterval(0.0,2.0), com)) === interval(bareinterval(0.0,1.0), def) - - @test sign(interval(bareinterval(-0.0,2.0), def)) === interval(bareinterval(0.0,1.0), def) - - @test sign(interval(bareinterval(-5.0,-2.0), trv)) === interval(bareinterval(-1.0,-1.0), trv) - - @test sign(interval(bareinterval(0.0,0.0), dac)) === interval(bareinterval(0.0,0.0), dac) - -end -@testset "minimal_ceil_test" begin - - @test ceil(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test ceil(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test ceil(bareinterval(1.1,2.0)) === bareinterval(2.0,2.0) - - @test ceil(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) - - @test ceil(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) - - @test ceil(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) - - @test ceil(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) - - @test ceil(bareinterval(-1.9,2.2)) === bareinterval(-1.0,3.0) - - @test ceil(bareinterval(-1.0,2.2)) === bareinterval(-1.0,3.0) - - @test ceil(bareinterval(0.0,2.2)) === bareinterval(0.0,3.0) - - @test ceil(bareinterval(-0.0,2.2)) === bareinterval(0.0,3.0) - - @test ceil(bareinterval(-1.5,Inf)) === bareinterval(-1.0,Inf) - - @test ceil(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) - - @test ceil(bareinterval(-Inf,2.2)) === bareinterval(-Inf,3.0) - - @test ceil(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) - -end -@testset "minimal_ceil_dec_test" begin - - @test ceil(interval(bareinterval(1.1,2.0), com)) === interval(bareinterval(2.0,2.0), dac) - - @test ceil(interval(bareinterval(-1.1,2.0), com)) === interval(bareinterval(-1.0,2.0), def) - - @test ceil(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(-1.0,0.0), def) - - @test ceil(interval(bareinterval(-1.1,-0.0), trv)) === interval(bareinterval(-1.0,0.0), trv) - - @test ceil(interval(bareinterval(-1.1,-0.4), dac)) === interval(bareinterval(-1.0,0.0), def) - - @test ceil(interval(bareinterval(-1.9,2.2), com)) === interval(bareinterval(-1.0,3.0), def) - - @test ceil(interval(bareinterval(-1.0,2.2), dac)) === interval(bareinterval(-1.0,3.0), def) - - @test ceil(interval(bareinterval(0.0,2.2), trv)) === interval(bareinterval(0.0,3.0), trv) - - @test ceil(interval(bareinterval(-0.0,2.2), def)) === interval(bareinterval(0.0,3.0), def) - - @test ceil(interval(bareinterval(-1.5,Inf), trv)) === interval(bareinterval(-1.0,Inf), trv) - - @test ceil(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), dac)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), def) - - @test ceil(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac) - - @test ceil(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,3.0), trv) - - @test ceil(interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), dac)) === interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), def) - -end -@testset "minimal_floor_test" begin - - @test floor(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test floor(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test floor(bareinterval(1.1,2.0)) === bareinterval(1.0,2.0) - - @test floor(bareinterval(-1.1,2.0)) === bareinterval(-2.0,2.0) - - @test floor(bareinterval(-1.1,0.0)) === bareinterval(-2.0,0.0) - - @test floor(bareinterval(-1.1,-0.0)) === bareinterval(-2.0,0.0) - - @test floor(bareinterval(-1.1,-0.4)) === bareinterval(-2.0,-1.0) - - @test floor(bareinterval(-1.9,2.2)) === bareinterval(-2.0,2.0) - - @test floor(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) - - @test floor(bareinterval(0.0,2.2)) === bareinterval(0.0,2.0) - - @test floor(bareinterval(-0.0,2.2)) === bareinterval(0.0,2.0) - - @test floor(bareinterval(-1.5,Inf)) === bareinterval(-2.0,Inf) - - @test floor(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) - -end -@testset "minimal_floor_dec_test" begin - - @test floor(interval(bareinterval(1.1,2.0), com)) === interval(bareinterval(1.0,2.0), def) - - @test floor(interval(bareinterval(-1.1,2.0), def)) === interval(bareinterval(-2.0,2.0), def) - - @test floor(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(-2.0,0.0), def) - - @test floor(interval(bareinterval(-1.2,-1.1), com)) === interval(bareinterval(-2.0,-2.0), com) - - @test floor(interval(bareinterval(-1.1,-0.4), def)) === interval(bareinterval(-2.0,-1.0), def) - - @test floor(interval(bareinterval(-1.9,2.2), com)) === interval(bareinterval(-2.0,2.0), def) - - @test floor(interval(bareinterval(-1.0,2.2), trv)) === interval(bareinterval(-1.0,2.0), trv) - - @test floor(interval(bareinterval(0.0,2.2), trv)) === interval(bareinterval(0.0,2.0), trv) - - @test floor(interval(bareinterval(-0.0,2.2), com)) === interval(bareinterval(0.0,2.0), def) - - @test floor(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-2.0,Inf), def) - - @test floor(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) - - @test floor(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), dac) - -end -@testset "minimal_trunc_test" begin - - @test trunc(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test trunc(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test trunc(bareinterval(1.1,2.1)) === bareinterval(1.0,2.0) - - @test trunc(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) - - @test trunc(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) - - @test trunc(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) - - @test trunc(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) - - @test trunc(bareinterval(-1.9,2.2)) === bareinterval(-1.0,2.0) - - @test trunc(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) - - @test trunc(bareinterval(0.0,2.2)) === bareinterval(0.0,2.0) - - @test trunc(bareinterval(-0.0,2.2)) === bareinterval(0.0,2.0) - - @test trunc(bareinterval(-1.5,Inf)) === bareinterval(-1.0,Inf) - - @test trunc(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) - -end -@testset "minimal_trunc_dec_test" begin - - @test trunc(interval(bareinterval(1.1,2.1), com)) === interval(bareinterval(1.0,2.0), def) - - @test trunc(interval(bareinterval(1.1,1.9), com)) === interval(bareinterval(1.0,1.0), com) - - @test trunc(interval(bareinterval(-1.1,2.0), dac)) === interval(bareinterval(-1.0,2.0), def) - - @test trunc(interval(bareinterval(-1.1,0.0), trv)) === interval(bareinterval(-1.0,0.0), trv) - - @test trunc(interval(bareinterval(-1.1,-0.0), def)) === interval(bareinterval(-1.0,0.0), def) - - @test trunc(interval(bareinterval(-1.1,-0.4), com)) === interval(bareinterval(-1.0,0.0), def) - - @test trunc(interval(bareinterval(-1.9,2.2), def)) === interval(bareinterval(-1.0,2.0), def) - - @test trunc(interval(bareinterval(-1.0,2.2), dac)) === interval(bareinterval(-1.0,2.0), def) - - @test trunc(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-1.0,Inf), def) - - @test trunc(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) - - @test trunc(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac) - - @test trunc(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), dac)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), def) - -end -@testset "minimal_round_ties_to_even_test" begin - - @test round(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test round(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test round(bareinterval(1.1,2.1)) === bareinterval(1.0,2.0) - - @test round(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) - - @test round(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) - - @test round(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) - - @test round(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) - - @test round(bareinterval(-1.9,2.2)) === bareinterval(-2.0,2.0) - - @test round(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) - - @test round(bareinterval(1.5,2.1)) === bareinterval(2.0,2.0) - - @test round(bareinterval(-1.5,2.0)) === bareinterval(-2.0,2.0) - - @test round(bareinterval(-1.1,-0.5)) === bareinterval(-1.0,0.0) - - @test round(bareinterval(-1.9,2.5)) === bareinterval(-2.0,2.0) - - @test round(bareinterval(0.0,2.5)) === bareinterval(0.0,2.0) - - @test round(bareinterval(-0.0,2.5)) === bareinterval(0.0,2.0) - - @test round(bareinterval(-1.5,2.5)) === bareinterval(-2.0,2.0) - - @test round(bareinterval(-1.5,Inf)) === bareinterval(-2.0,Inf) - - @test round(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) - -end -@testset "minimal_round_ties_to_even_dec_test" begin - - @test round(interval(bareinterval(1.1,2.1), com)) === interval(bareinterval(1.0,2.0), def) - - @test round(interval(bareinterval(-1.1,2.0), trv)) === interval(bareinterval(-1.0,2.0), trv) - - @test round(interval(bareinterval(-1.6,-1.5), com)) === interval(bareinterval(-2.0,-2.0), dac) - - @test round(interval(bareinterval(-1.6,-1.4), com)) === interval(bareinterval(-2.0,-1.0), def) - - @test round(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-2.0,Inf), def) - - @test round(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) - -end -@testset "minimal_round_ties_to_away_test" begin - - @test round(emptyinterval(BareInterval{Float64}), RoundNearestTiesAway) === emptyinterval(BareInterval{Float64}) - - @test round(entireinterval(BareInterval{Float64}), RoundNearestTiesAway) === entireinterval(BareInterval{Float64}) - - @test round(bareinterval(1.1,2.1), RoundNearestTiesAway) === bareinterval(1.0,2.0) - - @test round(bareinterval(-1.1,2.0), RoundNearestTiesAway) === bareinterval(-1.0,2.0) - - @test round(bareinterval(-1.1,0.0), RoundNearestTiesAway) === bareinterval(-1.0,0.0) - - @test round(bareinterval(-1.1,-0.0), RoundNearestTiesAway) === bareinterval(-1.0,-0.0) - - @test round(bareinterval(-1.1,-0.4), RoundNearestTiesAway) === bareinterval(-1.0,0.0) - - @test round(bareinterval(-1.9,2.2), RoundNearestTiesAway) === bareinterval(-2.0,2.0) - - @test round(bareinterval(-1.0,2.2), RoundNearestTiesAway) === bareinterval(-1.0,2.0) - - @test round(bareinterval(0.5,2.1), RoundNearestTiesAway) === bareinterval(1.0,2.0) - - @test round(bareinterval(-2.5,2.0), RoundNearestTiesAway) === bareinterval(-3.0,2.0) - - @test round(bareinterval(-1.1,-0.5), RoundNearestTiesAway) === bareinterval(-1.0,-1.0) - - @test round(bareinterval(-1.9,2.5), RoundNearestTiesAway) === bareinterval(-2.0,3.0) - - @test round(bareinterval(-1.5,2.5), RoundNearestTiesAway) === bareinterval(-2.0,3.0) - - @test round(bareinterval(0.0,2.5), RoundNearestTiesAway) === bareinterval(0.0,3.0) - - @test round(bareinterval(-0.0,2.5), RoundNearestTiesAway) === bareinterval(0.0,3.0) - - @test round(bareinterval(-1.5,Inf), RoundNearestTiesAway) === bareinterval(-2.0,Inf) - - @test round(bareinterval(-Inf,2.2), RoundNearestTiesAway) === bareinterval(-Inf,2.0) - -end -@testset "minimal_round_ties_to_away_dec_test" begin - - @test round(interval(bareinterval(1.1,2.1), com), RoundNearestTiesAway) === interval(bareinterval(1.0,2.0), def) - - @test round(interval(bareinterval(-1.9,2.2), com), RoundNearestTiesAway) === interval(bareinterval(-2.0,2.0), def) - - @test round(interval(bareinterval(1.9,2.2), com), RoundNearestTiesAway) === interval(bareinterval(2.0,2.0), com) - - @test round(interval(bareinterval(-1.0,2.2), trv), RoundNearestTiesAway) === interval(bareinterval(-1.0,2.0), trv) - - @test round(interval(bareinterval(2.5,2.6), com), RoundNearestTiesAway) === interval(bareinterval(3.0,3.0), dac) - - @test round(interval(bareinterval(-1.5,Inf), dac), RoundNearestTiesAway) === interval(bareinterval(-2.0,Inf), def) - - @test round(interval(bareinterval(-Inf,2.2), def), RoundNearestTiesAway) === interval(bareinterval(-Inf,2.0), def) - -end -@testset "minimal_abs_test" begin - - @test abs(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test abs(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) - - @test abs(bareinterval(1.1,2.1)) === bareinterval(1.1,2.1) - - @test abs(bareinterval(-1.1,2.0)) === bareinterval(0.0,2.0) - - @test abs(bareinterval(-1.1,0.0)) === bareinterval(0.0,1.1) - - @test abs(bareinterval(-1.1,-0.0)) === bareinterval(0.0,1.1) - - @test abs(bareinterval(-1.1,-0.4)) === bareinterval(0.4,1.1) - - @test abs(bareinterval(-1.9,0.2)) === bareinterval(0.0,1.9) - - @test abs(bareinterval(0.0,0.2)) === bareinterval(0.0,0.2) - - @test abs(bareinterval(-0.0,0.2)) === bareinterval(0.0,0.2) - - @test abs(bareinterval(-1.5,Inf)) === bareinterval(0.0,Inf) - - @test abs(bareinterval(-Inf,-2.2)) === bareinterval(2.2,Inf) - -end -@testset "minimal_abs_dec_test" begin - - @test abs(interval(bareinterval(-1.1,2.0), com)) === interval(bareinterval(0.0,2.0), com) - - @test abs(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(0.0,1.1), dac) - - @test abs(interval(bareinterval(-1.1,-0.0), def)) === interval(bareinterval(0.0,1.1), def) - - @test abs(interval(bareinterval(-1.1,-0.4), trv)) === interval(bareinterval(0.4,1.1), trv) - - @test abs(interval(bareinterval(-1.9,0.2), dac)) === interval(bareinterval(0.0,1.9), dac) - - @test abs(interval(bareinterval(0.0,0.2), def)) === interval(bareinterval(0.0,0.2), def) - - @test abs(interval(bareinterval(-0.0,0.2), com)) === interval(bareinterval(0.0,0.2), com) - - @test abs(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) - -end -@testset "minimal_min_test" begin - - @test min(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test min(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test min(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test min(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === bareinterval(-Inf,2.0) - - @test min(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf,2.0) - - @test min(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test min(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test min(bareinterval(1.0,5.0), bareinterval(2.0,4.0)) === bareinterval(1.0,4.0) - - @test min(bareinterval(0.0,5.0), bareinterval(2.0,4.0)) === bareinterval(0.0,4.0) - - @test min(bareinterval(-0.0,5.0), bareinterval(2.0,4.0)) === bareinterval(0.0,4.0) - - @test min(bareinterval(1.0,5.0), bareinterval(2.0,8.0)) === bareinterval(1.0,5.0) - - @test min(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf,5.0) - - @test min(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,-5.0) - - @test min(bareinterval(-7.0,0.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,0.0) - - @test min(bareinterval(-7.0,-0.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,0.0) - -end -@testset "minimal_min_dec_test" begin - - @test min(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(-Inf,2.0), dac) - - @test min(interval(bareinterval(-7.0,-5.0), trv), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(-7.0,-5.0), trv) - - @test min(interval(bareinterval(-7.0,0.0), dac), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(-7.0,0.0), def) - - @test min(interval(bareinterval(-7.0,-0.0), com), interval(bareinterval(2.0,4.0), com)) === interval(bareinterval(-7.0,0.0), com) - -end -@testset "minimal_max_test" begin - - @test max(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === emptyinterval(BareInterval{Float64}) - - @test max(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test max(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test max(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === bareinterval(1.0,Inf) - - @test max(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0,Inf) - - @test max(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test max(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test max(bareinterval(1.0,5.0), bareinterval(2.0,4.0)) === bareinterval(2.0,5.0) - - @test max(bareinterval(1.0,5.0), bareinterval(2.0,8.0)) === bareinterval(2.0,8.0) - - @test max(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0,Inf) - - @test max(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)) === bareinterval(2.0,4.0) - - @test max(bareinterval(-7.0,-5.0), bareinterval(0.0,4.0)) === bareinterval(0.0,4.0) - - @test max(bareinterval(-7.0,-5.0), bareinterval(-0.0,4.0)) === bareinterval(0.0,4.0) - - @test max(bareinterval(-7.0,-5.0), bareinterval(-2.0,0.0)) === bareinterval(-2.0,0.0) - - @test max(bareinterval(-7.0,-5.0), bareinterval(-2.0,-0.0)) === bareinterval(-2.0,0.0) - -end -@testset "minimal_max_dec_test" begin - - @test max(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(1.0,Inf), dac) - - @test max(interval(bareinterval(-7.0,-5.0), trv), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(2.0,4.0), trv) - - @test max(interval(bareinterval(-7.0,5.0), dac), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(2.0,5.0), def) - - @test max(interval(bareinterval(3.0,3.5), com), interval(bareinterval(2.0,4.0), com)) === interval(bareinterval(3.0,4.0), com) - -end diff --git a/test/ITF1788_tests/libieeep1788_num.jl b/test/ITF1788_tests/libieeep1788_num.jl deleted file mode 100644 index f4b5e07b8..000000000 --- a/test/ITF1788_tests/libieeep1788_num.jl +++ /dev/null @@ -1,416 +0,0 @@ -@testset "minimal_inf_test" begin - - @test inf(emptyinterval(BareInterval{Float64})) === +Inf - - @test inf(bareinterval(-Inf,+Inf)) === -Inf - - @test inf(bareinterval(1.0,2.0)) === 1.0 - - @test inf(bareinterval(-3.0,-2.0)) === -3.0 - - @test inf(bareinterval(-Inf,2.0)) === -Inf - - @test inf(bareinterval(-Inf,0.0)) === -Inf - - @test inf(bareinterval(-Inf,-0.0)) === -Inf - - @test inf(bareinterval(-2.0,Inf)) === -2.0 - - @test inf(bareinterval(0.0,Inf)) === -0.0 - - @test inf(bareinterval(-0.0,Inf)) === -0.0 - - @test inf(bareinterval(-0.0,0.0)) === -0.0 - - @test inf(bareinterval(0.0,-0.0)) === -0.0 - - @test inf(bareinterval(0.0,0.0)) === -0.0 - - @test inf(bareinterval(-0.0,-0.0)) === -0.0 - -end -@testset "minimal_inf_dec_test" begin - - @test isnan(inf(nai())) - - @test inf(interval(emptyinterval(BareInterval{Float64}), trv)) === +Inf - - @test inf(interval(bareinterval(-Inf,+Inf), def)) === -Inf - - @test inf(interval(bareinterval(1.0,2.0), com)) === 1.0 - - @test inf(interval(bareinterval(-3.0,-2.0), trv)) === -3.0 - - @test inf(interval(bareinterval(-Inf,2.0), dac)) === -Inf - - @test inf(interval(bareinterval(-Inf,0.0), def)) === -Inf - - @test inf(interval(bareinterval(-Inf,-0.0), trv)) === -Inf - - @test inf(interval(bareinterval(-2.0,Inf), trv)) === -2.0 - - @test inf(interval(bareinterval(0.0,Inf), def)) === -0.0 - - @test inf(interval(bareinterval(-0.0,Inf), trv)) === -0.0 - - @test inf(interval(bareinterval(-0.0,0.0), dac)) === -0.0 - - @test inf(interval(bareinterval(0.0,-0.0), trv)) === -0.0 - - @test inf(interval(bareinterval(0.0,0.0), trv)) === -0.0 - - @test inf(interval(bareinterval(-0.0,-0.0), trv)) === -0.0 - -end -@testset "minimal_sup_test" begin - - @test sup(emptyinterval(BareInterval{Float64})) === -Inf - - @test sup(bareinterval(-Inf,+Inf)) === +Inf - - @test sup(bareinterval(1.0,2.0)) === 2.0 - - @test sup(bareinterval(-3.0,-2.0)) === -2.0 - - @test sup(bareinterval(-Inf,2.0)) === 2.0 - - @test sup(bareinterval(-Inf,0.0)) === 0.0 - - @test sup(bareinterval(-Inf,-0.0)) === 0.0 - - @test sup(bareinterval(-2.0,Inf)) === Inf - - @test sup(bareinterval(0.0,Inf)) === Inf - - @test sup(bareinterval(-0.0,Inf)) === Inf - - @test sup(bareinterval(-0.0,0.0)) === 0.0 - - @test sup(bareinterval(0.0,-0.0)) === 0.0 - - @test sup(bareinterval(0.0,0.0)) === 0.0 - - @test sup(bareinterval(-0.0,-0.0)) === 0.0 - -end -@testset "minimal_sup_dec_test" begin - - @test isnan(sup(nai())) - - @test sup(interval(emptyinterval(BareInterval{Float64}), trv)) === -Inf - - @test sup(interval(bareinterval(-Inf,+Inf), def)) === +Inf - - @test sup(interval(bareinterval(1.0,2.0), com)) === 2.0 - - @test sup(interval(bareinterval(-3.0,-2.0), trv)) === -2.0 - - @test sup(interval(bareinterval(-Inf,2.0), dac)) === 2.0 - - @test sup(interval(bareinterval(-Inf,0.0), def)) === 0.0 - - @test sup(interval(bareinterval(-Inf,-0.0), trv)) === 0.0 - - @test sup(interval(bareinterval(-2.0,Inf), trv)) === Inf - - @test sup(interval(bareinterval(0.0,Inf), def)) === Inf - - @test sup(interval(bareinterval(-0.0,Inf), trv)) === Inf - - @test sup(interval(bareinterval(-0.0,0.0), dac)) === +0.0 - - @test sup(interval(bareinterval(0.0,-0.0), trv)) === +0.0 - - @test sup(interval(bareinterval(0.0,0.0), trv)) === +0.0 - - @test sup(interval(bareinterval(-0.0,-0.0), trv)) === +0.0 - -end -@testset "minimal_mid_test" begin - - @test isnan(mid(emptyinterval(BareInterval{Float64}))) - - @test mid(bareinterval(-Inf,+Inf)) === 0.0 - - @test mid(bareinterval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023)) === 0.0 - - @test mid(bareinterval(0.0,2.0)) === 1.0 - - @test mid(bareinterval(2.0,2.0)) === 2.0 - - @test mid(bareinterval(-2.0,2.0)) === 0.0 - - @test mid(bareinterval(0.0,Inf)) === 0x1.FFFFFFFFFFFFFp1023 - - @test mid(bareinterval(-Inf,1.2)) === -0x1.FFFFFFFFFFFFFp1023 - - @test mid(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0.0 - - @test mid(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0.0 - - @test mid(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023)) === 0x1.7FFFFFFFFFFFFP+1023 - - @test mid(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022)) === 0x0.0000000000002P-1022 - -end -@testset "minimal_mid_dec_test" begin - - @test isnan(mid(interval(emptyinterval(BareInterval{Float64}), trv))) - - @test isnan(mid(nai())) - - @test mid(interval(bareinterval(-Inf,+Inf), def)) === 0.0 - - @test mid(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023), trv)) === 0.0 - - @test mid(interval(bareinterval(0.0,2.0), com)) === 1.0 - - @test mid(interval(bareinterval(2.0,2.0), dac)) === 2.0 - - @test mid(interval(bareinterval(-2.0,2.0), trv)) === 0.0 - - @test mid(interval(bareinterval(0.0,Inf), trv)) === 0x1.FFFFFFFFFFFFFp1023 - - @test mid(interval(bareinterval(-Inf,1.2), trv)) === -0x1.FFFFFFFFFFFFFp1023 - - @test mid(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv)) === 0.0 - - @test mid(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv)) === 0.0 - - @test mid(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv)) === 0x1.7FFFFFFFFFFFFP+1023 - - @test mid(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv)) === 0x0.0000000000002P-1022 - -end -@testset "minimal_rad_test" begin - - @test radius(bareinterval(0.0,2.0)) === 1.0 - - @test radius(bareinterval(2.0,2.0)) === 0.0 - - @test isnan(radius(emptyinterval(BareInterval{Float64}))) - - @test radius(bareinterval(-Inf,+Inf)) === Inf - - @test radius(bareinterval(0.0,Inf)) === Inf - - @test radius(bareinterval(-Inf, 1.2)) === Inf - - @test radius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0x0.0000000000002P-1022 - - @test radius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0x0.0000000000001P-1022 - - @test radius(bareinterval(0x1P+0,0x1.0000000000003P+0)) === 0x1P-51 - -end -@testset "minimal_rad_dec_test" begin - - @test radius(interval(bareinterval(0.0,2.0), trv)) === 1.0 - - @test radius(interval(bareinterval(2.0,2.0), com)) === 0.0 - - @test isnan(radius(interval(emptyinterval(BareInterval{Float64}), trv))) - - @test isnan(radius(nai())) - - @test radius(interval(bareinterval(-Inf,+Inf), trv)) === Inf - - @test radius(interval(bareinterval(0.0,Inf), def)) === Inf - - @test radius(interval(bareinterval(-Inf, 1.2), trv)) === Inf - - @test radius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv)) === 0x0.0000000000002P-1022 - - @test radius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv)) === 0x0.0000000000001P-1022 - - @test radius(interval(bareinterval(0x1P+0,0x1.0000000000003P+0), trv)) === 0x1P-51 - -end -@testset "minimal_mid_rad_test" begin - - @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) - - @test midradius(bareinterval(-Inf,Inf))[1] === 0.0 && midradius(bareinterval(-Inf,Inf))[2] === Inf - - @test midradius(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[1] === 0.0 && midradius(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.FFFFFFFFFFFFFP+1023 - - @test midradius(bareinterval(0.0,2.0))[1] === 1.0 && midradius(bareinterval(0.0,2.0))[2] === 1.0 - - @test midradius(bareinterval(2.0,2.0))[1] === 2.0 && midradius(bareinterval(2.0,2.0))[2] === 0.0 - - @test midradius(bareinterval(-2.0,2.0))[1] === 0.0 && midradius(bareinterval(-2.0,2.0))[2] === 2.0 - - @test midradius(bareinterval(0.0,Inf))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(bareinterval(0.0,Inf))[2] === Inf - - @test midradius(bareinterval(-Inf, 1.2))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(bareinterval(-Inf, 1.2))[2] === Inf - - @test midradius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[1] === 0.0 && midradius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[2] === 0x0.0000000000002P-1022 - - @test midradius(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[1] === 0.0 && midradius(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[2] === 0x0.0000000000002P-1022 - - @test midradius(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.0p+1022 - - @test midradius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[1] === 0x0.0000000000002P-1022 && midradius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[2] === 0x0.0000000000001P-1022 - -end -@testset "minimal_mid_rad_dec_test" begin - - @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) - - @test isnan(midradius(nai())[1]) && isnan(midradius(nai())[2]) - - @test midradius(interval(bareinterval(-Inf,Inf), def))[1] === 0.0 && midradius(interval(bareinterval(-Inf,Inf), def))[2] === Inf - - @test midradius(interval(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), trv))[2] === 0x1.FFFFFFFFFFFFFP+1023 - - @test midradius(interval(bareinterval(0.0,2.0), com))[1] === 1.0 && midradius(interval(bareinterval(0.0,2.0), com))[2] === 1.0 - - @test midradius(interval(bareinterval(2.0,2.0), dac))[1] === 2.0 && midradius(interval(bareinterval(2.0,2.0), dac))[2] === 0.0 - - @test midradius(interval(bareinterval(-2.0,2.0), trv))[1] === 0.0 && midradius(interval(bareinterval(-2.0,2.0), trv))[2] === 2.0 - - @test midradius(interval(bareinterval(0.0,Inf), trv))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(0.0,Inf), trv))[2] === Inf - - @test midradius(interval(bareinterval(-Inf, 1.2), trv))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(-Inf, 1.2), trv))[2] === Inf - - @test midradius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv))[2] === 0x0.0000000000002P-1022 - - @test midradius(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv))[2] === 0x0.0000000000002P-1022 - - @test midradius(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv))[2] === 0x1.0p+1022 - - @test midradius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv))[1] === 0x0.0000000000002P-1022 && midradius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv))[2] === 0x0.0000000000001P-1022 - -end -@testset "minimal_wid_test" begin - - @test diam(bareinterval(2.0,2.0)) === 0.0 - - @test diam(bareinterval(1.0,2.0)) === 1.0 - - @test diam(bareinterval(1.0,Inf)) === Inf - - @test diam(bareinterval(-Inf,2.0)) === Inf - - @test diam(bareinterval(-Inf,+Inf)) === Inf - - @test isnan(diam(emptyinterval(BareInterval{Float64}))) - - @test diam(bareinterval(0x1P+0,0x1.0000000000001P+0)) === 0x1P-52 - - @test diam(bareinterval(0x1P-1022,0x1.0000000000001P-1022)) === 0x0.0000000000001P-1022 - -end -@testset "minimal_wid_dec_test" begin - - @test diam(interval(bareinterval(2.0,2.0), com)) === 0.0 - - @test diam(interval(bareinterval(1.0,2.0), trv)) === 1.0 - - @test diam(interval(bareinterval(1.0,Inf), trv)) === Inf - - @test diam(interval(bareinterval(-Inf,2.0), def)) === Inf - - @test diam(interval(bareinterval(-Inf,+Inf), trv)) === Inf - - @test isnan(diam(interval(emptyinterval(BareInterval{Float64}), trv))) - - @test isnan(diam(nai())) - - @test diam(interval(bareinterval(0x1P+0,0x1.0000000000001P+0), trv)) === 0x1P-52 - - @test diam(interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), trv)) === 0x0.0000000000001P-1022 - -end -@testset "minimal_mag_test" begin - - @test mag(bareinterval(1.0,2.0)) === 2.0 - - @test mag(bareinterval(-4.0,2.0)) === 4.0 - - @test mag(bareinterval(-Inf,2.0)) === Inf - - @test mag(bareinterval(1.0,Inf)) === Inf - - @test mag(bareinterval(-Inf,+Inf)) === Inf - - @test isnan(mag(emptyinterval(BareInterval{Float64}))) - - @test mag(bareinterval(-0.0,0.0)) === 0.0 - - @test mag(bareinterval(-0.0,-0.0)) === 0.0 - -end -@testset "minimal_mag_dec_test" begin - - @test mag(interval(bareinterval(1.0,2.0), com)) === 2.0 - - @test mag(interval(bareinterval(-4.0,2.0), trv)) === 4.0 - - @test mag(interval(bareinterval(-Inf,2.0), trv)) === Inf - - @test mag(interval(bareinterval(1.0,Inf), def)) === Inf - - @test mag(interval(bareinterval(-Inf,+Inf), trv)) === Inf - - @test isnan(mag(interval(emptyinterval(BareInterval{Float64}), trv))) - - @test isnan(mag(nai())) - - @test mag(interval(bareinterval(-0.0,0.0), trv)) === 0.0 - - @test mag(interval(bareinterval(-0.0,-0.0), trv)) === 0.0 - -end -@testset "minimal_mig_test" begin - - @test mig(bareinterval(1.0,2.0)) === 1.0 - - @test mig(bareinterval(-4.0,2.0)) === 0.0 - - @test mig(bareinterval(-4.0,-2.0)) === 2.0 - - @test mig(bareinterval(-Inf,2.0)) === 0.0 - - @test mig(bareinterval(-Inf,-2.0)) === 2.0 - - @test mig(bareinterval(-1.0,Inf)) === 0.0 - - @test mig(bareinterval(1.0,Inf)) === 1.0 - - @test mig(bareinterval(-Inf,+Inf)) === 0.0 - - @test isnan(mig(emptyinterval(BareInterval{Float64}))) - - @test mig(bareinterval(-0.0,0.0)) === 0.0 - - @test mig(bareinterval(-0.0,-0.0)) === 0.0 - -end -@testset "minimal_mig_dec_test" begin - - @test mig(interval(bareinterval(1.0,2.0), com)) === 1.0 - - @test mig(interval(bareinterval(-4.0,2.0), trv)) === 0.0 - - @test mig(interval(bareinterval(-4.0,-2.0), trv)) === 2.0 - - @test mig(interval(bareinterval(-Inf,2.0), def)) === 0.0 - - @test mig(interval(bareinterval(-Inf,-2.0), trv)) === 2.0 - - @test mig(interval(bareinterval(-1.0,Inf), trv)) === 0.0 - - @test mig(interval(bareinterval(1.0,Inf), trv)) === 1.0 - - @test mig(interval(bareinterval(-Inf,+Inf), trv)) === 0.0 - - @test isnan(mig(interval(emptyinterval(BareInterval{Float64}), trv))) - - @test isnan(mig(nai())) - - @test mig(interval(bareinterval(-0.0,0.0), trv)) === 0.0 - - @test mig(interval(bareinterval(-0.0,-0.0), trv)) === 0.0 - -end diff --git a/test/ITF1788_tests/libieeep1788_overlap.jl b/test/ITF1788_tests/libieeep1788_overlap.jl deleted file mode 100644 index 9e467f1b8..000000000 --- a/test/ITF1788_tests/libieeep1788_overlap.jl +++ /dev/null @@ -1,160 +0,0 @@ -@testset "minimal_overlap_test" begin - - @test overlap(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.both_empty - - @test overlap(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.first_empty - - @test overlap(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.second_empty - - @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,3.0)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,3.0)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,Inf)) === IntervalArithmetic.Overlap.before - - @test overlap(bareinterval(-Inf,2.0), bareinterval(2.0,3.0)) === IntervalArithmetic.Overlap.meets - - @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,3.0)) === IntervalArithmetic.Overlap.meets - - @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,Inf)) === IntervalArithmetic.Overlap.meets - - @test overlap(bareinterval(1.0,2.0), bareinterval(1.5,2.5)) === IntervalArithmetic.Overlap.overlaps - - @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === IntervalArithmetic.Overlap.starts - - @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,3.0)) === IntervalArithmetic.Overlap.starts - - @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,3.0)) === IntervalArithmetic.Overlap.starts - - @test overlap(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.contained_by - - @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,3.0)) === IntervalArithmetic.Overlap.contained_by - - @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,3.0)) === IntervalArithmetic.Overlap.contained_by - - @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,3.0)) === IntervalArithmetic.Overlap.contained_by - - @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,Inf)) === IntervalArithmetic.Overlap.contained_by - - @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.finishes - - @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,2.0)) === IntervalArithmetic.Overlap.finishes - - @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,2.0)) === IntervalArithmetic.Overlap.finishes - - @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.equals - - @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,1.0)) === IntervalArithmetic.Overlap.equals - - @test overlap(bareinterval(-Inf,1.0), bareinterval(-Inf,1.0)) === IntervalArithmetic.Overlap.equals - - @test overlap(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.equals - - @test overlap(bareinterval(3.0,4.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after - - @test overlap(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.after - - @test overlap(bareinterval(3.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.after - - @test overlap(bareinterval(3.0,3.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after - - @test overlap(bareinterval(3.0,Inf), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after - - @test overlap(bareinterval(2.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.met_by - - @test overlap(bareinterval(2.0,3.0), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.met_by - - @test overlap(bareinterval(1.5,2.5), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.overlapped_by - - @test overlap(bareinterval(1.5,2.5), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.overlapped_by - - @test overlap(bareinterval(1.0,Inf), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.started_by - - @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.started_by - - @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,1.0)) === IntervalArithmetic.Overlap.started_by - - @test overlap(bareinterval(-Inf,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains - - @test overlap(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains - - @test overlap(bareinterval(0.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains - - @test overlap(bareinterval(0.0,3.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.contains - - @test overlap(bareinterval(-Inf,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.finished_by - - @test overlap(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.finished_by - - @test overlap(bareinterval(0.0,2.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.finished_by - -end -@testset "minimal_overlap_dec_test" begin - - @test overlap(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === IntervalArithmetic.Overlap.both_empty - - @test overlap(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), com)) === IntervalArithmetic.Overlap.first_empty - - @test overlap(interval(bareinterval(1.0,2.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === IntervalArithmetic.Overlap.second_empty - - @test overlap(interval(bareinterval(2.0,2.0), def), interval(bareinterval(3.0,4.0), def)) === IntervalArithmetic.Overlap.before - - @test overlap(interval(bareinterval(1.0,2.0), dac), interval(bareinterval(3.0,4.0), com)) === IntervalArithmetic.Overlap.before - - @test overlap(interval(bareinterval(1.0,2.0), com), interval(bareinterval(3.0,3.0), trv)) === IntervalArithmetic.Overlap.before - - @test overlap(interval(bareinterval(2.0,2.0), trv), interval(bareinterval(3.0,3.0), def)) === IntervalArithmetic.Overlap.before - - @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(2.0,3.0), def)) === IntervalArithmetic.Overlap.meets - - @test overlap(interval(bareinterval(1.0,2.0), dac), interval(bareinterval(1.5,2.5), def)) === IntervalArithmetic.Overlap.overlaps - - @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,3.0), com)) === IntervalArithmetic.Overlap.starts - - @test overlap(interval(bareinterval(1.0,1.0), trv), interval(bareinterval(1.0,3.0), def)) === IntervalArithmetic.Overlap.starts - - @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(0.0,3.0), dac)) === IntervalArithmetic.Overlap.contained_by - - @test overlap(interval(bareinterval(2.0,2.0), trv), interval(bareinterval(0.0,3.0), def)) === IntervalArithmetic.Overlap.contained_by - - @test overlap(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(0.0,2.0), com)) === IntervalArithmetic.Overlap.finishes - - @test overlap(interval(bareinterval(2.0,2.0), def), interval(bareinterval(0.0,2.0), dac)) === IntervalArithmetic.Overlap.finishes - - @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.equals - - @test overlap(interval(bareinterval(1.0,1.0), dac), interval(bareinterval(1.0,1.0), dac)) === IntervalArithmetic.Overlap.equals - - @test overlap(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(2.0,2.0), trv)) === IntervalArithmetic.Overlap.after - - @test overlap(interval(bareinterval(3.0,4.0), def), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.after - - @test overlap(interval(bareinterval(3.0,3.0), com), interval(bareinterval(1.0,2.0), dac)) === IntervalArithmetic.Overlap.after - - @test overlap(interval(bareinterval(3.0,3.0), def), interval(bareinterval(2.0,2.0), trv)) === IntervalArithmetic.Overlap.after - - @test overlap(interval(bareinterval(2.0,3.0), def), interval(bareinterval(1.0,2.0), trv)) === IntervalArithmetic.Overlap.met_by - - @test overlap(interval(bareinterval(1.5,2.5), com), interval(bareinterval(1.0,2.0), com)) === IntervalArithmetic.Overlap.overlapped_by - - @test overlap(interval(bareinterval(1.0,3.0), dac), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.started_by - - @test overlap(interval(bareinterval(1.0,3.0), com), interval(bareinterval(1.0,1.0), dac)) === IntervalArithmetic.Overlap.started_by - - @test overlap(interval(bareinterval(0.0,3.0), com), interval(bareinterval(1.0,2.0), dac)) === IntervalArithmetic.Overlap.contains - - @test overlap(interval(bareinterval(0.0,3.0), com), interval(bareinterval(2.0,2.0), def)) === IntervalArithmetic.Overlap.contains - - @test overlap(interval(bareinterval(0.0,2.0), def), interval(bareinterval(1.0,2.0), trv)) === IntervalArithmetic.Overlap.finished_by - - @test overlap(interval(bareinterval(0.0,2.0), dac), interval(bareinterval(2.0,2.0), def)) === IntervalArithmetic.Overlap.finished_by - -end diff --git a/test/ITF1788_tests/libieeep1788_rec_bool.jl b/test/ITF1788_tests/libieeep1788_rec_bool.jl deleted file mode 100644 index b1c5c00fc..000000000 --- a/test/ITF1788_tests/libieeep1788_rec_bool.jl +++ /dev/null @@ -1,296 +0,0 @@ -@testset "minimal_is_common_interval_test" begin - - @test iscommon(bareinterval(-27.0,-27.0)) === true - - @test iscommon(bareinterval(-27.0, 0.0)) === true - - @test iscommon(bareinterval(0.0,0.0)) === true - - @test iscommon(bareinterval(-0.0,-0.0)) === true - - @test iscommon(bareinterval(-0.0,0.0)) === true - - @test iscommon(bareinterval(0.0,-0.0)) === true - - @test iscommon(bareinterval(5.0, 12.4)) === true - - @test iscommon(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023)) === true - - @test iscommon(entireinterval(BareInterval{Float64})) === false - - @test iscommon(emptyinterval(BareInterval{Float64})) === false - - @test iscommon(bareinterval(-Inf, 0.0)) === false - - @test iscommon(bareinterval(0.0, Inf)) === false - -end -@testset "minimal_is_common_interval_dec_test" begin - - @test iscommon(interval(bareinterval(-27.0,-27.0), com)) === true - - @test iscommon(interval(bareinterval(-27.0, 0.0), com)) === true - - @test iscommon(interval(bareinterval(0.0,0.0), com)) === true - - @test iscommon(interval(bareinterval(-0.0,-0.0), com)) === true - - @test iscommon(interval(bareinterval(-0.0,0.0), com)) === true - - @test iscommon(interval(bareinterval(0.0,-0.0), com)) === true - - @test iscommon(interval(bareinterval(5.0, 12.4), com)) === true - - @test iscommon(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), com)) === true - - @test iscommon(interval(bareinterval(-27.0,-27.0), trv)) === true - - @test iscommon(interval(bareinterval(-27.0, 0.0), def)) === true - - @test iscommon(interval(bareinterval(0.0,0.0), dac)) === true - - @test iscommon(interval(bareinterval(-0.0,-0.0), trv)) === true - - @test iscommon(interval(bareinterval(-0.0,0.0), def)) === true - - @test iscommon(interval(bareinterval(0.0,-0.0), dac)) === true - - @test iscommon(interval(bareinterval(5.0, 12.4), def)) === true - - @test iscommon(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), trv)) === true - - @test iscommon(interval(entireinterval(BareInterval{Float64}), dac)) === false - - @test iscommon(nai()) === false - - @test iscommon(interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test iscommon(interval(bareinterval(-Inf, 0.0), trv)) === false - - @test iscommon(interval(bareinterval(0.0, Inf), def)) === false - -end -@testset "minimal_is_singleton_test" begin - - @test isthin(bareinterval(-27.0,-27.0)) === true - - @test isthin(bareinterval(-2.0, -2.0)) === true - - @test isthin(bareinterval(12.0,12.0)) === true - - @test isthin(bareinterval(17.1, 17.1)) === true - - @test isthin(bareinterval(-0.0,-0.0)) === true - - @test isthin(bareinterval(0.0,0.0)) === true - - @test isthin(bareinterval(-0.0, 0.0)) === true - - @test isthin(bareinterval(0.0, -0.0)) === true - - @test isthin(emptyinterval(BareInterval{Float64})) === false - - @test isthin(entireinterval(BareInterval{Float64})) === false - - @test isthin(bareinterval(-1.0, 0.0)) === false - - @test isthin(bareinterval(-1.0, -0.5)) === false - - @test isthin(bareinterval(1.0, 2.0)) === false - - @test isthin(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) === false - - @test isthin(bareinterval(-1.0,Inf)) === false - -end -@testset "minimal_is_singleton_dec_test" begin - - @test isthin(interval(bareinterval(-27.0,-27.0), def)) === true - - @test isthin(interval(bareinterval(-2.0, -2.0), trv)) === true - - @test isthin(interval(bareinterval(12.0,12.0), dac)) === true - - @test isthin(interval(bareinterval(17.1, 17.1), com)) === true - - @test isthin(interval(bareinterval(-0.0,-0.0), def)) === true - - @test isthin(interval(bareinterval(0.0,0.0), com)) === true - - @test isthin(interval(bareinterval(-0.0, 0.0), def)) === true - - @test isthin(interval(bareinterval(0.0, -0.0), dac)) === true - - @test isthin(interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test isthin(nai()) === false - - @test isthin(interval(entireinterval(BareInterval{Float64}), def)) === false - - @test isthin(interval(bareinterval(-1.0, 0.0), dac)) === false - - @test isthin(interval(bareinterval(-1.0, -0.5), com)) === false - - @test isthin(interval(bareinterval(1.0, 2.0), def)) === false - - @test isthin(interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), dac)) === false - - @test isthin(interval(bareinterval(-1.0,Inf), trv)) === false - -end -@testset "minimal_is_member_test" begin - - @test in_interval(-27.0, bareinterval(-27.0,-27.0)) === true - - @test in_interval(-27.0, bareinterval(-27.0, 0.0)) === true - - @test in_interval(-7.0, bareinterval(-27.0, 0.0)) === true - - @test in_interval(0.0, bareinterval(-27.0, 0.0)) === true - - @test in_interval(-0.0, bareinterval(0.0,0.0)) === true - - @test in_interval(0.0, bareinterval(0.0,0.0)) === true - - @test in_interval(0.0, bareinterval(-0.0,-0.0)) === true - - @test in_interval(0.0, bareinterval(-0.0,0.0)) === true - - @test in_interval(0.0, bareinterval(0.0,-0.0)) === true - - @test in_interval(5.0, bareinterval(5.0, 12.4)) === true - - @test in_interval(6.3, bareinterval(5.0, 12.4)) === true - - @test in_interval(12.4, bareinterval(5.0, 12.4)) === true - - @test in_interval(0.0, entireinterval(BareInterval{Float64})) === true - - @test in_interval(5.0, entireinterval(BareInterval{Float64})) === true - - @test in_interval(6.3, entireinterval(BareInterval{Float64})) === true - - @test in_interval(12.4, entireinterval(BareInterval{Float64})) === true - - @test in_interval(0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) === true - - @test in_interval(-0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) === true - - @test in_interval(0x1.0p-1022, entireinterval(BareInterval{Float64})) === true - - @test in_interval(-0x1.0p-1022, entireinterval(BareInterval{Float64})) === true - - @test in_interval(-71.0, bareinterval(-27.0, 0.0)) === false - - @test in_interval(0.1, bareinterval(-27.0, 0.0)) === false - - @test in_interval(-0.01, bareinterval(0.0,0.0)) === false - - @test in_interval(0.000001, bareinterval(0.0,0.0)) === false - - @test in_interval(111110.0, bareinterval(-0.0,-0.0)) === false - - @test in_interval(4.9, bareinterval(5.0, 12.4)) === false - - @test in_interval(-6.3, bareinterval(5.0, 12.4)) === false - - @test in_interval(0.0, emptyinterval(BareInterval{Float64})) === false - - @test in_interval(-4535.3, emptyinterval(BareInterval{Float64})) === false - - @test in_interval(-Inf, emptyinterval(BareInterval{Float64})) === false - - @test in_interval(Inf, emptyinterval(BareInterval{Float64})) === false - - @test in_interval(NaN, emptyinterval(BareInterval{Float64})) === false - - @test in_interval(-Inf, entireinterval(BareInterval{Float64})) === false - - @test in_interval(Inf, entireinterval(BareInterval{Float64})) === false - - @test in_interval(NaN, entireinterval(BareInterval{Float64})) === false - -end -@testset "minimal_is_member_dec_test" begin - - @test in_interval(-27.0, interval(bareinterval(-27.0,-27.0), trv)) === true - - @test in_interval(-27.0, interval(bareinterval(-27.0, 0.0), def)) === true - - @test in_interval(-7.0, interval(bareinterval(-27.0, 0.0), dac)) === true - - @test in_interval(0.0, interval(bareinterval(-27.0, 0.0), com)) === true - - @test in_interval(-0.0, interval(bareinterval(0.0,0.0), trv)) === true - - @test in_interval(0.0, interval(bareinterval(0.0,0.0), def)) === true - - @test in_interval(0.0, interval(bareinterval(-0.0,-0.0), dac)) === true - - @test in_interval(0.0, interval(bareinterval(-0.0,0.0), com)) === true - - @test in_interval(0.0, interval(bareinterval(0.0,-0.0), trv)) === true - - @test in_interval(5.0, interval(bareinterval(5.0, 12.4), def)) === true - - @test in_interval(6.3, interval(bareinterval(5.0, 12.4), dac)) === true - - @test in_interval(12.4, interval(bareinterval(5.0, 12.4), com)) === true - - @test in_interval(0.0, interval(entireinterval(BareInterval{Float64}), trv)) === true - - @test in_interval(5.0, interval(entireinterval(BareInterval{Float64}), def)) === true - - @test in_interval(6.3, interval(entireinterval(BareInterval{Float64}), dac)) === true - - @test in_interval(12.4, interval(entireinterval(BareInterval{Float64}), trv)) === true - - @test in_interval(0x1.FFFFFFFFFFFFFp1023, interval(entireinterval(BareInterval{Float64}), def)) === true - - @test in_interval(-0x1.FFFFFFFFFFFFFp1023, interval(entireinterval(BareInterval{Float64}), dac)) === true - - @test in_interval(0x1.0p-1022, interval(entireinterval(BareInterval{Float64}), trv)) === true - - @test in_interval(-0x1.0p-1022, interval(entireinterval(BareInterval{Float64}), def)) === true - - @test in_interval(-71.0, interval(bareinterval(-27.0, 0.0), trv)) === false - - @test in_interval(0.1, interval(bareinterval(-27.0, 0.0), def)) === false - - @test in_interval(-0.01, interval(bareinterval(0.0,0.0), dac)) === false - - @test in_interval(0.000001, interval(bareinterval(0.0,0.0), com)) === false - - @test in_interval(111110.0, interval(bareinterval(-0.0,-0.0), trv)) === false - - @test in_interval(4.9, interval(bareinterval(5.0, 12.4), def)) === false - - @test in_interval(-6.3, interval(bareinterval(5.0, 12.4), dac)) === false - - @test in_interval(0.0, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(0.0, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(-4535.3, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(-4535.3, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(-Inf, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(-Inf, nai()) === false - - @test in_interval(Inf, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(Inf, nai()) === false - - @test in_interval(NaN, interval(emptyinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(NaN, nai()) === false - - @test in_interval(-Inf, interval(entireinterval(BareInterval{Float64}), trv)) === false - - @test in_interval(Inf, interval(entireinterval(BareInterval{Float64}), def)) === false - - @test in_interval(NaN, interval(entireinterval(BareInterval{Float64}), dac)) === false - -end diff --git a/test/ITF1788_tests/libieeep1788_reduction.jl b/test/ITF1788_tests/libieeep1788_reduction.jl deleted file mode 100644 index feb2c8dea..000000000 --- a/test/ITF1788_tests/libieeep1788_reduction.jl +++ /dev/null @@ -1,42 +0,0 @@ -@testset "minimal_sum_test" begin - - @test sum([1.0, 2.0, 3.0]) === 6.0 - - @test isnan(sum([1.0, 2.0, NaN, 3.0])) - - @test isnan(sum([1.0, -Inf, 2.0, Inf, 3.0])) - -end -@testset "minimal_sum_abs_test" begin - - @test sum(abs.([1.0, -2.0, 3.0])) === 6.0 - - @test isnan(sum(abs.([1.0, -2.0, NaN, 3.0]))) - - @test sum(abs.([1.0, -Inf, 2.0, Inf, 3.0])) === Inf - -end -@testset "minimal_sum_sqr_test" begin - - @test sum([1.0, 2.0, 3.0].^2) === 14.0 - - @test isnan(sum([1.0, 2.0, NaN, 3.0].^2)) - - @test sum([1.0, -Inf, 2.0, Inf, 3.0].^2) === Inf - -end -@testset "minimal_dot_test" begin - - @test sum(.*([1.0, 2.0, 3.0], [1.0, 2.0, 3.0])) === 14.0 - - @test_broken sum(.*([0x10000000000001p0, 0x1p104], [0x0fffffffffffffp0, -1.0])) === -1.0 - - @test isnan(sum(.*([1.0, 2.0, NaN, 3.0], [1.0, 2.0, 3.0, 4.0]))) - - @test isnan(sum(.*([1.0, 2.0, 3.0, 4.0], [1.0, 2.0, NaN, 3.0]))) - - @test isnan(sum(.*([1.0, 2.0, 0.0, 4.0], [1.0, 2.0, Inf, 3.0]))) - - @test isnan(sum(.*([1.0, 2.0, -Inf, 4.0], [1.0, 2.0, 0.0, 3.0]))) - -end diff --git a/test/ITF1788_tests/libieeep1788_set.jl b/test/ITF1788_tests/libieeep1788_set.jl deleted file mode 100644 index 76a81a39a..000000000 --- a/test/ITF1788_tests/libieeep1788_set.jl +++ /dev/null @@ -1,52 +0,0 @@ -@testset "minimal_intersection_test" begin - - @test intersect_interval(bareinterval(1.0,3.0), bareinterval(2.1,4.0)) === bareinterval(2.1,3.0) - - @test intersect_interval(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === bareinterval(3.0,3.0) - - @test intersect_interval(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0,3.0) - -end -@testset "minimal_intersection_dec_test" begin - - @test intersect_interval(interval(bareinterval(1.0,3.0), com), interval(bareinterval(2.1,4.0), com)) === interval(bareinterval(2.1,3.0), trv) - - @test intersect_interval(interval(bareinterval(1.0,3.0), dac), interval(bareinterval(3.0,4.0), def)) === interval(bareinterval(3.0,3.0), trv) - - @test intersect_interval(interval(bareinterval(1.0,3.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test intersect_interval(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test intersect_interval(interval(bareinterval(1.0,3.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(1.0,3.0), trv) - -end -@testset "minimal_convex_hull_test" begin - - @test hull(bareinterval(1.0,3.0), bareinterval(2.1,4.0)) === bareinterval(1.0,4.0) - - @test hull(bareinterval(1.0,1.0), bareinterval(2.1,4.0)) === bareinterval(1.0,4.0) - - @test hull(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})) === bareinterval(1.0,3.0) - - @test hull(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) - - @test hull(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - -end -@testset "minimal_convex_hull_dec_test" begin - - @test hull(interval(bareinterval(1.0,3.0), trv), interval(bareinterval(2.1,4.0), trv)) === interval(bareinterval(1.0,4.0), trv) - - @test hull(interval(bareinterval(1.0,1.0), trv), interval(bareinterval(2.1,4.0), trv)) === interval(bareinterval(1.0,4.0), trv) - - @test hull(interval(bareinterval(1.0,3.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(bareinterval(1.0,3.0), trv) - - @test hull(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) - - @test hull(interval(bareinterval(1.0,3.0), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) - -end diff --git a/test/ITF1788_tests/mpfi.jl b/test/ITF1788_tests/mpfi.jl deleted file mode 100644 index fbf5dfb72..000000000 --- a/test/ITF1788_tests/mpfi.jl +++ /dev/null @@ -1,2935 +0,0 @@ -@testset "mpfi_abs" begin - - @test abs(bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) - - @test abs(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) - - @test abs(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) - - @test abs(bareinterval(-Inf, +8.0)) === bareinterval(0.0, +Inf) - - @test abs(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) - - @test abs(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test abs(bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test abs(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test abs(bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test abs(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test abs(bareinterval(0x123456789p-16, 0x123456799p-16)) === bareinterval(0x123456789p-16, 0x123456799p-16) - - @test abs(bareinterval(-0x123456789p-16, 0x123456799p-16)) === bareinterval(0.0, 0x123456799p-16) - -end -@testset "mpfi_acos" begin - - @test acos(bareinterval(-1.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51) - - @test acos(bareinterval(0.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-52) - - @test acos(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) - - @test acos(bareinterval(-1.0, -0.5)) === bareinterval(0x10c152382d7365p-51, 0x1921fb54442d19p-51) - - @test acos(bareinterval(-0.75, -0.25)) === bareinterval(0x1d2cf5c7c70f0bp-52, 0x4d6749be4edb1p-49) - - @test acos(bareinterval(-0.5, 0.5)) === bareinterval(0x10c152382d7365p-52, 0x860a91c16b9b3p-50) - - @test acos(bareinterval(0.25, 0.625)) === bareinterval(0x1ca94936b98a21p-53, 0x151700e0c14b25p-52) - - @test acos(bareinterval(-1.0, 1.0)) === bareinterval(0.0, 0x1921fb54442d19p-51) - -end -@testset "mpfi_acosh" begin - - @test acosh(bareinterval(+1.0, +Inf)) === bareinterval(0.0, +Inf) - - @test acosh(bareinterval(+1.5, +Inf)) === bareinterval(0x1ecc2caec51609p-53, +Inf) - - @test acosh(bareinterval(1.0, 1.5)) === bareinterval(0.0, 0xf661657628b05p-52) - - @test acosh(bareinterval(1.5, 1.5)) === bareinterval(0x1ecc2caec51609p-53, 0xf661657628b05p-52) - - @test acosh(bareinterval(2.0, 1000.0)) === bareinterval(0x544909c66010dp-50, 0x799d4ba2a13b5p-48) - -end -@testset "mpfi_add" begin - - @test +(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, +1.0) - - @test +(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +16.0) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -7.0) - - @test +(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-7.0, +8.0) - - @test +(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test +(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test +(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(+8.0, +Inf) - - @test +(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(0.0, +8.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +16.0) - - @test +(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test +(bareinterval(0.0, +Inf), bareinterval(-7.0, +8.0)) === bareinterval(-7.0, +Inf) - - @test +(bareinterval(-0.375, -0x10187p-256), bareinterval(-0.125, 0x1p-240)) === bareinterval(-0x1p-1, -0x187p-256) - - @test +(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x10000000000000p-93, 0x789abcdp0)) === bareinterval(-0x10000000000001p-93, 0x123456789abcdp0) - - @test +(bareinterval(-4.0, +7.0), bareinterval(-0x123456789abcdp-17, 3e300)) === bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947) - - @test +(bareinterval(0x1000100010001p+8, 0x1p+60), bareinterval(0x1000100010001p0, 3.0e300)) === bareinterval(+0x1010101010101p+8, 0x8f596b3002c1bp+947) - - @test +(bareinterval(+4.0, +8.0), bareinterval(-4.0, -2.0)) === bareinterval(0.0, +6.0) - - @test +(bareinterval(+4.0, +8.0), bareinterval(-9.0, -8.0)) === bareinterval(-5.0, 0.0) - -end -@testset "mpfi_add_d" begin - - @test +(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)) === bareinterval(-Inf, -7.0) - - @test +(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, -7.0) - - @test +(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -0x1bffffffffffffp-50) - - @test +(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(-Inf, -8.0e-17) - - @test +(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 0.0) - - @test +(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0x170ef54646d497p-106) - - @test +(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-Inf, -0x16345785d89fff00p0) - - @test +(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 8.0) - - @test +(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, 0x16345785d8a00100p0) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === entireinterval(BareInterval{Float64}) - - @test +(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test +(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) - - @test +(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test +(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109) - - @test +(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x114b37f4b51f71p-107, 8.0) - - @test +(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 8.0) - - @test +(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f7p-103, 0x114b37f4b51f7p-103)) === bareinterval(0x114b37f4b51f7p-103, 0x10000000000001p-49) - - @test +(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-0x50b45a75f7e81p-104, +Inf) - - @test +(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, +Inf) - - @test +(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0x142d169d7dfa03p-106, +Inf) - - @test +(bareinterval(-32.0, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) - - @test +(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) - - @test +(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) - - @test +(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) - - @test +(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) - - @test +(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) - - @test +(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)) === bareinterval(0xfff8p-4, 0x10018p-4) - - @test +(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) - - @test +(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) - - @test +(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) - - @test +(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)) === bareinterval(-0x10038p-4, -0x10018p-4) - -end -@testset "mpfi_asin" begin - - @test asin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1921fb54442d19p-52, 0.0) - - @test asin(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test asin(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) - - @test asin(bareinterval(-1.0, -0.5)) === bareinterval(-0x1921fb54442d19p-52, -0x10c152382d7365p-53) - - @test asin(bareinterval(-0.75, -0.25)) === bareinterval(-0x1b235315c680ddp-53, -0x102be9ce0b87cdp-54) - - @test asin(bareinterval(-0.5, 0.5)) === bareinterval(-0x860a91c16b9b3p-52, 0x860a91c16b9b3p-52) - - @test asin(bareinterval(0.25, 0.625)) === bareinterval(0x102be9ce0b87cdp-54, 0x159aad71ced00fp-53) - - @test asin(bareinterval(-1.0, 1.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) - -end -@testset "mpfi_asinh" begin - - @test asinh(bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -0x152728c91b5f1dp-51) - - @test asinh(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test asinh(bareinterval(-Inf, +8.0)) === bareinterval(-Inf, 0x58d8dc657eaf5p-49) - - @test asinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test asinh(bareinterval(-1.0, 0.0)) === bareinterval(-0x1c34366179d427p-53, 0.0) - - @test asinh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test asinh(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1c34366179d427p-53) - - @test asinh(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x58d8dc657eaf5p-49) - - @test asinh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test asinh(bareinterval(-6.0, -4.0)) === bareinterval(-0x4fbca919fe219p-49, -0x10c1f8a6e80eebp-51) - - @test asinh(bareinterval(-2.0, -0.5)) === bareinterval(-0x2e32430627a11p-49, -0x1ecc2caec51609p-54) - - @test asinh(bareinterval(-1.0, -0.5)) === bareinterval(-0x1c34366179d427p-53, -0x1ecc2caec51609p-54) - - @test asinh(bareinterval(-0.75, -0.25)) === bareinterval(-0x162e42fefa39fp-49, -0xfd67d91ccf31bp-54) - - @test asinh(bareinterval(-0.5, 0.5)) === bareinterval(-0xf661657628b05p-53, 0xf661657628b05p-53) - - @test asinh(bareinterval(0.25, 0.625)) === bareinterval(0xfd67d91ccf31bp-54, 0x4b89d40b2fecdp-51) - - @test asinh(bareinterval(-1.0, 1.0)) === bareinterval(-0x1c34366179d427p-53, 0x1c34366179d427p-53) - - @test asinh(bareinterval(0.125, 17.0)) === bareinterval(0xff5685b4cb4b9p-55, 0xe1be0ba541ef7p-50) - - @test asinh(bareinterval(17.0, 42.0)) === bareinterval(0x1c37c174a83dedp-51, 0x8dca6976ad6bdp-49) - - @test asinh(bareinterval(-42.0, 17.0)) === bareinterval(-0x8dca6976ad6bdp-49, 0xe1be0ba541ef7p-50) - -end -@testset "mpfi_atan" begin - - @test atan(bareinterval(-Inf, -7.0)) === bareinterval(-0x1921fb54442d19p-52, -0x5b7315eed597fp-50) - - @test atan(bareinterval(-Inf, 0.0)) === bareinterval(-0x1921fb54442d19p-52, 0.0) - - @test atan(bareinterval(-Inf, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0xb924fd54cb511p-51) - - @test atan(entireinterval(BareInterval{Float64})) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) - - @test atan(bareinterval(-1.0, 0.0)) === bareinterval(-0x1921fb54442d19p-53, 0.0) - - @test atan(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test atan(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-53) - - @test atan(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0xb924fd54cb511p-51) - - @test atan(bareinterval(0.0, +Inf)) === bareinterval(0.0, 0x1921fb54442d19p-52) - - @test atan(bareinterval(-6.0, -4.0)) === bareinterval(-0x167d8863bc99bdp-52, -0x54da32547a73fp-50) - - @test atan(bareinterval(-2.0, -0.5)) === bareinterval(-0x11b6e192ebbe45p-52, -0x1dac670561bb4fp-54) - - @test atan(bareinterval(-1.0, -0.5)) === bareinterval(-0x1921fb54442d19p-53, -0x1dac670561bb4fp-54) - - @test atan(bareinterval(-0.75, -0.25)) === bareinterval(-0xa4bc7d1934f71p-52, -0x1f5b75f92c80ddp-55) - - @test atan(bareinterval(-0.5, 0.5)) === bareinterval(-0x1dac670561bb5p-50, 0x1dac670561bb5p-50) - - @test atan(bareinterval(0.25, 0.625)) === bareinterval(0x1f5b75f92c80ddp-55, 0x47802eaf7bfadp-51) - - @test atan(bareinterval(-1.0, 1.0)) === bareinterval(-0x1921fb54442d19p-53, 0x1921fb54442d19p-53) - - @test atan(bareinterval(0.125, 17.0)) === bareinterval(0x1fd5ba9aac2f6dp-56, 0x1831516233f561p-52) - - @test atan(bareinterval(17.0, 42.0)) === bareinterval(0xc18a8b119fabp-47, 0x18c079f3350d27p-52) - - @test atan(bareinterval(-42.0, 17.0)) === bareinterval(-0x18c079f3350d27p-52, 0x1831516233f561p-52) - -end -@testset "mpfi_atan2" begin - - @test atan(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-0x6d9cc4b34bd0dp-50, -0x1700a7c5784633p-53) - - @test atan(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-0x1921fb54442d19p-52, 0.0) - - @test atan(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) - - @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) - - @test atan(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51) - - @test atan(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) - - @test atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) - - @test atan(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) - - @test atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1921fb54442d19p-51) - - @test atan(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-51) - - @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) - - @test atan(bareinterval(-17.0, -5.0), bareinterval(-4002.0, -1.0)) === bareinterval(-0x191f6c4c09a81bp-51, -0x1a12a5465464cfp-52) - - @test atan(bareinterval(-17.0, -5.0), bareinterval(1.0, 4002.0)) === bareinterval(-0x1831516233f561p-52, -0xa3c20ea13f5e5p-61) - - @test atan(bareinterval(5.0, 17.0), bareinterval(1.0, 4002.0)) === bareinterval(0xa3c20ea13f5e5p-61, 0x1831516233f561p-52) - - @test atan(bareinterval(5.0, 17.0), bareinterval(-4002.0, -1.0)) === bareinterval(0x1a12a5465464cfp-52, 0x191f6c4c09a81bp-51) - - @test atan(bareinterval(-17.0, 5.0), bareinterval(-4002.0, 1.0)) === bareinterval(-0x1921fb54442d19p-51, 0x1921fb54442d19p-51) - -end -@testset "mpfi_atanh" begin - - @test atanh(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, 0.0) - - @test atanh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test atanh(bareinterval(0.0, +1.0)) === bareinterval(0.0, +Inf) - - @test atanh(bareinterval(-1.0, -0.5)) === bareinterval(-Inf, -0x8c9f53d568185p-52) - - @test atanh(bareinterval(-0.75, -0.25)) === bareinterval(-0x3e44e55c64b4bp-50, -0x1058aefa811451p-54) - - @test atanh(bareinterval(-0.5, 0.5)) === bareinterval(-0x1193ea7aad030bp-53, 0x1193ea7aad030bp-53) - - @test atanh(bareinterval(0.25, 0.625)) === bareinterval(0x1058aefa811451p-54, 0x2eec3bb76c2b3p-50) - - @test atanh(bareinterval(-1.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test atanh(bareinterval(0.125, 1.0)) === bareinterval(0x1015891c9eaef7p-55, +Inf) - -end -@testset "mpfi_bounded_p" begin - - @test iscommon(bareinterval(-Inf, -8.0)) === false - - @test iscommon(bareinterval(-Inf, 0.0)) === false - - @test iscommon(bareinterval(-Inf, 5.0)) === false - - @test iscommon(entireinterval(BareInterval{Float64})) === false - - @test iscommon(bareinterval(-8.0, 0.0)) === true - - @test iscommon(bareinterval(0.0, 0.0)) === true - - @test iscommon(bareinterval(0.0, 5.0)) === true - - @test iscommon(bareinterval(0.0, +Inf)) === false - - @test iscommon(bareinterval(5.0, +Inf)) === false - - @test iscommon(bareinterval(-34.0, -17.0)) === true - - @test iscommon(bareinterval(-8.0, -1.0)) === true - - @test iscommon(bareinterval(-34.0, 17.0)) === true - - @test iscommon(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true - - @test iscommon(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true - - @test iscommon(bareinterval(+8.0, +0x7fffffffffffbp+51)) === true - - @test iscommon(bareinterval(+0x1fffffffffffffp-53, 2.0)) === true - -end -@testset "mpfi_cbrt" begin - - @test cbrt(bareinterval(-Inf, -125.0)) === bareinterval(-Inf, -5.0) - - @test cbrt(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test cbrt(bareinterval(-Inf, +64.0)) === bareinterval(-Inf, +4.0) - - @test cbrt(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cbrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test cbrt(bareinterval(0.0, +27.0)) === bareinterval(0.0, +3.0) - - @test cbrt(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test cbrt(bareinterval(0x40p0, 0x7dp0)) === bareinterval(4.0, 5.0) - - @test cbrt(bareinterval(-0x1856e4be527197p-354, 0xd8p0)) === bareinterval(-0x2e5e58c0083b7bp-154, 6.0) - - @test cbrt(bareinterval(0x141a9019a2184dp-1047, 0xc29c78c66ac0fp-678)) === bareinterval(0x2b8172e535d44dp-385, 0x24cbd1c55aaa1p-258) - -end -@testset "mpfi_cos" begin - - @test cos(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-Inf, +8.0)) === bareinterval(-1.0, 1.0) - - @test cos(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-1.0, 0.0)) === bareinterval(0x114a280fb5068bp-53, 1.0) - - @test cos(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) - - @test cos(bareinterval(0.0, +1.0)) === bareinterval(0x114a280fb5068bp-53, 1.0) - - @test cos(bareinterval(0.0, +8.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(0.0, +Inf)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-2.0, -0.5)) === bareinterval(-0x1aa22657537205p-54, 0x1c1528065b7d5p-49) - - @test cos(bareinterval(-1.0, -0.25)) === bareinterval(0x114a280fb5068bp-53, 0xf80aa4fbef751p-52) - - @test cos(bareinterval(-0.5, 0.5)) === bareinterval(0x1c1528065b7d4fp-53, 1.0) - - @test cos(bareinterval(-4.5, 0.625)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(1.0, 0x3243f6a8885a3p-48)) === bareinterval(-1.0, 0x4528a03ed41a3p-51) - - @test cos(bareinterval(0.125, 17.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(17.0, 42.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-7.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-7.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-7.0, -1.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-7.0, -2.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-7.0, -3.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-7.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 1.0) - - @test cos(bareinterval(-7.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 1.0) - - @test cos(bareinterval(-7.0, -6.0)) === bareinterval(0x181ff79ed92017p-53, 1.0) - - @test cos(bareinterval(-7.0, -7.0)) === bareinterval(0x181ff79ed92017p-53, 0x181ff79ed92018p-53) - - @test cos(bareinterval(-6.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-6.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-6.0, -1.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) - - @test cos(bareinterval(-6.0, -2.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) - - @test cos(bareinterval(-6.0, -3.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) - - @test cos(bareinterval(-6.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 0x1eb9b7097822f6p-53) - - @test cos(bareinterval(-6.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 0x1eb9b7097822f6p-53) - - @test cos(bareinterval(-6.0, -6.0)) === bareinterval(0x1eb9b7097822f5p-53, 0x1eb9b7097822f6p-53) - - @test cos(bareinterval(-5.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-5.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-5.0, -1.0)) === bareinterval(-1.0, 0x114a280fb5068cp-53) - - @test cos(bareinterval(-5.0, -2.0)) === bareinterval(-1.0, 0x122785706b4adap-54) - - @test cos(bareinterval(-5.0, -3.0)) === bareinterval(-1.0, 0x122785706b4adap-54) - - @test cos(bareinterval(-5.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 0x122785706b4adap-54) - - @test cos(bareinterval(-5.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 0x122785706b4adap-54) - - @test cos(bareinterval(-4.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-4.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test cos(bareinterval(-4.0, -1.0)) === bareinterval(-1.0, 0x114a280fb5068cp-53) - - @test cos(bareinterval(-4.0, -2.0)) === bareinterval(-1.0, -0x1aa22657537204p-54) - - @test cos(bareinterval(-4.0, -3.0)) === bareinterval(-1.0, -0x14eaa606db24c0p-53) - - @test cos(bareinterval(-4.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, -0x14eaa606db24c0p-53) - -end -@testset "mpfi_cosh" begin - - @test cosh(bareinterval(-Inf, -7.0)) === bareinterval(0x11228949ba3a8bp-43, +Inf) - - @test cosh(bareinterval(-Inf, 0.0)) === bareinterval(1.0, +Inf) - - @test cosh(bareinterval(-Inf, +8.0)) === bareinterval(1.0, +Inf) - - @test cosh(entireinterval(BareInterval{Float64})) === bareinterval(1.0, +Inf) - - @test cosh(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x18b07551d9f551p-52) - - @test cosh(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) - - @test cosh(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x18b07551d9f551p-52) - - @test cosh(bareinterval(0.0, +8.0)) === bareinterval(1.0, 0x1749eaa93f4e77p-42) - - @test cosh(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) - - @test cosh(bareinterval(-0.125, 0.0)) === bareinterval(1.0, 0x10200aac16db6fp-52) - - @test cosh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(1.0, 0x120ac1862ae8d1p-52) - - @test cosh(bareinterval(-4.5, -0.625)) === bareinterval(0x99d310a496b6dp-51, 0x1681ceb0641359p-47) - - @test cosh(bareinterval(1.0, 3.0)) === bareinterval(0x18b07551d9f55p-48, 0x1422a497d6185fp-49) - - @test cosh(bareinterval(17.0, 0xb145bb71d3dbp-38)) === bareinterval(0x1709348c0ea503p-29, 0x3ffffffffffa34p+968) - -end -@testset "mpfi_cot" begin - - @test cot(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) - - @test cot(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, 0xe07cf2eb32f0bp-49) - - @test cot(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x148c05d04e1cfdp-53) - - @test cot(bareinterval(0.0, +1.0)) === bareinterval(0x148c05d04e1cfdp-53, +Inf) - - @test cot(bareinterval(0.0, +3.0)) === bareinterval(-0xe07cf2eb32f0bp-49, +Inf) - - @test cot(bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(-3.0, -2.0)) === bareinterval(0x1d4a42e92faa4dp-54, 0xe07cf2eb32f0bp-49) - - @test cot(bareinterval(-3.0, -0x1921fb54442d19p-52)) === bareinterval(0x5cb3b399d747fp-103, 0xe07cf2eb32f0bp-49) - - @test cot(bareinterval(-2.0, 0x1921fb54442d19p-52)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(0.125, 0.5)) === bareinterval(0xea4d6bf23e051p-51, 0x1fd549f047f2bbp-50) - - @test cot(bareinterval(0.125, 0x1921fb54442d19p-52)) === bareinterval(-0x172cece675d1fdp-105, 0x1fd549f047f2bbp-50) - - @test cot(bareinterval(0x1921fb54442d19p-52, 4.0)) === entireinterval(BareInterval{Float64}) - - @test cot(bareinterval(4.0, 0x3243f6a8885a3p-47)) === bareinterval(-0x1d02967c31cdb5p-1, 0x1ba35ba1c6b75dp-53) - - @test cot(bareinterval(0x13a28c59d5433bp-44, 0x9d9462ceaa19dp-43)) === bareinterval(0x148c05d04e1fb7p-53, 0x1cefdde7c84c27p-4) - -end -@testset "mpfi_coth" begin - - @test coth(bareinterval(-Inf, -7.0)) === bareinterval(-0x100001be6c882fp-52, -1.0) - - @test coth(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) - - @test coth(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) - - @test coth(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test coth(bareinterval(-8.0, 0.0)) === bareinterval(-Inf, -0x1000003c6ab7e7p-52) - - @test coth(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -0x10145b3cc9964bp-52) - - @test coth(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x150231499b6b1dp-52) - - @test coth(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test coth(bareinterval(0.0, +1.0)) === bareinterval(0x150231499b6b1dp-52, +Inf) - - @test coth(bareinterval(0.0, +3.0)) === bareinterval(0x10145b3cc9964bp-52, +Inf) - - @test coth(bareinterval(0.0, +8.0)) === bareinterval(0x1000003c6ab7e7p-52, +Inf) - - @test coth(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) - - @test coth(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test coth(bareinterval(-10.0, -8.0)) === bareinterval(-0x1000003c6ab7e8p-52, -0x100000011b4865p-52) - - @test coth(bareinterval(7.0, 17.0)) === bareinterval(0x1000000000000fp-52, 0x100001be6c882fp-52) - - @test coth(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)) === bareinterval(0x114fc6ceb099bdp-51, 0x10005554fa502fp-46) - -end -@testset "mpfi_csc" begin - - @test csc(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) - - @test csc(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -1.0) - - @test csc(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1303aa9620b223p-52) - - @test csc(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test csc(bareinterval(0.0, +1.0)) === bareinterval(0x1303aa9620b223p-52, +Inf) - - @test csc(bareinterval(0.0, 3.0)) === bareinterval(1.0, +Inf) - - @test csc(bareinterval(0.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-6.0, -4.0)) === bareinterval(1.0, 0x1ca19615f903dap-51) - - @test csc(bareinterval(-6.0, -5.0)) === bareinterval(0x10af73f9df86b7p-52, 0x1ca19615f903dap-51) - - @test csc(bareinterval(-6.0, -6.0)) === bareinterval(0x1ca19615f903d9p-51, 0x1ca19615f903dap-51) - - @test csc(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-5.0, -4.0)) === bareinterval(1.0, 0x15243e8b2f4642p-52) - - @test csc(bareinterval(-5.0, -5.0)) === bareinterval(0x10af73f9df86b7p-52, 0x10af73f9df86b8p-52) - - @test csc(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-4.0, -4.0)) === bareinterval(0x15243e8b2f4641p-52, 0x15243e8b2f4642p-52) - - @test csc(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -1.0) - - @test csc(bareinterval(-3.0, -1.0)) === bareinterval(-0x1c583c440ab0dap-50, -1.0) - - @test csc(bareinterval(-3.0, -2.0)) === bareinterval(-0x1c583c440ab0dap-50, -0x119893a272f912p-52) - - @test csc(bareinterval(-3.0, -3.0)) === bareinterval(-0x1c583c440ab0dap-50, -0x1c583c440ab0d9p-50) - - @test csc(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-2.0, 0.0)) === bareinterval(-Inf, -1.0) - - @test csc(bareinterval(-2.0, -1.0)) === bareinterval(-0x1303aa9620b224p-52, -1.0) - - @test csc(bareinterval(-2.0, -2.0)) === bareinterval(-0x119893a272f913p-52, -0x119893a272f912p-52) - - @test csc(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1303aa9620b223p-52) - - @test csc(bareinterval(-1.0, -1.0)) === bareinterval(-0x1303aa9620b224p-52, -0x1303aa9620b223p-52) - - @test csc(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(1.0, 3.0)) === bareinterval(1.0, 0x1c583c440ab0dap-50) - - @test csc(bareinterval(1.0, 2.0)) === bareinterval(1.0, 0x1303aa9620b224p-52) - - @test csc(bareinterval(1.0, 1.0)) === bareinterval(0x1303aa9620b223p-52, 0x1303aa9620b224p-52) - - @test csc(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(2.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(2.0, 3.0)) === bareinterval(0x119893a272f912p-52, 0x1c583c440ab0dap-50) - - @test csc(bareinterval(2.0, 2.0)) === bareinterval(0x119893a272f912p-52, 0x119893a272f913p-52) - - @test csc(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(3.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(3.0, 3.0)) === bareinterval(0x1c583c440ab0d9p-50, 0x1c583c440ab0dap-50) - - @test csc(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(4.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -1.0) - - @test csc(bareinterval(4.0, 5.0)) === bareinterval(-0x15243e8b2f4642p-52, -1.0) - - @test csc(bareinterval(4.0, 4.0)) === bareinterval(-0x15243e8b2f4642p-52, -0x15243e8b2f4641p-52) - - @test csc(bareinterval(5.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(5.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -0x10af73f9df86b7p-52) - - @test csc(bareinterval(5.0, 5.0)) === bareinterval(-0x10af73f9df86b8p-52, -0x10af73f9df86b7p-52) - - @test csc(bareinterval(6.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test csc(bareinterval(6.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -0x1ca19615f903d9p-51) - - @test csc(bareinterval(7.0, 7.0)) === bareinterval(+0x185a86a4ceb06cp-52, +0x185a86a4ceb06dp-52) - -end -@testset "mpfi_csch" begin - - @test csch(bareinterval(-Inf, -7.0)) === bareinterval(-0x1de16d3cffcd54p-62, 0.0) - - @test csch(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test csch(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) - - @test csch(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test csch(bareinterval(-8.0, 0.0)) === bareinterval(-Inf, -0x15fc212d92371ap-63) - - @test csch(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -0x198de80929b901p-56) - - @test csch(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1b3ab8a78b90c0p-53) - - @test csch(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test csch(bareinterval(0.0, +1.0)) === bareinterval(0x1b3ab8a78b90c0p-53, +Inf) - - @test csch(bareinterval(0.0, +3.0)) === bareinterval(0x198de80929b901p-56, +Inf) - - @test csch(bareinterval(0.0, +8.0)) === bareinterval(0x15fc212d92371ap-63, +Inf) - - @test csch(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test csch(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test csch(bareinterval(-10.0, -8.0)) === bareinterval(-0x15fc212d92371bp-63, -0x17cd79b63733a0p-66) - - @test csch(bareinterval(7.0, 17.0)) === bareinterval(0x1639e3175a68a7p-76, 0x1de16d3cffcd54p-62) - - @test csch(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)) === bareinterval(0x1eb45dc88defeap-52, 0x3fff555693e722p-48) - -end -@testset "mpfi_d_div" begin - - @test /(bareinterval(-0x170ef54646d496p-107, -0x170ef54646d496p-107), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1a5a3ce29a1787p-110) - - @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0x170ef54646d496p-107, 0x170ef54646d496p-107), bareinterval(-Inf, -7.0)) === bareinterval(-0x1a5a3ce29a1787p-110, 0.0) - - @test /(bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106), bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test /(bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)) === bareinterval(-Inf, -0x13c3ada9f391a5p-110) - - @test /(bareinterval(0.0, 0.0), bareinterval(0.0, 7.0)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)) === bareinterval(0x13c3ada9f391a5p-110, +Inf) - - @test /(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(-2.5, -2.5), bareinterval(-8.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-2.5, -2.5), bareinterval(-8.0, -5.0)) === bareinterval(0x5p-4, 0.5) - - @test /(bareinterval(-2.5, -2.5), bareinterval(25.0, 40.0)) === bareinterval(-0x1999999999999ap-56, -0x1p-4) - - @test /(bareinterval(-2.5, -2.5), bareinterval(-16.0, -7.0)) === bareinterval(0x5p-5, 0x16db6db6db6db7p-54) - - @test /(bareinterval(-2.5, -2.5), bareinterval(11.0, 143.0)) === bareinterval(-0x1d1745d1745d18p-55, -0x11e6efe35b4cfap-58) - - @test /(bareinterval(33.125, 33.125), bareinterval(8.28125, 530.0)) === bareinterval(0x1p-4, 4.0) - - @test /(bareinterval(33.125, 33.125), bareinterval(-530.0, -496.875)) === bareinterval(-0x11111111111112p-56, -0x1p-4) - - @test /(bareinterval(33.125, 33.125), bareinterval(54.0, 265.0)) === bareinterval(0.125, 0x13a12f684bda13p-53) - - @test /(bareinterval(33.125, 33.125), bareinterval(52.0, 54.0)) === bareinterval(0x13a12f684bda12p-53, 0x14627627627628p-53) - -end -@testset "mpfi_diam_abs" begin - - @test diam(bareinterval(-Inf, -8.0)) === +Inf - - @test diam(bareinterval(-Inf, 0.0)) === +Inf - - @test diam(bareinterval(-Inf, 5.0)) === +Inf - - @test diam(entireinterval(BareInterval{Float64})) === +Inf - - @test diam(bareinterval(-Inf, 0.0)) === +Inf - - @test diam(bareinterval(-8.0, 0.0)) === +8.0 - - @test diam(bareinterval(0.0, 0.0)) === 0.0 - - @test diam(bareinterval(0.0, 5.0)) === +5.0 - - @test diam(bareinterval(0.0, +Inf)) === +Inf - - @test diam(bareinterval(-34.0, -17.0)) === 17.0 - -end -@testset "mpfi_div" begin - - @test /(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(-0x75bcd15p0, -0x754ep0), bareinterval(-0x11ep0, -0x9p0)) === bareinterval(0x69p0, 0xd14fadp0) - - @test /(bareinterval(-0x75bcd15p0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+4, -0x9p0)) === bareinterval(0x7.0ef61537b1704p-12, 0xd14fadp0) - - @test /(bareinterval(-0x1.02f0415f9f596p+0, -0x754ep-16), bareinterval(-0x11ep0, -0x7.62ce64fbacd2cp-8)) === bareinterval(0x69p-16, 0x2.30ee5eef9c36cp+4) - - @test /(bareinterval(-0x1.02f0415f9f596p+0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+0, -0x7.62ce64fbacd2cp-8)) === bareinterval(0x7.0ef61537b1704p-8, 0x2.30ee5eef9c36cp+4) - - @test /(bareinterval(-0xacbp+256, -0x6f9p0), bareinterval(-0x7p0, 0.0)) === bareinterval(0xffp0, +Inf) - - @test /(bareinterval(-0x100p0, -0xe.bb80d0a0824ep-4), bareinterval(-0x1.7c6d760a831fap+0, 0.0)) === bareinterval(0x9.e9f24790445fp-4, +Inf) - - @test /(bareinterval(-0x1.25f2d73472753p+0, -0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-100.0, -15.0), bareinterval(0.0, +3.0)) === bareinterval(-Inf, -5.0) - - @test /(bareinterval(-2.0, -0x1.25f2d73472753p+0), bareinterval(0.0, +0x9.3b0c8074ccc18p-4)) === bareinterval(-Inf, -0x1.fd8457415f917p+0) - - @test /(bareinterval(-0x123456789p0, -0x754ep+4), bareinterval(0x40bp0, 0x11ep+4)) === bareinterval(-0x480b3bp0, -0x69p0) - - @test /(bareinterval(-0xd.67775e4b8588p-4, -0x754ep-53), bareinterval(0x4.887091874ffc8p+0, 0x11ep+201)) === bareinterval(-0x2.f5008d2df94ccp-4, -0x69p-254) - - @test /(bareinterval(-0x123456789p0, -0x1.b0a62934c76e9p+0), bareinterval(0x40bp-17, 0x2.761ec797697a4p-4)) === bareinterval(-0x480b3bp+17, -0xa.fc5e7338f3e4p+0) - - @test /(bareinterval(-0xd.67775e4b8588p+0, -0x1.b0a62934c76e9p+0), bareinterval(0x4.887091874ffc8p-4, 0x2.761ec797697a4p+4)) === bareinterval(-0x2.f5008d2df94ccp+4, -0xa.fc5e7338f3e4p-8) - - @test /(bareinterval(-0x75bcd15p0, 0.0), bareinterval(-0x90p0, -0x9p0)) === bareinterval(0.0, 0xd14fadp0) - - @test /(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(-0x1p-8, -0xf.5e4900c9c19fp-12)) === bareinterval(0.0, 0x1.4fdb41a33d6cep+4) - - @test /(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(-0xaaaaaaaaap0, 0.0)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(-0x1.25f2d73472753p+0, 0.0), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(0.0, +0x3p0)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(-0x75bcd15p0, 0.0), bareinterval(0x9p0, 0x90p0)) === bareinterval(-0xd14fadp0, 0.0) - - @test /(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(0xf.5e4900c9c19fp-12, 0x9p0)) === bareinterval(-0x1.4fdb41a33d6cep+4, 0.0) - - @test /(bareinterval(-0x75bcd15p0, 0xa680p0), bareinterval(-0xaf6p0, -0x9p0)) === bareinterval(-0x1280p0, 0xd14fadp0) - - @test /(bareinterval(-0x12p0, 0x10p0), bareinterval(-0xbbbbbbbbbbp0, -0x9p0)) === bareinterval(-0x1.c71c71c71c71dp0, 2.0) - - @test /(bareinterval(-0x1p0, 0x754ep-16), bareinterval(-0xccccccccccp0, -0x11ep0)) === bareinterval(-0x69p-16, 0xe.525982af70c9p-12) - - @test /(bareinterval(-0xb.5b90b4d32136p-4, 0x6.e694ac6767394p+0), bareinterval(-0xdddddddddddp0, -0xc.f459be9e80108p-4)) === bareinterval(-0x8.85e40b3c3f63p+0, 0xe.071cbfa1de788p-4) - - @test /(bareinterval(-0xacbp+256, 0x6f9p0), bareinterval(-0x7p0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0x1.25f2d73472753p+0, +0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, +15.0), bareinterval(-3.0, +3.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(-0x754ep0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0x69p0, 0xbaffep+12) - - @test /(bareinterval(-0x10p0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0xe.525982af70c9p-8, 0xbaffep+12) - - @test /(bareinterval(-0x754ep0, 0x1p+10), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0x69p0, 0xe.525982af70c9p-2) - - @test /(bareinterval(-0x1.18333622af827p+0, 0x2.14b836907297p+0), bareinterval(0x1.263147d1f4bcbp+0, 0x111p0)) === bareinterval(-0xf.3d2f5db8ec728p-4, 0x1.cf8fa732de129p+0) - - @test /(bareinterval(0.0, 0x75bcd15p0), bareinterval(-0xap0, -0x9p0)) === bareinterval(-0xd14fadp0, 0.0) - - @test /(bareinterval(0.0, 0x1.acbf1702af6edp+0), bareinterval(-0x0.fp0, -0xe.3d7a59e2bdacp-4)) === bareinterval(-0x1.e1bb896bfda07p+0, 0.0) - - @test /(bareinterval(0.0, 0xap0), bareinterval(-0x9p0, 0.0)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(0.0, 0xap0), bareinterval(-1.0, +1.0)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, 0x75bcd15p0), bareinterval(+0x9p0, +0xap0)) === bareinterval(0.0, 0xd14fadp0) - - @test /(bareinterval(0.0, 0x1.5f6b03dc8c66fp+0), bareinterval(+0x2.39ad24e812dcep+0, 0xap0)) === bareinterval(0.0, 0x9.deb65b02baep-4) - - @test /(bareinterval(0x754ep0, 0x75bcd15p0), bareinterval(-0x11ep0, -0x9p0)) === bareinterval(-0xd14fadp0, -0x69p0) - - @test /(bareinterval(0x754ep-16, 0x1.008a3accc766dp+4), bareinterval(-0x11ep0, -0x2.497403b31d32ap+0)) === bareinterval(-0x7.02d3edfbc8b6p+0, -0x69p-16) - - @test /(bareinterval(0x9.ac412ff1f1478p-4, 0x75bcd15p0), bareinterval(-0x1.5232c83a0e726p+4, -0x9p0)) === bareinterval(-0xd14fadp0, -0x7.52680a49e5d68p-8) - - @test /(bareinterval(0xe.1552a314d629p-4, 0x1.064c5adfd0042p+0), bareinterval(-0x5.0d4d319a50b04p-4, -0x2.d8f51df1e322ep-4)) === bareinterval(-0x5.c1d97d57d81ccp+0, -0x2.c9a600c455f5ap+0) - - @test /(bareinterval(0x754ep0, 0xeeeep0), bareinterval(-0x11ep0, 0.0)) === bareinterval(-Inf, -0x69p0) - - @test /(bareinterval(0x1.a9016514490e6p-4, 0xeeeep0), bareinterval(-0xe.316e87be0b24p-4, 0.0)) === bareinterval(-Inf, -0x1.df1cc82e6a583p-4) - - @test /(bareinterval(5.0, 6.0), bareinterval(-0x5.0d4d319a50b04p-4, 0x2.d8f51df1e322ep-4)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0x754ep0, +0xeeeeep0), bareinterval(0.0, +0x11ep0)) === bareinterval(0x69p0, +Inf) - - @test /(bareinterval(0x1.7f03f2a978865p+0, 0xeeeeep0), bareinterval(0.0, 0x1.48b08624606b9p+0)) === bareinterval(0x1.2a4fcda56843p+0, +Inf) - - @test /(bareinterval(0x5efc1492p0, 0x1ba2dc763p0), bareinterval(0x2fdd1fp0, 0x889b71p0)) === bareinterval(0xb2p0, 0x93dp0) - - @test /(bareinterval(0x1.d7c06f9ff0706p-8, 0x1ba2dc763p0), bareinterval(0x2fdd1fp-20, 0xe.3d7a59e2bdacp+0)) === bareinterval(0x2.120d75be74b54p-12, 0x93dp+20) - - @test /(bareinterval(0x5.efc1492p-4, 0x1.008a3accc766dp+0), bareinterval(0x2.497403b31d32ap+0, 0x8.89b71p+0)) === bareinterval(0xb.2p-8, 0x7.02d3edfbc8b6p-4) - - @test /(bareinterval(0x8.440e7d65be6bp-8, 0x3.99982e9eae09ep+0), bareinterval(0x8.29fa8d0659e48p-4, 0xc.13d2fd762e4a8p-4)) === bareinterval(0xa.f3518768b206p-8, 0x7.0e2acad54859cp+0) - -end -@testset "mpfi_div_d" begin - - @test /(bareinterval(-Inf, -7.0), bareinterval(-7.0, -7.0)) === bareinterval(1.0, +Inf) - - @test /(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf, -7.0), bareinterval(7.0, 7.0)) === bareinterval(-Inf, -1.0) - - @test /(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(-Inf, 8.0), bareinterval(-3.0, -3.0)) === bareinterval(-0x15555555555556p-51, +Inf) - - @test /(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test /(bareinterval(-Inf, 8.0), bareinterval(3.0, 3.0)) === bareinterval(-Inf, 0x15555555555556p-51) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === emptyinterval(BareInterval{Float64}) - - @test /(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test /(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) - - @test /(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x1d9b1f5d20d556p+5, 0.0) - - @test /(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)) === bareinterval(0.0, 0x1d9b1f5d20d556p+5) - - @test /(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-Inf, 0.0) - - @test /(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0.0, +Inf) - - @test /(bareinterval(-0x10000000000001p-20, -0x10000000000001p-53), bareinterval(-1.0, -1.0)) === bareinterval(0x10000000000001p-53, 0x10000000000001p-20) - - @test /(bareinterval(-0x10000000000002p-20, -0x10000000000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x10000000000001p-19, -1.0) - - @test /(bareinterval(-0x10000000000001p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x1p+33, -0x1000001fffffffp-52) - - @test /(bareinterval(-0x10000000000002p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x10000000000001p-19, -0x1000001fffffffp-52) - - @test /(bareinterval(-0x123456789abcdfp-53, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1p-7, 0x1p-53) - - @test /(bareinterval(-0x123456789abcdfp-53, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1c200000000002p-106, 0x1p-53) - - @test /(bareinterval(-1.0, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1p-7, 0x1c200000000001p-105) - - @test /(bareinterval(-1.0, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1c200000000002p-106, 0x1c200000000001p-105) - -end -@testset "mpfi_d_sub" begin - - @test -(bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107), bareinterval(-Inf, -7.0)) === bareinterval(0x1bffffffffffffp-50, +Inf) - - @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) - - @test -(bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) - - @test -(bareinterval(-0x170ef54646d497p-96, -0x170ef54646d497p-96), bareinterval(-Inf, 0.0)) === bareinterval(-0x170ef54646d497p-96, +Inf) - - @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) - - @test -(bareinterval(0x170ef54646d497p-96, 0x170ef54646d497p-96), bareinterval(-Inf, 0.0)) === bareinterval(0x170ef54646d497p-96, +Inf) - - @test -(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === bareinterval(-0x16345785d8a00100p0, +Inf) - - @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)) === bareinterval(-8.0, +Inf) - - @test -(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === bareinterval(0x16345785d89fff00p0, +Inf) - - @test -(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(0x170ef54646d497p-105, 0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) - - @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test -(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109) - - @test -(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)) === bareinterval(-0x10000000000001p-49, -0x114b37f4b51f71p-107) - - @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)) === bareinterval(-8.0, 0.0) - - @test -(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)) === bareinterval(-8.0, 0x114b37f4b51f71p-107) - - @test -(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)) === bareinterval(-Inf, -0x50b45a75f7e81p-104) - - @test -(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) - - @test -(bareinterval(-0x142d169d7dfa03p-106, -0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)) === bareinterval(-Inf, -0x142d169d7dfa03p-106) - - @test -(bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47), bareinterval(17.0, 32.0)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) - - @test -(bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47), bareinterval(17.0, 0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) - - @test -(bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 32.0)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) - - @test -(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) - - @test -(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) - - @test -(bareinterval(256.5, 256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) - - @test -(bareinterval(4097.5, 4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)) === bareinterval(0xfff8p-4, 0x10018p-4) - - @test -(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) - - @test -(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) - - @test -(bareinterval(-256.5, -256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) - - @test -(bareinterval(-4097.5, -4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)) === bareinterval(-0x10038p-4, -0x10018p-4) - -end -@testset "mpfi_exp" begin - - @test exp(bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1de16b9c24a98fp-63) - - @test exp(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) - - @test exp(bareinterval(-Inf, +1.0)) === bareinterval(0.0, 0x15bf0a8b14576ap-51) - - @test exp(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) - - @test exp(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) - - @test exp(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x15bf0a8b14576ap-51) - - @test exp(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) - - @test exp(bareinterval(-123.0, -17.0)) === bareinterval(0x1766b45dd84f17p-230, 0x1639e3175a689dp-77) - - @test exp(bareinterval(-0.125, 0.25)) === bareinterval(0x1c3d6a24ed8221p-53, 0x148b5e3c3e8187p-52) - - @test exp(bareinterval(-0.125, 0.0)) === bareinterval(0x1c3d6a24ed8221p-53, 1.0) - - @test exp(bareinterval(0.0, 0.25)) === bareinterval(1.0, 0x148b5e3c3e8187p-52) - - @test exp(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x10000000000140p-52, 0x10000000000161p-52) - -end -@testset "mpfi_exp2" begin - - @test exp2(bareinterval(-Inf, -1.0)) === bareinterval(0.0, 0.5) - - @test exp2(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) - - @test exp2(bareinterval(-Inf, 1.0)) === bareinterval(0.0, 2.0) - - @test exp2(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) - - @test exp2(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) - - @test exp2(bareinterval(0.0, +1.0)) === bareinterval(1.0, 2.0) - - @test exp2(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) - - @test exp2(bareinterval(-123.0, -17.0)) === bareinterval(0x1p-123, 0x1p-17) - - @test exp2(bareinterval(-7.0, 7.0)) === bareinterval(0x1p-7, 0x1p+7) - - @test exp2(bareinterval(-0.125, 0.25)) === bareinterval(0x1d5818dcfba487p-53, 0x1306fe0a31b716p-52) - - @test exp2(bareinterval(-0.125, 0.0)) === bareinterval(0x1d5818dcfba487p-53, 1.0) - - @test exp2(bareinterval(0.0, 0.25)) === bareinterval(1.0, 0x1306fe0a31b716p-52) - - @test exp2(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x100000000000ddp-52, 0x100000000000f4p-52) - -end -@testset "mpfi_expm1" begin - - @test expm1(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, -0x1ff887a518f6d5p-53) - - @test expm1(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 0.0) - - @test expm1(bareinterval(-Inf, 1.0)) === bareinterval(-1.0, 0x1b7e151628aed3p-52) - - @test expm1(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, +Inf) - - @test expm1(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test expm1(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1b7e151628aed3p-52) - - @test expm1(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test expm1(bareinterval(-36.0, -36.0)) === bareinterval(-0x1ffffffffffffep-53, -0x1ffffffffffffdp-53) - - @test expm1(bareinterval(-0.125, 0.25)) === bareinterval(-0x1e14aed893eef4p-56, 0x122d78f0fa061ap-54) - - @test expm1(bareinterval(-0.125, 0.0)) === bareinterval(-0x1e14aed893eef4p-56, 0.0) - - @test expm1(bareinterval(0.0, 0.25)) === bareinterval(0.0, 0x122d78f0fa061ap-54) - - @test expm1(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x140000000000c8p-96, 0x160000000000f3p-96) - -end -@testset "mpfi_hypot" begin - - @test hypot(bareinterval(-Inf, -7.0), bareinterval(-1.0, 8.0)) === bareinterval(7.0, +Inf) - - @test hypot(bareinterval(-Inf, 0.0), bareinterval(8.0, +Inf)) === bareinterval(8.0, +Inf) - - @test hypot(bareinterval(-Inf, 8.0), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) - - @test hypot(entireinterval(BareInterval{Float64}), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) - - @test hypot(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) - - @test hypot(bareinterval(0.0, 3.0), bareinterval(-4.0, 0.0)) === bareinterval(0.0, 5.0) - - @test hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)) === bareinterval(0.0, 8.0) - - @test hypot(bareinterval(0.0, +Inf), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) - - @test hypot(bareinterval(0.0, 0.0), bareinterval(8.0, +Inf)) === bareinterval(8.0, +Inf) - - @test hypot(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) - - @test hypot(bareinterval(0.0, 5.0), bareinterval(0.0, 12.0)) === bareinterval(0.0, 13.0) - - @test hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test hypot(bareinterval(0.0, +Inf), bareinterval(-7.0, 8.0)) === bareinterval(0.0, +Inf) - - @test hypot(bareinterval(-12.0, -5.0), bareinterval(-35.0, -12.0)) === bareinterval(13.0, 37.0) - - @test hypot(bareinterval(6.0, 7.0), bareinterval(1.0, 24.0)) === bareinterval(0x1854bfb363dc39p-50, 25.0) - - @test hypot(bareinterval(-4.0, +7.0), bareinterval(-25.0, 3.0)) === bareinterval(0.0, 0x19f625847a5899p-48) - - @test hypot(bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48), bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48)) === bareinterval(0x113463fa37014dp-49, 0x125b89092b8fc0p-47) - -end -@testset "mpfi_intersect" begin - - @test intersect_interval(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test intersect_interval(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0.0, 0.0) - - @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) - - @test intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === emptyinterval(BareInterval{Float64}) - - @test intersect_interval(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(0.0, +8.0) - - @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test intersect_interval(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)) === bareinterval(0x12p0, 0x34p0) - -end -@testset "mpfi_inv" begin - - @test inv(bareinterval(-Inf, -.25)) === bareinterval(-4.0, 0.0) - - @test inv(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test inv(bareinterval(-Inf, +4.0)) === entireinterval(BareInterval{Float64}) - - @test inv(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test inv(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) - - @test inv(bareinterval(0.0, +2.0)) === bareinterval(+.5, +Inf) - - @test inv(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test inv(bareinterval(-8.0, -2.0)) === bareinterval(-.5, -0.125) - - @test inv(bareinterval(0x1p-4, 0x1440c131282cd9p-53)) === bareinterval(0x1947bfce1bc417p-52, 0x10p0) - - @test inv(bareinterval(0x19f1a539c91fddp-55, +64.0)) === bareinterval(0.015625, 0x13bc205a76b3fdp-50) - - @test inv(bareinterval(-0xae83b95effd69p-52, -0x63e3cb4ed72a3p-53)) === bareinterval(-0x1480a9b5772a23p-50, -0x177887d65484c9p-52) - -end -@testset "mpfi_is_neg" begin - - @test precedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false - - @test precedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false - - @test precedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false - -end -@testset "mpfi_is_nonneg" begin - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true - -end -@testset "mpfi_is_nonpos" begin - - @test isweakless(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false - - @test isweakless(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true - - @test isweakless(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(8.0, 0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false - - @test isweakless(bareinterval(0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false - -end -@testset "mpfi_is_pos" begin - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false - - @test precedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false - - @test precedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true - - @test precedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true - -end -@testset "mpfi_is_strictly_neg" begin - - @test strictprecedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true - - @test strictprecedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true - - @test strictprecedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true - - @test strictprecedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false - -end -@testset "mpfi_is_strictly_pos" begin - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true - - @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true - -end -@testset "mpfi_log" begin - - @test log(bareinterval(0.0, +1.0)) === bareinterval(-Inf, 0.0) - - @test log(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test log(bareinterval(+1.0, +1.0)) === bareinterval(0.0, 0.0) - - @test log(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)) === bareinterval(0xc6dc8a2928579p-47, 0x1a9500bc7ffcc5p-48) - - @test log(bareinterval(0xb616ab8b683b5p-52, +1.0)) === bareinterval(-0x2b9b8b1fb2fb9p-51, 0.0) - - @test log(bareinterval(+1.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x5380455576989p-46) - - @test log(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0xbdee7228cfedfp-47, 0x1b3913fc99f555p-48) - -end -@testset "mpfi_log1p" begin - - @test log1p(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, 0.0) - - @test log1p(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test log1p(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x162e42fefa39f0p-53) - - @test log1p(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test log1p(bareinterval(-0xb616ab8b683b5p-52, 0.0)) === bareinterval(-0x13e080325bab7bp-52, 0.0) - - @test log1p(bareinterval(0.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x14e0115561569cp-48) - - @test log1p(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x17bdce451a337fp-48, 0x1b3913fc99f6fcp-48) - -end -@testset "mpfi_log2" begin - - @test log2(bareinterval(0.0, +1.0)) === bareinterval(-Inf, 0.0) - - @test log2(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test log2(bareinterval(1.0, 1.0)) === bareinterval(0.0, 0.0) - - @test log2(bareinterval(0xb616ab8b683b5p-52, 1.0)) === bareinterval(-0x1f74cb5d105b3ap-54, 0.0) - - @test log2(bareinterval(1.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x1e1ddc27c2c70fp-48) - - @test log2(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x112035c9390c07p-47, 0x13a3208f61f10cp-47) - -end -@testset "mpfi_log10" begin - - @test log10(bareinterval(0.0, 1.0)) === bareinterval(-Inf, 0.0) - - @test log10(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test log10(bareinterval(1.0, 1.0)) === bareinterval(0.0, 0.0) - - @test log10(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)) === bareinterval(0x159753104a9401p-49, 0x1716c01a04b570p-49) - - @test log10(bareinterval(0xb616ab8b683b5p-52, 1.0)) === bareinterval(-0x12f043ec00f8d6p-55, 0.0) - - @test log10(bareinterval(100.0, 0x8ac74d932fae3p-21)) === bareinterval(2.0, 0x1221cc590b9946p-49) - - @test log10(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x149f1d70168f49p-49, 0x17a543a94fb65ep-49) - -end -@testset "mpfi_mag" begin - - @test mag(bareinterval(-Inf, -8.0)) === +Inf - - @test mag(bareinterval(-Inf, 0.0)) === +Inf - - @test mag(bareinterval(-Inf, 5.0)) === +Inf - - @test mag(entireinterval(BareInterval{Float64})) === +Inf - - @test mag(bareinterval(-Inf, 0.0)) === +Inf - - @test mag(bareinterval(-8.0, 0.0)) === +8.0 - - @test mag(bareinterval(0.0, 0.0)) === +0.0 - - @test mag(bareinterval(0.0, 5.0)) === +5.0 - - @test mag(bareinterval(0.0, +Inf)) === +Inf - - @test mag(bareinterval(-34.0, -17.0)) === 34.0 - -end -@testset "mpfi_mid" begin - - @test mid(bareinterval(-8.0, 0.0)) === -4.0 - - @test mid(bareinterval(0.0, 0.0)) === +0.0 - - @test mid(bareinterval(0.0, 5.0)) === +2.5 - - @test mid(bareinterval(-34.0, -17.0)) === -0x33p-1 - - @test mid(bareinterval(-34.0, 17.0)) === -8.5 - - @test mid(bareinterval(0.0, +0x123456789abcdp-2)) === +0x123456789abcdp-3 - - @test mid(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === 0x1921fb54442d18p-51 - - @test mid(bareinterval(-0x1921fb54442d19p-51, -0x1921fb54442d18p-51)) === -0x1921fb54442d18p-51 - - @test mid(bareinterval(-4.0, -0x7fffffffffffdp-51)) === -0x27fffffffffffbp-52 - - @test mid(bareinterval(-8.0, -0x7fffffffffffbp-51)) === -0x47fffffffffffbp-52 - - @test mid(bareinterval(-0x1fffffffffffffp-53, 2.0)) === 0.5 - -end -@testset "mpfi_mig" begin - - @test mig(bareinterval(-Inf, -8.0)) === 8.0 - - @test mig(bareinterval(-Inf, 0.0)) === +0.0 - - @test mig(bareinterval(-Inf, 5.0)) === +0.0 - - @test mig(entireinterval(BareInterval{Float64})) === +0.0 - - @test mig(bareinterval(-Inf, 0.0)) === +0.0 - - @test mig(bareinterval(-8.0, 0.0)) === +0.0 - - @test mig(bareinterval(0.0, 0.0)) === +0.0 - - @test mig(bareinterval(0.0, 5.0)) === +0.0 - - @test mig(bareinterval(0.0, +Inf)) === +0.0 - - @test mig(bareinterval(-34.0, -17.0)) === 17.0 - -end -@testset "mpfi_mul" begin - - @test *(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, 0.0) - - @test *(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +64.0) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-56.0, 0.0) - - @test *(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test *(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-56.0, +64.0) - - @test *(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test *(bareinterval(-3.0, +7.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(-0x0dp0, -0x09p0), bareinterval(-0x04p0, -0x02p0)) === bareinterval(0x12p0, 0x34p0) - - @test *(bareinterval(-0x0dp0, -0xd.f0e7927d247cp-4), bareinterval(-0x04p0, -0xa.41084aff48f8p-8)) === bareinterval(0x8.ef3aa21dba748p-8, 0x34p0) - - @test *(bareinterval(-0xe.26c9e9eb67b48p-4, -0x8.237d2eb8b1178p-4), bareinterval(-0x5.8c899a0706d5p-4, -0x3.344e57a37b5e8p-4)) === bareinterval(0x1.a142a930de328p-4, 0x4.e86c3434cd924p-4) - - @test *(bareinterval(-0x37p0, -0x07p0), bareinterval(-0x01p0, 0x22p0)) === bareinterval(-0x74ep0, 0x37p0) - - @test *(bareinterval(-0xe.063f267ed51ap-4, -0x0.33p0), bareinterval(-0x01p0, 0x1.777ab178b4a1ep+0)) === bareinterval(-0x1.491df346a9f15p+0, 0xe.063f267ed51ap-4) - - @test *(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x01p0)) === bareinterval(-0x1.cb540b71699a8p+4, 0x2.804cce4a3f42ep+4) - - @test *(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x1.eb67a1a6ef725p+4)) === bareinterval(-0x3.71b422ce817f4p+8, 0x2.804cce4a3f42ep+4) - - @test *(bareinterval(-0x123456789ap0, -0x01p0), bareinterval(0x01p0, 0x10p0)) === bareinterval(-0x123456789a0p0, -0x01p0) - - @test *(bareinterval(-0xb.6c67d3a37d54p-4, -0x0.8p0), bareinterval(0x02p0, 0x2.0bee4e8bb3dfp+0)) === bareinterval(-0x1.7611a672948a5p+0, -0x01p0) - - @test *(bareinterval(-0x04p0, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x04p0)) === bareinterval(-0x10p0, -0x7.99b990532d434p-8) - - @test *(bareinterval(-0xb.6c67d3a37d54p-4, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x2.0bee4e8bb3dfp+0)) === bareinterval(-0x1.7611a672948a5p+0, -0x7.99b990532d434p-8) - - @test *(bareinterval(-0x01p0, 0x11p0), bareinterval(-0x07p0, -0x04p0)) === bareinterval(-0x77p0, 0x07p0) - - @test *(bareinterval(-0x01p0, 0xe.ca7ddfdb8572p-4), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.101b41d3d48b8p+0, 0x2.3b46226145234p+0) - - @test *(bareinterval(-0x1.1d069e75e8741p+8, 0x01p0), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.3b46226145234p+0, 0x2.7c0bd9877f404p+8) - - @test *(bareinterval(-0xe.ca7ddfdb8572p-4, 0x1.1d069e75e8741p+8), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.7c0bd9877f404p+8, 0x2.101b41d3d48b8p+0) - - @test *(bareinterval(-0x01p0, 0x10p0), bareinterval(-0x02p0, 0x03p0)) === bareinterval(-0x20p0, 0x30p0) - - @test *(bareinterval(-0x01p0, 0x2.db091cea593fap-4), bareinterval(-0x2.6bff2625fb71cp-4, 0x1p-8)) === bareinterval(-0x6.ea77a3ee43de8p-8, 0x2.6bff2625fb71cp-4) - - @test *(bareinterval(-0x01p0, 0x6.e211fefc216ap-4), bareinterval(-0x1p-4, 0x1.8e3fe93a4ea52p+0)) === bareinterval(-0x1.8e3fe93a4ea52p+0, 0xa.b52fe22d72788p-4) - - @test *(bareinterval(-0x1.15e079e49a0ddp+0, 0x1p-8), bareinterval(-0x2.77fc84629a602p+0, 0x8.3885932f13fp-4)) === bareinterval(-0x8.ec5de73125be8p-4, 0x2.adfe651d3b19ap+0) - - @test *(bareinterval(-0x07p0, 0x07p0), bareinterval(0x13p0, 0x24p0)) === bareinterval(-0xfcp0, 0xfcp0) - - @test *(bareinterval(-0xa.8071f870126cp-4, 0x10p0), bareinterval(0x02p0, 0x2.3381083e7d3b4p+0)) === bareinterval(-0x1.71dc5b5607781p+0, 0x2.3381083e7d3b4p+4) - - @test *(bareinterval(-0x01p0, 0x1.90aa487ecf153p+0), bareinterval(0x01p-53, 0x1.442e2695ac81ap+0)) === bareinterval(-0x1.442e2695ac81ap+0, 0x1.fb5fbebd0cbc6p+0) - - @test *(bareinterval(-0x1.c40db77f2f6fcp+0, 0x1.8eb70bbd94478p+0), bareinterval(0x02p0, 0x3.45118635235c6p+0)) === bareinterval(-0x5.c61fcad908df4p+0, 0x5.17b7c49130824p+0) - - @test *(bareinterval(0xcp0, 0x2dp0), bareinterval(-0x679p0, -0xe5p0)) === bareinterval(-0x12345p0, -0xabcp0) - - @test *(bareinterval(0xcp0, 0x1.1833fdcab4c4ap+10), bareinterval(-0x2.4c0afc50522ccp+40, -0xe5p0)) === bareinterval(-0x2.83a3712099234p+50, -0xabcp0) - - @test *(bareinterval(0xb.38f1fb0ef4308p+0, 0x2dp0), bareinterval(-0x679p0, -0xa.4771d7d0c604p+0)) === bareinterval(-0x12345p0, -0x7.35b3c8400ade4p+4) - - @test *(bareinterval(0xf.08367984ca1cp-4, 0xa.bcf6c6cbe341p+0), bareinterval(-0x5.cbc445e9952c4p+0, -0x2.8ad05a7b988fep-8)) === bareinterval(-0x3.e3ce52d4a139cp+4, -0x2.637164cf2f346p-8) - - @test *(bareinterval(0x01p0, 0xcp0), bareinterval(-0xe5p0, 0x01p0)) === bareinterval(-0xabcp0, 0xcp0) - - @test *(bareinterval(0x123p-52, 0x1.ec24910ac6aecp+0), bareinterval(-0xa.a97267f56a9b8p-4, 0x1p+32)) === bareinterval(-0x1.47f2dbe4ef916p+0, 0x1.ec24910ac6aecp+32) - - @test *(bareinterval(0x03p0, 0x7.2bea531ef4098p+0), bareinterval(-0x01p0, 0xa.a97267f56a9b8p-4)) === bareinterval(-0x7.2bea531ef4098p+0, 0x4.c765967f9468p+0) - - @test *(bareinterval(0x0.3p0, 0xa.a97267f56a9b8p-4), bareinterval(-0x1.ec24910ac6aecp+0, 0x7.2bea531ef4098p+0)) === bareinterval(-0x1.47f2dbe4ef916p+0, 0x4.c765967f9468p+0) - - @test *(bareinterval(0x3p0, 0x7p0), bareinterval(0x5p0, 0xbp0)) === bareinterval(0xfp0, 0x4dp0) - - @test *(bareinterval(0x2.48380232f6c16p+0, 0x7p0), bareinterval(0x3.71cb6c53e68eep+0, 0xbp0)) === bareinterval(0x7.dc58fb323ad78p+0, 0x4dp0) - - @test *(bareinterval(0x3p0, 0x3.71cb6c53e68eep+0), bareinterval(0x5p-25, 0x2.48380232f6c16p+0)) === bareinterval(0xfp-25, 0x7.dc58fb323ad7cp+0) - - @test *(bareinterval(0x3.10e8a605572p-4, 0x2.48380232f6c16p+0), bareinterval(0xc.3d8e305214ecp-4, 0x2.9e7db05203c88p+0)) === bareinterval(0x2.587a32d02bc04p-4, 0x5.fa216b7c20c6cp+0) - -end -@testset "mpfi_mul_d" begin - - @test *(bareinterval(-Inf, -7.0), bareinterval(-0x17p0, -0x17p0)) === bareinterval(+0xa1p0, +Inf) - - @test *(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -0xa168b4ebefd020p-107) - - @test *(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(0.0, +Inf) - - @test *(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0.0) - - @test *(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-0xb1a2bc2ec5000000p0, +Inf) - - @test *(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, 0xb1a2bc2ec5000000p0) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === bareinterval(0.0, 0.0) - - @test *(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test *(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, 7.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x790e87b0f3dc18p-107, 0.0) - - @test *(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, 9.0), bareinterval(0x114b37f4b51f71p-103, 0x114b37f4b51f71p-103)) === bareinterval(0.0, 0x9ba4f79a5e1b00p-103) - - @test *(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-Inf, 0.0) - - @test *(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test *(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0.0, +Inf) - - @test *(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)) === bareinterval(0xfffffffffffffp-123, 0x22a2a28p0) - - @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(-1.5, -1.5)) === bareinterval(-0x22a2a28p+401, 0xfffffffffffffp0) - - @test *(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)) === bareinterval(-0x1222222222221p+654, -0x22000000000022p0) - - @test *(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x22a2a28p0, -0xfffffffffffffp-123) - - @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(1.5, 1.5)) === bareinterval(-0xfffffffffffffp0, 0x22a2a28p+401) - - @test *(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000022p0, 0x1222222222221p+654) - - @test *(bareinterval(-0x1717170p+36, -0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(0x18000000000001p0, 0x22a2a28p+36) - - @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(-0x18000000000002p0, 0xfffffffffffffp0) - - @test *(bareinterval(0x10000000000010p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)) === bareinterval(-0x12222222222223p+1, -0x22000000000022p0) - - @test *(bareinterval(-0x10000000000001p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x18000000000002p0, -0xfffffffffffffp-123) - - @test *(bareinterval(-0xaaaaaaaaaaaabp0, 0x1717170p+401), bareinterval(1.5, 1.5)) === bareinterval(-0x10000000000001p0, 0x22a2a28p+401) - - @test *(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000002p0, 0x1222222222221p+654) - - @test *(bareinterval(-0x11717171717171p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)) === bareinterval(0xfffffffffffffp-123, 0x1a2a2a2a2a2a2ap0) - - @test *(bareinterval(-0x10000000000001p0, 0x1717170p+401), bareinterval(-1.5, -1.5)) === bareinterval(-0x22a2a28p+401, 0x18000000000002p0) - - @test *(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)) === bareinterval(-0x1222222222221p+654, -0x22000000000002p0) - - @test *(bareinterval(-0x1717170p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x22a2a28p0, -0x27fffffffffffep-123) - - @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x11717171717171p0), bareinterval(1.5, 1.5)) === bareinterval(-0xfffffffffffffp0, 0x1a2a2a2a2a2a2ap0) - - @test *(bareinterval(0x10000000000010p0, 0x18888888888889p0), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000022p0, 0x34222222222224p0) - - @test *(bareinterval(-0x11717171717171p0, -0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(0x18000000000001p0, 0x1a2a2a2a2a2a2ap0) - - @test *(bareinterval(-0x10000000000001p0, 0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(-0x18000000000002p0, 0x18000000000002p0) - - @test *(bareinterval(0x10000000000001p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)) === bareinterval(-0x12222222222223p+1, -0x22000000000002p0) - - @test *(bareinterval(-0x10000000000001p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x18000000000002p0, -0x27fffffffffffep-123) - - @test *(bareinterval(-0xaaaaaaaaaaaabp0, 0x11717171717171p0), bareinterval(1.5, 1.5)) === bareinterval(-0x10000000000001p0, 0x1a2a2a2a2a2a2ap0) - - @test *(bareinterval(0x10000000000001p0, 0x18888888888889p0), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000002p0, 0x34222222222224p0) - -end -@testset "mpfi_neg" begin - - @test -(bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) - - @test -(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) - - @test -(bareinterval(-Inf, +8.0)) === bareinterval(-8.0, +Inf) - - @test -(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test -(bareinterval(0.0, +8.0)) === bareinterval(-8.0, 0.0) - - @test -(bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) - - @test -(bareinterval(0x123456789p-16, 0x123456799p-16)) === bareinterval(-0x123456799p-16, -0x123456789p-16) - -end -@testset "mpfi_put_d" begin - - @test hull(bareinterval(0.0, 0.0), bareinterval(-8.0, -8.0)) === bareinterval(-8.0, 0.0) - - @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test hull(bareinterval(+5.0, +5.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, +5.0) - -end -@testset "mpfi_sec" begin - - @test sec(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) - - @test sec(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) - - @test sec(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) - - @test sec(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) - - @test sec(bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(0.0, 8.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, -4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-6.0, -5.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51) - - @test sec(bareinterval(-6.0, -6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52) - - @test sec(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, -4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-5.0, -5.0)) === bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51) - - @test sec(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-4.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -1.0) - - @test sec(bareinterval(-4.0, -3.0)) === bareinterval(-0x187a6961d2485fp-52, -1.0) - - @test sec(bareinterval(-4.0, -4.0)) === bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52) - - @test sec(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-3.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52) - - @test sec(bareinterval(-3.0, -3.0)) === bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52) - - @test sec(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-2.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51) - - @test sec(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(-1.0, 1.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) - - @test sec(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) - - @test sec(bareinterval(-1.0, -1.0)) === bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52) - - @test sec(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(1.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(1.0, 1.0)) === bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52) - - @test sec(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(2.0, 4.0)) === bareinterval(-0x133956fecf9e49p-51, -1.0) - - @test sec(bareinterval(2.0, 3.0)) === bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52) - - @test sec(bareinterval(2.0, 2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51) - - @test sec(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(3.0, 4.0)) === bareinterval(-0x187a6961d2485fp-52, -1.0) - - @test sec(bareinterval(3.0, 3.0)) === bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52) - - @test sec(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(4.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(4.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test sec(bareinterval(4.0, 4.0)) === bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52) - - @test sec(bareinterval(5.0, 7.0)) === bareinterval(1.0, 0x1c33db0464189bp-51) - - @test sec(bareinterval(5.0, 6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51) - - @test sec(bareinterval(5.0, 5.0)) === bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51) - - @test sec(bareinterval(6.0, 7.0)) === bareinterval(1.0, 0x153910a80e7db5p-52) - - @test sec(bareinterval(6.0, 6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52) - - @test sec(bareinterval(7.0, 7.0)) === bareinterval(0x153910a80e7db4p-52, 0x153910a80e7db5p-52) - -end -@testset "mpfi_sech" begin - - @test sech(bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1de169fb49b339p-62) - - @test sech(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) - - @test sech(bareinterval(-Inf, +8.0)) === bareinterval(0.0, 1.0) - - @test sech(entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) - - @test sech(bareinterval(-1.0, 0.0)) === bareinterval(0x14bcdc50ed6be7p-53, 1.0) - - @test sech(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) - - @test sech(bareinterval(0.0, +1.0)) === bareinterval(0x14bcdc50ed6be7p-53, 1.0) - - @test sech(bareinterval(0.0, +8.0)) === bareinterval(0x15fc20da8e18dbp-63, 1.0) - - @test sech(bareinterval(0.0, +Inf)) === bareinterval(0.0, 1.0) - - @test sech(bareinterval(-0.125, 0.0)) === bareinterval(0x1fc069fe3f72bep-53, 1.0) - - @test sech(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0x1c60d1ff040dcfp-53, 1.0) - - @test sech(bareinterval(-4.5, -0.625)) === bareinterval(0x16bf984a9a2355p-58, 0x1aa0b464a5e24ap-53) - - @test sech(bareinterval(1.0, 3.0)) === bareinterval(0x196d8e17d88eb1p-56, 0x14bcdc50ed6be8p-53) - - @test sech(bareinterval(17.0, 0xb145bb71d3dbp-38)) === bareinterval(0x10000000000173p-1074, 0x1639e3175a6893p-76) - -end -@testset "mpfi_sin" begin - - @test sin(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-Inf, +8.0)) === bareinterval(-1.0, 1.0) - - @test sin(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1aed548f090cefp-53, 0.0) - - @test sin(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test sin(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1aed548f090cefp-53) - - @test sin(bareinterval(0.0, +8.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(0.0, +Inf)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(0.125, 17.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)) === bareinterval(0x1fffffffffffffp-53, 1.0) - - @test sin(bareinterval(-2.0, -0.5)) === bareinterval(-1.0, -0x1eaee8744b05efp-54) - - @test sin(bareinterval(-4.5, 0.625)) === bareinterval(-1.0, 0x1f47ed3dc74081p-53) - - @test sin(bareinterval(-1.0, -0.25)) === bareinterval(-0x1aed548f090cefp-53, -0x1faaeed4f31576p-55) - - @test sin(bareinterval(-0.5, 0.5)) === bareinterval(-0x1eaee8744b05f0p-54, 0x1eaee8744b05f0p-54) - - @test sin(bareinterval(0x71p+76, 0x71p+76)) === bareinterval(0x1bde6c11cbfc46p-55, 0x1bde6c11cbfc47p-55) - - @test sin(bareinterval(-7.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 4.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 3.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, -1.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-7.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) - - @test sin(bareinterval(-7.0, -3.0)) === bareinterval(-0x150608c26d0a09p-53, 1.0) - - @test sin(bareinterval(-7.0, -4.0)) === bareinterval(-0x150608c26d0a09p-53, 1.0) - - @test sin(bareinterval(-7.0, -5.0)) === bareinterval(-0x150608c26d0a09p-53, 0x1eaf81f5e09934p-53) - - @test sin(bareinterval(-7.0, -6.0)) === bareinterval(-0x150608c26d0a09p-53, 0x11e1f18ab0a2c1p-54) - - @test sin(bareinterval(-7.0, -7.0)) === bareinterval(-0x150608c26d0a09p-53, -0x150608c26d0a08p-53) - - @test sin(bareinterval(-6.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 4.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 3.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, -1.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-6.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) - - @test sin(bareinterval(-6.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 1.0) - - @test sin(bareinterval(-6.0, -4.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 1.0) - - @test sin(bareinterval(-6.0, -5.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 0x1eaf81f5e09934p-53) - - @test sin(bareinterval(-6.0, -6.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 0x11e1f18ab0a2c1p-54) - - @test sin(bareinterval(-5.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 4.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 3.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 1.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, 0.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, -1.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-5.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) - - @test sin(bareinterval(-5.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 1.0) - - @test sin(bareinterval(-5.0, -4.0)) === bareinterval(0x1837b9dddc1eaep-53, 1.0) - - @test sin(bareinterval(-5.0, -5.0)) === bareinterval(0x1eaf81f5e09933p-53, 0x1eaf81f5e09934p-53) - - @test sin(bareinterval(-4.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-4.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-4.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-4.0, 4.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-4.0, 3.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-4.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-4.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) - - @test sin(bareinterval(-4.0, 0.0)) === bareinterval(-1.0, 0x1837b9dddc1eafp-53) - - @test sin(bareinterval(-4.0, -1.0)) === bareinterval(-1.0, 0x1837b9dddc1eafp-53) - - @test sin(bareinterval(-4.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 0x1837b9dddc1eafp-53) - - @test sin(bareinterval(-4.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 0x1837b9dddc1eafp-53) - - @test sin(bareinterval(-4.0, -4.0)) === bareinterval(0x1837b9dddc1eaep-53, 0x1837b9dddc1eafp-53) - - @test sin(bareinterval(-3.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-3.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-3.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-3.0, 4.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-3.0, 3.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-3.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-3.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) - - @test sin(bareinterval(-3.0, 0.0)) === bareinterval(-1.0, 0.0) - - @test sin(bareinterval(-3.0, -1.0)) === bareinterval(-1.0, -0x1210386db6d55bp-55) - - @test sin(bareinterval(-3.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, -0x1210386db6d55bp-55) - - @test sin(bareinterval(-3.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, -0x1210386db6d55bp-55) - - @test sin(bareinterval(-2.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-2.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-2.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-2.0, 4.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-2.0, 3.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-2.0, 2.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-2.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) - - @test sin(bareinterval(-2.0, 0.0)) === bareinterval(-1.0, 0.0) - - @test sin(bareinterval(-2.0, -1.0)) === bareinterval(-1.0, -0x1aed548f090ceep-53) - - @test sin(bareinterval(-2.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, -0x1d18f6ead1b445p-53) - - @test sin(bareinterval(-1.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-1.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-1.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(-1.0, 4.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) - - @test sin(bareinterval(-1.0, 3.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) - - @test sin(bareinterval(-1.0, 2.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) - - @test sin(bareinterval(-1.0, 1.0)) === bareinterval(-0x1aed548f090cefp-53, 0x1aed548f090cefp-53) - - @test sin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1aed548f090cefp-53, 0.0) - - @test sin(bareinterval(-1.0, -1.0)) === bareinterval(-0x1aed548f090cefp-53, -0x1aed548f090ceep-53) - - @test sin(bareinterval(1.0, 7.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(1.0, 6.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(1.0, 5.0)) === bareinterval(-1.0, 1.0) - - @test sin(bareinterval(1.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 1.0) - - @test sin(bareinterval(1.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 1.0) - - @test sin(bareinterval(1.0, 2.0)) === bareinterval(0x1aed548f090ceep-53, 1.0) - - @test sin(bareinterval(1.0, 1.0)) === bareinterval(0x1aed548f090ceep-53, 0x1aed548f090cefp-53) - - @test sin(bareinterval(2.0, 7.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) - - @test sin(bareinterval(2.0, 6.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) - - @test sin(bareinterval(2.0, 5.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) - - @test sin(bareinterval(2.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 0x1d18f6ead1b446p-53) - - @test sin(bareinterval(2.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 0x1d18f6ead1b446p-53) - - @test sin(bareinterval(2.0, 2.0)) === bareinterval(0x1d18f6ead1b445p-53, 0x1d18f6ead1b446p-53) - - @test sin(bareinterval(3.0, 7.0)) === bareinterval(-1.0, 0x150608c26d0a09p-53) - - @test sin(bareinterval(3.0, 6.0)) === bareinterval(-1.0, 0x1210386db6d55cp-55) - - @test sin(bareinterval(3.0, 5.0)) === bareinterval(-1.0, 0x1210386db6d55cp-55) - - @test sin(bareinterval(3.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 0x1210386db6d55cp-55) - - @test sin(bareinterval(3.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 0x1210386db6d55cp-55) - - @test sin(bareinterval(4.0, 7.0)) === bareinterval(-1.0, 0x150608c26d0a09p-53) - - @test sin(bareinterval(4.0, 6.0)) === bareinterval(-1.0, -0x11e1f18ab0a2c0p-54) - - @test sin(bareinterval(4.0, 5.0)) === bareinterval(-1.0, -0x1837b9dddc1eaep-53) - - @test sin(bareinterval(4.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, -0x1837b9dddc1eaep-53) - - @test sin(bareinterval(5.0, 7.0)) === bareinterval(-0x1eaf81f5e09934p-53, 0x150608c26d0a09p-53) - - @test sin(bareinterval(5.0, 6.0)) === bareinterval(-0x1eaf81f5e09934p-53, -0x11e1f18ab0a2c0p-54) - - @test sin(bareinterval(5.0, 5.0)) === bareinterval(-0x1eaf81f5e09934p-53, -0x1eaf81f5e09933p-53) - - @test sin(bareinterval(6.0, 7.0)) === bareinterval(-0x11e1f18ab0a2c1p-54, 0x150608c26d0a09p-53) - - @test sin(bareinterval(6.0, 6.0)) === bareinterval(-0x11e1f18ab0a2c1p-54, -0x11e1f18ab0a2c0p-54) - - @test sin(bareinterval(7.0, 7.0)) === bareinterval(0x150608c26d0a08p-53, 0x150608c26d0a09p-53) - -end -@testset "mpfi_sinh" begin - - @test sinh(bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -0x1122876ba380c9p-43) - - @test sinh(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) - - @test sinh(bareinterval(-Inf, +8.0)) === bareinterval(-Inf, 0x1749ea514eca66p-42) - - @test sinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test sinh(bareinterval(-1.0, 0.0)) === bareinterval(-0x12cd9fc44eb983p-52, 0.0) - - @test sinh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test sinh(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x12cd9fc44eb983p-52) - - @test sinh(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1749ea514eca66p-42) - - @test sinh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test sinh(bareinterval(-0.125, 0.0)) === bareinterval(-0x100aaccd00d2f1p-55, 0.0) - - @test sinh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0.0, 0x10acd00fe63b98p-53) - - @test sinh(bareinterval(-4.5, -0.625)) === bareinterval(-0x168062ab5fa9fdp-47, -0x1553e795dc19ccp-53) - - @test sinh(bareinterval(1.0, 3.0)) === bareinterval(0x12cd9fc44eb982p-52, 0x140926e70949aep-49) - -end -@testset "mpfi_sqr" begin - - @test pown(bareinterval(-Inf, -7.0), 2) === bareinterval(+49.0, +Inf) - - @test pown(bareinterval(-Inf, 0.0), 2) === bareinterval(0.0, +Inf) - - @test pown(bareinterval(-Inf, +8.0), 2) === bareinterval(0.0, +Inf) - - @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0, +Inf) - - @test pown(bareinterval(0.0, 0.0), 2) === bareinterval(0.0, 0.0) - - @test pown(bareinterval(0.0, +8.0), 2) === bareinterval(0.0, +64.0) - - @test pown(bareinterval(0.0, +Inf), 2) === bareinterval(0.0, +Inf) - - @test pown(bareinterval(0x8.6374d8p-4, 0x3.f1d929p+8), 2) === bareinterval(0x4.65df11464764p-4, 0xf.8f918d688891p+16) - - @test pown(bareinterval(0x6.61485c33c0b14p+4, 0x123456p0), 2) === bareinterval(0x2.8b45c3cc03ea6p+12, 0x14b66cb0ce4p0) - - @test pown(bareinterval(-0x1.64722ad2480c9p+0, 0x1p0), 2) === bareinterval(0.0, 0x1.f04dba0302d4dp+0) - - @test pown(bareinterval(0x1.6b079248747a2p+0, 0x2.b041176d263f6p+0), 2) === bareinterval(0x2.02ce7912cddf6p+0, 0x7.3a5dee779527p+0) - -end -@testset "mpfi_sqrt" begin - - @test sqrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test sqrt(bareinterval(0.0, +9.0)) === bareinterval(0.0, +3.0) - - @test sqrt(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) - - @test sqrt(bareinterval(0xaaa1p0, 0x14b66cb0ce4p0)) === bareinterval(0xd1p0, 0x123456p0) - - @test sqrt(bareinterval(0xe.49ae7969e41bp-4, 0xaaa1p0)) === bareinterval(0xf.1ea42821b27a8p-4, 0xd1p0) - - @test sqrt(bareinterval(0xa.aa1p-4, 0x1.0c348f804c7a9p+0)) === bareinterval(0xd.1p-4, 0x1.06081714eef1dp+0) - - @test sqrt(bareinterval(0xe.49ae7969e41bp-4, 0x1.0c348f804c7a9p+0)) === bareinterval(0xf.1ea42821b27a8p-4, 0x1.06081714eef1dp+0) - -end -@testset "mpfi_sub" begin - - @test -(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, -6.0) - - @test -(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, -8.0) - - @test -(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +8.0) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) - - @test -(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0.0, +15.0) - - @test -(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(-8.0, 0.0) - - @test -(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(-8.0, +Inf) - - @test -(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, -8.0) - - @test -(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-8.0, +15.0) - - @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test -(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(-8.0, +Inf) - - @test -(bareinterval(-5.0, 59.0), bareinterval(17.0, 81.0)) === bareinterval(-86.0, 42.0) - - @test -(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x789abcdp0, 0x10000000000000p-93)) === bareinterval(-0x10000000000001p-93, 0x123456789abcdp0) - - @test -(bareinterval(-4.0, 7.0), bareinterval(-3e300, 0x123456789abcdp-17)) === bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947) - - @test -(bareinterval(-0x1000100010001p+8, 0x1p+60), bareinterval(-3e300, 0x1000100010001p0)) === bareinterval(-0x10101010101011p+4, 0x8f596b3002c1bp+947) - - @test -(bareinterval(-5.0, 1.0), bareinterval(1.0, 0x1p+70)) === bareinterval(-0x10000000000001p+18, 0.0) - - @test -(bareinterval(5.0, 0x1p+70), bareinterval(3.0, 5.0)) === bareinterval(0.0, 0x1p+70) - -end -@testset "mpfi_sub_d" begin - - @test -(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)) === bareinterval(-Inf, -0x1bffffffffffffp-50) - - @test -(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, -7.0) - - @test -(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -7.0) - - @test -(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(-Inf, 0x170ef54646d497p-106) - - @test -(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 0.0) - - @test -(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, -8.0e-17) - - @test -(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-Inf, 0x16345785d8a00100p0) - - @test -(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 8.0) - - @test -(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, -0x16345785d89fff00p0) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === entireinterval(BareInterval{Float64}) - - @test -(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) - - @test -(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(+0x170ef54646d497p-109, +0x170ef54646d497p-109) - - @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test -(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) - - @test -(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(0x114b37f4b51f71p-107, 0x10000000000001p-49) - - @test -(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 8.0) - - @test -(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)) === bareinterval(-0x114b37f4b51f71p-107, 8.0) - - @test -(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(0x50b45a75f7e81p-104, +Inf) - - @test -(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, +Inf) - - @test -(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(-0x142d169d7dfa03p-106, +Inf) - - @test -(bareinterval(-32.0, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) - - @test -(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) - - @test -(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(-0xfb53d14aa9c2fp-48, -0xfb53d14aa9c2fp-48)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) - - @test -(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) - - @test -(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) - - @test -(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) - - @test -(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)) === bareinterval(0xfff8p-4, 0x10018p-4) - - @test -(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) - - @test -(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) - - @test -(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) - - @test -(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)) === bareinterval(-0x10038p-4, -0x10018p-4) - -end -@testset "mpfi_tan" begin - - @test tan(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) - - @test tan(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 0.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0.0) - - @test tan(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test tan(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x18eb245cbee3a6p-52) - - @test tan(bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0.125, 17.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, -0.5)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.5, 0.625)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, -0.25)) === bareinterval(-0x18eb245cbee3a6p-52, -0x105785a43c4c55p-54) - - @test tan(bareinterval(-0.5, 0.5)) === bareinterval(-0x117b4f5bf3474bp-53, 0x117b4f5bf3474bp-53) - - @test tan(bareinterval(0x71p+76, 0x71p+76)) === bareinterval(-0x1c8dc87ddcc134p-55, -0x1c8dc87ddcc133p-55) - - @test tan(bareinterval(-7.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, -4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-7.0, -5.0)) === bareinterval(-0x1be2e6e13eea79p-53, 0x1b0b4b739bbb07p-51) - - @test tan(bareinterval(-7.0, -6.0)) === bareinterval(-0x1be2e6e13eea79p-53, 0x129fd86ebb95bfp-54) - - @test tan(bareinterval(-7.0, -7.0)) === bareinterval(-0x1be2e6e13eea79p-53, -0x1be2e6e13eea78p-53) - - @test tan(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, -4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-6.0, -5.0)) === bareinterval(0x129fd86ebb95bep-54, 0x1b0b4b739bbb07p-51) - - @test tan(bareinterval(-6.0, -6.0)) === bareinterval(0x129fd86ebb95bep-54, 0x129fd86ebb95bfp-54) - - @test tan(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, -4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-5.0, -5.0)) === bareinterval(0x1b0b4b739bbb06p-51, 0x1b0b4b739bbb07p-51) - - @test tan(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-4.0, -2.0)) === bareinterval(-0x12866f9be4de14p-52, 0x117af62e0950f9p-51) - - @test tan(bareinterval(-4.0, -3.0)) === bareinterval(-0x12866f9be4de14p-52, 0x123ef71254b870p-55) - - @test tan(bareinterval(-4.0, -4.0)) === bareinterval(-0x12866f9be4de14p-52, -0x12866f9be4de13p-52) - - @test tan(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-3.0, -2.0)) === bareinterval(0x123ef71254b86fp-55, 0x117af62e0950f9p-51) - - @test tan(bareinterval(-3.0, -3.0)) === bareinterval(0x123ef71254b86fp-55, 0x123ef71254b870p-55) - - @test tan(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, 0.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, -1.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-2.0, -2.0)) === bareinterval(0x117af62e0950f8p-51, 0x117af62e0950f9p-51) - - @test tan(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(-1.0, 1.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0x18eb245cbee3a6p-52) - - @test tan(bareinterval(-1.0, 0.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0.0) - - @test tan(bareinterval(-1.0, -1.0)) === bareinterval(-0x18eb245cbee3a6p-52, -0x18eb245cbee3a5p-52) - - @test tan(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(1.0, 2.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(1.0, 1.0)) === bareinterval(0x18eb245cbee3a5p-52, 0x18eb245cbee3a6p-52) - - @test tan(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(2.0, 4.0)) === bareinterval(-0x117af62e0950f9p-51, 0x12866f9be4de14p-52) - - @test tan(bareinterval(2.0, 3.0)) === bareinterval(-0x117af62e0950f9p-51, -0x123ef71254b86fp-55) - - @test tan(bareinterval(2.0, 2.0)) === bareinterval(-0x117af62e0950f9p-51, -0x117af62e0950f8p-51) - - @test tan(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(3.0, 4.0)) === bareinterval(-0x123ef71254b870p-55, 0x12866f9be4de14p-52) - - @test tan(bareinterval(3.0, 3.0)) === bareinterval(-0x123ef71254b870p-55, -0x123ef71254b86fp-55) - - @test tan(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(4.0, 6.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(4.0, 5.0)) === entireinterval(BareInterval{Float64}) - - @test tan(bareinterval(4.0, 4.0)) === bareinterval(0x12866f9be4de13p-52, 0x12866f9be4de14p-52) - - @test tan(bareinterval(5.0, 7.0)) === bareinterval(-0x1b0b4b739bbb07p-51, 0x1be2e6e13eea79p-53) - - @test tan(bareinterval(5.0, 6.0)) === bareinterval(-0x1b0b4b739bbb07p-51, -0x129fd86ebb95bep-54) - - @test tan(bareinterval(5.0, 5.0)) === bareinterval(-0x1b0b4b739bbb07p-51, -0x1b0b4b739bbb06p-51) - - @test tan(bareinterval(6.0, 7.0)) === bareinterval(-0x129fd86ebb95bfp-54, 0x1be2e6e13eea79p-53) - - @test tan(bareinterval(6.0, 6.0)) === bareinterval(-0x129fd86ebb95bfp-54, -0x129fd86ebb95bep-54) - - @test tan(bareinterval(7.0, 7.0)) === bareinterval(0x1be2e6e13eea78p-53, 0x1be2e6e13eea79p-53) - -end -@testset "mpfi_tanh" begin - - @test tanh(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, -0x1ffffc832750f1p-53) - - @test tanh(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 0.0) - - @test tanh(bareinterval(-Inf, 8.0)) === bareinterval(-1.0, 0x1fffff872a91f9p-53) - - @test tanh(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, +1.0) - - @test tanh(bareinterval(-1.0, 0.0)) === bareinterval(-0x185efab514f395p-53, 0.0) - - @test tanh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test tanh(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x185efab514f395p-53) - - @test tanh(bareinterval(0.0, 8.0)) === bareinterval(0.0, 0x1fffff872a91f9p-53) - - @test tanh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +1.0) - - @test tanh(bareinterval(-0.125, 0.0)) === bareinterval(-0x1fd5992bc4b835p-56, 0.0) - - @test tanh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0.0, 0x1d9353d7568af5p-54) - - @test tanh(bareinterval(-4.5, -0.625)) === bareinterval(-0x1ffdfa72153984p-53, -0x11bf47eabb8f95p-53) - - @test tanh(bareinterval(1.0, 3.0)) === bareinterval(0x185efab514f394p-53, 0x1fd77d111a0b00p-53) - - @test tanh(bareinterval(17.0, 18.0)) === bareinterval(0x1fffffffffffe1p-53, 0x1ffffffffffffcp-53) - -end -@testset "mpfi_union" begin - - @test hull(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, +8.0) - - @test hull(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === entireinterval(BareInterval{Float64}) - - @test hull(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +8.0) - - @test hull(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) - - @test hull(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(-Inf, 0.0) - - @test hull(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-7.0, +8.0) - - @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) - - @test hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test hull(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, +Inf) - - @test hull(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) - - @test hull(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-7.0, +8.0) - - @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) - - @test hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) - - @test hull(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)) === bareinterval(-0x0dp0, 0x90p0) - -end diff --git a/test/generate_ITF1788.jl b/test/generate_ITF1788.jl index 38db107b3..c802e206e 100644 --- a/test/generate_ITF1788.jl +++ b/test/generate_ITF1788.jl @@ -1,46 +1,3 @@ -""" - generate(filename; ofolder="", failure=false) - -Generates the julia tests from the file filename. The tests in filename must be written -using the ITL domain specific language. The tests are written in a .jl file with the same -name of filename. The folder where to save the output file is specifified - -If failure=true, than each test is also executed before printing to the target file. If the -test fails, then the test is generated as ´@test_broken`. -""" -function generate(filename) - - # read file - src = joinpath(@__DIR__, "itl", filename) - f = open(src) - lines = readlines(f) - close(f) - - # file where to Write - dest = joinpath("ITF1788_tests", filename[1:end-4]*".jl") - mkpath("ITF1788_tests") - f = open(dest; write=true) - - # where testcase blocks start - rx_start = r"^\s*testcase\s+\S+\s+\{\s*$" - rx_end = r"^\s*\}\s*$" - block_start = findall(x -> occursin(rx_start, x), lines) - block_end = findall(x -> occursin(rx_end, x), lines) - - # check opening and closing blocks match - length(block_start) == length(block_end) || throw(ArgumentError("opening and closing braces not not much in $filename")) - - for (bstart, bend) in zip(block_start, block_end) - testset = parse_block(lines[bstart:bend]) - write(f, testset) - end - - close(f) - nothing -end - -# - functions = Dict( "atan2" => x -> "atan($x)", "add" => x -> "+($x)", @@ -132,66 +89,79 @@ functions = Dict( "sum_sqr_nearest" => x -> "sum($x.^2)" ) -# +""" + generate(filename::AbstractString) + +Generate the julia tests from the file `filename` contained in a folder named +`itl` located in the current directory. The file must have the extension `.itl`. +The output is a Julia file with the same name, with the extension `.jl`, located +in the folder named `ITF1788_tests`. Return the path of the output file. +""" +function generate(filename::AbstractString) + src = joinpath(@__DIR__, "itl", filename) + lines = readlines(src) + + mkpath("ITF1788_tests") + dest = joinpath("ITF1788_tests", replace(filename, ".itl" => ".jl")) + + open(dest, "w") do io + rx_start = r"^\s*testcase\s+\S+\s+\{\s*$" # where testcase blocks start + rx_end = r"^\s*\}\s*$" # where testcase blocks end + + block_start = findall(line -> occursin(rx_start, line), lines) + block_end = findall(line -> occursin(rx_end, line), lines) + + length(block_start) == length(block_end) || throw(ArgumentError("opening and closing braces do not match in $filename")) + + for (bstart, bend) ∈ zip(block_start, block_end) + testset = parse_block(view(lines, bstart:bend)) + write(io, testset) + end + end + + return dest +end function parse_block(block) - bname = match(r"^\s*testcase\s+(\S+)\s+\{\s*$", block[1])[1] + blockname = match(r"^\s*testcase\s+(\S+)\s+\{\s*$", block[1])[1] - testset = """@testset "$bname" begin + testset = """@testset "$blockname" begin """ - ind = " " - for i in 2:length(block)-1 + indentation = " " + for i ∈ 2:length(block)-1 line = strip(block[i]) - (isempty(line) || startswith(line, "//")) && continue + isempty(line) | startswith(line, "//") && continue command = parse_command(line) testset = """$testset - $ind$command + $indentation$command """ end testset = """$testset end """ -end - -""" -This function parses a line into julia code, e.g. - -``` -add [1, 2] [1, 2] = [2, 4] -``` + return testset +end -is parsed into -``` -@test +(Interval(1, 2), Interval(1, 2)) === Interval(2, 4) -``` -""" +# e.g. `add [1, 2] [1, 2] = [2, 4]` is parsed as `@test +(interval(1, 2), interval(1, 2)) === interval(2, 4)` function parse_command(line) # extract parts in line m = match(r"^(.+)=(.+);$", line) lhs = m[1] - rhs = m[2] - rhs = split(rhs, "signal") - warn = length(rhs) > 1 ? rhs[2] : "" - rhs = rhs[1] + vrhs = split(m[2], "signal") + haswarning = length(vrhs) > 1 + rhs = vrhs[1] lhs = parse_lhs(lhs) rhs = parse_rhs(rhs) expr = build_expression(lhs, rhs) - # known broken test, unrelated to interval airthmetic - command = occursin("dot_nearest {0x10000000000001p0, 0x1p104} {0x0fffffffffffffp0, -1.0} = -1.0", line) ? + # one known broken test, unrelated to interval airthmetic + command = occursin("dot_nearest {0x10000000000001p0, 0x1p104} {0x0fffffffffffffp0, -1.0} = -1.0", line) ? "@test_broken $expr" : "@test $expr" - # try - # res = eval(Meta.parse(expr)) - # command = res ? "@test $expr" : "@test_broken $expr" - # catch - # command = "@test_broken $expr" - # end - - command = isempty(warn) ? command : "@test_logs (:warn,) $command" + command = haswarning ? "@test_logs (:warn,) $command" : command return command end @@ -207,8 +177,7 @@ function parse_lhs(lhs) fname == "d-textToInterval" && return "parse(Interval{Float64}, $args)" # input numbers - args = replace(args, "infinity" => "Inf") - args = replace(args, "X" => "x") + args = replace(args, "infinity" => "Inf", "X" => "x") if fname == "b-numsToInterval" args = join(split(args), ',') return "bareinterval($args)" @@ -221,9 +190,10 @@ function parse_lhs(lhs) # input intervals rx = r"\[([^\]]+)\](?:_(\w+))?" - for m in eachmatch(rx, args) + for m ∈ eachmatch(rx, args) args = replace(args, m.match => parse_interval(m[1], m[2])) end + args = replace(args, " " => ", ") args = replace(args, ",," => ",") args = replace(args, "{" => "[") @@ -232,19 +202,12 @@ function parse_lhs(lhs) return functions[fname](args) end -function int_to_float(x) - if isnothing(tryparse(Int, x)) - return x - else - return x * ".0" - end -end +int_to_float(x) = x * ifelse(isnothing(tryparse(Int64, x)), "", ".0") function parse_rhs(rhs) - rhs = strip(rhs) - rhs = replace(rhs, "infinity" => "Inf") - rhs = replace(rhs, "X" => "x") - rhs = replace(rhs, + rhs = replace(strip(rhs), + "infinity" => "Inf", + "X" => "x", "bothEmpty" => "IntervalArithmetic.Overlap.both_empty", "firstEmpty" => "IntervalArithmetic.Overlap.first_empty", "secondEmpty" => "IntervalArithmetic.Overlap.second_empty", @@ -261,36 +224,36 @@ function parse_rhs(rhs) "overlappedBy" => "IntervalArithmetic.Overlap.overlapped_by", "metBy" => "IntervalArithmetic.Overlap.met_by", "after" => "IntervalArithmetic.Overlap.after") - if '[' ∉ rhs # one or more scalar/bolean values separated by space - return map(int_to_float, split(rhs)) - else # one or more intervals + if occursin('[', rhs) # one or more intervals rx = r"\[([^\]]+)\](?:_(\w+))?" - ivals = [parse_interval(m[1], m[2]; check=false) for m in eachmatch(rx, rhs)] + ivals = [parse_interval(m[1], m[2]) for m ∈ eachmatch(rx, rhs)] return ivals + else # one or more scalar/boolean values separated by space + return map(int_to_float, split(rhs)) end end -function parse_interval(ival, dec; check=true) - ival == "nai" && return "nai()" +function parse_interval(ival::AbstractString, dec::Union{Nothing,AbstractString}) + ival == "nai" && return "nai(Interval{Float64})" if ival == "entire" ival = "entireinterval(BareInterval{Float64})" elseif ival == "empty" ival = "emptyinterval(BareInterval{Float64})" else - ival = check ? "bareinterval($ival)" : "bareinterval($ival)" + ival = "bareinterval($ival)" end - isnothing(dec) || (ival = "interval($ival, $dec)") - return ival + isnothing(dec) && return ival + return "interval($ival, $dec)" +end + +function build_expression(lhs::AbstractString, rhs::Vector) + length(rhs) == 1 && return build_expression(lhs, rhs[1]) + expr = [build_expression(lhs * "[$i]", r) for (i, r) ∈ enumerate(rhs)] + return join(expr, " && ") end -function build_expression(lhs, rhs::AbstractString) +function build_expression(lhs::AbstractString, rhs::AbstractString) rhs == "nai()" && return "isnai($lhs)" rhs == "NaN" && return "isnan($lhs)" return "$lhs === $rhs" end - -function build_expression(lhs, rhs::Vector) - length(rhs) == 1 && return build_expression(lhs, rhs[1]) - expr = [build_expression(lhs*"[$i]", r) for (i, r) in enumerate(rhs)] - return join(expr, " && ") -end From fd5082226a6d431bfdf4afeff085f70187dc5112 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 16:02:53 +0100 Subject: [PATCH 25/54] Update NEWS.md --- NEWS.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index d3632b24d..0f571bd9e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,11 +8,11 @@ Major changes since 0.20 and 0.21: - interval structures: - new bare (i.e. no decorations) interval structure `BareInterval`, which is not a subtype of `Real` - - `Interval` is now decorated (`DecoratedInterval` is removed) and has a new boolean field `isguaranteed`; this type is still a subtype of `Real` + - `Interval` is now decorated (`DecoratedInterval` is removed) and has a new boolean field `isguaranteed`; the `Interval` type is a subtype of `Real` - constructors: - - `@interval`, `@floatinterval`, `@biginterval` and `atomic` are removed - - the recommended interval type is `Interval` and its constructor is `interval`, or `parse(T<:Interval, string)`, or `I"string"`; a corresponding `bareinterval` constructor is also given for `BareInterval`, and `parse(T<:BareInterval, string)` is also possible + - `@floatinterval` and `@biginterval` are removed; `@interval` accepts a bound type as its first parameter + - the recommended interval type is `Interval` and its constructors are `interval`, `@interval`, `parse(T<:Interval, string)`, `I"string"`. A `bareinterval` constructor is also available for `BareInterval`, as well as `parse(T<:BareInterval, string)` - warning is prompted when trying to construct invalid intervals - conversion/promotion: @@ -22,14 +22,14 @@ Major changes since 0.20 and 0.21: - unicode alias (e.g. `..`, `±`, `∅`, `ℝ`, etc.) are now contained in an unexported submodule `Symbols` to prevent conflicts (e.g. `..` is exported by [Makie.jl](https://github.com/MakieOrg/Makie.jl)) - display: - - fixes previous matrix alignment issues + - fixed previous matrix alignment issues - `setformat` has been renaed `setdisplay`; the display format `:standard` has been renamed `:infsup` - set-based flavor is supported; some ground work on a flavor mechanism has been laid out to support others, e.g. cset flavor - partial support for `Complex{<:Interval}`; some elementary functions are still missing -- ambiguous boolean `Base` functions (e.g. `==`, `<`, `issubset`, etc.) are no longer overloaded and throw an error; new counterparts methods have been defined +- ambiguous boolean `Base` functions (e.g. `==`, `issubset`, `<`, etc.) are no longer overloaded and throw an error; new counterparts methods have been defined (e.g. `isequal_interval`, `issubset_interval`, etc.) tests: - all non-"rev" tests from [ITF1788](https://github.com/oheim/ITF1788) are successful (except a broken test for the `dot` function, which should be irrelevant to interval arithmetic) From adcdb5a5ae7fa7b77091c5c46dd7aa5edfff64cd Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:18:00 +0100 Subject: [PATCH 26/54] Add convient alias --- src/IntervalArithmetic.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index c5a321f1e..d6b5780c3 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -22,4 +22,9 @@ include("display.jl") include("symbols.jl") +# convenient alias +const RealOrComplexI{T} = Union{Interval{T},Complex{Interval{T}}} +const ComplexI{T} = Complex{Interval{T}} + export RealOrComplexI, ComplexI + end From a6c0d3a987dfbb9a4aa9171fd8a24bde515e313c Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:18:25 +0100 Subject: [PATCH 27/54] Do not use trivial decoration for `mince` and `bisect` --- src/intervals/interval_operations/bisect.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/intervals/interval_operations/bisect.jl b/src/intervals/interval_operations/bisect.jl index 9e86e9cd9..34ec4bf7b 100644 --- a/src/intervals/interval_operations/bisect.jl +++ b/src/intervals/interval_operations/bisect.jl @@ -18,7 +18,7 @@ end function bisect(x::Interval, α::Real=0.5) bx = bareinterval(x) r₁, r₂ = bisect(bx, α) - d₁, d₂ = min(decoration(x), decoration(r₁), trv), min(decoration(x), decoration(r₂), trv) + d₁, d₂ = min(decoration(x), decoration(r₁)), min(decoration(x), decoration(r₂)) t = isguaranteed(x) return (_unsafe_interval(r₁, d₁, t), _unsafe_interval(r₂, d₂, t)) end @@ -51,7 +51,7 @@ function mince(x::Interval{T}, n::Integer) where {T<:NumTypes} t = isguaranteed(x) @inbounds for i ∈ 1:n rᵢ = _unsafe_bareinterval(T, nodes[i], nodes[i+1]) - dᵢ = min(d, decoration(rᵢ), trv) + dᵢ = min(d, decoration(rᵢ)) v[i] = _unsafe_interval(rᵢ, dᵢ, t) end return v From fb9ad136c7542b52fe5e47777697676799763f6b Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:39:56 +0100 Subject: [PATCH 28/54] Fix `interiordiff` --- src/intervals/interval_operations/set_operations.jl | 9 +++------ test/interval_tests/set_operations.jl | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/intervals/interval_operations/set_operations.jl b/src/intervals/interval_operations/set_operations.jl index 7440ac82e..023fa90fb 100644 --- a/src/intervals/interval_operations/set_operations.jl +++ b/src/intervals/interval_operations/set_operations.jl @@ -69,13 +69,10 @@ treated as multi-dimensional intervals. function interiordiff(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} isinterior(x, y) && return BareInterval{T}[] # or `[emptyinterval(BareInterval{T})]`? isdisjoint_interval(x, y) && return [x] - isequal_interval(x, y) && return [_unsafe_bareinterval(T, inf(x), inf(x)), _unsafe_bareinterval(T, sup(x), sup(x))] - inter = intersect_interval(x, y) - inf(x) == inf(inter) && return [_unsafe_bareinterval(T, sup(inter), sup(x))] - sup(x) == sup(inter) && return [_unsafe_bareinterval(T, inf(x), inf(inter))] - - return [_unsafe_bareinterval(T, inf(x), inf(y)), _unsafe_bareinterval(T, sup(y), sup(x))] + issubset_interval(y, x) && return [_unsafe_bareinterval(T, inf(x), inf(inter)), _unsafe_bareinterval(T, sup(inter), sup(x))] + isweakless(x, inter) && return [_unsafe_bareinterval(T, inf(x), inf(inter))] + return [_unsafe_bareinterval(T, sup(inter), sup(x))] end interiordiff(x::BareInterval, y::BareInterval) = interiordiff(promote(x, y)...) diff --git a/test/interval_tests/set_operations.jl b/test/interval_tests/set_operations.jl index f7fdf3be2..4b5c28bd2 100644 --- a/test/interval_tests/set_operations.jl +++ b/test/interval_tests/set_operations.jl @@ -25,8 +25,8 @@ end y = interval(2, 5) - @test all(isequal_interval.(interiordiff(x, y), [interval(4)])) - @test all(isequal_interval.(interiordiff(y, x), [interval(4, 5)])) + @test all(isequal_interval.(interiordiff(x, y), [interval(2)])) + @test all(isequal_interval.(interiordiff(y, x), [interval(2), interval(4, 5)])) x = interval(2, 5) y = interval(3, 4) From cc0976b37c9bbb56a408eccfd9d770ce870a818e Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:46:50 +0100 Subject: [PATCH 29/54] Add `Fix2` mechanism for `isequal_interval` and `in_interval` --- src/intervals/interval_operations/boolean.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/intervals/interval_operations/boolean.jl b/src/intervals/interval_operations/boolean.jl index 0dacb5a41..0457b550a 100644 --- a/src/intervals/interval_operations/boolean.jl +++ b/src/intervals/interval_operations/boolean.jl @@ -26,6 +26,8 @@ isequal_interval(x::Complex, y::Complex) = isequal_interval(real(x), real(y)) & isequal_interval(x::Complex, y::Real) = isequal_interval(real(x), y) & isthinzero(imag(x)) isequal_interval(x::Real, y::Complex) = isequal_interval(x, real(y)) & isthinzero(imag(y)) +isequal_interval(x) = Base.Fix2(isequal_interval, x) + """ issubset_interval(x, y) @@ -197,6 +199,8 @@ in_interval(x::Complex, y::Complex) = in_interval(real(x), real(y)) & in_interva in_interval(x::Complex, y::Real) = in_interval(real(x), y) & isthinzero(imag(x)) in_interval(x::Real, y::Complex) = in_interval(x, real(y)) & in_interval(0, imag(y)) +in_interval(x) = Base.Fix2(in_interval, x) + """ isempty_interval(x) From dd813164cabecda6e95858ed7e3a2d1f22e4ff77 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 18:51:54 +0100 Subject: [PATCH 30/54] Fix `atomic` for `BigFloat` --- src/intervals/construction.jl | 61 ++++++++++++++++++----------------- src/intervals/parsing.jl | 16 +++++++-- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 236931f5e..924720480 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -220,33 +220,6 @@ bareinterval(a::Tuple) = bareinterval(T, a...) return :($res) # set body of the function to return the precomputed result end -""" - atomic(T<:Union{Rational,AbstractFloat}, x) - -Create an interval according to the IEEE Standard 1788-2015. The returned -`BareInterval{T}` always contains the value `x`; this is semantically equivalent -to `parse(BareInterval{T}, string(x))`. - -# Examples -```jldoctest -julia> setdisplay(:full); - -julia> x = IntervalArithmetic.atomic(Float64, 0.1) -BareInterval{Float64}(0.09999999999999999, 0.1) - -julia> in_interval(1//10, IntervalArithmetic.atomic(Float64, 0.1)) -true - -julia> IntervalArithmetic.atomic(Float64, 0.3) -BareInterval{Float64}(0.3, 0.30000000000000004) - -julia> in_interval(3//10, IntervalArithmetic.atomic(Float64, 0.3)) -true -``` -""" -atomic(::Type{T}, x::AbstractString) where {T<:NumTypes} = parse(BareInterval{T}, x) -atomic(::Type{T}, x) where {T<:NumTypes} = atomic(T, string(x)) - # promotion Base.promote_rule(::Type{BareInterval{T}}, ::Type{BareInterval{S}}) where {T<:NumTypes,S<:NumTypes} = @@ -441,6 +414,7 @@ interval(a, d::Decoration = com; format::Symbol = :infsup) = interval(promote_nu # some useful extra constructor interval(::Type{T}, a::Tuple, d::Decoration = com; format::Symbol = :infsup) where {T<:NumTypes} = interval(T, a..., d; format = format) interval(a::Tuple, d::Decoration = com; format::Symbol = :infsup) = interval(a..., d; format = format) +interval(::Type{T}, A::AbstractArray; format::Symbol = :infsup) where {T<:NumTypes} = interval.(T, A; format = format) interval(A::AbstractArray; format::Symbol = :infsup) = interval.(A; format = format) # standard format @@ -606,6 +580,35 @@ function Base.convert(::Type{Interval{T}}, x::Complex) where {T<:NumTypes} return convert(Interval{T}, real(x)) end +""" + atomic(T<:Union{Rational,AbstractFloat}, x) + +Create an interval according to the IEEE Standard 1788-2015. The returned +`Interval{T}` always contains the value `x`; this is semantically equivalent +to `parse(Interval{T}, string(x))` if `x` is a `Number`. + +# Examples + +```jldoctest +julia> setdisplay(:full); + +julia> x = IntervalArithmetic.atomic(Float64, 0.1) +BareInterval{Float64}(0.09999999999999999, 0.1) + +julia> in_interval(1//10, IntervalArithmetic.atomic(Float64, 0.1)) +true + +julia> IntervalArithmetic.atomic(Float64, 0.3) +BareInterval{Float64}(0.3, 0.30000000000000004) + +julia> in_interval(3//10, IntervalArithmetic.atomic(Float64, 0.3)) +true +``` +""" +atomic(::Type{T}, x::AbstractString) where {T<:NumTypes} = parse(Interval{T}, x) +atomic(::Type{T}, x::Interval) where {T<:NumTypes} = interval(T, x) +atomic(::Type{T}, x::Number) where {T<:NumTypes} = atomic(T, string(x)) + @@ -641,9 +644,9 @@ macro interval(T, expr1, expr2) return :(interval($(esc(T)), $x, $y)) end -_wrap_interval(T::Symbol, x) = :(interval(atomic($(esc(T)), $x))) +_wrap_interval(T::Symbol, x) = :(atomic($(esc(T)), $x)) -_wrap_interval(T::Symbol, x::Symbol) = :(interval(atomic($(esc(T)), $(esc(x))))) +_wrap_interval(T::Symbol, x::Symbol) = :(atomic($(esc(T)), $(esc(x)))) function _wrap_interval(T::Symbol, expr::Expr) if expr.head ∈ (:(.), :ref, :macrocall) # a.i, or a[i], or BigInt diff --git a/src/intervals/parsing.jl b/src/intervals/parsing.jl index d8fce7da4..ff22461a4 100644 --- a/src/intervals/parsing.jl +++ b/src/intervals/parsing.jl @@ -233,12 +233,22 @@ function _parse(::Type{T}, str::AbstractString) where {T<:NumTypes} end end -function _parse_num(::Type{T}, str::AbstractString, rounding_mode::RoundingMode) where {T<:AbstractFloat} +function _parse_num(::Type{T}, str::AbstractString, r::RoundingMode) where {T<:AbstractFloat} if '/' ∈ str num, denum = parse.(BigInt, split(str, '/'; keepempty = false)) - return T(num//denum, rounding_mode) + return T(num//denum, r) + else + return T(parse(BigFloat, str), r) + end +end + +function _parse_num(::Type{BigFloat}, str::AbstractString, r::RoundingMode) + if '/' ∈ str + num, denum = parse.(BigInt, split(str, '/'; keepempty = false)) + return BigFloat(num//denum, r) + else + return BigFloat(str, r) end - return T(parse(BigFloat, str), rounding_mode) end function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Down}) where {S<:Integer,T<:Rational{S}} From 7b6020c50a2ff47229a6cfdfcfbaa734851d6e90 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:01:45 +0100 Subject: [PATCH 31/54] Fix tests --- test/interval_tests/parsing.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/interval_tests/parsing.jl b/test/interval_tests/parsing.jl index 54f89e8f7..836cf1530 100644 --- a/test/interval_tests/parsing.jl +++ b/test/interval_tests/parsing.jl @@ -4,7 +4,7 @@ if T != BigFloat @test isequal_interval(parse(BareInterval{T}, "[1e-324, 1e400]"), bareinterval(T, 0, Inf)) else - @test isequal_interval(parse(BareInterval{BigFloat}, "[1e-324, 1e400]"), bareinterval(big"1e-324", big"1e400")) + @test isequal_interval(parse(BareInterval{BigFloat}, "[1e-324, 1e400]"), bareinterval(BigFloat("1e-324", RoundDown), BigFloat("1e400", RoundUp))) end @test isequal_interval(parse(BareInterval{T}, "[2,infinity]"), bareinterval(T, 2, Inf)) @test isempty_interval(parse(BareInterval{T}, "[foobar]")) @@ -20,7 +20,7 @@ end if T != BigFloat @test isequal_interval(parse(Interval{T}, "[1e-324, 1e400]"), interval(T, 0, Inf)) else - @test isequal_interval(parse(Interval{BigFloat}, "[1e-324, 1e400]"), interval(big"1e-324", big"1e400")) + @test isequal_interval(parse(Interval{BigFloat}, "[1e-324, 1e400]"), interval(BigFloat("1e-324", RoundDown), BigFloat("1e400", RoundUp))) end @test isequal_interval(parse(Interval{T}, "[2,infinity]"), interval(T, 2, Inf)) @test isnai(parse(Interval{T}, "[foobar]")) From 4d8ece0caf226d2bbb82e855e5ab5c7591ccb2d3 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:05:22 +0100 Subject: [PATCH 32/54] Fix docstring --- src/intervals/construction.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 924720480..02dbfb652 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -593,13 +593,13 @@ to `parse(Interval{T}, string(x))` if `x` is a `Number`. julia> setdisplay(:full); julia> x = IntervalArithmetic.atomic(Float64, 0.1) -BareInterval{Float64}(0.09999999999999999, 0.1) +Interval{Float64}(0.09999999999999999, 0.1, com) julia> in_interval(1//10, IntervalArithmetic.atomic(Float64, 0.1)) true julia> IntervalArithmetic.atomic(Float64, 0.3) -BareInterval{Float64}(0.3, 0.30000000000000004) +Interval{Float64}(0.3, 0.30000000000000004, com) julia> in_interval(3//10, IntervalArithmetic.atomic(Float64, 0.3)) true From 62f3a1be4deaf34a5cbfbce02203099c4b09385c Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:26:36 +0100 Subject: [PATCH 33/54] Rename `^` to `pow`; redefine a new `^` method --- src/intervals/arithmetic/power.jl | 79 +++++++++++++++++++++++-------- src/intervals/intervals.jl | 2 +- test/generate_ITF1788.jl | 2 +- 3 files changed, 60 insertions(+), 23 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index b75915946..25a88e52c 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -5,6 +5,46 @@ """ ^(x, y) +Compute the power of the positive real part of `x` by `y`. This function is not +in the IEEE Standard 1788-2015. This is equivalent to `pow(x, y)`, unless +`isthininteger(y)` is true in which case it is equivalent to `pown(x, sup(y))`. + +See also: [`pow`](@ref) and [`pown`](@ref). + +# Examples + +```jldoctest +julia> bareinterval(2, 3) ^ bareinterval(2) +BareInterval{Float64}(4.0, 9.0) + +julia> interval(-1, 1) ^ interval(3) +Interval{Float64}(-1.0, 1.0, com) + +julia> interval(-1, 1) ^ interval(-3) +Interval{Float64}(1.0, Inf, trv) +``` +""" +function Base.:^(x::BareInterval, y::BareInterval) + isthininteger(y) && return pown(x, Integer(sup(y))) + return pow(x, y) +end + +function Base.:^(x::Interval, y::Interval) + isthininteger(y) && return pown(x, Integer(sup(y))) + return pow(x, y) +end + +Base.:^(n::Integer, y::Interval) = ^(n//one(n), y) +Base.:^(x::Interval, n::Integer) = ^(x, n//one(n)) +Base.:^(x::Rational, y::Interval) = ^(convert(Interval{typeof(x)}, x), y) +Base.:^(x::Interval, y::Rational) = ^(x, convert(Interval{typeof(y)}, y)) + +# overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 +Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n + +""" + pow(x, y) + Compute the power of the positive real part of `x` by `y`. In particular, even if `y` is a thin integer, this is not equivalent to `pown(x, sup(y))`. @@ -15,17 +55,17 @@ See also: [`pown`](@ref). # Examples ```jldoctest -julia> bareinterval(2, 3) ^ bareinterval(2) +julia> pow(bareinterval(2, 3), bareinterval(2)) BareInterval{Float64}(4.0, 9.0) -julia> interval(-1, 1) ^ interval(3) +julia> pow(interval(-1, 1), interval(3)) Interval{Float64}(0.0, 1.0, trv) -julia> interval(-1, 1) ^ interval(-3) +julia> pow(interval(-1, 1), interval(-3)) Interval{Float64}(1.0, Inf, trv) ``` """ -function Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:AbstractFloat} +function pow(x::BareInterval{T}, y::BareInterval{T}) where {T<:AbstractFloat} isempty_interval(y) && return y domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) @@ -33,7 +73,7 @@ function Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:AbstractFloat isthin(y) && return _pow(x, sup(y)) return hull(_pow(x, inf(y)), _pow(x, sup(y))) end -function Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:Rational} +function pow(x::BareInterval{T}, y::BareInterval{T}) where {T<:Rational} isempty_interval(y) && return y domain = _unsafe_bareinterval(T, zero(T), typemax(T)) x = intersect_interval(x, domain) @@ -41,11 +81,11 @@ function Base.:^(x::BareInterval{T}, y::BareInterval{T}) where {T<:Rational} isthin(y) && return _pow(x, sup(y)) return hull(_pow(x, inf(y)), _pow(x, sup(y))) end -Base.:^(x::BareInterval{<:AbstractFloat}, y::BareInterval{<:AbstractFloat}) = ^(promote(x, y)...) -Base.:^(x::BareInterval{<:Rational}, y::BareInterval{<:Rational}) = ^(promote(x, y)...) -Base.:^(x::BareInterval{<:Rational}, y::BareInterval{<:AbstractFloat}) = ^(promote(x, y)...) +pow(x::BareInterval{<:AbstractFloat}, y::BareInterval{<:AbstractFloat}) = pow(promote(x, y)...) +pow(x::BareInterval{<:Rational}, y::BareInterval{<:Rational}) = pow(promote(x, y)...) +pow(x::BareInterval{<:Rational}, y::BareInterval{<:AbstractFloat}) = pow(promote(x, y)...) # specialize on rational to improve exactness -function Base.:^(x::BareInterval{T}, y::BareInterval{S}) where {T<:NumTypes,S<:Rational} +function pow(x::BareInterval{T}, y::BareInterval{S}) where {T<:NumTypes,S<:Rational} R = promote_numtype(T, S) isempty_interval(y) && return emptyinterval(BareInterval{R}) domain = _unsafe_bareinterval(T, zero(T), typemax(T)) @@ -55,23 +95,20 @@ function Base.:^(x::BareInterval{T}, y::BareInterval{S}) where {T<:NumTypes,S<:R return BareInterval{R}(hull(_pow(x, inf(y)), _pow(x, sup(y)))) end -function Base.:^(x::Interval, y::Interval) +function pow(x::Interval, y::Interval) bx = bareinterval(x) by = bareinterval(y) - r = bx^by + r = pow(bx, by) d = min(decoration(x), decoration(y), decoration(r)) d = min(d, ifelse((inf(bx) > 0) | ((inf(bx) == 0) & (inf(by) > 0)), d, trv)) t = isguaranteed(x) & isguaranteed(y) return _unsafe_interval(r, d, t) end -Base.:^(n::Integer, y::Interval) = ^(n//one(n), y) -Base.:^(x::Interval, n::Integer) = ^(x, n//one(n)) -Base.:^(x::Rational, y::Interval) = ^(convert(Interval{typeof(x)}, x), y) -Base.:^(x::Interval, y::Rational) = ^(x, convert(Interval{typeof(y)}, y)) - -# overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 -Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n +pow(n::Integer, y::Interval) = pow(n//one(n), y) +pow(x::Interval, n::Integer) = pow(x, n//one(n)) +pow(x::Rational, y::Interval) = pow(convert(Interval{typeof(x)}, x), y) +pow(x::Interval, y::Rational) = pow(x, convert(Interval{typeof(y)}, y)) # helper functions for power @@ -212,10 +249,10 @@ Base.hypot(x::BareInterval, y::BareInterval) = sqrt(pown(x, 2) + pown(y, 2)) Base.hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) """ - fastpow(x, n) + fastpow(x, y) -A faster implementation of `x^n`; the returned interval may be slightly large -than `x^n`. +A faster implementation of `pow(x, y)`, at the cost of maybe returning a +slightly larger interval. """ function fastpow(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} isempty_interval(y) && return y diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index ce6d29d42..00c25689f 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -17,7 +17,7 @@ include("arithmetic/basic.jl") include("arithmetic/hyperbolic.jl") include("arithmetic/integer.jl") include("arithmetic/power.jl") - export rootn, pown, fastpow + export pow, pown, rootn, fastpow include("arithmetic/trigonometric.jl") # Other functions diff --git a/test/generate_ITF1788.jl b/test/generate_ITF1788.jl index c802e206e..973109aa4 100644 --- a/test/generate_ITF1788.jl +++ b/test/generate_ITF1788.jl @@ -12,7 +12,7 @@ functions = Dict( "subset" => x -> "issubset_interval($x)", "equal" => x -> "isequal_interval($x)", "sqr" => x -> "pown($x, 2)", - "pow" => x -> "^($x)", + "pow" => x -> "pow($x)", "rootn" => x -> "rootn($x)", "sqrt" => x -> "sqrt($x)", "exp" => x -> "exp($x)", From b0e253b987c3906206b6c10ddaabc52a33ae7bae Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:30:57 +0100 Subject: [PATCH 34/54] Fix docstrings --- src/intervals/arithmetic/power.jl | 2 +- src/intervals/construction.jl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 25a88e52c..eb9766e60 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -21,7 +21,7 @@ julia> interval(-1, 1) ^ interval(3) Interval{Float64}(-1.0, 1.0, com) julia> interval(-1, 1) ^ interval(-3) -Interval{Float64}(1.0, Inf, trv) +Interval{Float64}(-Inf, Inf, trv) ``` """ function Base.:^(x::BareInterval, y::BareInterval) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 02dbfb652..931f2b7c9 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -627,10 +627,10 @@ constructor [`atomic`](@ref). ```jldoctest julia> setdisplay(:full); -julia> @macroexpand IntervalArithmetic.@interval Float64 sin(1) -:(sin(IntervalArithmetic.interval(IntervalArithmetic.atomic(Float64, 1)))) +julia> @macroexpand @interval Float64 sin(1) +:(sin(IntervalArithmetic.atomic(Float64, 1))) -julia> IntervalArithmetic.@interval Float64 sin(1) exp(1) +julia> @interval Float64 sin(1) exp(1) Interval{Float64}(0.8414709848078965, 2.7182818284590455, com) ``` """ From 673b83e0defd692c7b6b22214247df6b0b991ce7 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 20:15:08 +0100 Subject: [PATCH 35/54] Remove `scaled_mid` --- src/intervals/interval_operations/bisect.jl | 37 +++++++- src/intervals/interval_operations/numeric.jl | 98 +++++--------------- src/intervals/intervals.jl | 2 +- test/interval_tests/consistency.jl | 11 +-- 4 files changed, 60 insertions(+), 88 deletions(-) diff --git a/src/intervals/interval_operations/bisect.jl b/src/intervals/interval_operations/bisect.jl index 34ec4bf7b..add255a51 100644 --- a/src/intervals/interval_operations/bisect.jl +++ b/src/intervals/interval_operations/bisect.jl @@ -11,7 +11,7 @@ Split the `i`-th component of a vector `x` at a relative position `α`, where function bisect(x::BareInterval{T}, α::Real=0.5) where {T<:NumTypes} 0 ≤ α ≤ 1 || return throw(DomainError(α, "bisect only accepts a relative position α between 0 and 1")) isatomic(x) && return (x, emptyinterval(BareInterval{T})) - m = scaled_mid(x, α) + m = _relpoint(x, α) return (_unsafe_bareinterval(T, inf(x), m), _unsafe_bareinterval(T, m, sup(x))) end @@ -30,6 +30,41 @@ function bisect(x::AbstractVector, i::Integer, α::Real=0.5) return (x₁, x₂) end +# helper functions for bisection + +function _relpoint(x::BareInterval{T}, α::Real) where {T<:AbstractFloat} + α == 0.5 && return mid(x) + isempty_interval(x) && return convert(T, NaN) + if isentire_interval(x) + α > 0.5 && return prevfloat(typemax(T)) + return nextfloat(typemin(T)) + else + lo, hi = bounds(x) + lo == typemin(T) && return nextfloat(lo) # cf. Section 12.12.8 + hi == typemax(T) && return prevfloat(hi) # cf. Section 12.12.8 + β = convert(T, α) + midpoint = β * (hi - lo) + lo + isfinite(midpoint) && return _normalisezero(midpoint) + return _normalisezero((1 - β) * lo + β * hi) + end +end +function _relpoint(x::BareInterval{T}, α::Real) where {T<:Rational} + α == 0.5 && return mid(x) + isempty_interval(x) && return throw(ArgumentError("cannot compute the midpoint of empty intervals; cannot return a `Rational` NaN")) + if isentire_interval(x) + α > 0.5 && return prevfloat(typemax(T)) + return nextfloat(typemin(T)) + else + lo, hi = bounds(x) + lo == typemin(T) && return nextfloat(lo) # cf. Section 12.12.8 + hi == typemax(T) && return prevfloat(hi) # cf. Section 12.12.8 + β = convert(T, α) + midpoint = β * (hi - lo) + lo + isfinite(midpoint) && return _normalisezero(midpoint) + return _normalisezero((1 - β) * lo + β * hi) + end +end + """ mince(x, n) diff --git a/src/intervals/interval_operations/numeric.jl b/src/intervals/interval_operations/numeric.jl index 436f21a91..32d569f06 100644 --- a/src/intervals/interval_operations/numeric.jl +++ b/src/intervals/interval_operations/numeric.jl @@ -11,8 +11,8 @@ negative zero is returned. Implement the `inf` function of the IEEE Standard 1788-2015 (Table 9.2). -See also: [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), [`scaled_mid`](@ref), -[`diam`](@ref), [`radius`](@ref) and [`midradius`](@ref). +See also: [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), [`diam`](@ref), +[`radius`](@ref) and [`midradius`](@ref). """ inf(x::BareInterval{T}) where {T<:AbstractFloat} = ifelse(isnan(x.lo), typemax(T), ifelse(iszero(x.lo), copysign(x.lo, -1), x.lo)) inf(x::BareInterval{<:Rational}) = x.lo @@ -35,8 +35,8 @@ Upper bound, or supremum, of `x`. Implement the `sup` function of the IEEE Standard 1788-2015 (Table 9.2). -See also: [`inf`](@ref), [`bounds`](@ref), [`mid`](@ref), [`scaled_mid`](@ref), -[`diam`](@ref), [`radius`](@ref) and [`midradius`](@ref). +See also: [`inf`](@ref), [`bounds`](@ref), [`mid`](@ref), [`diam`](@ref), +[`radius`](@ref) and [`midradius`](@ref). """ sup(x::BareInterval{T}) where {T<:AbstractFloat} = ifelse(isnan(x.hi), typemin(T), x.hi) sup(x::BareInterval{<:Rational}) = x.hi @@ -58,8 +58,8 @@ sup(x::Real) = sup(interval(x)) Bounds of `x` given as a tuple. Unlike [`inf`](@ref), this function does not normalize the infimum of the interval. -See also: [`inf`](@ref), [`sup`](@ref), [`mid`](@ref), [`scaled_mid`](@ref), -[`diam`](@ref), [`radius`](@ref) and [`midradius`](@ref). +See also: [`inf`](@ref), [`sup`](@ref), [`mid`](@ref), [`diam`](@ref), +[`radius`](@ref) and [`midradius`](@ref). """ bounds(x::BareInterval{T}) where {T<:AbstractFloat} = (ifelse(isnan(x.lo), typemax(T), x.lo), x.hi) bounds(x::BareInterval{<:Rational}) = (inf(x), sup(x)) @@ -82,34 +82,32 @@ Midpoint of `x`. Implement the `mid` function of the IEEE Standard 1788-2015 (Table 9.2). -See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`scaled_mid`](@ref), -[`diam`](@ref), [`radius`](@ref) and [`midradius`](@ref). +See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`diam`](@ref), +[`radius`](@ref) and [`midradius`](@ref). """ function mid(x::BareInterval{T}) where {T<:AbstractFloat} isempty_interval(x) && return convert(T, NaN) isentire_interval(x) && return zero(T) - - inf(x) == typemin(T) && return nextfloat(inf(x)) # cf. Section 12.12.8 - sup(x) == typemax(T) && return prevfloat(sup(x)) # cf. Section 12.12.8 - - midpoint = (inf(x) + sup(x)) / 2 + lo, hi = bounds(x) + lo == typemin(T) && return nextfloat(lo) # cf. Section 12.12.8 + hi == typemax(T) && return prevfloat(hi) # cf. Section 12.12.8 + midpoint = (lo + hi) / 2 isfinite(midpoint) && return _normalisezero(midpoint) # fallback in case of overflow # cannot be the default, since it does not pass several IEEE 1788-2015 tests for small floats - return _normalisezero(inf(x) / 2 + sup(x) / 2) + return _normalisezero(lo / 2 + hi / 2) end function mid(x::BareInterval{T}) where {T<:Rational} isempty_interval(x) && return throw(ArgumentError("cannot compute the midpoint of empty intervals; cannot return a `Rational` NaN")) isentire_interval(x) && return zero(T) - - inf(x) == typemin(T) && return nextfloat(inf(x)) # cf. Section 12.12.8 - sup(x) == typemax(T) && return prevfloat(sup(x)) # cf. Section 12.12.8 - - midpoint = (inf(x) + sup(x)) / 2 + lo, hi = bounds(x) + lo == typemin(T) && return nextfloat(lo) # cf. Section 12.12.8 + hi == typemax(T) && return prevfloat(hi) # cf. Section 12.12.8 + midpoint = (lo + hi) / 2 isfinite(midpoint) && return _normalisezero(midpoint) # fallback in case of overflow # cannot be the default, since it does not pass several IEEE 1788-2015 tests for small floats - return _normalisezero(inf(x) / 2 + sup(x) / 2) + return _normalisezero(lo / 2 + hi / 2) end function mid(x::Interval{T}) where {T<:AbstractFloat} @@ -124,60 +122,6 @@ end mid(x::Real) = mid(interval(x)) mid(x::Complex) = complex(mid(real(x)), mid(imag(x))) -""" - scaled_mid(x, α) - -Intermediate midpoint of the interval `x` at a relative position `α`. - -!!! note - For unbounded intervals in `:set_based` flavor, `scaled_mid(x, 0.5) != mid(x)`. - -See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), -[`diam`](@ref), [`radius`](@ref) and [`midradius`](@ref). -""" -function scaled_mid(x::BareInterval{T}, α::Real) where {T<:AbstractFloat} - 0 ≤ α ≤ 1 || return throw(DomainError(α, "scaled_mid only accepts a relative position α between 0 and 1")) - isempty_interval(x) && return convert(T, NaN) - - lo = (inf(x) == typemin(T) ? nextfloat(inf(x)) : inf(x)) - hi = (sup(x) == typemax(T) ? prevfloat(sup(x)) : sup(x)) - - β = convert(T, α) - - midpoint = β * (hi - lo) + lo - isfinite(midpoint) && return midpoint - # fallback in case of overflow - # cannot be the default, since it does not pass several IEEE 1788-2015 tests for small floats - return (1 - β) * lo + β * hi -end -function scaled_mid(x::BareInterval{T}, α::Real) where {T<:Rational} - 0 ≤ α ≤ 1 || return throw(DomainError(α, "scaled_mid only accepts a relative position α between 0 and 1")) - isempty_interval(x) && return throw(ArgumentError("cannot compute the scaled midpoint of empty intervals; cannot return a `Rational` NaN")) - - lo = (inf(x) == typemin(T) ? nextfloat(inf(x)) : inf(x)) - hi = (sup(x) == typemax(T) ? prevfloat(sup(x)) : sup(x)) - - β = convert(T, α) - - midpoint = β * (hi - lo) + lo - isfinite(midpoint) && return midpoint - # fallback in case of overflow - # cannot be the default, since it does not pass several IEEE 1788-2015 tests for small floats - return (1 - β) * lo + β * hi -end - -function scaled_mid(x::Interval{T}, α::Real) where {T<:AbstractFloat} - isnai(x) && return convert(T, NaN) - return scaled_mid(bareinterval(x), α) -end -function scaled_mid(x::Interval{<:Rational}, α::Real) - isnai(x) && return throw(ArgumentError("cannot compute the scaled midpoint of an NaI; cannot return a `Rational` NaN")) - return scaled_mid(bareinterval(x), α) -end - -scaled_mid(x::Real, α::Real) = scaled_mid(interval(x), α) -scaled_mid(x::Complex, α::Real) = complex(scaled_mid(real(x), α), scaled_mid(imag(x), α)) - """ diam(x) @@ -187,7 +131,7 @@ between its real and imaginary parts. Implement the `wid` function of the IEEE Standard 1788-2015 (Table 9.2). See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), -[`scaled_mid`](@ref), [`radius`](@ref) and [`midradius`](@ref). +[`radius`](@ref) and [`midradius`](@ref). """ function diam(x::BareInterval{T}) where {T<:AbstractFloat} isempty_interval(x) && return convert(T, NaN) @@ -220,7 +164,7 @@ parts. Implement the `rad` function of the IEEE Standard 1788-2015 (Table 9.2). See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), -[`scaled_mid`](@ref), [`diam`](@ref) and [`midradius`](@ref). +[`diam`](@ref) and [`midradius`](@ref). """ function radius(x::BareInterval) _, r = midradius(x) @@ -248,7 +192,7 @@ Function required by the IEEE Standard 1788-2015 in Section 10.5.9 for the set-based flavor. See also: [`inf`](@ref), [`sup`](@ref), [`bounds`](@ref), [`mid`](@ref), -[`scaled_mid`](@ref), [`mid`](@ref) and [`radius`](@ref). +[`mid`](@ref) and [`radius`](@ref). """ function midradius(x::BareInterval) m = mid(x) diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index 00c25689f..0a340f5da 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -35,7 +35,7 @@ include("interval_operations/boolean.jl") include("interval_operations/overlap.jl") export Overlap, overlap include("interval_operations/numeric.jl") - export inf, sup, bounds, mid, scaled_mid, diam, radius, midradius, mag, mig, dist + export inf, sup, bounds, mid, diam, radius, midradius, mag, mig, dist include("interval_operations/set_operations.jl") export intersect_interval, hull, interiordiff include("interval_operations/bisect.jl") diff --git a/test/interval_tests/consistency.jl b/test/interval_tests/consistency.jl index 1e1f6fada..50e9d0054 100644 --- a/test/interval_tests/consistency.jl +++ b/test/interval_tests/consistency.jl @@ -173,18 +173,11 @@ @test isnan(mid(emptyinterval())) end - @testset "scaled mid" begin - @test scaled_mid(interval(0, 1), 0.75) == 0.75 - @test scaled_mid(interval(1, Inf), 0.75) > 0 - @test scaled_mid(interval(-Inf, Inf), 0.75) > 0 - @test scaled_mid(interval(-Inf, Inf), 0.25) < 0 - end - @testset "mid with large floats" begin @test mid(interval(0.8e308, 1.2e308)) == 1e308 @test mid(interval(-1e308, 1e308)) == 0 - @test isfinite(scaled_mid(interval(0.8e308, 1.2e308), 0.75)) - @test isfinite(scaled_mid(interval(-1e308, 1e308), 0.75)) + @test isfinite(mid(interval(0.8e308, 1.2e308))) + @test isfinite(mid(interval(-1e308, 1e308))) end @testset "diam" begin From a390f0c9f29dc1e3b82445403578263ade22375c Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 20:19:42 +0100 Subject: [PATCH 36/54] Fix docstrings --- src/intervals/arithmetic/power.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index eb9766e60..6ae48d5c1 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -14,6 +14,8 @@ See also: [`pow`](@ref) and [`pown`](@ref). # Examples ```jldoctest +julia> setdisplay(:full); + julia> bareinterval(2, 3) ^ bareinterval(2) BareInterval{Float64}(4.0, 9.0) @@ -55,6 +57,8 @@ See also: [`pown`](@ref). # Examples ```jldoctest +julia> setdisplay(:full); + julia> pow(bareinterval(2, 3), bareinterval(2)) BareInterval{Float64}(4.0, 9.0) From 0acbb1a383fe085ee7163d5e5a88904f02da6889 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 20:20:41 +0100 Subject: [PATCH 37/54] Remove `SetRounding` --- Project.toml | 2 -- src/IntervalArithmetic.jl | 5 ----- src/intervals/arithmetic/basic.jl | 32 +------------------------------ 3 files changed, 1 insertion(+), 38 deletions(-) diff --git a/Project.toml b/Project.toml index 1c0352a00..0ece44bad 100644 --- a/Project.toml +++ b/Project.toml @@ -6,7 +6,6 @@ version = "0.21.2" [deps] CRlibm = "96374032-68de-5a5b-8d9e-752f78720389" RoundingEmulator = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" -SetRounding = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" [weakdeps] DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" @@ -18,5 +17,4 @@ IntervalArithmeticDiffRulesExt = "DiffRules" CRlibm = "0.7, 0.8, 1" DiffRules = "1" RoundingEmulator = "0.2" -SetRounding = "0.2" julia = "1.9" diff --git a/src/IntervalArithmetic.jl b/src/IntervalArithmetic.jl index d6b5780c3..ff00848b5 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -4,15 +4,10 @@ import CRlibm import RoundingEmulator import Base.MPFR -using SetRounding - function __init__() setrounding(BigFloat, RoundNearest) end -Base.setrounding(f::Function, ::Type{Rational{T}}, rounding_mode::RoundingMode) where {T<:Integer} = - setrounding(f, float(Rational{T}), rounding_mode) - # include("intervals/intervals.jl") diff --git a/src/intervals/arithmetic/basic.jl b/src/intervals/arithmetic/basic.jl index 30be4334b..86f1a6405 100644 --- a/src/intervals/arithmetic/basic.jl +++ b/src/intervals/arithmetic/basic.jl @@ -211,37 +211,7 @@ end Implement the `fma` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function Base.fma(x::BareInterval{T}, y::BareInterval{T}, z::BareInterval{T}) where {T<:NumTypes} - isempty_interval(x) && return x - isempty_interval(y) && return y - isempty_interval(z) && return z - - if isentire_interval(x) - isthinzero(y) && return z - return entireinterval(BareInterval{T}) - elseif isentire_interval(y) - isthinzero(x) && return z - return entireinterval(BareInterval{T}) - end - - lo = setrounding(T, RoundDown) do - lo1 = fma(inf(x), inf(y), inf(z)) - lo2 = fma(inf(x), sup(y), inf(z)) - lo3 = fma(sup(x), inf(y), inf(z)) - lo4 = fma(sup(x), sup(y), inf(z)) - return minimum(filter(x -> !isnan(x), (lo1, lo2, lo3, lo4))) - end - - hi = setrounding(T, RoundUp) do - hi1 = fma(inf(x), inf(y), sup(z)) - hi2 = fma(inf(x), sup(y), sup(z)) - hi3 = fma(sup(x), inf(y), sup(z)) - hi4 = fma(sup(x), sup(y), sup(z)) - return maximum(filter(x -> !isnan(x), (hi1, hi2, hi3, hi4))) - end - - return _unsafe_bareinterval(T, lo, hi) -end +Base.fma(x::BareInterval{T}, y::BareInterval{T}, z::BareInterval{T}) where {T<:NumTypes} = x * y + z Base.fma(x::BareInterval, y::BareInterval, z::BareInterval) = fma(promote(x, y, z)...) function Base.fma(x::Interval, y::Interval, z::Interval) From cb690a057e2be85090f49894bb48035b321226aa Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:34:50 +0100 Subject: [PATCH 38/54] Small fixes --- src/display.jl | 2 +- src/intervals/arithmetic/power.jl | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/display.jl b/src/display.jl index bcc9f6971..8f6d82e5b 100644 --- a/src/display.jl +++ b/src/display.jl @@ -149,7 +149,7 @@ function _str_repr(a::Interval{BigFloat}, format::Symbol) display_options.decorations || return string(str_interval, _subscriptify(precision(BigFloat))) return string(str_interval, _subscriptify(precision(BigFloat)), '_', decoration(a)) else - format === :full && return string("Interval{", T, "}(", str_interval, ", ", decoration(a), ", NG)") + format === :full && return string("Interval{", BigFloat, "}(", str_interval, ", ", decoration(a), ", NG)") if format === :midpoint && str_interval != "∅" str_interval = string('(', str_interval, ')') end diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 6ae48d5c1..14eb5289a 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -99,6 +99,11 @@ function pow(x::BareInterval{T}, y::BareInterval{S}) where {T<:NumTypes,S<:Ratio return BareInterval{R}(hull(_pow(x, inf(y)), _pow(x, sup(y)))) end +pow(n::Integer, y::BareInterval) = pow(n//one(n), y) +pow(x::BareInterval, n::Integer) = pow(x, n//one(n)) +pow(x::Real, y::Interval) = pow(bareinterval(x), y) +pow(x::Interval, y::Real) = pow(x, bareinterval(y)) + function pow(x::Interval, y::Interval) bx = bareinterval(x) by = bareinterval(y) @@ -111,8 +116,8 @@ end pow(n::Integer, y::Interval) = pow(n//one(n), y) pow(x::Interval, n::Integer) = pow(x, n//one(n)) -pow(x::Rational, y::Interval) = pow(convert(Interval{typeof(x)}, x), y) -pow(x::Interval, y::Rational) = pow(x, convert(Interval{typeof(y)}, y)) +pow(x::Real, y::Interval) = pow(interval(x), y) +pow(x::Interval, y::Real) = pow(x, interval(y)) # helper functions for power From 392729f0732f412e440bea11c10392b36572a7e7 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Tue, 12 Dec 2023 00:32:23 +0100 Subject: [PATCH 39/54] Implement a configuration mechanism for `^` --- src/intervals/arithmetic/power.jl | 57 ++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 14eb5289a..848974200 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -2,12 +2,30 @@ # of the IEEE Standard 1788-2015 and required for set-based flavor in Section # 10.5.3 +# power mechanism used in `^` + """ - ^(x, y) + PowerMode + +Power mode type for `^`. + +Available mode types: +- `:fast`: `x ^ y` is semantically equivalent to `fastpow(x, y)`. +- `:slow`: `x ^ y` is semantically equivalent to `pow(x, y)`, unless +`isthininteger(y)` is true in which case it is semantically equivalent to +`pown(x, sup(y))`. +""" +struct PowerMode{T} end + +power_mode() = PowerMode{:slow}() + +""" + ^(x::BareInterval, y::BareInterval) + ^(x::Interval, y::Interval) Compute the power of the positive real part of `x` by `y`. This function is not -in the IEEE Standard 1788-2015. This is equivalent to `pow(x, y)`, unless -`isthininteger(y)` is true in which case it is equivalent to `pown(x, sup(y))`. +in the IEEE Standard 1788-2015. Its behaviour depend on the current +[`PowerMode`](@ref). See also: [`pow`](@ref) and [`pown`](@ref). @@ -27,13 +45,13 @@ Interval{Float64}(-Inf, Inf, trv) ``` """ function Base.:^(x::BareInterval, y::BareInterval) - isthininteger(y) && return pown(x, Integer(sup(y))) - return pow(x, y) + isthininteger(y) && return _select_pown(power_mode(), x, Integer(sup(y))) + return _select_pow(power_mode(), x, y) end function Base.:^(x::Interval, y::Interval) - isthininteger(y) && return pown(x, Integer(sup(y))) - return pow(x, y) + isthininteger(y) && return _select_pown(power_mode(), x, Integer(sup(y))) + return _select_pow(power_mode(), x, y) end Base.:^(n::Integer, y::Interval) = ^(n//one(n), y) @@ -44,6 +62,13 @@ Base.:^(x::Interval, y::Rational) = ^(x, convert(Interval{typeof(y)}, y)) # overwrite behaviour for small integer powers from https://github.com/JuliaLang/julia/pull/24240 Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n +# helper functions for power + +_select_pow(::PowerMode{:fast}, x, y) = fastpow(x, y) +_select_pown(::PowerMode{:fast}, x, y) = fastpow(x, y) +_select_pow(::PowerMode{:slow}, x, y) = pow(x, y) +_select_pown(::PowerMode{:slow}, x, y) = pown(x, y) + """ pow(x, y) @@ -101,8 +126,8 @@ end pow(n::Integer, y::BareInterval) = pow(n//one(n), y) pow(x::BareInterval, n::Integer) = pow(x, n//one(n)) -pow(x::Real, y::Interval) = pow(bareinterval(x), y) -pow(x::Interval, y::Real) = pow(x, bareinterval(y)) +pow(x::Real, y::BareInterval) = pow(bareinterval(x), y) +pow(x::BareInterval, y::Real) = pow(x, bareinterval(y)) function pow(x::Interval, y::Interval) bx = bareinterval(x) @@ -277,8 +302,6 @@ function fastpow(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} end end -fastpow(x::BareInterval, y::BareInterval) = fastpow(promote(x, y)...) - function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} n < 0 && return inv(fastpow(x, -n)) domain = _unsafe_bareinterval(T, zero(T), typemax(T)) @@ -292,8 +315,8 @@ function fastpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} end end -fastpow(x::BareInterval{T}, y::S) where {T<:NumTypes,S<:Real} = - fastpow(x, bareinterval(promote_numtype(T, S), y)) +fastpow(x::BareInterval, y::BareInterval) = fastpow(promote(x, y)...) +fastpow(x::BareInterval, y::Real) = fastpow(x, bareinterval(y)) function fastpow(x::Interval, y::Interval) bx = bareinterval(x) @@ -305,13 +328,7 @@ function fastpow(x::Interval, y::Interval) return _unsafe_interval(r, d, t) end -function fastpow(x::Interval, y::Real) - bx = bareinterval(x) - r = fastpow(bx, y) - d = min(decoration(x), decoration(r)) - d = min(d, ifelse((inf(bx) > 0) | ((inf(bx) == 0) & (y > 0)), d, trv)) - return _unsafe_interval(r, d, isguaranteed(x)) -end +fastpow(x::Interval, y::Real) = fastpow(x, interval(y)) # helper function for fast power From 4f147c8e6078473cc223503b4d4974e833745db1 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:58:57 +0100 Subject: [PATCH 40/54] Remove support for `IntervalRounding{:fast}` --- src/intervals/interval_operations/bisect.jl | 2 +- src/intervals/rounding.jl | 66 ++++++++++----------- test/interval_tests/rounding.jl | 8 +-- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/intervals/interval_operations/bisect.jl b/src/intervals/interval_operations/bisect.jl index add255a51..114d1e263 100644 --- a/src/intervals/interval_operations/bisect.jl +++ b/src/intervals/interval_operations/bisect.jl @@ -9,7 +9,7 @@ Split the `i`-th component of a vector `x` at a relative position `α`, where `α = 0.5` corresponds to the midpoint. """ function bisect(x::BareInterval{T}, α::Real=0.5) where {T<:NumTypes} - 0 ≤ α ≤ 1 || return throw(DomainError(α, "bisect only accepts a relative position α between 0 and 1")) + 0 ≤ α ≤ 1 || return throw(DomainError(α, "`bisect` only accepts a relative position between 0 and 1")) isatomic(x) && return (x, emptyinterval(BareInterval{T})) m = _relpoint(x, α) return (_unsafe_bareinterval(T, inf(x), m), _unsafe_bareinterval(T, m, sup(x))) diff --git a/src/intervals/rounding.jl b/src/intervals/rounding.jl index 6dff4a44c..6ab666829 100644 --- a/src/intervals/rounding.jl +++ b/src/intervals/rounding.jl @@ -26,7 +26,7 @@ _bigequiv(x::BigFloat) = x Interval rounding type. Available rounding types: -- `:fast`: rounding via `prevfloat` and `nextfloat`. +- `:fast` (unsupported): rounding via `prevfloat` and `nextfloat`. - `:tight`: rounding via [RoundingEmulator.jl](https://github.com/matsueushi/RoundingEmulator.jl). - `:slow`: rounding via `setrounding`. - `:none`: no rounding (non-rigorous numerics). @@ -46,10 +46,10 @@ for (f, fname) ∈ ((:+, :add), (:-, :sub), (:*, :mul), (:/, :div)) $g(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = $g(IntervalRounding{:slow}(), x, y, r) - $g(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = - prevfloat($f(x, y)) - $g(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = - nextfloat($f(x, y)) + # $g(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = + # prevfloat($f(x, y)) + # $g(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = + # nextfloat($f(x, y)) $g(::IntervalRounding{:tight}, x::T, y::T, ::RoundingMode{:Down}) where {T<:Union{Float32,Float64}} = RoundingEmulator.$(Symbol(fname, :_down))(x, y) $g(::IntervalRounding{:tight}, x::T, y::T, ::RoundingMode{:Up}) where {T<:Union{Float32,Float64}} = @@ -74,10 +74,10 @@ _pow_round(x::Rational, n::Integer, ::RoundingMode) = ^(x, n) # exact operation _pow_round(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = _pow_round(IntervalRounding{:slow}(), x, y, r) -_pow_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = - prevfloat(^(x, y)) -_pow_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = - nextfloat(^(x, y)) +# _pow_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = +# prevfloat(^(x, y)) +# _pow_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = +# nextfloat(^(x, y)) function _pow_round(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} bigx = _bigequiv(x) bigy = _bigequiv(y) @@ -94,10 +94,10 @@ _inv_round(x::Rational, ::RoundingMode) = inv(x) # exact operation _inv_round(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = _inv_round(IntervalRounding{:slow}(), x, r) -_inv_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = - prevfloat(inv(x)) -_inv_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = - nextfloat(inv(x)) +# _inv_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = +# prevfloat(inv(x)) +# _inv_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = +# nextfloat(inv(x)) _inv_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Down}) = RoundingEmulator.div_down(one(x), x) _inv_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Up}) = @@ -116,10 +116,10 @@ _sqrt_round(x::NumTypes, r::RoundingMode) = _sqrt_round(interval_rounding(), flo _sqrt_round(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = _sqrt_round(IntervalRounding{:slow}(), x, r) -_sqrt_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = - prevfloat(sqrt(x)) -_sqrt_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = - nextfloat(sqrt(x)) +# _sqrt_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = +# prevfloat(sqrt(x)) +# _sqrt_round(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = +# nextfloat(sqrt(x)) _sqrt_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Down}) = RoundingEmulator.sqrt_down(x) _sqrt_round(::IntervalRounding{:tight}, x::Union{Float32,Float64}, ::RoundingMode{:Up}) = @@ -138,10 +138,10 @@ _rootn_round(x::NumTypes, n::Integer, r::RoundingMode) = _rootn_round(interval_r _rootn_round(::IntervalRounding, x::AbstractFloat, n::Integer, r::RoundingMode) = _rootn_round(IntervalRounding{:slow}(), x, n, r) -_rootn_round(::IntervalRounding{:fast}, x::AbstractFloat, n::Integer, ::RoundingMode{:Down}) = - prevfloat(x^(1//n)) -_rootn_round(::IntervalRounding{:fast}, x::AbstractFloat, n::Integer, ::RoundingMode{:Up}) = - nextfloat(x^(1//n)) +# _rootn_round(::IntervalRounding{:fast}, x::AbstractFloat, n::Integer, ::RoundingMode{:Down}) = +# prevfloat(x^(1//n)) +# _rootn_round(::IntervalRounding{:fast}, x::AbstractFloat, n::Integer, ::RoundingMode{:Up}) = +# nextfloat(x^(1//n)) function _rootn_round(::IntervalRounding{:slow}, x::AbstractFloat, n::Integer, ::RoundingMode{:Down}) r = BigFloat() ccall((:mpfr_rootn_ui, :libmpfr), Int32, (Ref{BigFloat}, Ref{BigFloat}, Culong, MPFR.MPFRRoundingMode), r, x, convert(Culong, n), MPFR.MPFRRoundDown) @@ -160,10 +160,10 @@ _atan_round(x::T, y::T, r::RoundingMode) where {T<:NumTypes} = _atan_round(inter _atan_round(::IntervalRounding, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} = _atan_round(IntervalRounding{:slow}(), x, y, r) -_atan_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = - prevfloat(atan(x, y)) -_atan_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = - nextfloat(atan(x, y)) +# _atan_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Down}) where {T<:AbstractFloat} = +# prevfloat(atan(x, y)) +# _atan_round(::IntervalRounding{:fast}, x::T, y::T, ::RoundingMode{:Up}) where {T<:AbstractFloat} = +# nextfloat(atan(x, y)) function _atan_round(::IntervalRounding{:slow}, x::T, y::T, r::RoundingMode) where {T<:AbstractFloat} bigx = _bigequiv(x) bigy = _bigequiv(y) @@ -182,10 +182,10 @@ for f ∈ [:cbrt, :exp2, :exp10, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, : $g(x::NumTypes, r::RoundingMode) = $g(interval_rounding(), float(x), r) # rationals are converted to floats $g(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = $g(IntervalRounding{:slow}(), x, r) - $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = - prevfloat($f(x)) - $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = - nextfloat($f(x)) + # $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = + # prevfloat($f(x)) + # $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = + # nextfloat($f(x)) function $g(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) bigx = _bigequiv(x) return setrounding(BigFloat, r) do @@ -206,10 +206,10 @@ for f ∈ CRlibm.functions $g(x::NumTypes, r::RoundingMode) = $g(interval_rounding(), float(x), r) # rationals are converted to floats $g(::IntervalRounding, x::AbstractFloat, r::RoundingMode) = $g(IntervalRounding{:slow}(), x, r) - $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = - prevfloat($f(x)) - $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = - nextfloat($f(x)) + # $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Down}) = + # prevfloat($f(x)) + # $g(::IntervalRounding{:fast}, x::AbstractFloat, ::RoundingMode{:Up}) = + # nextfloat($f(x)) $g(::IntervalRounding{:slow}, x::AbstractFloat, r::RoundingMode) = CRlibm.$f(x, r) $g(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = $f(x) end diff --git a/test/interval_tests/rounding.jl b/test/interval_tests/rounding.jl index b6ce97856..065ee8654 100644 --- a/test/interval_tests/rounding.jl +++ b/test/interval_tests/rounding.jl @@ -1,9 +1,9 @@ x = interval(0.5) -@testset "IntervalRounding{:fast}" begin - IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:fast}() - @test isequal_interval(sin(x), interval(0.47942553860420295, 0.47942553860420306)) -end +# @testset "IntervalRounding{:fast}" begin +# IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:fast}() +# @test isequal_interval(sin(x), interval(0.47942553860420295, 0.47942553860420306)) +# end @testset "IntervalRounding{:tight}" begin IntervalArithmetic.interval_rounding() = IntervalArithmetic.IntervalRounding{:tight}() From 091d3e8fad7a728d4a3399b8af45cf53ffba95ee Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Tue, 12 Dec 2023 15:20:23 +0100 Subject: [PATCH 41/54] Use `fastpow` as the default for `^` --- src/intervals/arithmetic/power.jl | 4 +- src/intervals/{flavors.jl => flavor.jl} | 0 src/intervals/intervals.jl | 4 +- test/ITF1788_tests/atan2.jl | 79 + test/ITF1788_tests/c-xsc.jl | 351 + test/ITF1788_tests/fi_lib.jl | 1745 ++++ test/ITF1788_tests/ieee1788-constructors.jl | 113 + test/ITF1788_tests/ieee1788-exceptions.jl | 11 + test/ITF1788_tests/libieeep1788_bool.jl | 867 ++ test/ITF1788_tests/libieeep1788_cancel.jl | 499 ++ test/ITF1788_tests/libieeep1788_class.jl | 451 + test/ITF1788_tests/libieeep1788_elem.jl | 7955 ++++++++++++++++++ test/ITF1788_tests/libieeep1788_num.jl | 431 + test/ITF1788_tests/libieeep1788_overlap.jl | 161 + test/ITF1788_tests/libieeep1788_rec_bool.jl | 301 + test/ITF1788_tests/libieeep1788_reduction.jl | 45 + test/ITF1788_tests/libieeep1788_set.jl | 55 + test/ITF1788_tests/mpfi.jl | 2991 +++++++ test/generate_ITF1788.jl | 20 +- test/interval_tests/consistency.jl | 6 +- test/interval_tests/numeric.jl | 46 +- test/interval_tests/power.jl | 110 +- 22 files changed, 16151 insertions(+), 94 deletions(-) rename src/intervals/{flavors.jl => flavor.jl} (100%) create mode 100644 test/ITF1788_tests/atan2.jl create mode 100644 test/ITF1788_tests/c-xsc.jl create mode 100644 test/ITF1788_tests/fi_lib.jl create mode 100644 test/ITF1788_tests/ieee1788-constructors.jl create mode 100644 test/ITF1788_tests/ieee1788-exceptions.jl create mode 100644 test/ITF1788_tests/libieeep1788_bool.jl create mode 100644 test/ITF1788_tests/libieeep1788_cancel.jl create mode 100644 test/ITF1788_tests/libieeep1788_class.jl create mode 100644 test/ITF1788_tests/libieeep1788_elem.jl create mode 100644 test/ITF1788_tests/libieeep1788_num.jl create mode 100644 test/ITF1788_tests/libieeep1788_overlap.jl create mode 100644 test/ITF1788_tests/libieeep1788_rec_bool.jl create mode 100644 test/ITF1788_tests/libieeep1788_reduction.jl create mode 100644 test/ITF1788_tests/libieeep1788_set.jl create mode 100644 test/ITF1788_tests/mpfi.jl diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 848974200..562c054ac 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -10,14 +10,14 @@ Power mode type for `^`. Available mode types: -- `:fast`: `x ^ y` is semantically equivalent to `fastpow(x, y)`. +- `:fast` (default): `x ^ y` is semantically equivalent to `fastpow(x, y)`. - `:slow`: `x ^ y` is semantically equivalent to `pow(x, y)`, unless `isthininteger(y)` is true in which case it is semantically equivalent to `pown(x, sup(y))`. """ struct PowerMode{T} end -power_mode() = PowerMode{:slow}() +power_mode() = PowerMode{:fast}() """ ^(x::BareInterval, y::BareInterval) diff --git a/src/intervals/flavors.jl b/src/intervals/flavor.jl similarity index 100% rename from src/intervals/flavors.jl rename to src/intervals/flavor.jl diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index 0a340f5da..5491d4d17 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -8,8 +8,8 @@ include("real_interface.jl") # Rounding include("rounding.jl") -# Flavors -include("flavors.jl") +# Flavor +include("flavor.jl") # Arithmetic include("arithmetic/absmax.jl") diff --git a/test/ITF1788_tests/atan2.jl b/test/ITF1788_tests/atan2.jl new file mode 100644 index 000000000..8bf1fd93c --- /dev/null +++ b/test/ITF1788_tests/atan2.jl @@ -0,0 +1,79 @@ +@testset "minimal.atan2_test" begin + + @test atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0x1.921FB54442D18p1, 0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, Inf)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, Inf), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p0) + + @test atan(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19p0, -0x1.921FB54442D18p0) + + @test atan(bareinterval(-0x1p-1022, 0.0), bareinterval(-0x1p-1022, -0x1p-1022)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === bareinterval(0x1.2D97C7F3321D2p1, 0x1.2D97C7F3321D3p1) + + @test atan(bareinterval(1.0, 1.0), bareinterval(1.0, 1.0)) === bareinterval(0x1.921FB54442D18p-1, 0x1.921FB54442D19p-1) + + @test atan(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === bareinterval(-0x1.921FB54442D19p-1, -0x1.921FB54442D18p-1) + + @test atan(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === bareinterval(-0x1.2D97C7F3321D3p1, -0x1.2D97C7F3321D2p1) + + @test atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, -0x1p-1022)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(-0x1p-1022, 0x1p-1022), bareinterval(0x1p-1022, 0x1p-1022)) === bareinterval(-0x1.921FB54442D19p-1, +0x1.921FB54442D19p-1) + + @test atan(bareinterval(-0x1p-1022, -0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)) === bareinterval(-0x1.2D97C7F3321D3p1, -0x1.921FB54442D18p-1) + + @test atan(bareinterval(0x1p-1022, 0x1p-1022), bareinterval(-0x1p-1022, 0x1p-1022)) === bareinterval(0x1.921FB54442D18p-1, 0x1.2D97C7F3321D3p1) + + @test atan(bareinterval(-2.0, 2.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 2.0), bareinterval(-3.0, -1.0)) === bareinterval(0x1.0468A8ACE4DF6p1, 0x1.921FB54442D19p1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(-3.0, -1.0)) === bareinterval(0x1.E47DF3D0DD4Dp0, 0x1.68F095FDF593Dp1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.56C6E7397F5AFp1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(-2.0, 2.0)) === bareinterval(0x1.DAC670561BB4Fp-2, 0x1.56C6E7397F5AFp1) + + @test atan(bareinterval(1.0, 3.0), bareinterval(0.0, 2.0)) === bareinterval(0x1.DAC670561BB4Fp-2, 0x1.921FB54442D19p0) + + @test atan(bareinterval(1.0, 3.0), bareinterval(1.0, 3.0)) === bareinterval(0x1.4978FA3269EE1p-2, 0x1.3FC176B7A856p0) + + @test atan(bareinterval(0.0, 2.0), bareinterval(1.0, 3.0)) === bareinterval(0x0p0, 0x1.1B6E192EBBE45p0) + + @test atan(bareinterval(-2.0, 2.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.1B6E192EBBE45p0, +0x1.1B6E192EBBE45p0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.1B6E192EBBE45p0, 0x0p0) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(1.0, 3.0)) === bareinterval(-0x1.3FC176B7A856p0, -0x1.4978FA3269EE1p-2) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(0.0, 2.0)) === bareinterval(-0x1.921FB54442D19p0, -0x1.DAC670561BB4Fp-2) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-0x1.56C6E7397F5AFp1, -0x1.DAC670561BB4Fp-2) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.56C6E7397F5AFp1, -0x1.921FB54442D18p0) + + @test atan(bareinterval(-3.0, -1.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.68F095FDF593Dp1, -0x1.E47DF3D0DD4Dp0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-3.0, -1.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(-5.0, 0.0), bareinterval(-5.0, 0.0)) === bareinterval(-0x1.921FB54442D19p1, +0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 5.0), bareinterval(-5.0, 0.0)) === bareinterval(0x1.921FB54442D18p0, 0x1.921FB54442D19p1) + + @test atan(bareinterval(0.0, 5.0), bareinterval(0.0, 5.0)) === bareinterval(0x0p0, 0x1.921FB54442D19p0) + + @test atan(bareinterval(-5.0, 0.0), bareinterval(0.0, 5.0)) === bareinterval(-0x1.921FB54442D19p0, 0x0p0) + +end diff --git a/test/ITF1788_tests/c-xsc.jl b/test/ITF1788_tests/c-xsc.jl new file mode 100644 index 000000000..937d0547d --- /dev/null +++ b/test/ITF1788_tests/c-xsc.jl @@ -0,0 +1,351 @@ +@testset "cxsc.intervaladdsub" begin + + @test +(bareinterval(10.0, 20.0), bareinterval(13.0, 17.0)) === bareinterval(23.0, 37.0) + + @test +(bareinterval(13.0, 17.0), bareinterval(10.0, 20.0)) === bareinterval(23.0, 37.0) + + @test -(bareinterval(10.0, 20.0), bareinterval(13.0, 16.0)) === bareinterval(-6.0, 7.0) + + @test -(bareinterval(13.0, 16.0), bareinterval(10.0, 20.0)) === bareinterval(-7.0, 6.0) + + @test -(bareinterval(10.0, 20.0)) === bareinterval(-20.0, -10.0) + + @test +(bareinterval(10.0, 20.0)) === bareinterval(10.0, 20.0) + +end + +@testset "cxsc.intervalmuldiv" begin + + @test *(bareinterval(1.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(3.0, 8.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(-4.0, 8.0) + + @test *(bareinterval(-2.0, 1.0), bareinterval(3.0, 4.0)) === bareinterval(-8.0, 4.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(3.0, 4.0)) === bareinterval(-8.0, -3.0) + + @test *(bareinterval(1.0, 2.0), bareinterval(-3.0, 4.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(-3.0, 4.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(-2.0, 1.0), bareinterval(-3.0, 4.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(-3.0, 4.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(1.0, 2.0), bareinterval(-4.0, 3.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(-4.0, 3.0)) === bareinterval(-8.0, 6.0) + + @test *(bareinterval(-2.0, 1.0), bareinterval(-4.0, 3.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(-4.0, 3.0)) === bareinterval(-6.0, 8.0) + + @test *(bareinterval(1.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-8.0, -3.0) + + @test *(bareinterval(-1.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-8.0, 4.0) + + @test *(bareinterval(-2.0, -1.0), bareinterval(-4.0, -3.0)) === bareinterval(3.0, 8.0) + + @test /(bareinterval(1.0, 2.0), bareinterval(4.0, 8.0)) === bareinterval(0.125, 0.5) + + @test /(bareinterval(-1.0, 2.0), bareinterval(4.0, 8.0)) === bareinterval(-0.25, 0.5) + + @test /(bareinterval(-2.0, 1.0), bareinterval(4.0, 8.0)) === bareinterval(-0.5, 0.25) + + @test /(bareinterval(-2.0, -1.0), bareinterval(4.0, 8.0)) === bareinterval(-0.5, -0.125) + + @test /(bareinterval(1.0, 2.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-1.0, 2.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, 1.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, -1.0), bareinterval(-4.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(1.0, 2.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-1.0, 2.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, 1.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0, -1.0), bareinterval(-8.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(1.0, 2.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.5, -0.125) + + @test /(bareinterval(-1.0, 2.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.5, 0.25) + + @test /(bareinterval(-2.0, 1.0), bareinterval(-8.0, -4.0)) === bareinterval(-0.25, 0.5) + + @test /(bareinterval(-2.0, -1.0), bareinterval(-8.0, -4.0)) === bareinterval(0.125, 0.5) + +end + +@testset "cxsc.intervalsetops" begin + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)) === bareinterval(-4.0, 4.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 4.0) + + @test hull(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -3.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -1.0)) === bareinterval(-2.0, -1.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, 4.0)) === bareinterval(-2.0, 2.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 4.0)) === bareinterval(1.0, 2.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 4.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-4.0, -3.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-4.0, -1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, -1.0) + + @test intersect_interval(bareinterval(-4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test intersect_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test intersect_interval(bareinterval(1.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(1.0, 2.0) + + @test intersect_interval(bareinterval(3.0, 4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + +end + +@testset "cxsc.intervalmixsetops" begin + + @test hull(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)) === bareinterval(-2.0, 4.0) + + @test hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)) === bareinterval(-4.0, 2.0) + + @test hull(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)) === bareinterval(-2.0, 4.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(-4.0, -4.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(1.0, 1.0)) === bareinterval(1.0, 1.0) + + @test intersect_interval(bareinterval(-2.0, 2.0), bareinterval(4.0, 4.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-4.0, -4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(1.0, 1.0), bareinterval(-2.0, 2.0)) === bareinterval(1.0, 1.0) + + @test intersect_interval(bareinterval(4.0, 4.0), bareinterval(-2.0, 2.0)) === emptyinterval(BareInterval{Float64}) + +end + +@testset "cxsc.scalarmixsetops" begin + + @test hull(bareinterval(-2.0, -2.0), bareinterval(-4.0, -4.0)) === bareinterval(-4.0, -2.0) + + @test hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, -2.0) + + @test hull(bareinterval(-2.0, -2.0), bareinterval(2.0, 2.0)) === bareinterval(-2.0, 2.0) + + @test hull(bareinterval(-4.0, -4.0), bareinterval(-2.0, -2.0)) === bareinterval(-4.0, -2.0) + + @test hull(bareinterval(-2.0, -2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, -2.0) + + @test hull(bareinterval(2.0, 2.0), bareinterval(-2.0, -2.0)) === bareinterval(-2.0, 2.0) + +end + +@testset "cxsc.intervalsetcompops" begin + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === true + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === false + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test isinterior(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === true + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === true + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === true + + @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test issubset_interval(bareinterval(-1.0, 1.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 1.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(-2.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test issubset_interval(bareinterval(-3.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-1.0, 2.0)) === true + + @test isequal_interval(bareinterval(-2.0, 1.0), bareinterval(-3.0, 2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 1.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-1.0, 2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 1.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, 3.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-3.0, 2.0)) === false + +end + +@testset "cxsc.intervalscalarsetcompops" begin + + @test isinterior(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false + + @test isinterior(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false + + @test isinterior(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === false + + @test isinterior(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) === false + + @test isinterior(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) === true + + @test isinterior(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test isinterior(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === false + + @test isinterior(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === false + + @test issubset_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false + + @test issubset_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false + + @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false + + @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true + + @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-1.0, 2.0)) === false + + @test issubset_interval(bareinterval(-2.0, -2.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(0.0, 0.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(2.0, 2.0), bareinterval(-2.0, 2.0)) === true + + @test issubset_interval(bareinterval(3.0, 3.0), bareinterval(-2.0, 2.0)) === false + + @test issubset_interval(bareinterval(1.0, 1.0), bareinterval(-1.0, -1.0)) === false + + @test issubset_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true + + @test isequal_interval(bareinterval(-1.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(-2.0, -2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(0.0, 0.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(2.0, 2.0)) === false + + @test isequal_interval(bareinterval(-2.0, 2.0), bareinterval(3.0, 3.0)) === false + + @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(1.0, 1.0)) === false + + @test isequal_interval(bareinterval(-1.0, -1.0), bareinterval(-1.0, -1.0)) === true + +end + +@testset "cxsc.intervalstdfunc" begin + + @test pown(bareinterval(11.0, 11.0), 2) === bareinterval(121.0, 121.0) + + @test pown(bareinterval(0.0, 0.0), 2) === bareinterval(0.0, 0.0) + + @test pown(bareinterval(-9.0, -9.0), 2) === bareinterval(81.0, 81.0) + + @test sqrt(bareinterval(121.0, 121.0)) === bareinterval(11.0, 11.0) + + @test sqrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sqrt(bareinterval(81.0, 81.0)) === bareinterval(9.0, 9.0) + + @test rootn(bareinterval(27.0, 27.0), 3) === bareinterval(3.0, 3.0) + + @test rootn(bareinterval(0.0, 0.0), 4) === bareinterval(0.0, 0.0) + + @test rootn(bareinterval(1024.0, 1024.0), 10) === bareinterval(2.0, 2.0) + + @test pow(bareinterval(2.0, 2.0), bareinterval(2.0, 2.0)) === bareinterval(4.0, 4.0) + + @test pow(bareinterval(4.0, 4.0), bareinterval(5.0, 5.0)) === bareinterval(1024.0, 1024.0) + + @test pow(bareinterval(2.0, 2.0), bareinterval(3.0, 3.0)) === bareinterval(8.0, 8.0) + +end diff --git a/test/ITF1788_tests/fi_lib.jl b/test/ITF1788_tests/fi_lib.jl new file mode 100644 index 000000000..dbc043f5e --- /dev/null +++ b/test/ITF1788_tests/fi_lib.jl @@ -0,0 +1,1745 @@ +@testset "FI_LIB.addii" begin + + @test +(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x3.0000000000000P+0, 0x3.0000000000000P+0) + + @test +(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, -0x3.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test +(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test +(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x3.F400000000000P-1064, 0x3.F400000000000P-1064) + + @test +(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test +(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(-0x3.F400000000000P-1064, -0x3.F400000000000P-1064) + + @test +(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test +(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020) + + @test +(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020) + + @test +(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) + + @test +(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0) + + @test +(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x6.0000000000000P+0) + + @test +(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0) + + @test +(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0) + + @test +(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test +(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + +end + +@testset "FI_LIB.subii" begin + + @test -(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test -(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0) + + @test -(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x2.0000000000000P+0, -0x2.0000000000000P+0) + + @test -(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4) + + @test -(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test -(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF0P+1020, 0xF.FFFFFFFFFFFF8P+1020) + + @test -(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF0P+1020) + + @test -(bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x2.0000000000000P+0, 0x0.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0) + + @test -(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, -0x1.0000000000000P+0) + + @test -(bareinterval(0x3.0000000000000P+0, 0x4.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x3.0000000000000P+0) + + @test -(bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0) + + @test -(bareinterval(-0x4.0000000000000P+0, -0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x4.0000000000000P+0, -0x2.0000000000000P+0) + + @test -(bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0), bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0)) === bareinterval(-0xA.0000000000000P+0, -0x8.0000000000000P+0) + + @test -(bareinterval(0x4.0000000000000P+0, 0x5.0000000000000P+0), bareinterval(-0x5.0000000000000P+0, -0x4.0000000000000P+0)) === bareinterval(0x8.0000000000000P+0, 0xA.0000000000000P+0) + +end + +@testset "FI_LIB.mulii" begin + + @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test *(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)) === bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020) + + @test *(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x8.0000000000000P-4, 0x8.0000000000000P-4)) === bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, -0x4.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x4.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0xF.0000000000000P+0, +0x1.4000000000000P+4) + + @test *(bareinterval(-0x5.0000000000000P+0, +0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, +0x8.0000000000000P+0)) === bareinterval(-0x2.8000000000000P+4, +0x1.0000000000000P+4) + + @test *(bareinterval(-0x2.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0x1.4000000000000P+4, +0xF.0000000000000P+0) + + @test *(bareinterval(-0x4.0000000000000P+0, +0x5.0000000000000P+0), bareinterval(-0x4.0000000000000P+0, +0x3.0000000000000P+0)) === bareinterval(-0x1.4000000000000P+4, +0x1.0000000000000P+4) + + @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0)) === bareinterval(-0x3.0000000000000P+0, +0x3.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x9.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x9.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x0.0000000000000P+0, 0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(-0x6.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(-0x4.0000000000000P-1076, 0x0.0000000000000P+0) + + @test *(bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test *(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + +end + +@testset "FI_LIB.divii" begin + + @test /(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test /(bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0) + + @test /(bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test /(bareinterval(0xF.FFFFFFFFFFFF8P+1020, 0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x7.FFFFFFFFFFFFCP+1020, 0x7.FFFFFFFFFFFFCP+1020) + + @test /(bareinterval(-0xF.FFFFFFFFFFFF8P+1020, -0xF.FFFFFFFFFFFF8P+1020), bareinterval(0x2.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(-0x7.FFFFFFFFFFFFCP+1020, -0x7.FFFFFFFFFFFFCP+1020) + + @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0) + + @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(0x1.0000000000000P+0, 0x1.0000000000000P+0)) === bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064) + + @test /(bareinterval(0x1.FA00000000000P-1064, 0x1.FA00000000000P-1064), bareinterval(-0x1.0000000000000P+0, -0x1.0000000000000P+0)) === bareinterval(-0x1.FA00000000000P-1064, -0x1.FA00000000000P-1064) + + @test /(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0) + + @test /(bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4) + + @test /(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4) + + @test /(bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x8.0000000000000P-4, +0x8.0000000000000P-4) + + @test /(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, -0xA.AAAAAAAAAAAA8P-4) + + @test /(bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0xA.AAAAAAAAAAAA8P-4, 0x1.8000000000000P+0) + + @test /(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0) + + @test /(bareinterval(-0x3.0000000000000P+0, 0x0.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(-0x3.0000000000000P+0, -0x2.0000000000000P+0)) === bareinterval(-0x1.8000000000000P+0, 0x0.0000000000000P+0) + + @test /(bareinterval(0x0.0000000000000P+0, 0x3.0000000000000P+0), bareinterval(0x2.0000000000000P+0, 0x3.0000000000000P+0)) === bareinterval(0x0.0000000000000P+0, 0x1.8000000000000P+0) + +end + +@testset "FI_LIB.unary_functions" begin + + @test exp(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(0x0.0000000000000P+0, 0x2.BA43457B11D98P-4) + + @test exp(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA38P-4) + + @test exp(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(0x0.0000000000000P+0, 0x1.5D7A2F6655DFCP-848) + + @test exp(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(0x9.34C0766401B20P-472, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x2.B7E151628AED2P+0, 0x7.63992E35376B8P+0) + + @test exp(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(0x5.E2D58D8B3BCDCP-4, 0x7.63992E35376B8P+0) + + @test exp(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x1.B993FE00D5376P-8, 0xC.BED8666758578P-8) + + @test exp(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(0x2.2A555477F0396P-4, 0x1.D27660B11A9F0P+0) + + @test exp(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test exp(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)) === bareinterval(0x1.0000000000000P+0, 0x2.B7E151628AED4P+0) + + @test exp(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) + + @test exp(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x7.6322F8540CFB4P+0) + + @test exp(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)) === bareinterval(0x2.2A577ECE59DC6P-4, 0x1.0000000000000P+0) + + @test exp(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)) === bareinterval(0x2.2A55549A958EAP-4, 0x1.0000000000001P+0) + + @test exp2(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(0x0.0000000000000P+0, 0x4.B1AC6F8470484P-4) + + @test exp2(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFC00P-4) + + @test exp2(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(0x0.0000000000000P+0, 0x1.6FB78C613E5ECP-588) + + @test exp2(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(0x8.4EB038B9B8508P-328, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp2(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp2(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x2.0000000000000P+0, 0x4.0000000000000P+0) + + @test exp2(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(0x8.0000000000000P-4, 0x4.0000000000000P+0) + + @test exp2(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(0x8.0000000000000P-8, 0x2.0000000000000P-4) + + @test exp2(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(0x4.0000000000000P-4, 0x1.8406003B2AE5DP+0) + + @test exp2(bareinterval(0x4.4400000000000P-1068, 0x4.48CD100000000P-1052)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test exp2(bareinterval(-0x4.8D15088880000P-1040, +0x4.8D11554000000P-1048)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) + + @test exp2(bareinterval(0xD.0888D11000000P-1044, 0x1.000003443AAAAP+0)) === bareinterval(0x1.0000000000000P+0, 0x2.0000048742860P+0) + + @test exp2(bareinterval(-0xD.15550CC880000P-1040, +0x4.8D150CC000000P-1048)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000001P+0) + + @test exp2(bareinterval(-0x4.8D159E0000000P-1048, +0x1.FFFFFF0999999P+0)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x3.FFFFFD54D58B0P+0) + + @test exp2(bareinterval(-0x1.FFFFFFFFFFFFFP+0, +0x1.14C8911540000P-1040)) === bareinterval(0x4.0000000000000P-4, 0x1.0000000000001P+0) + + @test exp10(bareinterval(-0x2.8457BC029986EP+112, -0x1.7A77BFCCF5A9EP-232)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x6.05C0BB1BCB730P-220, -0x3.C5EC30FBB68C8P-508)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.9B09919BF9D9EP+272, -0xE.20FF41BD18058P-204)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.1503444763FC5P-416, -0x2.075DF98B2478CP-456)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x4.ECBC855871080P+332, -0x1.3A01905E36F84P+0)) === bareinterval(0x0.0000000000000P+0, 0xF.317F8555628F0P-8) + + @test exp10(bareinterval(-0x7.32EDAB7F60A50P+236, -0x2.404E44C49C644P-440)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x6.5263CF84EF388P+172, -0x1.63A15E999EB64P-344)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.4171976A1CA54P-288, -0x6.941F470A70074P-756)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x4.69BB1D34B9570P-76, -0x7.78A1F475A306CP-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.E046DB554037CP+256, -0x2.6ABC15579B2B2P-48)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFA70P-4) + + @test exp10(bareinterval(-0xE.33C49CF5B8790P+652, -0x8.297A99ED9ED08P+8)) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test exp10(bareinterval(-0x1.7AAA15EBBD3F2P+8, -0x6.3E590E626451CP-172)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.8F9204BC4041EP+988, -0x6.ACFA418D8F92CP-544)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x2.B00450A48D586P-148, -0x2.BB570B356C6CAP-440)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.9E7DDBBE00F75P+352, -0xC.41329461A0C30P-512)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.5BD629B25AA23P-236, -0x7.DEA605DEC97CCP-316)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x3.AE1DC13A652CAP+168, -0x6.65D7E0A247778P-56)) === bareinterval(0x0.0000000000000P+0, 0xF.FFFFFFFFFFFF8P-4) + + @test exp10(bareinterval(-0xA.27B4555158148P-68, -0x5.2B55801231EC8P-344)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.D68A6BA7E617FP+12, -0x6.36B661DCE2688P-236)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.98EF0C6A8BD66P+132, -0x1.EB0E1AB78F314P-480)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x1.C08152CC09416P+220, -0x7.4CF193131FA64P-192)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x6.F70E0DA4D2BA0P-140, -0x1.7036C237D5B00P-672)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0xF.CC937FA330E40P+648, -0x3.A0EE84451C92CP-324)) === bareinterval(0x0.0000000000000P+0, 0x1.0000000000000P+0) + + @test exp10(bareinterval(-0x5.F775993940188P-120, -0x1.8BCA641025A83P-124)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test log(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0xB.47B530A1054D8P+4, +0x4.227AD8183FB70P+4) + + @test log(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x1.64CBA844FC0EAP+8, -0x9.968AD8B569FE0P+4) + + @test log(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0xA.426B5145A44A0P+4, +0xA.40B346F454218P+4) + + @test log(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x1.52D81024E4C23P+8, -0x1.3813C01ACD25CP+8) + + @test log(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4) + + @test log(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0x1.C9B8D4127E3DAP+4, +0xC.091AAD1207058P+4) + + @test log(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x1.49B9D16B7E46AP+8, +0x8.A1137BDE55CF8P+4) + + @test log(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x1.028323B4D95B4P+8, +0x6.21D80D9193AB8P+4) + + @test log(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0x2.142D983D15A28P+8, -0xE.2C8FA3F896A50P+4) + + @test log(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0x1.907255D3994FEP+8, -0x5.A87FCF5FBD800P+4) + + @test log(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4) + + @test log(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x4.425A8474E3980P+4, +0x8.DFF506FE0D9F8P+4) + + @test log(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x4.54169A4297548P+0, 0x1.9D179EA5204D0P+8) + + @test log(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0xE.CD14BEBE2CD68P+0, 0x1.B46DC0D02B874P+8) + + @test log(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0x7.9346BAB839B58P+4, -0xE.E33F2C933B990P+0) + + @test log(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0x1.83044F26AAA2BP+8, +0x2.805CE2DC91036P+8) + + @test log(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x1.4359ECD75CB6CP+8, -0x6.E715E1BA0E35CP+4) + + @test log(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x1.6F438EE9F6020P+8, +0xE.1A4A3523F2658P+4) + + @test log(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4) + + @test log(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0xE.1D2336A5BE1A8P+4, -0xA.649D44362A2F0P+4) + + @test log(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8) + + @test log(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x4.8FBAEF1169C24P+4, +0x5.F718BBF0CE2F8P+4) + + @test log(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0xF.4CD3094A3B4B8P+4, -0x3.439BFD719BAE8P+4) + + @test log(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0xA.CDC41AEE74318P+4, -0x1.681AFF89E9C89P+4) + + @test log(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x1.5ADD53379EF4DP+8, +0x3.36D2B121508A8P+4) + + @test log(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0x9.341D196AD2D58P+4, +0x8.5ADC069F618A8P+4) + + @test log(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0x1.DC410CBC8E1C8P+8, -0x6.4027B79D2EAA8P+4) + + @test log(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4) + + @test log(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0xE.9F20674285418P+4, +0x1.990C99B6124FEP+8) + + @test log(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0x7.A02728D7D3790P+4, -0x6.70DBA893A16E0P+4) + + @test log2(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0x1.04614E93EA794P+8, +0x5.F7104B04804E4P+4) + + @test log2(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x2.02BF4547CF74AP+8, -0xD.D527F669B7AA0P+4) + + @test log2(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0xE.CD1F394A2C268P+4, +0xE.CAA4613C31FD0P+4) + + @test log2(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x1.E8D93AC78E47CP+8, -0x1.C23B6E9F9BE73P+8) + + @test log2(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0xC.44A8D0A480900P+4, 0xE.30D042BD32E08P+4) + + @test log2(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0x2.945A6DE3564F2P+4, +0x1.15D18004DA527P+8) + + @test log2(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x1.DBB1A03AD9911P+8, +0xC.7305ECF8E75D8P+4) + + @test log2(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x1.74F450FB5F194P+8, +0x8.D8CE5C08208D0P+4) + + @test log2(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0x2.FFC54D5EF9E5AP+8, -0x1.472E83799CCFAP+8) + + @test log2(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0x2.41B8EC5041B68P+8, -0x8.29BE215800410P+4) + + @test log2(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x7.562AE05DF4698P+4, 0x1.15E7F7FA196AAP+8) + + @test log2(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x6.250C3695FCF20P+4, +0xC.CDBDC5938D560P+4) + + @test log2(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x6.3EA22BED11920P+0, 0x2.53F7565A6FA4CP+8) + + @test log2(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x1.55A7D090E9BC4P+4, 0x2.75A230A6EF148P+8) + + @test log2(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0xA.EDC8C6AE09A00P+4, -0x1.57A778189781EP+4) + + @test log2(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0x2.2E58E661BEF52P+8, +0x3.9BD9297418726P+8) + + @test log2(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x1.D27F4D5811EC0P+8, -0x9.F55D8E4A51F88P+4) + + @test log2(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x2.11D98CE9F01E8P+8, +0x1.4588C1B9F05FCP+8) + + @test log2(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x9.247C4A0D6A240P+4, 0xC.5C40234316DE0P+4) + + @test log2(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0x1.45CA7D7508D73P+8, -0xE.FE7480A8A6A70P+4) + + @test log2(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x1.6B54440063A2FP+8, 0x2.0FF6AC0A1DF08P+8) + + @test log2(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x6.94ADB7A807630P+4, +0x8.9B227CD69B7B0P+4) + + @test log2(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0x1.612C877FDEFC9P+8, -0x4.B58789B7D2AB8P+4) + + @test log2(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0xF.96282D809EDE0P+4, -0x2.0785B9A270C10P+4) + + @test log2(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x1.F46B75E4932F4P+8, +0x4.A3152AC221298P+4) + + @test log2(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0xD.47274C2E0B298P+4, +0xC.0DB8D252704A8P+4) + + @test log2(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0x2.AF16E4D3D6128P+8, -0x9.048930492A7A0P+4) + + @test log2(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0xC.1866CEA5B0408P+4, 0x1.0545D0C4DA7BAP+8) + + @test log2(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0x1.51830AD8B30FCP+8, +0x2.4E221EC1DB53EP+8) + + @test log2(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0xB.005C8501548A8P+4, -0x9.4ACCA02A24828P+4) + + @test log10(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(-0x4.E61D94C4C8D58P+4, +0x1.CBB1247192AE0P+4) + + @test log10(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(-0x9.AF44F24283358P+4, -0x4.29FE8451F9E24P+4) + + @test log10(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(-0x4.74A3ADB971C48P+4, +0x4.73E4925024C64P+4) + + @test log10(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(-0x9.32877CA0160B8P+4, -0x8.7888BDDBCE5D0P+4) + + @test log10(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x3.B16EC52507DF2P+4, 0x4.4595F97548968P+4) + + @test log10(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(-0xC.6C93FFEF64F78P+0, +0x5.3A1B471A21FF4P+4) + + @test log10(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(-0x8.F32B7DBB21008P+4, +0x3.BF63BA7A3C658P+4) + + @test log10(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(-0x7.0453C2F061648P+4, +0x2.A9C64A16830FCP+4) + + @test log10(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(-0xE.71F3C5029D848P+4, -0x6.27DD331C437F0P+4) + + @test log10(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(-0xA.DE968FD95ABE0P+4, -0x2.7513429684674P+4) + + @test log10(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x2.35627EFD00A60P+4, 0x5.3A877F4AD58E8P+4) + + @test log10(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(-0x1.D988D7EBC5AE3P+4, +0x3.DAB2CD7F2625EP+4) + + @test log10(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x1.E13C93CF0C5D8P+0, 0xB.367584AC914D0P+4) + + @test log10(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x6.6D93B54D66420P+0, 0xB.D89E0CA927598P+4) + + @test log10(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(-0x3.4A378CAAD54DAP+4, -0x6.773414D886C14P+0) + + @test log10(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(-0xA.8144B5B8F5DD8P+4, +0x1.161B25DAC86ECP+8) + + @test log10(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(-0x8.C6DFF01C76970P+4, -0x2.FF6F7B088B0CCP+4) + + @test log10(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(-0x9.F802CE339E840P+4, +0x6.1FEDD0FB88D78P+4) + + @test log10(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x2.C08E6C63F32E4P+4, 0x3.B888C99289754P+4) + + @test log10(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(-0x6.212A6B69124F0P+4, -0x4.837D7868C93BCP+4) + + @test log10(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x6.D5F7B5F14DD48P+4, 0x9.EEED0801EA480P+4) + + @test log10(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(-0x1.FB238786D64F9P+4, +0x2.9735AA99F42AAP+4) + + @test log10(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(-0x6.A50E2200DFF14P+4, -0x1.6AE688B7C8203P+4) + + @test log10(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(-0x4.B1282C68FE4F8P+4, -0x9.C644DFB9EE3E0P+0) + + @test log10(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(-0x9.6A430336AD680P+4, +0x1.6558F570C1420P+4) + + @test log10(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(-0x3.FF3F46384E0E2P+4, +0x3.A0E51611FF75EP+4) + + @test log10(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(-0xC.ED5A39E5D4878P+4, -0x2.B6F044CDE4A0CP+4) + + @test log10(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x3.A41C190FE9E7AP+4, 0x4.EA6A3021E4FB8P+4) + + @test log10(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(-0x6.599E84FEF71BCP+4, +0xB.1A5D77BC55F98P+4) + + @test log10(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(-0x3.4FCF2BC10B840P+4, -0x2.CC1706E0167D2P+4) + + @test sin(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)) === bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F10P-944) + + @test sin(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)) === bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FE8P-624) + + @test sin(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test sin(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) === bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588) + + @test sin(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)) === bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025104P-564) + + @test sin(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)) === bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4DEP-412) + + @test sin(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)) === bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C80P-792) + + @test sin(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)) === bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301854P-204) + + @test sin(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)) === bareinterval(0xF.4077C7E8CD698P-268, 0x3.753426098AC5AP-80) + + @test sin(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)) === bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05AP-916) + + @test sin(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)) === bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE491D517170P-16) + + @test sin(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)) === bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B6P-576) + + @test sin(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) === bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388) + + @test sin(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)) === bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DCFF7D4P-20) + + @test sin(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)) === bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D50EP-836) + + @test sin(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)) === bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99665P-760) + + @test sin(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)) === bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0664P-780) + + @test sin(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) === bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780) + + @test sin(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) === bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664) + + @test sin(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)) === bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106CP-548) + + @test sin(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)) === bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF502P-1008) + + @test sin(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) === bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740) + + @test sin(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)) === bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E4P-928) + + @test sin(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)) === bareinterval(0x1.455801D3D2B62P-704, 0x3.A4C915783D07AP-28) + + @test sin(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) === bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772) + + @test sin(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)) === bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F44P-540) + + @test sin(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)) === bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756420P-496) + + @test sin(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)) === bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F4P-876) + + @test sin(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) === bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608) + + @test sin(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)) === bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B78P-432) + + @test cos(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960)) === bareinterval(-0x1.0000000000000P+0, +0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16)) === bareinterval(0xF.FFFFF9AB27E58P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20)) === bareinterval(0xF.FFFFFFFF231A0P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test cos(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tan(bareinterval(0x4.6AF931A62EB70P+4, 0x4.6C0D89ACF83F0P+4)) === bareinterval(-0x4.2B94A5B864748P+16, -0xE.CC7EFFC39BBE8P+0) + + @test tan(bareinterval(0x9.B824319678E98P+4, 0x9.B8365416B3188P+4)) === bareinterval(-0x9.517610C9FF4F0P+28, -0xE.1DCEBD0ABA128P+4) + + @test tan(bareinterval(0xE.231D6DE6B2910P+0, 0xE.232155989FD58P+0)) === bareinterval(-0x1.1A74CC770CA81P+20, -0x4.09E5FC000B430P+12) + + @test tan(bareinterval(0x3.A1E994576AF38P+4, 0x3.A1F62CB3D8B0CP+4)) === bareinterval(-0x3.EDBBE63A85A20P+12, -0x1.3EC2E09B0B82DP+8) + + @test tan(bareinterval(0x4.504512C674C88P+8, 0x4.5045147DF4570P+8)) === bareinterval(-0xC.5E819F2BCA708P+28, -0x9.51D20751384C0P+12) + + @test tan(bareinterval(0x7.DA9E8C267B000P+0, 0xA.CCC7028A13E50P+0)) === bareinterval(-0x8.CE26DA7B8CCA8P+20, +0x5.0BA299C8F763CP+0) + + @test tan(bareinterval(0xC.CA9E956E09870P+12, 0xC.CA9FEB35E8D28P+12)) === bareinterval(-0x9.40D68D3420248P+16, -0xB.F4CB43C962B98P+0) + + @test tan(bareinterval(0x2.F6B1D30E1AC2CP+8, 0x2.F6B1EAD90ED6EP+8)) === bareinterval(-0x1.1E211833A60A2P+20, -0xA.BBFD5C235E8E8P+8) + + @test tan(bareinterval(0xB.C33774AC8C510P+8, 0xB.C3378F9640B80P+8)) === bareinterval(-0x3.B8E9A3359EA76P+12, -0x8.33C065B080F78P+8) + + @test tan(bareinterval(0x4.B65F2027400ECP+0, 0x4.B65F690A4503CP+0)) === bareinterval(-0x2.D46AD27DDB548P+24, -0x3.7ECF31F99ADC4P+16) + + @test tan(bareinterval(0x3.C60A2C774D8A6P+8, 0x3.C60A76B28E42CP+8)) === bareinterval(-0x3.28E3C44C11B44P+24, -0x3.72D85B31BD660P+8) + + @test tan(bareinterval(0x7.DA9E8A5DF3B7CP+0, 0x7.DAA9CFE45466CP+0)) === bareinterval(-0x1.D9B11082E8FC3P+28, -0x1.6B6333E88C1DFP+12) + + @test tan(bareinterval(0x3.A1E953315B022P+4, 0x3.A3624FC9B84C0P+4)) === bareinterval(-0x4.91A5298A762FCP+24, -0xA.D59BACA695F48P+0) + + @test tan(bareinterval(0x7.DA9E8AB1B7B7CP+0, 0x8.E4A2BCBB988B0P+0)) === bareinterval(-0x2.C52AD8545AC54P+24, -0x9.691CCDB9751E8P-4) + + @test tan(bareinterval(0x5.48783C12B018CP+8, 0x5.487863A8A0C78P+8)) === bareinterval(-0x4.7465D978FF1E8P+4, -0x4.455187267B294P+4) + + @test tan(bareinterval(0x1.AB41B772619C2P+4, 0x1.AB96C295E1A23P+4)) === bareinterval(-0x2.55DE9F429F276P+16, -0x3.02439C1296068P+4) + + @test tan(bareinterval(0x1.87E20C8B7CCC1P+16, 0x1.87E20E060934FP+16)) === bareinterval(-0x7.5F7BB0C55311CP+28, -0xA.D1F5D5F3730E8P+4) + + @test tan(bareinterval(0x2.5BA5629043048P+16, 0x2.5BA5A6106DDF4P+16)) === bareinterval(-0x4.BDE3C915168D8P+4, -0x3.84ED584601B4CP+0) + + @test tan(bareinterval(0x1.A9AF913EE27CFP+8, 0x1.A9AFA6D06E549P+8)) === bareinterval(-0x2.CB455269CB954P+16, -0xB.ACE6E2EAA9098P+8) + + @test tan(bareinterval(0x7.64CF403A51948P+8, 0x7.64D139F1912E4P+8)) === bareinterval(-0x5.38F704820A47CP+28, -0x8.19686283B81E8P+4) + + @test tan(bareinterval(0x4.1437B08F8BA70P+16, 0x4.1439A27E86D50P+16)) === bareinterval(-0x1.3ADB30F7A9B56P+24, +0x6.48C7464A8F9A0P-4) + + @test tan(bareinterval(0x2.74518B3BAFB7CP+4, 0x2.74518DE5A60C0P+4)) === bareinterval(-0xF.8E3A10DB36640P+24, -0x5.FF456443FD8B8P+16) + + @test tan(bareinterval(0x1.DD85A7816A0FFP+4, 0x1.DD89849DFDF09P+4)) === bareinterval(-0x3.FA5C8BD1A67ECP+20, -0x4.23D96B0387510P+8) + + @test tan(bareinterval(0x1.AB41B29964887P+4, 0x1.B5CBD4ED0D1DDP+4)) === bareinterval(-0x7.FC8B577B97310P+16, -0x1.4AB8A7BB81552P+0) + + @test tan(bareinterval(0x1.19454E95BC804P+12, 0x1.194551E9AD95AP+12)) === bareinterval(-0x1.2A53ECF4C9B1AP+12, -0x3.D27F074C2DA94P+8) + + @test tan(bareinterval(0x4.C4823D2C30D00P+8, 0x4.C482DEAE395CCP+8)) === bareinterval(-0x7.F7B434A3F3544P+28, -0x1.95C659F53B09BP+8) + + @test tan(bareinterval(0x1.DD85BAAB9BAF9P+4, 0x1.DD8660423BAACP+4)) === bareinterval(-0xD.2F5338751C9C8P+12, -0x1.623D682415BE0P+12) + + @test tan(bareinterval(0x2.F798BB3536690P+16, 0x2.F79A363308C32P+16)) === bareinterval(-0x2.F8C1AC15A9CCEP+16, -0x1.731B7ACF94603P-4) + + @test tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.78FDB9F143616P+4)) === bareinterval(-0xC.9CFD638FE0A18P+24, -0xC.9CFD638FE0A10P+24) + + @test tan(bareinterval(0x1.78FDB9F143616P+4, 0x1.79367E02D4EAAP+4)) === bareinterval(-0xC.9CFD638FE0A18P+24, -0x4.826BF805C4E68P+4) + + @test cot(bareinterval(0x4.51D73651EA89CP+4, 0x4.52EB8E58B411CP+4)) === bareinterval(0xE.CC7EFFC39DE08P+0, 0x4.2B94A5E391E20P+16) + + @test cot(bareinterval(0x9.9F02364234BC8P+4, 0x9.9F1458C26EEB8P+4)) === bareinterval(0xE.1DCEBD0AA72D0P+4, 0x9.516DD4FA21CF0P+28) + + @test cot(bareinterval(0xC.90FDB8A26FBF8P+0, 0xC.9101A0545D040P+0)) === bareinterval(0x4.09E5FC0006C38P+12, 0x1.1A74CC76B6B71P+20) + + @test cot(bareinterval(0x3.88C7990326C68P+4, 0x3.88D4315F9483CP+4)) === bareinterval(0x1.3EC2E09B0928AP+8, 0x3.EDBBE6390EF44P+12) + + @test cot(bareinterval(0x4.4EB2F3113085CP+8, 0x4.4EB2F4C8B0144P+8)) === bareinterval(0x9.51D206F220E70P+12, 0xC.5DDA26E3680B8P+28) + + @test cot(bareinterval(0x6.487ED6E2382ECP+0, 0x9.3AA74D45D1138P+0)) === bareinterval(-0x5.0BA299C8F7644P+0, +0x8.CE26D93009840P+20) + + @test cot(bareinterval(0xC.CA857372B5428P+12, 0xC.CA86C93A948E0P+12)) === bareinterval(0xB.F4CB43CC4C9E8P+0, 0x9.40D848DDFC130P+16) + + @test cot(bareinterval(0x2.F51FB358D6800P+8, 0x2.F51FCB23CA942P+8)) === bareinterval(0xA.BBFD5C1B7C1D8P+8, 0x1.1E2116D584957P+20) + + @test cot(bareinterval(0xB.C1A554F7480E0P+8, 0xB.C1A56FE0FC750P+8)) === bareinterval(0x8.33C065BCB81C8P+8, 0x3.B8E9A35DDF6BCP+12) + + @test cot(bareinterval(0x3.243F6AE2FD3D8P+0, 0x3.243FB3C602324P+0)) === bareinterval(0x3.7ECF31F964F42P+16, 0x2.D46AD05A0B746P+24) + + @test cot(bareinterval(0x3.C4780CC209478P+8, 0x3.C47856FD49FFEP+8)) === bareinterval(0x3.72D85B3269A44P+8, 0x3.28E454E439A90P+24) + + @test cot(bareinterval(0x6.487ED519B0E68P+0, 0x6.488A1AA011958P+0)) === bareinterval(0x1.6B6333E883806P+12, 0x1.D9B101DF34E20P+28) + + @test cot(bareinterval(0x3.88C757DD16D52P+4, 0x3.8A405475741F0P+4)) === bareinterval(0xA.D59BACA695410P+0, 0x4.91A509DE53224P+24) + + @test cot(bareinterval(0x6.487ED56D74E68P+0, 0x7.5283077755B9CP+0)) === bareinterval(0x9.691CCDB975190P-4, 0x2.C52AD6475D346P+24) + + @test cot(bareinterval(0x5.46E61C5D6BD60P+8, 0x5.46E643F35C84CP+8)) === bareinterval(0x4.4551872667304P+4, 0x4.7465D978E9638P+4) + + @test cot(bareinterval(0x1.921FBC1E1D6F1P+4, 0x1.9274C7419D752P+4)) === bareinterval(0x3.02439C1295BB8P+4, 0x2.55DE9F3FCCF28P+16) + + @test cot(bareinterval(0x1.87E07A6BC787DP+16, 0x1.87E07BE653F0BP+16)) === bareinterval(0xA.D1F5D5DED35E0P+4, 0x7.55F4ABD4357C8P+28) + + @test cot(bareinterval(0x2.5BA3D0708DC04P+16, 0x2.5BA413F0B89B0P+16)) === bareinterval(0x3.84ED5845DBFB2P+0, 0x4.BDE3C91120740P+4) + + @test cot(bareinterval(0x1.A81D71899E3A2P+8, 0x1.A81D871B2A11CP+8)) === bareinterval(0xB.ACE6E2E9DA370P+8, 0x2.CB45525DF368EP+16) + + @test cot(bareinterval(0x7.633D20850D51CP+8, 0x7.633F1A3C4CEB8P+8)) === bareinterval(0x8.19686283704C0P+4, 0x5.38D928BC4D11CP+28) + + @test cot(bareinterval(0x4.14361E6FD662CP+16, 0x4.1438105ED190CP+16)) === bareinterval(-0x6.48C7464AC3A74P-4, +0x1.3AD6ED9B4C193P+24) + + @test cot(bareinterval(0x2.5B2F8FE76B8ACP+4, 0x2.5B2F929161DF0P+4)) === bareinterval(0x5.FF45640D6BF8CP+16, 0xF.8E38A1B8F3CE0P+24) + + @test cot(bareinterval(0x1.C463AC2D25E2EP+4, 0x1.C4678949B9C38P+4)) === bareinterval(0x4.23D96B037E734P+8, 0x3.FA5C8B4EB13BAP+20) + + @test cot(bareinterval(0x1.921FB745205B6P+4, 0x1.9CA9D998C8F0CP+4)) === bareinterval(0x1.4AB8A7BB8153CP+0, 0x7.FC8B575A99618P+16) + + @test cot(bareinterval(0x1.192C2C9A683C1P+12, 0x1.192C2FEE59517P+12)) === bareinterval(0x3.D27F074ED4C1AP+8, 0x1.2A53ECF8BBB09P+12) + + @test cot(bareinterval(0x4.C2F01D76EC8D4P+8, 0x4.C2F0BEF8F51A0P+8)) === bareinterval(0x1.95C659F50F06FP+8, 0x7.F76EB663A7898P+28) + + @test cot(bareinterval(0x1.C463BF5757828P+4, 0x1.C46464EDF77DBP+4)) === bareinterval(0x1.623D682405E56P+12, 0xD.2F53386F7DF28P+12) + + @test cot(bareinterval(0x2.F79729158124CP+16, 0x2.F798A413537EEP+16)) === bareinterval(0x1.731B7ACF66E92P-4, 0x2.F8C19331ECBFCP+16) + + @test cot(bareinterval(0x3.371943E536E9EP+8, 0x3.371D0784693FAP+8)) === bareinterval(0x3.E06D09FC7DDC2P+4, 0x2.C1B5E6F32FDEEP+8) + + @test cot(bareinterval(0x1.5FDBBE9CFF344P+4, 0x1.601482AE90BD8P+4)) === bareinterval(0x4.826BF805C583CP+4, 0xC.9CFDB05DEF930P+24) + + @test asin(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680) + + @test asin(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640) + + @test asin(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764) + + @test asin(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976) + + @test asin(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612) + + @test asin(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536) + + @test asin(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008) + + @test asin(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796) + + @test asin(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976) + + @test asin(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948) + + @test asin(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796) + + @test asin(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556) + + @test asin(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268) + + @test asin(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232) + + @test asin(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456) + + @test asin(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C473266E68P-24) + + @test asin(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868) + + @test asin(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840) + + @test asin(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408) + + @test asin(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512) + + @test asin(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564) + + @test asin(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856) + + @test asin(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520) + + @test asin(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688) + + @test asin(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768) + + @test asin(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548) + + @test asin(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912) + + @test asin(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664) + + @test asin(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304) + + @test asin(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020) + + @test acos(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(0x1.921FA7FF368A5P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442FC7P+0) + + @test acos(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) + + @test atan(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) + + @test atan(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0xE.3062E34353278P-4, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) + + @test atan(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) + + @test atan(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0x1.920057E3A66F1P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0x1.921FB54442D13P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x1.9172A3136EB8DP+0) + + @test atan(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) + + @test atan(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) + + @test atan(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) + + @test atan(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x1.921700D14CFE5P+0) + + @test atan(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) + + @test atan(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x3.A0EE84451C92AP-324, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) + + @test acot(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x6.5B5B8AA0A6884P-116, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0x6.23FD67FFA09A4P-276, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0x6.70A3F8408ABF0P-296, 0xC.099B90EB0FA30P-256) + + @test acot(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0x3.3FB79247499D6P-336, 0xA.F1987100D9F08P-4) + + @test acot(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.38F904C465F6AP-240, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x2.87E9C09D98938P-176, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x8.3E949ACCB0F88P-316, 0x9.443E1DD721FE8P-184) + + @test acot(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x5.9028FAA64FBC8P-260, 0x1.921FB54442CF2P+0) + + @test acot(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0x1.2067D7F96AFE5P-656, 0x1.F5D609C62725FP-12) + + @test acot(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0x6.09322FE56F794P-692, 0x4.E7223FE097808P-52) + + @test acot(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0xA.D1230D418C238P-12, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.3F7C8D3DDFC74P-992, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0x9.E1C9C04F15630P-356, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x1.326922CF32B2EP-240, 0x2.7ECD966556E9CP-192) + + @test acot(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0x1.5F401B7014200P-568, 0x1.3A84A0CB7AC42P-428) + + @test acot(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x4.59002C447A028P-172, 0x1.921FB54442D18P+0) + + @test acot(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x8.B472F5D335130P-16, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0xA.042BAEF7787B8P-136, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x9.21EF65D6A5190P-224, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0x1.6F8ED062CAC9BP-328, 0x8.C7ADFB6368868P-256) + + @test acot(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x1.03413E0E19942P-652, 0x1.921FB54442D19P+0) + + @test acot(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test sinh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)) === bareinterval(-0x3.53DC9496DE0A2P-160, -0xC.287E0E10EC1B8P-960) + + @test sinh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)) === bareinterval(-0x1.CF3637DCBCC9BP-452, -0x5.E4846462FF33CP-636) + + @test sinh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)) === bareinterval(-0x1.32197576F3697P+0, -0x3.3D2CCEF698A5AP-972) + + @test sinh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)) === bareinterval(-0x1.494A24A7585D2P-380, +0x1.A0790A9E3013FP-604) + + @test sinh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)) === bareinterval(-0x2.B64BC5E999868P-368, -0xF.0633041110C28P-572) + + @test sinh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)) === bareinterval(-0x7.56F52F4FED858P-336, -0x4.F40A3934B3354P-416) + + @test sinh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)) === bareinterval(-0xA.0E33C2BA95C90P-48, -0x1.1927CA3847669P-808) + + @test sinh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)) === bareinterval(-0x1.1BBBD6FE8B951P-208, -0x1.463A32DBA649DP-220) + + @test sinh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)) === bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C4P-96) + + @test sinh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)) === bareinterval(-0x2.E7332C654ABB8P-384, -0x1.4363967367F55P-932) + + @test sinh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)) === bareinterval(-0x1.55EBB1D70A46FP-592, +0x4.733FA51477038P-20) + + @test sinh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)) === bareinterval(-0x1.1B4B8388A3D93P-340, -0xD.51D4A3CE4C490P-600) + + @test sinh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)) === bareinterval(-0x4.21B73745BC4C4P-952, +0xD.E40D83923C3E8P-404) + + @test sinh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)) === bareinterval(-0x1.73D14FA7DA1CCP-504, +0x1.5B3AFEEB17A86P-28) + + @test sinh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)) === bareinterval(-0x3.3CD34997DF068P-320, -0x1.606C7BCE75819P-852) + + @test sinh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)) === bareinterval(-0xC.5356A56E59750P-516, -0x1.33B9A95C55513P-772) + + @test sinh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)) === bareinterval(-0x5.FA887950A63D0P-588, -0x2.B707741B15478P-800) + + @test sinh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)) === bareinterval(-0x2.9476464AAE5BCP-548, +0x4.0734E17C026D8P-784) + + @test sinh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)) === bareinterval(-0xF.A46AC05B0EAB0P-68, +0x1.EFA89F34F4189P-684) + + @test sinh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)) === bareinterval(-0x9.9488CB205AFB0P-124, -0x2.940180D1AA2AEP-556) + + @test sinh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)) === bareinterval(-0x3.F9D9FE5792CE2P-912, -0x3.F00FC8CE24ADCP-1016) + + @test sinh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)) === bareinterval(-0x7.D5A28EF80D6B4P-176, +0xC.5D2B8FFCB2AE0P-756) + + @test sinh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)) === bareinterval(-0x5.B5DCAA821A62CP-784, -0x1.48532232C10FDP-940) + + @test sinh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)) === bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C4P-44) + + @test sinh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)) === bareinterval(-0x1.4AD562C0B5179P-380, +0x3.CEB34F40EA9BCP-792) + + @test sinh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)) === bareinterval(-0x7.ED02EF56E40B4P-92, -0x1.8C80275A696B0P-552) + + @test sinh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)) === bareinterval(-0x1.56FBE834FC823P-296, -0x3.66041558BACA8P-516) + + @test sinh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)) === bareinterval(-0x6.44524F6FCCF90P-340, -0x5.3E8ED576A1334P-896) + + @test sinh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)) === bareinterval(-0x8.92F5BEDA59C80P-268, +0x2.51B11C2EC76BCP-612) + + @test sinh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)) === bareinterval(-0x4.785C46BDC2A54P-244, -0x1.BA5C062DE8F00P-432) + + @test cosh(bareinterval(-0x3.53DC9496DE0A0P-160, -0xC.287E0E10EC1B8P-960)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.CF3637DCBCC9AP-452, -0x5.E4846462FF33CP-636)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.0362421843787P+0, -0x3.3D2CCEF698A5AP-972)) === bareinterval(0x1.0000000000000P+0, 0x1.8F0A39674B193P+0) + + @test cosh(bareinterval(-0x1.494A24A7585D1P-380, +0x1.A0790A9E3013EP-604)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x2.B64BC5E999866P-368, -0xF.0633041110C28P-572)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x7.56F52F4FED854P-336, -0x4.F40A3934B3354P-416)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0xA.0E33C2BA95C88P-48, -0x1.1927CA3847669P-808)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.1BBBD6FE8B950P-208, -0x1.463A32DBA649DP-220)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(0x5.290FE84915530P-268, 0x1.8C9AF520C22C3P-96)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x2.E7332C654ABB6P-384, -0x1.4363967367F55P-932)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.55EBB1D70A46EP-592, +0x4.733FA51468530P-20)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000009E6FP+0) + + @test cosh(bareinterval(-0x1.1B4B8388A3D92P-340, -0xD.51D4A3CE4C490P-600)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x4.21B73745BC4C0P-952, +0xD.E40D83923C3E0P-404)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.73D14FA7DA1CBP-504, +0x1.5B3AFEEB17A85P-28)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x3.3CD34997DF066P-320, -0x1.606C7BCE75819P-852)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0xC.5356A56E59748P-516, -0x1.33B9A95C55513P-772)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x5.FA887950A63CCP-588, -0x2.B707741B15478P-800)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x2.9476464AAE5BAP-548, +0x4.0734E17C026D4P-784)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0xF.A46AC05B0EAA8P-68, +0x1.EFA89F34F4188P-684)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x9.9488CB205AFA8P-124, -0x2.940180D1AA2AEP-556)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x3.F9D9FE5792CE0P-912, -0x3.F00FC8CE24ADCP-1016)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x7.D5A28EF80D6B0P-176, +0xC.5D2B8FFCB2AD8P-756)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x5.B5DCAA821A628P-784, -0x1.48532232C10FDP-940)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(0x3.8110D13AB0378P-720, 0x2.77422E18981C2P-44)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.4AD562C0B5178P-380, +0x3.CEB34F40EA9BAP-792)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x7.ED02EF56E40B0P-92, -0x1.8C80275A696B0P-552)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x1.56FBE834FC822P-296, -0x3.66041558BACA8P-516)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x6.44524F6FCCF8CP-340, -0x5.3E8ED576A1334P-896)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x8.92F5BEDA59C78P-268, +0x2.51B11C2EC76BAP-612)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test cosh(bareinterval(-0x4.785C46BDC2A50P-244, -0x1.BA5C062DE8F00P-432)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test tanh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) + + @test tanh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) + + @test tanh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0xD.772335E624B98P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) + + @test tanh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) + + @test tanh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x8.297A99ED9ED08P+8, 0xE.33C49CF5B8790P+652)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x3.436DFE8F08194P+48, 0x2.A69A969772FDEP+688)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) + + @test tanh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) + + @test tanh(bareinterval(0xD.05E9CCF66CF58P+424, 0xB.A944253373080P+564)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) + + @test tanh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) + + @test tanh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0xF.FFFFFFFFFFFF8P-4, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x3.A0EE84451C92CP-324, 0xF.CC937FA330E40P+648)) === bareinterval(0x3.A0EE84451C92AP-324, 0x1.0000000000000P+0) + + @test tanh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) + + @test coth(bareinterval(0x5.9D7EEEA9B9EE0P-264, 0x3.F03D06503CAA2P+92)) === bareinterval(0x1.0000000000000P+0, 0x2.D97240157D2C8P+260) + + @test coth(bareinterval(-0x3.F03D06503CAA2P+92, -0x5.9D7EEEA9B9EE0P-264)) === bareinterval(-0x2.D97240157D2C8P+260, -0x1.0000000000000P+0) + + @test coth(bareinterval(0xB.6600F238FE060P-520, 0x1.BB63631B595B0P-224)) === bareinterval(0x9.3CEA8A8C76FC0P+220, 0x1.6758D7D180F69P+516) + + @test coth(bareinterval(-0x1.BB63631B595B0P-224, -0xB.6600F238FE060P-520)) === bareinterval(-0x1.6758D7D180F69P+516, -0x9.3CEA8A8C76FC0P+220) + + @test coth(bareinterval(0x4.DC89ED0034C6CP-240, 0xD.A1D118A3891E8P+232)) === bareinterval(0x1.0000000000000P+0, 0x3.4A8AB6B06359AP+236) + + @test coth(bareinterval(-0xD.A1D118A3891E8P+232, -0x4.DC89ED0034C6CP-240)) === bareinterval(-0x3.4A8AB6B06359AP+236, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x4.7F93F879A61A4P-492, 0x1.BDC6388153882P-452)) === bareinterval(0x9.3041F45FA3D78P+448, 0x3.8E8E46D77A03EP+488) + + @test coth(bareinterval(-0x1.BDC6388153882P-452, -0x4.7F93F879A61A4P-492)) === bareinterval(-0x3.8E8E46D77A03EP+488, -0x9.3041F45FA3D78P+448) + + @test coth(bareinterval(0xF.C7C928D9BB718P+192, 0x8.41A7954605A98P+224)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0x8.41A7954605A98P+224, -0xF.C7C928D9BB718P+192)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x3.F07C0B8005270P-44, 0x2.DD3C8580FCBE0P+276)) === bareinterval(0x1.0000000000000P+0, 0x4.0FC1103283A70P+40) + + @test coth(bareinterval(-0x2.DD3C8580FCBE0P+276, -0x3.F07C0B8005270P-44)) === bareinterval(-0x4.0FC1103283A70P+40, -0x1.0000000000000P+0) + + @test coth(bareinterval(0xA.A97DED29FFF30P-480, 0x5.35EEA9C504860P+196)) === bareinterval(0x1.0000000000000P+0, 0x1.802A4F4EFE3B2P+476) + + @test coth(bareinterval(-0x5.35EEA9C504860P+196, -0xA.A97DED29FFF30P-480)) === bareinterval(-0x1.802A4F4EFE3B2P+476, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x3.CF4B727451402P-376, 0x1.759F6C21DAF9AP+140)) === bareinterval(0x1.0000000000000P+0, 0x4.33233873998C8P+372) + + @test coth(bareinterval(-0x1.759F6C21DAF9AP+140, -0x3.CF4B727451402P-376)) === bareinterval(-0x4.33233873998C8P+372, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x6.55376F4C1C50CP-772, 0x1.0120DD4EBC019P-328)) === bareinterval(0xF.EE06735C6D910P+324, 0x2.86C88F09A2CBEP+768) + + @test coth(bareinterval(-0x1.0120DD4EBC019P-328, -0x6.55376F4C1C50CP-772)) === bareinterval(-0x2.86C88F09A2CBEP+768, -0xF.EE06735C6D910P+324) + + @test coth(bareinterval(0x1.B63F1F7AED49EP-580, 0x2.245AF5BCB3356P-132)) === bareinterval(0x7.7838528478BF8P+128, 0x9.58A984202B8E8P+576) + + @test coth(bareinterval(-0x2.245AF5BCB3356P-132, -0x1.B63F1F7AED49EP-580)) === bareinterval(-0x9.58A984202B8E8P+576, -0x7.7838528478BF8P+128) + + @test coth(bareinterval(0x2.73B23CC8D8F76P+116, 0x1.F1E4F59403FC3P+276)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0x1.F1E4F59403FC3P+276, -0x2.73B23CC8D8F76P+116)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x2.5B4F5F71CA5FCP-100, 0x1.5C244CE1AC6B3P+204)) === bareinterval(0x1.0000000000000P+0, 0x6.CA09D0DDC330CP+96) + + @test coth(bareinterval(-0x1.5C244CE1AC6B3P+204, -0x2.5B4F5F71CA5FCP-100)) === bareinterval(-0x6.CA09D0DDC330CP+96, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x1.4E7212DD5ABB9P+4, 0xD.9F35E61FDF7E8P+592)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0xD.9F35E61FDF7E8P+592, -0x1.4E7212DD5ABB9P+4)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x1.271B33491E515P+20, 0x2.B3031CF3AF4ECP+628)) === bareinterval(0x1.0000000000000P+0, 0x1.0000000000001P+0) + + @test coth(bareinterval(-0x2.B3031CF3AF4ECP+628, -0x1.271B33491E515P+20)) === bareinterval(-0x1.0000000000001P+0, -0x1.0000000000000P+0) + + @test coth(bareinterval(0x9.DB635E2FF52B0P-180, 0x2.AF04176524D06P-24)) === bareinterval(0x5.F646A7779F114P+20, 0x1.9F8AFAA8DBFF9P+176) + + @test coth(bareinterval(-0x2.AF04176524D06P-24, -0x9.DB635E2FF52B0P-180)) === bareinterval(-0x1.9F8AFAA8DBFF9P+176, -0x5.F646A7779F114P+20) + + @test asinh(bareinterval(0x1.7A77BFCCF5A9EP-232, 0x2.8457BC029986EP+112)) === bareinterval(0x1.7A77BFCCF5A9DP-232, 0x4.F3FA9CD060658P+4) + + @test asinh(bareinterval(0x3.C5EC30FBB68C8P-508, 0x6.05C0BB1BCB730P-220)) === bareinterval(0x3.C5EC30FBB68C6P-508, 0x6.05C0BB1BCB730P-220) + + @test asinh(bareinterval(0xE.20FF41BD18058P-204, 0x2.9B09919BF9D9EP+272)) === bareinterval(0xE.20FF41BD18050P-204, 0xB.E2FD554E373E0P+4) + + @test asinh(bareinterval(0x2.075DF98B2478CP-456, 0x1.1503444763FC5P-416)) === bareinterval(0x2.075DF98B2478AP-456, 0x1.1503444763FC5P-416) + + @test asinh(bareinterval(0x1.5444E676976F1P+252, 0x2.7C064F6929234P+292)) === bareinterval(0xA.FA69A93525138P+4, 0xC.C008F1DBA8390P+4) + + @test asinh(bareinterval(0x1.3A01905E36F84P+0, 0x4.ECBC855871080P+332)) === bareinterval(0x1.086AFFAE230B6P+0, 0xE.8698B81E22AB0P+4) + + @test asinh(bareinterval(0x2.404E44C49C644P-440, 0x7.32EDAB7F60A50P+236)) === bareinterval(0x2.404E44C49C642P-440, 0xA.63FF3E7D6B730P+4) + + @test asinh(bareinterval(0x1.63A15E999EB64P-344, 0x6.5263CF84EF388P+172)) === bareinterval(0x1.63A15E999EB63P-344, 0x7.9C22B35B1CEE0P+4) + + @test asinh(bareinterval(0x6.941F470A70074P-756, 0x1.4171976A1CA54P-288)) === bareinterval(0x6.941F470A70070P-756, 0x1.4171976A1CA54P-288) + + @test asinh(bareinterval(0x7.78A1F475A306CP-564, 0x4.69BB1D34B9570P-76)) === bareinterval(0x7.78A1F475A3068P-564, 0x4.69BB1D34B9570P-76) + + @test asinh(bareinterval(0x1.BA04D452BBB35P+180, 0x1.F0D19ADCB5D74P+312)) === bareinterval(0x7.E017D1421AED4P+4, 0xD.99E3CCF428D70P+4) + + @test asinh(bareinterval(0x2.6ABC15579B2B2P-48, 0x2.E046DB554037CP+256)) === bareinterval(0x2.6ABC15579B2B0P-48, 0xB.331FC2BC20E70P+4) + + @test asinh(bareinterval(0x6.3E590E626451CP-172, 0x1.7AAA15EBBD3F2P+8)) === bareinterval(0x6.3E590E6264518P-172, 0x6.A13A85E654788P+0) + + @test asinh(bareinterval(0x6.ACFA418D8F92CP-544, 0x2.8F9204BC4041EP+988)) === bareinterval(0x6.ACFA418D8F928P-544, 0x2.AE767FF2330E0P+8) + + @test asinh(bareinterval(0x2.BB570B356C6CAP-440, 0x2.B00450A48D586P-148)) === bareinterval(0x2.BB570B356C6C8P-440, 0x2.B00450A48D586P-148) + + @test asinh(bareinterval(0xC.41329461A0C30P-512, 0x1.9E7DDBBE00F75P+352)) === bareinterval(0xC.41329461A0C28P-512, 0xF.529AF3B8107E0P+4) + + @test asinh(bareinterval(0x6.6978492A3064CP+188, 0xD.5E2045CEE9720P+236)) === bareinterval(0x8.4DCECB852E1E8P+4, 0xA.6DE648AA01A20P+4) + + @test asinh(bareinterval(0x7.DEA605DEC97CCP-316, 0x1.5BD629B25AA23P-236)) === bareinterval(0x7.DEA605DEC97C8P-316, 0x1.5BD629B25AA23P-236) + + @test asinh(bareinterval(0x6.65D7E0A247778P-56, 0x3.AE1DC13A652CAP+168)) === bareinterval(0x6.65D7E0A247774P-56, 0x7.671E008768830P+4) + + @test asinh(bareinterval(0x5.2B55801231EC8P-344, 0xA.27B4555158148P-68)) === bareinterval(0x5.2B55801231EC4P-344, 0xA.27B4555158148P-68) + + @test asinh(bareinterval(0x6.36B661DCE2688P-236, 0x1.D68A6BA7E617FP+12)) === bareinterval(0x6.36B661DCE2684P-236, 0x9.9E9F4F5A56088P+0) + + @test asinh(bareinterval(0x1.EB0E1AB78F314P-480, 0x1.98EF0C6A8BD66P+132)) === bareinterval(0x1.EB0E1AB78F313P-480, 0x5.CA82DEDB3D320P+4) + + @test asinh(bareinterval(0x7.4CF193131FA64P-192, 0x1.C08152CC09416P+220)) === bareinterval(0x7.4CF193131FA60P-192, 0x9.9BF0B87669850P+4) + + @test asinh(bareinterval(0x1.7036C237D5B00P-672, 0x6.F70E0DA4D2BA0P-140)) === bareinterval(0x1.7036C237D5AFFP-672, 0x6.F70E0DA4D2BA0P-140) + + @test asinh(bareinterval(0x1.D283CF8F05665P+252, 0xB.24D19E00C8460P+324)) === bareinterval(0xA.FF762A8B30EA0P+4, 0xE.3AF0836B2F5B0P+4) + + @test asinh(bareinterval(0x1.8BCA641025A83P-124, 0x5.F775993940188P-120)) === bareinterval(0x1.8BCA641025A82P-124, 0x5.F775993940188P-120) + + @test acosh(bareinterval(0x5.AD89AD14DDC74P+272, 0x2.6EC5D31670A5EP+860)) === bareinterval(0xB.EF73BF42C19D8P+4, 0x2.55B05064B6C2AP+8) + + @test acosh(bareinterval(0x4.A457C35864940P+344, 0x2.3ADEFB54BC048P+444)) === bareinterval(0xF.0ABC113DB1AF0P+4, 0x1.3540A29BC6B5EP+8) + + @test acosh(bareinterval(0x6.941C8B9506D90P+56, 0x3.B11D8083AE958P+744)) === bareinterval(0x2.964A9197BF832P+4, 0x2.05B3663FAE652P+8) + + @test acosh(bareinterval(0x1.09A940A083EE3P+132, 0x1.047FD514ADF08P+384)) === bareinterval(0x5.C39C22D7AA908P+4, 0x1.0AE10BDF7FE81P+8) + + @test acosh(bareinterval(0x7.710740B71A0D4P+256, 0xF.C0798D156BFA0P+560)) === bareinterval(0xB.42559B5CF34E8P+4, 0x1.879CCE87EE3A1P+8) + + @test acosh(bareinterval(0x2.3721A01F70456P+564, 0x9.C62BBF31FD290P+728)) === bareinterval(0x1.886C6F1DDDFF7P+8, 0x1.FB958311209BFP+8) + + @test acosh(bareinterval(0x6.F06D452BDCEF0P+44, 0x2.4825931366BBCP+520)) === bareinterval(0x2.120F95BD1F706P+4, 0x1.69F464545899AP+8) + + @test acosh(bareinterval(0x5.D326D4B0883D8P+76, 0x1.77175C5A113ADP+528)) === bareinterval(0x3.7226BF0157930P+4, 0x1.6F0E8DBF98710P+8) + + @test acosh(bareinterval(0x1.05ADFE119D4C2P+296, 0x2.6BCDF50E05E34P+1020)) === bareinterval(0xC.DE2FBE78FEC28P+4, 0x2.C49666459E1A4P+8) + + @test acosh(bareinterval(0xA.7F5D255B81268P+408, 0x1.9D1EDDC132B36P+864)) === bareinterval(0x1.1DD92C82827A1P+8, 0x2.580D06072BF20P+8) + + @test acosh(bareinterval(0xC.FBE4E2C6D0A80P+484, 0x4.DF75BDC17C330P+868)) === bareinterval(0x1.52BD770642386P+8, 0x2.5BEDB7E376E18P+8) + + @test acosh(bareinterval(0xB.241032F9700A0P+380, 0x1.04A65B06B2920P+640)) === bareinterval(0x1.0A7FEC190CCEEP+8, 0x1.BC5349B021815P+8) + + @test acosh(bareinterval(0x5.F207EAF5F8BB4P+608, 0xA.BC87C6F90AEE0P+648)) === bareinterval(0x1.A7E8C5069EA32P+8, 0x1.C439E5E8A511CP+8) + + @test acosh(bareinterval(0x1.BCD62C46ADFD7P+16, 0xA.CD289B35ECD00P+564)) === bareinterval(0xC.56062C0C41518P+0, 0x1.8A0201556D85AP+8) + + @test acosh(bareinterval(0x6.534BBA40A0B44P+224, 0x1.8DE35856E91FBP+452)) === bareinterval(0x9.DCD7CC0C7FFB8P+4, 0x1.3A6FC95911674P+8) + + @test acosh(bareinterval(0x2.C4F59012F4E48P+508, 0x1.1854765A9A205P+688)) === bareinterval(0x1.61D49DF92AB79P+8, 0x1.DDAB5081E5A0EP+8) + + @test acosh(bareinterval(0x8.6F890522C18B0P+44, 0x3.F87592D71E06CP+220)) === bareinterval(0x2.152F7D2DBF2BCP+4, 0x9.A907E7C701690P+4) + + @test acosh(bareinterval(0x9.2A9035A578970P+124, 0x1.35EE42DCA8B75P+608)) === bareinterval(0x5.8DBE2A7E96990P+4, 0x1.A6515B9ECF2F1P+8) + + @test acosh(bareinterval(0x5.2641115F86D38P+204, 0x7.BE33D080E6584P+252)) === bareinterval(0x8.FBBEB3B84C708P+4, 0xB.169BBE1313F68P+4) + + @test acosh(bareinterval(0xA.8746F72A1BD90P+72, 0x5.6ABE29A315520P+872)) === bareinterval(0x3.4F42DBFC0E4B4P+4, 0x2.5ECE9922C7894P+8) + + @test acosh(bareinterval(0xB.D0973FF704000P+224, 0x2.2FD9ABBD09D34P+976)) === bareinterval(0x9.E6D6EA0633070P+4, 0x2.A5FCBEDD15F2CP+8) + + @test acosh(bareinterval(0xA.C15D51DB7D9F0P+536, 0x1.7207A70831D7AP+796)) === bareinterval(0x1.76986E964982DP+8, 0x2.28CE847F69DCAP+8) + + @test acosh(bareinterval(0x4.280BEC7911E7CP+180, 0x6.B4F11E86ECA38P+792)) === bareinterval(0x7.EE261446DD5F8P+4, 0x2.27919F48F2C20P+8) + + @test acosh(bareinterval(0x3.4B22674960B0EP+468, 0xA.505A061DF4CD8P+808)) === bareinterval(0x1.4647297977E4EP+8, 0x2.3316ED57009D4P+8) + + @test acosh(bareinterval(0x2.383FC27D5E4E4P+756, 0x5.88E9C96565E54P+920)) === bareinterval(0x2.0D82822002358P+8, 0x2.801980299550CP+8) + + @test acosh(bareinterval(0x1.20E762C8AAB55P+72, 0x1.DBB7B8FE35847P+960)) === bareinterval(0x3.2B87D37C9EAFAP+4, 0x2.9ABBED2A77E62P+8) + + @test acosh(bareinterval(0x1.1265074E9E3DFP+792, 0x2.229B285A709C0P+920)) === bareinterval(0x2.25BC2FC876EBCP+8, 0x2.7F25A89FE16E6P+8) + + @test acosh(bareinterval(0x1.054DCDEF21349P+436, 0x1.618994D07D9A7P+636)) === bareinterval(0x1.2EED02D819A15P+8, 0x1.B9DB8970CC5ECP+8) + + @test acosh(bareinterval(0x4.5BE0D9A7FF0CCP+460, 0x2.6F2C55F16354AP+568)) === bareinterval(0x1.4103588C86AB6P+8, 0x1.8B4A572E180D4P+8) + + @test acosh(bareinterval(0x9.BD8B9A7FB6630P+80, 0x2.AD5F8458C8722P+768)) === bareinterval(0x3.A6BD416FCCF70P+4, 0x2.1603D4EDCB36AP+8) + + @test atanh(bareinterval(-0x3.11A309475E762P-164, -0xC.3784302E15500P-680)) === bareinterval(-0x3.11A309475E764P-164, -0xC.3784302E15500P-680) + + @test atanh(bareinterval(-0x5.7DD17A4248D38P-280, -0x2.898FC0F386F74P-640)) === bareinterval(-0x5.7DD17A4248D3CP-280, -0x2.898FC0F386F74P-640) + + @test atanh(bareinterval(-0xE.D83DCD7F564A0P-296, -0x1.62F61FBA0F40FP-764)) === bareinterval(-0xE.D83DCD7F564A8P-296, -0x1.62F61FBA0F40FP-764) + + @test atanh(bareinterval(-0x1.67712A1E64C2CP-944, -0x1.C0102C4D258EFP-976)) === bareinterval(-0x1.67712A1E64C2DP-944, -0x1.C0102C4D258EFP-976) + + @test atanh(bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4AP-612)) === bareinterval(0x2.E3D991AE84668P-728, 0x1.92C3C728CCF4BP-612) + + @test atanh(bareinterval(-0x1.BCD3FEB3B0175P-640, +0x1.BEBE69E3BF3C2P-536)) === bareinterval(-0x1.BCD3FEB3B0176P-640, +0x1.BEBE69E3BF3C3P-536) + + @test atanh(bareinterval(-0x1.2469575189327P-372, -0x7.51C0C39F58A4CP-1008)) === bareinterval(-0x1.2469575189328P-372, -0x7.51C0C39F58A4CP-1008) + + @test atanh(bareinterval(-0x1.C4D163A6CCCD9P-336, -0x1.3BEE6DAB70397P-796)) === bareinterval(-0x1.C4D163A6CCCDAP-336, -0x1.3BEE6DAB70397P-796) + + @test atanh(bareinterval(-0x2.0FAE5DE90C98CP-896, -0x2.2079777EC2418P-976)) === bareinterval(-0x2.0FAE5DE90C98EP-896, -0x2.2079777EC2418P-976) + + @test atanh(bareinterval(-0x1.08C248C37E53BP-816, +0x2.8C9F04EE5DE84P-948)) === bareinterval(-0x1.08C248C37E53CP-816, +0x2.8C9F04EE5DE86P-948) + + @test atanh(bareinterval(-0x2.0002542B01474P-228, +0x2.4D59F217BF74CP-796)) === bareinterval(-0x2.0002542B01476P-228, +0x2.4D59F217BF74EP-796) + + @test atanh(bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D78P-556)) === bareinterval(0xD.D4033889729A0P-844, 0x7.44451BF919D7CP-556) + + @test atanh(bareinterval(-0x2.08918B016995CP-64, +0x3.3FC26450C6E4AP-268)) === bareinterval(-0x2.08918B016995EP-64, +0x3.3FC26450C6E4CP-268) + + @test atanh(bareinterval(-0x2.66C95BD8D7716P-388, +0x1.7E16B310F878AP-232)) === bareinterval(-0x2.66C95BD8D7718P-388, +0x1.7E16B310F878BP-232) + + @test atanh(bareinterval(-0x3.D9C66BD30B774P-256, -0x4.A8C30F678CB68P-456)) === bareinterval(-0x3.D9C66BD30B776P-256, -0x4.A8C30F678CB68P-456) + + @test atanh(bareinterval(-0x1.AA045CCB15AEDP-804, +0xD.450C473265610P-24)) === bareinterval(-0x1.AA045CCB15AEEP-804, +0xD.450C4732686C0P-24) + + @test atanh(bareinterval(-0x2.23ADFA571FC3CP-344, -0x1.30D1074DC059EP-868)) === bareinterval(-0x2.23ADFA571FC3EP-344, -0x1.30D1074DC059EP-868) + + @test atanh(bareinterval(-0x3.DFBC1A4BF3888P-68, -0x4.A89E39B247C84P-840)) === bareinterval(-0x3.DFBC1A4BF388AP-68, -0x4.A89E39B247C84P-840) + + @test atanh(bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A55EP-408)) === bareinterval(0x9.583064525D370P-496, 0x2.C67652F06A560P-408) + + @test atanh(bareinterval(-0x3.38BF880EC3082P-304, -0x7.7B19877E536ACP-512)) === bareinterval(-0x3.38BF880EC3084P-304, -0x7.7B19877E536ACP-512) + + @test atanh(bareinterval(-0x2.ADBF037238702P-44, +0x1.98DC940C3AE1EP-564)) === bareinterval(-0x2.ADBF037238704P-44, +0x1.98DC940C3AE1FP-564) + + @test atanh(bareinterval(-0x4.E4A79C48B3A58P-328, +0xA.28B02E59D39D8P-856)) === bareinterval(-0x4.E4A79C48B3A5CP-328, +0xA.28B02E59D39E0P-856) + + @test atanh(bareinterval(-0x6.80D3E87B911D8P-232, -0x2.3DF54212C46E4P-520)) === bareinterval(-0x6.80D3E87B911DCP-232, -0x2.3DF54212C46E4P-520) + + @test atanh(bareinterval(-0x1.4E54C309C46F8P-480, +0x9.47E982AC83F98P-688)) === bareinterval(-0x1.4E54C309C46F9P-480, +0x9.47E982AC83FA0P-688) + + @test atanh(bareinterval(-0x2.276202227A6DEP-808, +0x1.C53E9BA64FADFP-768)) === bareinterval(-0x2.276202227A6E0P-808, +0x1.C53E9BA64FAE0P-768) + + @test atanh(bareinterval(-0x4.8E4B4D7BA6DD0P-212, -0x1.4B35284C1064BP-548)) === bareinterval(-0x4.8E4B4D7BA6DD4P-212, -0x1.4B35284C1064BP-548) + + @test atanh(bareinterval(-0x3.5C52B8D9FF582P-248, -0x2.AF868D652B866P-912)) === bareinterval(-0x3.5C52B8D9FF584P-248, -0x2.AF868D652B866P-912) + + @test atanh(bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38168P-664)) === bareinterval(0x1.6938CC5EE183AP-692, 0xB.F7A583AC38170P-664) + + @test atanh(bareinterval(-0x3.68B35F23B2506P-560, +0x9.F9C9246D05138P-304)) === bareinterval(-0x3.68B35F23B2508P-560, +0x9.F9C9246D05140P-304) + + @test atanh(bareinterval(-0xA.BDE70B6850EA0P-516, +0x2.BB76D5BF703FAP-1020)) === bareinterval(-0xA.BDE70B6850EA8P-516, +0x2.BB76D5BF703FCP-1020) + + @test acoth(bareinterval(0x5.AD89AD14DDC78P+272, 0x2.6EC5D31670A60P+860)) === bareinterval(0x6.93B8C1A4ADA4CP-864, 0x2.D165505974CDCP-276) + + @test acoth(bareinterval(-0x2.6EC5D31670A60P+860, -0x5.AD89AD14DDC78P+272)) === bareinterval(-0x2.D165505974CDCP-276, -0x6.93B8C1A4ADA4CP-864) + + @test acoth(bareinterval(0x4.A457C35864944P+344, 0x2.3ADEFB54BC04AP+444)) === bareinterval(0x7.2CCCD8F3E4D84P-448, 0x3.726295CD6E028P-348) + + @test acoth(bareinterval(-0x2.3ADEFB54BC04AP+444, -0x4.A457C35864944P+344)) === bareinterval(-0x3.726295CD6E028P-348, -0x7.2CCCD8F3E4D84P-448) + + @test acoth(bareinterval(0x6.941C8B9506D98P+56, 0x3.B11D8083AE95CP+744)) === bareinterval(0x4.55780C09BB248P-748, 0x2.6EA0EC606D92CP-60) + + @test acoth(bareinterval(-0x3.B11D8083AE95CP+744, -0x6.941C8B9506D98P+56)) === bareinterval(-0x2.6EA0EC606D92CP-60, -0x4.55780C09BB248P-748) + + @test acoth(bareinterval(0x1.09A940A083EE4P+132, 0x1.047FD514ADF09P+384)) === bareinterval(0xF.B940FE60125C0P-388, 0xF.6B0B0DCA2D740P-136) + + @test acoth(bareinterval(-0x1.047FD514ADF09P+384, -0x1.09A940A083EE4P+132)) === bareinterval(-0xF.6B0B0DCA2D740P-136, -0xF.B940FE60125C0P-388) + + @test acoth(bareinterval(0x7.710740B71A0DCP+256, 0xF.C0798D156BFB0P+560)) === bareinterval(0x1.04086A3447A55P-564, 0x2.266CE7A905524P-260) + + @test acoth(bareinterval(-0xF.C0798D156BFB0P+560, -0x7.710740B71A0DCP+256)) === bareinterval(-0x2.266CE7A905524P-260, -0x1.04086A3447A55P-564) + + @test acoth(bareinterval(0x2.3721A01F70458P+564, 0x9.C62BBF31FD298P+728)) === bareinterval(0x1.A3110641EF7BCP-732, 0x7.38E97DB7ABD94P-568) + + @test acoth(bareinterval(-0x9.C62BBF31FD298P+728, -0x2.3721A01F70458P+564)) === bareinterval(-0x7.38E97DB7ABD94P-568, -0x1.A3110641EF7BCP-732) + + @test acoth(bareinterval(0x6.F06D452BDCEF8P+44, 0x2.4825931366BBEP+520)) === bareinterval(0x7.030E427A5F700P-524, 0x2.4E45C5E18EA0EP-48) + + @test acoth(bareinterval(-0x2.4825931366BBEP+520, -0x6.F06D452BDCEF8P+44)) === bareinterval(-0x2.4E45C5E18EA0EP-48, -0x7.030E427A5F700P-524) + + @test acoth(bareinterval(0x5.D326D4B0883DCP+76, 0x1.77175C5A113AEP+528)) === bareinterval(0xA.EB85BC1375C18P-532, 0x2.BF32E14DB1D26P-80) + + @test acoth(bareinterval(-0x1.77175C5A113AEP+528, -0x5.D326D4B0883DCP+76)) === bareinterval(-0x2.BF32E14DB1D26P-80, -0xA.EB85BC1375C18P-532) + + @test acoth(bareinterval(0x1.05ADFE119D4C3P+296, 0x2.6BCDF50E05E36P+1020)) === bareinterval(0x6.9BC8F6BE69A84P-1024, 0xF.A7190DED61120P-300) + + @test acoth(bareinterval(-0x2.6BCDF50E05E36P+1020, -0x1.05ADFE119D4C3P+296)) === bareinterval(-0xF.A7190DED61120P-300, -0x6.9BC8F6BE69A84P-1024) + + @test acoth(bareinterval(0xA.7F5D255B81270P+408, 0x1.9D1EDDC132B38P+864)) === bareinterval(0x9.EA2F16D4B51A8P-868, 0x1.8630054C790C6P-412) + + @test acoth(bareinterval(-0x1.9D1EDDC132B38P+864, -0xA.7F5D255B81270P+408)) === bareinterval(-0x1.8630054C790C6P-412, -0x9.EA2F16D4B51A8P-868) + + @test acoth(bareinterval(0xC.FBE4E2C6D0A90P+484, 0x4.DF75BDC17C334P+868)) === bareinterval(0x3.4891A2770DF7CP-872, 0x1.3B7754395DD7FP-488) + + @test acoth(bareinterval(-0x4.DF75BDC17C334P+868, -0xC.FBE4E2C6D0A90P+484)) === bareinterval(-0x1.3B7754395DD7FP-488, -0x3.4891A2770DF7CP-872) + + @test acoth(bareinterval(0xB.241032F9700A8P+380, 0x1.04A65B06B2921P+640)) === bareinterval(0xF.B6EE12E44E478P-644, 0x1.6FA7BD9AAC5D2P-384) + + @test acoth(bareinterval(-0x1.04A65B06B2921P+640, -0xB.241032F9700A8P+380)) === bareinterval(-0x1.6FA7BD9AAC5D2P-384, -0xF.B6EE12E44E478P-644) + + @test acoth(bareinterval(0x5.F207EAF5F8BB8P+608, 0xA.BC87C6F90AEE8P+648)) === bareinterval(0x1.7D8116060016CP-652, 0x2.B0EE9FA61C0DAP-612) + + @test acoth(bareinterval(-0xA.BC87C6F90AEE8P+648, -0x5.F207EAF5F8BB8P+608)) === bareinterval(-0x2.B0EE9FA61C0DAP-612, -0x1.7D8116060016CP-652) + + @test acoth(bareinterval(0x1.BCD62C46ADFD9P+16, 0xA.CD289B35ECD08P+564)) === bareinterval(0x1.7B35C74EEC020P-568, 0x9.35374E76B1BE8P-20) + + @test acoth(bareinterval(-0xA.CD289B35ECD08P+564, -0x1.BCD62C46ADFD9P+16)) === bareinterval(-0x9.35374E76B1BE8P-20, -0x1.7B35C74EEC020P-568) + + @test acoth(bareinterval(0x6.534BBA40A0B4CP+224, 0x1.8DE35856E91FDP+452)) === bareinterval(0xA.4B5AAEDFCE6A8P-456, 0x2.878CF52E5FBF8P-228) + + @test acoth(bareinterval(-0x1.8DE35856E91FDP+452, -0x6.534BBA40A0B4CP+224)) === bareinterval(-0x2.878CF52E5FBF8P-228, -0xA.4B5AAEDFCE6A8P-456) + + @test expm1(bareinterval(-0x1.16CC0DF1540F5P+112, -0x1.B3E4076622F04P-232)) === bareinterval(-0x1.0000000000000P+0, -0x1.B3E4076622F03P-232) + + @test expm1(bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0508P-508)) === bareinterval(-0x2.42042B9A88438P-220, -0x2.A213429DB0506P-508) + + @test expm1(bareinterval(-0x2.0E2E40B15D814P+272, -0x1.5D74CFDA6B292P-200)) === bareinterval(-0x1.0000000000000P+0, -0x1.5D74CFDA6B291P-200) + + @test expm1(bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3472P-456)) === bareinterval(-0x2.0EA791886F712P-416, -0x3.FE66A8D1A3470P-456) + + @test expm1(bareinterval(-0x8.80EEFDF700148P+332, -0x1.C4E85E50A626DP+0)) === bareinterval(-0x1.0000000000000P+0, -0xD.45BCBA84EE268P-4) + + @test expm1(bareinterval(-0x6.CA83546563A5CP+236, -0x4.F0F28370909FCP-440)) === bareinterval(-0x1.0000000000000P+0, -0x4.F0F28370909F8P-440) + + @test expm1(bareinterval(-0x4.E60572D4FCFD0P+172, -0x1.EB095183538C8P-344)) === bareinterval(-0x1.0000000000000P+0, -0x1.EB095183538C7P-344) + + @test expm1(bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE90P-756)) === bareinterval(-0x2.7ED8954764B12P-288, -0x8.71DC22117BE88P-756) + + @test expm1(bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357B0P-564)) === bareinterval(-0xD.CF39B8DD68B98P-76, -0x8.0205C5B1357A8P-564) + + @test expm1(bareinterval(-0x4.AF296DD37FD74P+256, -0x5.CBE2BD423B02CP-48)) === bareinterval(-0x1.0000000000000P+0, -0x5.CBE2BD423AF1CP-48) + + @test expm1(bareinterval(-0x1.1FBA2D1252D2BP+656, -0x2.4B7A4095C91B4P+8)) === bareinterval(-0x1.0000000000000P+0, -0xF.FFFFFFFFFFFF8P-4) + + @test expm1(bareinterval(-0x1.44F2134E1901EP+8, -0x2.581DAD9AFE6DCP-172)) === bareinterval(-0x1.0000000000000P+0, -0x2.581DAD9AFE6DAP-172) + + @test expm1(bareinterval(-0x2.9529E333F2ABAP+988, -0x7.19390F862F49CP-544)) === bareinterval(-0x1.0000000000000P+0, -0x7.19390F862F498P-544) + + @test expm1(bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57194P-440)) === bareinterval(-0x1.58391FD92C387P-148, -0x4.0C12426A57190P-440) + + @test expm1(bareinterval(-0xB.FADC4FB83E140P+348, -0xF.13E388B2165F0P-512)) === bareinterval(-0x1.0000000000000P+0, -0xF.13E388B2165E8P-512) + + @test expm1(bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED018P-316)) === bareinterval(-0x8.86826CE1AB700P-240, -0x4.FEA8D3A3ED014P-316) + + @test expm1(bareinterval(0x1.0000000000000P+0, 0x2.0000000000000P+0)) === bareinterval(0x1.B7E151628AED2P+0, 0x6.63992E35376B8P+0) + + @test expm1(bareinterval(-0x1.0000000000000P+0, +0x2.0000000000000P+0)) === bareinterval(-0xA.1D2A7274C4328P-4, +0x6.63992E35376B8P+0) + + @test expm1(bareinterval(-0x5.0000000000000P+0, -0x3.0000000000000P+0)) === bareinterval(-0xF.E466C01FF2AD0P-4, -0xF.341279998A7A8P-4) + + @test expm1(bareinterval(-0x2.0000000000000P+0, +0x9.9999999999998P-4)) === bareinterval(-0xD.D5AAAB880FC70P-4, +0xD.27660B11A9EF8P-4) + + @test expm1(bareinterval(0x4.0000000000000P-1076, 0x4.4444400000000P-1056)) === bareinterval(0x4.0000000000000P-1076, 0x4.4444800000000P-1056) + + @test expm1(bareinterval(0x4.4440000000000P-1064, 0x1.0000000000000P+0)) === bareinterval(0x4.4440000000000P-1064, 0x1.B7E151628AED3P+0) + + @test expm1(bareinterval(-0x4.4444000000000P-1060, +0x4.4444000000000P-1060)) === bareinterval(-0x4.4444000000000P-1060, +0x4.4448000000000P-1060) + + @test expm1(bareinterval(-0x4.4400000000000P-1068, +0x1.FFF0000000000P+0)) === bareinterval(-0x4.4400000000000P-1068, +0x6.6322F8540CFB4P+0) + + @test expm1(bareinterval(-0x1.FFFF000000000P+0, -0x8.8888880000000P-1052)) === bareinterval(-0xD.D5A88131A6240P-4, -0x8.8888840000000P-1052) + + @test expm1(bareinterval(-0x1.FFFFFFF000000P+0, +0x8.CD11555400000P-1044)) === bareinterval(-0xD.D5AAAB656A718P-4, +0x8.CD11555800000P-1044) + + @test log1p(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(0xC.4B4A6EB6B3AE8P-264, 0x4.227AD8183FB70P+4) + + @test log1p(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(0x2.6213E21B14892P-516, 0x6.6606F0995E5F4P-224) + + @test log1p(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(0x9.0FF2CAA1B3040P-240, 0xA.40B346F454218P+4) + + @test log1p(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(0x8.E2ADA8DFBE930P-492, 0x3.67CB3BE0BB146P-452) + + @test log1p(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x8.80F0717A1DC40P+4, 0x9.D6130F01F8B78P+4) + + @test log1p(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(0x6.A000A1283845CP-44, 0xC.091AAD1207058P+4) + + @test log1p(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(0x1.3C84E4F9C80CDP-476, 0x8.A1137BDE55CF8P+4) + + @test log1p(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(0x8.41D2DB6D93540P-376, 0x6.21D80D9193AB8P+4) + + @test log1p(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(0x1.2C18FEEBCAEADP-768, 0x1.C369E759DF5E3P-328) + + @test log1p(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(0x4.D94E91619D3ECP-580, 0x2.9F6CAF6B5513EP-132) + + @test log1p(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x5.15D8B410E0A5CP+4, 0xC.0A13DC536CD58P+4) + + @test log1p(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(0x3.36DE5C55594ECP-100, 0x8.DFF506FE0D9F8P+4) + + @test log1p(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x4.5771391F308D8P+0, 0x1.9D179EA5204D0P+8) + + @test log1p(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0xE.CD14C501247C0P+0, 0x1.B46DC0D02B874P+8) + + @test log1p(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(0x2.33950F38F830CP-176, 0x5.BE0377E504F78P-24) + + @test log1p(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(0x3.24F03DF33568AP-560, 0x2.805CE2DC91036P+8) + + @test log1p(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(0x2.D572639DC5FA6P-468, 0x1.95CF42AA171CDP-160) + + @test log1p(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(0x4.705A028302DACP-532, 0xE.1A4A3523F2658P+4) + + @test log1p(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x6.564D09AD1D214P+4, 0x8.914A9531FD118P+4) + + @test log1p(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(0x4.9FA5A1E4DF73CP-328, 0x1.11B85141B78F6P-240) + + @test log1p(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0xF.BD7308ED73FF0P+4, 0x1.6DF4DA39DC5DDP+8) + + @test log1p(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(0x6.88441038D56B4P-108, 0x5.F718BBF0CE2F8P+4) + + @test log1p(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(0x7.1761CAB055130P-356, 0x1.92EFD09488689P-76) + + @test log1p(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(0x6.2085E427413C4P-252, 0xB.8CDD3AFE235D0P-36) + + @test log1p(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(0xB.F5F1C0FA33970P-504, 0x3.36D2B121508A8P+4) + + @test log1p(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(0xB.BC7E37EB2D380P-216, 0x8.5ADC069F618A8P+4) + + @test log1p(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(0x1.E139DD116F867P-688, 0xD.2545346D68FD0P-148) + + @test log1p(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x8.6243148F46208P+4, 0xB.519B6E544F898P+4) + + @test log1p(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(0x5.9C4642ED78BC4P-340, 0x1.990C99B6124FEP+8) + + @test log1p(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(0xF.C05EA810DFE80P-180, 0xA.05884FBED5F48P-152) + + @test sqrt(bareinterval(0xC.4B4A6EB6B3AF0P-264, 0xA.DD2C4C1BE4B30P+92)) === bareinterval(0x3.819C8C44FCAE8P-132, 0xD.2F2830FA93228P+44) + + @test sqrt(bareinterval(0x2.6213E21B14894P-516, 0x6.6606F0995E5F4P-224)) === bareinterval(0x6.2CC8B5D1B7648P-260, 0x2.878F8E10E2752P-112) + + @test sqrt(bareinterval(0x9.0FF2CAA1B3048P-240, 0x1.95F14B9BA7449P+236)) === bareinterval(0x3.02A74AB0BBF36P-120, 0x5.0979194446A10P+116) + + @test sqrt(bareinterval(0x8.E2ADA8DFBE938P-492, 0x3.67CB3BE0BB146P-452)) === bareinterval(0xB.EC63BFE10BCC8P-248, 0x7.61AC89CF17804P-228) + + @test sqrt(bareinterval(0x1.394270BBCBA7EP+196, 0x8.4976F0BF45A40P+224)) === bareinterval(0x4.6CBEB2D8F6718P+96, 0x2.E0F32319AC30AP+112) + + @test sqrt(bareinterval(0x6.A000A12839A50P-44, 0x3.86DC59439415AP+276)) === bareinterval(0xA.4BAEE7F482900P-24, 0x7.830C8D5A5F3D8P+136) + + @test sqrt(bareinterval(0x1.3C84E4F9C80CEP-476, 0x9.1E9439C3B4358P+196)) === bareinterval(0x4.729F7C344CE30P-240, 0xC.14519D6697FF0P+96) + + @test sqrt(bareinterval(0x8.41D2DB6D93548P-376, 0x2.EDCF4A7919034P+140)) === bareinterval(0x2.DF9F14A64C77AP-188, 0x6.D87D667089BD8P+68) + + @test sqrt(bareinterval(0x1.2C18FEEBCAEAEP-768, 0x1.C369E759DF5E3P-328)) === bareinterval(0x1.152C585EDDB6AP-384, 0x1.53F1A81CAA4A0P-164) + + @test sqrt(bareinterval(0x4.D94E91619D3F0P-580, 0x2.9F6CAF6B5513EP-132)) === bareinterval(0x8.CEDC2135E05E8P-292, 0x6.7A5BEF2579C34P-68) + + @test sqrt(bareinterval(0x2.9CD12C1D0AAC4P+116, 0x3.BF7E0E52DC1AAP+276)) === bareinterval(0x6.7722C88D985D8P+56, 0x7.BE7173245A668P+136) + + @test sqrt(bareinterval(0x3.36DE5C55594EEP-100, 0x1.D0460177B1553P+204)) === bareinterval(0x7.2BE248A308D24P-52, 0x5.630224B50BCF8P+100) + + @test sqrt(bareinterval(0x4.BD4031736F7A8P+4, 0xF.A10BB3C91C7B0P+592)) === bareinterval(0x8.B53B61217B4F8P+0, 0x3.F40FA54A699E2P+296) + + @test sqrt(bareinterval(0x2.8E258DB3C44F8P+20, 0x3.1A4EDE719A4C0P+628)) === bareinterval(0x6.64E1F64817930P+8, 0x7.0BBE006E8934CP+312) + + @test sqrt(bareinterval(0x2.33950F38F830EP-176, 0x5.BE0388619B018P-24)) === bareinterval(0x1.7BD69462CDAD2P-88, 0x2.6573BFB248EF0P-12) + + @test sqrt(bareinterval(0x3.24F03DF33568CP-560, 0xE.67255823421E8P+920)) === bareinterval(0x1.C5F168118C2B1P-280, 0x3.CB8CCAD62ED10P+460) + + @test sqrt(bareinterval(0x2.D572639DC5FA8P-468, 0x1.95CF42AA171CDP-160)) === bareinterval(0x6.BBC8A036CC930P-236, 0x1.4250C275A7B2BP-80) + + @test sqrt(bareinterval(0x4.705A028302DB0P-532, 0x2.E57341C14970CP+324)) === bareinterval(0x8.6D6D9A3EA2160P-268, 0x6.CEB17F56F1B50P+160) + + @test sqrt(bareinterval(0x4.DBA1D21D6F308P+144, 0x3.667988C57865AP+196)) === bareinterval(0x2.343E215EB2264P+72, 0x7.603E67F0E1DD0P+96) + + @test sqrt(bareinterval(0x4.9FA5A1E4DF740P-328, 0x1.11B85141B78F6P-240)) === bareinterval(0x2.26777C4E368BEP-164, 0x1.08B63617A4210P-120) + + @test sqrt(bareinterval(0xA.0CDE9DC015B08P+360, 0xF.99D84F862AC58P+524)) === bareinterval(0x3.2B934CDCC29E0P+180, 0xF.CC99981010AD0P+260) + + @test sqrt(bareinterval(0x6.88441038D56B8P-108, 0x3.3D65C09938132P+136)) === bareinterval(0xA.392C9B2283838P-56, 0x1.CCC9C68E6B873P+68) + + @test sqrt(bareinterval(0x7.1761CAB055134P-356, 0x1.92EFD09488689P-76)) === bareinterval(0xA.A6DE001E1A878P-180, 0x5.04B0B42B185F4P-40) + + @test sqrt(bareinterval(0x6.2085E427413C8P-252, 0xB.8CDD3B024EA10P-36)) === bareinterval(0x9.E6B17DD90B818P-128, 0xD.9821AE0A3F288P-20) + + @test sqrt(bareinterval(0xB.F5F1C0FA33978P-504, 0x4.924DD8D50B1CCP+72)) === bareinterval(0x3.755B7F9B147FCP-252, 0x2.235AF64AA2532P+36) + + @test sqrt(bareinterval(0xB.BC7E37EB2D388P-216, 0x1.CFE27BB53DEBBP+192)) === bareinterval(0x3.6D0318CB65970P-108, 0x1.589B93C7CC280P+96) + + @test sqrt(bareinterval(0x1.E139DD116F868P-688, 0xD.2545346D68FD0P-148)) === bareinterval(0x1.5EFD65C23F515P-344, 0xE.80B36809CA340P-76) + + @test sqrt(bareinterval(0x2.E0C8E64A890ACP+192, 0x2.6A898D2CAA9A4P+260)) === bareinterval(0x1.B24CEBB3D4B84P+96, 0x6.37B4CD9068634P+128) + + @test sqrt(bareinterval(0x5.9C4642ED78BC8P-340, 0x4.631BD2232F0C0P+588)) === bareinterval(0x9.797C4D6802170P-172, 0x8.60D1F01F1A8D8P+292) + + @test sqrt(bareinterval(0xF.C05EA810DFE88P-180, 0xA.05884FBED5F48P-152)) === bareinterval(0xF.E00F72E6C82F8P-92, 0x3.2A6AD8ACFCBB0P-76) + + @test pown(bareinterval(-0xA.644C9D88EA8C8P-152, -0xD.8EC7927926F18P-944), 2) === bareinterval(0x0.0000000000000P+0, 0x6.BFD4840B33478P-300) + + @test pown(bareinterval(-0x1.9EE1A9DB994F5P-436, -0x6.D914701C82FECP-624), 2) === bareinterval(0x0.0000000000000P+0, 0x2.A05EA84E4893CP-872) + + @test pown(bareinterval(-0x5.65057F3EFFC60P+4, -0x2.3617CF5815ECAP-960), 2) === bareinterval(0x0.0000000000000P+0, 0x1.D1A144EFBEB44P+12) + + @test pown(bareinterval(-0x1.975299CCB0E08P-372, +0xB.BEC7D35B45B00P-588), 2) === bareinterval(0x0.0000000000000P+0, 0x2.8817BFAFBDF18P-744) + + @test pown(bareinterval(-0x3.51D388D47AED2P-356, -0x1.C3A9CD7025105P-564), 2) === bareinterval(0x0.0000000000000P+0, 0xB.051CC05C2EBE0P-712) + + @test pown(bareinterval(-0xC.DB363268CF708P-332, -0x2.171B7D7BFE4E0P-412), 2) === bareinterval(0x4.5E83E96FF693CP-824, 0xA.548CA7F8C13A0P-660) + + @test pown(bareinterval(-0x1.32690AAC2472DP-40, -0x8.706EBDCF39C88P-792), 2) === bareinterval(0x0.0000000000000P+0, 0x1.6EBF489D48CA5P-80) + + @test pown(bareinterval(-0x5.0145AF0C53324P-200, -0x2.F5A0CB3301856P-204), 2) === bareinterval(0x8.C23056BA480A8P-408, 0x1.90CBA74D12CF4P-396) + + @test pown(bareinterval(0xF.4077C7E8CD6A0P-268, 0x3.753426098AC5AP-80), 2) === bareinterval(0xE.89E458947EFA8P-532, 0xB.F4E1999D73020P-160) + + @test pown(bareinterval(-0xB.B25F8D8BB7FB8P-376, -0x2.017A332F9B05CP-916), 2) === bareinterval(0x0.0000000000000P+0, 0x8.8D07F2E827770P-748) + + @test pown(bareinterval(-0xD.947CA427FDFE0P-592, +0xE.3BE493B5BC8E8P-16), 2) === bareinterval(0x0.0000000000000P+0, 0xC.A9B03500DD578P-28) + + @test pown(bareinterval(-0x9.C46198B2471F0P-336, -0x1.65ED85DF2D4B7P-576), 2) === bareinterval(0x0.0000000000000P+0, 0x5.F6582538F0F44P-668) + + @test pown(bareinterval(-0x3.2C867C027DB44P-936, +0x6.1883EA827AB6CP-388), 2) === bareinterval(0x0.0000000000000P+0, 0x2.52887FE100FF0P-772) + + @test pown(bareinterval(-0x3.560EF91C47DEAP-492, +0x5.413664DD17ABCP-20), 2) === bareinterval(0x0.0000000000000P+0, 0x1.B9CBC9B69E7BFP-36) + + @test pown(bareinterval(-0x8.36BFCD74A6D68P-304, -0x3.2C20EB130D510P-836), 2) === bareinterval(0x0.0000000000000P+0, 0x4.377B251ABDCC0P-604) + + @test pown(bareinterval(-0x6.BCEC84603958CP-500, -0x1.068B13DA99666P-760), 2) === bareinterval(0x0.0000000000000P+0, 0x2.D668271745A42P-996) + + @test pown(bareinterval(-0x1.2789C2D583BCDP-568, -0x1.F2BD89DAD0665P-780), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(-0xC.FE4E8D857E3E0P-548, +0x1.580844B9DC45CP-780), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(-0xC.508D29ACB01B8P-52, +0x1.B1E6B793078DDP-664), 2) === bareinterval(0x0.0000000000000P+0, 0x9.7A69470135FA8P-100) + + @test pown(bareinterval(-0xA.12F7783880A78P-124, -0x3.765DF69EE106EP-548), 2) === bareinterval(0x0.0000000000000P+0, 0x6.57CBD208B34ACP-244) + + @test pown(bareinterval(-0x6.3A58D52FDF844P-896, -0x1.039E2518CF503P-1008), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(-0xB.DD3171FDEEC18P-168, +0x1.069E434EE9E0FP-740), 2) === bareinterval(0x0.0000000000000P+0, 0x8.CC15E342FC8D8P-332) + + @test pown(bareinterval(-0x3.CF0053257533AP-776, -0x1.7883A587654E5P-928), 2) === bareinterval(0x0.0000000000000P+0, 0x4.0000000000000P-1076) + + @test pown(bareinterval(0x1.455801D3D2B63P-704, 0x3.A4C915783D07AP-28), 2) === bareinterval(0x0.0000000000000P+0, 0xD.46C8C24634FC8P-56) + + @test pown(bareinterval(-0x2.097D06F4DE3E2P-376, +0x2.2E7561FD9255EP-772), 2) === bareinterval(0x0.0000000000000P+0, 0x4.264E23607BEA8P-752) + + @test pown(bareinterval(-0x1.7E13DBB66E5A3P-84, -0x6.BC8F45D6A8F48P-540), 2) === bareinterval(0x0.0000000000000P+0, 0x2.3A3F453ECAFB4P-168) + + @test pown(bareinterval(-0x4.1F50C5F2CDA54P-276, -0x3.DF16F79756422P-496), 2) === bareinterval(0xE.FCF2D2F52B4C0P-992, 0x1.0FE5AD9038BC9P-548) + + @test pown(bareinterval(-0x7.ECC4C5EEC4CACP-328, -0x2.E02E1DB7A08F6P-876), 2) === bareinterval(0x0.0000000000000P+0, 0x3.ECDBE373EAC94P-652) + + @test pown(bareinterval(-0xC.1BC7A4C89D440P-256, +0x2.A7F56252D1D34P-608), 2) === bareinterval(0x0.0000000000000P+0, 0x9.29DBB2B42A988P-508) + + @test pown(bareinterval(-0xB.CE50D7B2F2868P-236, -0xE.6B08988339B80P-432), 2) === bareinterval(0xC.FE1B0DE21E568P-860, 0x8.B6138BE0C5B78P-468) + +end diff --git a/test/ITF1788_tests/ieee1788-constructors.jl b/test/ITF1788_tests/ieee1788-constructors.jl new file mode 100644 index 000000000..5a8c8f014 --- /dev/null +++ b/test/ITF1788_tests/ieee1788-constructors.jl @@ -0,0 +1,113 @@ +@testset "IEEE1788.a" begin + + @test bareinterval(-Inf,Inf) === entireinterval(BareInterval{Float64}) + +end + +@testset "IEEE1788.b" begin + + @test parse(BareInterval{Float64}, "[1.2345]") === bareinterval(0x1.3C083126E978DP+0, 0x1.3C083126E978EP+0) + + @test parse(BareInterval{Float64}, "[1,+infinity]") === bareinterval(1.0, Inf) + + @test parse(Interval{Float64}, "[1,1e3]_com") === interval(bareinterval(1.0, 1000.0), com) + + @test parse(Interval{Float64}, "[1,1E3]_COM") === interval(bareinterval(1.0, 1000.0), com) + +end + +@testset "IEEE1788.c" begin + + @test parse(BareInterval{Float64}, "[1.e-3, 1.1e-3]") === bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12) + + @test parse(BareInterval{Float64}, "[-0x1.3p-1, 2/3]") === bareinterval(-0x9.8000000000000P-4, +0xA.AAAAAAAAAAAB0P-4) + + @test parse(BareInterval{Float64}, "[3.56]") === bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8F5C28F5C28F6P+0) + + @test parse(BareInterval{Float64}, "3.56?1") === bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0) + + @test parse(BareInterval{Float64}, "3.56?1e2") === bareinterval(355.0, 357.0) + + @test parse(BareInterval{Float64}, "3.560?2") === bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0) + + @test parse(BareInterval{Float64}, "3.56?") === bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0) + + @test parse(BareInterval{Float64}, "3.560?2u") === bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0) + + @test parse(BareInterval{Float64}, "-10?") === bareinterval(-10.5, -9.5) + + @test parse(BareInterval{Float64}, "-10?u") === bareinterval(-10.0, -9.5) + + @test parse(BareInterval{Float64}, "-10?12") === bareinterval(-22.0, 2.0) + +end + +@testset "IEEE1788.d" begin + + @test parse(BareInterval{Float64}, "[1.234e5,Inf]") === bareinterval(123400.0, Inf) + + @test parse(BareInterval{Float64}, "3.1416?1") === bareinterval(0x3.24395810624DCP+0, 0x3.24467381D7DC0P+0) + + @test parse(BareInterval{Float64}, "[Empty]") === emptyinterval(BareInterval{Float64}) + +end + +@testset "IEEE1788.e" begin + + @test_logs (:warn,) @test interval(2,1) === nai(Interval{Float64}) + +end + +@testset "IEEE1788.e" begin + + @test parse(Interval{Float64}, "[ ]") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[entire]") === interval(bareinterval(-Inf, +Inf), dac) + + @test parse(Interval{Float64}, "[1.e-3, 1.1e-3]") === interval(bareinterval(0x4.189374BC6A7ECP-12, 0x4.816F0068DB8BCP-12), com) + + @test parse(Interval{Float64}, "[-Inf, 2/3]") === interval(bareinterval(-Inf, +0xA.AAAAAAAAAAAB0P-4), dac) + + @test parse(Interval{Float64}, "[0x1.3p-1,]") === interval(bareinterval(0x1.3p-1, Inf), dac) + + @test parse(Interval{Float64}, "[,]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "3.56?1") === interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), com) + + @test parse(Interval{Float64}, "3.56?1e2") === interval(bareinterval(355.0, 357.0), com) + + @test parse(Interval{Float64}, "3.560?2") === interval(bareinterval(0x3.8ED916872B020P+0, 0x3.8FDF3B645A1CCP+0), com) + + @test parse(Interval{Float64}, "3.56?") === interval(bareinterval(0x3.8E147AE147AE0P+0, 0x3.90A3D70A3D70CP+0), com) + + @test parse(Interval{Float64}, "3.560?2u") === interval(bareinterval(0x3.8F5C28F5C28F4P+0, 0x3.8FDF3B645A1CCP+0), com) + + @test parse(Interval{Float64}, "-10?") === interval(bareinterval(-10.5, -9.5), com) + + @test parse(Interval{Float64}, "-10?u") === interval(bareinterval(-10.0, -9.5), com) + + @test parse(Interval{Float64}, "-10?12") === interval(bareinterval(-22.0, 2.0), com) + + @test parse(Interval{Float64}, "-10??u") === interval(bareinterval(-10.0, Inf), dac) + + @test parse(Interval{Float64}, "-10??") === interval(bareinterval(-Inf, Inf), dac) + + @test parse(Interval{Float64}, "[nai]") === nai(Interval{Float64}) + + @test parse(Interval{Float64}, "3.56?1_def") === interval(bareinterval(0x3.8CCCCCCCCCCCCP+0, 0x3.91EB851EB8520P+0), def) + +end + +@testset "IEEE1788.f" begin + + @test parse(BareInterval{Float64}, "[]") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[empty]") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ empty ]") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[,]") === entireinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ entire ]") === entireinterval(BareInterval{Float64}) + +end diff --git a/test/ITF1788_tests/ieee1788-exceptions.jl b/test/ITF1788_tests/ieee1788-exceptions.jl new file mode 100644 index 000000000..ebab653f5 --- /dev/null +++ b/test/ITF1788_tests/ieee1788-exceptions.jl @@ -0,0 +1,11 @@ +@testset "exceptions" begin + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[+infinity]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(+Inf,-Inf) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(nai(Interval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[1.0000000000000001, 1.0000000000000002]") === bareinterval(1.0, 0x1.0000000000001p+0) + +end diff --git a/test/ITF1788_tests/libieeep1788_bool.jl b/test/ITF1788_tests/libieeep1788_bool.jl new file mode 100644 index 000000000..254453395 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_bool.jl @@ -0,0 +1,867 @@ +@testset "minimal_is_empty_test" begin + + @test isempty_interval(emptyinterval(BareInterval{Float64})) === true + + @test isempty_interval(bareinterval(-Inf,+Inf)) === false + + @test isempty_interval(bareinterval(1.0,2.0)) === false + + @test isempty_interval(bareinterval(-1.0,2.0)) === false + + @test isempty_interval(bareinterval(-3.0,-2.0)) === false + + @test isempty_interval(bareinterval(-Inf,2.0)) === false + + @test isempty_interval(bareinterval(-Inf,0.0)) === false + + @test isempty_interval(bareinterval(-Inf,-0.0)) === false + + @test isempty_interval(bareinterval(0.0,Inf)) === false + + @test isempty_interval(bareinterval(-0.0,Inf)) === false + + @test isempty_interval(bareinterval(-0.0,0.0)) === false + + @test isempty_interval(bareinterval(0.0,-0.0)) === false + + @test isempty_interval(bareinterval(0.0,0.0)) === false + + @test isempty_interval(bareinterval(-0.0,-0.0)) === false + +end + +@testset "minimal_is_empty_dec_test" begin + + @test isempty_interval(nai(Interval{Float64})) === false + + @test isempty_interval(interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isempty_interval(interval(bareinterval(-Inf,+Inf), def)) === false + + @test isempty_interval(interval(bareinterval(1.0,2.0), com)) === false + + @test isempty_interval(interval(bareinterval(-1.0,2.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-3.0,-2.0), dac)) === false + + @test isempty_interval(interval(bareinterval(-Inf,2.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-Inf,0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-Inf,-0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(0.0,Inf), def)) === false + + @test isempty_interval(interval(bareinterval(-0.0,Inf), trv)) === false + + @test isempty_interval(interval(bareinterval(-0.0,0.0), com)) === false + + @test isempty_interval(interval(bareinterval(0.0,-0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(0.0,0.0), trv)) === false + + @test isempty_interval(interval(bareinterval(-0.0,-0.0), trv)) === false + +end + +@testset "minimal_is_entire_test" begin + + @test isentire_interval(emptyinterval(BareInterval{Float64})) === false + + @test isentire_interval(bareinterval(-Inf,+Inf)) === true + + @test isentire_interval(bareinterval(1.0,2.0)) === false + + @test isentire_interval(bareinterval(-1.0,2.0)) === false + + @test isentire_interval(bareinterval(-3.0,-2.0)) === false + + @test isentire_interval(bareinterval(-Inf,2.0)) === false + + @test isentire_interval(bareinterval(-Inf,0.0)) === false + + @test isentire_interval(bareinterval(-Inf,-0.0)) === false + + @test isentire_interval(bareinterval(0.0,Inf)) === false + + @test isentire_interval(bareinterval(-0.0,Inf)) === false + + @test isentire_interval(bareinterval(-0.0,0.0)) === false + + @test isentire_interval(bareinterval(0.0,-0.0)) === false + + @test isentire_interval(bareinterval(0.0,0.0)) === false + + @test isentire_interval(bareinterval(-0.0,-0.0)) === false + +end + +@testset "minimal_is_entire_dec_test" begin + + @test isentire_interval(nai(Interval{Float64})) === false + + @test isentire_interval(interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isentire_interval(interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isentire_interval(interval(bareinterval(-Inf,+Inf), def)) === true + + @test isentire_interval(interval(bareinterval(-Inf,+Inf), dac)) === true + + @test isentire_interval(interval(bareinterval(1.0,2.0), com)) === false + + @test isentire_interval(interval(bareinterval(-1.0,2.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-3.0,-2.0), dac)) === false + + @test isentire_interval(interval(bareinterval(-Inf,2.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-Inf,0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-Inf,-0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(0.0,Inf), def)) === false + + @test isentire_interval(interval(bareinterval(-0.0,Inf), trv)) === false + + @test isentire_interval(interval(bareinterval(-0.0,0.0), com)) === false + + @test isentire_interval(interval(bareinterval(0.0,-0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(0.0,0.0), trv)) === false + + @test isentire_interval(interval(bareinterval(-0.0,-0.0), trv)) === false + +end + +@testset "minimal_is_nai_dec_test" begin + + @test isnai(nai(Interval{Float64})) === true + + @test isnai(interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isnai(interval(bareinterval(-Inf,+Inf), def)) === false + + @test isnai(interval(bareinterval(-Inf,+Inf), dac)) === false + + @test isnai(interval(bareinterval(1.0,2.0), com)) === false + + @test isnai(interval(bareinterval(-1.0,2.0), trv)) === false + + @test isnai(interval(bareinterval(-3.0,-2.0), dac)) === false + + @test isnai(interval(bareinterval(-Inf,2.0), trv)) === false + + @test isnai(interval(bareinterval(-Inf,0.0), trv)) === false + + @test isnai(interval(bareinterval(-Inf,-0.0), trv)) === false + + @test isnai(interval(bareinterval(0.0,Inf), def)) === false + + @test isnai(interval(bareinterval(-0.0,Inf), trv)) === false + + @test isnai(interval(bareinterval(-0.0,0.0), com)) === false + + @test isnai(interval(bareinterval(0.0,-0.0), trv)) === false + + @test isnai(interval(bareinterval(0.0,0.0), trv)) === false + + @test isnai(interval(bareinterval(-0.0,-0.0), trv)) === false + +end + +@testset "minimal_equal_test" begin + + @test isequal_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true + + @test isequal_interval(bareinterval(1.0,2.1), bareinterval(1.0,2.0)) === false + + @test isequal_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isequal_interval(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false + + @test isequal_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isequal_interval(bareinterval(1.0,2.4), bareinterval(-Inf,+Inf)) === false + + @test isequal_interval(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === true + + @test isequal_interval(bareinterval(1.0,2.4), bareinterval(1.0,Inf)) === false + + @test isequal_interval(bareinterval(-Inf,2.0), bareinterval(-Inf,2.0)) === true + + @test isequal_interval(bareinterval(-Inf,2.4), bareinterval(-Inf,2.0)) === false + + @test isequal_interval(bareinterval(-2.0,0.0), bareinterval(-2.0,0.0)) === true + + @test isequal_interval(bareinterval(-0.0,2.0), bareinterval(0.0,2.0)) === true + + @test isequal_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test isequal_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test isequal_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + +end + +@testset "minimal_equal_dec_test" begin + + @test isequal_interval(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,2.0), trv)) === true + + @test isequal_interval(interval(bareinterval(1.0,2.1), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), nai(Interval{Float64})) === false + + @test isequal_interval(nai(Interval{Float64}), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isequal_interval(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test isequal_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isequal_interval(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), trv)) === false + + @test isequal_interval(interval(bareinterval(-Inf,+Inf), def), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isequal_interval(interval(bareinterval(1.0,2.4), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isequal_interval(interval(bareinterval(1.0,Inf), trv), interval(bareinterval(1.0,Inf), trv)) === true + + @test isequal_interval(interval(bareinterval(1.0,2.4), def), interval(bareinterval(1.0,Inf), trv)) === false + + @test isequal_interval(interval(bareinterval(-Inf,2.0), trv), interval(bareinterval(-Inf,2.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-Inf,2.4), def), interval(bareinterval(-Inf,2.0), trv)) === false + + @test isequal_interval(interval(bareinterval(-2.0,0.0), trv), interval(bareinterval(-2.0,0.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-0.0,2.0), def), interval(bareinterval(0.0,2.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test isequal_interval(interval(bareinterval(-0.0,0.0), def), interval(bareinterval(0.0,0.0), trv)) === true + + @test isequal_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + +end + +@testset "minimal_subset_test" begin + + @test issubset_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,4.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,1.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,0.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-0.1,-0.0)) === true + + @test issubset_interval(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(-0.0,4.0), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(-Inf,+Inf), emptyinterval(BareInterval{Float64})) === false + + @test issubset_interval(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(-0.0,4.0), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(-0.1,1.0), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test issubset_interval(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true + + @test issubset_interval(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) === true + + @test issubset_interval(bareinterval(1.0,2.0), bareinterval(-0.0,4.0)) === true + + @test issubset_interval(bareinterval(0.1,0.2), bareinterval(0.0,4.0)) === true + + @test issubset_interval(bareinterval(0.1,0.2), bareinterval(-0.0,4.0)) === true + + @test issubset_interval(bareinterval(-0.1,-0.1), bareinterval(-4.0, 3.4)) === true + + @test issubset_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true + + @test issubset_interval(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test issubset_interval(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true + + @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test issubset_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true + +end + +@testset "minimal_subset_dec_test" begin + + @test issubset_interval(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test issubset_interval(nai(Interval{Float64}), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(nai(Interval{Float64}), interval(bareinterval(0.0,4.0), trv)) === false + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0,4.0), def)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,1.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,0.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.1,-0.0), trv)) === true + + @test issubset_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(-0.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(-0.1,1.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(-Inf,+Inf), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test issubset_interval(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.1,1.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test issubset_interval(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true + + @test issubset_interval(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test issubset_interval(interval(bareinterval(1.0,2.0), def), interval(bareinterval(-0.0,4.0), def)) === true + + @test issubset_interval(interval(bareinterval(0.1,0.2), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test issubset_interval(interval(bareinterval(0.1,0.2), trv), interval(bareinterval(-0.0,4.0), def)) === true + + @test issubset_interval(interval(bareinterval(-0.1,-0.1), trv), interval(bareinterval(-4.0, 3.4), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true + + @test issubset_interval(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,-0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,-0.0), def), interval(bareinterval(0.0,0.0), trv)) === true + + @test issubset_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true + +end + +@testset "minimal_less_test" begin + + @test isweakless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isweakless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === false + + @test isweakless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isweakless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isweakless(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isweakless(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(0.0,2.0)) === false + + @test isweakless(bareinterval(-Inf,+Inf), bareinterval(-0.0,2.0)) === false + + @test isweakless(bareinterval(0.0,2.0), bareinterval(0.0,2.0)) === true + + @test isweakless(bareinterval(0.0,2.0), bareinterval(-0.0,2.0)) === true + + @test isweakless(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === true + + @test isweakless(bareinterval(-0.0,2.0), bareinterval(1.0,2.0)) === true + + @test isweakless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === true + + @test isweakless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test isweakless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === true + + @test isweakless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === true + + @test isweakless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) === true + + @test isweakless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) === true + + @test isweakless(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true + + @test isweakless(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test isweakless(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true + + @test isweakless(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test isweakless(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true + +end + +@testset "minimal_less_dec_test" begin + + @test isweakless(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), nai(Interval{Float64})) === false + + @test isweakless(interval(bareinterval(1.0,2.0), trv), nai(Interval{Float64})) === false + + @test isweakless(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), def)) === false + + @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isweakless(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), def), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isweakless(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(0.0,2.0), def)) === false + + @test isweakless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-0.0,2.0), trv)) === false + + @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(0.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-0.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,2.0), def), interval(bareinterval(1.0,2.0), def)) === true + + @test isweakless(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === true + + @test isweakless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test isweakless(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test isweakless(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test isweakless(interval(bareinterval(-2.0,-1.0), trv), interval(bareinterval(-2.0,-1.0), trv)) === true + + @test isweakless(interval(bareinterval(-3.0,-1.5), trv), interval(bareinterval(-2.0,-1.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true + + @test isweakless(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true + + @test isweakless(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test isweakless(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,-0.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,-0.0), def), interval(bareinterval(0.0,0.0), trv)) === true + + @test isweakless(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true + +end + +@testset "minimal_precedes_test" begin + + @test precedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true + + @test precedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true + + @test precedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test precedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(-0.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test precedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false + + @test precedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test precedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === true + + @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,0.0)) === true + + @test precedes(bareinterval(-3.0, -1.0), bareinterval(-1.0,-0.0)) === true + + @test precedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === false + + @test precedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false + + @test precedes(bareinterval(-3.0, -0.1), bareinterval(-1.0,0.0)) === false + + @test precedes(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === true + + @test precedes(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === true + + @test precedes(bareinterval(-0.0,0.0), bareinterval(0.0,-0.0)) === true + + @test precedes(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === true + + @test precedes(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === true + +end + +@testset "minimal_precedes_dec_test" begin + + @test precedes(nai(Interval{Float64}), interval(bareinterval(3.0,4.0), def)) === false + + @test precedes(interval(bareinterval(3.0,4.0), trv), nai(Interval{Float64})) === false + + @test precedes(nai(Interval{Float64}), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test precedes(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test precedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test precedes(interval(bareinterval(3.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test precedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test precedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(-0.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test precedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test precedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test precedes(interval(bareinterval(1.0,3.0), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test precedes(interval(bareinterval(-3.0, -1.0), def), interval(bareinterval(-1.0,0.0), trv)) === true + + @test precedes(interval(bareinterval(-3.0, -1.0), trv), interval(bareinterval(-1.0,-0.0), trv)) === true + + @test precedes(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === false + + @test precedes(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), trv)) === false + + @test precedes(interval(bareinterval(-3.0, -0.1), trv), interval(bareinterval(-1.0,0.0), trv)) === false + + @test precedes(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === true + + @test precedes(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(0.0,0.0), def)) === true + + @test precedes(interval(bareinterval(-0.0,0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test precedes(interval(bareinterval(-0.0,0.0), def), interval(bareinterval(0.0,-0.0), trv)) === true + + @test precedes(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(0.0,0.0), trv)) === true + + @test precedes(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === true + +end + +@testset "minimal_interior_test" begin + + @test isinterior(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isinterior(emptyinterval(BareInterval{Float64}), bareinterval(0.0,4.0)) === true + + @test isinterior(bareinterval(0.0,4.0), emptyinterval(BareInterval{Float64})) === false + + @test isinterior(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isinterior(bareinterval(0.0,4.0), bareinterval(-Inf,+Inf)) === true + + @test isinterior(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,+Inf)) === true + + @test isinterior(bareinterval(-Inf,+Inf), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(1.0,2.0), bareinterval(0.0,4.0)) === true + + @test isinterior(bareinterval(-2.0,2.0), bareinterval(-2.0,4.0)) === false + + @test isinterior(bareinterval(-0.0,-0.0), bareinterval(-2.0,4.0)) === true + + @test isinterior(bareinterval(0.0,0.0), bareinterval(-2.0,4.0)) === true + + @test isinterior(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === false + + @test isinterior(bareinterval(0.0,4.4), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(-1.0,-1.0), bareinterval(0.0,4.0)) === false + + @test isinterior(bareinterval(2.0,2.0), bareinterval(-2.0,-1.0)) === false + +end + +@testset "minimal_interior_dec_test" begin + + @test isinterior(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test isinterior(nai(Interval{Float64}), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isinterior(nai(Interval{Float64}), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(0.0,4.0), def), nai(Interval{Float64})) === false + + @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(0.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isinterior(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isinterior(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isinterior(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isinterior(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(1.0,2.0), def), interval(bareinterval(0.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(-2.0,2.0), trv), interval(bareinterval(-2.0,4.0), def)) === false + + @test isinterior(interval(bareinterval(-0.0,-0.0), trv), interval(bareinterval(-2.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(0.0,0.0), def), interval(bareinterval(-2.0,4.0), trv)) === true + + @test isinterior(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === false + + @test isinterior(interval(bareinterval(0.0,4.4), trv), interval(bareinterval(0.0,4.0), trv)) === false + + @test isinterior(interval(bareinterval(-1.0,-1.0), trv), interval(bareinterval(0.0,4.0), def)) === false + + @test isinterior(interval(bareinterval(2.0,2.0), def), interval(bareinterval(-2.0,-1.0), trv)) === false + +end + +@testset "minimal_strictly_less_test" begin + + @test isstrictless(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isstrictless(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === false + + @test isstrictless(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === false + + @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === true + + @test isstrictless(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test isstrictless(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test isstrictless(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === false + + @test isstrictless(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test isstrictless(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === true + + @test isstrictless(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false + + @test isstrictless(bareinterval(0.0,4.0), bareinterval(0.0,4.0)) === false + + @test isstrictless(bareinterval(-0.0,4.0), bareinterval(0.0,4.0)) === false + + @test isstrictless(bareinterval(-2.0,-1.0), bareinterval(-2.0,-1.0)) === false + + @test isstrictless(bareinterval(-3.0,-1.5), bareinterval(-2.0,-1.0)) === true + +end + +@testset "minimal_strictly_less_dec_test" begin + + @test isstrictless(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), nai(Interval{Float64})) === false + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), nai(Interval{Float64})) === false + + @test isstrictless(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), def)) === false + + @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isstrictless(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), def)) === false + + @test isstrictless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isstrictless(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test isstrictless(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,3.5), def), interval(bareinterval(3.0,4.0), trv)) === true + + @test isstrictless(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), def)) === false + + @test isstrictless(interval(bareinterval(0.0,4.0), trv), interval(bareinterval(0.0,4.0), def)) === false + + @test isstrictless(interval(bareinterval(-0.0,4.0), def), interval(bareinterval(0.0,4.0), trv)) === false + + @test isstrictless(interval(bareinterval(-2.0,-1.0), def), interval(bareinterval(-2.0,-1.0), def)) === false + + @test isstrictless(interval(bareinterval(-3.0,-1.5), trv), interval(bareinterval(-2.0,-1.0), trv)) === true + +end + +@testset "minimal_strictly_precedes_test" begin + + @test strictprecedes(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true + + @test strictprecedes(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true + + @test strictprecedes(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test strictprecedes(bareinterval(1.0,2.0), bareinterval(-Inf,+Inf)) === false + + @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(1.0,2.0)) === false + + @test strictprecedes(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false + + @test strictprecedes(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === true + + @test strictprecedes(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === false + + @test strictprecedes(bareinterval(-3.0,-1.0), bareinterval(-1.0,0.0)) === false + + @test strictprecedes(bareinterval(-3.0,-0.0), bareinterval(0.0,1.0)) === false + + @test strictprecedes(bareinterval(-3.0,0.0), bareinterval(-0.0,1.0)) === false + + @test strictprecedes(bareinterval(1.0,3.5), bareinterval(3.0,4.0)) === false + + @test strictprecedes(bareinterval(1.0,4.0), bareinterval(3.0,4.0)) === false + + @test strictprecedes(bareinterval(-3.0,-0.1), bareinterval(-1.0,0.0)) === false + +end + +@testset "minimal_strictly_precedes_dec_test" begin + + @test strictprecedes(nai(Interval{Float64}), interval(bareinterval(3.0,4.0), trv)) === false + + @test strictprecedes(interval(bareinterval(3.0,4.0), def), nai(Interval{Float64})) === false + + @test strictprecedes(nai(Interval{Float64}), interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test strictprecedes(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test strictprecedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test strictprecedes(interval(bareinterval(3.0,4.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test strictprecedes(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test strictprecedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test strictprecedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,2.0), trv)) === false + + @test strictprecedes(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test strictprecedes(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(3.0,4.0), trv)) === true + + @test strictprecedes(interval(bareinterval(1.0,3.0), def), interval(bareinterval(3.0,4.0), trv)) === false + + @test strictprecedes(interval(bareinterval(-3.0,-1.0), trv), interval(bareinterval(-1.0,0.0), def)) === false + + @test strictprecedes(interval(bareinterval(-3.0,-0.0), def), interval(bareinterval(0.0,1.0), trv)) === false + + @test strictprecedes(interval(bareinterval(-3.0,0.0), trv), interval(bareinterval(-0.0,1.0), trv)) === false + + @test strictprecedes(interval(bareinterval(1.0,3.5), trv), interval(bareinterval(3.0,4.0), trv)) === false + + @test strictprecedes(interval(bareinterval(1.0,4.0), trv), interval(bareinterval(3.0,4.0), def)) === false + + @test strictprecedes(interval(bareinterval(-3.0,-0.1), trv), interval(bareinterval(-1.0,0.0), trv)) === false + +end + +@testset "minimal_disjoint_test" begin + + @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), bareinterval(3.0,4.0)) === true + + @test isdisjoint_interval(bareinterval(3.0,4.0), emptyinterval(BareInterval{Float64})) === true + + @test isdisjoint_interval(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === true + + @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === true + + @test isdisjoint_interval(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === false + + @test isdisjoint_interval(bareinterval(0.0,-0.0), bareinterval(-0.0,0.0)) === false + + @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(1.0,7.0)) === false + + @test isdisjoint_interval(bareinterval(3.0,4.0), bareinterval(-Inf,+Inf)) === false + + @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(1.0,7.0)) === false + + @test isdisjoint_interval(bareinterval(-Inf,+Inf), bareinterval(-Inf,+Inf)) === false + +end + +@testset "minimal_disjoint_dec_test" begin + + @test isdisjoint_interval(nai(Interval{Float64}), interval(bareinterval(3.0,4.0), def)) === false + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), nai(Interval{Float64})) === false + + @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), nai(Interval{Float64})) === false + + @test isdisjoint_interval(nai(Interval{Float64}), nai(Interval{Float64})) === false + + @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(3.0,4.0), def)) === true + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isdisjoint_interval(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === true + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(1.0,2.0), def)) === true + + @test isdisjoint_interval(interval(bareinterval(0.0,0.0), trv), interval(bareinterval(-0.0,-0.0), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(0.0,-0.0), trv), interval(bareinterval(-0.0,0.0), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), def), interval(bareinterval(1.0,7.0), def)) === false + + @test isdisjoint_interval(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(1.0,7.0), trv)) === false + + @test isdisjoint_interval(interval(bareinterval(-Inf,+Inf), trv), interval(bareinterval(-Inf,+Inf), trv)) === false + +end diff --git a/test/ITF1788_tests/libieeep1788_cancel.jl b/test/ITF1788_tests/libieeep1788_cancel.jl new file mode 100644 index 000000000..bd1bf4418 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_cancel.jl @@ -0,0 +1,499 @@ +@testset "minimal_cancel_plus_test" begin + + @test cancelplus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-Inf, -1.0), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0, Inf), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-5.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0,5.0), bareinterval(1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0,5.0), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(1.0,5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.0, -1.0), bareinterval(0.9,5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.1,10.1)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.1,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(1.0,10.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,10.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-5.1,-0.0), bareinterval(0.0,5.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelplus(bareinterval(-5.1,-1.0), bareinterval(1.0,5.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelplus(bareinterval(-5.0,-0.9), bareinterval(1.0,5.0)) === bareinterval(0.0, 0x1.9999999999998P-4) + + @test cancelplus(bareinterval(-5.1,-0.9), bareinterval(1.0,5.0)) === bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4) + + @test cancelplus(bareinterval(-5.0,-1.0), bareinterval(1.0,5.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(-10.1, 5.0), bareinterval(-5.0,10.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelplus(bareinterval(-10.0, 5.1), bareinterval(-5.0,10.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelplus(bareinterval(-10.1, 5.1), bareinterval(-5.0,10.0)) === bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4) + + @test cancelplus(bareinterval(-10.0, 5.0), bareinterval(-5.0,10.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(0.9, 5.0), bareinterval(-5.0,-1.0)) === bareinterval(-0x1.9999999999998P-4,0.0) + + @test cancelplus(bareinterval(1.0, 5.1), bareinterval(-5.0,-1.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelplus(bareinterval(0.0, 5.1), bareinterval(-5.0,-0.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelplus(bareinterval(0.9, 5.1), bareinterval(-5.0,-1.0)) === bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4) + + @test cancelplus(bareinterval(1.0, 5.0), bareinterval(-5.0,-1.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(0.0, 5.0), bareinterval(-5.0,-0.0)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test cancelplus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,0.01)) === bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0) + + @test cancelplus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0.0) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1P+971) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)) === bareinterval(-0x1P+971,0.0) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53)) === bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1) + + @test cancelplus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53)) === entireinterval(BareInterval{Float64}) + +end + +@testset "minimal_cancel_plus_dec_test" begin + + @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0, Inf), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(bareinterval(-5.0,1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0, Inf), trv), interval(bareinterval(-5.0,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-5.0,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-Inf, -1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0, Inf), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0, Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf,1.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0,5.0), dac), interval(bareinterval(1.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0,5.0), def), interval(bareinterval(-Inf,1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-1.0,5.0), com), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-Inf,1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.0, -1.0), com), interval(bareinterval(1.0,5.1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.0, -1.0), dac), interval(bareinterval(0.9,5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.0, -1.0), def), interval(bareinterval(0.9,5.1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), trv), interval(bareinterval(-5.0,10.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-5.1,10.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), dac), interval(bareinterval(-5.1,10.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), def), interval(bareinterval(-5.0,-0.9), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), trv), interval(bareinterval(-5.1,-1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(-5.1,-0.9), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, -1.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,10.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-5.0,10.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-5.0,-1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-5.1,-0.0), com), interval(bareinterval(0.0,5.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(-5.1,-1.0), com), interval(bareinterval(1.0,5.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(-5.0,-0.9), com), interval(bareinterval(1.0,5.0), def)) === interval(bareinterval(0.0, 0x1.9999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-5.1,-0.9), dac), interval(bareinterval(1.0,5.0), trv)) === interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-5.0,-1.0), dac), interval(bareinterval(1.0,5.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(-10.1, 5.0), dac), interval(bareinterval(-5.0,10.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.1), def), interval(bareinterval(-5.0,10.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-10.1, 5.1), def), interval(bareinterval(-5.0,10.0), trv)) === interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(-10.0, 5.0), def), interval(bareinterval(-5.0,10.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(0.9, 5.0), trv), interval(bareinterval(-5.0,-1.0), dac)) === interval(bareinterval(-0x1.9999999999998P-4,0.0), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.1), trv), interval(bareinterval(-5.0,-1.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(0.0, 5.1), trv), interval(bareinterval(-5.0,-0.0), trv)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(0.9, 5.1), com), interval(bareinterval(-5.0,-1.0), com)) === interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelplus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(-5.0,-1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(0.0, 5.0), def), interval(bareinterval(-5.0,-0.0), trv)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), com), interval(bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4), com)) === interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), trv) + + @test cancelplus(interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), dac), interval(bareinterval(-0x1.999999999999AP-4,0.01), com)) === interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), trv) + + @test cancelplus(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac), interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0x1P+971), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com)) === interval(bareinterval(-0x1P+971,0.0), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelplus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), dac), interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), com)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), trv) + + @test cancelplus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), def), interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), com)) === interval(entireinterval(BareInterval{Float64}), trv) + +end + +@testset "minimal_cancel_minus_test" begin + + @test cancelminus(bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0, Inf), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-Inf, -1.0), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0, Inf), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0,5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0,5.0), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), bareinterval(-1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-1.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.0,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.0, -1.0), bareinterval(-5.1,-0.9)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.1, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.0)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(0.9, 5.1)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, -1.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-10.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(1.0, 5.0), emptyinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, -1.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(-10.0, 5.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(emptyinterval(BareInterval{Float64}), bareinterval(1.0, 5.0)) === emptyinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-5.1,-0.0), bareinterval(-5.0, 0.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelminus(bareinterval(-5.1,-1.0), bareinterval(-5.0, -1.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelminus(bareinterval(-5.0,-0.9), bareinterval(-5.0, -1.0)) === bareinterval(0.0, 0x1.9999999999998P-4) + + @test cancelminus(bareinterval(-5.1,-0.9), bareinterval(-5.0, -1.0)) === bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4) + + @test cancelminus(bareinterval(-5.0,-1.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(-10.1, 5.0), bareinterval(-10.0, 5.0)) === bareinterval(-0x1.999999999998P-4,0.0) + + @test cancelminus(bareinterval(-10.0, 5.1), bareinterval(-10.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelminus(bareinterval(-10.1, 5.1), bareinterval(-10.0, 5.0)) === bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4) + + @test cancelminus(bareinterval(-10.0, 5.0), bareinterval(-10.0, 5.0)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(0.9, 5.0), bareinterval(1.0, 5.0)) === bareinterval(-0x1.9999999999998P-4,0.0) + + @test cancelminus(bareinterval(-0.0, 5.1), bareinterval(0.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelminus(bareinterval(1.0, 5.1), bareinterval(1.0, 5.0)) === bareinterval(0.0,0x1.999999999998P-4) + + @test cancelminus(bareinterval(0.9, 5.1), bareinterval(1.0, 5.0)) === bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4) + + @test cancelminus(bareinterval(1.0, 5.0), bareinterval(1.0, 5.0)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(-5.0, 1.0), bareinterval(-1.0, 5.0)) === bareinterval(-4.0,-4.0) + + @test cancelminus(bareinterval(-5.0, 0.0), bareinterval(-0.0, 5.0)) === bareinterval(-5.0,-5.0) + + @test cancelminus(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test cancelminus(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0.01,0x1.999999999999AP-4)) === bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0) + + @test cancelminus(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023)) === bareinterval(0.0,0x1P+971) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1P+971,0.0) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === bareinterval(0.0,0.0) + + @test cancelminus(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) === bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022) + + @test cancelminus(bareinterval(0x1P-1022,0x1.0000000000002P-1022), bareinterval(0x1P-1022,0x1.0000000000001P-1022)) === bareinterval(0.0,0x0.0000000000001P-1022) + + @test cancelminus(bareinterval(0x1P-1022,0x1.0000000000001P-1022), bareinterval(0x1P-1022,0x1.0000000000002P-1022)) === entireinterval(BareInterval{Float64}) + + @test cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0)) === bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1) + + @test cancelminus(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0)) === entireinterval(BareInterval{Float64}) + +end + +@testset "minimal_cancel_minus_dec_test" begin + + @test cancelminus(interval(bareinterval(-Inf, -1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0, Inf), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-Inf, -1.0), trv), interval(bareinterval(-1.0,5.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0, Inf), dac), interval(bareinterval(-1.0,5.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-1.0,5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-Inf, -1.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0, Inf), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-Inf, -1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-1.0, Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0,5.0), dac), interval(bareinterval(-Inf, -1.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0,5.0), def), interval(bareinterval(-1.0, Inf), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-1.0,5.0), com), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-Inf, -1.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-1.0, Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.0, -1.0), com), interval(bareinterval(-5.1,-1.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.0, -1.0), dac), interval(bareinterval(-5.0,-0.9), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.0, -1.0), def), interval(bareinterval(-5.1,-0.9), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), trv), interval(bareinterval(-10.1, 5.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-10.0, 5.1), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), dac), interval(bareinterval(-10.1, 5.1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), def), interval(bareinterval(0.9, 5.0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), trv), interval(bareinterval(1.0, 5.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), com), interval(bareinterval(0.9, 5.1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, -1.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-10.0, -1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-10.0, 5.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0, 5.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-5.1,-0.0), com), interval(bareinterval(-5.0, 0.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-5.1,-1.0), dac), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-5.0,-0.9), def), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(0.0, 0x1.9999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-5.1,-0.9), trv), interval(bareinterval(-5.0, -1.0), com)) === interval(bareinterval(-0x1.999999999998P-4,0x1.9999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-5.0,-1.0), com), interval(bareinterval(-5.0, -1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(-10.1, 5.0), dac), interval(bareinterval(-10.0, 5.0), dac)) === interval(bareinterval(-0x1.999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.1), def), interval(bareinterval(-10.0, 5.0), dac)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-10.1, 5.1), trv), interval(bareinterval(-10.0, 5.0), def)) === interval(bareinterval(-0x1.999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(-10.0, 5.0), com), interval(bareinterval(-10.0, 5.0), def)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(0.9, 5.0), dac), interval(bareinterval(1.0, 5.0), def)) === interval(bareinterval(-0x1.9999999999998P-4,0.0), trv) + + @test cancelminus(interval(bareinterval(-0.0, 5.1), def), interval(bareinterval(0.0, 5.0), def)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.1), trv), interval(bareinterval(1.0, 5.0), trv)) === interval(bareinterval(0.0,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(0.9, 5.1), com), interval(bareinterval(1.0, 5.0), trv)) === interval(bareinterval(-0x1.9999999999998P-4,0x1.999999999998P-4), trv) + + @test cancelminus(interval(bareinterval(1.0, 5.0), dac), interval(bareinterval(1.0, 5.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(-5.0, 1.0), def), interval(bareinterval(-1.0, 5.0), def)) === interval(bareinterval(-4.0,-4.0), trv) + + @test cancelminus(interval(bareinterval(-5.0, 0.0), trv), interval(bareinterval(-0.0, 5.0), trv)) === interval(bareinterval(-5.0,-5.0), trv) + + @test cancelminus(interval(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), com), interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), com)) === interval(bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0), trv) + + @test cancelminus(interval(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), def), interval(bareinterval(-0.01,0x1.999999999999AP-4), dac)) === interval(bareinterval(-0x1.70A3D70A3D70BP-4,0x1.E666666666657P+0), trv) + + @test cancelminus(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com)) === interval(bareinterval(0.0,0x1P+971), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1P+971,0.0), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFEP+1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-0x1.FFFFFFFFFFFFEP+1023,0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com), interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com)) === interval(bareinterval(0.0,0.0), trv) + + @test cancelminus(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com), interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), dac)) === interval(bareinterval(0x0.0000000000002p-1022,0x0.0000000000002p-1022), trv) + + @test cancelminus(interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), dac), interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), dac)) === interval(bareinterval(0.0,0x0.0000000000001P-1022), trv) + + @test cancelminus(interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), def), interval(bareinterval(0x1P-1022,0x1.0000000000002P-1022), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test cancelminus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFFP-53), com), interval(bareinterval(-0x1.FFFFFFFFFFFFEP-53,0x1P+0), dac)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFP-1,-0x1.FFFFFFFFFFFFEP-1), trv) + + @test cancelminus(interval(bareinterval(-0x1P+0,0x1.FFFFFFFFFFFFEP-53), def), interval(bareinterval(-0x1.FFFFFFFFFFFFFP-53,0x1P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + +end diff --git a/test/ITF1788_tests/libieeep1788_class.jl b/test/ITF1788_tests/libieeep1788_class.jl new file mode 100644 index 000000000..33e65c057 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_class.jl @@ -0,0 +1,451 @@ +@testset "minimal_nums_to_interval_test" begin + + @test bareinterval(-1.0,1.0) === bareinterval(-1.0,1.0) + + @test bareinterval(-Inf,1.0) === bareinterval(-Inf,1.0) + + @test bareinterval(-1.0,Inf) === bareinterval(-1.0,Inf) + + @test bareinterval(-Inf,Inf) === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test bareinterval(NaN,NaN) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(1.0,-1.0) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(-Inf,-Inf) === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test bareinterval(Inf,Inf) === emptyinterval(BareInterval{Float64}) + +end + +@testset "minimal_nums_to_decorated_interval_test" begin + + @test interval(-1.0,1.0) === interval(bareinterval(-1.0,1.0), com) + + @test interval(-Inf,1.0) === interval(bareinterval(-Inf,1.0), dac) + + @test interval(-1.0,Inf) === interval(bareinterval(-1.0,Inf), dac) + + @test interval(-Inf,Inf) === interval(bareinterval(-Inf,Inf), dac) + + @test_logs (:warn,) @test interval(NaN,NaN) === nai(Interval{Float64}) + + @test_logs (:warn,) @test interval(1.0,-1.0) === nai(Interval{Float64}) + + @test_logs (:warn,) @test interval(-Inf,-Inf) === nai(Interval{Float64}) + + @test_logs (:warn,) @test interval(Inf,Inf) === nai(Interval{Float64}) + +end + +@testset "minimal_text_to_interval_test" begin + + @test parse(BareInterval{Float64}, "[ Empty ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Empty ]_trv") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ]_trv") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[,]") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[,]_trv") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ entire ]") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ENTIRE ]_dac") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[ ENTIRE ]") === bareinterval(-Inf,Inf) + + @test parse(BareInterval{Float64}, "[ -inf , INF ]") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -inf, INF ]_def") === emptyinterval(BareInterval{Float64}) + + @test parse(BareInterval{Float64}, "[-1.0,1.0]") === bareinterval(-1.0,1.0) + + @test parse(BareInterval{Float64}, "[ -1.0 , 1.0 ]") === bareinterval(-1.0,1.0) + + @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]") === bareinterval(-1.0,1.0) + + @test parse(BareInterval{Float64}, "[-1,]") === bareinterval(-1.0,Inf) + + @test parse(BareInterval{Float64}, "[-1.0, +inf]") === bareinterval(-1.0,Inf) + + @test parse(BareInterval{Float64}, "[-1.0, +infinity]") === bareinterval(-1.0,Inf) + + @test parse(BareInterval{Float64}, "[-Inf, 1.000 ]") === bareinterval(-Inf,1.0) + + @test parse(BareInterval{Float64}, "[-Infinity, 1.000 ]") === bareinterval(-Inf,1.0) + + @test parse(BareInterval{Float64}, "[1.0E+400 ]") === bareinterval(0x1.fffffffffffffp+1023,Inf) + + @test parse(BareInterval{Float64}, "[ -4/2, 10/5 ]") === bareinterval(-2.0,2.0) + + @test parse(BareInterval{Float64}, "[ -1/10, 1/10 ]") === bareinterval(-0.1,0.1) + + @test parse(BareInterval{Float64}, "0.0?") === bareinterval(-0.05,0.05) + + @test parse(BareInterval{Float64}, "0.0?u") === bareinterval(0.0,0.05) + + @test parse(BareInterval{Float64}, "0.0?d") === bareinterval(-0.05,0.0) + + @test parse(BareInterval{Float64}, "2.5?") === bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1) + + @test parse(BareInterval{Float64}, "2.5?u") === bareinterval(2.5,0x1.4666666666667p+1) + + @test parse(BareInterval{Float64}, "2.5?d") === bareinterval(0x1.3999999999999p+1,2.5) + + @test parse(BareInterval{Float64}, "0.000?5") === bareinterval(-0.005,0.005) + + @test parse(BareInterval{Float64}, "0.000?5u") === bareinterval(0.0,0.005) + + @test parse(BareInterval{Float64}, "0.000?5d") === bareinterval(-0.005,0.0) + + @test parse(BareInterval{Float64}, "2.500?5") === bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1) + + @test parse(BareInterval{Float64}, "2.500?5u") === bareinterval(2.5,0x1.40a3d70a3d70bp+1) + + @test parse(BareInterval{Float64}, "2.500?5d") === bareinterval(0x1.3f5c28f5c28f5p+1,2.5) + + @test parse(BareInterval{Float64}, "0.0??") === bareinterval(-Inf,Inf) + + @test parse(BareInterval{Float64}, "0.0??u") === bareinterval(0.0,Inf) + + @test parse(BareInterval{Float64}, "0.0??d") === bareinterval(-Inf,0.0) + + @test parse(BareInterval{Float64}, "2.5??") === bareinterval(-Inf,Inf) + + @test parse(BareInterval{Float64}, "2.5??u") === bareinterval(2.5,Inf) + + @test parse(BareInterval{Float64}, "2.5??d") === bareinterval(-Inf,2.5) + + @test parse(BareInterval{Float64}, "2.500?5e+27") === bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91) + + @test parse(BareInterval{Float64}, "2.500?5ue4") === bareinterval(0x1.86ap+14,0x1.8768p+14) + + @test parse(BareInterval{Float64}, "2.500?5de-5") === bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16) + + @test parse(BareInterval{Float64}, "10?3") === bareinterval(7.0,13.0) + + @test parse(BareInterval{Float64}, "10?3e380") === bareinterval(0x1.fffffffffffffp+1023,Inf) + + @test parse(BareInterval{Float64}, "1.0000000000000001?1") === bareinterval(1.0,0x1.0000000000001p+0) + + @test parse(BareInterval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") === bareinterval(-Inf,Inf) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Nai ]_trv") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Empty ]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ ]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[,]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ Entire ]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -inf , INF ]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_fooo") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ -1.0 , 1.0]_da") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-1.0,]_com") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf, 1.000 ]_ill") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-I nf, 1.000 ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf, 1.0 00 ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[-Inf ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[Inf , INF]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[ foo ]") === emptyinterval(BareInterval{Float64}) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[1.0000000000000002,1.0000000000000001]") === bareinterval(1.0,0x1.0000000000001p+0) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]") === bareinterval(1.0,0x1.0000000000001p+0) + + @test_logs (:warn,) @test parse(BareInterval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]") === bareinterval(1.0,0x1.0000000000001p+0) + +end + +@testset "minimal_text_to_decorated_interval_test" begin + + @test parse(Interval{Float64}, "[ Empty ]") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ Empty ]_trv") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ ]") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ ]_trv") === interval(emptyinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[,]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[,]_trv") === interval(entireinterval(BareInterval{Float64}), trv) + + @test parse(Interval{Float64}, "[ entire ]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[ ENTIRE ]_dac") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[ -inf , INF ]") === interval(entireinterval(BareInterval{Float64}), dac) + + @test parse(Interval{Float64}, "[ -inf, INF ]_def") === interval(entireinterval(BareInterval{Float64}), def) + + @test parse(Interval{Float64}, "[-1.0,1.0]") === interval(bareinterval(-1.0,1.0), com) + + @test parse(Interval{Float64}, "[ -1.0 , 1.0 ]_com") === interval(bareinterval(-1.0,1.0), com) + + @test parse(Interval{Float64}, "[ -1.0 , 1.0]_trv") === interval(bareinterval(-1.0,1.0), trv) + + @test parse(Interval{Float64}, "[-1,]") === interval(bareinterval(-1.0,Inf), dac) + + @test parse(Interval{Float64}, "[-1.0, +inf]_def") === interval(bareinterval(-1.0,Inf), def) + + @test parse(Interval{Float64}, "[-1.0, +infinity]_def") === interval(bareinterval(-1.0,Inf), def) + + @test parse(Interval{Float64}, "[-Inf, 1.000 ]") === interval(bareinterval(-Inf,1.0), dac) + + @test parse(Interval{Float64}, "[-Infinity, 1.000 ]_trv") === interval(bareinterval(-Inf,1.0), trv) + + @test parse(Interval{Float64}, "[1.0E+400 ]_com") === interval(bareinterval(0x1.fffffffffffffp+1023,Inf), dac) + + @test parse(Interval{Float64}, "[ -4/2, 10/5 ]_com") === interval(bareinterval(-2.0,2.0), com) + + @test parse(Interval{Float64}, "[ -1/10, 1/10 ]_com") === interval(bareinterval(-0.1,0.1), com) + + @test parse(Interval{Float64}, "0.0?") === interval(bareinterval(-0.05,0.05), com) + + @test parse(Interval{Float64}, "0.0?u_trv") === interval(bareinterval(0.0,0.05), trv) + + @test parse(Interval{Float64}, "0.0?d_dac") === interval(bareinterval(-0.05,0.0), dac) + + @test parse(Interval{Float64}, "2.5?") === interval(bareinterval(0x1.3999999999999p+1,0x1.4666666666667p+1), com) + + @test parse(Interval{Float64}, "2.5?u") === interval(bareinterval(2.5,0x1.4666666666667p+1), com) + + @test parse(Interval{Float64}, "2.5?d_trv") === interval(bareinterval(0x1.3999999999999p+1,2.5), trv) + + @test parse(Interval{Float64}, "0.000?5") === interval(bareinterval(-0.005,0.005), com) + + @test parse(Interval{Float64}, "0.000?5u_def") === interval(bareinterval(0.0,0.005), def) + + @test parse(Interval{Float64}, "0.000?5d") === interval(bareinterval(-0.005,0.0), com) + + @test parse(Interval{Float64}, "2.500?5") === interval(bareinterval(0x1.3f5c28f5c28f5p+1,0x1.40a3d70a3d70bp+1), com) + + @test parse(Interval{Float64}, "2.500?5u") === interval(bareinterval(2.5,0x1.40a3d70a3d70bp+1), com) + + @test parse(Interval{Float64}, "2.500?5d") === interval(bareinterval(0x1.3f5c28f5c28f5p+1,2.5), com) + + @test parse(Interval{Float64}, "0.0??_dac") === interval(bareinterval(-Inf,Inf), dac) + + @test parse(Interval{Float64}, "0.0??u_trv") === interval(bareinterval(0.0,Inf), trv) + + @test parse(Interval{Float64}, "0.0??d") === interval(bareinterval(-Inf,0.0), dac) + + @test parse(Interval{Float64}, "2.5??") === interval(bareinterval(-Inf,Inf), dac) + + @test parse(Interval{Float64}, "2.5??u_def") === interval(bareinterval(2.5,Inf), def) + + @test parse(Interval{Float64}, "2.5??d_dac") === interval(bareinterval(-Inf,2.5), dac) + + @test parse(Interval{Float64}, "2.500?5e+27") === interval(bareinterval(0x1.01fa19a08fe7fp+91,0x1.0302cc4352683p+91), com) + + @test parse(Interval{Float64}, "2.500?5ue4_def") === interval(bareinterval(0x1.86ap+14,0x1.8768p+14), def) + + @test parse(Interval{Float64}, "2.500?5de-5") === interval(bareinterval(0x1.a2976f1cee4d5p-16,0x1.a36e2eb1c432dp-16), com) + + @test parse(Interval{Float64}, "[ Nai ]") === nai(Interval{Float64}) + + @test parse(Interval{Float64}, "10?1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_com") === interval(bareinterval(-Inf,Inf), dac) + + @test parse(Interval{Float64}, "10?3_com") === interval(bareinterval(7.0,13.0), com) + + @test parse(Interval{Float64}, "10?3e380_com") === interval(bareinterval(0x1.fffffffffffffp+1023,Inf), dac) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ Nai ]_ill") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ Nai ]_trv") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ Empty ]_ill") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ ]_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[,]_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ Entire ]_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ -inf , INF ]_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ -1.0 , 1.0]_ill") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ -1.0 , 1.0]_fooo") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ -1.0 , 1.0]_da") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[-1.0,]_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[-Inf, 1.000 ]_ill") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[-I nf, 1.000 ]") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[-Inf, 1.0 00 ]") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[-Inf ]") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[Inf , INF]") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[ foo ]") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "0.0??_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "0.0??u_ill") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "0.0??d_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "0.0??_com") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[1.0,2.0") === nai(Interval{Float64}) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[1.0000000000000002,1.0000000000000001]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[10000000000000001/10000000000000000,10000000000000002/10000000000000001]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) + + @test_logs (:warn,) @test parse(Interval{Float64}, "[0x1.00000000000002p0,0x1.00000000000001p0]") === interval(bareinterval(1.0,0x1.0000000000001p+0), com) + +end + +@testset "minimal_interval_part_test" begin + + @test bareinterval(interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv)) === bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4) + + @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com)) === bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4) + + @test bareinterval(interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac)) === bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4) + + @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def)) === bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4) + + @test bareinterval(interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv)) === bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022) + + @test bareinterval(interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), trv)) === bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022) + + @test bareinterval(interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), trv)) === bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022) + + @test bareinterval(interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), trv)) === bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023) + + @test bareinterval(interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv)) === bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023) + + @test bareinterval(interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv)) === bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023) + + @test bareinterval(interval(bareinterval(-Inf,Inf), trv)) === bareinterval(-Inf,Inf) + + @test bareinterval(interval(emptyinterval(BareInterval{Float64}), trv)) === emptyinterval(BareInterval{Float64}) + + @test bareinterval(interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com)) === bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4) + + @test_logs (:warn,) @test bareinterval(nai(Interval{Float64})) === emptyinterval(BareInterval{Float64}) + +end + +@testset "minimal_new_dec_test" begin + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), com) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4)) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), com) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), com) + + @test interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022)) === interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), com) + + @test interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), com) + + @test interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022)) === interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), com) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023)) === interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) === interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023)) === interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(-Inf,Inf)) === interval(bareinterval(-Inf,Inf), dac) + + @test interval(emptyinterval(BareInterval{Float64})) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4)) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + +end + +@testset "minimal_set_dec_test" begin + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.9999999999999P-4), trv) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + + @test interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac) === interval(bareinterval(-0x1.99999A842549Ap+4,0x1.99999A0000000p-4), dac) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.99999A0000000p-4), def) + + @test interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv) === interval(bareinterval(-0x0.0000000000001p-1022,-0x0.0000000000001p-1022), trv) + + @test interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), def) === interval(bareinterval(-0x0.0000000000001p-1022,0x0.0000000000001p-1022), def) + + @test interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), dac) === interval(bareinterval(0x0.0000000000001p-1022,0x0.0000000000001p-1022), dac) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) === interval(bareinterval(-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023), com) + + @test interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), def) === interval(bareinterval(-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), def) + + @test interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv) === interval(bareinterval(0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023), trv) + + @test interval(bareinterval(-Inf,Inf), dac) === interval(bareinterval(-Inf,Inf), dac) + + @test interval(emptyinterval(BareInterval{Float64}), trv) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) === interval(bareinterval(-0x1.99999C0000000p+4,0x1.9999999999999P-4), com) + + @test interval(emptyinterval(BareInterval{Float64}), def) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(emptyinterval(BareInterval{Float64}), dac) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(emptyinterval(BareInterval{Float64}), com) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test interval(bareinterval(1.0,Inf), com) === interval(bareinterval(1.0,Inf), dac) + + @test interval(bareinterval(-Inf,3.0), com) === interval(bareinterval(-Inf,3.0), dac) + + @test interval(bareinterval(-Inf,Inf), com) === interval(bareinterval(-Inf,Inf), dac) + + @test_logs (:warn,) @test interval(emptyinterval(BareInterval{Float64}), ill) === nai(Interval{Float64}) + + @test_logs (:warn,) @test interval(bareinterval(-Inf,3.0), ill) === nai(Interval{Float64}) + + @test_logs (:warn,) @test interval(bareinterval(-1.0,3.0), ill) === nai(Interval{Float64}) + +end + +@testset "minimal_decoration_part_test" begin + + @test decoration(nai(Interval{Float64})) === ill + + @test decoration(interval(emptyinterval(BareInterval{Float64}), trv)) === trv + + @test decoration(interval(bareinterval(-1.0,3.0), trv)) === trv + + @test decoration(interval(bareinterval(-1.0,3.0), def)) === def + + @test decoration(interval(bareinterval(-1.0,3.0), dac)) === dac + + @test decoration(interval(bareinterval(-1.0,3.0), com)) === com + +end diff --git a/test/ITF1788_tests/libieeep1788_elem.jl b/test/ITF1788_tests/libieeep1788_elem.jl new file mode 100644 index 000000000..b214fbf9b --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_elem.jl @@ -0,0 +1,7955 @@ +@testset "minimal_pos_test" begin + + @test +(bareinterval(1.0,2.0)) === bareinterval(1.0,2.0) + + @test +(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) + + @test +(bareinterval(-Inf,-1.0)) === bareinterval(-Inf,-1.0) + + @test +(bareinterval(0.0,2.0)) === bareinterval(0.0,2.0) + + @test +(bareinterval(-0.0,2.0)) === bareinterval(0.0,2.0) + + @test +(bareinterval(-2.5,-0.0)) === bareinterval(-2.5,0.0) + + @test +(bareinterval(-2.5,0.0)) === bareinterval(-2.5,0.0) + + @test +(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test +(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + +end + +@testset "minimal_pos_dec_test" begin + + @test +(nai(Interval{Float64})) === nai(Interval{Float64}) + + @test +(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test +(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test +(interval(bareinterval(1.0, 2.0), com)) === interval(bareinterval(1.0, 2.0), com) + +end + +@testset "minimal_neg_test" begin + + @test -(bareinterval(1.0,2.0)) === bareinterval(-2.0,-1.0) + + @test -(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(1.0,Inf)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(-Inf,1.0)) === bareinterval(-1.0,Inf) + + @test -(bareinterval(0.0,2.0)) === bareinterval(-2.0,0.0) + + @test -(bareinterval(-0.0,2.0)) === bareinterval(-2.0,0.0) + + @test -(bareinterval(-2.0,0.0)) === bareinterval(0.0,2.0) + + @test -(bareinterval(-2.0,-0.0)) === bareinterval(0.0,2.0) + + @test -(bareinterval(0.0,-0.0)) === bareinterval(0.0,0.0) + + @test -(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + +end + +@testset "minimal_neg_dec_test" begin + + @test -(nai(Interval{Float64})) === nai(Interval{Float64}) + + @test -(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test -(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test -(interval(bareinterval(1.0, 2.0), com)) === interval(bareinterval(-2.0, -1.0), com) + +end + +@testset "minimal_add_test" begin + + @test +(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test +(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === bareinterval(4.0,6.0) + + @test +(bareinterval(1.0,2.0), bareinterval(3.0,Inf)) === bareinterval(4.0,Inf) + + @test +(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,Inf), bareinterval(3.0,4.0)) === bareinterval(4.0,Inf) + + @test +(bareinterval(1.0,Inf), bareinterval(3.0,Inf)) === bareinterval(4.0,Inf) + + @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(3.0,4.0)) === bareinterval(4.0,Inf) + + @test +(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,4.0)) === bareinterval(-Inf,6.0) + + @test +(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test +(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test +(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)) === bareinterval(-3.0,4.0) + + @test +(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023) + + @test +(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1) + + @test +(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test +(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.E666666666657P+0,0x1.0CCCCCCCCCCC5P+1) + +end + +@testset "minimal_add_dec_test" begin + + @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(6.0,9.0), com) + + @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(6.0,9.0), def) + + @test +(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(6.0,Inf), dac) + + @test +(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-0.1, 5.0), com)) === interval(bareinterval(-Inf,7.0), dac) + + @test +(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test +(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), trv)) === nai(Interval{Float64}) + +end + +@testset "minimal_sub_test" begin + + @test -(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test -(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-Inf,1.0)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-1.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-Inf,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-Inf,2.0), bareinterval(-Inf,4.0)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(1.0,2.0), bareinterval(-Inf,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === bareinterval(-3.0,-1.0) + + @test -(bareinterval(1.0,2.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(1.0,Inf), bareinterval(-Inf,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(1.0,Inf), bareinterval(3.0,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(1.0,Inf), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-3.0,4.0)) === bareinterval(-3.0,Inf) + + @test -(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(3.0,4.0)) === bareinterval(-Inf,-1.0) + + @test -(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), bareinterval(-0x1.FFFFFFFFFFFFFp1023,4.0)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(0.0,0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test -(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023), bareinterval(-0.0,-0.0)) === bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023) + + @test -(bareinterval(0.0,0.0), bareinterval(-3.0,4.0)) === bareinterval(-4.0,3.0) + + @test -(bareinterval(-0.0,-0.0), bareinterval(-3.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.FFFFFFFFFFFFFp1023,3.0) + + @test -(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.E666666666656P+0,0x1.E666666666657P+0) + + @test -(bareinterval(0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.999999999999AP-4,-0x1.999999999999AP-4)) === bareinterval(0x1.0CCCCCCCCCCC4P+1,0x1.0CCCCCCCCCCC5P+1) + + @test -(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.FFFFFFFFFFFFP+0), bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.0CCCCCCCCCCC5P+1,0x1.E666666666657P+0) + +end + +@testset "minimal_sub_dec_test" begin + + @test -(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(-6.0,-3.0), com) + + @test -(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(-6.0,-3.0), def) + + @test -(interval(bareinterval(-1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-Inf,-3.0), dac) + + @test -(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-1.0, 5.0), com)) === interval(bareinterval(-Inf,3.0), dac) + + @test -(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test -(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), trv)) === nai(Interval{Float64}) + +end + +@testset "minimal_mul_test" begin + + @test *(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test *(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test *(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0)) === bareinterval(-Inf,-1.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(1.0, 3.0)) === bareinterval(1.0,Inf) + + @test *(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0)) === bareinterval(-Inf,-1.0) + + @test *(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(1.0,Inf), bareinterval(1.0, Inf)) === bareinterval(1.0,Inf) + + @test *(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0)) === bareinterval(-Inf,5.0) + + @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0)) === bareinterval(-3.0,Inf) + + @test *(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0)) === bareinterval(-15.0,Inf) + + @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,9.0) + + @test *(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0)) === bareinterval(3.0,Inf) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,-3.0) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0)) === bareinterval(3.0,Inf) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf)) === bareinterval(-Inf,-3.0) + + @test *(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(1.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(-5.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), bareinterval(1.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0)) === bareinterval(-25.0,-1.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0)) === bareinterval(-25.0,15.0) + + @test *(bareinterval(1.0,5.0), bareinterval(1.0, 3.0)) === bareinterval(1.0,15.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0)) === bareinterval(-Inf,-1.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0)) === bareinterval(-Inf,15.0) + + @test *(bareinterval(1.0,5.0), bareinterval(-5.0, Inf)) === bareinterval(-25.0,Inf) + + @test *(bareinterval(1.0,5.0), bareinterval(1.0, Inf)) === bareinterval(1.0,Inf) + + @test *(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0)) === bareinterval(-25.0,5.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0)) === bareinterval(-25.0,15.0) + + @test *(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0)) === bareinterval(-30.0,50.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0)) === bareinterval(-10.0,50.0) + + @test *(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0)) === bareinterval(-10.0,10.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0)) === bareinterval(-3.0,15.0) + + @test *(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), bareinterval(1.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0)) === bareinterval(5.0,50.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0)) === bareinterval(-30.0,50.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0)) === bareinterval(-30.0,-5.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0)) === bareinterval(5.0,Inf) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0)) === bareinterval(-30.0,Inf) + + @test *(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf)) === bareinterval(-Inf,50.0) + + @test *(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf)) === bareinterval(-Inf,-5.0) + + @test *(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0, Inf)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,Inf) + + @test *(bareinterval(-0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0), bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,0x1.999999999998EP-3) + + @test *(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4), bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)) === bareinterval(-0x1.999999999998EP-3,0x1.999999999998EP-3) + + @test *(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.999999999999AP-4), bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)) === bareinterval(-0x1.FFFFFFFFFFFE1P+1,-0x1.47AE147AE147BP-7) + +end + +@testset "minimal_mul_dec_test" begin + + @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), com)) === interval(bareinterval(5.0,14.0), com) + + @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,7.0), def)) === interval(bareinterval(5.0,14.0), def) + + @test *(interval(bareinterval(1.0,2.0), com), interval(bareinterval(5.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(5.0,Inf), dac) + + @test *(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), interval(bareinterval(-1.0, 5.0), com)) === interval(bareinterval(-Inf,0x1.FFFFFFFFFFFFFp1023), dac) + + @test *(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test *(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), trv)) === nai(Interval{Float64}) + +end + +@testset "minimal_div_test" begin + + @test /(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(0.1,1.0)) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test /(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(3.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-5.0, -3.0)) === bareinterval(3.0,10.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,-3.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, 0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, -0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-15.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-15.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-5.0, -3.0)) === bareinterval(-5.0,10.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,5.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, -3.0)) === bareinterval(-5.0,10.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,5.0) + + @test /(bareinterval(-30.0,15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,-3.0) + + @test /(bareinterval(15.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(3.0,10.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(15.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) + + @test /(bareinterval(15.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(3.0,Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-3.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(3.0,Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-3.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,0.0) + + @test /(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-5.0, -3.0)) === bareinterval(3.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,-3.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, 0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, -0.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-15.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-15.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-5.0, -3.0)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-Inf,15.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, -3.0)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-Inf,15.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-Inf,15.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,15.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-15.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,5.0) + + @test /(bareinterval(-15.0,Inf), bareinterval(3.0,Inf)) === bareinterval(-5.0,Inf) + + @test /(bareinterval(-15.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, -0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), bareinterval(-0.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-15.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,-3.0) + + @test /(bareinterval(15.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(3.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,-5.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(5.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(15.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(15.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(15.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(3.0, 5.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(3.0,Inf)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-30.0,-0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-30.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) + + @test /(bareinterval(0.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-5.0, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(3.0, 5.0)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, -3.0)) === bareinterval(-10.0,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(3.0,Inf)) === bareinterval(0.0,10.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,30.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,30.0), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,30.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-5.0, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(3.0, 5.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, -3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(3.0,Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0, 3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, -0.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf,-0.0), bareinterval(0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), bareinterval(-0.0, Inf)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-Inf,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(0.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-5.0, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(3.0, 5.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, -3.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(3.0,Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-0.0, 3.0)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test /(bareinterval(-0.0,Inf), bareinterval(-Inf, 3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(-3.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0.0,Inf), bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test /(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.0,-1.0), bareinterval(-10.0, -3.0)) === bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1) + + @test /(bareinterval(-2.0,-1.0), bareinterval(0.0, 10.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test /(bareinterval(-2.0,-1.0), bareinterval(-0.0, 10.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test /(bareinterval(-1.0,2.0), bareinterval(10.0,Inf)) === bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-3) + + @test /(bareinterval(1.0,3.0), bareinterval(-Inf, -10.0)) === bareinterval(-0x1.3333333333334P-2,0.0) + + @test /(bareinterval(-Inf,-1.0), bareinterval(1.0, 3.0)) === bareinterval(-Inf,-0x1.5555555555555P-2) + +end + +@testset "minimal_div_dec_test" begin + + @test /(interval(bareinterval(-2.0,-1.0), com), interval(bareinterval(-10.0, -3.0), com)) === interval(bareinterval(0x1.9999999999999P-4,0x1.5555555555556P-1), com) + + @test /(interval(bareinterval(-200.0,-1.0), com), interval(bareinterval(0x0.0000000000001p-1022, 10.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), dac) + + @test /(interval(bareinterval(-2.0,-1.0), com), interval(bareinterval(0.0, 10.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), trv) + + @test /(interval(bareinterval(1.0,3.0), def), interval(bareinterval(-Inf, -10.0), dac)) === interval(bareinterval(-0x1.3333333333334P-2,0.0), def) + + @test /(interval(bareinterval(1.0,2.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test /(nai(Interval{Float64}), interval(bareinterval(1.0,2.0), trv)) === nai(Interval{Float64}) + +end + +@testset "minimal_recip_test" begin + + @test inv(bareinterval(-50.0, -10.0)) === bareinterval(-0x1.999999999999AP-4,-0x1.47AE147AE147AP-6) + + @test inv(bareinterval(10.0, 50.0)) === bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4) + + @test inv(bareinterval(-Inf, -10.0)) === bareinterval(-0x1.999999999999AP-4,0.0) + + @test inv(bareinterval(10.0,Inf)) === bareinterval(0.0,0x1.999999999999AP-4) + + @test inv(bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test inv(bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test inv(bareinterval(-10.0, 0.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test inv(bareinterval(-10.0, -0.0)) === bareinterval(-Inf,-0x1.9999999999999P-4) + + @test inv(bareinterval(-10.0, 10.0)) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, 10.0)) === bareinterval(0x1.9999999999999P-4,Inf) + + @test inv(bareinterval(-0.0, 10.0)) === bareinterval(0x1.9999999999999P-4,Inf) + + @test inv(bareinterval(-Inf, 0.0)) === bareinterval(-Inf,0.0) + + @test inv(bareinterval(-Inf, -0.0)) === bareinterval(-Inf,0.0) + + @test inv(bareinterval(-Inf, 10.0)) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(-10.0, Inf)) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, Inf)) === bareinterval(0.0,Inf) + + @test inv(bareinterval(-0.0, Inf)) === bareinterval(0.0,Inf) + + @test inv(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + +end + +@testset "minimal_recip_dec_test" begin + + @test inv(interval(bareinterval(10.0, 50.0), com)) === interval(bareinterval(0x1.47AE147AE147AP-6,0x1.999999999999AP-4), com) + + @test inv(interval(bareinterval(-Inf, -10.0), dac)) === interval(bareinterval(-0x1.999999999999AP-4,0.0), dac) + + @test inv(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, -0x0.0000000000001p-1022), def)) === interval(bareinterval(-Inf,-0x0.4P-1022), def) + + @test inv(interval(bareinterval(0.0,0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test inv(interval(bareinterval(-10.0, 0.0), com)) === interval(bareinterval(-Inf,-0x1.9999999999999P-4), trv) + + @test inv(interval(bareinterval(-10.0, Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test inv(interval(bareinterval(-0.0, Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test inv(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + +end + +@testset "minimal_sqr_test" begin + + @test pown(emptyinterval(BareInterval{Float64}), 2) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0x0.0000000000001p-1022), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-1.0,1.0), 2) === bareinterval(0.0,1.0) + + @test pown(bareinterval(0.0,1.0), 2) === bareinterval(0.0,1.0) + + @test pown(bareinterval(-0.0,1.0), 2) === bareinterval(0.0,1.0) + + @test pown(bareinterval(-5.0,3.0), 2) === bareinterval(0.0,25.0) + + @test pown(bareinterval(-5.0,0.0), 2) === bareinterval(0.0,25.0) + + @test pown(bareinterval(-5.0,-0.0), 2) === bareinterval(0.0,25.0) + + @test pown(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), 2) === bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4), 2) === bareinterval(0.0,0x1.FFFFFFFFFFFE1P+1) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFP+0,-0x1.FFFFFFFFFFFFP+0), 2) === bareinterval(0x1.FFFFFFFFFFFEP+1,0x1.FFFFFFFFFFFE1P+1) + +end + +@testset "minimal_sqr_dec_test" begin + + @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x0.0000000000001p-1022), com), 2) === interval(bareinterval(0.0,Inf), dac) + + @test pown(interval(bareinterval(-1.0,1.0), def), 2) === interval(bareinterval(0.0,1.0), def) + + @test pown(interval(bareinterval(-5.0,3.0), com), 2) === interval(bareinterval(0.0,25.0), com) + + @test pown(interval(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4), com), 2) === interval(bareinterval(0x1.47AE147AE147BP-7,0x1.47AE147AE147CP-7), com) + +end + +@testset "minimal_sqrt_test" begin + + @test sqrt(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sqrt(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test sqrt(bareinterval(-Inf,-0x0.0000000000001p-1022)) === emptyinterval(BareInterval{Float64}) + + @test sqrt(bareinterval(-1.0,1.0)) === bareinterval(0.0,1.0) + + @test sqrt(bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test sqrt(bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test sqrt(bareinterval(-5.0,25.0)) === bareinterval(0.0,5.0) + + @test sqrt(bareinterval(0.0,25.0)) === bareinterval(0.0,5.0) + + @test sqrt(bareinterval(-0.0,25.0)) === bareinterval(0.0,5.0) + + @test sqrt(bareinterval(-5.0,Inf)) === bareinterval(0.0,Inf) + + @test sqrt(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.43D136248490FP-2,0x1.43D136248491P-2) + + @test sqrt(bareinterval(-0x1.FFFFFFFFFFFFP+0,0x1.999999999999AP-4)) === bareinterval(0.0,0x1.43D136248491P-2) + + @test sqrt(bareinterval(0x1.999999999999AP-4,0x1.FFFFFFFFFFFFP+0)) === bareinterval(0x1.43D136248490FP-2,0x1.6A09E667F3BC7P+0) + +end + +@testset "minimal_sqrt_dec_test" begin + + @test sqrt(interval(bareinterval(1.0,4.0), com)) === interval(bareinterval(1.0,2.0), com) + + @test sqrt(interval(bareinterval(-5.0,25.0), com)) === interval(bareinterval(0.0,5.0), trv) + + @test sqrt(interval(bareinterval(0.0,25.0), def)) === interval(bareinterval(0.0,5.0), def) + + @test sqrt(interval(bareinterval(-5.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + +end + +@testset "minimal_fma_test" begin + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,7.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,11.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,7.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,12.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-3.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-Inf,2.0)) === bareinterval(-Inf,-3.0) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-Inf,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,7.0) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-5.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-17.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,11.0) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-1.0) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-1.0,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,1.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-Inf,17.0) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,7.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-27.0,17.0) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,52.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,2.0)) === bareinterval(-12.0,52.0) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-12.0,12.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-5.0,17.0) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,2.0)) === bareinterval(-2.0,2.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,2.0)) === bareinterval(3.0,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,-3.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,2.0)) === bareinterval(3.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,2.0)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,52.0) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,2.0)) === bareinterval(-Inf,-3.0) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,2.0)) === entireinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-5.0,Inf) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-17.0,Inf) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(1.0,Inf) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === bareinterval(-1.0,Inf) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-27.0,Inf) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), bareinterval(-2.0,Inf)) === bareinterval(-12.0,Inf) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-12.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-5.0,Inf) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), bareinterval(-2.0,Inf)) === bareinterval(-2.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), bareinterval(-2.0,Inf)) === bareinterval(3.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), bareinterval(-2.0,Inf)) === bareinterval(3.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), bareinterval(-2.0,Inf)) === bareinterval(-32.0,Inf) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), bareinterval(-2.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,1.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-1.0,1.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,Inf), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-Inf,-3.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-1.0, 10.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-2.0,2.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, -1.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-Inf, 3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(-5.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), bareinterval(1.0, Inf), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(-10.0,-5.0), entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test fma(bareinterval(0.1,0.5), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.4CCCCCCCCCCCDP+1,0x1.999999999999AP+0) + + @test fma(bareinterval(-0.5,0.2), bareinterval(-5.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,0x1.4CCCCCCCCCCCDP+1) + + @test fma(bareinterval(-0.5,-0.1), bareinterval(2.0, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,-0x1.999999999999AP-4) + + @test fma(bareinterval(-0.5,-0.1), bareinterval(-Inf, 3.0), bareinterval(-0.1,0.1)) === bareinterval(-0x1.999999999999AP+0,Inf) + +end + +@testset "minimal_fma_dec_test" begin + + @test fma(interval(bareinterval(-0.5,-0.1), com), interval(bareinterval(-Inf, 3.0), dac), interval(bareinterval(-0.1,0.1), com)) === interval(bareinterval(-0x1.999999999999AP+0,Inf), dac) + + @test fma(interval(bareinterval(1.0,2.0), com), interval(bareinterval(1.0, 0x1.FFFFFFFFFFFFFp1023), com), interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(1.0,Inf), dac) + + @test fma(interval(bareinterval(1.0,2.0), com), interval(bareinterval(1.0, 2.0), com), interval(bareinterval(2.0,5.0), com)) === interval(bareinterval(3.0,9.0), com) + +end + +@testset "minimal_pown_test" begin + + @test pown(emptyinterval(BareInterval{Float64}), 0) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(0.0,0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-0.0,-0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(13.1,13.1), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-7451.145,-7451.145), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(0.0,Inf), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-0.0,Inf), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-Inf,0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-Inf,-0.0), 0) === bareinterval(1.0,1.0) + + @test pown(bareinterval(-324.3,2.5), 0) === bareinterval(1.0,1.0) + + @test pown(emptyinterval(BareInterval{Float64}), 2) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), 2) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 2) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 2) === bareinterval(0x1.573851EB851EBP+7,0x1.573851EB851ECP+7) + + @test pown(bareinterval(-7451.145,-7451.145), 2) === bareinterval(0x1.A794A4E7CFAADP+25,0x1.A794A4E7CFAAEP+25) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 2) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 2) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(0.0,Inf), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), 2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), 2) === bareinterval(0.0,0x1.9AD27D70A3D72P+16) + + @test pown(bareinterval(0.01,2.33), 2) === bareinterval(0x1.A36E2EB1C432CP-14,0x1.5B7318FC50482P+2) + + @test pown(bareinterval(-1.9,-0.33), 2) === bareinterval(0x1.BE0DED288CE7P-4,0x1.CE147AE147AE1P+1) + + @test pown(emptyinterval(BareInterval{Float64}), 8) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), 8) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 8) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 8) === bareinterval(0x1.9D8FD495853F5P+29,0x1.9D8FD495853F6P+29) + + @test pown(bareinterval(-7451.145,-7451.145), 8) === bareinterval(0x1.DFB1BB622E70DP+102,0x1.DFB1BB622E70EP+102) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 8) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 8) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(0.0,Inf), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), 8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), 8) === bareinterval(0.0,0x1.A87587109655P+66) + + @test pown(bareinterval(0.01,2.33), 8) === bareinterval(0x1.CD2B297D889BDP-54,0x1.B253D9F33CE4DP+9) + + @test pown(bareinterval(-1.9,-0.33), 8) === bareinterval(0x1.26F1FCDD502A3P-13,0x1.53ABD7BFC4FC6P+7) + + @test pown(emptyinterval(BareInterval{Float64}), 1) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 1) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), 1) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 1) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 1) === bareinterval(13.1,13.1) + + @test pown(bareinterval(-7451.145,-7451.145), 1) === bareinterval(-7451.145,-7451.145) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 1) === bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 1) === bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(0.0,Inf), 1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), 1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), 1) === bareinterval(-324.3,2.5) + + @test pown(bareinterval(0.01,2.33), 1) === bareinterval(0.01,2.33) + + @test pown(bareinterval(-1.9,-0.33), 1) === bareinterval(-1.9,-0.33) + + @test pown(emptyinterval(BareInterval{Float64}), 3) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 3) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), 3) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 3) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 3) === bareinterval(0x1.1902E978D4FDEP+11,0x1.1902E978D4FDFP+11) + + @test pown(bareinterval(-7451.145,-7451.145), 3) === bareinterval(-0x1.81460637B9A3DP+38,-0x1.81460637B9A3CP+38) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 3) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 3) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(0.0,Inf), 3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), 3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), 3) === bareinterval(-0x1.0436D2F418938P+25,0x1.F4P+3) + + @test pown(bareinterval(0.01,2.33), 3) === bareinterval(0x1.0C6F7A0B5ED8DP-20,0x1.94C75E6362A6P+3) + + @test pown(bareinterval(-1.9,-0.33), 3) === bareinterval(-0x1.B6F9DB22D0E55P+2,-0x1.266559F6EC5B1P-5) + + @test pown(emptyinterval(BareInterval{Float64}), 7) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), 7) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), 7) === bareinterval(0.0,0.0) + + @test pown(bareinterval(-0.0,-0.0), 7) === bareinterval(0.0,0.0) + + @test pown(bareinterval(13.1,13.1), 7) === bareinterval(0x1.F91D1B185493BP+25,0x1.F91D1B185493CP+25) + + @test pown(bareinterval(-7451.145,-7451.145), 7) === bareinterval(-0x1.07B1DA32F9B59P+90,-0x1.07B1DA32F9B58P+90) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), 7) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), 7) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) + + @test pown(bareinterval(0.0,Inf), 7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), 7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), 7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), 7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), 7) === bareinterval(-0x1.4F109959E6D7FP+58,0x1.312DP+9) + + @test pown(bareinterval(0.01,2.33), 7) === bareinterval(0x1.6849B86A12B9BP-47,0x1.74D0373C76313P+8) + + @test pown(bareinterval(-1.9,-0.33), 7) === bareinterval(-0x1.658C775099757P+6,-0x1.BEE30301BF47AP-12) + + @test pown(emptyinterval(BareInterval{Float64}), -2) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), -2) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -2) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -2) === bareinterval(0x1.7DE3A077D1568P-8,0x1.7DE3A077D1569P-8) + + @test pown(bareinterval(-7451.145,-7451.145), -2) === bareinterval(0x1.3570290CD6E14P-26,0x1.3570290CD6E15P-26) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -2) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -2) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(0.0,Inf), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), -2) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), -2) === bareinterval(0x1.3F0C482C977C9P-17,Inf) + + @test pown(bareinterval(0.01,2.33), -2) === bareinterval(0x1.793D85EF38E47P-3,0x1.388P+13) + + @test pown(bareinterval(-1.9,-0.33), -2) === bareinterval(0x1.1BA81104F6C8P-2,0x1.25D8FA1F801E1P+3) + + @test pown(emptyinterval(BareInterval{Float64}), -8) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(0.0,0.0), -8) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -8) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -8) === bareinterval(0x1.3CEF39247CA6DP-30,0x1.3CEF39247CA6EP-30) + + @test pown(bareinterval(-7451.145,-7451.145), -8) === bareinterval(0x1.113D9EF0A99ACP-103,0x1.113D9EF0A99ADP-103) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -8) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -8) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(0.0,Inf), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,-0.0), -8) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-324.3,2.5), -8) === bareinterval(0x1.34CC3764D1E0CP-67,Inf) + + @test pown(bareinterval(0.01,2.33), -8) === bareinterval(0x1.2DC80DB11AB7CP-10,0x1.1C37937E08P+53) + + @test pown(bareinterval(-1.9,-0.33), -8) === bareinterval(0x1.81E104E61630DP-8,0x1.BC64F21560E34P+12) + + @test pown(emptyinterval(BareInterval{Float64}), -1) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -1) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), -1) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -1) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -1) === bareinterval(0x1.38ABF82EE6986P-4,0x1.38ABF82EE6987P-4) + + @test pown(bareinterval(-7451.145,-7451.145), -1) === bareinterval(-0x1.197422C9048BFP-13,-0x1.197422C9048BEP-13) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -1) === bareinterval(0x0.4P-1022,0x0.4000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -1) === bareinterval(-0x0.4000000000001P-1022,-0x0.4P-1022) + + @test pown(bareinterval(0.0,Inf), -1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -1) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), -1) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), -1) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.01,2.33), -1) === bareinterval(0x1.B77C278DBBE13P-2,0x1.9P+6) + + @test pown(bareinterval(-1.9,-0.33), -1) === bareinterval(-0x1.83E0F83E0F83EP+1,-0x1.0D79435E50D79P-1) + + @test pown(emptyinterval(BareInterval{Float64}), -3) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -3) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), -3) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -3) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -3) === bareinterval(0x1.D26DF4D8B1831P-12,0x1.D26DF4D8B1832P-12) + + @test pown(bareinterval(-7451.145,-7451.145), -3) === bareinterval(-0x1.54347DED91B19P-39,-0x1.54347DED91B18P-39) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -3) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -3) === bareinterval(-0x0.0000000000001P-1022,-0x0P+0) + + @test pown(bareinterval(0.0,Inf), -3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -3) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), -3) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), -3) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.01,2.33), -3) === bareinterval(0x1.43CFBA61AACABP-4,0x1.E848P+19) + + @test pown(bareinterval(-1.9,-0.33), -3) === bareinterval(-0x1.BD393CE9E8E7CP+4,-0x1.2A95F6F7C066CP-3) + + @test pown(emptyinterval(BareInterval{Float64}), -7) === emptyinterval(BareInterval{Float64}) + + @test pown(entireinterval(BareInterval{Float64}), -7) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.0,0.0), -7) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(-0.0,-0.0), -7) === emptyinterval(BareInterval{Float64}) + + @test pown(bareinterval(13.1,13.1), -7) === bareinterval(0x1.037D76C912DBCP-26,0x1.037D76C912DBDP-26) + + @test pown(bareinterval(-7451.145,-7451.145), -7) === bareinterval(-0x1.F10F41FB8858FP-91,-0x1.F10F41FB8858EP-91) + + @test pown(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), -7) === bareinterval(0x0P+0,0x0.0000000000001P-1022) + + @test pown(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), -7) === bareinterval(-0x0.0000000000001P-1022,-0x0P+0) + + @test pown(bareinterval(0.0,Inf), -7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-0.0,Inf), -7) === bareinterval(0.0,Inf) + + @test pown(bareinterval(-Inf,0.0), -7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-Inf,-0.0), -7) === bareinterval(-Inf,0.0) + + @test pown(bareinterval(-324.3,2.5), -7) === entireinterval(BareInterval{Float64}) + + @test pown(bareinterval(0.01,2.33), -7) === bareinterval(0x1.5F934D64162A9P-9,0x1.6BCC41E9P+46) + + @test pown(bareinterval(-1.9,-0.33), -7) === bareinterval(-0x1.254CDD3711DDBP+11,-0x1.6E95C4A761E19P-7) + +end + +@testset "minimal_pown_dec_test" begin + + @test pown(interval(bareinterval(-5.0,10.0), com), 0) === interval(bareinterval(1.0,1.0), com) + + @test pown(interval(bareinterval(-Inf,15.0), dac), 0) === interval(bareinterval(1.0,1.0), dac) + + @test pown(interval(bareinterval(-3.0,5.0), def), 2) === interval(bareinterval(0.0,25.0), def) + + @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), 2) === interval(bareinterval(0.0,Inf), dac) + + @test pown(interval(bareinterval(-3.0,5.0), dac), 3) === interval(bareinterval(-27.0,125.0), dac) + + @test pown(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,2.0), com), 3) === interval(bareinterval(-Inf, 8.0), dac) + + @test pown(interval(bareinterval(3.0,5.0), com), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), com) + + @test pown(interval(bareinterval(-5.0,-3.0), def), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,0x1.C71C71C71C71DP-4), def) + + @test pown(interval(bareinterval(-5.0,3.0), com), -2) === interval(bareinterval(0x1.47AE147AE147AP-5,Inf), trv) + + @test pown(interval(bareinterval(3.0,5.0), dac), -3) === interval(bareinterval(0x1.0624DD2F1A9FBP-7 ,0x1.2F684BDA12F69P-5), dac) + + @test pown(interval(bareinterval(-3.0,5.0), com), -3) === interval(entireinterval(BareInterval{Float64}), trv) + +end + +@testset "minimal_pow_test" begin + + @test pow(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-3.0,5.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(-5.0,-5.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(emptyinterval(BareInterval{Float64}), bareinterval(5.0,5.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.1,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0x1P-1) + + @test pow(bareinterval(0.1,0.5), bareinterval(2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(0.1,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,0.1)) === bareinterval(0x1.96B230BCDC434P-1,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,1.0)) === bareinterval(0x1.999999999999AP-4,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,Inf) + + @test pow(bareinterval(0.1,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,0x1.4P+3) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(0.1,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(0.1,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.1,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(1.0,1.0)) === bareinterval(0x1.999999999999AP-4,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,0.1)) === bareinterval(0x1.96B230BCDC434P-1,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,1.0)) === bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,0.1)) === bareinterval(0x1.96B230BCDC434P-1,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,1.0)) === bareinterval(0x1.999999999999AP-4,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,2.5)) === bareinterval(0x1.9E7C6E43390B7P-9,Inf) + + @test pow(bareinterval(0.1,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,0x1.4248EF8FC2604P+0) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,0x1.4P+3) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.1,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,0x1.3C3A4EDFA9758P+8) + + @test pow(bareinterval(0.1,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.5,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.0,1.0)) === bareinterval(0.5,1.5) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.5,1.5) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.1,1.0)) === bareinterval(0.5,1.5) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(1.0,1.0)) === bareinterval(0.5,1.5) + + @test pow(bareinterval(0.5,1.5), bareinterval(1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,0x1.125FBEE250665P+0) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1P-1,0x1.8P+0) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1P-1,0x1P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.125FBEE250665P+0) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,0x1P+1) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(0.5,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.0,1.0)) === bareinterval(0.5,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.5,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.1,0.1)) === bareinterval(0x1.DDB680117AB12P-1,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.1,1.0)) === bareinterval(0.5,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.1,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(1.0,1.0)) === bareinterval(0.5,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(1.0,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(2.5,2.5)) === bareinterval(0x1.6A09E667F3BCCP-3,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,0x1P+1) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,0x1P+1) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,0x1.125FBEE250665P+0) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,0x1P+1) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,0x1P+1) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.5,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP+2) + + @test pow(bareinterval(1.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.1,0.1)) === bareinterval(1.0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.1,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.1,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(0.1,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(1.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(1.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(2.5,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(2.5,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.5555555555555P-1,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,0x1.8P+0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.0,1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.0,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.1,0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.1,1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.1,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(0.1,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(1.0,1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(1.0,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(1.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(2.5,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(2.5,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.0,1.0)) === bareinterval(1.0,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.0,2.5)) === bareinterval(1.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.1,0.1)) === bareinterval(0x1.02739C65D58BFP+0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.1,1.0)) === bareinterval(0x1.02739C65D58BFP+0,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.1,2.5)) === bareinterval(0x1.02739C65D58BFP+0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(0.1,Inf)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(1.0,1.0)) === bareinterval(0x1.199999999999AP+0,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(1.0,2.5)) === bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(1.0,Inf)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(2.5,2.5)) === bareinterval(0x1.44E1080833B25P+0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(2.5,Inf)) === bareinterval(0x1.44E1080833B25P+0,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.1,0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.1,1.0)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.1,2.5)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.1,Inf)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,0.1)) === bareinterval(0x1.5555555555555P-1,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,1.0)) === bareinterval(0x1.5555555555555P-1,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,2.5)) === bareinterval(0x1.5555555555555P-1,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,Inf)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,Inf)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,0x1.8P+0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(1.1,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,0x1.D1745D1745D17P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.D1745D1745D17P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,0x1.9372D999784C8P-1) + + @test pow(bareinterval(1.1,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) + + @test pow(bareinterval(1.1,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.0,1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.0,1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.0,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.0,2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.1,0.1)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.1,1.0)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.1,2.5)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(0.1,Inf)) === bareinterval(0x1.02739C65D58BFP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(1.0,1.0)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(1.0,2.5)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(1.0,Inf)) === bareinterval(0x1.199999999999AP+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(2.5,2.5)) === bareinterval(0x1.44E1080833B25P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(2.5,Inf)) === bareinterval(0x1.44E1080833B25P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.1,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.1,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.1,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.1,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,Inf)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,0.1)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,1.0)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,2.5)) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0x0P+0,Inf) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0x0P+0,1.0) + + @test pow(bareinterval(1.1,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0x0P+0,0x1.FB24AF5281928P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0x0P+0,0x1.D1745D1745D17P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) + + @test pow(bareinterval(1.1,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0x0P+0,0x1.9372D999784C8P-1) + + @test pow(bareinterval(0.0,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.0,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(0.0,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(0.0,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(0.0,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(0.0,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(0.0,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(0.0,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(0.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(0.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.0,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(0.0,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.0,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(0.0,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(0.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.0,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.0,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(-0.0,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(-0.0,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(-0.0,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(-0.0,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(-0.0,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(-0.0,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.0,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.0,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.0,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.0,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.0,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.0,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.0,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.1,1.0)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.1,0.5), bareinterval(0.1,Inf)) === bareinterval(0.0,0x1.DDB680117AB13P-1) + + @test pow(bareinterval(-0.1,0.5), bareinterval(1.0,1.0)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(-0.1,0.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(-0.1,0.5), bareinterval(1.0,Inf)) === bareinterval(0.0,0.5) + + @test pow(bareinterval(-0.1,0.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(-0.1,0.5), bareinterval(2.5,Inf)) === bareinterval(0.0,0x1.6A09E667F3BCDP-3) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,-0.1)) === bareinterval(0x1.125FBEE250664P+0,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,-1.0)) === bareinterval(0x1P+1,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(-0.1,0.5), bareinterval(-Inf,-2.5)) === bareinterval(0x1.6A09E667F3BCCP+2,Inf) + + @test pow(bareinterval(-0.1,1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.1,0.1)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.1,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.1,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(0.1,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(1.0,1.0)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(1.0,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(1.0,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(2.5,2.5)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(2.5,Inf)) === bareinterval(0.0,1.0) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-0.1,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,-0.1)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-1.0,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,-1.0)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-2.5,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.0), bareinterval(-Inf,-2.5)) === bareinterval(1.0,Inf) + + @test pow(bareinterval(-0.1,1.5), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.1,0.1)) === bareinterval(0.0,0x1.0A97DCE72A0CBP+0) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.1,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.1,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.1,1.5), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(1.0,1.0)) === bareinterval(0.0,1.5) + + @test pow(bareinterval(-0.1,1.5), bareinterval(1.0,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.1,1.5), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(2.5,2.5)) === bareinterval(0.0,0x1.60B9FD68A4555P+1) + + @test pow(bareinterval(-0.1,1.5), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-0.1,-0.1)) === bareinterval(0x1.EBA7C9E4D31E9P-1,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,-0.1)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,-0.1)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-1.0,-1.0)) === bareinterval(0x1.5555555555555P-1,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,-1.0)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-2.5,-2.5)) === bareinterval(0x1.7398BF1D1EE6FP-2,Inf) + + @test pow(bareinterval(-0.1,1.5), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.1,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.1,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.1,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.1,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,Inf)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-0.1,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,-0.1)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-1.0,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,-1.0)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-Inf,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(-0.1,Inf), bareinterval(-2.5,-2.5)) === bareinterval(0.0,Inf) + + @test pow(bareinterval(0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-0.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(0.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.1,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.1,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.1,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.1,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,Inf)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.1)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,2.5)) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0.0) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.0), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.1,0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.1,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.1,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(0.1,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(1.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(2.5,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(2.5,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.1,0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.1,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.1,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.1,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,Inf)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-0.1,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,-0.1)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-Inf,-2.5)) === emptyinterval(BareInterval{Float64}) + + @test pow(bareinterval(-1.0,-0.1), bareinterval(-2.5,-2.5)) === emptyinterval(BareInterval{Float64}) + +end + +@testset "minimal_pow_dec_test" begin + + @test pow(interval(bareinterval(0.1,0.5), com), interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(0x1.999999999999AP-4,1.0), com) + + @test pow(interval(bareinterval(0.1,0.5), com), interval(bareinterval(0.1,0.1), def)) === interval(bareinterval(0x1.96B230BCDC434P-1,0x1.DDB680117AB13P-1), def) + + @test pow(interval(bareinterval(0.1,0.5), trv), interval(bareinterval(-2.5,2.5), dac)) === interval(bareinterval(0x1.9E7C6E43390B7P-9,0x1.3C3A4EDFA9758P+8), trv) + + @test pow(interval(bareinterval(0.1,0.5), com), interval(bareinterval(-2.5,Inf), dac)) === interval(bareinterval(0.0,0x1.3C3A4EDFA9758P+8), dac) + + @test pow(interval(bareinterval(0.1,0.5), trv), interval(bareinterval(-Inf,0.1), dac)) === interval(bareinterval(0x1.96B230BCDC434P-1,Inf), trv) + + @test pow(interval(bareinterval(0.1,1.0), com), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0x1.9E7C6E43390B7P-9,1.0), com) + + @test pow(interval(bareinterval(0.1,1.0), def), interval(bareinterval(1.0,1.0), dac)) === interval(bareinterval(0x1.999999999999AP-4,1.0), def) + + @test pow(interval(bareinterval(0.1,1.0), trv), interval(bareinterval(-2.5,1.0), def)) === interval(bareinterval(0x1.999999999999AP-4,0x1.3C3A4EDFA9758P+8), trv) + + @test pow(interval(bareinterval(0.5,1.5), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0x1.DDB680117AB12P-1,0x1.0A97DCE72A0CBP+0), dac) + + @test pow(interval(bareinterval(0.5,1.5), def), interval(bareinterval(-2.5,0.1), trv)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), trv) + + @test pow(interval(bareinterval(0.5,1.5), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,0x1.6A09E667F3BCDP+2), com) + + @test pow(interval(bareinterval(0.5,Inf), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0x1.DDB680117AB12P-1,Inf), dac) + + @test pow(interval(bareinterval(0.5,Inf), def), interval(bareinterval(-2.5,-0.0), com)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP+2), def) + + @test pow(interval(bareinterval(1.0,1.5), com), interval(bareinterval(-0.1,0.1), def)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.0A97DCE72A0CBP+0), def) + + @test pow(interval(bareinterval(1.0,1.5), trv), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,1.0), trv) + + @test pow(interval(bareinterval(1.0,Inf), dac), interval(bareinterval(1.0,1.0), dac)) === interval(bareinterval(1.0,Inf), dac) + + @test pow(interval(bareinterval(1.0,Inf), def), interval(bareinterval(-1.0,-0.0), dac)) === interval(bareinterval(0x0P+0,1.0), def) + + @test pow(interval(bareinterval(1.1,1.5), def), interval(bareinterval(1.0,2.5), com)) === interval(bareinterval(0x1.199999999999AP+0,0x1.60B9FD68A4555P+1), def) + + @test pow(interval(bareinterval(1.1,1.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,0x1.FB24AF5281928P-1), com) + + @test pow(interval(bareinterval(1.1,Inf), dac), interval(bareinterval(0.1,Inf), dac)) === interval(bareinterval(0x1.02739C65D58BFP+0,Inf), dac) + + @test pow(interval(bareinterval(1.1,Inf), def), interval(bareinterval(-2.5,Inf), dac)) === interval(bareinterval(0x0P+0,Inf), def) + + @test pow(interval(bareinterval(1.1,Inf), trv), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0x0P+0,0x1.D1745D1745D17P-1), trv) + + @test pow(interval(bareinterval(0.0,0.5), com), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), com) + + @test pow(interval(bareinterval(0.0,0.5), com), interval(bareinterval(2.5,Inf), dac)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), dac) + + @test pow(interval(bareinterval(0.0,0.5), com), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.0), com), interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(1.0,1.0), trv) + + @test pow(interval(bareinterval(0.0,1.0), def), interval(bareinterval(0.0,2.5), dac)) === interval(bareinterval(0.0,1.0), trv) + + @test pow(interval(bareinterval(0.0,1.0), dac), interval(bareinterval(1.0,2.5), com)) === interval(bareinterval(0.0,1.0), dac) + + @test pow(interval(bareinterval(0.0,1.0), com), interval(bareinterval(-2.5,0.1), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.0), def), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.0), dac), interval(bareinterval(-0.1,0.0), com)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.0), com), interval(bareinterval(-Inf,0.0), dac)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.0), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.5), com), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) + + @test pow(interval(bareinterval(0.0,1.5), def), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), def) + + @test pow(interval(bareinterval(0.0,1.5), dac), interval(bareinterval(-1.0,0.0), com)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) + + @test pow(interval(bareinterval(0.0,1.5), com), interval(bareinterval(-2.5,-2.5), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test pow(interval(bareinterval(0.0,Inf), dac), interval(bareinterval(0.1,0.1), com)) === interval(bareinterval(0.0,Inf), dac) + + @test pow(interval(bareinterval(0.0,Inf), def), interval(bareinterval(-1.0,1.0), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,Inf), trv), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,Inf), dac), interval(bareinterval(-2.5,-2.5), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,0.5), com), interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,1.0), trv) + + @test pow(interval(bareinterval(-0.0,0.5), def), interval(bareinterval(0.1,Inf), def)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), def) + + @test pow(interval(bareinterval(-0.0,0.5), dac), interval(bareinterval(2.5,2.5), com)) === interval(bareinterval(0.0,0x1.6A09E667F3BCDP-3), dac) + + @test pow(interval(bareinterval(-0.0,0.5), trv), interval(bareinterval(-2.5,-0.0), dac)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,0.5), com), interval(bareinterval(-Inf,-0.1), def)) === interval(bareinterval(0x1.125FBEE250664P+0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,0.5), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.0), com), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,1.0), dac) + + @test pow(interval(bareinterval(-0.0,1.0), dac), interval(bareinterval(-1.0,Inf), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.0), com), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.0), def), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.0), dac), interval(bareinterval(-Inf,-2.5), def)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.5), com), interval(bareinterval(0.1,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), dac) + + @test pow(interval(bareinterval(-0.0,1.5), def), interval(bareinterval(-1.0,0.0), trv)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.5), dac), interval(bareinterval(-2.5,-0.1), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.5), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test pow(interval(bareinterval(-0.0,1.5), def), interval(bareinterval(-Inf,-2.5), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,Inf), dac), interval(bareinterval(-0.1,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,Inf), def), interval(bareinterval(-2.5,-0.0), com)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,Inf), trv), interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,Inf), dac), interval(bareinterval(-Inf,-0.0), trv)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.0,Inf), def), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,0.5), def), interval(bareinterval(0.1,Inf), dac)) === interval(bareinterval(0.0,0x1.DDB680117AB13P-1), trv) + + @test pow(interval(bareinterval(-0.1,0.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.125FBEE250664P+0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,0.5), dac), interval(bareinterval(-Inf,-2.5), def)) === interval(bareinterval(0x1.6A09E667F3BCCP+2,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.0), com), interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(1.0,1.0), trv) + + @test pow(interval(bareinterval(-0.1,1.0), dac), interval(bareinterval(-Inf,2.5), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.0), def), interval(bareinterval(-Inf,-1.0), def)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.0), com), interval(bareinterval(-2.5,-2.5), com)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.0), trv), interval(bareinterval(-Inf,-2.5), trv)) === interval(bareinterval(1.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.5), trv), interval(bareinterval(0.0,2.5), com)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) + + @test pow(interval(bareinterval(-0.1,1.5), com), interval(bareinterval(2.5,2.5), dac)) === interval(bareinterval(0.0,0x1.60B9FD68A4555P+1), trv) + + @test pow(interval(bareinterval(-0.1,1.5), dac), interval(bareinterval(-1.0,0.0), trv)) === interval(bareinterval(0x1.5555555555555P-1,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.5), com), interval(bareinterval(-0.1,-0.1), com)) === interval(bareinterval(0x1.EBA7C9E4D31E9P-1,Inf), trv) + + @test pow(interval(bareinterval(-0.1,1.5), def), interval(bareinterval(-2.5,-2.5), def)) === interval(bareinterval(0x1.7398BF1D1EE6FP-2,Inf), trv) + + @test pow(interval(bareinterval(-0.1,Inf), dac), interval(bareinterval(-0.1,2.5), com)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,Inf), def), interval(bareinterval(-2.5,0.0), def)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(-0.1,Inf), dac), interval(bareinterval(-2.5,-2.5), trv)) === interval(bareinterval(0.0,Inf), trv) + + @test pow(interval(bareinterval(0.0,0.0), com), interval(bareinterval(1.0,Inf), dac)) === interval(bareinterval(0.0,0.0), dac) + + @test pow(interval(bareinterval(0.0,0.0), com), interval(bareinterval(-2.5,0.1), com)) === interval(bareinterval(0.0,0.0), trv) + + @test pow(interval(bareinterval(0.0,0.0), dac), interval(bareinterval(-1.0,0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test pow(interval(bareinterval(-1.0,-0.1), com), interval(bareinterval(-0.1,1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test pow(interval(bareinterval(-1.0,-0.1), dac), interval(bareinterval(-0.1,2.5), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test pow(interval(bareinterval(-1.0,-0.1), def), interval(bareinterval(-0.1,Inf), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + +end + +@testset "minimal_exp_test" begin + + @test exp(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test exp(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) + + @test exp(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) + + @test exp(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test exp(bareinterval(-Inf,0x1.62E42FEFA39FP+9)) === bareinterval(0.0,Inf) + + @test exp(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9)) === bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf) + + @test exp(bareinterval(0.0,0x1.62E42FEFA39EP+9)) === bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0.0,0x1.62E42FEFA39EP+9)) === bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+9,0x1.62E42FEFA39EP+9)) === bareinterval(0x0.FFFFFFFFFFE7BP-1022,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0x1.62E42FEFA39EP+9)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.FFFFFFFFFC32BP+1023) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,0.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,-0.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,1.0) + + @test exp(bareinterval(-0x1.6232BDD7ABCD3P+8,1.0)) === bareinterval(0x1.FFFFFFFFFFE7BP-512,0x1.5BF0A8B14576AP+1) + + @test exp(bareinterval(1.0,5.0)) === bareinterval(0x1.5BF0A8B145769P+1,0x1.28D389970339P+7) + + @test exp(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.2797F0A337A5FP-5,0x1.86091CC9095C5P+2) + + @test exp(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.1337E9E45812AP+1, 0x1.805A5C88021B6P+142) + + @test exp(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.EF461A783114CP+16,0x1.691D36C6B008CP+37) + +end + +@testset "minimal_exp_dec_test" begin + + @test exp(interval(bareinterval(0x1.62E42FEFA39FP+9,0x1.62E42FEFA39FP+9), com)) === interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), dac) + + @test exp(interval(bareinterval(0.0,0x1.62E42FEFA39EP+9), def)) === interval(bareinterval(1.0,0x1.FFFFFFFFFC32BP+1023), def) + +end + +@testset "minimal_exp2_test" begin + + @test exp2(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test exp2(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) + + @test exp2(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) + + @test exp2(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp2(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp2(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test exp2(bareinterval(-Inf,1024.0)) === bareinterval(0.0,Inf) + + @test exp2(bareinterval(1024.0,1024.0)) === bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf) + + @test exp2(bareinterval(0.0,1023.0)) === bareinterval(1.0,0x1P+1023) + + @test exp2(bareinterval(-0.0,1023.0)) === bareinterval(1.0,0x1P+1023) + + @test exp2(bareinterval(-1022.0,1023.0)) === bareinterval(0x1P-1022,0x1P+1023) + + @test exp2(bareinterval(-1022.0,0.0)) === bareinterval(0x1P-1022,1.0) + + @test exp2(bareinterval(-1022.0,-0.0)) === bareinterval(0x1P-1022,1.0) + + @test exp2(bareinterval(-1022.0,1.0)) === bareinterval(0x1P-1022,2.0) + + @test exp2(bareinterval(1.0,5.0)) === bareinterval(2.0,32.0) + + @test exp2(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.9999999999998P-4,0x1.C000000000001P+1) + + @test exp2(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98) + + @test exp2(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.AEA0000721857P+11,0x1.FCA0555555559P+25) + +end + +@testset "minimal_exp2_dec_test" begin + + @test exp2(interval(bareinterval(1024.0,1024.0), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf), dac) + + @test exp2(interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), def)) === interval(bareinterval(0x1.B333333333332P+0,0x1.C81FD88228B4FP+98), def) + +end + +@testset "minimal_exp10_test" begin + + @test exp10(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test exp10(bareinterval(-Inf,0.0)) === bareinterval(0.0,1.0) + + @test exp10(bareinterval(-Inf,-0.0)) === bareinterval(0.0,1.0) + + @test exp10(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp10(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test exp10(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test exp10(bareinterval(-Inf,0x1.34413509F79FFP+8)) === bareinterval(0.0,Inf) + + @test exp10(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8)) === bareinterval(0x1.FFFFFFFFFFFFFP+1023,Inf) + + @test exp10(bareinterval(0.0,0x1.34413509F79FEP+8)) === bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0.0,0x1.34413509F79FEP+8)) === bareinterval(1.0,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0x1.33A7146F72A42P+8,0x1.34413509F79FEP+8)) === bareinterval(0x0.FFFFFFFFFFFE3P-1022,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0x1.22P+7,0x1.34413509F79FEP+8)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,0x1.FFFFFFFFFFBA1P+1023) + + @test exp10(bareinterval(-0x1.22P+7,0.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0) + + @test exp10(bareinterval(-0x1.22P+7,-0.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,1.0) + + @test exp10(bareinterval(-0x1.22P+7,1.0)) === bareinterval(0x1.3FAAC3E3FA1F3P-482,10.0) + + @test exp10(bareinterval(1.0,5.0)) === bareinterval(10.0,100000.0) + + @test exp10(bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0)) === bareinterval(0x1.F3A8254311F9AP-12,0x1.00B18AD5B7D56P+6) + + @test exp10(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6)) === bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328) + + @test exp10(bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4)) === bareinterval(0x1.0608D2279A811P+39,0x1.43AF5D4271CB8P+86) + +end + +@testset "minimal_exp10_dec_test" begin + + @test exp10(interval(bareinterval(0x1.34413509F79FFP+8,0x1.34413509F79FFP+8), com)) === interval(bareinterval( 0x1.FFFFFFFFFFFFFP+1023,Inf), dac) + + @test exp10(interval(bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6), def)) === interval(bareinterval(0x1.75014B7296807P+2,0x1.3EEC1D47DFB2BP+328), def) + +end + +@testset "minimal_log_test" begin + + @test log(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test log(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test log(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test log(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test log(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test log(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.62E42FEFA39FP+9) + + @test log(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.62E42FEFA39FP+9) + + @test log(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1.62E42FEFA39FP+9) + + @test log(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.74385446D71C4p9, +0x1.62E42FEFA39Fp9) + + @test log(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-0x1.74385446D71C4p9,0.0) + + @test log(bareinterval(0x1.5BF0A8B145769P+1,0x1.5BF0A8B145769P+1)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test log(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1)) === bareinterval(0x1P+0,0x1.0000000000001P+0) + + @test log(bareinterval(0x0.0000000000001p-1022,0x1.5BF0A8B14576AP+1)) === bareinterval(-0x1.74385446D71C4p9,0x1.0000000000001P+0) + + @test log(bareinterval(0x1.5BF0A8B145769P+1,32.0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1.BB9D3BEB8C86CP+1) + + @test log(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1.26BB1BBB55516P+1,0x1.40B512EB53D6P+0) + + @test log(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.0FAE81914A99P-1,0x1.120627F6AE7F1P+6) + + @test log(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.04A1363DB1E63P+3,0x1.203E52C0256B5P+4) + +end + +@testset "minimal_log_dec_test" begin + + @test log(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.74385446D71C4p9,0x1.62E42FEFA39FP+9), com) + + @test log(interval(bareinterval(0.0,1.0), com)) === interval(bareinterval(-Inf,0.0), trv) + + @test log(interval(bareinterval(0x1.5BF0A8B14576AP+1,0x1.5BF0A8B14576AP+1), def)) === interval(bareinterval(0x1P+0,0x1.0000000000001P+0), def) + +end + +@testset "minimal_log2_test" begin + + @test log2(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test log2(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test log2(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test log2(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log2(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log2(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test log2(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log2(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log2(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test log2(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,1024.0) + + @test log2(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,1024.0) + + @test log2(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,1024.0) + + @test log2(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-1074.0,1024.0) + + @test log2(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-1074.0,0.0) + + @test log2(bareinterval(0x0.0000000000001p-1022,2.0)) === bareinterval(-1074.0,1.0) + + @test log2(bareinterval(2.0,32.0)) === bareinterval(1.0,5.0) + + @test log2(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1.A934F0979A372P+1,0x1.CEAECFEA8085AP+0) + + @test log2(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.87F42B972949CP-1,0x1.8B55484710029P+6) + + @test log2(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.78025C8B3FD39P+3,0x1.9FD8EEF3FA79BP+4) + +end + +@testset "minimal_log2_dec_test" begin + + @test log2(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-1074.0,1024.0), com) + + @test log2(interval(bareinterval(0x0.0000000000001p-1022,Inf), dac)) === interval(bareinterval(-1074.0,Inf), dac) + + @test log2(interval(bareinterval(2.0,32.0), def)) === interval(bareinterval(1.0,5.0), def) + + @test log2(interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-Inf,1024.0), trv) + +end + +@testset "minimal_log10_test" begin + + @test log10(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test log10(bareinterval(-Inf,0.0)) === emptyinterval(BareInterval{Float64}) + + @test log10(bareinterval(-Inf,-0.0)) === emptyinterval(BareInterval{Float64}) + + @test log10(bareinterval(0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log10(bareinterval(-0.0,1.0)) === bareinterval(-Inf,0.0) + + @test log10(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test log10(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log10(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test log10(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test log10(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.34413509F79FFP+8) + + @test log10(bareinterval(-0.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,0x1.34413509F79FFP+8) + + @test log10(bareinterval(1.0,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(0.0,0x1.34413509F79FFP+8) + + @test log10(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-0x1.434E6420F4374p+8, +0x1.34413509F79FFp+8) + + @test log10(bareinterval(0x0.0000000000001p-1022,1.0)) === bareinterval(-0x1.434E6420F4374p+8 ,0.0) + + @test log10(bareinterval(0x0.0000000000001p-1022,10.0)) === bareinterval(-0x1.434E6420F4374p+8 ,1.0) + + @test log10(bareinterval(10.0,100000.0)) === bareinterval(1.0,5.0) + + @test log10(bareinterval(0x1.999999999999AP-4,0x1.CP+1)) === bareinterval(-0x1P+0,0x1.1690163290F4P-1) + + @test log10(bareinterval(0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test log10(bareinterval(0x1.B333333333333P+0,0x1.C81FD88228B2FP+98)) === bareinterval(0x1.D7F59AA5BECB9P-3,0x1.DC074D84E5AABP+4) + + @test log10(bareinterval(0x1.AEA0000721861P+11,0x1.FCA055555554CP+25)) === bareinterval(0x1.C4C29DD829191P+1,0x1.F4BAEBBA4FA4P+2) + +end + +@testset "minimal_log10_dec_test" begin + + @test log10(interval(bareinterval(0x0.0000000000001p-1022,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.434E6420F4374p+8,0x1.34413509F79FFP+8), com) + + @test log10(interval(bareinterval(0.0,0x1.FFFFFFFFFFFFFp1023), dac)) === interval(bareinterval(-Inf,0x1.34413509F79FFP+8), trv) + +end + +@testset "minimal_sin_test" begin + + @test sin(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sin(bareinterval(0.0,Inf)) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(-0.0,Inf)) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(-Inf,0.0)) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,1.0) + + @test sin(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + + @test sin(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test sin(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(0x1.FFFFFFFFFFFFFP-1,0x1P+0) + + @test sin(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(0.0,0x1.921FB54442D19P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D19P+0)) === bareinterval(0.0,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1.1A62633145C07P-53) + + @test sin(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,-0x1.72CECE675D1FCP-52) + + @test sin(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1.1A62633145C07P-53) + + @test sin(bareinterval(0.0,0x1.921FB54442D18P+1)) === bareinterval(0.0,1.0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D18P+1)) === bareinterval(0.0,1.0) + + @test sin(bareinterval(0.0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,1.0) + + @test sin(bareinterval(-0.0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,1.0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)) === bareinterval(0x1.1A62633145C06P-53,0x1P+0) + + @test sin(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)) === bareinterval(-0x1.72CECE675D1FDP-52,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,-0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,-0.0)) === bareinterval(-0x1P+0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)) === bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,0.0)) === bareinterval(-1.0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0.0)) === bareinterval(-1.0,0.0) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,0.0)) === bareinterval(-1.0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0.0)) === bareinterval(-1.0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,-0x1.1A62633145C06P-53) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,-0x1.1A62633145C06P-53) + + @test sin(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1.72CECE675D1FDP-52) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1P+0,0x1P+0) + + @test sin(bareinterval(-0.7,0.1)) === bareinterval(-0x1.49D6E694619B9P-1,0x1.98EAECB8BCB2DP-4) + + @test sin(bareinterval(1.0,2.0)) === bareinterval(0x1.AED548F090CEEP-1,1.0) + + @test sin(bareinterval(-3.2,-2.9)) === bareinterval(-0x1.E9FB8D64830E3P-3,0x1.DE33739E82D33P-5) + + @test sin(bareinterval(2.0,3.0)) === bareinterval(0x1.210386DB6D55BP-3,0x1.D18F6EAD1B446P-1) + +end + +@testset "minimal_sin_dec_test" begin + + @test sin(interval(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0), def)) === interval(bareinterval(-0x1P+0,-0x1.1A62633145C06P-53), def) + + @test sin(interval(bareinterval(-Inf,-0.0), trv)) === interval(bareinterval(-1.0,1.0), trv) + + @test sin(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) + +end + +@testset "minimal_cos_test" begin + + @test cos(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cos(bareinterval(0.0,Inf)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0.0,Inf)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-Inf,0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,1.0) + + @test cos(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test cos(bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(0.0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(0.0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(0.0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0.0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D18P+1)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+1)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,0.0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,-0.0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,0.0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,-0.0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+1)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0.0)) === bareinterval(-1.0,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D18P+0)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D18P+0)) === bareinterval(-1.0,0x1.1A62633145C07P-54) + + @test cos(bareinterval(-0x1.921FB54442D18P+1,-0x1.921FB54442D19P+0)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D19P+1,-0x1.921FB54442D19P+0)) === bareinterval(-1.0,-0x1.72CECE675D1FCP-53) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.1A62633145C06P-54,1.0) + + @test cos(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.72CECE675D1FDP-53,1.0) + + @test cos(bareinterval(-0.7,0.1)) === bareinterval(0x1.87996529F9D92P-1,1.0) + + @test cos(bareinterval(1.0,2.0)) === bareinterval(-0x1.AA22657537205P-2,0x1.14A280FB5068CP-1) + + @test cos(bareinterval(-3.2,-2.9)) === bareinterval(-1.0,-0x1.F1216DBA340C8P-1) + + @test cos(bareinterval(2.0,3.0)) === bareinterval(-0x1.FAE04BE85E5D3P-1,-0x1.AA22657537204P-2) + +end + +@testset "minimal_cos_dec_test" begin + + @test cos(interval(bareinterval(-0x1.921FB54442D18P+0,-0x1.921FB54442D18P+0), trv)) === interval(bareinterval(0x1.1A62633145C06P-54,0x1.1A62633145C07P-54), trv) + + @test cos(interval(bareinterval(-Inf,-0.0), def)) === interval(bareinterval(-1.0,1.0), def) + + @test cos(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) + +end + +@testset "minimal_tan_test" begin + + @test tan(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,Inf)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf,0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf,-0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test tan(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52) + + @test tan(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1)) === bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53) + + @test tan(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1)) === bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52) + + @test tan(bareinterval(0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(-0.0,0x1.921FB54442D18P+0)) === bareinterval(0.0,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(0.0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0.0,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-51,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-51,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-52,0x1.921FB54442D18P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1P-52,0x1.921FB54442D19P+1)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0)) === bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53) + + @test tan(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4)) === bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4) + + @test tan(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12)) === bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0) + + @test tan(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0)) === bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0) + +end + +@testset "minimal_tan_dec_test" begin + + @test tan(interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,Inf), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,Inf), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-Inf,0.0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-Inf,-0.0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test tan(interval(bareinterval(-0.0,-0.0), def)) === interval(bareinterval(0.0,0.0), def) + + @test tan(interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(0x1.D02967C31CDB4P+53,0x1.D02967C31CDB5P+53), com) + + @test tan(interval(bareinterval(0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), def)) === interval(bareinterval(-0x1.617A15494767BP+52,-0x1.617A15494767AP+52), def) + + @test tan(interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D18P+1), trv)) === interval(bareinterval(-0x1.1A62633145C07P-53,-0x1.1A62633145C06P-53), trv) + + @test tan(interval(bareinterval(0x1.921FB54442D19P+1,0x1.921FB54442D19P+1), com)) === interval(bareinterval(0x1.72CECE675D1FCP-52,0x1.72CECE675D1FDP-52), com) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D18P+0), dac)) === interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), dac) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(0.0,0x1.D02967C31CDB5P+53), com) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D19P+0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D18P+1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D18P+1), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0.0,0x1.921FB54442D19P+1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-51,0x1.921FB54442D18P+1), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-51,0x1.921FB54442D19P+1), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-52,0x1.921FB54442D18P+1), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1P-52,0x1.921FB54442D19P+1), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D18P+0), com)) === interval(bareinterval(-0x1.D02967C31CDB5P+53,0x1.D02967C31CDB5P+53), com) + + @test tan(interval(bareinterval(-0x1.921FB54442D18P+0,0x1.921FB54442D19P+0), trv)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D18P+0), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(-0x1.555475A31A4BEP-2,0x1.999999999999AP-4), com)) === interval(bareinterval(-0x1.628F4FD931FEFP-2,0x1.9AF8877430B81P-4), com) + + @test tan(interval(bareinterval(0x1.4E18E147AE148P+12,0x1.4E2028F5C28F6P+12), dac)) === interval(bareinterval(-0x1.D6D67B035B6B4P+2,-0x1.7E42B0760E3F3P+0), dac) + + @test tan(interval(bareinterval(0x1.4E18E147AE148P+12,0x1.546028F5C28F6P+12), def)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test tan(interval(bareinterval(0x1.FAE147AE147AEP-1,0x1.028F5C28F5C29P+0), trv)) === interval(bareinterval(0x1.860FADCC59064P+0,0x1.979AD0628469DP+0), trv) + +end + +@testset "minimal_asin_test" begin + + @test asin(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test asin(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-Inf,0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test asin(bareinterval(-Inf,-0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test asin(entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-1.0,1.0)) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-Inf,-1.0)) === bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0) + + @test asin(bareinterval(1.0,Inf)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(-1.0,-1.0)) === bareinterval(-0x1.921FB54442D19P+0,-0x1.921FB54442D18P+0) + + @test asin(bareinterval(1.0,1.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test asin(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test asin(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test asin(bareinterval(-Inf,-0x1.0000000000001P+0)) === emptyinterval(BareInterval{Float64}) + + @test asin(bareinterval(0x1.0000000000001P+0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test asin(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(-0x1.9A49276037885P-4,0x1.9A49276037885P-4) + + @test asin(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0) + + @test asin(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(-0x1.921FB50442D19P+0,0x1.921FB50442D19P+0) + +end + +@testset "minimal_asin_dec_test" begin + + @test asin(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test asin(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0,0.0), trv) + + @test asin(interval(bareinterval(-1.0,1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), com) + + @test asin(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), trv) + + @test asin(interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), def)) === interval(bareinterval(-0x1.585FF6E341C3FP-2,0x1.921FB50442D19P+0), def) + +end + +@testset "minimal_acos_test" begin + + @test acos(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test acos(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-Inf,0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1) + + @test acos(bareinterval(-Inf,-0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1) + + @test acos(entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test acos(bareinterval(-1.0,1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test acos(bareinterval(-Inf,-1.0)) === bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1) + + @test acos(bareinterval(1.0,Inf)) === bareinterval(0.0,0.0) + + @test acos(bareinterval(-1.0,-1.0)) === bareinterval(0x1.921FB54442D18P+1,0x1.921FB54442D19P+1) + + @test acos(bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test acos(bareinterval(0.0,0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-0.0,-0.0)) === bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+0) + + @test acos(bareinterval(-Inf,-0x1.0000000000001P+0)) === emptyinterval(BareInterval{Float64}) + + @test acos(bareinterval(0x1.0000000000001P+0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test acos(bareinterval(-0x1.999999999999AP-4,0x1.999999999999AP-4)) === bareinterval(0x1.787B22CE3F59P+0,0x1.ABC447BA464A1P+0) + + @test acos(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1P-26,0x1.E837B2FD13428P+0) + + @test acos(bareinterval(-0x1.FFFFFFFFFFFFFP-1,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1P-26,0x1.921FB52442D19P+1) + +end + +@testset "minimal_acos_dec_test" begin + + @test acos(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test acos(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0,0x1.921FB54442D19P+1), trv) + + @test acos(interval(bareinterval(-1.0,1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), com) + + @test acos(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test acos(interval(bareinterval(-0x1.51EB851EB851FP-2,0x1.FFFFFFFFFFFFFP-1), def)) === interval(bareinterval(0x1P-26,0x1.E837B2FD13428P+0), def) + +end + +@testset "minimal_atan_test" begin + + @test atan(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0,Inf)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-Inf,0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test atan(bareinterval(-Inf,-0.0)) === bareinterval(-0x1.921FB54442D19P+0,0.0) + + @test atan(entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(1.0,0x1.4C2463567C5ACP+25)) === bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0) + + @test atan(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0) + +end + +@testset "minimal_atan_dec_test" begin + + @test atan(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), dac) + + @test atan(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0,0.0), def) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0,0x1.921FB54442D19P+0), dac) + + @test atan(interval(bareinterval(1.0,0x1.4C2463567C5ACP+25), trv)) === interval(bareinterval(0x1.921FB54442D18P-1,0x1.921FB4E19ABD7P+0), trv) + + @test atan(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(-0x1.921FB54440CEBP+0,-0x1.91ABE5C1E4C6DP+0), com) + +end + +@testset "minimal_atan2_test" begin + + @test atan(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(emptyinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.1, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(0.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, -0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-0.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0.0) + + @test atan(bareinterval(-2.0, -0.1), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, -0.1), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1,0.0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, -0.1), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4) + + @test atan(bareinterval(-2.0, 0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, 0.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0.0) + + @test atan(bareinterval(-2.0, -0.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, -0.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0.0) + + @test atan(bareinterval(-2.0, -0.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0.0) + + @test atan(bareinterval(-2.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-2.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-2.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0) + + @test atan(bareinterval(-0.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(-0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(-0.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0.0, 0x1.789BD2C160054P+0) + + @test atan(bareinterval(0.0, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0.0,0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.0, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0.0,0x1.789BD2C160054P+0) + + @test atan(bareinterval(0.1, 1.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.1, 1.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1.921FB54442D19P+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.1)) === bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, -0.0)) === bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-2.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(-0.0, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0) + + @test atan(bareinterval(0.1, 1.0), bareinterval(0.1, 1.0)) === bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0) + +end + +@testset "minimal_atan2_dec_test" begin + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, -0.1), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-2.0, 1.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.0, 1.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(0.1, 1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), dac) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), def), interval(bareinterval(0.0, 0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 0.0), def), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, 0.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), def), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(-0.0, 0.0), trv), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), def), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(0.0, 0.0), dac)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), trv), interval(bareinterval(-0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), dac), interval(bareinterval(0.0, -0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), dac), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(0.0, 1.0), trv)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, -0.0), def), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(0.0, -0.0), com), interval(bareinterval(0.1, 1.0), def)) === interval(bareinterval(0.0,0.0), def) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(0.0, 0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-0.0, 0.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.0, -0.0), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(-0.0, -0.0), com)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), def), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), dac), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), def), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.0, 1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(0.0,0.0), trv) + + @test atan(interval(bareinterval(-0.0, -0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1,0.0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), trv), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), dac) + + @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(bareinterval(-0.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), def), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.9EE9C8100C211P+0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), def) + + @test atan(interval(bareinterval(-2.0, -0.1), trv), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), def), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.8BBAABDE5E29CP+1, -0x1.983E282E2CC4CP-4), trv) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), def) + + @test atan(interval(bareinterval(-2.0, -0.1), dac), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.983E282E2CC4CP-4), dac) + + @test atan(interval(bareinterval(-2.0, -0.1), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, -0x1.983E282E2CC4CP-4), com) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), dac), interval(bareinterval(0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), trv), interval(bareinterval(-0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-2.0, 0.0), dac), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), trv), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), def), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, 0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0.0), com) + + @test atan(interval(bareinterval(-2.0, -0.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, -0x1.921FB54442D18P+0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), dac), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), def), interval(bareinterval(-2.0, 1.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), trv), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0.0), trv) + + @test atan(interval(bareinterval(-2.0, -0.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0.0), com) + + @test atan(interval(bareinterval(-2.0, 1.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), def), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(-0.0, 0.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(0.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(-0.0, -0.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), def) + + @test atan(interval(bareinterval(-2.0, 1.0), def), interval(bareinterval(-2.0, 0.0), def)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(-2.0, -0.0), trv)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), com)) === interval(bareinterval(-0x1.921FB54442D19P+1, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), trv), interval(bareinterval(-0.0, 1.0), dac)) === interval(bareinterval(-0x1.921FB54442D19P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-2.0, 1.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(-0x1.8555A2787982P+0, 0x1.789BD2C160054P+0), com) + + @test atan(interval(bareinterval(-0.0, 1.0), com), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), com), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), com), interval(bareinterval(-2.0, -0.1), com)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(-2.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), def), interval(bareinterval(-2.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), dac), interval(bareinterval(0.0, 1.0), dac)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(-0.0, 1.0), com)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(-0.0, 1.0), trv), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0, 0x1.789BD2C160054P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), trv), interval(bareinterval(-0.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), trv), interval(bareinterval(0.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), def), interval(bareinterval(-0.0, -0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, -0.1), dac)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.0, 1.0), def), interval(bareinterval(-2.0, 0.0), trv)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-2.0, 1.0), def)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(0.0, 1.0), trv)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(0.0,0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.0, 1.0), com), interval(bareinterval(0.1, 1.0), com)) === interval(bareinterval(0.0,0x1.789BD2C160054P+0), com) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0, 0x1.921FB54442D19P+1), dac) + + @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(0.0, 0.0), com)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), trv), interval(bareinterval(-0.0, 0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.1, 1.0), trv), interval(bareinterval(0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), trv) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(-0.0, -0.0), def)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, -0.1), trv)) === interval(bareinterval(0x1.ABA397C7259DDP+0, 0x1.8BBAABDE5E29CP+1), trv) + + @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, 0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), dac) + + @test atan(interval(bareinterval(0.1, 1.0), com), interval(bareinterval(-2.0, -0.0), dac)) === interval(bareinterval(0x1.921FB54442D18P+0, 0x1.8BBAABDE5E29CP+1), dac) + + @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(-2.0, 1.0), dac)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.8BBAABDE5E29CP+1), def) + + @test atan(interval(bareinterval(0.1, 1.0), def), interval(bareinterval(0.0, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(-0.0, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.921FB54442D19P+0), def) + + @test atan(interval(bareinterval(0.1, 1.0), dac), interval(bareinterval(0.1, 1.0), def)) === interval(bareinterval(0x1.983E282E2CC4CP-4, 0x1.789BD2C160054P+0), def) + +end + +@testset "minimal_sinh_test" begin + + @test sinh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sinh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test sinh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test sinh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) + + @test sinh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) + + @test sinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test sinh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test sinh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test sinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432) + + @test sinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-Inf,-0x1.53045B4F849DEP+815) + + @test sinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.55ECFE1B2B215P+0,0x1.3BF72EA61AF1BP+2) + +end + +@testset "minimal_sinh_dec_test" begin + + @test sinh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test sinh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + + @test sinh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-Inf,0.0), def) + + @test sinh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.2CD9FC44EB982P+0,0x1.89BCA168970C6P+432), com) + + @test sinh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(-Inf,-0x1.53045B4F849DEP+815), dac) + +end + +@testset "minimal_cosh_test" begin + + @test cosh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test cosh(bareinterval(0.0,Inf)) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(-0.0,Inf)) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(-Inf,0.0)) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(-Inf,-0.0)) === bareinterval(1.0,Inf) + + @test cosh(entireinterval(BareInterval{Float64})) === bareinterval(1.0,Inf) + + @test cosh(bareinterval(0.0,0.0)) === bareinterval(1.0,1.0) + + @test cosh(bareinterval(-0.0,-0.0)) === bareinterval(1.0,1.0) + + @test cosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432) + + @test cosh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(0x1.53045B4F849DEP+815,Inf) + + @test cosh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(1.0,0x1.4261D2B7D6181P+2) + +end + +@testset "minimal_cosh_dec_test" begin + + @test cosh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(1.0,Inf), dac) + + @test cosh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(1.0,Inf), def) + + @test cosh(interval(entireinterval(BareInterval{Float64}), def)) === interval(bareinterval(1.0,Inf), def) + + @test cosh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), def)) === interval(bareinterval(0x1.8B07551D9F55P+0,0x1.89BCA168970C6P+432), def) + + @test cosh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), com)) === interval(bareinterval(0x1.53045B4F849DEP+815,Inf), dac) + +end + +@testset "minimal_tanh_test" begin + + @test tanh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test tanh(bareinterval(0.0,Inf)) === bareinterval(0.0,1.0) + + @test tanh(bareinterval(-0.0,Inf)) === bareinterval(0.0,1.0) + + @test tanh(bareinterval(-Inf,0.0)) === bareinterval(-1.0,0.0) + + @test tanh(bareinterval(-Inf,-0.0)) === bareinterval(-1.0,0.0) + + @test tanh(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + + @test tanh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test tanh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test tanh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.85EFAB514F394P-1,0x1P+0) + + @test tanh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1) + + @test tanh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.99DB01FDE2406P-1,0x1.F5CF31E1C8103P-1) + +end + +@testset "minimal_tanh_dec_test" begin + + @test tanh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,1.0), dac) + + @test tanh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-1.0,0.0), def) + + @test tanh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(-1.0,1.0), dac) + + @test tanh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.85EFAB514F394P-1,0x1P+0), com) + + @test tanh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), trv)) === interval(bareinterval(-0x1P+0,-0x1.FFFFFFFFFFFFFP-1), trv) + +end + +@testset "minimal_asinh_test" begin + + @test asinh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test asinh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test asinh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test asinh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) + + @test asinh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) + + @test asinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test asinh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test asinh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test asinh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2) + + @test asinh(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9)) === bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2) + + @test asinh(bareinterval(-0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(-0x1.E693DF6EDF1E7P-1,0x1.91FDC64DE0E51P+0) + +end + +@testset "minimal_asinh_dec_test" begin + + @test asinh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + + @test asinh(interval(bareinterval(-Inf,0.0), trv)) === interval(bareinterval(-Inf,0.0), trv) + + @test asinh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), dac) + + @test asinh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0x1.C34366179D426P-1,0x1.9986127438A87P+2), com) + + @test asinh(interval(bareinterval(-0x1.FD219490EAAC1P+38,-0x1.1AF1C9D74F06DP+9), def)) === interval(bareinterval(-0x1.BB86380A6CC45P+4,-0x1.C204D8EB20827P+2), def) + +end + +@testset "minimal_acosh_test" begin + + @test acosh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test acosh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(1.0,Inf)) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(-Inf,1.0)) === bareinterval(0.0,0.0) + + @test acosh(bareinterval(-Inf,0x1.FFFFFFFFFFFFFP-1)) === emptyinterval(BareInterval{Float64}) + + @test acosh(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test acosh(bareinterval(1.0,1.0)) === bareinterval(0.0,0.0) + + @test acosh(bareinterval(1.0,0x1.2C903022DD7AAP+8)) === bareinterval(0.0,0x1.9985FB3D532AFP+2) + + @test acosh(bareinterval(0x1.199999999999AP+0,0x1.2666666666666P+1)) === bareinterval(0x1.C636C1A882F2CP-2,0x1.799C88E79140DP+0) + + @test acosh(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29)) === bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4) + +end + +@testset "minimal_acosh_dec_test" begin + + @test acosh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test acosh(interval(bareinterval(1.0,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + + @test acosh(interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test acosh(interval(bareinterval(1.0,1.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test acosh(interval(bareinterval(0.9,1.0), com)) === interval(bareinterval(0.0,0.0), trv) + + @test acosh(interval(bareinterval(1.0,0x1.2C903022DD7AAP+8), dac)) === interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), dac) + + @test acosh(interval(bareinterval(0.9,0x1.2C903022DD7AAP+8), com)) === interval(bareinterval(0.0,0x1.9985FB3D532AFP+2), trv) + + @test acosh(interval(bareinterval(0x1.14D4E82B2B26FP+15,0x1.72DBE91C837B5P+29), def)) === interval(bareinterval(0x1.656510B4BAEC3P+3,0x1.52A415EE8455AP+4), def) + +end + +@testset "minimal_atanh_test" begin + + @test atanh(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0.0,Inf)) === bareinterval(0.0,Inf) + + @test atanh(bareinterval(-0.0,Inf)) === bareinterval(0.0,Inf) + + @test atanh(bareinterval(1.0,Inf)) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(-Inf,0.0)) === bareinterval(-Inf,0.0) + + @test atanh(bareinterval(-Inf,-0.0)) === bareinterval(-Inf,0.0) + + @test atanh(bareinterval(-Inf,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(-1.0,1.0)) === entireinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test atanh(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test atanh(bareinterval(-1.0,-1.0)) === emptyinterval(BareInterval{Float64}) + + @test atanh(bareinterval(1.0,1.0)) === emptyinterval(BareInterval{Float64}) + + @test atanh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1)) === bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4) + + @test atanh(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4)) === bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4) + +end + +@testset "minimal_atanh_dec_test" begin + + @test atanh(interval(bareinterval(0.0,Inf), dac)) === interval(bareinterval(0.0,Inf), trv) + + @test atanh(interval(bareinterval(-Inf,0.0), def)) === interval(bareinterval(-Inf,0.0), trv) + + @test atanh(interval(bareinterval(-1.0,1.0), com)) === interval(entireinterval(BareInterval{Float64}), trv) + + @test atanh(interval(bareinterval(0.0,0.0), com)) === interval(bareinterval(0.0,0.0), com) + + @test atanh(interval(bareinterval(1.0,1.0), def)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test atanh(interval(bareinterval(0x1.4C0420F6F08CCP-2,0x1.FFFFFFFFFFFFFP-1), com)) === interval(bareinterval(0x1.5871DD2DF9102P-2,0x1.2B708872320E2P+4), com) + + @test atanh(interval(bareinterval(-1.0,0x1.FFFFFFFFFFFFFP-1), com)) === interval(bareinterval(-Inf,0x1.2B708872320E2P+4), trv) + + @test atanh(interval(bareinterval(-0x1.FFB88E9EB6307P-1,0x1.999999999999AP-4), def)) === interval(bareinterval(-0x1.06A3A97D7979CP+2,0x1.9AF93CD234413P-4), def) + + @test atanh(interval(bareinterval(-0x1.FFB88E9EB6307P-1,1.0), com)) === interval(bareinterval(-0x1.06A3A97D7979CP+2,Inf), trv) + +end + +@testset "minimal_sign_test" begin + + @test sign(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test sign(bareinterval(1.0,2.0)) === bareinterval(1.0,1.0) + + @test sign(bareinterval(-1.0,2.0)) === bareinterval(-1.0,1.0) + + @test sign(bareinterval(-1.0,0.0)) === bareinterval(-1.0,0.0) + + @test sign(bareinterval(0.0,2.0)) === bareinterval(0.0,1.0) + + @test sign(bareinterval(-0.0,2.0)) === bareinterval(0.0,1.0) + + @test sign(bareinterval(-5.0,-2.0)) === bareinterval(-1.0,-1.0) + + @test sign(bareinterval(0.0,0.0)) === bareinterval(0.0,0.0) + + @test sign(bareinterval(-0.0,-0.0)) === bareinterval(0.0,0.0) + + @test sign(bareinterval(-0.0,0.0)) === bareinterval(0.0,0.0) + + @test sign(entireinterval(BareInterval{Float64})) === bareinterval(-1.0,1.0) + +end + +@testset "minimal_sign_dec_test" begin + + @test sign(interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(1.0,1.0), com) + + @test sign(interval(bareinterval(-1.0,2.0), com)) === interval(bareinterval(-1.0,1.0), def) + + @test sign(interval(bareinterval(-1.0,0.0), com)) === interval(bareinterval(-1.0,0.0), def) + + @test sign(interval(bareinterval(0.0,2.0), com)) === interval(bareinterval(0.0,1.0), def) + + @test sign(interval(bareinterval(-0.0,2.0), def)) === interval(bareinterval(0.0,1.0), def) + + @test sign(interval(bareinterval(-5.0,-2.0), trv)) === interval(bareinterval(-1.0,-1.0), trv) + + @test sign(interval(bareinterval(0.0,0.0), dac)) === interval(bareinterval(0.0,0.0), dac) + +end + +@testset "minimal_ceil_test" begin + + @test ceil(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test ceil(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test ceil(bareinterval(1.1,2.0)) === bareinterval(2.0,2.0) + + @test ceil(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) + + @test ceil(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) + + @test ceil(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) + + @test ceil(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) + + @test ceil(bareinterval(-1.9,2.2)) === bareinterval(-1.0,3.0) + + @test ceil(bareinterval(-1.0,2.2)) === bareinterval(-1.0,3.0) + + @test ceil(bareinterval(0.0,2.2)) === bareinterval(0.0,3.0) + + @test ceil(bareinterval(-0.0,2.2)) === bareinterval(0.0,3.0) + + @test ceil(bareinterval(-1.5,Inf)) === bareinterval(-1.0,Inf) + + @test ceil(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf)) === bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf) + + @test ceil(bareinterval(-Inf,2.2)) === bareinterval(-Inf,3.0) + + @test ceil(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) === bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023) + +end + +@testset "minimal_ceil_dec_test" begin + + @test ceil(interval(bareinterval(1.1,2.0), com)) === interval(bareinterval(2.0,2.0), dac) + + @test ceil(interval(bareinterval(-1.1,2.0), com)) === interval(bareinterval(-1.0,2.0), def) + + @test ceil(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(-1.0,0.0), def) + + @test ceil(interval(bareinterval(-1.1,-0.0), trv)) === interval(bareinterval(-1.0,0.0), trv) + + @test ceil(interval(bareinterval(-1.1,-0.4), dac)) === interval(bareinterval(-1.0,0.0), def) + + @test ceil(interval(bareinterval(-1.9,2.2), com)) === interval(bareinterval(-1.0,3.0), def) + + @test ceil(interval(bareinterval(-1.0,2.2), dac)) === interval(bareinterval(-1.0,3.0), def) + + @test ceil(interval(bareinterval(0.0,2.2), trv)) === interval(bareinterval(0.0,3.0), trv) + + @test ceil(interval(bareinterval(-0.0,2.2), def)) === interval(bareinterval(0.0,3.0), def) + + @test ceil(interval(bareinterval(-1.5,Inf), trv)) === interval(bareinterval(-1.0,Inf), trv) + + @test ceil(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), dac)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), def) + + @test ceil(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac) + + @test ceil(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,3.0), trv) + + @test ceil(interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), dac)) === interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), def) + +end + +@testset "minimal_floor_test" begin + + @test floor(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test floor(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test floor(bareinterval(1.1,2.0)) === bareinterval(1.0,2.0) + + @test floor(bareinterval(-1.1,2.0)) === bareinterval(-2.0,2.0) + + @test floor(bareinterval(-1.1,0.0)) === bareinterval(-2.0,0.0) + + @test floor(bareinterval(-1.1,-0.0)) === bareinterval(-2.0,0.0) + + @test floor(bareinterval(-1.1,-0.4)) === bareinterval(-2.0,-1.0) + + @test floor(bareinterval(-1.9,2.2)) === bareinterval(-2.0,2.0) + + @test floor(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) + + @test floor(bareinterval(0.0,2.2)) === bareinterval(0.0,2.0) + + @test floor(bareinterval(-0.0,2.2)) === bareinterval(0.0,2.0) + + @test floor(bareinterval(-1.5,Inf)) === bareinterval(-2.0,Inf) + + @test floor(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) + +end + +@testset "minimal_floor_dec_test" begin + + @test floor(interval(bareinterval(1.1,2.0), com)) === interval(bareinterval(1.0,2.0), def) + + @test floor(interval(bareinterval(-1.1,2.0), def)) === interval(bareinterval(-2.0,2.0), def) + + @test floor(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(-2.0,0.0), def) + + @test floor(interval(bareinterval(-1.2,-1.1), com)) === interval(bareinterval(-2.0,-2.0), com) + + @test floor(interval(bareinterval(-1.1,-0.4), def)) === interval(bareinterval(-2.0,-1.0), def) + + @test floor(interval(bareinterval(-1.9,2.2), com)) === interval(bareinterval(-2.0,2.0), def) + + @test floor(interval(bareinterval(-1.0,2.2), trv)) === interval(bareinterval(-1.0,2.0), trv) + + @test floor(interval(bareinterval(0.0,2.2), trv)) === interval(bareinterval(0.0,2.0), trv) + + @test floor(interval(bareinterval(-0.0,2.2), com)) === interval(bareinterval(0.0,2.0), def) + + @test floor(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-2.0,Inf), def) + + @test floor(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) + + @test floor(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,-0x1.FFFFFFFFFFFFFp1023), dac) + +end + +@testset "minimal_trunc_test" begin + + @test trunc(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test trunc(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test trunc(bareinterval(1.1,2.1)) === bareinterval(1.0,2.0) + + @test trunc(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) + + @test trunc(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) + + @test trunc(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) + + @test trunc(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) + + @test trunc(bareinterval(-1.9,2.2)) === bareinterval(-1.0,2.0) + + @test trunc(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) + + @test trunc(bareinterval(0.0,2.2)) === bareinterval(0.0,2.0) + + @test trunc(bareinterval(-0.0,2.2)) === bareinterval(0.0,2.0) + + @test trunc(bareinterval(-1.5,Inf)) === bareinterval(-1.0,Inf) + + @test trunc(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) + +end + +@testset "minimal_trunc_dec_test" begin + + @test trunc(interval(bareinterval(1.1,2.1), com)) === interval(bareinterval(1.0,2.0), def) + + @test trunc(interval(bareinterval(1.1,1.9), com)) === interval(bareinterval(1.0,1.0), com) + + @test trunc(interval(bareinterval(-1.1,2.0), dac)) === interval(bareinterval(-1.0,2.0), def) + + @test trunc(interval(bareinterval(-1.1,0.0), trv)) === interval(bareinterval(-1.0,0.0), trv) + + @test trunc(interval(bareinterval(-1.1,-0.0), def)) === interval(bareinterval(-1.0,0.0), def) + + @test trunc(interval(bareinterval(-1.1,-0.4), com)) === interval(bareinterval(-1.0,0.0), def) + + @test trunc(interval(bareinterval(-1.9,2.2), def)) === interval(bareinterval(-1.0,2.0), def) + + @test trunc(interval(bareinterval(-1.0,2.2), dac)) === interval(bareinterval(-1.0,2.0), def) + + @test trunc(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-1.0,Inf), def) + + @test trunc(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) + + @test trunc(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), com)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,0x1.FFFFFFFFFFFFFp1023), dac) + + @test trunc(interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), dac)) === interval(bareinterval(0x1.FFFFFFFFFFFFFp1023,Inf), def) + +end + +@testset "minimal_round_ties_to_even_test" begin + + @test round(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test round(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test round(bareinterval(1.1,2.1)) === bareinterval(1.0,2.0) + + @test round(bareinterval(-1.1,2.0)) === bareinterval(-1.0,2.0) + + @test round(bareinterval(-1.1,-0.4)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.1,0.0)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.1,-0.0)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.9,2.2)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.0,2.2)) === bareinterval(-1.0,2.0) + + @test round(bareinterval(1.5,2.1)) === bareinterval(2.0,2.0) + + @test round(bareinterval(-1.5,2.0)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.1,-0.5)) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.9,2.5)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(0.0,2.5)) === bareinterval(0.0,2.0) + + @test round(bareinterval(-0.0,2.5)) === bareinterval(0.0,2.0) + + @test round(bareinterval(-1.5,2.5)) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.5,Inf)) === bareinterval(-2.0,Inf) + + @test round(bareinterval(-Inf,2.2)) === bareinterval(-Inf,2.0) + +end + +@testset "minimal_round_ties_to_even_dec_test" begin + + @test round(interval(bareinterval(1.1,2.1), com)) === interval(bareinterval(1.0,2.0), def) + + @test round(interval(bareinterval(-1.1,2.0), trv)) === interval(bareinterval(-1.0,2.0), trv) + + @test round(interval(bareinterval(-1.6,-1.5), com)) === interval(bareinterval(-2.0,-2.0), dac) + + @test round(interval(bareinterval(-1.6,-1.4), com)) === interval(bareinterval(-2.0,-1.0), def) + + @test round(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(-2.0,Inf), def) + + @test round(interval(bareinterval(-Inf,2.2), trv)) === interval(bareinterval(-Inf,2.0), trv) + +end + +@testset "minimal_round_ties_to_away_test" begin + + @test round(emptyinterval(BareInterval{Float64}), RoundNearestTiesAway) === emptyinterval(BareInterval{Float64}) + + @test round(entireinterval(BareInterval{Float64}), RoundNearestTiesAway) === entireinterval(BareInterval{Float64}) + + @test round(bareinterval(1.1,2.1), RoundNearestTiesAway) === bareinterval(1.0,2.0) + + @test round(bareinterval(-1.1,2.0), RoundNearestTiesAway) === bareinterval(-1.0,2.0) + + @test round(bareinterval(-1.1,0.0), RoundNearestTiesAway) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.1,-0.0), RoundNearestTiesAway) === bareinterval(-1.0,-0.0) + + @test round(bareinterval(-1.1,-0.4), RoundNearestTiesAway) === bareinterval(-1.0,0.0) + + @test round(bareinterval(-1.9,2.2), RoundNearestTiesAway) === bareinterval(-2.0,2.0) + + @test round(bareinterval(-1.0,2.2), RoundNearestTiesAway) === bareinterval(-1.0,2.0) + + @test round(bareinterval(0.5,2.1), RoundNearestTiesAway) === bareinterval(1.0,2.0) + + @test round(bareinterval(-2.5,2.0), RoundNearestTiesAway) === bareinterval(-3.0,2.0) + + @test round(bareinterval(-1.1,-0.5), RoundNearestTiesAway) === bareinterval(-1.0,-1.0) + + @test round(bareinterval(-1.9,2.5), RoundNearestTiesAway) === bareinterval(-2.0,3.0) + + @test round(bareinterval(-1.5,2.5), RoundNearestTiesAway) === bareinterval(-2.0,3.0) + + @test round(bareinterval(0.0,2.5), RoundNearestTiesAway) === bareinterval(0.0,3.0) + + @test round(bareinterval(-0.0,2.5), RoundNearestTiesAway) === bareinterval(0.0,3.0) + + @test round(bareinterval(-1.5,Inf), RoundNearestTiesAway) === bareinterval(-2.0,Inf) + + @test round(bareinterval(-Inf,2.2), RoundNearestTiesAway) === bareinterval(-Inf,2.0) + +end + +@testset "minimal_round_ties_to_away_dec_test" begin + + @test round(interval(bareinterval(1.1,2.1), com), RoundNearestTiesAway) === interval(bareinterval(1.0,2.0), def) + + @test round(interval(bareinterval(-1.9,2.2), com), RoundNearestTiesAway) === interval(bareinterval(-2.0,2.0), def) + + @test round(interval(bareinterval(1.9,2.2), com), RoundNearestTiesAway) === interval(bareinterval(2.0,2.0), com) + + @test round(interval(bareinterval(-1.0,2.2), trv), RoundNearestTiesAway) === interval(bareinterval(-1.0,2.0), trv) + + @test round(interval(bareinterval(2.5,2.6), com), RoundNearestTiesAway) === interval(bareinterval(3.0,3.0), dac) + + @test round(interval(bareinterval(-1.5,Inf), dac), RoundNearestTiesAway) === interval(bareinterval(-2.0,Inf), def) + + @test round(interval(bareinterval(-Inf,2.2), def), RoundNearestTiesAway) === interval(bareinterval(-Inf,2.0), def) + +end + +@testset "minimal_abs_test" begin + + @test abs(emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test abs(entireinterval(BareInterval{Float64})) === bareinterval(0.0,Inf) + + @test abs(bareinterval(1.1,2.1)) === bareinterval(1.1,2.1) + + @test abs(bareinterval(-1.1,2.0)) === bareinterval(0.0,2.0) + + @test abs(bareinterval(-1.1,0.0)) === bareinterval(0.0,1.1) + + @test abs(bareinterval(-1.1,-0.0)) === bareinterval(0.0,1.1) + + @test abs(bareinterval(-1.1,-0.4)) === bareinterval(0.4,1.1) + + @test abs(bareinterval(-1.9,0.2)) === bareinterval(0.0,1.9) + + @test abs(bareinterval(0.0,0.2)) === bareinterval(0.0,0.2) + + @test abs(bareinterval(-0.0,0.2)) === bareinterval(0.0,0.2) + + @test abs(bareinterval(-1.5,Inf)) === bareinterval(0.0,Inf) + + @test abs(bareinterval(-Inf,-2.2)) === bareinterval(2.2,Inf) + +end + +@testset "minimal_abs_dec_test" begin + + @test abs(interval(bareinterval(-1.1,2.0), com)) === interval(bareinterval(0.0,2.0), com) + + @test abs(interval(bareinterval(-1.1,0.0), dac)) === interval(bareinterval(0.0,1.1), dac) + + @test abs(interval(bareinterval(-1.1,-0.0), def)) === interval(bareinterval(0.0,1.1), def) + + @test abs(interval(bareinterval(-1.1,-0.4), trv)) === interval(bareinterval(0.4,1.1), trv) + + @test abs(interval(bareinterval(-1.9,0.2), dac)) === interval(bareinterval(0.0,1.9), dac) + + @test abs(interval(bareinterval(0.0,0.2), def)) === interval(bareinterval(0.0,0.2), def) + + @test abs(interval(bareinterval(-0.0,0.2), com)) === interval(bareinterval(0.0,0.2), com) + + @test abs(interval(bareinterval(-1.5,Inf), dac)) === interval(bareinterval(0.0,Inf), dac) + +end + +@testset "minimal_min_test" begin + + @test min(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test min(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test min(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test min(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === bareinterval(-Inf,2.0) + + @test min(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf,2.0) + + @test min(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test min(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test min(bareinterval(1.0,5.0), bareinterval(2.0,4.0)) === bareinterval(1.0,4.0) + + @test min(bareinterval(0.0,5.0), bareinterval(2.0,4.0)) === bareinterval(0.0,4.0) + + @test min(bareinterval(-0.0,5.0), bareinterval(2.0,4.0)) === bareinterval(0.0,4.0) + + @test min(bareinterval(1.0,5.0), bareinterval(2.0,8.0)) === bareinterval(1.0,5.0) + + @test min(bareinterval(1.0,5.0), entireinterval(BareInterval{Float64})) === bareinterval(-Inf,5.0) + + @test min(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,-5.0) + + @test min(bareinterval(-7.0,0.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,0.0) + + @test min(bareinterval(-7.0,-0.0), bareinterval(2.0,4.0)) === bareinterval(-7.0,0.0) + +end + +@testset "minimal_min_dec_test" begin + + @test min(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(-Inf,2.0), dac) + + @test min(interval(bareinterval(-7.0,-5.0), trv), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(-7.0,-5.0), trv) + + @test min(interval(bareinterval(-7.0,0.0), dac), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(-7.0,0.0), def) + + @test min(interval(bareinterval(-7.0,-0.0), com), interval(bareinterval(2.0,4.0), com)) === interval(bareinterval(-7.0,0.0), com) + +end + +@testset "minimal_max_test" begin + + @test max(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === emptyinterval(BareInterval{Float64}) + + @test max(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test max(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test max(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === bareinterval(1.0,Inf) + + @test max(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0,Inf) + + @test max(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test max(emptyinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test max(bareinterval(1.0,5.0), bareinterval(2.0,4.0)) === bareinterval(2.0,5.0) + + @test max(bareinterval(1.0,5.0), bareinterval(2.0,8.0)) === bareinterval(2.0,8.0) + + @test max(bareinterval(-1.0,5.0), entireinterval(BareInterval{Float64})) === bareinterval(-1.0,Inf) + + @test max(bareinterval(-7.0,-5.0), bareinterval(2.0,4.0)) === bareinterval(2.0,4.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(0.0,4.0)) === bareinterval(0.0,4.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(-0.0,4.0)) === bareinterval(0.0,4.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(-2.0,0.0)) === bareinterval(-2.0,0.0) + + @test max(bareinterval(-7.0,-5.0), bareinterval(-2.0,-0.0)) === bareinterval(-2.0,0.0) + +end + +@testset "minimal_max_dec_test" begin + + @test max(interval(entireinterval(BareInterval{Float64}), dac), interval(bareinterval(1.0,2.0), com)) === interval(bareinterval(1.0,Inf), dac) + + @test max(interval(bareinterval(-7.0,-5.0), trv), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(2.0,4.0), trv) + + @test max(interval(bareinterval(-7.0,5.0), dac), interval(bareinterval(2.0,4.0), def)) === interval(bareinterval(2.0,5.0), def) + + @test max(interval(bareinterval(3.0,3.5), com), interval(bareinterval(2.0,4.0), com)) === interval(bareinterval(3.0,4.0), com) + +end diff --git a/test/ITF1788_tests/libieeep1788_num.jl b/test/ITF1788_tests/libieeep1788_num.jl new file mode 100644 index 000000000..47a30f594 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_num.jl @@ -0,0 +1,431 @@ +@testset "minimal_inf_test" begin + + @test inf(emptyinterval(BareInterval{Float64})) === +Inf + + @test inf(bareinterval(-Inf,+Inf)) === -Inf + + @test inf(bareinterval(1.0,2.0)) === 1.0 + + @test inf(bareinterval(-3.0,-2.0)) === -3.0 + + @test inf(bareinterval(-Inf,2.0)) === -Inf + + @test inf(bareinterval(-Inf,0.0)) === -Inf + + @test inf(bareinterval(-Inf,-0.0)) === -Inf + + @test inf(bareinterval(-2.0,Inf)) === -2.0 + + @test inf(bareinterval(0.0,Inf)) === -0.0 + + @test inf(bareinterval(-0.0,Inf)) === -0.0 + + @test inf(bareinterval(-0.0,0.0)) === -0.0 + + @test inf(bareinterval(0.0,-0.0)) === -0.0 + + @test inf(bareinterval(0.0,0.0)) === -0.0 + + @test inf(bareinterval(-0.0,-0.0)) === -0.0 + +end + +@testset "minimal_inf_dec_test" begin + + @test isnan(inf(nai(Interval{Float64}))) + + @test inf(interval(emptyinterval(BareInterval{Float64}), trv)) === +Inf + + @test inf(interval(bareinterval(-Inf,+Inf), def)) === -Inf + + @test inf(interval(bareinterval(1.0,2.0), com)) === 1.0 + + @test inf(interval(bareinterval(-3.0,-2.0), trv)) === -3.0 + + @test inf(interval(bareinterval(-Inf,2.0), dac)) === -Inf + + @test inf(interval(bareinterval(-Inf,0.0), def)) === -Inf + + @test inf(interval(bareinterval(-Inf,-0.0), trv)) === -Inf + + @test inf(interval(bareinterval(-2.0,Inf), trv)) === -2.0 + + @test inf(interval(bareinterval(0.0,Inf), def)) === -0.0 + + @test inf(interval(bareinterval(-0.0,Inf), trv)) === -0.0 + + @test inf(interval(bareinterval(-0.0,0.0), dac)) === -0.0 + + @test inf(interval(bareinterval(0.0,-0.0), trv)) === -0.0 + + @test inf(interval(bareinterval(0.0,0.0), trv)) === -0.0 + + @test inf(interval(bareinterval(-0.0,-0.0), trv)) === -0.0 + +end + +@testset "minimal_sup_test" begin + + @test sup(emptyinterval(BareInterval{Float64})) === -Inf + + @test sup(bareinterval(-Inf,+Inf)) === +Inf + + @test sup(bareinterval(1.0,2.0)) === 2.0 + + @test sup(bareinterval(-3.0,-2.0)) === -2.0 + + @test sup(bareinterval(-Inf,2.0)) === 2.0 + + @test sup(bareinterval(-Inf,0.0)) === 0.0 + + @test sup(bareinterval(-Inf,-0.0)) === 0.0 + + @test sup(bareinterval(-2.0,Inf)) === Inf + + @test sup(bareinterval(0.0,Inf)) === Inf + + @test sup(bareinterval(-0.0,Inf)) === Inf + + @test sup(bareinterval(-0.0,0.0)) === 0.0 + + @test sup(bareinterval(0.0,-0.0)) === 0.0 + + @test sup(bareinterval(0.0,0.0)) === 0.0 + + @test sup(bareinterval(-0.0,-0.0)) === 0.0 + +end + +@testset "minimal_sup_dec_test" begin + + @test isnan(sup(nai(Interval{Float64}))) + + @test sup(interval(emptyinterval(BareInterval{Float64}), trv)) === -Inf + + @test sup(interval(bareinterval(-Inf,+Inf), def)) === +Inf + + @test sup(interval(bareinterval(1.0,2.0), com)) === 2.0 + + @test sup(interval(bareinterval(-3.0,-2.0), trv)) === -2.0 + + @test sup(interval(bareinterval(-Inf,2.0), dac)) === 2.0 + + @test sup(interval(bareinterval(-Inf,0.0), def)) === 0.0 + + @test sup(interval(bareinterval(-Inf,-0.0), trv)) === 0.0 + + @test sup(interval(bareinterval(-2.0,Inf), trv)) === Inf + + @test sup(interval(bareinterval(0.0,Inf), def)) === Inf + + @test sup(interval(bareinterval(-0.0,Inf), trv)) === Inf + + @test sup(interval(bareinterval(-0.0,0.0), dac)) === +0.0 + + @test sup(interval(bareinterval(0.0,-0.0), trv)) === +0.0 + + @test sup(interval(bareinterval(0.0,0.0), trv)) === +0.0 + + @test sup(interval(bareinterval(-0.0,-0.0), trv)) === +0.0 + +end + +@testset "minimal_mid_test" begin + + @test isnan(mid(emptyinterval(BareInterval{Float64}))) + + @test mid(bareinterval(-Inf,+Inf)) === 0.0 + + @test mid(bareinterval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023)) === 0.0 + + @test mid(bareinterval(0.0,2.0)) === 1.0 + + @test mid(bareinterval(2.0,2.0)) === 2.0 + + @test mid(bareinterval(-2.0,2.0)) === 0.0 + + @test mid(bareinterval(0.0,Inf)) === 0x1.FFFFFFFFFFFFFp1023 + + @test mid(bareinterval(-Inf,1.2)) === -0x1.FFFFFFFFFFFFFp1023 + + @test mid(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0.0 + + @test mid(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0.0 + + @test mid(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023)) === 0x1.7FFFFFFFFFFFFP+1023 + + @test mid(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022)) === 0x0.0000000000002P-1022 + +end + +@testset "minimal_mid_dec_test" begin + + @test isnan(mid(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(mid(nai(Interval{Float64}))) + + @test mid(interval(bareinterval(-Inf,+Inf), def)) === 0.0 + + @test mid(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023,+0x1.FFFFFFFFFFFFFp1023), trv)) === 0.0 + + @test mid(interval(bareinterval(0.0,2.0), com)) === 1.0 + + @test mid(interval(bareinterval(2.0,2.0), dac)) === 2.0 + + @test mid(interval(bareinterval(-2.0,2.0), trv)) === 0.0 + + @test mid(interval(bareinterval(0.0,Inf), trv)) === 0x1.FFFFFFFFFFFFFp1023 + + @test mid(interval(bareinterval(-Inf,1.2), trv)) === -0x1.FFFFFFFFFFFFFp1023 + + @test mid(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv)) === 0.0 + + @test mid(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv)) === 0.0 + + @test mid(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv)) === 0x1.7FFFFFFFFFFFFP+1023 + + @test mid(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv)) === 0x0.0000000000002P-1022 + +end + +@testset "minimal_rad_test" begin + + @test radius(bareinterval(0.0,2.0)) === 1.0 + + @test radius(bareinterval(2.0,2.0)) === 0.0 + + @test isnan(radius(emptyinterval(BareInterval{Float64}))) + + @test radius(bareinterval(-Inf,+Inf)) === Inf + + @test radius(bareinterval(0.0,Inf)) === Inf + + @test radius(bareinterval(-Inf, 1.2)) === Inf + + @test radius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022)) === 0x0.0000000000002P-1022 + + @test radius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000002P-1022)) === 0x0.0000000000001P-1022 + + @test radius(bareinterval(0x1P+0,0x1.0000000000003P+0)) === 0x1P-51 + +end + +@testset "minimal_rad_dec_test" begin + + @test radius(interval(bareinterval(0.0,2.0), trv)) === 1.0 + + @test radius(interval(bareinterval(2.0,2.0), com)) === 0.0 + + @test isnan(radius(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(radius(nai(Interval{Float64}))) + + @test radius(interval(bareinterval(-Inf,+Inf), trv)) === Inf + + @test radius(interval(bareinterval(0.0,Inf), def)) === Inf + + @test radius(interval(bareinterval(-Inf, 1.2), trv)) === Inf + + @test radius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv)) === 0x0.0000000000002P-1022 + + @test radius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv)) === 0x0.0000000000001P-1022 + + @test radius(interval(bareinterval(0x1P+0,0x1.0000000000003P+0), trv)) === 0x1P-51 + +end + +@testset "minimal_mid_rad_test" begin + + @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) + + @test midradius(bareinterval(-Inf,Inf))[1] === 0.0 && midradius(bareinterval(-Inf,Inf))[2] === Inf + + @test midradius(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[1] === 0.0 && midradius(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.FFFFFFFFFFFFFP+1023 + + @test midradius(bareinterval(0.0,2.0))[1] === 1.0 && midradius(bareinterval(0.0,2.0))[2] === 1.0 + + @test midradius(bareinterval(2.0,2.0))[1] === 2.0 && midradius(bareinterval(2.0,2.0))[2] === 0.0 + + @test midradius(bareinterval(-2.0,2.0))[1] === 0.0 && midradius(bareinterval(-2.0,2.0))[2] === 2.0 + + @test midradius(bareinterval(0.0,Inf))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(bareinterval(0.0,Inf))[2] === Inf + + @test midradius(bareinterval(-Inf, 1.2))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(bareinterval(-Inf, 1.2))[2] === Inf + + @test midradius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[1] === 0.0 && midradius(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022))[2] === 0x0.0000000000002P-1022 + + @test midradius(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[1] === 0.0 && midradius(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022))[2] === 0x0.0000000000002P-1022 + + @test midradius(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023))[2] === 0x1.0p+1022 + + @test midradius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[1] === 0x0.0000000000002P-1022 && midradius(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022))[2] === 0x0.0000000000001P-1022 + +end + +@testset "minimal_mid_rad_dec_test" begin + + @test isnan(midradius(emptyinterval(BareInterval{Float64}))[1]) && isnan(midradius(emptyinterval(BareInterval{Float64}))[2]) + + @test isnan(midradius(nai(Interval{Float64}))[1]) && isnan(midradius(nai(Interval{Float64}))[2]) + + @test midradius(interval(bareinterval(-Inf,Inf), def))[1] === 0.0 && midradius(interval(bareinterval(-Inf,Inf), def))[2] === Inf + + @test midradius(interval(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x1.FFFFFFFFFFFFFP+1023,0x1.FFFFFFFFFFFFFP+1023), trv))[2] === 0x1.FFFFFFFFFFFFFP+1023 + + @test midradius(interval(bareinterval(0.0,2.0), com))[1] === 1.0 && midradius(interval(bareinterval(0.0,2.0), com))[2] === 1.0 + + @test midradius(interval(bareinterval(2.0,2.0), dac))[1] === 2.0 && midradius(interval(bareinterval(2.0,2.0), dac))[2] === 0.0 + + @test midradius(interval(bareinterval(-2.0,2.0), trv))[1] === 0.0 && midradius(interval(bareinterval(-2.0,2.0), trv))[2] === 2.0 + + @test midradius(interval(bareinterval(0.0,Inf), trv))[1] === 0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(0.0,Inf), trv))[2] === Inf + + @test midradius(interval(bareinterval(-Inf, 1.2), trv))[1] === -0x1.FFFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(-Inf, 1.2), trv))[2] === Inf + + @test midradius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x0.0000000000002P-1022,0x0.0000000000001P-1022), trv))[2] === 0x0.0000000000002P-1022 + + @test midradius(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv))[1] === 0.0 && midradius(interval(bareinterval(-0x0.0000000000001P-1022,0x0.0000000000002P-1022), trv))[2] === 0x0.0000000000002P-1022 + + @test midradius(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv))[1] === 0x1.7FFFFFFFFFFFFP+1023 && midradius(interval(bareinterval(0x1.FFFFFFFFFFFFFP+1022,0x1.FFFFFFFFFFFFFP+1023), trv))[2] === 0x1.0p+1022 + + @test midradius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv))[1] === 0x0.0000000000002P-1022 && midradius(interval(bareinterval(0x0.0000000000001P-1022,0x0.0000000000003P-1022), trv))[2] === 0x0.0000000000001P-1022 + +end + +@testset "minimal_wid_test" begin + + @test diam(bareinterval(2.0,2.0)) === 0.0 + + @test diam(bareinterval(1.0,2.0)) === 1.0 + + @test diam(bareinterval(1.0,Inf)) === Inf + + @test diam(bareinterval(-Inf,2.0)) === Inf + + @test diam(bareinterval(-Inf,+Inf)) === Inf + + @test isnan(diam(emptyinterval(BareInterval{Float64}))) + + @test diam(bareinterval(0x1P+0,0x1.0000000000001P+0)) === 0x1P-52 + + @test diam(bareinterval(0x1P-1022,0x1.0000000000001P-1022)) === 0x0.0000000000001P-1022 + +end + +@testset "minimal_wid_dec_test" begin + + @test diam(interval(bareinterval(2.0,2.0), com)) === 0.0 + + @test diam(interval(bareinterval(1.0,2.0), trv)) === 1.0 + + @test diam(interval(bareinterval(1.0,Inf), trv)) === Inf + + @test diam(interval(bareinterval(-Inf,2.0), def)) === Inf + + @test diam(interval(bareinterval(-Inf,+Inf), trv)) === Inf + + @test isnan(diam(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(diam(nai(Interval{Float64}))) + + @test diam(interval(bareinterval(0x1P+0,0x1.0000000000001P+0), trv)) === 0x1P-52 + + @test diam(interval(bareinterval(0x1P-1022,0x1.0000000000001P-1022), trv)) === 0x0.0000000000001P-1022 + +end + +@testset "minimal_mag_test" begin + + @test mag(bareinterval(1.0,2.0)) === 2.0 + + @test mag(bareinterval(-4.0,2.0)) === 4.0 + + @test mag(bareinterval(-Inf,2.0)) === Inf + + @test mag(bareinterval(1.0,Inf)) === Inf + + @test mag(bareinterval(-Inf,+Inf)) === Inf + + @test isnan(mag(emptyinterval(BareInterval{Float64}))) + + @test mag(bareinterval(-0.0,0.0)) === 0.0 + + @test mag(bareinterval(-0.0,-0.0)) === 0.0 + +end + +@testset "minimal_mag_dec_test" begin + + @test mag(interval(bareinterval(1.0,2.0), com)) === 2.0 + + @test mag(interval(bareinterval(-4.0,2.0), trv)) === 4.0 + + @test mag(interval(bareinterval(-Inf,2.0), trv)) === Inf + + @test mag(interval(bareinterval(1.0,Inf), def)) === Inf + + @test mag(interval(bareinterval(-Inf,+Inf), trv)) === Inf + + @test isnan(mag(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(mag(nai(Interval{Float64}))) + + @test mag(interval(bareinterval(-0.0,0.0), trv)) === 0.0 + + @test mag(interval(bareinterval(-0.0,-0.0), trv)) === 0.0 + +end + +@testset "minimal_mig_test" begin + + @test mig(bareinterval(1.0,2.0)) === 1.0 + + @test mig(bareinterval(-4.0,2.0)) === 0.0 + + @test mig(bareinterval(-4.0,-2.0)) === 2.0 + + @test mig(bareinterval(-Inf,2.0)) === 0.0 + + @test mig(bareinterval(-Inf,-2.0)) === 2.0 + + @test mig(bareinterval(-1.0,Inf)) === 0.0 + + @test mig(bareinterval(1.0,Inf)) === 1.0 + + @test mig(bareinterval(-Inf,+Inf)) === 0.0 + + @test isnan(mig(emptyinterval(BareInterval{Float64}))) + + @test mig(bareinterval(-0.0,0.0)) === 0.0 + + @test mig(bareinterval(-0.0,-0.0)) === 0.0 + +end + +@testset "minimal_mig_dec_test" begin + + @test mig(interval(bareinterval(1.0,2.0), com)) === 1.0 + + @test mig(interval(bareinterval(-4.0,2.0), trv)) === 0.0 + + @test mig(interval(bareinterval(-4.0,-2.0), trv)) === 2.0 + + @test mig(interval(bareinterval(-Inf,2.0), def)) === 0.0 + + @test mig(interval(bareinterval(-Inf,-2.0), trv)) === 2.0 + + @test mig(interval(bareinterval(-1.0,Inf), trv)) === 0.0 + + @test mig(interval(bareinterval(1.0,Inf), trv)) === 1.0 + + @test mig(interval(bareinterval(-Inf,+Inf), trv)) === 0.0 + + @test isnan(mig(interval(emptyinterval(BareInterval{Float64}), trv))) + + @test isnan(mig(nai(Interval{Float64}))) + + @test mig(interval(bareinterval(-0.0,0.0), trv)) === 0.0 + + @test mig(interval(bareinterval(-0.0,-0.0), trv)) === 0.0 + +end diff --git a/test/ITF1788_tests/libieeep1788_overlap.jl b/test/ITF1788_tests/libieeep1788_overlap.jl new file mode 100644 index 000000000..e12997845 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_overlap.jl @@ -0,0 +1,161 @@ +@testset "minimal_overlap_test" begin + + @test overlap(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.both_empty + + @test overlap(emptyinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.first_empty + + @test overlap(bareinterval(1.0,2.0), emptyinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.second_empty + + @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,Inf)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(-Inf,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,4.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(1.0,2.0), bareinterval(3.0,3.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,3.0)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(2.0,2.0), bareinterval(3.0,Inf)) === IntervalArithmetic.Overlap.before + + @test overlap(bareinterval(-Inf,2.0), bareinterval(2.0,3.0)) === IntervalArithmetic.Overlap.meets + + @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,3.0)) === IntervalArithmetic.Overlap.meets + + @test overlap(bareinterval(1.0,2.0), bareinterval(2.0,Inf)) === IntervalArithmetic.Overlap.meets + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.5,2.5)) === IntervalArithmetic.Overlap.overlaps + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,Inf)) === IntervalArithmetic.Overlap.starts + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,3.0)) === IntervalArithmetic.Overlap.starts + + @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,3.0)) === IntervalArithmetic.Overlap.starts + + @test overlap(bareinterval(1.0,2.0), entireinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,3.0)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,3.0)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,3.0)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,Inf)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(bareinterval(1.0,2.0), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.finishes + + @test overlap(bareinterval(1.0,2.0), bareinterval(0.0,2.0)) === IntervalArithmetic.Overlap.finishes + + @test overlap(bareinterval(2.0,2.0), bareinterval(0.0,2.0)) === IntervalArithmetic.Overlap.finishes + + @test overlap(bareinterval(1.0,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.equals + + @test overlap(bareinterval(1.0,1.0), bareinterval(1.0,1.0)) === IntervalArithmetic.Overlap.equals + + @test overlap(bareinterval(-Inf,1.0), bareinterval(-Inf,1.0)) === IntervalArithmetic.Overlap.equals + + @test overlap(entireinterval(BareInterval{Float64}), entireinterval(BareInterval{Float64})) === IntervalArithmetic.Overlap.equals + + @test overlap(bareinterval(3.0,4.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,4.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,3.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(3.0,Inf), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.after + + @test overlap(bareinterval(2.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.met_by + + @test overlap(bareinterval(2.0,3.0), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.met_by + + @test overlap(bareinterval(1.5,2.5), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.overlapped_by + + @test overlap(bareinterval(1.5,2.5), bareinterval(-Inf,2.0)) === IntervalArithmetic.Overlap.overlapped_by + + @test overlap(bareinterval(1.0,Inf), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.started_by + + @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.started_by + + @test overlap(bareinterval(1.0,3.0), bareinterval(1.0,1.0)) === IntervalArithmetic.Overlap.started_by + + @test overlap(bareinterval(-Inf,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(entireinterval(BareInterval{Float64}), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(bareinterval(0.0,3.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(bareinterval(0.0,3.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.contains + + @test overlap(bareinterval(-Inf,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.finished_by + + @test overlap(bareinterval(0.0,2.0), bareinterval(1.0,2.0)) === IntervalArithmetic.Overlap.finished_by + + @test overlap(bareinterval(0.0,2.0), bareinterval(2.0,2.0)) === IntervalArithmetic.Overlap.finished_by + +end + +@testset "minimal_overlap_dec_test" begin + + @test overlap(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === IntervalArithmetic.Overlap.both_empty + + @test overlap(interval(emptyinterval(BareInterval{Float64}), trv), interval(bareinterval(1.0,2.0), com)) === IntervalArithmetic.Overlap.first_empty + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === IntervalArithmetic.Overlap.second_empty + + @test overlap(interval(bareinterval(2.0,2.0), def), interval(bareinterval(3.0,4.0), def)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(1.0,2.0), dac), interval(bareinterval(3.0,4.0), com)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(1.0,2.0), com), interval(bareinterval(3.0,3.0), trv)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(2.0,2.0), trv), interval(bareinterval(3.0,3.0), def)) === IntervalArithmetic.Overlap.before + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(2.0,3.0), def)) === IntervalArithmetic.Overlap.meets + + @test overlap(interval(bareinterval(1.0,2.0), dac), interval(bareinterval(1.5,2.5), def)) === IntervalArithmetic.Overlap.overlaps + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,3.0), com)) === IntervalArithmetic.Overlap.starts + + @test overlap(interval(bareinterval(1.0,1.0), trv), interval(bareinterval(1.0,3.0), def)) === IntervalArithmetic.Overlap.starts + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(0.0,3.0), dac)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(interval(bareinterval(2.0,2.0), trv), interval(bareinterval(0.0,3.0), def)) === IntervalArithmetic.Overlap.contained_by + + @test overlap(interval(bareinterval(1.0,2.0), trv), interval(bareinterval(0.0,2.0), com)) === IntervalArithmetic.Overlap.finishes + + @test overlap(interval(bareinterval(2.0,2.0), def), interval(bareinterval(0.0,2.0), dac)) === IntervalArithmetic.Overlap.finishes + + @test overlap(interval(bareinterval(1.0,2.0), def), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.equals + + @test overlap(interval(bareinterval(1.0,1.0), dac), interval(bareinterval(1.0,1.0), dac)) === IntervalArithmetic.Overlap.equals + + @test overlap(interval(bareinterval(3.0,4.0), trv), interval(bareinterval(2.0,2.0), trv)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(3.0,4.0), def), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(3.0,3.0), com), interval(bareinterval(1.0,2.0), dac)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(3.0,3.0), def), interval(bareinterval(2.0,2.0), trv)) === IntervalArithmetic.Overlap.after + + @test overlap(interval(bareinterval(2.0,3.0), def), interval(bareinterval(1.0,2.0), trv)) === IntervalArithmetic.Overlap.met_by + + @test overlap(interval(bareinterval(1.5,2.5), com), interval(bareinterval(1.0,2.0), com)) === IntervalArithmetic.Overlap.overlapped_by + + @test overlap(interval(bareinterval(1.0,3.0), dac), interval(bareinterval(1.0,2.0), def)) === IntervalArithmetic.Overlap.started_by + + @test overlap(interval(bareinterval(1.0,3.0), com), interval(bareinterval(1.0,1.0), dac)) === IntervalArithmetic.Overlap.started_by + + @test overlap(interval(bareinterval(0.0,3.0), com), interval(bareinterval(1.0,2.0), dac)) === IntervalArithmetic.Overlap.contains + + @test overlap(interval(bareinterval(0.0,3.0), com), interval(bareinterval(2.0,2.0), def)) === IntervalArithmetic.Overlap.contains + + @test overlap(interval(bareinterval(0.0,2.0), def), interval(bareinterval(1.0,2.0), trv)) === IntervalArithmetic.Overlap.finished_by + + @test overlap(interval(bareinterval(0.0,2.0), dac), interval(bareinterval(2.0,2.0), def)) === IntervalArithmetic.Overlap.finished_by + +end diff --git a/test/ITF1788_tests/libieeep1788_rec_bool.jl b/test/ITF1788_tests/libieeep1788_rec_bool.jl new file mode 100644 index 000000000..00581d568 --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_rec_bool.jl @@ -0,0 +1,301 @@ +@testset "minimal_is_common_interval_test" begin + + @test iscommon(bareinterval(-27.0,-27.0)) === true + + @test iscommon(bareinterval(-27.0, 0.0)) === true + + @test iscommon(bareinterval(0.0,0.0)) === true + + @test iscommon(bareinterval(-0.0,-0.0)) === true + + @test iscommon(bareinterval(-0.0,0.0)) === true + + @test iscommon(bareinterval(0.0,-0.0)) === true + + @test iscommon(bareinterval(5.0, 12.4)) === true + + @test iscommon(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023)) === true + + @test iscommon(entireinterval(BareInterval{Float64})) === false + + @test iscommon(emptyinterval(BareInterval{Float64})) === false + + @test iscommon(bareinterval(-Inf, 0.0)) === false + + @test iscommon(bareinterval(0.0, Inf)) === false + +end + +@testset "minimal_is_common_interval_dec_test" begin + + @test iscommon(interval(bareinterval(-27.0,-27.0), com)) === true + + @test iscommon(interval(bareinterval(-27.0, 0.0), com)) === true + + @test iscommon(interval(bareinterval(0.0,0.0), com)) === true + + @test iscommon(interval(bareinterval(-0.0,-0.0), com)) === true + + @test iscommon(interval(bareinterval(-0.0,0.0), com)) === true + + @test iscommon(interval(bareinterval(0.0,-0.0), com)) === true + + @test iscommon(interval(bareinterval(5.0, 12.4), com)) === true + + @test iscommon(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), com)) === true + + @test iscommon(interval(bareinterval(-27.0,-27.0), trv)) === true + + @test iscommon(interval(bareinterval(-27.0, 0.0), def)) === true + + @test iscommon(interval(bareinterval(0.0,0.0), dac)) === true + + @test iscommon(interval(bareinterval(-0.0,-0.0), trv)) === true + + @test iscommon(interval(bareinterval(-0.0,0.0), def)) === true + + @test iscommon(interval(bareinterval(0.0,-0.0), dac)) === true + + @test iscommon(interval(bareinterval(5.0, 12.4), def)) === true + + @test iscommon(interval(bareinterval(-0x1.FFFFFFFFFFFFFp1023, 0x1.FFFFFFFFFFFFFp1023), trv)) === true + + @test iscommon(interval(entireinterval(BareInterval{Float64}), dac)) === false + + @test iscommon(nai(Interval{Float64})) === false + + @test iscommon(interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test iscommon(interval(bareinterval(-Inf, 0.0), trv)) === false + + @test iscommon(interval(bareinterval(0.0, Inf), def)) === false + +end + +@testset "minimal_is_singleton_test" begin + + @test isthin(bareinterval(-27.0,-27.0)) === true + + @test isthin(bareinterval(-2.0, -2.0)) === true + + @test isthin(bareinterval(12.0,12.0)) === true + + @test isthin(bareinterval(17.1, 17.1)) === true + + @test isthin(bareinterval(-0.0,-0.0)) === true + + @test isthin(bareinterval(0.0,0.0)) === true + + @test isthin(bareinterval(-0.0, 0.0)) === true + + @test isthin(bareinterval(0.0, -0.0)) === true + + @test isthin(emptyinterval(BareInterval{Float64})) === false + + @test isthin(entireinterval(BareInterval{Float64})) === false + + @test isthin(bareinterval(-1.0, 0.0)) === false + + @test isthin(bareinterval(-1.0, -0.5)) === false + + @test isthin(bareinterval(1.0, 2.0)) === false + + @test isthin(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023)) === false + + @test isthin(bareinterval(-1.0,Inf)) === false + +end + +@testset "minimal_is_singleton_dec_test" begin + + @test isthin(interval(bareinterval(-27.0,-27.0), def)) === true + + @test isthin(interval(bareinterval(-2.0, -2.0), trv)) === true + + @test isthin(interval(bareinterval(12.0,12.0), dac)) === true + + @test isthin(interval(bareinterval(17.1, 17.1), com)) === true + + @test isthin(interval(bareinterval(-0.0,-0.0), def)) === true + + @test isthin(interval(bareinterval(0.0,0.0), com)) === true + + @test isthin(interval(bareinterval(-0.0, 0.0), def)) === true + + @test isthin(interval(bareinterval(0.0, -0.0), dac)) === true + + @test isthin(interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test isthin(nai(Interval{Float64})) === false + + @test isthin(interval(entireinterval(BareInterval{Float64}), def)) === false + + @test isthin(interval(bareinterval(-1.0, 0.0), dac)) === false + + @test isthin(interval(bareinterval(-1.0, -0.5), com)) === false + + @test isthin(interval(bareinterval(1.0, 2.0), def)) === false + + @test isthin(interval(bareinterval(-Inf,-0x1.FFFFFFFFFFFFFp1023), dac)) === false + + @test isthin(interval(bareinterval(-1.0,Inf), trv)) === false + +end + +@testset "minimal_is_member_test" begin + + @test in_interval(-27.0, bareinterval(-27.0,-27.0)) === true + + @test in_interval(-27.0, bareinterval(-27.0, 0.0)) === true + + @test in_interval(-7.0, bareinterval(-27.0, 0.0)) === true + + @test in_interval(0.0, bareinterval(-27.0, 0.0)) === true + + @test in_interval(-0.0, bareinterval(0.0,0.0)) === true + + @test in_interval(0.0, bareinterval(0.0,0.0)) === true + + @test in_interval(0.0, bareinterval(-0.0,-0.0)) === true + + @test in_interval(0.0, bareinterval(-0.0,0.0)) === true + + @test in_interval(0.0, bareinterval(0.0,-0.0)) === true + + @test in_interval(5.0, bareinterval(5.0, 12.4)) === true + + @test in_interval(6.3, bareinterval(5.0, 12.4)) === true + + @test in_interval(12.4, bareinterval(5.0, 12.4)) === true + + @test in_interval(0.0, entireinterval(BareInterval{Float64})) === true + + @test in_interval(5.0, entireinterval(BareInterval{Float64})) === true + + @test in_interval(6.3, entireinterval(BareInterval{Float64})) === true + + @test in_interval(12.4, entireinterval(BareInterval{Float64})) === true + + @test in_interval(0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) === true + + @test in_interval(-0x1.FFFFFFFFFFFFFp1023, entireinterval(BareInterval{Float64})) === true + + @test in_interval(0x1.0p-1022, entireinterval(BareInterval{Float64})) === true + + @test in_interval(-0x1.0p-1022, entireinterval(BareInterval{Float64})) === true + + @test in_interval(-71.0, bareinterval(-27.0, 0.0)) === false + + @test in_interval(0.1, bareinterval(-27.0, 0.0)) === false + + @test in_interval(-0.01, bareinterval(0.0,0.0)) === false + + @test in_interval(0.000001, bareinterval(0.0,0.0)) === false + + @test in_interval(111110.0, bareinterval(-0.0,-0.0)) === false + + @test in_interval(4.9, bareinterval(5.0, 12.4)) === false + + @test in_interval(-6.3, bareinterval(5.0, 12.4)) === false + + @test in_interval(0.0, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(-4535.3, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(-Inf, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(Inf, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(NaN, emptyinterval(BareInterval{Float64})) === false + + @test in_interval(-Inf, entireinterval(BareInterval{Float64})) === false + + @test in_interval(Inf, entireinterval(BareInterval{Float64})) === false + + @test in_interval(NaN, entireinterval(BareInterval{Float64})) === false + +end + +@testset "minimal_is_member_dec_test" begin + + @test in_interval(-27.0, interval(bareinterval(-27.0,-27.0), trv)) === true + + @test in_interval(-27.0, interval(bareinterval(-27.0, 0.0), def)) === true + + @test in_interval(-7.0, interval(bareinterval(-27.0, 0.0), dac)) === true + + @test in_interval(0.0, interval(bareinterval(-27.0, 0.0), com)) === true + + @test in_interval(-0.0, interval(bareinterval(0.0,0.0), trv)) === true + + @test in_interval(0.0, interval(bareinterval(0.0,0.0), def)) === true + + @test in_interval(0.0, interval(bareinterval(-0.0,-0.0), dac)) === true + + @test in_interval(0.0, interval(bareinterval(-0.0,0.0), com)) === true + + @test in_interval(0.0, interval(bareinterval(0.0,-0.0), trv)) === true + + @test in_interval(5.0, interval(bareinterval(5.0, 12.4), def)) === true + + @test in_interval(6.3, interval(bareinterval(5.0, 12.4), dac)) === true + + @test in_interval(12.4, interval(bareinterval(5.0, 12.4), com)) === true + + @test in_interval(0.0, interval(entireinterval(BareInterval{Float64}), trv)) === true + + @test in_interval(5.0, interval(entireinterval(BareInterval{Float64}), def)) === true + + @test in_interval(6.3, interval(entireinterval(BareInterval{Float64}), dac)) === true + + @test in_interval(12.4, interval(entireinterval(BareInterval{Float64}), trv)) === true + + @test in_interval(0x1.FFFFFFFFFFFFFp1023, interval(entireinterval(BareInterval{Float64}), def)) === true + + @test in_interval(-0x1.FFFFFFFFFFFFFp1023, interval(entireinterval(BareInterval{Float64}), dac)) === true + + @test in_interval(0x1.0p-1022, interval(entireinterval(BareInterval{Float64}), trv)) === true + + @test in_interval(-0x1.0p-1022, interval(entireinterval(BareInterval{Float64}), def)) === true + + @test in_interval(-71.0, interval(bareinterval(-27.0, 0.0), trv)) === false + + @test in_interval(0.1, interval(bareinterval(-27.0, 0.0), def)) === false + + @test in_interval(-0.01, interval(bareinterval(0.0,0.0), dac)) === false + + @test in_interval(0.000001, interval(bareinterval(0.0,0.0), com)) === false + + @test in_interval(111110.0, interval(bareinterval(-0.0,-0.0), trv)) === false + + @test in_interval(4.9, interval(bareinterval(5.0, 12.4), def)) === false + + @test in_interval(-6.3, interval(bareinterval(5.0, 12.4), dac)) === false + + @test in_interval(0.0, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(0.0, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-4535.3, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-4535.3, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-Inf, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(-Inf, nai(Interval{Float64})) === false + + @test in_interval(Inf, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(Inf, nai(Interval{Float64})) === false + + @test in_interval(NaN, interval(emptyinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(NaN, nai(Interval{Float64})) === false + + @test in_interval(-Inf, interval(entireinterval(BareInterval{Float64}), trv)) === false + + @test in_interval(Inf, interval(entireinterval(BareInterval{Float64}), def)) === false + + @test in_interval(NaN, interval(entireinterval(BareInterval{Float64}), dac)) === false + +end diff --git a/test/ITF1788_tests/libieeep1788_reduction.jl b/test/ITF1788_tests/libieeep1788_reduction.jl new file mode 100644 index 000000000..7588026df --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_reduction.jl @@ -0,0 +1,45 @@ +@testset "minimal_sum_test" begin + + @test sum([1.0, 2.0, 3.0]) === 6.0 + + @test isnan(sum([1.0, 2.0, NaN, 3.0])) + + @test isnan(sum([1.0, -Inf, 2.0, Inf, 3.0])) + +end + +@testset "minimal_sum_abs_test" begin + + @test sum(abs.([1.0, -2.0, 3.0])) === 6.0 + + @test isnan(sum(abs.([1.0, -2.0, NaN, 3.0]))) + + @test sum(abs.([1.0, -Inf, 2.0, Inf, 3.0])) === Inf + +end + +@testset "minimal_sum_sqr_test" begin + + @test sum([1.0, 2.0, 3.0].^2) === 14.0 + + @test isnan(sum([1.0, 2.0, NaN, 3.0].^2)) + + @test sum([1.0, -Inf, 2.0, Inf, 3.0].^2) === Inf + +end + +@testset "minimal_dot_test" begin + + @test sum(.*([1.0, 2.0, 3.0], [1.0, 2.0, 3.0])) === 14.0 + + @test_broken sum(.*([0x10000000000001p0, 0x1p104], [0x0fffffffffffffp0, -1.0])) === -1.0 + + @test isnan(sum(.*([1.0, 2.0, NaN, 3.0], [1.0, 2.0, 3.0, 4.0]))) + + @test isnan(sum(.*([1.0, 2.0, 3.0, 4.0], [1.0, 2.0, NaN, 3.0]))) + + @test isnan(sum(.*([1.0, 2.0, 0.0, 4.0], [1.0, 2.0, Inf, 3.0]))) + + @test isnan(sum(.*([1.0, 2.0, -Inf, 4.0], [1.0, 2.0, 0.0, 3.0]))) + +end diff --git a/test/ITF1788_tests/libieeep1788_set.jl b/test/ITF1788_tests/libieeep1788_set.jl new file mode 100644 index 000000000..2a16e11fc --- /dev/null +++ b/test/ITF1788_tests/libieeep1788_set.jl @@ -0,0 +1,55 @@ +@testset "minimal_intersection_test" begin + + @test intersect_interval(bareinterval(1.0,3.0), bareinterval(2.1,4.0)) === bareinterval(2.1,3.0) + + @test intersect_interval(bareinterval(1.0,3.0), bareinterval(3.0,4.0)) === bareinterval(3.0,3.0) + + @test intersect_interval(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(entireinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})) === bareinterval(1.0,3.0) + +end + +@testset "minimal_intersection_dec_test" begin + + @test intersect_interval(interval(bareinterval(1.0,3.0), com), interval(bareinterval(2.1,4.0), com)) === interval(bareinterval(2.1,3.0), trv) + + @test intersect_interval(interval(bareinterval(1.0,3.0), dac), interval(bareinterval(3.0,4.0), def)) === interval(bareinterval(3.0,3.0), trv) + + @test intersect_interval(interval(bareinterval(1.0,3.0), def), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test intersect_interval(interval(entireinterval(BareInterval{Float64}), dac), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test intersect_interval(interval(bareinterval(1.0,3.0), dac), interval(entireinterval(BareInterval{Float64}), dac)) === interval(bareinterval(1.0,3.0), trv) + +end + +@testset "minimal_convex_hull_test" begin + + @test hull(bareinterval(1.0,3.0), bareinterval(2.1,4.0)) === bareinterval(1.0,4.0) + + @test hull(bareinterval(1.0,1.0), bareinterval(2.1,4.0)) === bareinterval(1.0,4.0) + + @test hull(bareinterval(1.0,3.0), emptyinterval(BareInterval{Float64})) === bareinterval(1.0,3.0) + + @test hull(emptyinterval(BareInterval{Float64}), emptyinterval(BareInterval{Float64})) === emptyinterval(BareInterval{Float64}) + + @test hull(bareinterval(1.0,3.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + +end + +@testset "minimal_convex_hull_dec_test" begin + + @test hull(interval(bareinterval(1.0,3.0), trv), interval(bareinterval(2.1,4.0), trv)) === interval(bareinterval(1.0,4.0), trv) + + @test hull(interval(bareinterval(1.0,1.0), trv), interval(bareinterval(2.1,4.0), trv)) === interval(bareinterval(1.0,4.0), trv) + + @test hull(interval(bareinterval(1.0,3.0), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(bareinterval(1.0,3.0), trv) + + @test hull(interval(emptyinterval(BareInterval{Float64}), trv), interval(emptyinterval(BareInterval{Float64}), trv)) === interval(emptyinterval(BareInterval{Float64}), trv) + + @test hull(interval(bareinterval(1.0,3.0), trv), interval(entireinterval(BareInterval{Float64}), dac)) === interval(entireinterval(BareInterval{Float64}), trv) + +end diff --git a/test/ITF1788_tests/mpfi.jl b/test/ITF1788_tests/mpfi.jl new file mode 100644 index 000000000..672c1e00c --- /dev/null +++ b/test/ITF1788_tests/mpfi.jl @@ -0,0 +1,2991 @@ +@testset "mpfi_abs" begin + + @test abs(bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) + + @test abs(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(-Inf, +8.0)) === bareinterval(0.0, +Inf) + + @test abs(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test abs(bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test abs(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test abs(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test abs(bareinterval(0x123456789p-16, 0x123456799p-16)) === bareinterval(0x123456789p-16, 0x123456799p-16) + + @test abs(bareinterval(-0x123456789p-16, 0x123456799p-16)) === bareinterval(0.0, 0x123456799p-16) + +end + +@testset "mpfi_acos" begin + + @test acos(bareinterval(-1.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51) + + @test acos(bareinterval(0.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-52) + + @test acos(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test acos(bareinterval(-1.0, -0.5)) === bareinterval(0x10c152382d7365p-51, 0x1921fb54442d19p-51) + + @test acos(bareinterval(-0.75, -0.25)) === bareinterval(0x1d2cf5c7c70f0bp-52, 0x4d6749be4edb1p-49) + + @test acos(bareinterval(-0.5, 0.5)) === bareinterval(0x10c152382d7365p-52, 0x860a91c16b9b3p-50) + + @test acos(bareinterval(0.25, 0.625)) === bareinterval(0x1ca94936b98a21p-53, 0x151700e0c14b25p-52) + + @test acos(bareinterval(-1.0, 1.0)) === bareinterval(0.0, 0x1921fb54442d19p-51) + +end + +@testset "mpfi_acosh" begin + + @test acosh(bareinterval(+1.0, +Inf)) === bareinterval(0.0, +Inf) + + @test acosh(bareinterval(+1.5, +Inf)) === bareinterval(0x1ecc2caec51609p-53, +Inf) + + @test acosh(bareinterval(1.0, 1.5)) === bareinterval(0.0, 0xf661657628b05p-52) + + @test acosh(bareinterval(1.5, 1.5)) === bareinterval(0x1ecc2caec51609p-53, 0xf661657628b05p-52) + + @test acosh(bareinterval(2.0, 1000.0)) === bareinterval(0x544909c66010dp-50, 0x799d4ba2a13b5p-48) + +end + +@testset "mpfi_add" begin + + @test +(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, +1.0) + + @test +(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +16.0) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -7.0) + + @test +(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-7.0, +8.0) + + @test +(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test +(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test +(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(+8.0, +Inf) + + @test +(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(0.0, +8.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +16.0) + + @test +(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test +(bareinterval(0.0, +Inf), bareinterval(-7.0, +8.0)) === bareinterval(-7.0, +Inf) + + @test +(bareinterval(-0.375, -0x10187p-256), bareinterval(-0.125, 0x1p-240)) === bareinterval(-0x1p-1, -0x187p-256) + + @test +(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x10000000000000p-93, 0x789abcdp0)) === bareinterval(-0x10000000000001p-93, 0x123456789abcdp0) + + @test +(bareinterval(-4.0, +7.0), bareinterval(-0x123456789abcdp-17, 3e300)) === bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947) + + @test +(bareinterval(0x1000100010001p+8, 0x1p+60), bareinterval(0x1000100010001p0, 3.0e300)) === bareinterval(+0x1010101010101p+8, 0x8f596b3002c1bp+947) + + @test +(bareinterval(+4.0, +8.0), bareinterval(-4.0, -2.0)) === bareinterval(0.0, +6.0) + + @test +(bareinterval(+4.0, +8.0), bareinterval(-9.0, -8.0)) === bareinterval(-5.0, 0.0) + +end + +@testset "mpfi_add_d" begin + + @test +(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)) === bareinterval(-Inf, -7.0) + + @test +(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, -7.0) + + @test +(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -0x1bffffffffffffp-50) + + @test +(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(-Inf, -8.0e-17) + + @test +(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test +(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0x170ef54646d497p-106) + + @test +(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-Inf, -0x16345785d89fff00p0) + + @test +(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 8.0) + + @test +(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, 0x16345785d8a00100p0) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === entireinterval(BareInterval{Float64}) + + @test +(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test +(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) + + @test +(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test +(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109) + + @test +(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x114b37f4b51f71p-107, 8.0) + + @test +(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 8.0) + + @test +(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f7p-103, 0x114b37f4b51f7p-103)) === bareinterval(0x114b37f4b51f7p-103, 0x10000000000001p-49) + + @test +(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-0x50b45a75f7e81p-104, +Inf) + + @test +(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, +Inf) + + @test +(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0x142d169d7dfa03p-106, +Inf) + + @test +(bareinterval(-32.0, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) + + @test +(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) + + @test +(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) + + @test +(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) + + @test +(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) + + @test +(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) + + @test +(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)) === bareinterval(0xfff8p-4, 0x10018p-4) + + @test +(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) + + @test +(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) + + @test +(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) + + @test +(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)) === bareinterval(-0x10038p-4, -0x10018p-4) + +end + +@testset "mpfi_asin" begin + + @test asin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1921fb54442d19p-52, 0.0) + + @test asin(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test asin(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test asin(bareinterval(-1.0, -0.5)) === bareinterval(-0x1921fb54442d19p-52, -0x10c152382d7365p-53) + + @test asin(bareinterval(-0.75, -0.25)) === bareinterval(-0x1b235315c680ddp-53, -0x102be9ce0b87cdp-54) + + @test asin(bareinterval(-0.5, 0.5)) === bareinterval(-0x860a91c16b9b3p-52, 0x860a91c16b9b3p-52) + + @test asin(bareinterval(0.25, 0.625)) === bareinterval(0x102be9ce0b87cdp-54, 0x159aad71ced00fp-53) + + @test asin(bareinterval(-1.0, 1.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + +end + +@testset "mpfi_asinh" begin + + @test asinh(bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -0x152728c91b5f1dp-51) + + @test asinh(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test asinh(bareinterval(-Inf, +8.0)) === bareinterval(-Inf, 0x58d8dc657eaf5p-49) + + @test asinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test asinh(bareinterval(-1.0, 0.0)) === bareinterval(-0x1c34366179d427p-53, 0.0) + + @test asinh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test asinh(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1c34366179d427p-53) + + @test asinh(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x58d8dc657eaf5p-49) + + @test asinh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test asinh(bareinterval(-6.0, -4.0)) === bareinterval(-0x4fbca919fe219p-49, -0x10c1f8a6e80eebp-51) + + @test asinh(bareinterval(-2.0, -0.5)) === bareinterval(-0x2e32430627a11p-49, -0x1ecc2caec51609p-54) + + @test asinh(bareinterval(-1.0, -0.5)) === bareinterval(-0x1c34366179d427p-53, -0x1ecc2caec51609p-54) + + @test asinh(bareinterval(-0.75, -0.25)) === bareinterval(-0x162e42fefa39fp-49, -0xfd67d91ccf31bp-54) + + @test asinh(bareinterval(-0.5, 0.5)) === bareinterval(-0xf661657628b05p-53, 0xf661657628b05p-53) + + @test asinh(bareinterval(0.25, 0.625)) === bareinterval(0xfd67d91ccf31bp-54, 0x4b89d40b2fecdp-51) + + @test asinh(bareinterval(-1.0, 1.0)) === bareinterval(-0x1c34366179d427p-53, 0x1c34366179d427p-53) + + @test asinh(bareinterval(0.125, 17.0)) === bareinterval(0xff5685b4cb4b9p-55, 0xe1be0ba541ef7p-50) + + @test asinh(bareinterval(17.0, 42.0)) === bareinterval(0x1c37c174a83dedp-51, 0x8dca6976ad6bdp-49) + + @test asinh(bareinterval(-42.0, 17.0)) === bareinterval(-0x8dca6976ad6bdp-49, 0xe1be0ba541ef7p-50) + +end + +@testset "mpfi_atan" begin + + @test atan(bareinterval(-Inf, -7.0)) === bareinterval(-0x1921fb54442d19p-52, -0x5b7315eed597fp-50) + + @test atan(bareinterval(-Inf, 0.0)) === bareinterval(-0x1921fb54442d19p-52, 0.0) + + @test atan(bareinterval(-Inf, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0xb924fd54cb511p-51) + + @test atan(entireinterval(BareInterval{Float64})) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + + @test atan(bareinterval(-1.0, 0.0)) === bareinterval(-0x1921fb54442d19p-53, 0.0) + + @test atan(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1921fb54442d19p-53) + + @test atan(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0xb924fd54cb511p-51) + + @test atan(bareinterval(0.0, +Inf)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test atan(bareinterval(-6.0, -4.0)) === bareinterval(-0x167d8863bc99bdp-52, -0x54da32547a73fp-50) + + @test atan(bareinterval(-2.0, -0.5)) === bareinterval(-0x11b6e192ebbe45p-52, -0x1dac670561bb4fp-54) + + @test atan(bareinterval(-1.0, -0.5)) === bareinterval(-0x1921fb54442d19p-53, -0x1dac670561bb4fp-54) + + @test atan(bareinterval(-0.75, -0.25)) === bareinterval(-0xa4bc7d1934f71p-52, -0x1f5b75f92c80ddp-55) + + @test atan(bareinterval(-0.5, 0.5)) === bareinterval(-0x1dac670561bb5p-50, 0x1dac670561bb5p-50) + + @test atan(bareinterval(0.25, 0.625)) === bareinterval(0x1f5b75f92c80ddp-55, 0x47802eaf7bfadp-51) + + @test atan(bareinterval(-1.0, 1.0)) === bareinterval(-0x1921fb54442d19p-53, 0x1921fb54442d19p-53) + + @test atan(bareinterval(0.125, 17.0)) === bareinterval(0x1fd5ba9aac2f6dp-56, 0x1831516233f561p-52) + + @test atan(bareinterval(17.0, 42.0)) === bareinterval(0xc18a8b119fabp-47, 0x18c079f3350d27p-52) + + @test atan(bareinterval(-42.0, 17.0)) === bareinterval(-0x18c079f3350d27p-52, 0x1831516233f561p-52) + +end + +@testset "mpfi_atan2" begin + + @test atan(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-0x6d9cc4b34bd0dp-50, -0x1700a7c5784633p-53) + + @test atan(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-0x1921fb54442d19p-52, 0.0) + + @test atan(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + + @test atan(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === bareinterval(-0x1921fb54442d19p-52, 0x1921fb54442d19p-52) + + @test atan(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0x3243f6a8885a3p-49, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test atan(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) + + @test atan(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-51) + + @test atan(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test atan(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1921fb54442d19p-52) + + @test atan(bareinterval(-17.0, -5.0), bareinterval(-4002.0, -1.0)) === bareinterval(-0x191f6c4c09a81bp-51, -0x1a12a5465464cfp-52) + + @test atan(bareinterval(-17.0, -5.0), bareinterval(1.0, 4002.0)) === bareinterval(-0x1831516233f561p-52, -0xa3c20ea13f5e5p-61) + + @test atan(bareinterval(5.0, 17.0), bareinterval(1.0, 4002.0)) === bareinterval(0xa3c20ea13f5e5p-61, 0x1831516233f561p-52) + + @test atan(bareinterval(5.0, 17.0), bareinterval(-4002.0, -1.0)) === bareinterval(0x1a12a5465464cfp-52, 0x191f6c4c09a81bp-51) + + @test atan(bareinterval(-17.0, 5.0), bareinterval(-4002.0, 1.0)) === bareinterval(-0x1921fb54442d19p-51, 0x1921fb54442d19p-51) + +end + +@testset "mpfi_atanh" begin + + @test atanh(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test atanh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test atanh(bareinterval(0.0, +1.0)) === bareinterval(0.0, +Inf) + + @test atanh(bareinterval(-1.0, -0.5)) === bareinterval(-Inf, -0x8c9f53d568185p-52) + + @test atanh(bareinterval(-0.75, -0.25)) === bareinterval(-0x3e44e55c64b4bp-50, -0x1058aefa811451p-54) + + @test atanh(bareinterval(-0.5, 0.5)) === bareinterval(-0x1193ea7aad030bp-53, 0x1193ea7aad030bp-53) + + @test atanh(bareinterval(0.25, 0.625)) === bareinterval(0x1058aefa811451p-54, 0x2eec3bb76c2b3p-50) + + @test atanh(bareinterval(-1.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test atanh(bareinterval(0.125, 1.0)) === bareinterval(0x1015891c9eaef7p-55, +Inf) + +end + +@testset "mpfi_bounded_p" begin + + @test iscommon(bareinterval(-Inf, -8.0)) === false + + @test iscommon(bareinterval(-Inf, 0.0)) === false + + @test iscommon(bareinterval(-Inf, 5.0)) === false + + @test iscommon(entireinterval(BareInterval{Float64})) === false + + @test iscommon(bareinterval(-8.0, 0.0)) === true + + @test iscommon(bareinterval(0.0, 0.0)) === true + + @test iscommon(bareinterval(0.0, 5.0)) === true + + @test iscommon(bareinterval(0.0, +Inf)) === false + + @test iscommon(bareinterval(5.0, +Inf)) === false + + @test iscommon(bareinterval(-34.0, -17.0)) === true + + @test iscommon(bareinterval(-8.0, -1.0)) === true + + @test iscommon(bareinterval(-34.0, 17.0)) === true + + @test iscommon(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test iscommon(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test iscommon(bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test iscommon(bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end + +@testset "mpfi_cbrt" begin + + @test cbrt(bareinterval(-Inf, -125.0)) === bareinterval(-Inf, -5.0) + + @test cbrt(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test cbrt(bareinterval(-Inf, +64.0)) === bareinterval(-Inf, +4.0) + + @test cbrt(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cbrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test cbrt(bareinterval(0.0, +27.0)) === bareinterval(0.0, +3.0) + + @test cbrt(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test cbrt(bareinterval(0x40p0, 0x7dp0)) === bareinterval(4.0, 5.0) + + @test cbrt(bareinterval(-0x1856e4be527197p-354, 0xd8p0)) === bareinterval(-0x2e5e58c0083b7bp-154, 6.0) + + @test cbrt(bareinterval(0x141a9019a2184dp-1047, 0xc29c78c66ac0fp-678)) === bareinterval(0x2b8172e535d44dp-385, 0x24cbd1c55aaa1p-258) + +end + +@testset "mpfi_cos" begin + + @test cos(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-Inf, +8.0)) === bareinterval(-1.0, 1.0) + + @test cos(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-1.0, 0.0)) === bareinterval(0x114a280fb5068bp-53, 1.0) + + @test cos(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test cos(bareinterval(0.0, +1.0)) === bareinterval(0x114a280fb5068bp-53, 1.0) + + @test cos(bareinterval(0.0, +8.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(0.0, +Inf)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-2.0, -0.5)) === bareinterval(-0x1aa22657537205p-54, 0x1c1528065b7d5p-49) + + @test cos(bareinterval(-1.0, -0.25)) === bareinterval(0x114a280fb5068bp-53, 0xf80aa4fbef751p-52) + + @test cos(bareinterval(-0.5, 0.5)) === bareinterval(0x1c1528065b7d4fp-53, 1.0) + + @test cos(bareinterval(-4.5, 0.625)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(1.0, 0x3243f6a8885a3p-48)) === bareinterval(-1.0, 0x4528a03ed41a3p-51) + + @test cos(bareinterval(0.125, 17.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(17.0, 42.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -2.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -3.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-7.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 1.0) + + @test cos(bareinterval(-7.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 1.0) + + @test cos(bareinterval(-7.0, -6.0)) === bareinterval(0x181ff79ed92017p-53, 1.0) + + @test cos(bareinterval(-7.0, -7.0)) === bareinterval(0x181ff79ed92017p-53, 0x181ff79ed92018p-53) + + @test cos(bareinterval(-6.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-6.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-6.0, -1.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -2.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -3.0)) === bareinterval(-1.0, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-6.0, -6.0)) === bareinterval(0x1eb9b7097822f5p-53, 0x1eb9b7097822f6p-53) + + @test cos(bareinterval(-5.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-5.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-5.0, -1.0)) === bareinterval(-1.0, 0x114a280fb5068cp-53) + + @test cos(bareinterval(-5.0, -2.0)) === bareinterval(-1.0, 0x122785706b4adap-54) + + @test cos(bareinterval(-5.0, -3.0)) === bareinterval(-1.0, 0x122785706b4adap-54) + + @test cos(bareinterval(-5.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, 0x122785706b4adap-54) + + @test cos(bareinterval(-5.0, -5.0)) === bareinterval(0x122785706b4ad9p-54, 0x122785706b4adap-54) + + @test cos(bareinterval(-4.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-4.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test cos(bareinterval(-4.0, -1.0)) === bareinterval(-1.0, 0x114a280fb5068cp-53) + + @test cos(bareinterval(-4.0, -2.0)) === bareinterval(-1.0, -0x1aa22657537204p-54) + + @test cos(bareinterval(-4.0, -3.0)) === bareinterval(-1.0, -0x14eaa606db24c0p-53) + + @test cos(bareinterval(-4.0, -4.0)) === bareinterval(-0x14eaa606db24c1p-53, -0x14eaa606db24c0p-53) + +end + +@testset "mpfi_cosh" begin + + @test cosh(bareinterval(-Inf, -7.0)) === bareinterval(0x11228949ba3a8bp-43, +Inf) + + @test cosh(bareinterval(-Inf, 0.0)) === bareinterval(1.0, +Inf) + + @test cosh(bareinterval(-Inf, +8.0)) === bareinterval(1.0, +Inf) + + @test cosh(entireinterval(BareInterval{Float64})) === bareinterval(1.0, +Inf) + + @test cosh(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x18b07551d9f551p-52) + + @test cosh(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test cosh(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x18b07551d9f551p-52) + + @test cosh(bareinterval(0.0, +8.0)) === bareinterval(1.0, 0x1749eaa93f4e77p-42) + + @test cosh(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test cosh(bareinterval(-0.125, 0.0)) === bareinterval(1.0, 0x10200aac16db6fp-52) + + @test cosh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(1.0, 0x120ac1862ae8d1p-52) + + @test cosh(bareinterval(-4.5, -0.625)) === bareinterval(0x99d310a496b6dp-51, 0x1681ceb0641359p-47) + + @test cosh(bareinterval(1.0, 3.0)) === bareinterval(0x18b07551d9f55p-48, 0x1422a497d6185fp-49) + + @test cosh(bareinterval(17.0, 0xb145bb71d3dbp-38)) === bareinterval(0x1709348c0ea503p-29, 0x3ffffffffffa34p+968) + +end + +@testset "mpfi_cot" begin + + @test cot(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test cot(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, 0xe07cf2eb32f0bp-49) + + @test cot(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x148c05d04e1cfdp-53) + + @test cot(bareinterval(0.0, +1.0)) === bareinterval(0x148c05d04e1cfdp-53, +Inf) + + @test cot(bareinterval(0.0, +3.0)) === bareinterval(-0xe07cf2eb32f0bp-49, +Inf) + + @test cot(bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(-3.0, -2.0)) === bareinterval(0x1d4a42e92faa4dp-54, 0xe07cf2eb32f0bp-49) + + @test cot(bareinterval(-3.0, -0x1921fb54442d19p-52)) === bareinterval(0x5cb3b399d747fp-103, 0xe07cf2eb32f0bp-49) + + @test cot(bareinterval(-2.0, 0x1921fb54442d19p-52)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(0.125, 0.5)) === bareinterval(0xea4d6bf23e051p-51, 0x1fd549f047f2bbp-50) + + @test cot(bareinterval(0.125, 0x1921fb54442d19p-52)) === bareinterval(-0x172cece675d1fdp-105, 0x1fd549f047f2bbp-50) + + @test cot(bareinterval(0x1921fb54442d19p-52, 4.0)) === entireinterval(BareInterval{Float64}) + + @test cot(bareinterval(4.0, 0x3243f6a8885a3p-47)) === bareinterval(-0x1d02967c31cdb5p-1, 0x1ba35ba1c6b75dp-53) + + @test cot(bareinterval(0x13a28c59d5433bp-44, 0x9d9462ceaa19dp-43)) === bareinterval(0x148c05d04e1fb7p-53, 0x1cefdde7c84c27p-4) + +end + +@testset "mpfi_coth" begin + + @test coth(bareinterval(-Inf, -7.0)) === bareinterval(-0x100001be6c882fp-52, -1.0) + + @test coth(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, -1.0) + + @test coth(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test coth(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test coth(bareinterval(-8.0, 0.0)) === bareinterval(-Inf, -0x1000003c6ab7e7p-52) + + @test coth(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -0x10145b3cc9964bp-52) + + @test coth(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x150231499b6b1dp-52) + + @test coth(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test coth(bareinterval(0.0, +1.0)) === bareinterval(0x150231499b6b1dp-52, +Inf) + + @test coth(bareinterval(0.0, +3.0)) === bareinterval(0x10145b3cc9964bp-52, +Inf) + + @test coth(bareinterval(0.0, +8.0)) === bareinterval(0x1000003c6ab7e7p-52, +Inf) + + @test coth(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test coth(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test coth(bareinterval(-10.0, -8.0)) === bareinterval(-0x1000003c6ab7e8p-52, -0x100000011b4865p-52) + + @test coth(bareinterval(7.0, 17.0)) === bareinterval(0x1000000000000fp-52, 0x100001be6c882fp-52) + + @test coth(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)) === bareinterval(0x114fc6ceb099bdp-51, 0x10005554fa502fp-46) + +end + +@testset "mpfi_csc" begin + + @test csc(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test csc(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -1.0) + + @test csc(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1303aa9620b223p-52) + + @test csc(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test csc(bareinterval(0.0, +1.0)) === bareinterval(0x1303aa9620b223p-52, +Inf) + + @test csc(bareinterval(0.0, 3.0)) === bareinterval(1.0, +Inf) + + @test csc(bareinterval(0.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-6.0, -4.0)) === bareinterval(1.0, 0x1ca19615f903dap-51) + + @test csc(bareinterval(-6.0, -5.0)) === bareinterval(0x10af73f9df86b7p-52, 0x1ca19615f903dap-51) + + @test csc(bareinterval(-6.0, -6.0)) === bareinterval(0x1ca19615f903d9p-51, 0x1ca19615f903dap-51) + + @test csc(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-5.0, -4.0)) === bareinterval(1.0, 0x15243e8b2f4642p-52) + + @test csc(bareinterval(-5.0, -5.0)) === bareinterval(0x10af73f9df86b7p-52, 0x10af73f9df86b8p-52) + + @test csc(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-4.0, -4.0)) === bareinterval(0x15243e8b2f4641p-52, 0x15243e8b2f4642p-52) + + @test csc(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -1.0) + + @test csc(bareinterval(-3.0, -1.0)) === bareinterval(-0x1c583c440ab0dap-50, -1.0) + + @test csc(bareinterval(-3.0, -2.0)) === bareinterval(-0x1c583c440ab0dap-50, -0x119893a272f912p-52) + + @test csc(bareinterval(-3.0, -3.0)) === bareinterval(-0x1c583c440ab0dap-50, -0x1c583c440ab0d9p-50) + + @test csc(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-2.0, 0.0)) === bareinterval(-Inf, -1.0) + + @test csc(bareinterval(-2.0, -1.0)) === bareinterval(-0x1303aa9620b224p-52, -1.0) + + @test csc(bareinterval(-2.0, -2.0)) === bareinterval(-0x119893a272f913p-52, -0x119893a272f912p-52) + + @test csc(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1303aa9620b223p-52) + + @test csc(bareinterval(-1.0, -1.0)) === bareinterval(-0x1303aa9620b224p-52, -0x1303aa9620b223p-52) + + @test csc(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(1.0, 3.0)) === bareinterval(1.0, 0x1c583c440ab0dap-50) + + @test csc(bareinterval(1.0, 2.0)) === bareinterval(1.0, 0x1303aa9620b224p-52) + + @test csc(bareinterval(1.0, 1.0)) === bareinterval(0x1303aa9620b223p-52, 0x1303aa9620b224p-52) + + @test csc(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(2.0, 3.0)) === bareinterval(0x119893a272f912p-52, 0x1c583c440ab0dap-50) + + @test csc(bareinterval(2.0, 2.0)) === bareinterval(0x119893a272f912p-52, 0x119893a272f913p-52) + + @test csc(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(3.0, 3.0)) === bareinterval(0x1c583c440ab0d9p-50, 0x1c583c440ab0dap-50) + + @test csc(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(4.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -1.0) + + @test csc(bareinterval(4.0, 5.0)) === bareinterval(-0x15243e8b2f4642p-52, -1.0) + + @test csc(bareinterval(4.0, 4.0)) === bareinterval(-0x15243e8b2f4642p-52, -0x15243e8b2f4641p-52) + + @test csc(bareinterval(5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(5.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -0x10af73f9df86b7p-52) + + @test csc(bareinterval(5.0, 5.0)) === bareinterval(-0x10af73f9df86b8p-52, -0x10af73f9df86b7p-52) + + @test csc(bareinterval(6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test csc(bareinterval(6.0, 6.0)) === bareinterval(-0x1ca19615f903dap-51, -0x1ca19615f903d9p-51) + + @test csc(bareinterval(7.0, 7.0)) === bareinterval(+0x185a86a4ceb06cp-52, +0x185a86a4ceb06dp-52) + +end + +@testset "mpfi_csch" begin + + @test csch(bareinterval(-Inf, -7.0)) === bareinterval(-0x1de16d3cffcd54p-62, 0.0) + + @test csch(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test csch(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test csch(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test csch(bareinterval(-8.0, 0.0)) === bareinterval(-Inf, -0x15fc212d92371ap-63) + + @test csch(bareinterval(-3.0, 0.0)) === bareinterval(-Inf, -0x198de80929b901p-56) + + @test csch(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, -0x1b3ab8a78b90c0p-53) + + @test csch(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test csch(bareinterval(0.0, +1.0)) === bareinterval(0x1b3ab8a78b90c0p-53, +Inf) + + @test csch(bareinterval(0.0, +3.0)) === bareinterval(0x198de80929b901p-56, +Inf) + + @test csch(bareinterval(0.0, +8.0)) === bareinterval(0x15fc212d92371ap-63, +Inf) + + @test csch(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test csch(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test csch(bareinterval(-10.0, -8.0)) === bareinterval(-0x15fc212d92371bp-63, -0x17cd79b63733a0p-66) + + @test csch(bareinterval(7.0, 17.0)) === bareinterval(0x1639e3175a68a7p-76, 0x1de16d3cffcd54p-62) + + @test csch(bareinterval(0x10000000000001p-58, 0x10000000000001p-53)) === bareinterval(0x1eb45dc88defeap-52, 0x3fff555693e722p-48) + +end + +@testset "mpfi_d_div" begin + + @test /(bareinterval(-0x170ef54646d496p-107, -0x170ef54646d496p-107), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1a5a3ce29a1787p-110) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x170ef54646d496p-107, 0x170ef54646d496p-107), bareinterval(-Inf, -7.0)) === bareinterval(-0x1a5a3ce29a1787p-110, 0.0) + + @test /(bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106), bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106), bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test /(bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)) === bareinterval(-Inf, -0x13c3ada9f391a5p-110) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, 7.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 7.0)) === bareinterval(0x13c3ada9f391a5p-110, +Inf) + + @test /(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-2.5, -2.5), bareinterval(-8.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-2.5, -2.5), bareinterval(-8.0, -5.0)) === bareinterval(0x5p-4, 0.5) + + @test /(bareinterval(-2.5, -2.5), bareinterval(25.0, 40.0)) === bareinterval(-0x1999999999999ap-56, -0x1p-4) + + @test /(bareinterval(-2.5, -2.5), bareinterval(-16.0, -7.0)) === bareinterval(0x5p-5, 0x16db6db6db6db7p-54) + + @test /(bareinterval(-2.5, -2.5), bareinterval(11.0, 143.0)) === bareinterval(-0x1d1745d1745d18p-55, -0x11e6efe35b4cfap-58) + + @test /(bareinterval(33.125, 33.125), bareinterval(8.28125, 530.0)) === bareinterval(0x1p-4, 4.0) + + @test /(bareinterval(33.125, 33.125), bareinterval(-530.0, -496.875)) === bareinterval(-0x11111111111112p-56, -0x1p-4) + + @test /(bareinterval(33.125, 33.125), bareinterval(54.0, 265.0)) === bareinterval(0.125, 0x13a12f684bda13p-53) + + @test /(bareinterval(33.125, 33.125), bareinterval(52.0, 54.0)) === bareinterval(0x13a12f684bda12p-53, 0x14627627627628p-53) + +end + +@testset "mpfi_diam_abs" begin + + @test diam(bareinterval(-Inf, -8.0)) === +Inf + + @test diam(bareinterval(-Inf, 0.0)) === +Inf + + @test diam(bareinterval(-Inf, 5.0)) === +Inf + + @test diam(entireinterval(BareInterval{Float64})) === +Inf + + @test diam(bareinterval(-Inf, 0.0)) === +Inf + + @test diam(bareinterval(-8.0, 0.0)) === +8.0 + + @test diam(bareinterval(0.0, 0.0)) === 0.0 + + @test diam(bareinterval(0.0, 5.0)) === +5.0 + + @test diam(bareinterval(0.0, +Inf)) === +Inf + + @test diam(bareinterval(-34.0, -17.0)) === 17.0 + +end + +@testset "mpfi_div" begin + + @test /(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-0x75bcd15p0, -0x754ep0), bareinterval(-0x11ep0, -0x9p0)) === bareinterval(0x69p0, 0xd14fadp0) + + @test /(bareinterval(-0x75bcd15p0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+4, -0x9p0)) === bareinterval(0x7.0ef61537b1704p-12, 0xd14fadp0) + + @test /(bareinterval(-0x1.02f0415f9f596p+0, -0x754ep-16), bareinterval(-0x11ep0, -0x7.62ce64fbacd2cp-8)) === bareinterval(0x69p-16, 0x2.30ee5eef9c36cp+4) + + @test /(bareinterval(-0x1.02f0415f9f596p+0, -0x1.489c07caba163p-4), bareinterval(-0x2.e8e36e560704ap+0, -0x7.62ce64fbacd2cp-8)) === bareinterval(0x7.0ef61537b1704p-8, 0x2.30ee5eef9c36cp+4) + + @test /(bareinterval(-0xacbp+256, -0x6f9p0), bareinterval(-0x7p0, 0.0)) === bareinterval(0xffp0, +Inf) + + @test /(bareinterval(-0x100p0, -0xe.bb80d0a0824ep-4), bareinterval(-0x1.7c6d760a831fap+0, 0.0)) === bareinterval(0x9.e9f24790445fp-4, +Inf) + + @test /(bareinterval(-0x1.25f2d73472753p+0, -0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-100.0, -15.0), bareinterval(0.0, +3.0)) === bareinterval(-Inf, -5.0) + + @test /(bareinterval(-2.0, -0x1.25f2d73472753p+0), bareinterval(0.0, +0x9.3b0c8074ccc18p-4)) === bareinterval(-Inf, -0x1.fd8457415f917p+0) + + @test /(bareinterval(-0x123456789p0, -0x754ep+4), bareinterval(0x40bp0, 0x11ep+4)) === bareinterval(-0x480b3bp0, -0x69p0) + + @test /(bareinterval(-0xd.67775e4b8588p-4, -0x754ep-53), bareinterval(0x4.887091874ffc8p+0, 0x11ep+201)) === bareinterval(-0x2.f5008d2df94ccp-4, -0x69p-254) + + @test /(bareinterval(-0x123456789p0, -0x1.b0a62934c76e9p+0), bareinterval(0x40bp-17, 0x2.761ec797697a4p-4)) === bareinterval(-0x480b3bp+17, -0xa.fc5e7338f3e4p+0) + + @test /(bareinterval(-0xd.67775e4b8588p+0, -0x1.b0a62934c76e9p+0), bareinterval(0x4.887091874ffc8p-4, 0x2.761ec797697a4p+4)) === bareinterval(-0x2.f5008d2df94ccp+4, -0xa.fc5e7338f3e4p-8) + + @test /(bareinterval(-0x75bcd15p0, 0.0), bareinterval(-0x90p0, -0x9p0)) === bareinterval(0.0, 0xd14fadp0) + + @test /(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(-0x1p-8, -0xf.5e4900c9c19fp-12)) === bareinterval(0.0, 0x1.4fdb41a33d6cep+4) + + @test /(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(-0xaaaaaaaaap0, 0.0)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-0x1.25f2d73472753p+0, 0.0), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0xeeeeeeeeep0, 0.0), bareinterval(0.0, +0x3p0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-0x75bcd15p0, 0.0), bareinterval(0x9p0, 0x90p0)) === bareinterval(-0xd14fadp0, 0.0) + + @test /(bareinterval(-0x1.4298b2138f2a7p-4, 0.0), bareinterval(0xf.5e4900c9c19fp-12, 0x9p0)) === bareinterval(-0x1.4fdb41a33d6cep+4, 0.0) + + @test /(bareinterval(-0x75bcd15p0, 0xa680p0), bareinterval(-0xaf6p0, -0x9p0)) === bareinterval(-0x1280p0, 0xd14fadp0) + + @test /(bareinterval(-0x12p0, 0x10p0), bareinterval(-0xbbbbbbbbbbp0, -0x9p0)) === bareinterval(-0x1.c71c71c71c71dp0, 2.0) + + @test /(bareinterval(-0x1p0, 0x754ep-16), bareinterval(-0xccccccccccp0, -0x11ep0)) === bareinterval(-0x69p-16, 0xe.525982af70c9p-12) + + @test /(bareinterval(-0xb.5b90b4d32136p-4, 0x6.e694ac6767394p+0), bareinterval(-0xdddddddddddp0, -0xc.f459be9e80108p-4)) === bareinterval(-0x8.85e40b3c3f63p+0, 0xe.071cbfa1de788p-4) + + @test /(bareinterval(-0xacbp+256, 0x6f9p0), bareinterval(-0x7p0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x1.25f2d73472753p+0, +0x9.9a19fd3c1fc18p-4), bareinterval(-0x9.3b0c8074ccc18p-4, +0x4.788df5d72af78p-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, +15.0), bareinterval(-3.0, +3.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(-0x754ep0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0x69p0, 0xbaffep+12) + + @test /(bareinterval(-0x10p0, 0xd0e9dc4p+12), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0xe.525982af70c9p-8, 0xbaffep+12) + + @test /(bareinterval(-0x754ep0, 0x1p+10), bareinterval(0x11ep0, 0xbbbp0)) === bareinterval(-0x69p0, 0xe.525982af70c9p-2) + + @test /(bareinterval(-0x1.18333622af827p+0, 0x2.14b836907297p+0), bareinterval(0x1.263147d1f4bcbp+0, 0x111p0)) === bareinterval(-0xf.3d2f5db8ec728p-4, 0x1.cf8fa732de129p+0) + + @test /(bareinterval(0.0, 0x75bcd15p0), bareinterval(-0xap0, -0x9p0)) === bareinterval(-0xd14fadp0, 0.0) + + @test /(bareinterval(0.0, 0x1.acbf1702af6edp+0), bareinterval(-0x0.fp0, -0xe.3d7a59e2bdacp-4)) === bareinterval(-0x1.e1bb896bfda07p+0, 0.0) + + @test /(bareinterval(0.0, 0xap0), bareinterval(-0x9p0, 0.0)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, 0xap0), bareinterval(-1.0, +1.0)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0x75bcd15p0), bareinterval(+0x9p0, +0xap0)) === bareinterval(0.0, 0xd14fadp0) + + @test /(bareinterval(0.0, 0x1.5f6b03dc8c66fp+0), bareinterval(+0x2.39ad24e812dcep+0, 0xap0)) === bareinterval(0.0, 0x9.deb65b02baep-4) + + @test /(bareinterval(0x754ep0, 0x75bcd15p0), bareinterval(-0x11ep0, -0x9p0)) === bareinterval(-0xd14fadp0, -0x69p0) + + @test /(bareinterval(0x754ep-16, 0x1.008a3accc766dp+4), bareinterval(-0x11ep0, -0x2.497403b31d32ap+0)) === bareinterval(-0x7.02d3edfbc8b6p+0, -0x69p-16) + + @test /(bareinterval(0x9.ac412ff1f1478p-4, 0x75bcd15p0), bareinterval(-0x1.5232c83a0e726p+4, -0x9p0)) === bareinterval(-0xd14fadp0, -0x7.52680a49e5d68p-8) + + @test /(bareinterval(0xe.1552a314d629p-4, 0x1.064c5adfd0042p+0), bareinterval(-0x5.0d4d319a50b04p-4, -0x2.d8f51df1e322ep-4)) === bareinterval(-0x5.c1d97d57d81ccp+0, -0x2.c9a600c455f5ap+0) + + @test /(bareinterval(0x754ep0, 0xeeeep0), bareinterval(-0x11ep0, 0.0)) === bareinterval(-Inf, -0x69p0) + + @test /(bareinterval(0x1.a9016514490e6p-4, 0xeeeep0), bareinterval(-0xe.316e87be0b24p-4, 0.0)) === bareinterval(-Inf, -0x1.df1cc82e6a583p-4) + + @test /(bareinterval(5.0, 6.0), bareinterval(-0x5.0d4d319a50b04p-4, 0x2.d8f51df1e322ep-4)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0x754ep0, +0xeeeeep0), bareinterval(0.0, +0x11ep0)) === bareinterval(0x69p0, +Inf) + + @test /(bareinterval(0x1.7f03f2a978865p+0, 0xeeeeep0), bareinterval(0.0, 0x1.48b08624606b9p+0)) === bareinterval(0x1.2a4fcda56843p+0, +Inf) + + @test /(bareinterval(0x5efc1492p0, 0x1ba2dc763p0), bareinterval(0x2fdd1fp0, 0x889b71p0)) === bareinterval(0xb2p0, 0x93dp0) + + @test /(bareinterval(0x1.d7c06f9ff0706p-8, 0x1ba2dc763p0), bareinterval(0x2fdd1fp-20, 0xe.3d7a59e2bdacp+0)) === bareinterval(0x2.120d75be74b54p-12, 0x93dp+20) + + @test /(bareinterval(0x5.efc1492p-4, 0x1.008a3accc766dp+0), bareinterval(0x2.497403b31d32ap+0, 0x8.89b71p+0)) === bareinterval(0xb.2p-8, 0x7.02d3edfbc8b6p-4) + + @test /(bareinterval(0x8.440e7d65be6bp-8, 0x3.99982e9eae09ep+0), bareinterval(0x8.29fa8d0659e48p-4, 0xc.13d2fd762e4a8p-4)) === bareinterval(0xa.f3518768b206p-8, 0x7.0e2acad54859cp+0) + +end + +@testset "mpfi_div_d" begin + + @test /(bareinterval(-Inf, -7.0), bareinterval(-7.0, -7.0)) === bareinterval(1.0, +Inf) + + @test /(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf, -7.0), bareinterval(7.0, 7.0)) === bareinterval(-Inf, -1.0) + + @test /(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(-Inf, 8.0), bareinterval(-3.0, -3.0)) === bareinterval(-0x15555555555556p-51, +Inf) + + @test /(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test /(bareinterval(-Inf, 8.0), bareinterval(3.0, 3.0)) === bareinterval(-Inf, 0x15555555555556p-51) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === emptyinterval(BareInterval{Float64}) + + @test /(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test /(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test /(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x1d9b1f5d20d556p+5, 0.0) + + @test /(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)) === bareinterval(0.0, 0x1d9b1f5d20d556p+5) + + @test /(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-Inf, 0.0) + + @test /(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0.0, +Inf) + + @test /(bareinterval(-0x10000000000001p-20, -0x10000000000001p-53), bareinterval(-1.0, -1.0)) === bareinterval(0x10000000000001p-53, 0x10000000000001p-20) + + @test /(bareinterval(-0x10000000000002p-20, -0x10000000000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x10000000000001p-19, -1.0) + + @test /(bareinterval(-0x10000000000001p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x1p+33, -0x1000001fffffffp-52) + + @test /(bareinterval(-0x10000000000002p-20, -0x10000020000001p-53), bareinterval(0x10000000000001p-53, 0x10000000000001p-53)) === bareinterval(-0x10000000000001p-19, -0x1000001fffffffp-52) + + @test /(bareinterval(-0x123456789abcdfp-53, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1p-7, 0x1p-53) + + @test /(bareinterval(-0x123456789abcdfp-53, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1c200000000002p-106, 0x1p-53) + + @test /(bareinterval(-1.0, 0x123456789abcdfp-7), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1p-7, 0x1c200000000001p-105) + + @test /(bareinterval(-1.0, 0x10000000000001p-53), bareinterval(-0x123456789abcdfp0, -0x123456789abcdfp0)) === bareinterval(-0x1c200000000002p-106, 0x1c200000000001p-105) + +end + +@testset "mpfi_d_sub" begin + + @test -(bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107), bareinterval(-Inf, -7.0)) === bareinterval(0x1bffffffffffffp-50, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) + + @test -(bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) + + @test -(bareinterval(-0x170ef54646d497p-96, -0x170ef54646d497p-96), bareinterval(-Inf, 0.0)) === bareinterval(-0x170ef54646d497p-96, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test -(bareinterval(0x170ef54646d497p-96, 0x170ef54646d497p-96), bareinterval(-Inf, 0.0)) === bareinterval(0x170ef54646d497p-96, +Inf) + + @test -(bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === bareinterval(-0x16345785d8a00100p0, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, 8.0)) === bareinterval(-8.0, +Inf) + + @test -(bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0), bareinterval(-Inf, 8.0)) === bareinterval(0x16345785d89fff00p0, +Inf) + + @test -(bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0e-17, 0.0e-17), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0x170ef54646d497p-105, 0x170ef54646d497p-105), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109), bareinterval(0.0, 0.0)) === bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109) + + @test -(bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)) === bareinterval(-0x10000000000001p-49, -0x114b37f4b51f71p-107) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)) === bareinterval(-8.0, 0.0) + + @test -(bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107), bareinterval(0.0, 8.0)) === bareinterval(-8.0, 0x114b37f4b51f71p-107) + + @test -(bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104), bareinterval(0.0, +Inf)) === bareinterval(-Inf, -0x50b45a75f7e81p-104) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test -(bareinterval(-0x142d169d7dfa03p-106, -0x142d169d7dfa03p-106), bareinterval(0.0, +Inf)) === bareinterval(-Inf, -0x142d169d7dfa03p-106) + + @test -(bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47), bareinterval(17.0, 32.0)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) + + @test -(bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47), bareinterval(17.0, 0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) + + @test -(bareinterval(0xfb53d14aa9c2fp-48, 0xfb53d14aa9c2fp-48), bareinterval(0xfb53d14aa9c2fp-48, 32.0)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) + + @test -(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) + + @test -(bareinterval(3.5, 3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) + + @test -(bareinterval(256.5, 256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) + + @test -(bareinterval(4097.5, 4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)) === bareinterval(0xfff8p-4, 0x10018p-4) + + @test -(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-48)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) + + @test -(bareinterval(-3.5, -3.5), bareinterval(-0x123456789abcdfp-4, -0x123456789abcdfp-56)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) + + @test -(bareinterval(-256.5, -256.5), bareinterval(-0x123456789abcdfp-52, 0xffp0)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) + + @test -(bareinterval(-4097.5, -4097.5), bareinterval(0x1p-550, 0x1fffffffffffffp-52)) === bareinterval(-0x10038p-4, -0x10018p-4) + +end + +@testset "mpfi_exp" begin + + @test exp(bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1de16b9c24a98fp-63) + + @test exp(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) + + @test exp(bareinterval(-Inf, +1.0)) === bareinterval(0.0, 0x15bf0a8b14576ap-51) + + @test exp(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test exp(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test exp(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x15bf0a8b14576ap-51) + + @test exp(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test exp(bareinterval(-123.0, -17.0)) === bareinterval(0x1766b45dd84f17p-230, 0x1639e3175a689dp-77) + + @test exp(bareinterval(-0.125, 0.25)) === bareinterval(0x1c3d6a24ed8221p-53, 0x148b5e3c3e8187p-52) + + @test exp(bareinterval(-0.125, 0.0)) === bareinterval(0x1c3d6a24ed8221p-53, 1.0) + + @test exp(bareinterval(0.0, 0.25)) === bareinterval(1.0, 0x148b5e3c3e8187p-52) + + @test exp(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x10000000000140p-52, 0x10000000000161p-52) + +end + +@testset "mpfi_exp2" begin + + @test exp2(bareinterval(-Inf, -1.0)) === bareinterval(0.0, 0.5) + + @test exp2(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) + + @test exp2(bareinterval(-Inf, 1.0)) === bareinterval(0.0, 2.0) + + @test exp2(entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test exp2(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test exp2(bareinterval(0.0, +1.0)) === bareinterval(1.0, 2.0) + + @test exp2(bareinterval(0.0, +Inf)) === bareinterval(1.0, +Inf) + + @test exp2(bareinterval(-123.0, -17.0)) === bareinterval(0x1p-123, 0x1p-17) + + @test exp2(bareinterval(-7.0, 7.0)) === bareinterval(0x1p-7, 0x1p+7) + + @test exp2(bareinterval(-0.125, 0.25)) === bareinterval(0x1d5818dcfba487p-53, 0x1306fe0a31b716p-52) + + @test exp2(bareinterval(-0.125, 0.0)) === bareinterval(0x1d5818dcfba487p-53, 1.0) + + @test exp2(bareinterval(0.0, 0.25)) === bareinterval(1.0, 0x1306fe0a31b716p-52) + + @test exp2(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x100000000000ddp-52, 0x100000000000f4p-52) + +end + +@testset "mpfi_expm1" begin + + @test expm1(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, -0x1ff887a518f6d5p-53) + + @test expm1(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 0.0) + + @test expm1(bareinterval(-Inf, 1.0)) === bareinterval(-1.0, 0x1b7e151628aed3p-52) + + @test expm1(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, +Inf) + + @test expm1(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test expm1(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x1b7e151628aed3p-52) + + @test expm1(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test expm1(bareinterval(-36.0, -36.0)) === bareinterval(-0x1ffffffffffffep-53, -0x1ffffffffffffdp-53) + + @test expm1(bareinterval(-0.125, 0.25)) === bareinterval(-0x1e14aed893eef4p-56, 0x122d78f0fa061ap-54) + + @test expm1(bareinterval(-0.125, 0.0)) === bareinterval(-0x1e14aed893eef4p-56, 0.0) + + @test expm1(bareinterval(0.0, 0.25)) === bareinterval(0.0, 0x122d78f0fa061ap-54) + + @test expm1(bareinterval(0xap-47, 0xbp-47)) === bareinterval(0x140000000000c8p-96, 0x160000000000f3p-96) + +end + +@testset "mpfi_hypot" begin + + @test hypot(bareinterval(-Inf, -7.0), bareinterval(-1.0, 8.0)) === bareinterval(7.0, +Inf) + + @test hypot(bareinterval(-Inf, 0.0), bareinterval(8.0, +Inf)) === bareinterval(8.0, +Inf) + + @test hypot(bareinterval(-Inf, 8.0), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(entireinterval(BareInterval{Float64}), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(7.0, +Inf) + + @test hypot(bareinterval(0.0, 3.0), bareinterval(-4.0, 0.0)) === bareinterval(0.0, 5.0) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 8.0)) === bareinterval(0.0, 8.0) + + @test hypot(bareinterval(0.0, +Inf), bareinterval(0.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(8.0, +Inf)) === bareinterval(8.0, +Inf) + + @test hypot(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(0.0, 5.0), bareinterval(0.0, 12.0)) === bareinterval(0.0, 13.0) + + @test hypot(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test hypot(bareinterval(0.0, +Inf), bareinterval(-7.0, 8.0)) === bareinterval(0.0, +Inf) + + @test hypot(bareinterval(-12.0, -5.0), bareinterval(-35.0, -12.0)) === bareinterval(13.0, 37.0) + + @test hypot(bareinterval(6.0, 7.0), bareinterval(1.0, 24.0)) === bareinterval(0x1854bfb363dc39p-50, 25.0) + + @test hypot(bareinterval(-4.0, +7.0), bareinterval(-25.0, 3.0)) === bareinterval(0.0, 0x19f625847a5899p-48) + + @test hypot(bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48), bareinterval(0x1854bfb363dc39p-50, 0x19f625847a5899p-48)) === bareinterval(0x113463fa37014dp-49, 0x125b89092b8fc0p-47) + +end + +@testset "mpfi_intersect" begin + + @test intersect_interval(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === emptyinterval(BareInterval{Float64}) + + @test intersect_interval(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test intersect_interval(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test intersect_interval(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)) === bareinterval(0x12p0, 0x34p0) + +end + +@testset "mpfi_inv" begin + + @test inv(bareinterval(-Inf, -.25)) === bareinterval(-4.0, 0.0) + + @test inv(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test inv(bareinterval(-Inf, +4.0)) === entireinterval(BareInterval{Float64}) + + @test inv(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, 0.0)) === emptyinterval(BareInterval{Float64}) + + @test inv(bareinterval(0.0, +2.0)) === bareinterval(+.5, +Inf) + + @test inv(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test inv(bareinterval(-8.0, -2.0)) === bareinterval(-.5, -0.125) + + @test inv(bareinterval(0x1p-4, 0x1440c131282cd9p-53)) === bareinterval(0x1947bfce1bc417p-52, 0x10p0) + + @test inv(bareinterval(0x19f1a539c91fddp-55, +64.0)) === bareinterval(0.015625, 0x13bc205a76b3fdp-50) + + @test inv(bareinterval(-0xae83b95effd69p-52, -0x63e3cb4ed72a3p-53)) === bareinterval(-0x1480a9b5772a23p-50, -0x177887d65484c9p-52) + +end + +@testset "mpfi_is_neg" begin + + @test precedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false + + @test precedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false + + @test precedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false + +end + +@testset "mpfi_is_nonneg" begin + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end + +@testset "mpfi_is_nonpos" begin + + @test isweakless(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false + + @test isweakless(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true + + @test isweakless(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(8.0, 0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false + + @test isweakless(bareinterval(0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false + +end + +@testset "mpfi_is_pos" begin + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false + + @test precedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false + + @test precedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test precedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end + +@testset "mpfi_is_strictly_neg" begin + + @test strictprecedes(bareinterval(-Inf, -8.0), bareinterval(0.0, 0.0)) === true + + @test strictprecedes(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-Inf, 5.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-8.0, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 5.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(5.0, +Inf), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-34.0, -17.0), bareinterval(0.0, 0.0)) === true + + @test strictprecedes(bareinterval(-8.0, -1.0), bareinterval(0.0, 0.0)) === true + + @test strictprecedes(bareinterval(-34.0, 17.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(+8.0, +0x7fffffffffffbp+51), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(+0x1fffffffffffffp-53, 2.0), bareinterval(0.0, 0.0)) === false + +end + +@testset "mpfi_is_strictly_pos" begin + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, -8.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-Inf, 5.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, 5.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0.0, +Inf)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(5.0, +Inf)) === true + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, -17.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-8.0, -1.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-34.0, 17.0)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(-0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === false + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === true + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+8.0, +0x7fffffffffffbp+51)) === true + + @test strictprecedes(bareinterval(0.0, 0.0), bareinterval(+0x1fffffffffffffp-53, 2.0)) === true + +end + +@testset "mpfi_log" begin + + @test log(bareinterval(0.0, +1.0)) === bareinterval(-Inf, 0.0) + + @test log(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test log(bareinterval(+1.0, +1.0)) === bareinterval(0.0, 0.0) + + @test log(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)) === bareinterval(0xc6dc8a2928579p-47, 0x1a9500bc7ffcc5p-48) + + @test log(bareinterval(0xb616ab8b683b5p-52, +1.0)) === bareinterval(-0x2b9b8b1fb2fb9p-51, 0.0) + + @test log(bareinterval(+1.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x5380455576989p-46) + + @test log(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0xbdee7228cfedfp-47, 0x1b3913fc99f555p-48) + +end + +@testset "mpfi_log1p" begin + + @test log1p(bareinterval(-1.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test log1p(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test log1p(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x162e42fefa39f0p-53) + + @test log1p(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test log1p(bareinterval(-0xb616ab8b683b5p-52, 0.0)) === bareinterval(-0x13e080325bab7bp-52, 0.0) + + @test log1p(bareinterval(0.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x14e0115561569cp-48) + + @test log1p(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x17bdce451a337fp-48, 0x1b3913fc99f6fcp-48) + +end + +@testset "mpfi_log2" begin + + @test log2(bareinterval(0.0, +1.0)) === bareinterval(-Inf, 0.0) + + @test log2(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test log2(bareinterval(1.0, 1.0)) === bareinterval(0.0, 0.0) + + @test log2(bareinterval(0xb616ab8b683b5p-52, 1.0)) === bareinterval(-0x1f74cb5d105b3ap-54, 0.0) + + @test log2(bareinterval(1.0, 0x8ac74d932fae3p-21)) === bareinterval(0.0, 0x1e1ddc27c2c70fp-48) + + @test log2(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x112035c9390c07p-47, 0x13a3208f61f10cp-47) + +end + +@testset "mpfi_log10" begin + + @test log10(bareinterval(0.0, 1.0)) === bareinterval(-Inf, 0.0) + + @test log10(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test log10(bareinterval(1.0, 1.0)) === bareinterval(0.0, 0.0) + + @test log10(bareinterval(0x3a2a08c23afe3p-14, 0x1463ceb440d6bdp-14)) === bareinterval(0x159753104a9401p-49, 0x1716c01a04b570p-49) + + @test log10(bareinterval(0xb616ab8b683b5p-52, 1.0)) === bareinterval(-0x12f043ec00f8d6p-55, 0.0) + + @test log10(bareinterval(100.0, 0x8ac74d932fae3p-21)) === bareinterval(2.0, 0x1221cc590b9946p-49) + + @test log10(bareinterval(0x4c322657ec89bp-16, 0x4d68ba5f26bf1p-11)) === bareinterval(0x149f1d70168f49p-49, 0x17a543a94fb65ep-49) + +end + +@testset "mpfi_mag" begin + + @test mag(bareinterval(-Inf, -8.0)) === +Inf + + @test mag(bareinterval(-Inf, 0.0)) === +Inf + + @test mag(bareinterval(-Inf, 5.0)) === +Inf + + @test mag(entireinterval(BareInterval{Float64})) === +Inf + + @test mag(bareinterval(-Inf, 0.0)) === +Inf + + @test mag(bareinterval(-8.0, 0.0)) === +8.0 + + @test mag(bareinterval(0.0, 0.0)) === +0.0 + + @test mag(bareinterval(0.0, 5.0)) === +5.0 + + @test mag(bareinterval(0.0, +Inf)) === +Inf + + @test mag(bareinterval(-34.0, -17.0)) === 34.0 + +end + +@testset "mpfi_mid" begin + + @test mid(bareinterval(-8.0, 0.0)) === -4.0 + + @test mid(bareinterval(0.0, 0.0)) === +0.0 + + @test mid(bareinterval(0.0, 5.0)) === +2.5 + + @test mid(bareinterval(-34.0, -17.0)) === -0x33p-1 + + @test mid(bareinterval(-34.0, 17.0)) === -8.5 + + @test mid(bareinterval(0.0, +0x123456789abcdp-2)) === +0x123456789abcdp-3 + + @test mid(bareinterval(0x1921fb54442d18p-51, 0x1921fb54442d19p-51)) === 0x1921fb54442d18p-51 + + @test mid(bareinterval(-0x1921fb54442d19p-51, -0x1921fb54442d18p-51)) === -0x1921fb54442d18p-51 + + @test mid(bareinterval(-4.0, -0x7fffffffffffdp-51)) === -0x27fffffffffffbp-52 + + @test mid(bareinterval(-8.0, -0x7fffffffffffbp-51)) === -0x47fffffffffffbp-52 + + @test mid(bareinterval(-0x1fffffffffffffp-53, 2.0)) === 0.5 + +end + +@testset "mpfi_mig" begin + + @test mig(bareinterval(-Inf, -8.0)) === 8.0 + + @test mig(bareinterval(-Inf, 0.0)) === +0.0 + + @test mig(bareinterval(-Inf, 5.0)) === +0.0 + + @test mig(entireinterval(BareInterval{Float64})) === +0.0 + + @test mig(bareinterval(-Inf, 0.0)) === +0.0 + + @test mig(bareinterval(-8.0, 0.0)) === +0.0 + + @test mig(bareinterval(0.0, 0.0)) === +0.0 + + @test mig(bareinterval(0.0, 5.0)) === +0.0 + + @test mig(bareinterval(0.0, +Inf)) === +0.0 + + @test mig(bareinterval(-34.0, -17.0)) === 17.0 + +end + +@testset "mpfi_mul" begin + + @test *(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test *(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +64.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-56.0, 0.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-56.0, +64.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(-3.0, +7.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-0x0dp0, -0x09p0), bareinterval(-0x04p0, -0x02p0)) === bareinterval(0x12p0, 0x34p0) + + @test *(bareinterval(-0x0dp0, -0xd.f0e7927d247cp-4), bareinterval(-0x04p0, -0xa.41084aff48f8p-8)) === bareinterval(0x8.ef3aa21dba748p-8, 0x34p0) + + @test *(bareinterval(-0xe.26c9e9eb67b48p-4, -0x8.237d2eb8b1178p-4), bareinterval(-0x5.8c899a0706d5p-4, -0x3.344e57a37b5e8p-4)) === bareinterval(0x1.a142a930de328p-4, 0x4.e86c3434cd924p-4) + + @test *(bareinterval(-0x37p0, -0x07p0), bareinterval(-0x01p0, 0x22p0)) === bareinterval(-0x74ep0, 0x37p0) + + @test *(bareinterval(-0xe.063f267ed51ap-4, -0x0.33p0), bareinterval(-0x01p0, 0x1.777ab178b4a1ep+0)) === bareinterval(-0x1.491df346a9f15p+0, 0xe.063f267ed51ap-4) + + @test *(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x01p0)) === bareinterval(-0x1.cb540b71699a8p+4, 0x2.804cce4a3f42ep+4) + + @test *(bareinterval(-0x1.cb540b71699a8p+4, -0x0.33p0), bareinterval(-0x1.64dcaaa101f18p+0, 0x1.eb67a1a6ef725p+4)) === bareinterval(-0x3.71b422ce817f4p+8, 0x2.804cce4a3f42ep+4) + + @test *(bareinterval(-0x123456789ap0, -0x01p0), bareinterval(0x01p0, 0x10p0)) === bareinterval(-0x123456789a0p0, -0x01p0) + + @test *(bareinterval(-0xb.6c67d3a37d54p-4, -0x0.8p0), bareinterval(0x02p0, 0x2.0bee4e8bb3dfp+0)) === bareinterval(-0x1.7611a672948a5p+0, -0x01p0) + + @test *(bareinterval(-0x04p0, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x04p0)) === bareinterval(-0x10p0, -0x7.99b990532d434p-8) + + @test *(bareinterval(-0xb.6c67d3a37d54p-4, -0xa.497d533c3b2ep-8), bareinterval(0xb.d248df3373e68p-4, 0x2.0bee4e8bb3dfp+0)) === bareinterval(-0x1.7611a672948a5p+0, -0x7.99b990532d434p-8) + + @test *(bareinterval(-0x01p0, 0x11p0), bareinterval(-0x07p0, -0x04p0)) === bareinterval(-0x77p0, 0x07p0) + + @test *(bareinterval(-0x01p0, 0xe.ca7ddfdb8572p-4), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.101b41d3d48b8p+0, 0x2.3b46226145234p+0) + + @test *(bareinterval(-0x1.1d069e75e8741p+8, 0x01p0), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.3b46226145234p+0, 0x2.7c0bd9877f404p+8) + + @test *(bareinterval(-0xe.ca7ddfdb8572p-4, 0x1.1d069e75e8741p+8), bareinterval(-0x2.3b46226145234p+0, -0x0.1p0)) === bareinterval(-0x2.7c0bd9877f404p+8, 0x2.101b41d3d48b8p+0) + + @test *(bareinterval(-0x01p0, 0x10p0), bareinterval(-0x02p0, 0x03p0)) === bareinterval(-0x20p0, 0x30p0) + + @test *(bareinterval(-0x01p0, 0x2.db091cea593fap-4), bareinterval(-0x2.6bff2625fb71cp-4, 0x1p-8)) === bareinterval(-0x6.ea77a3ee43de8p-8, 0x2.6bff2625fb71cp-4) + + @test *(bareinterval(-0x01p0, 0x6.e211fefc216ap-4), bareinterval(-0x1p-4, 0x1.8e3fe93a4ea52p+0)) === bareinterval(-0x1.8e3fe93a4ea52p+0, 0xa.b52fe22d72788p-4) + + @test *(bareinterval(-0x1.15e079e49a0ddp+0, 0x1p-8), bareinterval(-0x2.77fc84629a602p+0, 0x8.3885932f13fp-4)) === bareinterval(-0x8.ec5de73125be8p-4, 0x2.adfe651d3b19ap+0) + + @test *(bareinterval(-0x07p0, 0x07p0), bareinterval(0x13p0, 0x24p0)) === bareinterval(-0xfcp0, 0xfcp0) + + @test *(bareinterval(-0xa.8071f870126cp-4, 0x10p0), bareinterval(0x02p0, 0x2.3381083e7d3b4p+0)) === bareinterval(-0x1.71dc5b5607781p+0, 0x2.3381083e7d3b4p+4) + + @test *(bareinterval(-0x01p0, 0x1.90aa487ecf153p+0), bareinterval(0x01p-53, 0x1.442e2695ac81ap+0)) === bareinterval(-0x1.442e2695ac81ap+0, 0x1.fb5fbebd0cbc6p+0) + + @test *(bareinterval(-0x1.c40db77f2f6fcp+0, 0x1.8eb70bbd94478p+0), bareinterval(0x02p0, 0x3.45118635235c6p+0)) === bareinterval(-0x5.c61fcad908df4p+0, 0x5.17b7c49130824p+0) + + @test *(bareinterval(0xcp0, 0x2dp0), bareinterval(-0x679p0, -0xe5p0)) === bareinterval(-0x12345p0, -0xabcp0) + + @test *(bareinterval(0xcp0, 0x1.1833fdcab4c4ap+10), bareinterval(-0x2.4c0afc50522ccp+40, -0xe5p0)) === bareinterval(-0x2.83a3712099234p+50, -0xabcp0) + + @test *(bareinterval(0xb.38f1fb0ef4308p+0, 0x2dp0), bareinterval(-0x679p0, -0xa.4771d7d0c604p+0)) === bareinterval(-0x12345p0, -0x7.35b3c8400ade4p+4) + + @test *(bareinterval(0xf.08367984ca1cp-4, 0xa.bcf6c6cbe341p+0), bareinterval(-0x5.cbc445e9952c4p+0, -0x2.8ad05a7b988fep-8)) === bareinterval(-0x3.e3ce52d4a139cp+4, -0x2.637164cf2f346p-8) + + @test *(bareinterval(0x01p0, 0xcp0), bareinterval(-0xe5p0, 0x01p0)) === bareinterval(-0xabcp0, 0xcp0) + + @test *(bareinterval(0x123p-52, 0x1.ec24910ac6aecp+0), bareinterval(-0xa.a97267f56a9b8p-4, 0x1p+32)) === bareinterval(-0x1.47f2dbe4ef916p+0, 0x1.ec24910ac6aecp+32) + + @test *(bareinterval(0x03p0, 0x7.2bea531ef4098p+0), bareinterval(-0x01p0, 0xa.a97267f56a9b8p-4)) === bareinterval(-0x7.2bea531ef4098p+0, 0x4.c765967f9468p+0) + + @test *(bareinterval(0x0.3p0, 0xa.a97267f56a9b8p-4), bareinterval(-0x1.ec24910ac6aecp+0, 0x7.2bea531ef4098p+0)) === bareinterval(-0x1.47f2dbe4ef916p+0, 0x4.c765967f9468p+0) + + @test *(bareinterval(0x3p0, 0x7p0), bareinterval(0x5p0, 0xbp0)) === bareinterval(0xfp0, 0x4dp0) + + @test *(bareinterval(0x2.48380232f6c16p+0, 0x7p0), bareinterval(0x3.71cb6c53e68eep+0, 0xbp0)) === bareinterval(0x7.dc58fb323ad78p+0, 0x4dp0) + + @test *(bareinterval(0x3p0, 0x3.71cb6c53e68eep+0), bareinterval(0x5p-25, 0x2.48380232f6c16p+0)) === bareinterval(0xfp-25, 0x7.dc58fb323ad7cp+0) + + @test *(bareinterval(0x3.10e8a605572p-4, 0x2.48380232f6c16p+0), bareinterval(0xc.3d8e305214ecp-4, 0x2.9e7db05203c88p+0)) === bareinterval(0x2.587a32d02bc04p-4, 0x5.fa216b7c20c6cp+0) + +end + +@testset "mpfi_mul_d" begin + + @test *(bareinterval(-Inf, -7.0), bareinterval(-0x17p0, -0x17p0)) === bareinterval(+0xa1p0, +Inf) + + @test *(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -0xa168b4ebefd020p-107) + + @test *(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, 0.0) + + @test *(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-0xb1a2bc2ec5000000p0, +Inf) + + @test *(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, 0xb1a2bc2ec5000000p0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === bareinterval(0.0, 0.0) + + @test *(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test *(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 7.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(-0x790e87b0f3dc18p-107, 0.0) + + @test *(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, 9.0), bareinterval(0x114b37f4b51f71p-103, 0x114b37f4b51f71p-103)) === bareinterval(0.0, 0x9ba4f79a5e1b00p-103) + + @test *(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(-Inf, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test *(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(0.0, +Inf) + + @test *(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)) === bareinterval(0xfffffffffffffp-123, 0x22a2a28p0) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(-1.5, -1.5)) === bareinterval(-0x22a2a28p+401, 0xfffffffffffffp0) + + @test *(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)) === bareinterval(-0x1222222222221p+654, -0x22000000000022p0) + + @test *(bareinterval(-0x1717170p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x22a2a28p0, -0xfffffffffffffp-123) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x1717170p+401), bareinterval(1.5, 1.5)) === bareinterval(-0xfffffffffffffp0, 0x22a2a28p+401) + + @test *(bareinterval(0x10000000000010p0, 0x888888888888p+654), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000022p0, 0x1222222222221p+654) + + @test *(bareinterval(-0x1717170p+36, -0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(0x18000000000001p0, 0x22a2a28p+36) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(-0x18000000000002p0, 0xfffffffffffffp0) + + @test *(bareinterval(0x10000000000010p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)) === bareinterval(-0x12222222222223p+1, -0x22000000000022p0) + + @test *(bareinterval(-0x10000000000001p0, -0xaaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x18000000000002p0, -0xfffffffffffffp-123) + + @test *(bareinterval(-0xaaaaaaaaaaaabp0, 0x1717170p+401), bareinterval(1.5, 1.5)) === bareinterval(-0x10000000000001p0, 0x22a2a28p+401) + + @test *(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000002p0, 0x1222222222221p+654) + + @test *(bareinterval(-0x11717171717171p0, -0xaaaaaaaaaaaaap-123), bareinterval(-1.5, -1.5)) === bareinterval(0xfffffffffffffp-123, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(-0x10000000000001p0, 0x1717170p+401), bareinterval(-1.5, -1.5)) === bareinterval(-0x22a2a28p+401, 0x18000000000002p0) + + @test *(bareinterval(0x10000000000001p0, 0x888888888888p+654), bareinterval(-2.125, -2.125)) === bareinterval(-0x1222222222221p+654, -0x22000000000002p0) + + @test *(bareinterval(-0x1717170p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x22a2a28p0, -0x27fffffffffffep-123) + + @test *(bareinterval(-0xaaaaaaaaaaaaap0, 0x11717171717171p0), bareinterval(1.5, 1.5)) === bareinterval(-0xfffffffffffffp0, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(0x10000000000010p0, 0x18888888888889p0), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000022p0, 0x34222222222224p0) + + @test *(bareinterval(-0x11717171717171p0, -0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(0x18000000000001p0, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(-0x10000000000001p0, 0x10000000000001p0), bareinterval(-1.5, -1.5)) === bareinterval(-0x18000000000002p0, 0x18000000000002p0) + + @test *(bareinterval(0x10000000000001p0, 0x11111111111111p0), bareinterval(-2.125, -2.125)) === bareinterval(-0x12222222222223p+1, -0x22000000000002p0) + + @test *(bareinterval(-0x10000000000001p0, -0x1aaaaaaaaaaaaap-123), bareinterval(1.5, 1.5)) === bareinterval(-0x18000000000002p0, -0x27fffffffffffep-123) + + @test *(bareinterval(-0xaaaaaaaaaaaabp0, 0x11717171717171p0), bareinterval(1.5, 1.5)) === bareinterval(-0x10000000000001p0, 0x1a2a2a2a2a2a2ap0) + + @test *(bareinterval(0x10000000000001p0, 0x18888888888889p0), bareinterval(2.125, 2.125)) === bareinterval(0x22000000000002p0, 0x34222222222224p0) + +end + +@testset "mpfi_neg" begin + + @test -(bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) + + @test -(bareinterval(-Inf, 0.0)) === bareinterval(0.0, +Inf) + + @test -(bareinterval(-Inf, +8.0)) === bareinterval(-8.0, +Inf) + + @test -(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0.0, +8.0)) === bareinterval(-8.0, 0.0) + + @test -(bareinterval(0.0, +Inf)) === bareinterval(-Inf, 0.0) + + @test -(bareinterval(0x123456789p-16, 0x123456799p-16)) === bareinterval(-0x123456799p-16, -0x123456789p-16) + +end + +@testset "mpfi_put_d" begin + + @test hull(bareinterval(0.0, 0.0), bareinterval(-8.0, -8.0)) === bareinterval(-8.0, 0.0) + + @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test hull(bareinterval(+5.0, +5.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, +5.0) + +end + +@testset "mpfi_sec" begin + + @test sec(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-Inf, 8.0)) === entireinterval(BareInterval{Float64}) + + @test sec(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-8.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test sec(bareinterval(0.0, +1.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(0.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(0.0, 8.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-6.0, -5.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51) + + @test sec(bareinterval(-6.0, -6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52) + + @test sec(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-5.0, -5.0)) === bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51) + + @test sec(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-4.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -1.0) + + @test sec(bareinterval(-4.0, -3.0)) === bareinterval(-0x187a6961d2485fp-52, -1.0) + + @test sec(bareinterval(-4.0, -4.0)) === bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52) + + @test sec(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-3.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52) + + @test sec(bareinterval(-3.0, -3.0)) === bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52) + + @test sec(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-2.0, -2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51) + + @test sec(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(-1.0, 1.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(-1.0, 0.0)) === bareinterval(1.0, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(-1.0, -1.0)) === bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(1.0, 1.0)) === bareinterval(0x1d9cf0f125cc29p-52, 0x1d9cf0f125cc2ap-52) + + @test sec(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(2.0, 4.0)) === bareinterval(-0x133956fecf9e49p-51, -1.0) + + @test sec(bareinterval(2.0, 3.0)) === bareinterval(-0x133956fecf9e49p-51, -0x102967b457b245p-52) + + @test sec(bareinterval(2.0, 2.0)) === bareinterval(-0x133956fecf9e49p-51, -0x133956fecf9e48p-51) + + @test sec(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(3.0, 4.0)) === bareinterval(-0x187a6961d2485fp-52, -1.0) + + @test sec(bareinterval(3.0, 3.0)) === bareinterval(-0x102967b457b246p-52, -0x102967b457b245p-52) + + @test sec(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test sec(bareinterval(4.0, 4.0)) === bareinterval(-0x187a6961d2485fp-52, -0x187a6961d2485ep-52) + + @test sec(bareinterval(5.0, 7.0)) === bareinterval(1.0, 0x1c33db0464189bp-51) + + @test sec(bareinterval(5.0, 6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x1c33db0464189bp-51) + + @test sec(bareinterval(5.0, 5.0)) === bareinterval(0x1c33db0464189ap-51, 0x1c33db0464189bp-51) + + @test sec(bareinterval(6.0, 7.0)) === bareinterval(1.0, 0x153910a80e7db5p-52) + + @test sec(bareinterval(6.0, 6.0)) === bareinterval(0x10a9e8f3e19df1p-52, 0x10a9e8f3e19df2p-52) + + @test sec(bareinterval(7.0, 7.0)) === bareinterval(0x153910a80e7db4p-52, 0x153910a80e7db5p-52) + +end + +@testset "mpfi_sech" begin + + @test sech(bareinterval(-Inf, -7.0)) === bareinterval(0.0, 0x1de169fb49b339p-62) + + @test sech(bareinterval(-Inf, 0.0)) === bareinterval(0.0, 1.0) + + @test sech(bareinterval(-Inf, +8.0)) === bareinterval(0.0, 1.0) + + @test sech(entireinterval(BareInterval{Float64})) === bareinterval(0.0, 1.0) + + @test sech(bareinterval(-1.0, 0.0)) === bareinterval(0x14bcdc50ed6be7p-53, 1.0) + + @test sech(bareinterval(0.0, 0.0)) === bareinterval(1.0, 1.0) + + @test sech(bareinterval(0.0, +1.0)) === bareinterval(0x14bcdc50ed6be7p-53, 1.0) + + @test sech(bareinterval(0.0, +8.0)) === bareinterval(0x15fc20da8e18dbp-63, 1.0) + + @test sech(bareinterval(0.0, +Inf)) === bareinterval(0.0, 1.0) + + @test sech(bareinterval(-0.125, 0.0)) === bareinterval(0x1fc069fe3f72bep-53, 1.0) + + @test sech(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0x1c60d1ff040dcfp-53, 1.0) + + @test sech(bareinterval(-4.5, -0.625)) === bareinterval(0x16bf984a9a2355p-58, 0x1aa0b464a5e24ap-53) + + @test sech(bareinterval(1.0, 3.0)) === bareinterval(0x196d8e17d88eb1p-56, 0x14bcdc50ed6be8p-53) + + @test sech(bareinterval(17.0, 0xb145bb71d3dbp-38)) === bareinterval(0x10000000000173p-1074, 0x1639e3175a6893p-76) + +end + +@testset "mpfi_sin" begin + + @test sin(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-Inf, +8.0)) === bareinterval(-1.0, 1.0) + + @test sin(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1aed548f090cefp-53, 0.0) + + @test sin(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sin(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(0.0, +8.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(0.0, +Inf)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(0.125, 17.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)) === bareinterval(0x1fffffffffffffp-53, 1.0) + + @test sin(bareinterval(-2.0, -0.5)) === bareinterval(-1.0, -0x1eaee8744b05efp-54) + + @test sin(bareinterval(-4.5, 0.625)) === bareinterval(-1.0, 0x1f47ed3dc74081p-53) + + @test sin(bareinterval(-1.0, -0.25)) === bareinterval(-0x1aed548f090cefp-53, -0x1faaeed4f31576p-55) + + @test sin(bareinterval(-0.5, 0.5)) === bareinterval(-0x1eaee8744b05f0p-54, 0x1eaee8744b05f0p-54) + + @test sin(bareinterval(0x71p+76, 0x71p+76)) === bareinterval(0x1bde6c11cbfc46p-55, 0x1bde6c11cbfc47p-55) + + @test sin(bareinterval(-7.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-7.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) + + @test sin(bareinterval(-7.0, -3.0)) === bareinterval(-0x150608c26d0a09p-53, 1.0) + + @test sin(bareinterval(-7.0, -4.0)) === bareinterval(-0x150608c26d0a09p-53, 1.0) + + @test sin(bareinterval(-7.0, -5.0)) === bareinterval(-0x150608c26d0a09p-53, 0x1eaf81f5e09934p-53) + + @test sin(bareinterval(-7.0, -6.0)) === bareinterval(-0x150608c26d0a09p-53, 0x11e1f18ab0a2c1p-54) + + @test sin(bareinterval(-7.0, -7.0)) === bareinterval(-0x150608c26d0a09p-53, -0x150608c26d0a08p-53) + + @test sin(bareinterval(-6.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-6.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) + + @test sin(bareinterval(-6.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 1.0) + + @test sin(bareinterval(-6.0, -4.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 1.0) + + @test sin(bareinterval(-6.0, -5.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 0x1eaf81f5e09934p-53) + + @test sin(bareinterval(-6.0, -6.0)) === bareinterval(0x11e1f18ab0a2c0p-54, 0x11e1f18ab0a2c1p-54) + + @test sin(bareinterval(-5.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, 0.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, -1.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-5.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 1.0) + + @test sin(bareinterval(-5.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 1.0) + + @test sin(bareinterval(-5.0, -4.0)) === bareinterval(0x1837b9dddc1eaep-53, 1.0) + + @test sin(bareinterval(-5.0, -5.0)) === bareinterval(0x1eaf81f5e09933p-53, 0x1eaf81f5e09934p-53) + + @test sin(bareinterval(-4.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-4.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-4.0, 0.0)) === bareinterval(-1.0, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -1.0)) === bareinterval(-1.0, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-4.0, -4.0)) === bareinterval(0x1837b9dddc1eaep-53, 0x1837b9dddc1eafp-53) + + @test sin(bareinterval(-3.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-3.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-3.0, 0.0)) === bareinterval(-1.0, 0.0) + + @test sin(bareinterval(-3.0, -1.0)) === bareinterval(-1.0, -0x1210386db6d55bp-55) + + @test sin(bareinterval(-3.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, -0x1210386db6d55bp-55) + + @test sin(bareinterval(-3.0, -3.0)) === bareinterval(-0x1210386db6d55cp-55, -0x1210386db6d55bp-55) + + @test sin(bareinterval(-2.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 4.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 3.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 2.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-2.0, 1.0)) === bareinterval(-1.0, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-2.0, 0.0)) === bareinterval(-1.0, 0.0) + + @test sin(bareinterval(-2.0, -1.0)) === bareinterval(-1.0, -0x1aed548f090ceep-53) + + @test sin(bareinterval(-2.0, -2.0)) === bareinterval(-0x1d18f6ead1b446p-53, -0x1d18f6ead1b445p-53) + + @test sin(bareinterval(-1.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(-1.0, 4.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) + + @test sin(bareinterval(-1.0, 3.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) + + @test sin(bareinterval(-1.0, 2.0)) === bareinterval(-0x1aed548f090cefp-53, 1.0) + + @test sin(bareinterval(-1.0, 1.0)) === bareinterval(-0x1aed548f090cefp-53, 0x1aed548f090cefp-53) + + @test sin(bareinterval(-1.0, 0.0)) === bareinterval(-0x1aed548f090cefp-53, 0.0) + + @test sin(bareinterval(-1.0, -1.0)) === bareinterval(-0x1aed548f090cefp-53, -0x1aed548f090ceep-53) + + @test sin(bareinterval(1.0, 7.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(1.0, 6.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(1.0, 5.0)) === bareinterval(-1.0, 1.0) + + @test sin(bareinterval(1.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 1.0) + + @test sin(bareinterval(1.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 1.0) + + @test sin(bareinterval(1.0, 2.0)) === bareinterval(0x1aed548f090ceep-53, 1.0) + + @test sin(bareinterval(1.0, 1.0)) === bareinterval(0x1aed548f090ceep-53, 0x1aed548f090cefp-53) + + @test sin(bareinterval(2.0, 7.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 6.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 5.0)) === bareinterval(-1.0, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(2.0, 2.0)) === bareinterval(0x1d18f6ead1b445p-53, 0x1d18f6ead1b446p-53) + + @test sin(bareinterval(3.0, 7.0)) === bareinterval(-1.0, 0x150608c26d0a09p-53) + + @test sin(bareinterval(3.0, 6.0)) === bareinterval(-1.0, 0x1210386db6d55cp-55) + + @test sin(bareinterval(3.0, 5.0)) === bareinterval(-1.0, 0x1210386db6d55cp-55) + + @test sin(bareinterval(3.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, 0x1210386db6d55cp-55) + + @test sin(bareinterval(3.0, 3.0)) === bareinterval(0x1210386db6d55bp-55, 0x1210386db6d55cp-55) + + @test sin(bareinterval(4.0, 7.0)) === bareinterval(-1.0, 0x150608c26d0a09p-53) + + @test sin(bareinterval(4.0, 6.0)) === bareinterval(-1.0, -0x11e1f18ab0a2c0p-54) + + @test sin(bareinterval(4.0, 5.0)) === bareinterval(-1.0, -0x1837b9dddc1eaep-53) + + @test sin(bareinterval(4.0, 4.0)) === bareinterval(-0x1837b9dddc1eafp-53, -0x1837b9dddc1eaep-53) + + @test sin(bareinterval(5.0, 7.0)) === bareinterval(-0x1eaf81f5e09934p-53, 0x150608c26d0a09p-53) + + @test sin(bareinterval(5.0, 6.0)) === bareinterval(-0x1eaf81f5e09934p-53, -0x11e1f18ab0a2c0p-54) + + @test sin(bareinterval(5.0, 5.0)) === bareinterval(-0x1eaf81f5e09934p-53, -0x1eaf81f5e09933p-53) + + @test sin(bareinterval(6.0, 7.0)) === bareinterval(-0x11e1f18ab0a2c1p-54, 0x150608c26d0a09p-53) + + @test sin(bareinterval(6.0, 6.0)) === bareinterval(-0x11e1f18ab0a2c1p-54, -0x11e1f18ab0a2c0p-54) + + @test sin(bareinterval(7.0, 7.0)) === bareinterval(0x150608c26d0a08p-53, 0x150608c26d0a09p-53) + +end + +@testset "mpfi_sinh" begin + + @test sinh(bareinterval(-Inf, -7.0)) === bareinterval(-Inf, -0x1122876ba380c9p-43) + + @test sinh(bareinterval(-Inf, 0.0)) === bareinterval(-Inf, 0.0) + + @test sinh(bareinterval(-Inf, +8.0)) === bareinterval(-Inf, 0x1749ea514eca66p-42) + + @test sinh(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test sinh(bareinterval(-1.0, 0.0)) === bareinterval(-0x12cd9fc44eb983p-52, 0.0) + + @test sinh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sinh(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x12cd9fc44eb983p-52) + + @test sinh(bareinterval(0.0, +8.0)) === bareinterval(0.0, 0x1749ea514eca66p-42) + + @test sinh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test sinh(bareinterval(-0.125, 0.0)) === bareinterval(-0x100aaccd00d2f1p-55, 0.0) + + @test sinh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0.0, 0x10acd00fe63b98p-53) + + @test sinh(bareinterval(-4.5, -0.625)) === bareinterval(-0x168062ab5fa9fdp-47, -0x1553e795dc19ccp-53) + + @test sinh(bareinterval(1.0, 3.0)) === bareinterval(0x12cd9fc44eb982p-52, 0x140926e70949aep-49) + +end + +@testset "mpfi_sqr" begin + + @test pown(bareinterval(-Inf, -7.0), 2) === bareinterval(+49.0, +Inf) + + @test pown(bareinterval(-Inf, 0.0), 2) === bareinterval(0.0, +Inf) + + @test pown(bareinterval(-Inf, +8.0), 2) === bareinterval(0.0, +Inf) + + @test pown(entireinterval(BareInterval{Float64}), 2) === bareinterval(0.0, +Inf) + + @test pown(bareinterval(0.0, 0.0), 2) === bareinterval(0.0, 0.0) + + @test pown(bareinterval(0.0, +8.0), 2) === bareinterval(0.0, +64.0) + + @test pown(bareinterval(0.0, +Inf), 2) === bareinterval(0.0, +Inf) + + @test pown(bareinterval(0x8.6374d8p-4, 0x3.f1d929p+8), 2) === bareinterval(0x4.65df11464764p-4, 0xf.8f918d688891p+16) + + @test pown(bareinterval(0x6.61485c33c0b14p+4, 0x123456p0), 2) === bareinterval(0x2.8b45c3cc03ea6p+12, 0x14b66cb0ce4p0) + + @test pown(bareinterval(-0x1.64722ad2480c9p+0, 0x1p0), 2) === bareinterval(0.0, 0x1.f04dba0302d4dp+0) + + @test pown(bareinterval(0x1.6b079248747a2p+0, 0x2.b041176d263f6p+0), 2) === bareinterval(0x2.02ce7912cddf6p+0, 0x7.3a5dee779527p+0) + +end + +@testset "mpfi_sqrt" begin + + @test sqrt(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test sqrt(bareinterval(0.0, +9.0)) === bareinterval(0.0, +3.0) + + @test sqrt(bareinterval(0.0, +Inf)) === bareinterval(0.0, +Inf) + + @test sqrt(bareinterval(0xaaa1p0, 0x14b66cb0ce4p0)) === bareinterval(0xd1p0, 0x123456p0) + + @test sqrt(bareinterval(0xe.49ae7969e41bp-4, 0xaaa1p0)) === bareinterval(0xf.1ea42821b27a8p-4, 0xd1p0) + + @test sqrt(bareinterval(0xa.aa1p-4, 0x1.0c348f804c7a9p+0)) === bareinterval(0xd.1p-4, 0x1.06081714eef1dp+0) + + @test sqrt(bareinterval(0xe.49ae7969e41bp-4, 0x1.0c348f804c7a9p+0)) === bareinterval(0xf.1ea42821b27a8p-4, 0x1.06081714eef1dp+0) + +end + +@testset "mpfi_sub" begin + + @test -(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, -6.0) + + @test -(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, -8.0) + + @test -(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +8.0) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(+7.0, +Inf) + + @test -(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(0.0, +15.0) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(-8.0, 0.0) + + @test -(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(-8.0, +Inf) + + @test -(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(-Inf, -8.0) + + @test -(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-8.0, +15.0) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(-8.0, +Inf) + + @test -(bareinterval(-5.0, 59.0), bareinterval(17.0, 81.0)) === bareinterval(-86.0, 42.0) + + @test -(bareinterval(-0x1p-300, 0x123456p+28), bareinterval(-0x789abcdp0, 0x10000000000000p-93)) === bareinterval(-0x10000000000001p-93, 0x123456789abcdp0) + + @test -(bareinterval(-4.0, 7.0), bareinterval(-3e300, 0x123456789abcdp-17)) === bareinterval(-0x123456791abcdp-17, 0x8f596b3002c1bp+947) + + @test -(bareinterval(-0x1000100010001p+8, 0x1p+60), bareinterval(-3e300, 0x1000100010001p0)) === bareinterval(-0x10101010101011p+4, 0x8f596b3002c1bp+947) + + @test -(bareinterval(-5.0, 1.0), bareinterval(1.0, 0x1p+70)) === bareinterval(-0x10000000000001p+18, 0.0) + + @test -(bareinterval(5.0, 0x1p+70), bareinterval(3.0, 5.0)) === bareinterval(0.0, 0x1p+70) + +end + +@testset "mpfi_sub_d" begin + + @test -(bareinterval(-Inf, -7.0), bareinterval(-0x170ef54646d497p-107, -0x170ef54646d497p-107)) === bareinterval(-Inf, -0x1bffffffffffffp-50) + + @test -(bareinterval(-Inf, -7.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, -7.0) + + @test -(bareinterval(-Inf, -7.0), bareinterval(0x170ef54646d497p-107, 0x170ef54646d497p-107)) === bareinterval(-Inf, -7.0) + + @test -(bareinterval(-Inf, 0.0), bareinterval(-0x170ef54646d497p-106, -0x170ef54646d497p-106)) === bareinterval(-Inf, 0x170ef54646d497p-106) + + @test -(bareinterval(-Inf, 0.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 0.0) + + @test -(bareinterval(-Inf, 0.0), bareinterval(0x170ef54646d497p-106, 0x170ef54646d497p-106)) === bareinterval(-Inf, -8.0e-17) + + @test -(bareinterval(-Inf, 8.0), bareinterval(-0x16345785d8a00000p0, -0x16345785d8a00000p0)) === bareinterval(-Inf, 0x16345785d8a00100p0) + + @test -(bareinterval(-Inf, 8.0), bareinterval(0.0, 0.0)) === bareinterval(-Inf, 8.0) + + @test -(bareinterval(-Inf, 8.0), bareinterval(0x16345785d8a00000p0, 0x16345785d8a00000p0)) === bareinterval(-Inf, -0x16345785d89fff00p0) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(-0x170ef54646d497p-105, -0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(0.0e-17, 0.0e-17)) === entireinterval(BareInterval{Float64}) + + @test -(entireinterval(BareInterval{Float64}), bareinterval(+0x170ef54646d497p-105, +0x170ef54646d497p-105)) === entireinterval(BareInterval{Float64}) + + @test -(bareinterval(0.0, 0.0), bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109)) === bareinterval(+0x170ef54646d497p-109, +0x170ef54646d497p-109) + + @test -(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test -(bareinterval(0.0, 0.0), bareinterval(0x170ef54646d497p-109, 0x170ef54646d497p-109)) === bareinterval(-0x170ef54646d497p-109, -0x170ef54646d497p-109) + + @test -(bareinterval(0.0, 8.0), bareinterval(-0x114b37f4b51f71p-107, -0x114b37f4b51f71p-107)) === bareinterval(0x114b37f4b51f71p-107, 0x10000000000001p-49) + + @test -(bareinterval(0.0, 8.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 8.0) + + @test -(bareinterval(0.0, 8.0), bareinterval(0x114b37f4b51f71p-107, 0x114b37f4b51f71p-107)) === bareinterval(-0x114b37f4b51f71p-107, 8.0) + + @test -(bareinterval(0.0, +Inf), bareinterval(-0x50b45a75f7e81p-104, -0x50b45a75f7e81p-104)) === bareinterval(0x50b45a75f7e81p-104, +Inf) + + @test -(bareinterval(0.0, +Inf), bareinterval(0.0, 0.0)) === bareinterval(0.0, +Inf) + + @test -(bareinterval(0.0, +Inf), bareinterval(0x142d169d7dfa03p-106, 0x142d169d7dfa03p-106)) === bareinterval(-0x142d169d7dfa03p-106, +Inf) + + @test -(bareinterval(-32.0, -17.0), bareinterval(0xfb53d14aa9c2fp-47, 0xfb53d14aa9c2fp-47)) === bareinterval(-0x1fb53d14aa9c2fp-47, -0x18353d14aa9c2fp-47) + + @test -(bareinterval(-0xfb53d14aa9c2fp-47, -17.0), bareinterval(-0xfb53d14aa9c2fp-47, -0xfb53d14aa9c2fp-47)) === bareinterval(0.0, 0x7353d14aa9c2fp-47) + + @test -(bareinterval(-32.0, -0xfb53d14aa9c2fp-48), bareinterval(-0xfb53d14aa9c2fp-48, -0xfb53d14aa9c2fp-48)) === bareinterval(-0x104ac2eb5563d1p-48, 0.0) + + @test -(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0x15b456789abcdfp-48, 0x123456789abd17p-4) + + @test -(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(-3.5, -3.5)) === bareinterval(0x3923456789abcdp-52, 0x123456789abd17p-4) + + @test -(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(-256.5, -256.5)) === bareinterval(0x18p-4, 0x101a3456789abdp-44) + + @test -(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(-4097.5, -4097.5)) === bareinterval(0xfff8p-4, 0x10018p-4) + + @test -(bareinterval(0x123456789abcdfp-48, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(0xeb456789abcdfp-48, 0x123456789abca7p-4) + + @test -(bareinterval(0x123456789abcdfp-56, 0x123456789abcdfp-4), bareinterval(3.5, 3.5)) === bareinterval(-0x36dcba98765434p-52, 0x123456789abca7p-4) + + @test -(bareinterval(-0xffp0, 0x123456789abcdfp-52), bareinterval(256.5, 256.5)) === bareinterval(-0x1ff8p-4, -0xff5cba9876543p-44) + + @test -(bareinterval(-0x1fffffffffffffp-52, -0x1p-550), bareinterval(4097.5, 4097.5)) === bareinterval(-0x10038p-4, -0x10018p-4) + +end + +@testset "mpfi_tan" begin + + @test tan(bareinterval(-Inf, -7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-Inf, +8.0)) === entireinterval(BareInterval{Float64}) + + @test tan(entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 0.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0.0) + + @test tan(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test tan(bareinterval(0.0, +1.0)) === bareinterval(0.0, 0x18eb245cbee3a6p-52) + + @test tan(bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0.125, 17.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(0x1921fb54442d18p-52, 0x1921fb54442d19p-52)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, -0.5)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.5, 0.625)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, -0.25)) === bareinterval(-0x18eb245cbee3a6p-52, -0x105785a43c4c55p-54) + + @test tan(bareinterval(-0.5, 0.5)) === bareinterval(-0x117b4f5bf3474bp-53, 0x117b4f5bf3474bp-53) + + @test tan(bareinterval(0x71p+76, 0x71p+76)) === bareinterval(-0x1c8dc87ddcc134p-55, -0x1c8dc87ddcc133p-55) + + @test tan(bareinterval(-7.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-7.0, -5.0)) === bareinterval(-0x1be2e6e13eea79p-53, 0x1b0b4b739bbb07p-51) + + @test tan(bareinterval(-7.0, -6.0)) === bareinterval(-0x1be2e6e13eea79p-53, 0x129fd86ebb95bfp-54) + + @test tan(bareinterval(-7.0, -7.0)) === bareinterval(-0x1be2e6e13eea79p-53, -0x1be2e6e13eea78p-53) + + @test tan(bareinterval(-6.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-6.0, -5.0)) === bareinterval(0x129fd86ebb95bep-54, 0x1b0b4b739bbb07p-51) + + @test tan(bareinterval(-6.0, -6.0)) === bareinterval(0x129fd86ebb95bep-54, 0x129fd86ebb95bfp-54) + + @test tan(bareinterval(-5.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-5.0, -5.0)) === bareinterval(0x1b0b4b739bbb06p-51, 0x1b0b4b739bbb07p-51) + + @test tan(bareinterval(-4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-4.0, -2.0)) === bareinterval(-0x12866f9be4de14p-52, 0x117af62e0950f9p-51) + + @test tan(bareinterval(-4.0, -3.0)) === bareinterval(-0x12866f9be4de14p-52, 0x123ef71254b870p-55) + + @test tan(bareinterval(-4.0, -4.0)) === bareinterval(-0x12866f9be4de14p-52, -0x12866f9be4de13p-52) + + @test tan(bareinterval(-3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-3.0, -2.0)) === bareinterval(0x123ef71254b86fp-55, 0x117af62e0950f9p-51) + + @test tan(bareinterval(-3.0, -3.0)) === bareinterval(0x123ef71254b86fp-55, 0x123ef71254b870p-55) + + @test tan(bareinterval(-2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, 0.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, -1.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-2.0, -2.0)) === bareinterval(0x117af62e0950f8p-51, 0x117af62e0950f9p-51) + + @test tan(bareinterval(-1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(-1.0, 1.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0x18eb245cbee3a6p-52) + + @test tan(bareinterval(-1.0, 0.0)) === bareinterval(-0x18eb245cbee3a6p-52, 0.0) + + @test tan(bareinterval(-1.0, -1.0)) === bareinterval(-0x18eb245cbee3a6p-52, -0x18eb245cbee3a5p-52) + + @test tan(bareinterval(1.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 4.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 3.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 2.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(1.0, 1.0)) === bareinterval(0x18eb245cbee3a5p-52, 0x18eb245cbee3a6p-52) + + @test tan(bareinterval(2.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(2.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(2.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(2.0, 4.0)) === bareinterval(-0x117af62e0950f9p-51, 0x12866f9be4de14p-52) + + @test tan(bareinterval(2.0, 3.0)) === bareinterval(-0x117af62e0950f9p-51, -0x123ef71254b86fp-55) + + @test tan(bareinterval(2.0, 2.0)) === bareinterval(-0x117af62e0950f9p-51, -0x117af62e0950f8p-51) + + @test tan(bareinterval(3.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(3.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(3.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(3.0, 4.0)) === bareinterval(-0x123ef71254b870p-55, 0x12866f9be4de14p-52) + + @test tan(bareinterval(3.0, 3.0)) === bareinterval(-0x123ef71254b870p-55, -0x123ef71254b86fp-55) + + @test tan(bareinterval(4.0, 7.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(4.0, 6.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(4.0, 5.0)) === entireinterval(BareInterval{Float64}) + + @test tan(bareinterval(4.0, 4.0)) === bareinterval(0x12866f9be4de13p-52, 0x12866f9be4de14p-52) + + @test tan(bareinterval(5.0, 7.0)) === bareinterval(-0x1b0b4b739bbb07p-51, 0x1be2e6e13eea79p-53) + + @test tan(bareinterval(5.0, 6.0)) === bareinterval(-0x1b0b4b739bbb07p-51, -0x129fd86ebb95bep-54) + + @test tan(bareinterval(5.0, 5.0)) === bareinterval(-0x1b0b4b739bbb07p-51, -0x1b0b4b739bbb06p-51) + + @test tan(bareinterval(6.0, 7.0)) === bareinterval(-0x129fd86ebb95bfp-54, 0x1be2e6e13eea79p-53) + + @test tan(bareinterval(6.0, 6.0)) === bareinterval(-0x129fd86ebb95bfp-54, -0x129fd86ebb95bep-54) + + @test tan(bareinterval(7.0, 7.0)) === bareinterval(0x1be2e6e13eea78p-53, 0x1be2e6e13eea79p-53) + +end + +@testset "mpfi_tanh" begin + + @test tanh(bareinterval(-Inf, -7.0)) === bareinterval(-1.0, -0x1ffffc832750f1p-53) + + @test tanh(bareinterval(-Inf, 0.0)) === bareinterval(-1.0, 0.0) + + @test tanh(bareinterval(-Inf, 8.0)) === bareinterval(-1.0, 0x1fffff872a91f9p-53) + + @test tanh(entireinterval(BareInterval{Float64})) === bareinterval(-1.0, +1.0) + + @test tanh(bareinterval(-1.0, 0.0)) === bareinterval(-0x185efab514f395p-53, 0.0) + + @test tanh(bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test tanh(bareinterval(0.0, 1.0)) === bareinterval(0.0, 0x185efab514f395p-53) + + @test tanh(bareinterval(0.0, 8.0)) === bareinterval(0.0, 0x1fffff872a91f9p-53) + + @test tanh(bareinterval(0.0, +Inf)) === bareinterval(0.0, +1.0) + + @test tanh(bareinterval(-0.125, 0.0)) === bareinterval(-0x1fd5992bc4b835p-56, 0.0) + + @test tanh(bareinterval(0.0, 0x10000000000001p-53)) === bareinterval(0.0, 0x1d9353d7568af5p-54) + + @test tanh(bareinterval(-4.5, -0.625)) === bareinterval(-0x1ffdfa72153984p-53, -0x11bf47eabb8f95p-53) + + @test tanh(bareinterval(1.0, 3.0)) === bareinterval(0x185efab514f394p-53, 0x1fd77d111a0b00p-53) + + @test tanh(bareinterval(17.0, 18.0)) === bareinterval(0x1fffffffffffe1p-53, 0x1ffffffffffffcp-53) + +end + +@testset "mpfi_union" begin + + @test hull(bareinterval(-Inf, -7.0), bareinterval(-1.0, +8.0)) === bareinterval(-Inf, +8.0) + + @test hull(bareinterval(-Inf, 0.0), bareinterval(+8.0, +Inf)) === entireinterval(BareInterval{Float64}) + + @test hull(bareinterval(-Inf, +8.0), bareinterval(0.0, +8.0)) === bareinterval(-Inf, +8.0) + + @test hull(entireinterval(BareInterval{Float64}), bareinterval(0.0, +8.0)) === entireinterval(BareInterval{Float64}) + + @test hull(bareinterval(0.0, 0.0), bareinterval(-Inf, -7.0)) === bareinterval(-Inf, 0.0) + + @test hull(bareinterval(0.0, +8.0), bareinterval(-7.0, 0.0)) === bareinterval(-7.0, +8.0) + + @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, +8.0)) === bareinterval(0.0, +8.0) + + @test hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test hull(bareinterval(0.0, 0.0), bareinterval(+8.0, +Inf)) === bareinterval(0.0, +Inf) + + @test hull(bareinterval(0.0, 0.0), entireinterval(BareInterval{Float64})) === entireinterval(BareInterval{Float64}) + + @test hull(bareinterval(0.0, +8.0), bareinterval(-7.0, +8.0)) === bareinterval(-7.0, +8.0) + + @test hull(bareinterval(0.0, 0.0), bareinterval(0.0, 0.0)) === bareinterval(0.0, 0.0) + + @test hull(bareinterval(0.0, +Inf), bareinterval(0.0, +8.0)) === bareinterval(0.0, +Inf) + + @test hull(bareinterval(0x12p0, 0x90p0), bareinterval(-0x0dp0, 0x34p0)) === bareinterval(-0x0dp0, 0x90p0) + +end diff --git a/test/generate_ITF1788.jl b/test/generate_ITF1788.jl index 973109aa4..992021d76 100644 --- a/test/generate_ITF1788.jl +++ b/test/generate_ITF1788.jl @@ -101,21 +101,23 @@ function generate(filename::AbstractString) src = joinpath(@__DIR__, "itl", filename) lines = readlines(src) + rx_start = r"^\s*testcase\s+\S+\s+\{\s*$" # where testcase blocks start + rx_end = r"^\s*\}\s*$" # where testcase blocks end + block_start = findall(line -> occursin(rx_start, line), lines) + block_end = findall(line -> occursin(rx_end, line), lines) + + len = length(block_start) + len == length(block_end) || return throw(ArgumentError("opening and closing braces do not match in $filename")) + mkpath("ITF1788_tests") dest = joinpath("ITF1788_tests", replace(filename, ".itl" => ".jl")) open(dest, "w") do io - rx_start = r"^\s*testcase\s+\S+\s+\{\s*$" # where testcase blocks start - rx_end = r"^\s*\}\s*$" # where testcase blocks end - - block_start = findall(line -> occursin(rx_start, line), lines) - block_end = findall(line -> occursin(rx_end, line), lines) - - length(block_start) == length(block_end) || throw(ArgumentError("opening and closing braces do not match in $filename")) - + i = 1 for (bstart, bend) ∈ zip(block_start, block_end) testset = parse_block(view(lines, bstart:bend)) - write(io, testset) + i < len ? write(io, testset * "\n") : write(io, testset) + i += 1 end end diff --git a/test/interval_tests/consistency.jl b/test/interval_tests/consistency.jl index 50e9d0054..03ced2d3b 100644 --- a/test/interval_tests/consistency.jl +++ b/test/interval_tests/consistency.jl @@ -271,9 +271,9 @@ a = interval(1, 2) b = interval(3, 4) - @test isequal_interval(a^b, interval(1, 16)) - @test isequal_interval(a^interval(0.5, 1), a) - @test isequal_interval(a^interval(0.3, 0.5), interval(1, sqrt(2))) + @test isequal_interval(pow(a, b), interval(1, 16)) + @test isequal_interval(pow(a, interval(0.5, 1)), a) + @test isequal_interval(pow(a, interval(0.3, 0.5)), interval(1, sqrt(2))) end @testset "isatomic" begin diff --git a/test/interval_tests/numeric.jl b/test/interval_tests/numeric.jl index 98a6df65c..64b017137 100644 --- a/test/interval_tests/numeric.jl +++ b/test/interval_tests/numeric.jl @@ -93,10 +93,10 @@ end @test isequal_interval(pown(interval(0,3) , -3), interval(1/27, Inf)) @test isequal_interval(pown(interval(-1,2) , -3), entireinterval()) @test isequal_interval(pown(interval(-3,2) , 3), interval(-27, 8)) - @test isequal_interval(interval(0.0) ^ interval(1.1), interval(0)) + @test isequal_interval(pow(interval(0.0), interval(1.1)), interval(0)) @test isequal_interval(pown(interval(0.0) , 0), interval(1)) - @test isequal_interval(interval(0.0) ^ interval(1//10), interval(0)) - @test isequal_interval(interval(0.0) ^ interval(-1//10), emptyinterval()) + @test isequal_interval(pow(interval(0.0), interval(1//10)), interval(0)) + @test isequal_interval(pow(interval(0.0), interval(-1//10)), emptyinterval()) @test isequal_interval(pown(emptyinterval(), 0), emptyinterval()) @test isequal_interval(pown(interval(2.5) , 3), interval(15.625, 15.625)) @test isequal_interval(pown(interval(5//2), 3), interval(125//8)) @@ -104,27 +104,27 @@ end x = interval(-3, 2) @test isequal_interval(pown(x, 3), interval(-27, 8)) - @test isequal_interval(interval(-3, 4) ^ interval(0.5), interval(0, 2)) - @test isequal_interval(interval(-3, 4) ^ interval(0.5), interval(-3, 4)^(1//2)) + @test isequal_interval(pow(interval(-3, 4), interval(0.5)), interval(0, 2)) + @test isequal_interval(pow(interval(-3, 4), interval(0.5)), pow(interval(-3, 4), (1//2))) @test isequal_interval(pown(interval(-3, 2), 2), interval(0.0, 9.0)) - @test isequal_interval(interval(-3, 4) ^ interval(0.5), interval(0, 2)) - @test isequal_interval(interval(BigFloat, -3, 4) ^ interval(0.5), interval(BigFloat, 0, 2)) + @test isequal_interval(pow(interval(-3, 4), interval(0.5)), interval(0, 2)) + @test isequal_interval(pow(interval(BigFloat, -3, 4), interval(0.5)), interval(BigFloat, 0, 2)) - @test dist(interval(1, 27)^interval(1/3), interval(1, 3)) < 2*inf(eps(interval(1, 3))) - @test dist(interval(1, 27)^interval(1/3), interval(1, 3)) < 2*inf(eps(interval(1, 3))) - @test issubset_interval(interval(1, 3), interval(1, 27)^interval(1//3)) - @test isequal_interval(interval(0.1, 0.7)^interval(1//3), interval(0.46415888336127786, 0.8879040017426008)) - @test dist(interval(0.1, 0.7)^interval(1/3), - interval(0.46415888336127786, 0.8879040017426008)) < 2*inf(eps(interval(0.1, 0.7)^interval(1/3))) + @test dist(pow(interval(1, 27), interval(1/3)), interval(1, 3)) < 2*inf(eps(interval(1, 3))) + @test dist(pow(interval(1, 27), interval(1/3)), interval(1, 3)) < 2*inf(eps(interval(1, 3))) + @test issubset_interval(interval(1, 3), pow(interval(1, 27), interval(1//3))) + @test isequal_interval(pow(interval(0.1, 0.7), interval(1//3)), interval(0.46415888336127786, 0.8879040017426008)) + @test dist(pow(interval(0.1, 0.7), interval(1/3)), + interval(0.46415888336127786, 0.8879040017426008)) < 2*inf(eps(pow(interval(0.1, 0.7), interval(1/3)))) x = interval(BigFloat, 27) - y = x^interval(1//3) + y = pow(x, interval(1//3)) @test diam(y) == 0 x = interval(BigFloat, 9.595703125) - y = x^interval(1//3) + y = pow(x, interval(1//3)) @test diam(y) == 0 x = interval(BigFloat, 0.1) - y = x^interval(1//3) + y = pow(x, interval(1//3)) @test (0 <= diam(y) < 1e-76) end @@ -222,9 +222,9 @@ end @test isequal_interval(fastpow(interval(BigFloat, 1, 2), 2), interval(1, 4)) x = interval(π) - @test isinterior(x^100, fastpow(x, 100)) - @test isinterior(x^50, fastpow(x, 50)) - @test isinterior(x^50, fastpow(x, 50)) + @test isinterior(pow(x, 100), fastpow(x, 100)) + @test isinterior(pow(x, 50), fastpow(x, 50)) + @test isinterior(pow(x, 50), fastpow(x, 50)) x = interval(2) @test isequal_interval(fastpow(x, 2000), interval(floatmax(), Inf)) @@ -233,19 +233,19 @@ end @testset "Fast real powers" begin x = interval(1, 2) @test isequal_interval(fastpow(x, 0.5), interval(1.0, 1.4142135623730951)) - @test isequal_interval(fastpow(x, 0.5), x^interval(0.5)) + @test isequal_interval(fastpow(x, 0.5), pow(x, interval(0.5))) y = interval(2, 3) @test isequal_interval(fastpow(y, -0.5), interval(0.5773502691896257, 0.7071067811865476)) y = interval(-2, 3) @test isequal_interval(fastpow(y, 2.1), interval(0.0, 10.045108566305146)) - @test issubset_interval(y^interval(2.1), fastpow(y, 2.1)) + @test issubset_interval(pow(y, interval(2.1)), fastpow(y, 2.1)) end @testset "Fast interval powers" begin x = interval(1, 2) - @test isequal_interval(x^interval(-1.5, 2.5), interval(0.35355339059327373, 5.656854249492381)) + @test isequal_interval(pow(x, interval(-1.5, 2.5)), interval(0.35355339059327373, 5.656854249492381)) y = interval(-2, 3) @test isequal_interval(fastpow(y, 2.1), interval(0.0, 10.045108566305146)) @@ -279,7 +279,7 @@ end a = interval(Float32, 1e38) b = interval(Float32, 1e2) @test isequal_interval(a * b, interval(Float32, floatmax(Float32), Inf)) - @test isequal_interval(interval(1.0f0) ^ interval(1.0f0), interval(1.0f0)) # test for PR #482 + @test isequal_interval(pow(interval(1.0f0), interval(1.0f0)), interval(1.0f0)) # test for PR #482 end diff --git a/test/interval_tests/power.jl b/test/interval_tests/power.jl index dd910d843..a5b4e3593 100644 --- a/test/interval_tests/power.jl +++ b/test/interval_tests/power.jl @@ -1,51 +1,51 @@ @testset "rational_power_test" begin - @test isequal_interval(^(emptyinterval(), 1//3), emptyinterval()) - @test isequal_interval(^(interval(1, 8), 1//3), interval(1, 2)) - @test issubset_interval(interval(2^(1//3), 2), ^(interval(2, 8), 1//3)) - @test issubset_interval(interval(1, 9^(1//3)), ^(interval(1, 9), 1//3)) - @test issubset_interval(interval(2^(1//3), 9^(1//3)), ^(interval(2, 9), 1//3)) - @test isequal_interval(^(interval(-1, 8), 1//3), interval(0, 2)) - @test issubset_interval(interval(0, 2), ^(interval(-2, 8), 1//3)) - @test issubset_interval(interval(0, 9^(1//3)), ^(interval(-1, 9), 1//3)) - @test issubset_interval(interval(0, 9^(1//3)), ^(interval(-2, 9), 1//3)) - @test isequal_interval(^(interval(1, 8), -1//3), interval(0.5, 1)) - @test issubset_interval(interval(0.5, 2^(-1//3)), ^(interval(2, 8), -1//3)) - @test issubset_interval(interval(9^(-1//3), 1), ^(interval(1, 9), -1//3)) - @test issubset_interval(interval(9^(-1//3), 2^(-1//3)), ^(interval(2, 9), -1//3)) - @test isequal_interval(^(interval(-1, 8), -1//3), interval(0.5, Inf)) - @test issubset_interval(interval(0.5, Inf), ^(interval(-2, 8), -1//3)) - @test issubset_interval(interval(9^(-1//3), Inf), ^(interval(-1, 9), -1//3)) - @test issubset_interval(interval(9^(-1//3), Inf), ^(interval(-2, 9), -1//3)) - @test isequal_interval(^(interval(-2, 4), 1//2), interval(0, 2)) - @test isequal_interval(^(interval(-2, 8), 1//3), interval(0, 2)) - @test isequal_interval(^(interval(-8, -2), 1//3), emptyinterval()) - @test isequal_interval(^(interval(-8, -2), 1//2), emptyinterval()) - @test isequal_interval(^(interval(-8, -2), -1//3), emptyinterval()) - @test isequal_interval(^(interval(-8, -2), -1//2), emptyinterval()) - @test isequal_interval(^(emptyinterval(), 2//3), emptyinterval()) - @test isequal_interval(^(interval(1, 8), 2//3), interval(1, 4)) - @test issubset_interval(interval(2^(2//3), 4), ^(interval(2, 8), 2//3)) - @test issubset_interval(interval(1, 9^(2//3)), ^(interval(1, 9), 2//3)) - @test issubset_interval(interval(2^(2//3), 9^(2//3)), ^(interval(2, 9), 2//3)) - @test isequal_interval(^(interval(-1, 8), 2//3), interval(0, 4)) - @test issubset_interval(interval(0, 4), ^(interval(-2, 8), 2//3)) - @test issubset_interval(interval(0, 9^(2//3)), ^(interval(-1, 9), 2//3)) - @test issubset_interval(interval(0, 9^(2//3)), ^(interval(-2, 9), 2//3)) - @test isequal_interval(^(interval(1, 8), -2//3), interval(0.25, 1)) - @test issubset_interval(interval(0.25, 2^(-2//3)), ^(interval(2, 8), -2//3)) - @test issubset_interval(interval(9^(-2//3), 1), ^(interval(1, 9), -2//3)) - @test issubset_interval(interval(9^(-2//3), 2^(-2//3)), ^(interval(2, 9), -2//3)) - @test isequal_interval(^(interval(-1, 8), -2//3), interval(0.25, Inf)) - @test issubset_interval(interval(0.25, Inf), ^(interval(-2, 8), -2//3)) - @test issubset_interval(interval(9^(-2//3), Inf), ^(interval(-1, 9), -2//3)) - @test issubset_interval(interval(9^(-2//3), Inf), ^(interval(-2, 9), -2//3)) - @test isequal_interval(^(interval(-2, 4), 3//2), interval(0, 8)) - @test isequal_interval(^(interval(-2, 8), 2//3), interval(0, 4)) - @test isequal_interval(^(interval(-8, -2), 2//3), emptyinterval()) - @test isequal_interval(^(interval(-8, -2), 3//2), emptyinterval()) - @test isequal_interval(^(interval(-8, -2), -2//3), emptyinterval()) - @test isequal_interval(^(interval(-8, -2), -3//2), emptyinterval()) - @test isequal_interval(^(interval(-1, 1), 1000000000000000000000000000000000000000//1), interval(0, 1)) + @test isequal_interval(pow(emptyinterval(), 1//3), emptyinterval()) + @test isequal_interval(pow(interval(1, 8), 1//3), interval(1, 2)) + @test issubset_interval(interval(2^(1//3), 2), pow(interval(2, 8), 1//3)) + @test issubset_interval(interval(1, 9^(1//3)), pow(interval(1, 9), 1//3)) + @test issubset_interval(interval(2^(1//3), 9^(1//3)), pow(interval(2, 9), 1//3)) + @test isequal_interval(pow(interval(-1, 8), 1//3), interval(0, 2)) + @test issubset_interval(interval(0, 2), pow(interval(-2, 8), 1//3)) + @test issubset_interval(interval(0, 9^(1//3)), pow(interval(-1, 9), 1//3)) + @test issubset_interval(interval(0, 9^(1//3)), pow(interval(-2, 9), 1//3)) + @test isequal_interval(pow(interval(1, 8), -1//3), interval(0.5, 1)) + @test issubset_interval(interval(0.5, 2^(-1//3)), pow(interval(2, 8), -1//3)) + @test issubset_interval(interval(9^(-1//3), 1), pow(interval(1, 9), -1//3)) + @test issubset_interval(interval(9^(-1//3), 2^(-1//3)), pow(interval(2, 9), -1//3)) + @test isequal_interval(pow(interval(-1, 8), -1//3), interval(0.5, Inf)) + @test issubset_interval(interval(0.5, Inf), pow(interval(-2, 8), -1//3)) + @test issubset_interval(interval(9^(-1//3), Inf), pow(interval(-1, 9), -1//3)) + @test issubset_interval(interval(9^(-1//3), Inf), pow(interval(-2, 9), -1//3)) + @test isequal_interval(pow(interval(-2, 4), 1//2), interval(0, 2)) + @test isequal_interval(pow(interval(-2, 8), 1//3), interval(0, 2)) + @test isequal_interval(pow(interval(-8, -2), 1//3), emptyinterval()) + @test isequal_interval(pow(interval(-8, -2), 1//2), emptyinterval()) + @test isequal_interval(pow(interval(-8, -2), -1//3), emptyinterval()) + @test isequal_interval(pow(interval(-8, -2), -1//2), emptyinterval()) + @test isequal_interval(pow(emptyinterval(), 2//3), emptyinterval()) + @test isequal_interval(pow(interval(1, 8), 2//3), interval(1, 4)) + @test issubset_interval(interval(2^(2//3), 4), pow(interval(2, 8), 2//3)) + @test issubset_interval(interval(1, 9^(2//3)), pow(interval(1, 9), 2//3)) + @test issubset_interval(interval(2^(2//3), 9^(2//3)), pow(interval(2, 9), 2//3)) + @test isequal_interval(pow(interval(-1, 8), 2//3), interval(0, 4)) + @test issubset_interval(interval(0, 4), pow(interval(-2, 8), 2//3)) + @test issubset_interval(interval(0, 9^(2//3)), pow(interval(-1, 9), 2//3)) + @test issubset_interval(interval(0, 9^(2//3)), pow(interval(-2, 9), 2//3)) + @test isequal_interval(pow(interval(1, 8), -2//3), interval(0.25, 1)) + @test issubset_interval(interval(0.25, 2^(-2//3)), pow(interval(2, 8), -2//3)) + @test issubset_interval(interval(9^(-2//3), 1), pow(interval(1, 9), -2//3)) + @test issubset_interval(interval(9^(-2//3), 2^(-2//3)), pow(interval(2, 9), -2//3)) + @test isequal_interval(pow(interval(-1, 8), -2//3), interval(0.25, Inf)) + @test issubset_interval(interval(0.25, Inf), pow(interval(-2, 8), -2//3)) + @test issubset_interval(interval(9^(-2//3), Inf), pow(interval(-1, 9), -2//3)) + @test issubset_interval(interval(9^(-2//3), Inf), pow(interval(-2, 9), -2//3)) + @test isequal_interval(pow(interval(-2, 4), 3//2), interval(0, 8)) + @test isequal_interval(pow(interval(-2, 8), 2//3), interval(0, 4)) + @test isequal_interval(pow(interval(-8, -2), 2//3), emptyinterval()) + @test isequal_interval(pow(interval(-8, -2), 3//2), emptyinterval()) + @test isequal_interval(pow(interval(-8, -2), -2//3), emptyinterval()) + @test isequal_interval(pow(interval(-8, -2), -3//2), emptyinterval()) + @test isequal_interval(pow(interval(-1, 1), 1000000000000000000000000000000000000000//1), interval(0, 1)) end @testset "Interval{<:Rational}" begin @@ -74,14 +74,14 @@ end @test isequal_interval(pown(interval(-3, -2), -3), interval(-1/8, -1/27)) @test isequal_interval(pown(interval(0, 3) , 2), interval(0, 9)) @test isequal_interval(pown(interval(0, 3) , -2), interval(1/9, Inf, IntervalArithmetic.trv)) - @test isequal_interval(interval(2, 3) ^ interval(0, 1), interval(1, 3)) - @test isequal_interval(interval(2, 3) ^ interval(0, 1), interval(1, 3)) - @test isequal_interval(interval(0, 2) ^ interval(0, 1), interval(0, 2, IntervalArithmetic.trv)) - @test isequal_interval(interval(0, 2) ^ interval(0, 1), interval(0, 2, IntervalArithmetic.trv)) - @test isequal_interval(interval(-3, 2) ^ interval(0, 1), interval(0, 2, IntervalArithmetic.trv)) - @test isequal_interval(interval(-3, 2) ^ interval(0, 1), interval(0, 2, IntervalArithmetic.trv)) - @test isequal_interval(interval(-3, 2) ^ interval(-1, 1), interval(0, Inf, IntervalArithmetic.trv)) - @test isequal_interval(interval(-3, 2) ^ interval(-1, 1), interval(0, Inf, IntervalArithmetic.trv)) + @test isequal_interval(pow(interval(2, 3) , interval(0, 1)), interval(1, 3)) + @test isequal_interval(pow(interval(2, 3) , interval(0, 1)), interval(1, 3)) + @test isequal_interval(pow(interval(0, 2) , interval(0, 1)), interval(0, 2, IntervalArithmetic.trv)) + @test isequal_interval(pow(interval(0, 2) , interval(0, 1)), interval(0, 2, IntervalArithmetic.trv)) + @test isequal_interval(pow(interval(-3, 2), interval(0, 1)), interval(0, 2, IntervalArithmetic.trv)) + @test isequal_interval(pow(interval(-3, 2), interval(0, 1)), interval(0, 2, IntervalArithmetic.trv)) + @test isequal_interval(pow(interval(-3, 2), interval(-1, 1)), interval(0, Inf, IntervalArithmetic.trv)) + @test isequal_interval(pow(interval(-3, 2), interval(-1, 1)), interval(0, Inf, IntervalArithmetic.trv)) end # @testset "Complex{<:Interval}" begin From 2e4be21fd8fb248cec51b32bdac16a476bdae719 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Tue, 12 Dec 2023 16:28:30 +0100 Subject: [PATCH 42/54] Add `fastpown` --- src/intervals/arithmetic/power.jl | 36 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 562c054ac..618715d2d 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -10,7 +10,9 @@ Power mode type for `^`. Available mode types: -- `:fast` (default): `x ^ y` is semantically equivalent to `fastpow(x, y)`. +- `:fast` (default): `x ^ y` is semantically equivalent to `fastpow(x, y)`, +unless `isthininteger(y)` is true in which case it is semantically equivalent to +`pown(x, sup(y))`. - `:slow`: `x ^ y` is semantically equivalent to `pow(x, y)`, unless `isthininteger(y)` is true in which case it is semantically equivalent to `pown(x, sup(y))`. @@ -65,7 +67,7 @@ Base.literal_pow(::typeof(^), x::Interval, ::Val{n}) where {n} = x^n # helper functions for power _select_pow(::PowerMode{:fast}, x, y) = fastpow(x, y) -_select_pown(::PowerMode{:fast}, x, y) = fastpow(x, y) +_select_pown(::PowerMode{:fast}, x, y) = fastpown(x, y) _select_pow(::PowerMode{:slow}, x, y) = pow(x, y) _select_pown(::PowerMode{:slow}, x, y) = pown(x, y) @@ -194,7 +196,7 @@ Interval{Float64}(-Inf, Inf, trv) """ function pown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} isempty_interval(x) && return x - iszero(n) && return one(BareInterval{T}) + n == 0 && return one(BareInterval{T}) n == 1 && return x (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{T}) if isodd(n) @@ -275,12 +277,11 @@ end """ hypot(x, y) -Compute the hypotenuse; this is semantically equivalent to -`sqrt(pown(x, 2) + pown(y, 2))`. +Compute the hypotenuse; this relies on `^` internally. """ -Base.hypot(x::BareInterval, y::BareInterval) = sqrt(pown(x, 2) + pown(y, 2)) +Base.hypot(x::BareInterval, y::BareInterval) = (x ^ bareinterval(2//1) + y ^ bareinterval(2//1)) ^ bareinterval(1//2) -Base.hypot(x::Interval, y::Interval) = sqrt(x^2 + y^2) +Base.hypot(x::Interval, y::Interval) = (x ^ interval(2//1) + y ^ interval(2//1)) ^ bareinterval(1//2) """ fastpow(x, y) @@ -358,6 +359,27 @@ Base.@assume_effects :terminates_locally function _positive_power_by_squaring(x: return y end +""" + fastpown(x, n) + +A faster implementation of `pown(x, y)`, at the cost of maybe returning a +slightly larger interval. +""" +function fastpown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} + isempty_interval(x) && return x + n == 0 && return one(BareInterval{T}) + n == 1 && return x + (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{T}) + return _positive_power_by_squaring(x, n) +end + +function fastpown(x::Interval, n::Integer) + r = pown(bareinterval(x), n) + d = min(decoration(x), decoration(r)) + d = min(d, ifelse((n < 0) & in_interval(0, x), trv, d)) + return _unsafe_interval(r, d, isguaranteed(x)) +end + # for f ∈ (:cbrt, :exp, :exp2, :exp10, :expm1) From 624162d88c745457dfbed602e60a70ade15a89d5 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Tue, 12 Dec 2023 16:35:20 +0100 Subject: [PATCH 43/54] Fix `hypot` --- src/intervals/arithmetic/power.jl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 618715d2d..39b918b97 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -1,6 +1,7 @@ # This file contains the functions described as "Power functions" in Section 9.1 # of the IEEE Standard 1788-2015 and required for set-based flavor in Section # 10.5.3 +# Some of the "Recommended operations" (Section 10.6.1) are also present # power mechanism used in `^` @@ -278,10 +279,12 @@ end hypot(x, y) Compute the hypotenuse; this relies on `^` internally. + +Implement the `hypot` function of the IEEE Standard 1788-2015 (Table 10.5). """ -Base.hypot(x::BareInterval, y::BareInterval) = (x ^ bareinterval(2//1) + y ^ bareinterval(2//1)) ^ bareinterval(1//2) +Base.hypot(x::BareInterval, y::BareInterval) = sqrt(pown(x, 2) + pown(y, 2)) -Base.hypot(x::Interval, y::Interval) = (x ^ interval(2//1) + y ^ interval(2//1)) ^ bareinterval(1//2) +Base.hypot(x::Interval, y::Interval) = sqrt(pown(x, 2) + pown(y, 2)) """ fastpow(x, y) From 33987c28b235a58744c2c4d105112aed676e5039 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Tue, 12 Dec 2023 18:14:43 +0100 Subject: [PATCH 44/54] Fix decoration and construction edge case --- src/intervals/arithmetic/absmax.jl | 10 +++++++++- src/intervals/construction.jl | 15 ++------------- src/intervals/interval_operations/bisect.jl | 6 +++--- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/intervals/arithmetic/absmax.jl b/src/intervals/arithmetic/absmax.jl index ef4509d07..016ae6139 100644 --- a/src/intervals/arithmetic/absmax.jl +++ b/src/intervals/arithmetic/absmax.jl @@ -15,6 +15,8 @@ end Base.abs(x::Interval) = _unsafe_interval(abs(bareinterval(x)), decoration(x), isguaranteed(x)) +Base.abs(x::Complex{<:Interval}) = hypot(real(x), imag(y)) + """ abs2(x::BareInterval) abs2(x::Interval) @@ -23,7 +25,13 @@ Implement the square absolute value; this is semantically equivalent to `pown(x, """ Base.abs2(x::BareInterval) = pown(x, 2) # not in the IEEE Standard 1788-2015 -Base.abs2(x::Interval) = _unsafe_interval(abs2(bareinterval(x)), decoration(x), isguaranteed(x)) +function Base.abs2(x::Interval) + r = abs2(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) +end + +Base.abs2(x::Complex{<:Interval}) = pown(real(x), 2) + pown(imag(x), 2) for f ∈ (:min, :max) @eval begin diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 931f2b7c9..06dfc5a2d 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -436,17 +436,6 @@ function _interval_infsup(::Type{T}, a, b, d::Decoration) where {T<:NumTypes} return _unsafe_interval(x, min(decoration(x), d), true) end end -function _interval_infsup(::Type{T}, a, b) where {T<:NumTypes} - lo = _inf(a) - hi = _sup(b) - if !is_valid_interval(lo, hi) - @warn "invalid interval, NaI is returned" - return nai(T) - else - x = _unsafe_bareinterval(T, lo, hi) - return _unsafe_interval(x, decoration(x), true) - end -end # needed for special warnings and propagation of `isguaranteed` function _interval_infsup(::Type{T}, x::Union{BareInterval,Interval}, y::Union{BareInterval,Interval}, d::Decoration) where {T<:NumTypes} @@ -492,9 +481,9 @@ end _interval_infsup(::Type{T}, a::Complex, b::Complex, d::Decoration = com) where {T<:NumTypes} = complex(_interval_infsup(T, real(a), real(b), d), _interval_infsup(T, imag(a), imag(b), d)) _interval_infsup(::Type{T}, a::Complex, b, d::Decoration = com) where {T<:NumTypes} = - complex(_interval_infsup(T, real(a), b, d), _interval_infsup(T, imag(a), d)) + complex(_interval_infsup(T, real(a), b, d), _interval_infsup(T, imag(a), imag(a), d)) _interval_infsup(::Type{T}, a, b::Complex, d::Decoration = com) where {T<:NumTypes} = - complex(_interval_infsup(T, a, real(b), d), _interval_infsup(T, imag(b), d)) + complex(_interval_infsup(T, a, real(b), d), _interval_infsup(T, imag(b), imag(b), d)) # midpoint constructors diff --git a/src/intervals/interval_operations/bisect.jl b/src/intervals/interval_operations/bisect.jl index 114d1e263..46c2281ee 100644 --- a/src/intervals/interval_operations/bisect.jl +++ b/src/intervals/interval_operations/bisect.jl @@ -8,14 +8,14 @@ to the midpoint. Split the `i`-th component of a vector `x` at a relative position `α`, where `α = 0.5` corresponds to the midpoint. """ -function bisect(x::BareInterval{T}, α::Real=0.5) where {T<:NumTypes} +function bisect(x::BareInterval{T}, α::Real = 0.5) where {T<:NumTypes} 0 ≤ α ≤ 1 || return throw(DomainError(α, "`bisect` only accepts a relative position between 0 and 1")) isatomic(x) && return (x, emptyinterval(BareInterval{T})) m = _relpoint(x, α) return (_unsafe_bareinterval(T, inf(x), m), _unsafe_bareinterval(T, m, sup(x))) end -function bisect(x::Interval, α::Real=0.5) +function bisect(x::Interval, α::Real = 0.5) bx = bareinterval(x) r₁, r₂ = bisect(bx, α) d₁, d₂ = min(decoration(x), decoration(r₁)), min(decoration(x), decoration(r₂)) @@ -23,7 +23,7 @@ function bisect(x::Interval, α::Real=0.5) return (_unsafe_interval(r₁, d₁, t), _unsafe_interval(r₂, d₂, t)) end -function bisect(x::AbstractVector, i::Integer, α::Real=0.5) +function bisect(x::AbstractVector, i::Integer, α::Real = 0.5) x₁ = copy(x) x₂ = copy(x) x₁[i], x₂[i] = bisect(x[i], α) From e0fd912b7b018fb92d4dd9d4f00b42d32d9fb186 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 00:08:35 +0100 Subject: [PATCH 45/54] Cleanup --- src/intervals/arithmetic/absmax.jl | 2 +- src/intervals/complex.jl | 119 ----------------------------- test/interval_tests/complex.jl | 85 +++++++++------------ test/runtests.jl | 6 +- 4 files changed, 40 insertions(+), 172 deletions(-) delete mode 100644 src/intervals/complex.jl diff --git a/src/intervals/arithmetic/absmax.jl b/src/intervals/arithmetic/absmax.jl index 016ae6139..914828309 100644 --- a/src/intervals/arithmetic/absmax.jl +++ b/src/intervals/arithmetic/absmax.jl @@ -15,7 +15,7 @@ end Base.abs(x::Interval) = _unsafe_interval(abs(bareinterval(x)), decoration(x), isguaranteed(x)) -Base.abs(x::Complex{<:Interval}) = hypot(real(x), imag(y)) +Base.abs(x::Complex{<:Interval}) = hypot(real(x), imag(x)) """ abs2(x::BareInterval) diff --git a/src/intervals/complex.jl b/src/intervals/complex.jl deleted file mode 100644 index 0caba49c3..000000000 --- a/src/intervals/complex.jl +++ /dev/null @@ -1,119 +0,0 @@ -for op in (:⊆, :⊂, :interior) - @eval function $(op)(x::Complex{<:Interval}, y::Complex{<:Interval}) - return $(op)(real(x), real(y)) && $(op)(imag(x), imag(y)) - end -end - -function ^(x::Complex{<:Interval}, n::Integer) - if n < 0 - return inv(x)^n - end - - return Base.power_by_squaring(x, n) -end - -function ^(x::Complex{<:Interval}, y::Real) - return exp(y*log(x)) -end - -function ^(x::Complex{<:Interval}, y::Complex) - return exp(y*log(x)) -end - - -function ssqs(x::T, y::T,RND::RoundingMode) where T<:AbstractFloat - k::Int = 0 - ρ = +(*(x,x,RND),*(y,y,RND),RND) - if !isfinite(ρ) && (isinf(x) || isinf(y)) - ρ = convert(T, Inf) - elseif isinf(ρ) || (ρ==0 && (x!=0 || y!=0)) || ρ= 0) && error("Interval lies across branch cut") - iszero(x) && iszero(y) && return Complex(zero(x),y) - - (inf(x) < 0 && sup(x) > 0) && return sqrt((inf(x)..0) + im*y) ∪ sqrt((0..sup(x)) + im*y) - - absx = abs(x) - - absy= abs(y) - ρl = sqrt_realpart(inf(absx),inf(absy),RoundDown) - ρu = sqrt_realpart(sup(absx),sup(absy),RoundUp) - - ηu = sup(y) - if isfinite(ηu) - if ηu >= 0 - ηu_re = sqrt_realpart(inf(absx),ηu,RoundDown) - else - ηu_re = sqrt_realpart(sup(absx),ηu,RoundUp) - end - ηu = ηu_re ≠ 0 ? /(ηu,2ηu_re,RoundUp) : zero(T) - end - - ηl = inf(y) - if ηl >= 0 - ηl_re = sqrt_realpart(sup(absx),ηl,RoundUp) - else - ηl_re = sqrt_realpart(inf(absx),ηl,RoundDown) - end - ηl = ηl_re ≠ 0 ? /(ηl,2ηl_re,RoundDown) : zero(T) - - ξ = ρl..ρu - η = ηl..ηu - - if mid(x)<0 - ξ = flipsign(η,mid(η)) - η = flipsign((ρl..ρu),mid(η)) - end - - Complex(ξ,η) -end - - -function log(z::Complex{<:Interval}) - ρ = abs(z) - θ = angle(z) - - return log(ρ) + im * θ -end - - -abs2(z::Complex{<:Interval}) = real(z)^2 + imag(z)^2 - -abs(z::Complex{<:Interval}) = sqrt(abs2(z)) - -# -# # \left( |x|^p \right)^{1/p}. -# function norm(z::Complex{T}, p=2) where T<:Interval -# return (abs(z)^(p))^(1 / p) -# end diff --git a/test/interval_tests/complex.jl b/test/interval_tests/complex.jl index 7ee3a4273..b714b244e 100644 --- a/test/interval_tests/complex.jl +++ b/test/interval_tests/complex.jl @@ -1,68 +1,57 @@ @testset "Complex interval operations" begin a = interval(1im) b = interval(4im + 3) - c = interval(-1, 4) + interval(0, 2)*interval(im) - - @test a ⊂ c - @test a ⊆ c - @test isinterior(a, c) - @test (b ⊂ c) == false - @test (b ⊆ c) == false + c = complex(interval(-1, 4), interval(0, 2)) @test typeof(a) == Complex{Interval{Float64}} - @test a == interval(0) + interval(1)*interval(im) - @test a * a == interval(-1) - @test a + a == interval(2)*interval(im) - @test a - a == 0 - @test a / a == 1 - @test 3+2im ∈ c - @test a ∪ b == interval(0, 3) + interval(1, 4)*interval(im) - @test c ∩ (a ∪ b) == interval(0, 3) + interval(1, 2)*interval(im) - @test a ∩ b == emptyinterval() + emptyinterval()*interval(im) - @test isdisjoint(a,b) == true + @test issubset_interval(a, c) + @test isinterior(a, c) + @test !issubset_interval(b, c) + + @test isequal_interval(a, complex(interval(0), interval(1))) + @test isequal_interval(a * a, interval(-1)) + @test isequal_interval(a + a, interval(2)*interval(im)) + @test isthin(a - a, 0) + @test_broken isthin(a / a, 1) + + @test in_interval(3+2im, c) + @test isequal_interval(hull(a, b), complex(interval(0, 3), interval(1, 4))) + @test isequal_interval(intersect_interval(c, hull(a, b)), complex(interval(0, 3), interval(1, 2))) + @test isempty_interval(intersect_interval(a, b)) + @test isdisjoint_interval(a, b) end -@testset "Complex functions" begin - Z = (3 ± 1e-7) + (4 ± 1e-7)*interval(im) - @test sin(Z) == complex(sin(real(Z)) * cosh(imag(Z)), sinh(imag(Z)) * cos(real(Z))) - z = exp(-im * interval(π)) - @test -1 in real(z) - @test 0 in imag(z) +# @testset "Complex functions" begin +# Z = interval(3, 1e-7; format = :midpoint) + interval(4, 1e-7; format = :midpoint)*interval(im) +# @test sin(Z) == complex(sin(real(Z)) * cosh(imag(Z)), sinh(imag(Z)) * cos(real(Z))) - sZ = sqrt(Z) - @test sZ == interval(1.99999996999999951619,2.00000003000000070585) + interval(0.99999996999999984926,1.00000003000000048381)*interval(im) - @test sqrt(-Z) == imag(sZ) - real(sZ)*interval(im) +# z = exp(- interval(im) * interval(π)) +# @test in_interval(-1, real(z)) +# @test in_interval(0, imag(z)) - @test sqrt(interval(-1, 0) + interval(0)*interval(im)) .== interval(0, 1)*interval(im) - @test sqrt(interval(-1, 1) + interval(0)*interval(im)) .== interval(0, 1) + interval(0, 1)*interval(im) - @test sqrt(interval(-9//32, Inf)*interval(im)) .== interval(0, Inf) + interval(-3//8, Inf)*interval(im) -end +# sZ = sqrt(Z) +# @test isequal_interval(sZ, complex(interval(1.99999996999999951619, 2.00000003000000070585), interval(0.99999996999999984926, 1.00000003000000048381))) +# @test isequal_interval(sqrt(-Z), complex(imag(sZ), - real(sZ))) - -@testset "Complex powers" begin - x = interval(3, 3) + 4im - @test x^2 == -7 + 24im - @test sqrt(x) ⊆ x^0.5 - @test x^-2 == inv(x)^2 - - a = -3.1 - @test x ⊆ (x^a)^(1/a) -end +# @test isequal_interval(sqrt(interval(-1, 0) + interval(0)*interval(im)), interval(0im, im)) +# @test isequal_interval(sqrt(interval(-1, 1) + interval(0)*interval(im)), interval(0, 1) + interval(0im, 1im)) +# @test isequal_interval(sqrt(interval(-9//32, Inf)*interval(im)), complex(interval(0, Inf), interval(-3//8, Inf))) +# end @testset "abs2 and abs" begin - x = interval(0, 3) +interval(0, 4)*interval(im) - @test abs2(x) == interval(0, 25) - @test abs(x) == norm(x) == interval(0, 5) + x = complex(interval(0, 3), interval(0, 4)) + @test isequal_interval(abs2(x), interval(0, 25)) + @test isequal_interval(abs(x), interval(0, 5)) - y = interval(-1, 1) + interval(-2, 2)*interval(im) - @test abs(y).lo == 0.0 - @test abs2(y).lo == 0.0 + y = complex(interval(-1, 1), interval(-2, 2)) + @test inf(abs(y)) == 0 + @test inf(abs2(y)) == 0 end @testset "real functions" begin - x = interval(0, 3) + interval(0, 4)*interval(im) - @test mag(x) == 5 + x = complex(interval(0, 3), interval(0, 4)) + @test mag(x) == 4 @test mig(x) == 0 @test mid(x) == 1.5 + 2im end diff --git a/test/runtests.jl b/test/runtests.jl index 3182dd236..8e184ffb3 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -8,10 +8,8 @@ open("tests_warning.log", "w") do io redirect_stderr(io) do # interval tests for f ∈ readdir("interval_tests"; join = true) - if !occursin("complex", f) - @testset "$f" begin - include(f) - end + @testset "$f" begin + include(f) end end # ITF1788 tests From 1f2936e768059bd9903244c165b86f81ffbd41bf Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 00:15:50 +0100 Subject: [PATCH 46/54] Update compat and remove old files --- Project.toml | 2 +- benchmark/REQUIRE | 2 -- benchmark/benchmarks.jl | 54 ----------------------------------------- 3 files changed, 1 insertion(+), 57 deletions(-) delete mode 100644 benchmark/REQUIRE delete mode 100644 benchmark/benchmarks.jl diff --git a/Project.toml b/Project.toml index 0ece44bad..df707b3a1 100644 --- a/Project.toml +++ b/Project.toml @@ -14,7 +14,7 @@ DiffRules = "b552c78f-8df3-52c6-915a-8e097449b14b" IntervalArithmeticDiffRulesExt = "DiffRules" [compat] -CRlibm = "0.7, 0.8, 1" +CRlibm = "1" DiffRules = "1" RoundingEmulator = "0.2" julia = "1.9" diff --git a/benchmark/REQUIRE b/benchmark/REQUIRE deleted file mode 100644 index 40e1c265c..000000000 --- a/benchmark/REQUIRE +++ /dev/null @@ -1,2 +0,0 @@ -BenchmarkTools 0.3.1 -PkgBenchmark 0.1.1 \ No newline at end of file diff --git a/benchmark/benchmarks.jl b/benchmark/benchmarks.jl deleted file mode 100644 index 917c9e781..000000000 --- a/benchmark/benchmarks.jl +++ /dev/null @@ -1,54 +0,0 @@ -#= Instructions: - -- Pkg.add("PkgBenchmark.jl") -- using PkgBenchmark - -- results = benchmarkpkg("IntervalArithmetic") -- show(results) - -To compare the current version with a given release use `judge`: - -- results = judge("IntervalArithmetic", tag) -- show(results) - -To export the benchmark results to a markdown file, do: - -- export_markdown("results.md", results) -=# - -using BenchmarkTools, IntervalArithmetic - -const SUITE = BenchmarkGroup() # parent BenchmarkGroup to contain our suite - -S = SUITE["Constructors"] = BenchmarkGroup() -S["Interval"] = @benchmarkable Interval(1, 2) - -S = SUITE["Intervals"] = BenchmarkGroup() -S["@interval"] = @benchmarkable @interval(0.1) -S["pi"] = @benchmarkable @interval(pi) -S["expression"] = @benchmarkable @interval(sin(0.1) + cos(0.2)) - -S = SUITE["Arithmetic"] = BenchmarkGroup() -begin - a = Interval(1, 2) - b = Interval(3, 4) - - for op in (+, -, *, /) - S[string(op)] = @benchmarkable $(op)($a, $b) - end -end - -S = SUITE["Elementary functions"] = BenchmarkGroup() -begin - for op in (exp, log, sin, tan) - S[string(op)] = @benchmarkable $(op)($a) - end -end - -S = SUITE["Sum"] = BenchmarkGroup() -begin - sum1(N) = sum(Interval(i, i+1) for i in 1:N) - sum2(N) = (one = Interval(1.0); sum(one / (i^2) for i in 1:N)) - S["Sum1"] = @benchmarkable sum1(1000) - S["Sum2"] = @benchmarkable sum2(1000) -end From 4e2ecbeb2e6479b25a9c7ee5441785f6e2216bb7 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 00:55:33 +0100 Subject: [PATCH 47/54] Fix typo --- src/intervals/arithmetic/power.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 39b918b97..0192156ff 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -13,7 +13,7 @@ Power mode type for `^`. Available mode types: - `:fast` (default): `x ^ y` is semantically equivalent to `fastpow(x, y)`, unless `isthininteger(y)` is true in which case it is semantically equivalent to -`pown(x, sup(y))`. +`fastpown(x, sup(y))`. - `:slow`: `x ^ y` is semantically equivalent to `pow(x, y)`, unless `isthininteger(y)` is true in which case it is semantically equivalent to `pown(x, sup(y))`. From 0c174864ec2f7cdd2c60b46bc847be5c97649f34 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 01:05:37 +0100 Subject: [PATCH 48/54] Export `fastpown` --- src/intervals/intervals.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intervals/intervals.jl b/src/intervals/intervals.jl index 5491d4d17..15587bf49 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -17,7 +17,7 @@ include("arithmetic/basic.jl") include("arithmetic/hyperbolic.jl") include("arithmetic/integer.jl") include("arithmetic/power.jl") - export pow, pown, rootn, fastpow + export pow, pown, rootn, fastpow, fastpown include("arithmetic/trigonometric.jl") # Other functions From 76e866cdade77ee2146b8fb76327affdb695d808 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 01:10:07 +0100 Subject: [PATCH 49/54] Fix `fastpown` --- docs/src/examples/pi.md | 4 ++-- src/intervals/arithmetic/power.jl | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/src/examples/pi.md b/docs/src/examples/pi.md index 025b2e387..341aecda8 100644 --- a/docs/src/examples/pi.md +++ b/docs/src/examples/pi.md @@ -26,7 +26,7 @@ function forward_sum(N) S_N = interval(0) for i ∈ 1:N - S_N += interval(1) / pown(interval(i), 2) + S_N += @interval Float64 1 / i ^ 2 end T_N = interval(1) / interval(N, N+1) @@ -54,7 +54,7 @@ function backward_sum(N) S_N = interval(0) for i ∈ N:-1:1 - S_N += interval(1) / pown(interval(i), 2) + S_N += @interval Float64 1 / i ^ 2 end T_N = interval(1) / interval(N, N+1) diff --git a/src/intervals/arithmetic/power.jl b/src/intervals/arithmetic/power.jl index 0192156ff..f5ba06e47 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -372,12 +372,16 @@ function fastpown(x::BareInterval{T}, n::Integer) where {T<:NumTypes} isempty_interval(x) && return x n == 0 && return one(BareInterval{T}) n == 1 && return x - (n < 0) & isthinzero(x) && return emptyinterval(BareInterval{T}) - return _positive_power_by_squaring(x, n) + if n < 0 + isthinzero(x) && return emptyinterval(BareInterval{T}) + return inv(fastpown(x, -n)) + else + return _positive_power_by_squaring(x, n) + end end function fastpown(x::Interval, n::Integer) - r = pown(bareinterval(x), n) + r = fastpown(bareinterval(x), n) d = min(decoration(x), decoration(r)) d = min(d, ifelse((n < 0) & in_interval(0, x), trv, d)) return _unsafe_interval(r, d, isguaranteed(x)) From 1ca3252993158b8f0542b5b133740f95dd2d92e3 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 01:16:56 +0100 Subject: [PATCH 50/54] Do not use `@interval` --- docs/src/examples/pi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/examples/pi.md b/docs/src/examples/pi.md index 341aecda8..cb999df25 100644 --- a/docs/src/examples/pi.md +++ b/docs/src/examples/pi.md @@ -26,7 +26,7 @@ function forward_sum(N) S_N = interval(0) for i ∈ 1:N - S_N += @interval Float64 1 / i ^ 2 + S_N += interval(1) / interval(i) ^ interval(2) end T_N = interval(1) / interval(N, N+1) @@ -54,7 +54,7 @@ function backward_sum(N) S_N = interval(0) for i ∈ N:-1:1 - S_N += @interval Float64 1 / i ^ 2 + S_N += interval(1) / interval(i) ^ interval(2) end T_N = interval(1) / interval(N, N+1) From 4e0fa87d9fe0ae7d9eaa52946fcf42d89f32d002 Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 01:26:20 +0100 Subject: [PATCH 51/54] Fix `@interval` with `Rational{Int}` bound type --- src/intervals/construction.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index 06dfc5a2d..fb030c3b6 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -633,11 +633,11 @@ macro interval(T, expr1, expr2) return :(interval($(esc(T)), $x, $y)) end -_wrap_interval(T::Symbol, x) = :(atomic($(esc(T)), $x)) +_wrap_interval(T, x) = :(atomic($(esc(T)), $x)) -_wrap_interval(T::Symbol, x::Symbol) = :(atomic($(esc(T)), $(esc(x)))) +_wrap_interval(T, x::Symbol) = :(atomic($(esc(T)), $(esc(x)))) -function _wrap_interval(T::Symbol, expr::Expr) +function _wrap_interval(T, expr::Expr) if expr.head ∈ (:(.), :ref, :macrocall) # a.i, or a[i], or BigInt return :(interval($(esc(T)), $(esc(expr)), $(esc(expr)))) end From ad18c97a1af41168c93d63fcf10b9953f060261f Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 01:52:01 +0100 Subject: [PATCH 52/54] Improve `parse` performance --- src/intervals/construction.jl | 5 ++++- src/intervals/parsing.jl | 31 ++++++++++--------------------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/intervals/construction.jl b/src/intervals/construction.jl index fb030c3b6..d075e3ffd 100644 --- a/src/intervals/construction.jl +++ b/src/intervals/construction.jl @@ -596,7 +596,10 @@ true """ atomic(::Type{T}, x::AbstractString) where {T<:NumTypes} = parse(Interval{T}, x) atomic(::Type{T}, x::Interval) where {T<:NumTypes} = interval(T, x) -atomic(::Type{T}, x::Number) where {T<:NumTypes} = atomic(T, string(x)) +function atomic(::Type{T}, x::Number) where {T<:NumTypes} + str = string(x) + return interval(T, _parse_num(T, str, RoundDown), _parse_num(T, str, RoundUp)) +end diff --git a/src/intervals/parsing.jl b/src/intervals/parsing.jl index ff22461a4..a45ac607a 100644 --- a/src/intervals/parsing.jl +++ b/src/intervals/parsing.jl @@ -235,36 +235,25 @@ end function _parse_num(::Type{T}, str::AbstractString, r::RoundingMode) where {T<:AbstractFloat} if '/' ∈ str - num, denum = parse.(BigInt, split(str, '/'; keepempty = false)) + num, denum = map(s -> parse(BigInt, s), eachsplit(str, '/'; keepempty = false)) return T(num//denum, r) else - return T(parse(BigFloat, str), r) - end -end - -function _parse_num(::Type{BigFloat}, str::AbstractString, r::RoundingMode) - if '/' ∈ str - num, denum = parse.(BigInt, split(str, '/'; keepempty = false)) - return BigFloat(num//denum, r) - else - return BigFloat(str, r) + return T(BigFloat(str, r), r) end end function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Down}) where {S<:Integer,T<:Rational{S}} '/' ∈ str && return parse(T, str) - x = parse(BigFloat, str) - y = prevfloat(x) - z = rationalize(S, y) - z < x && return z - return rationalize(S, prevfloat(y)) + x = BigFloat(str, RoundDown) + z = rationalize(S, x) + z ≤ x && return z + return rationalize(S, prevfloat(x)) end function _parse_num(::Type{T}, str::AbstractString, ::RoundingMode{:Up}) where {S<:Integer,T<:Rational{S}} '/' ∈ str && return parse(T, str) - x = parse(BigFloat, str) - y = nextfloat(x) - z = rationalize(S, y) - z > x && return z - return rationalize(S, nextfloat(y)) + x = BigFloat(str, RoundUp) + z = rationalize(S, x) + z ≥ x && return z + return rationalize(S, nextfloat(x)) end From da1b2617110de7a3c0448b439d21a48c583867ea Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 02:00:52 +0100 Subject: [PATCH 53/54] Add license of ITF1788 test suite --- test/itl/LICENSE.md | 201 ++++++++++++++++++++++++++++++++++++++++++++ test/runtests.jl | 4 +- 2 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 test/itl/LICENSE.md diff --git a/test/itl/LICENSE.md b/test/itl/LICENSE.md new file mode 100644 index 000000000..df0bb94ae --- /dev/null +++ b/test/itl/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/test/runtests.jl b/test/runtests.jl index 8e184ffb3..0c2188b7c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -14,7 +14,9 @@ open("tests_warning.log", "w") do io end # ITF1788 tests for f ∈ readdir("itl") - generate(f) + if !occursin("LICENSE", f) + generate(f) + end end for f ∈ readdir("ITF1788_tests"; join = true) @testset "$f" begin From 10c348e936e32626f88b9405bb28b4434c695d3b Mon Sep 17 00:00:00 2001 From: OlivierHnt <38465572+OlivierHnt@users.noreply.github.com> Date: Wed, 13 Dec 2023 09:43:45 +0100 Subject: [PATCH 54/54] Add `one`/`zero` method and propagates `isguaranteed` --- .../interval_operations/constants.jl | 43 ++++++++++++++----- src/intervals/real_interface.jl | 18 +++++--- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/src/intervals/interval_operations/constants.jl b/src/intervals/interval_operations/constants.jl index ecc541e7a..70d64ea0f 100644 --- a/src/intervals/interval_operations/constants.jl +++ b/src/intervals/interval_operations/constants.jl @@ -10,15 +10,23 @@ lower bound is larger than the upper one. Implement the `empty` function of the IEEE Standard 1788-2015 (Section 10.5.2). """ emptyinterval(::Type{BareInterval{T}}) where {T<:AbstractFloat} = _unsafe_bareinterval(T, convert(T, NaN), convert(T, NaN)) -emptyinterval(::Type{BareInterval{T}}) where {T<:Rational} = _unsafe_bareinterval(T, typemax(T), typemin(T)) # note: `using Base.unsafe_rational(Int, 0, 0)` as an equivalent to `NaN` for `Rational` # does not work well since most codes for `Rational` assume that the denominator cannot be zero # e.g. `iszero(Base.unsafe_rational(Int, 0, 0)) == true` +emptyinterval(::Type{BareInterval{T}}) where {T<:Rational} = _unsafe_bareinterval(T, typemax(T), typemin(T)) +emptyinterval(::BareInterval{T}) where {T<:NumTypes} = emptyinterval(BareInterval{T}) emptyinterval(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval(emptyinterval(BareInterval{T}), trv, true) -emptyinterval(::Type{T}=default_numtype()) where {T<:NumTypes} = emptyinterval(Interval{T}) -emptyinterval(::Type{Complex{T}}) where {T<:Real} = complex(emptyinterval(T), emptyinterval(T)) -emptyinterval(::T) where {T} = emptyinterval(T) +emptyinterval(x::Interval{T}) where {T} = _unsafe_interval(emptyinterval(BareInterval{T}), trv, isguaranteed(x)) + +emptyinterval(::Type{Complex{T}}) where {T<:Interval} = complex(emptyinterval(T), emptyinterval(T)) +emptyinterval(x::Complex{<:Interval}) = complex(emptyinterval(real(x)), emptyinterval(imag(x))) + +emptyinterval(::Type{T} = default_numtype()) where {T<:NumTypes} = emptyinterval(Interval{T}) +emptyinterval(::T) where {T<:NumTypes} = emptyinterval(T) + +emptyinterval(::Type{Complex{T}}) where {T<:NumTypes} = complex(emptyinterval(T), emptyinterval(T)) +emptyinterval(::Complex{T}) where {T<:NumTypes} = emptyinterval(Complex{T}) """ entireinterval(T=default_numtype()) @@ -33,11 +41,19 @@ plane if `T` is complex. Implement the `entire` function of the IEEE Standard 1788-2015 (Section 10.5.2). """ entireinterval(::Type{BareInterval{T}}) where {T<:NumTypes} = _unsafe_bareinterval(T, typemin(T), typemax(T)) +entireinterval(::BareInterval{T}) where {T<:NumTypes} = entireinterval(BareInterval{T}) entireinterval(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval(entireinterval(BareInterval{T}), dac, true) -entireinterval(::Type{T}=default_numtype()) where {T<:NumTypes} = entireinterval(Interval{T}) -entireinterval(::Type{Complex{T}}) where {T<:Real} = complex(entireinterval(T), entireinterval(T)) -entireinterval(::T) where {T} = entireinterval(T) +entireinterval(x::Interval{T}) where {T} = _unsafe_interval(entireinterval(BareInterval{T}), dac, isguaranteed(x)) + +entireinterval(::Type{Complex{T}}) where {T<:Interval} = complex(entireinterval(T), entireinterval(T)) +entireinterval(x::Complex{<:Interval}) = complex(entireinterval(real(x)), entireinterval(imag(x))) + +entireinterval(::Type{T} = default_numtype()) where {T<:NumTypes} = entireinterval(Interval{T}) +entireinterval(::T) where {T<:NumTypes} = entireinterval(T) + +entireinterval(::Type{Complex{T}}) where {T<:NumTypes} = complex(entireinterval(T), entireinterval(T)) +entireinterval(::Complex{T}) where {T<:NumTypes} = entireinterval(Complex{T}) """ nai(T=default_numtype()) @@ -45,6 +61,13 @@ entireinterval(::T) where {T} = entireinterval(T) Create an NaI (Not an Interval). """ nai(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval(emptyinterval(BareInterval{T}), ill, true) -nai(::Type{T}=default_numtype()) where {T<:NumTypes} = nai(Interval{T}) -nai(::Type{Complex{T}}) where {T<:Real} = complex(nai(T), nai(T)) -nai(::T) where {T} = nai(T) +nai(x::Interval{T}) where {T} = _unsafe_interval(emptyinterval(BareInterval{T}), ill, isguaranteed(x)) + +nai(::Type{Complex{T}}) where {T<:Interval} = complex(nai(T), nai(T)) +nai(x::Complex{<:Interval}) = complex(nai(real(x)), nai(imag(x))) + +nai(::Type{T} = default_numtype()) where {T<:NumTypes} = nai(Interval{T}) +nai(::T) where {T<:NumTypes} = nai(T) + +nai(::Type{Complex{T}}) where {T<:NumTypes} = complex(nai(T), nai(T)) +nai(::Complex{T}) where {T<:NumTypes} = nai(Complex{T}) diff --git a/src/intervals/real_interface.jl b/src/intervals/real_interface.jl index 9f5d7eceb..86661b239 100644 --- a/src/intervals/real_interface.jl +++ b/src/intervals/real_interface.jl @@ -30,10 +30,14 @@ end for f ∈ (:zero, :one) @eval begin - Base.$f(::T) where {T<:BareInterval} = $f(T) Base.$f(::Type{BareInterval{T}}) where {T<:NumTypes} = _unsafe_bareinterval(T, $f(T), $f(T)) - Base.$f(::T) where {T<:Interval} = $f(T) + Base.$f(::BareInterval{T}) where {T<:NumTypes} = $f(BareInterval{T}) + Base.$f(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval($f(BareInterval{T}), com, true) + Base.$f(x::Interval{T}) where {T<:NumTypes} = _unsafe_interval($f(BareInterval{T}), com, isguaranteed(x)) + + Base.$f(::Type{Complex{Interval{T}}}) where {T<:NumTypes} = complex($f(Interval{T}), $f(Interval{T})) + Base.$f(x::Complex{<:Interval}) = complex($f(real(x)), $f(imag(x))) end end @@ -47,17 +51,17 @@ Base.typemax(::Type{BareInterval{T}}) where {T<:NumTypes} = Base.typemax(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval(typemax(BareInterval{T}), dac, true) -function Base.eps(a::BareInterval{T}) where {T<:NumTypes} - x = max(eps(inf(a)), eps(sup(a))) - return _unsafe_bareinterval(T, x, x) -end -Base.eps(x::Interval) = _unsafe_interval(eps(bareinterval(x)), com, true) function Base.eps(::Type{BareInterval{T}}) where {T<:NumTypes} x = eps(T) return _unsafe_bareinterval(T, x, x) end +function Base.eps(x::BareInterval{T}) where {T<:NumTypes} + y = max(eps(inf(x)), eps(sup(x))) + return _unsafe_bareinterval(T, y, y) +end Base.eps(::Type{Interval{T}}) where {T<:NumTypes} = _unsafe_interval(eps(BareInterval{T}), com, true) +Base.eps(x::Interval) = _unsafe_interval(eps(bareinterval(x)), com, isguaranteed(x)) """ hash(x::BareInterval, h::UInt)