module Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.DivisionInner
where
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Basic
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Reduce
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Eval
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Ring
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Bounds
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Enclosure
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.EnclosureInner
import Data.Number.ER.RnToRm.UnitDom.ChebyshevBase.Polynom.Division
import qualified Data.Number.ER.Real.Approx as RA
import qualified Data.Number.ER.Real.Approx.Elementary as RAEL
import qualified Data.Number.ER.Real.Base as B
import Data.Number.ER.Real.Approx.Interval
import Data.Number.ER.Real.Arithmetic.Elementary
import qualified Data.Number.ER.BasicTypes.DomainBox as DBox
import Data.Number.ER.BasicTypes.DomainBox (VariableID(..), DomainBox, DomainIntBox, DomainBoxMappable)
import Data.Number.ER.BasicTypes
import Data.Number.ER.Misc
import qualified Data.Map as Map
ienclRecipPositive ::
(B.ERRealBase b,
DomainBox box varid Int, Ord box, Show varid,
DomainIntBox boxra varid (ERInterval b),
DomainBoxMappable boxra boxras varid (ERInterval b) [ERInterval b]) =>
Int ->
Int ->
EffortIndex ->
Int ->
((ERChebPoly box b, ERChebPoly box b), Bool) ->
((ERChebPoly box b, ERChebPoly box b), Bool)
ienclRecipPositive maxDegree maxSize ix tauDegr (e@(ln, h), isAC) =
((hnRDown,lRDown), isAC)
where
hnRDown = chplNeg hRUp
lRDown = chplNeg lnRUp
(_, lnRUp) = enclRecip maxDegree maxSize ix tauDegr (chplNeg ln,ln)
(_, hRUp) = enclRecip maxDegree maxSize ix tauDegr (chplNeg h,h)