Documentation

Interval.Interval.Pow

Interval powers #

These are easy on top of exp and log.

@[irreducible]

x^y = exp (x.log * y)

Equations
Instances For
    @[instance_reducible]
    Equations
    theorem Interval.pow_def {x y : Interval} :
    x ^ y = (x.log * y).exp
    theorem Interval.approx_pow {x y : Interval} {x' y' : ℝ} (xm : approx x x') (ym : approx y y') :
    approx (x ^ y) (x' ^ y')

    Interval.pow is conservative

    theorem Interval.approx_pow_nat {x : Interval} {x' : ℝ} {n : ℕ} (xm : approx x x') :
    approx (x ^ ↑n) (x' ^ n)

    Interval.pow is conservative for ℕ powers

    @[simp]
    theorem Interval.nan_pow {y : Interval} :

    Interval.pow propagates nan

    @[simp]
    theorem Interval.pow_nan {x : Interval} :

    Interval.pow propagates nan

    Interval ^ ℕ powers #

    @[irreducible]

    For use within Interval.powNat for large n (not very optimised)

    Equations
    Instances For
      @[irreducible]

      Special case low powers, and use Floating.powNatSlow for larger n

      Equations
      Instances For
        @[instance_reducible]
        Equations
        theorem Interval.powNat_def {x : Interval} {n : ℕ} :
        x ^ n = x.powNat n
        theorem Floating.approx_powNatSlow {x' : ℝ} {x : Floating} (xm : approx x x') (n : ℕ) :
        approx (x.powNatSlow n) (x' ^ n)

        Floating.powNatSlow is conservative

        @[simp]
        theorem Floating.nan_powNatSlow {n : ℕ} (n0 : n ≠ 0) :
        theorem Interval.approx_powNat {x : Interval} {x' : ℝ} {n : ℕ} (xm : approx x x') :
        approx (x ^ n) (x' ^ n)

        Interval ^ ℕ is conservative

        Interval ^ ℤ powers #

        @[irreducible]
        Equations
        Instances For
          @[instance_reducible]
          Equations
          theorem Interval.powInt_def {x : Interval} {n : ℤ} :
          x ^ n = x.powInt n
          theorem Interval.approx_powInt {x : Interval} {x' : ℝ} {n : ℤ} (xm : approx x x') :
          approx (x ^ n) (x' ^ n)

          Interval.powInt is conservative