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: diff --git a/LICENSE.md b/LICENSE.md index afa186ed8..7724a1ffc 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,7 @@ -Copyright (c) David P. Sanders, Luis Benet, and other contributors: +MIT License -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: @@ -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..0f571bd9e 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`; the `Interval` type is a subtype of `Real` -## v0.15 +- constructors: + - `@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 -### 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: + - fixed 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 (e.g. `isequal_interval`, `issubset_interval`, etc.) -### 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..df707b3a1 100644 --- a/Project.toml +++ b/Project.toml @@ -5,16 +5,16 @@ 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] +IntervalArithmeticDiffRulesExt = "DiffRules" [compat] -CRlibm = "0.7, 0.8, 1" -EnumX = "1" -FastRounding = "0.2, 0.3" +CRlibm = "1" +DiffRules = "1" RoundingEmulator = "0.2" -SetRounding = "0.2" -julia = "1.8" +julia = "1.9" 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/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/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 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..cb999df25 --- /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) / interval(i) ^ interval(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) / interval(i) ^ interval(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/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 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..c0cb489c0 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}` 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/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/IntervalArithmeticDiffRulesExt.jl b/ext/IntervalArithmeticDiffRulesExt.jl new file mode 100644 index 000000000..f87454cb1 --- /dev/null +++ b/ext/IntervalArithmeticDiffRulesExt.jl @@ -0,0 +1,12 @@ +module IntervalArithmeticDiffRulesExt + +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..ff00848b5 100644 --- a/src/IntervalArithmetic.jl +++ b/src/IntervalArithmetic.jl @@ -1,64 +1,25 @@ module IntervalArithmetic import CRlibm -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 +import Base.MPFR 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 - # 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") +# convenient alias +const RealOrComplexI{T} = Union{Interval{T},Complex{Interval{T}}} +const ComplexI{T} = Complex{Interval{T}} + export RealOrComplexI, ComplexI + end diff --git a/src/display.jl b/src/display.jl index db411583d..8f6d82e5b 100644 --- a/src/display.jl +++ b/src/display.jl @@ -1,10 +1,10 @@ -mutable struct DisplayParameters - format :: Symbol +mutable struct DisplayOptions + format :: Symbol decorations :: Bool - sigdigits :: Int + 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,90 +15,101 @@ function Base.show(io::IO, ::MIME"text/plain", params::DisplayParameters) end end -const display_params = DisplayParameters(:standard, true, 6) # default +const display_options = DisplayOptions(: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> 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) -Display parameters: +Display options: - format: full - decorations: true - significant digits: 6 (ignored) julia> x -Interval(0.09999999999999999, 0.30000000000000004) +Interval{Float64}(0.1, 0.3, com) -julia> setdisplay(:standard; sigdigits = 3) -Display parameters: - - format: standard +julia> setdisplay(:infsup; sigdigits = 3) +Display options: + - format: infsup - decorations: true - significant digits: 3 +julia> x +[0.0999, 0.301]_com + +julia> setdisplay(; decorations = false) +Display options: + - format: infsup + - decorations: false + - significant digits: 3 + 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 ∉ (: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 - 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 -show(io::IO, ::MIME"text/plain", a::Union{BareInterval,Interval,Complex{<:Interval}}) = - print(io, _str_repr(a, display_params.format)) +Base.show(io::IO, ::MIME"text/plain", a::Union{BareInterval,Interval,Complex{<:Interval}}) = + print(io, _str_repr(a, display_options.format)) -function show(io::IO, a::Union{BareInterval,Interval,Complex{<:Interval}}) - get(io, :compact, false) && return print(io, _str_repr(a, display_params.format)) +function Base.show(io::IO, a::Union{BareInterval,Interval,Complex{<:Interval}}) + get(io, :compact, false) && return print(io, _str_repr(a, display_options.format)) return print(io, _str_repr(a, :full)) 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,11 +119,11 @@ 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 + display_options.decorations || return str_interval if format === :midpoint && str_interval != "∅" str_interval = string('(', str_interval, ')') end @@ -122,57 +133,57 @@ 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 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 != "∅" 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)") + format === :full && return string("Interval{", BigFloat, "}(", 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 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 - display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") + elseif format === :infsup + 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 `:standard`, `:midpoint` or `:full` - display_params.decorations && return string(_str_repr(real(x), format), " + (", _str_repr(imag(x), format), ")im") + # `format` is either `:infsup`, `:midpoint` or `:full` + 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 # 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 + sigdigits = display_options.sigdigits if format === :full return string(a.lo, ", ", sup(a)) elseif format === :midpoint @@ -189,10 +200,10 @@ 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 + sigdigits = display_options.sigdigits if format === :full lo = replace(string(a.lo, "f0"), "NaNf0" => "NaN32", "Inff0" => "Inf32") if contains(lo, 'e') @@ -231,10 +242,10 @@ 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 + 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") @@ -252,7 +263,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..914828309 100644 --- a/src/intervals/arithmetic/absmax.jl +++ b/src/intervals/arithmetic/absmax.jl @@ -3,47 +3,55 @@ # 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)) + +Base.abs(x::Complex{<:Interval}) = hypot(real(x), imag(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 + +function Base.abs2(x::Interval) + r = abs2(bareinterval(x)) + d = min(decoration(x), decoration(r)) + return _unsafe_interval(r, d, isguaranteed(x)) +end -abs2(a::Interval) = _unsafe_interval(abs2(bareinterval(a)), decoration(a), isguaranteed(a)) +Base.abs2(x::Complex{<:Interval}) = pown(real(x), 2) + pown(imag(x), 2) 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..86f1a6405 100644 --- a/src/intervals/arithmetic/basic.jl +++ b/src/intervals/arithmetic/basic.jl @@ -2,277 +2,243 @@ # 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) -end -*(a::BareInterval, b::BareInterval) = *(promote(a, b)...) - -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::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(_unbounded_mul, x, y) +end +Base.:*(x::BareInterval, y::BareInterval) = *(promote(x, y)...) + +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 # 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) -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)) )) + return _mul_round(x, y, r) +end + +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 """ - 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} - 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}) 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 -""" - //(a::BareInterval, b::BareInterval) - //(a::Interval, b::Interval) +Base.:\(x::BareInterval, y::BareInterval) = /(y, x) -Implement the rational division; this is semantically equivalent to `a / b`. """ -//(a::BareInterval, b::BareInterval) = a / b # not in the IEEE Standard 1788-2015 - -//(a::Interval, b::Interval) = /(a, b) + muladd(x::BareInterval, y::BareInterval z::BareInterval) + muladd(x::Interval, y::Interval z::Interval) +Implement the combined multiply-add; this is semantically equivalent to `x * y + z`. """ - muladd(a::BareInterval, b::BareInterval c::BareInterval) - muladd(a::Interval, b::Interval c::Interval) +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)...) -Implement the combined multiply-add; this is semantically equivalent to `a * b + c` -""" -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)...) - -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 - - if isentire_interval(a) - isthinzero(b) && return c - return entireinterval(BareInterval{T}) - elseif isentire_interval(b) - isthinzero(a) && return c - 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)) - 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)) - 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{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 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)) + return @round(T, sqrt(inf(x)), sqrt(sup(x))) 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..b559b9e98 100644 --- a/src/intervals/arithmetic/hyperbolic.jl +++ b/src/intervals/arithmetic/hyperbolic.jl @@ -2,67 +2,54 @@ # 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}) - isempty_interval(a) && return a - return BareInterval{Float64}($f(_bigequiv(a))) - end -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} - 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 $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 """ - 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} - 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 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 """ - 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} - 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 @@ -74,23 +61,23 @@ function coth(a::BareInterval{T}) where {T<:NumTypes} end end -function 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 """ - 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} - 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 @@ -100,22 +87,22 @@ function sech(a::BareInterval{T}) where {T<:NumTypes} end end -function 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 """ - 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} - 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 @@ -127,72 +114,71 @@ function csch(a::BareInterval{T}) where {T<:NumTypes} end end -function 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 """ - 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(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 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 """ - 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(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 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(isstrictsubset_interval(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 """ - 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} - 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 @@ -206,11 +192,11 @@ function acoth(a::BareInterval{T}) where {T<:NumTypes} end end -function 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/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..f5ba06e47 100644 --- a/src/intervals/arithmetic/power.jl +++ b/src/intervals/arithmetic/power.jl @@ -1,412 +1,444 @@ # 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 `^` +""" + PowerMode -# bare intervals +Power mode type for `^`. -# 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 +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 +`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))`. +""" +struct PowerMode{T} end -nthpow(x::BareInterval{T}, n::Integer) where {T<:NumTypes} = BareInterval{T}(nthpow(_bigequiv(x), n)) +power_mode() = PowerMode{:fast}() -function nthpow(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}) +""" + ^(x::BareInterval, y::BareInterval) + ^(x::Interval, y::Interval) - 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) +Compute the power of the positive real part of `x` by `y`. This function is not +in the IEEE Standard 1788-2015. Its behaviour depend on the current +[`PowerMode`](@ref). - 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 +See also: [`pow`](@ref) and [`pown`](@ref). - 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 +# Examples - 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 +```jldoctest +julia> setdisplay(:full); -""" - ^(x::BareInterval, y::BareInterval) +julia> bareinterval(2, 3) ^ bareinterval(2) +BareInterval{Float64}(4.0, 9.0) -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) +julia> interval(-1, 1) ^ interval(3) +Interval{Float64}(-1.0, 1.0, com) -^(x::BareInterval, y::BareInterval) = ^(promote(x, y)...) +julia> interval(-1, 1) ^ interval(-3) +Interval{Float64}(-Inf, Inf, trv) +``` +""" +function Base.:^(x::BareInterval, y::BareInterval) + isthininteger(y) && return _select_pown(power_mode(), x, Integer(sup(y))) + return _select_pow(power_mode(), x, y) +end -function ^(x::BareInterval{BigFloat}, y::BareInterval) - isempty_interval(y) && return y - domain = _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat)) - x = intersect_interval(x, domain) - isempty_interval(x) && return x - return hull(_pow(x, inf(y)), _pow(x, sup(y))) +function Base.:^(x::Interval, y::Interval) + isthininteger(y) && return _select_pown(power_mode(), x, Integer(sup(y))) + return _select_pow(power_mode(), x, 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 +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)) -_pow(a::BareInterval{BigFloat}, b::AbstractFloat) = _pow(a, big(b)) +# 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 -function _pow(a::BareInterval{BigFloat}, x::BigFloat) - domain = _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat)) +# helper functions for power - if isthinzero(a) - x > 0 && return zero(BareInterval{BigFloat}) - return emptyinterval(BareInterval{BigFloat}) - end +_select_pow(::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) - isinteger(x) && return nthpow(a, Integer(x)) - x == 0.5 && return sqrt(a) +""" + pow(x, y) - a = intersect_interval(a, domain) - isempty_interval(a) && return a +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))`. - M = typemax(BigFloat) - MM = typemax(BareInterval{BigFloat}) +Implement the `pow` function of the IEEE Standard 1788-2015 (Table 9.1). - lo = @round(BigFloat, inf(a)^x, inf(a)^x) - lo = (inf(lo) == M) ? MM : lo +See also: [`pown`](@ref). - lo1 = @round(BigFloat, inf(a)^x, inf(a)^x) - lo1 = (inf(lo1) == M) ? MM : lo1 +# Examples - hi = @round(BigFloat, sup(a)^x, sup(a)^x) - hi = (inf(hi) == M) ? MM : hi +```jldoctest +julia> setdisplay(:full); - hi1 = @round(BigFloat, sup(a)^x, sup(a)^x) - hi1 = (inf(hi1) == M) ? MM : hi1 +julia> pow(bareinterval(2, 3), bareinterval(2)) +BareInterval{Float64}(4.0, 9.0) - lo = hull(lo, lo1) - hi = hull(hi, hi1) +julia> pow(interval(-1, 1), interval(3)) +Interval{Float64}(0.0, 1.0, trv) - return hull(lo, hi) +julia> pow(interval(-1, 1), interval(-3)) +Interval{Float64}(1.0, Inf, trv) +``` +""" +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) + isempty_interval(x) && return x + isthin(y) && return _pow(x, sup(y)) + return hull(_pow(x, inf(y)), _pow(x, sup(y))) +end +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) + isempty_interval(x) && return x + isthin(y) && return _pow(x, sup(y)) + return hull(_pow(x, inf(y)), _pow(x, sup(y))) +end +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 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)) + 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 _pow(a::BareInterval{BigFloat}, x::Rational{T}) where {T<:Integer} - p = x.num - q = x.den - - isempty_interval(a) && return a - iszero(x) && return one(a) - x < 0 && return inv(_pow(a, -x)) - - if isthinzero(a) - x > zero(x) && return zero(a) - return emptyinterval(a) - end - - isinteger(x) && return nthpow(a, T(x)) - - x == (1//2) && return sqrt(a) +pow(n::Integer, y::BareInterval) = pow(n//one(n), y) +pow(x::BareInterval, n::Integer) = pow(x, n//one(n)) +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) + by = bareinterval(y) + 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 - alo, ahi = bounds(a) +pow(n::Integer, y::Interval) = pow(n//one(n), y) +pow(x::Interval, n::Integer) = pow(x, n//one(n)) +pow(x::Real, y::Interval) = pow(interval(x), y) +pow(x::Interval, y::Real) = pow(x, interval(y)) - if ahi < 0 - return emptyinterval(BareInterval{BigFloat}) - end +# helper functions for power - if alo < 0 && ahi ≥ 0 - a = intersect_interval(a, _unsafe_bareinterval(BigFloat, zero(BigFloat), typemax(BigFloat))) +function _pow(x::BareInterval{T}, y::T) where {T<:NumTypes} + # 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 - - b = nthroot(a, q) - - p == 1 && return b - - return nthpow(b, p) end -for f ∈ (:exp, :expm1) - @eval begin - function $f(a::BareInterval{T}) where {T<:NumTypes} - isempty_interval(a) && return a - return @round( T, $f(inf(a)), $f(sup(a)) ) - end +function _pow(x::BareInterval{T}, y::Rational{S}) where {T<:NumTypes,S<:Integer} + # 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 end -for f ∈ (:exp2, :exp10, :cbrt) - @eval begin - $f(a::BareInterval{T}) where {T<:NumTypes} = BareInterval{T}($f(_bigequiv(a))) # no CRlibm version +""" + pown(x, n) - function $f(a::BareInterval{BigFloat}) - isempty_interval(a) && return a - return @round( BigFloat, $f(inf(a)), $f(sup(a)) ) - end - end -end +Implement the `pown` function of the IEEE Standard 1788-2015 (Table 9.1). -for f ∈ (:log, :log2, :log10) - @eval function $f(a::BareInterval{T}) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, zero(T), typemax(T)) - a = intersect_interval(a, domain) +# Examples - (isempty_interval(a) || sup(a) ≤ 0) && return emptyinterval(BareInterval{T}) +```jldoctest +julia> setdisplay(:full); - return @round( T, $f(inf(a)), $f(sup(a)) ) - end -end +julia> pown(bareinterval(2, 3), 2) +BareInterval{Float64}(4.0, 9.0) -function log1p(a::BareInterval{T}) where {T<:NumTypes} - domain = _unsafe_bareinterval(T, -one(T), typemax(T)) - a = intersect_interval(a, domain) +julia> pown(interval(-1, 1), 3) +Interval{Float64}(-1.0, 1.0, com) - (isempty_interval(a) || sup(a) ≤ -1) && return emptyinterval(BareInterval{T}) +julia> pown(interval(-1, 1), -3) +Interval{Float64}(-Inf, Inf, trv) +``` +""" +function pown(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}) + if isodd(n) + isentire_interval(x) && return x + if n > 0 + 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(T, sup(x)^n, typemax(T)) + return @round(T, sup(x)^n, inf(x)^n) + elseif sup(x) ≤ 0 + sup(x) == 0 && return @round(T, typemin(T), inf(x)^n) + return @round(T, sup(x)^n, inf(x)^n) + else + return entireinterval(BareInterval{T}) + end + end + else + if n > 0 + if inf(x) ≥ 0 + return @round(T, inf(x)^n, sup(x)^n) + elseif sup(x) ≤ 0 + return @round(T, sup(x)^n, inf(x)^n) + else + return @round(T, mig(x)^n, mag(x)^n) + end + else + if inf(x) ≥ 0 + return @round(T, sup(x)^n, inf(x)^n) + elseif sup(x) ≤ 0 + return @round(T, inf(x)^n, sup(x)^n) + else + return @round(T, mag(x)^n, mig(x)^n) + end + end + end +end - @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 """ - nthroot(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 nthroot(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)) - - 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 - 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) -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 inv(rootn(x, -n)) -function nthroot(a::BareInterval{T}, n::Integer) where {T<:NumTypes} - n == 1 && return a - n == 2 && return sqrt(a) + domain = _unsafe_bareinterval(T, ifelse(iseven(n), zero(T), typemin(T)), typemax(T)) + x = intersect_interval(x, domain) + isempty_interval(x) && return x - abig = _bigequiv(a) - if n < 0 - issubnormal(mag(a)) && return inv(nthroot(a, -n)) - return BareInterval{T}(inv(nthroot(abig, -n))) - end + return @round(T, rootn(inf(x), n), rootn(sup(x), n)) +end - b = nthroot(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; this relies on `^` internally. -Compute the hypotenuse. +Implement the `hypot` function of the IEEE Standard 1788-2015 (Table 10.5). """ -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)) + +Base.hypot(x::Interval, y::Interval) = sqrt(pown(x, 2) + pown(y, 2)) """ - fastpow(x::BareInterval, n::Integer) + fastpow(x, y) -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 `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 + 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 + if sup(x) == 0 + sup(y) > 0 && return x # zero(x) + return emptyinterval(BareInterval{T}) + else + return exp(y * log(x)) + end +end + 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(_unsafe_bareinterval(T, xmig, xmig), n), - _positive_power_by_squaring(_unsafe_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(_unsafe_bareinterval(T, xinf, xinf), n), - _positive_power_by_squaring(_unsafe_bareinterval(T, xsup, xsup), n)) + return _positive_power_by_squaring(x, n) end 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)) +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) + by = bareinterval(y) + r = fastpow(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 -fastpow(x::BareInterval{T}, y::S) where {T<:NumTypes,S<:Real} = - fastpow(x, bareinterval(promote_numtype(T, S), y)) +fastpow(x::Interval, y::Real) = fastpow(x, interval(y)) +# 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 + 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 + y *= x + end + return y +end -# decorated intervals +""" + fastpown(x, n) -# 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 +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 + 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 nthpow(x::Interval, n::Integer) - r = nthpow(bareinterval(x), n) +function fastpown(x::Interval, n::Integer) + r = fastpown(bareinterval(x), n) d = min(decoration(x), decoration(r)) - d = min(d, ifelse(n < 0 && in_interval(0, x), trv, d)) + 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) - 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) - end - return _unsafe_interval(r, trv, t) -end -^(x::Interval, y::Real) = ^(promote(x, y)...) -^(x::Real, y::Interval) = ^(promote(x, y)...) -# needed to resolve ambiguities -^(x::Interval, n::Integer) = x ^ (n//1) -for S ∈ (:Rational, :AbstractFloat) - @eval function ^(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) +# + +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 - return _unsafe_interval(r, min(d, trv), false) - end -end -for f ∈ (:exp, :exp2, :exp10, :expm1, :cbrt) - @eval function $f(xx::Interval) - x = bareinterval(xx) - r = $f(x) - d = min(decoration(r), decoration(xx)) - return _unsafe_interval(r, d, isguaranteed(xx)) + 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 ∈ (:log, :log2, :log10) - @eval function $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)) - return _unsafe_interval(r, d, isguaranteed(a)) + @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 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 end -function log1p(a::Interval{T}) where {T<:NumTypes} +function Base.log1p(x::BareInterval{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)) - return _unsafe_interval(r, d, isguaranteed(a)) -end - -function nthroot(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) - 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) - -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) - end - return _unsafe_interval(r, trv, 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 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::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 diff --git a/src/intervals/arithmetic/trigonometric.jl b/src/intervals/arithmetic/trigonometric.jl index b2a15137d..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 -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(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) -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(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) -sincospi(a::BareInterval) = (sinpi(a), cospi(a)) -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,12 +62,12 @@ 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). """ -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 +111,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,22 +152,19 @@ 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, π)) - """ - cos(a::BareInterval) - cos(a::Interval) + cos(::BareInterval) + cos(::Interval) 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 +206,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,22 +247,19 @@ function cos(a::BareInterval{Float64}) end end -function 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 -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, π)) - """ - tan(a::BareInterval) - tan(a::Interval) + tan(::BareInterval) + tan(::Interval) 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,14 +285,14 @@ 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}) 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) @@ -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)) @@ -317,12 +317,12 @@ function 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). """ -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,53 @@ function cot(a::BareInterval{T}) where {T<:NumTypes} end end -cot(a::BareInterval{Float64}) = atomic(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). """ -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 +438,47 @@ function sec(a::BareInterval{T}) where {T<:NumTypes} end end -sec(a::BareInterval{Float64}) = atomic(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). """ -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,15 +521,58 @@ function csc(a::BareInterval{T}) where {T<:NumTypes} end end -csc(a::BareInterval{Float64}) = atomic(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). """ -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 +580,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) @@ -475,12 +590,12 @@ function 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). """ -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 +603,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) @@ -498,114 +613,112 @@ function 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 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) - 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 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 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 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(::BareInterval) + acot(::Interval) Implement the `acot` function of the IEEE Standard 1788-2015 (Table 9.1). """ -function 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))))) +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/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/src/intervals/construction.jl b/src/intervals/construction.jl index 11add2562..d075e3ffd 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; 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}} = _unsafe_bareinterval(T, T(a), T(b)) @@ -151,24 +160,25 @@ 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) 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...) @@ -216,45 +227,10 @@ 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) -""" - 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,186 +294,233 @@ 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::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 # -function interval(::Type{T}, a, b, d::Decoration; format::Symbol = :standard) where {T<:NumTypes} - format === :standard && return _interval_standard(T, a, b, d) - format === :midpoint && return _interval_midpoint(T, a, b, d) - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) -end -interval(a, b, d::Decoration; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(b)), a, b, d; format = format) +""" + interval([T<:Union{Rational,AbstractFloat}=default_numtype()], a, b, d = com) -function interval(::Type{T}, a, b; format::Symbol = :standard) where {T<:NumTypes} - format === :standard && return _interval_standard(T, a, b) - format === :midpoint && return _interval_midpoint(T, a, b) - return throw(ArgumentError("`format` must be `:standard` or `:midpoint`.")) -end -interval(a, b; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(b)), a, b; format = format) +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. -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`.")) -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`.")) -end -interval(a, d::Decoration; format::Symbol = :standard) = interval(promote_numtype(numtype(a), numtype(a)), a, d; format = format) +!!! 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) -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`.")) +julia> interval(1, π) +Interval{Float64}(1.0, 3.1415926535897936, com) + +julia> interval(BigFloat, 1, π) +Interval{BigFloat}(1.0, 3.141592653589793238462643383279502884197169399375105820974944592307816406286233, com) +``` +""" +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 -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`.")) +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, 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 -interval(a; format::Symbol = :standard) = 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 = :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 = 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 """ - _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) +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 -_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)) +# 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_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))) +_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), 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), imag(b), d)) # 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`. +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) -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)) +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 -_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} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) +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} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) +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} - isthinzero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) +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} - iszero(imag(r)) || return throw(DomainError(r, "imaginary part must be zero.")) +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 @@ -524,16 +552,115 @@ 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 +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) 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 + +""" + 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) +Interval{Float64}(0.09999999999999999, 0.1, com) + +julia> in_interval(1//10, IntervalArithmetic.atomic(Float64, 0.1)) +true + +julia> IntervalArithmetic.atomic(Float64, 0.3) +Interval{Float64}(0.3, 0.30000000000000004, com) + +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) +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 + + + + + +# 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 @interval Float64 sin(1) +:(sin(IntervalArithmetic.atomic(Float64, 1))) + +julia> @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, x) = :(atomic($(esc(T)), $x)) + +_wrap_interval(T, x::Symbol) = :(atomic($(esc(T)), $(esc(x)))) + +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 + + 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/flavor.jl b/src/intervals/flavor.jl new file mode 100644 index 000000000..3f0168319 --- /dev/null +++ b/src/intervals/flavor.jl @@ -0,0 +1,97 @@ +""" + Flavor{F} + +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)) +┌ 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)) +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() + +Return the default flavor used to handle edge cases. +""" +default_flavor() = Flavor{:set_based}() + +""" + zero_times_infinity([F::Flavor=default_flavor()], T<:NumTypes) + +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([F::Flavor=default_flavor()], x::BareInterval) + +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([F::Flavor=default_flavor()], a::Real, b::Real) + +For the given flavor `F`, test whether ``[a, b]`` is a valid interval. +""" +is_valid_interval(::Flavor{:set_based}, a::Real, b::Real) = b - a ≥ 0 + +is_valid_interval(a::Real, b::Real) = is_valid_interval(default_flavor(), a, b) diff --git a/src/intervals/flavors.jl b/src/intervals/flavors.jl deleted file mode 100644 index 525267236..000000000 --- a/src/intervals/flavors.jl +++ /dev/null @@ -1,71 +0,0 @@ -""" - 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` -""" -struct Flavor{F} end - -default_flavor() = Flavor{:set_based}() - -# :set_based - -""" - zero_times_infinity(::Flavor, ::Type{T}) - -Return the result of zero times positive infinity for the given flavor -and number 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) - -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(::Flavor{:set_based}, ::BareInterval) = false - -contains_infinity(x::BareInterval) = contains_infinity(default_flavor(), x) - -""" - is_valid_interval(a, b) - -Check if `(a, b)` constitute 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(a) = is_valid_interval(a, a) diff --git a/src/intervals/interval_operations/bisect.jl b/src/intervals/interval_operations/bisect.jl index ddac0aefd..46c2281ee 100644 --- a/src/intervals/interval_operations/bisect.jl +++ b/src/intervals/interval_operations/bisect.jl @@ -1,29 +1,78 @@ """ - 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.")) - m = scaled_mid(x, α) +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.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₁)), min(decoration(x), decoration(r₂)) 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 + +# 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::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) @@ -37,8 +86,34 @@ 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 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..0457b550a 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,117 @@ 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)) + +isequal_interval(x) = Base.Fix2(isequal_interval, x) + """ - 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). +""" +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::BareInterval, y::BareInterval) - isweakless(x::Interval, y::Interval) + 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 +136,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 +190,62 @@ 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)) + +in_interval(x) = Base.Fix2(in_interval, x) """ - 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 +256,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 +270,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 +287,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 +320,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 +334,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 +348,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 +362,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..70d64ea0f 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. @@ -10,37 +10,64 @@ 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 + entireinterval(T=default_numtype()) + +Create an interval representing the entire real line, or the entire complex +plane if `T` is complex. -Create an interval representing the entire real line. Depending on the flavor, -`-Inf` and `Inf` may or may not be considerd inside this interval. +!!! 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). """ 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 + 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}) -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/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..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 @@ -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) @@ -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 @@ -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) @@ -58,8 +58,8 @@ sup(x::Real) = 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)) @@ -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) @@ -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} @@ -121,63 +119,9 @@ 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))) -""" - 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) = x -scaled_mid(x::Complex, α::Real) = complex(scaled_mid(real(x), α), scaled_mid(imag(x), α)) - """ diam(x) @@ -187,15 +131,15 @@ 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) - 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} @@ -207,7 +151,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))) """ @@ -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) @@ -236,7 +180,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))) """ @@ -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) @@ -264,7 +208,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 +238,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 +270,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..023fa90fb 100644 --- a/src/intervals/interval_operations/set_operations.jl +++ b/src/intervals/interval_operations/set_operations.jl @@ -1,99 +1,136 @@ # 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)...) + +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 +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))) + """ - hull(a, 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`. -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`. +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). """ -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))) +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)...) -""" - setdiff_interval(x::BareInterval, y::BareInterval) +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 -Calculate the set difference `x ∖ y`, i.e. the set of values -that are inside the interval `x` but not inside `y`. +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))) -Returns an array of intervals. -The array may: +""" + interiordiff(x, y) -- be empty if `x ⊆ y`; -- contain a single interval, if `y` overlaps `x` -- contain two intervals, if `y` is strictly contained within `x`. +Remove the interior of `y` from `x`. If `x` and `y` are vectors, then they are +treated as multi-dimensional intervals. """ -function setdiff_interval(x::BareInterval{T}, y::BareInterval{T}) where {T<:NumTypes} +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] inter = intersect_interval(x, y) + 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)...) - isempty_interval(inter) && return [x] - isequal_interval(inter, x) && return BareInterval{T}[] # x is subset of y; setdiff is empty - - 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))] +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")) + T = promote_type(typeof(x), typeof(y)) -# decorated intervals + any(t -> isdisjoint_interval(t[1], t[2]), zip(x, y)) && return T[x] -for f ∈ (:intersect_interval, :hull) - @eval begin - """ - $($f)(x, y) + result_list = Vector{T}(undef, 2*N) + offset = 0 + x_bis = copy(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) + @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..15587bf49 100644 --- a/src/intervals/intervals.jl +++ b/src/intervals/intervals.jl @@ -1,14 +1,15 @@ # Construction and composability with numbers include("construction.jl") + export BareInterval, bareinterval, decoration, ill, trv, def, dac, com, + Interval, interval, isguaranteed, @interval, @I_str include("parsing.jl") include("real_interface.jl") # Rounding include("rounding.jl") -include("rounding_macros.jl") -# Flavors -include("flavors.jl") +# Flavor +include("flavor.jl") # Arithmetic include("arithmetic/absmax.jl") @@ -16,17 +17,26 @@ include("arithmetic/basic.jl") include("arithmetic/hyperbolic.jl") include("arithmetic/integer.jl") include("arithmetic/power.jl") + export pow, pown, rootn, fastpow, fastpown 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, 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..a45ac607a 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,38 +217,43 @@ 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 +end + +function _parse_num(::Type{T}, str::AbstractString, r::RoundingMode) where {T<:AbstractFloat} + if '/' ∈ str + num, denum = map(s -> parse(BigInt, s), eachsplit(str, '/'; keepempty = false)) + return T(num//denum, r) + else + return T(BigFloat(str, r), r) 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, ::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)) -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) + x = BigFloat(str, RoundUp) + z = rationalize(S, x) + z ≥ x && return z + return rationalize(S, nextfloat(x)) end diff --git a/src/intervals/real_interface.jl b/src/intervals/real_interface.jl index 3d4cccd90..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) @@ -118,8 +122,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..6ab666829 100644 --- a/src/intervals/rounding.jl +++ b/src/intervals/rounding.jl @@ -1,267 +1,282 @@ -#= 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: +- `: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). """ 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 -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) - 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, ::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}} = + 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 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: -+(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) - -## 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) -end - -function sqrt(a::T, rounding_mode::RoundingMode) where {T<:Rational} - setrounding(float(T), rounding_mode) do - return sqrt(float(a)) +# + +_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 + +_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) + return setrounding(BigFloat, r) do + return ^(bigx, bigy) end end - - -for f in (:exp2, :exp10, :cbrt) - @eval function ($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::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}) = + 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 - - -rounding_directions = [ - (:down, RoundingMode{:Down}, prevfloat), - (:up, RoundingMode{:Up}, nextfloat) -] - -for (dir, RoundingDirection, outfloat) in 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) - return FastRounding.$(Symbol(f, "_round"))(a, b, $RoundingDirection()) - end - - @eval function $op( - ::IntervalRounding{:tight}, a::T, b::T, - ::$RoundingDirection) where {T<:Union{Float32, Float64}} - return RoundingEmulator.$(Symbol(f, "_", dir))(a, b) - end - end - - # Sqrt - @eval function sqrt(::IntervalRounding{:fast}, a, ::$RoundingDirection) - return FastRounding.sqrt_round(a, $dir) - end - - @eval function sqrt(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) - return RoundingEmulator.$(Symbol("sqrt_", dir))(a) - end - - # Inverse - @eval function inv(::IntervalRounding{:fast}, a, ::$RoundingDirection) - return FastRounding.inv_round(a, $dir) - end - - @eval function inv(::IntervalRounding{:tight}, a::Union{Float32, Float64}, ::$RoundingDirection) - return RoundingEmulator.$(Symbol("div_", dir))(one(a), a) +_inv_round(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = inv(x) + +# + +_sqrt_round(x::NumTypes, r::RoundingMode) = _sqrt_round(interval_rounding(), float(x), r) # rationals are converted to floats + +_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{: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 - - #= :accurate and :slow =# - # Power - @eval function ^(::IntervalRounding{:accurate}, a::AbstractFloat, b, ::$RoundingDirection) - return $outfloat(a^b) +end +_sqrt_round(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = sqrt(x) + +# + +_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) + 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) - @eval function ^(::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} - setprecision(BigFloat, 53) do - return T(^(IntervalRounding{:slow}, BigFloat(a), b, $RoundingDirection())) - end - end +for f ∈ [:cbrt, :exp2, :exp10, :cot, :sec, :csc, :acot, :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth] + g = Symbol(:_, f, :_round) - # Binary function - for f in (:+, :-, :*, :/, :^, :atan) - @eval function $f(::IntervalRounding{:accurate}, a::T, b::T, ::$RoundingDirection) where {T<:AbstractFloat} - return $outfloat($f(a, b)) - 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::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) + # $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 + return $f(bigx) end end + $g(::IntervalRounding{:none}, x::AbstractFloat, ::RoundingMode) = $f(x) end +end - # Unary functions not in CRlibm - for f in (:sqrt, :inv, :cot, :sec, :csc, :acot, - :tanh, :coth, :sech, :csch, :asinh, :acosh, :atanh, :acoth) - @eval function $f(::IntervalRounding{:accurate}, a::AbstractFloat, ::$RoundingDirection) - return $outfloat($f(a)) - end +# - @eval function $f(::IntervalRounding{:slow}, a::T, ::$RoundingDirection) where {T<:AbstractFloat} - setrounding(T, $RoundingDirection()) do - return $f(a) - end - end - end +for f ∈ CRlibm.functions + if isdefined(Base, f) + g = Symbol(:_, f, :_round) - # Functions defined in CRlibm - for f in CRlibm.functions - @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()) + $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) = $f(x) 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) - # 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 -# 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) - - # Fallback to :slow if the requested interval rounding is unavailable - @eval function $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) - return $f(a, b) - end -end +""" + @round(T, ex1, ex2) -# prevents multiple threads from calling `setprecision` concurrently, used in `_bigequiv` -const precision_lock = ReentrantLock() +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. +The macro uses the internal `_round_expr` function to transform e.g. `a + b` into +`+(a, b, RoundDown)`. """ - _bigequiv(x) +macro round(T, ex1, ex2) + return :(_unsafe_bareinterval($(esc(T)), $(_round_expr(ex1, RoundDown)), $(_round_expr(ex2, RoundUp)))) +end -Create a `BigFloat` equivalent with the same underlying precision as `x`. """ -function _bigequiv(x::BareInterval{T}) where {T<:NumTypes} - lock(precision_lock) do - setprecision(precision(float(T))) do - return BareInterval{BigFloat}(x) - end - end -end + _round_expr(ex::Expr, rounding_mode::RoundingMode) -function _bigequiv(x::T) where {T<:NumTypes} - lock(precision_lock) do - setprecision(precision(float(T))) do - return BigFloat(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 _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 + +_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/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/src/symbols.jl b/src/symbols.jl index af44c9180..3380d3bf0 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 @@ -25,7 +31,6 @@ Interval{Rational{Int64}}(1//1, 85563208//27235615, com) julia> 0.1..0.3 Interval{Float64}(0.1, 0.3, com) ``` -``` """ .. = interval @@ -37,14 +42,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 +84,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..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/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..7588026df --- a/test/test_ITF1788/libieeep1788_reduction.jl +++ b/test/ITF1788_tests/libieeep1788_reduction.jl @@ -30,16 +30,16 @@ 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..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/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/generate_ITF1788.jl b/test/generate_ITF1788.jl new file mode 100644 index 000000000..992021d76 --- /dev/null +++ b/test/generate_ITF1788.jl @@ -0,0 +1,261 @@ +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 -> "pow($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)" +) + +""" + 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) + + 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 + i = 1 + for (bstart, bend) ∈ zip(block_start, block_end) + testset = parse_block(view(lines, bstart:bend)) + i < len ? write(io, testset * "\n") : write(io, testset) + i += 1 + end + end + + return dest +end + +function parse_block(block) + blockname = match(r"^\s*testcase\s+(\S+)\s+\{\s*$", block[1])[1] + + testset = """@testset "$blockname" begin + """ + indentation = " " + for i ∈ 2:length(block)-1 + line = strip(block[i]) + isempty(line) | startswith(line, "//") && continue + command = parse_command(line) + testset = """$testset + $indentation$command + """ + end + testset = """$testset + end + """ + + return testset +end + +# 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] + 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) + + # 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" + + command = haswarning ? "@test_logs (:warn,) $command" : 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", "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 ∈ 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 + +int_to_float(x) = x * ifelse(isnothing(tryparse(Int64, x)), "", ".0") + +function parse_rhs(rhs) + rhs = replace(strip(rhs), + "infinity" => "Inf", + "X" => "x", + "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 occursin('[', rhs) # one or more intervals + rx = r"\[([^\]]+)\](?:_(\w+))?" + 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::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 = "bareinterval($ival)" + end + 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::AbstractString, rhs::AbstractString) + rhs == "nai()" && return "isnai($lhs)" + rhs == "NaN" && return "isnan($lhs)" + return "$lhs === $rhs" +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..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 isstrictsubset_interval(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) - - 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) +# @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))) - @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 +# z = exp(- interval(im) * interval(π)) +# @test in_interval(-1, real(z)) +# @test in_interval(0, imag(z)) +# 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/interval_tests/consistency.jl b/test/interval_tests/consistency.jl index 412649e8c..03ced2d3b 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 @@ -80,11 +79,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 +143,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)) @@ -174,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 @@ -236,12 +228,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 @@ -281,23 +267,13 @@ @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) - @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 @@ -323,21 +299,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/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/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/forwarddiff.jl b/test/interval_tests/forwarddiff.jl new file mode 100644 index 000000000..21ec86277 --- /dev/null +++ b/test/interval_tests/forwarddiff.jl @@ -0,0 +1,67 @@ +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 + + @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) && !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 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/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..64b017137 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)) @@ -78,56 +75,56 @@ 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(interval(0.0) ^ interval(1.1), interval(0)) - @test isequal_interval(nthpow(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(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(pow(interval(0.0), interval(1.1)), interval(0)) + @test isequal_interval(pown(interval(0.0) , 0), interval(1)) + @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)) 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(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(-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(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.4641588833612778, 0.8879040017426008)) # 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 @@ -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 @@ -212,25 +207,24 @@ 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)) - @test isstrictsubset_interval(x^50, fastpow(x, 50)) + x = interval(π) + @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)) @@ -239,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)) @@ -270,7 +264,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 @@ -285,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 @@ -302,41 +296,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..836cf1530 100644 --- a/test/interval_tests/parsing.jl +++ b/test/interval_tests/parsing.jl @@ -1,10 +1,10 @@ @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")) + @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]")) @@ -17,10 +17,10 @@ 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")) + @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]")) diff --git a/test/interval_tests/power.jl b/test/interval_tests/power.jl index 89c5fcec1..a5b4e3593 100644 --- a/test/interval_tests/power.jl +++ b/test/interval_tests/power.jl @@ -1,60 +1,60 @@ @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 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 @@ -68,20 +68,20 @@ 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(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(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(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 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 diff --git a/test/interval_tests/rounding.jl b/test/interval_tests/rounding.jl index 98402f3d1..065ee8654 100644 --- a/test/interval_tests/rounding.jl +++ b/test/interval_tests/rounding.jl @@ -1,27 +1,12 @@ x = interval(0.5) -@testset "IntervalRounding{:slow}" begin - IntervalArithmetic.interval_rounding() = 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 "No rounding" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:none}() - @test isequal_interval(sin(x), interval(0.479425538604203, 0.479425538604203)) -end - -@testset "IntervalRounding{:fast}" begin - IntervalArithmetic.interval_rounding() = IntervalRounding{:fast}() - @test isequal_interval(sin(x), interval(0.47942553860420295, 0.479425538604203)) -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() = 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 +18,14 @@ end @test isequal_interval(tiny / huge, interval(0, nextfloat(0.0))) end -IntervalArithmetic.interval_rounding() = IntervalRounding{:tight}() +@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}() 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..4b5c28bd2 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(2)])) + @test all(isequal_interval.(interiordiff(y, x), [interval(2), 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/trigonometric.jl similarity index 97% rename from test/interval_tests/trig.jl rename to test/interval_tests/trigonometric.jl index 2f7e11a13..dc6dd176c 100644 --- a/test/interval_tests/trig.jl +++ b/test/interval_tests/trigonometric.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)) @@ -23,8 +23,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)) @@ -224,7 +223,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/test_ITF1788/LICENSE.md b/test/itl/LICENSE.md similarity index 99% rename from test/test_ITF1788/LICENSE.md rename to test/itl/LICENSE.md index 261eeb9e9..df0bb94ae 100644 --- a/test/test_ITF1788/LICENSE.md +++ b/test/itl/LICENSE.md @@ -1,4 +1,4 @@ - Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ 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..0c2188b7c 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) + @testset "$f" begin + include(f) + end + end + # ITF1788 tests + for f ∈ readdir("itl") + if !occursin("LICENSE", f) + generate(f) + end + 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/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")