Documentation

Mathlib.Analysis.SpecialFunctions.Pow.Complex

Power function on ℂ #

We construct the power functions x ^ y, where x and y are complex numbers.

noncomputable def Complex.cpow (x : ℂ) (y : ℂ) :

The complex power function x ^ y, given by x ^ y = exp(y log x) (where log is the principal determination of the logarithm), unless x = 0 where one sets 0 ^ 0 = 1 and 0 ^ y = 0 for y ≠ 0.

Equations
Instances For
    noncomputable instance Complex.instPowComplex :
    Equations
    @[simp]
    theorem Complex.cpow_eq_pow (x : ℂ) (y : ℂ) :
    Complex.cpow x y = x ^ y
    theorem Complex.cpow_def (x : ℂ) (y : ℂ) :
    x ^ y = if x = 0 then if y = 0 then 1 else 0 else Complex.exp (Complex.log x * y)
    theorem Complex.cpow_def_of_ne_zero {x : ℂ} (hx : x ≠ 0) (y : ℂ) :
    @[simp]
    theorem Complex.cpow_zero (x : ℂ) :
    x ^ 0 = 1
    @[simp]
    theorem Complex.cpow_eq_zero_iff (x : ℂ) (y : ℂ) :
    x ^ y = 0 ↔ x = 0 ∧ y ≠ 0
    @[simp]
    theorem Complex.zero_cpow {x : ℂ} (h : x ≠ 0) :
    0 ^ x = 0
    theorem Complex.zero_cpow_eq_iff {x : ℂ} {a : ℂ} :
    0 ^ x = a ↔ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
    theorem Complex.eq_zero_cpow_iff {x : ℂ} {a : ℂ} :
    a = 0 ^ x ↔ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
    @[simp]
    theorem Complex.cpow_one (x : ℂ) :
    x ^ 1 = x
    @[simp]
    theorem Complex.one_cpow (x : ℂ) :
    1 ^ x = 1
    theorem Complex.cpow_add {x : ℂ} (y : ℂ) (z : ℂ) (hx : x ≠ 0) :
    x ^ (y + z) = x ^ y * x ^ z
    theorem Complex.cpow_mul {x : ℂ} {y : ℂ} (z : ℂ) (h₁ : -Real.pi < (Complex.log x * y).im) (h₂ : (Complex.log x * y).im ≤ Real.pi) :
    x ^ (y * z) = (x ^ y) ^ z
    theorem Complex.cpow_neg (x : ℂ) (y : ℂ) :
    x ^ (-y) = (x ^ y)⁻¹
    theorem Complex.cpow_sub {x : ℂ} (y : ℂ) (z : ℂ) (hx : x ≠ 0) :
    x ^ (y - z) = x ^ y / x ^ z
    theorem Complex.cpow_neg_one (x : ℂ) :
    x ^ (-1) = x⁻¹
    theorem Complex.cpow_int_mul (x : ℂ) (n : ℤ) (y : ℂ) :
    x ^ (↑n * y) = (x ^ y) ^ n

    See also Complex.cpow_int_mul'.

    theorem Complex.cpow_mul_int (x : ℂ) (y : ℂ) (n : ℤ) :
    x ^ (y * ↑n) = (x ^ y) ^ n
    theorem Complex.cpow_nat_mul (x : ℂ) (n : ℕ) (y : ℂ) :
    x ^ (↑n * y) = (x ^ y) ^ n
    theorem Complex.cpow_ofNat_mul (x : ℂ) (n : ℕ) [Nat.AtLeastTwo n] (y : ℂ) :
    x ^ (OfNat.ofNat n * y) = (x ^ y) ^ OfNat.ofNat n

    See Note [no_index around OfNat.ofNat]

    theorem Complex.cpow_mul_nat (x : ℂ) (y : ℂ) (n : ℕ) :
    x ^ (y * ↑n) = (x ^ y) ^ n
    theorem Complex.cpow_mul_ofNat (x : ℂ) (y : ℂ) (n : ℕ) [Nat.AtLeastTwo n] :
    x ^ (y * OfNat.ofNat n) = (x ^ y) ^ OfNat.ofNat n

    See Note [no_index around OfNat.ofNat]

    @[simp]
    theorem Complex.cpow_natCast (x : ℂ) (n : ℕ) :
    x ^ ↑n = x ^ n
    @[simp]

    See Note [no_index around OfNat.ofNat]

    theorem Complex.cpow_two (x : ℂ) :
    x ^ 2 = x ^ 2
    @[simp]
    theorem Complex.cpow_intCast (x : ℂ) (n : ℤ) :
    x ^ ↑n = x ^ n
    @[simp]
    theorem Complex.cpow_nat_inv_pow (x : ℂ) {n : ℕ} (hn : n ≠ 0) :
    (x ^ (↑n)⁻¹) ^ n = x
    @[simp]

    See Note [no_index around OfNat.ofNat]

    theorem Complex.cpow_int_mul' {x : ℂ} {n : ℤ} (hlt : -Real.pi < ↑n * Complex.arg x) (hle : ↑n * Complex.arg x ≤ Real.pi) (y : ℂ) :
    x ^ (↑n * y) = (x ^ n) ^ y

    A version of Complex.cpow_int_mul with RHS that matches Complex.cpow_mul.

    The assumptions on the arguments are needed because the equality fails, e.g., for x = -I, n = 2, y = 1/2.

    theorem Complex.cpow_nat_mul' {x : ℂ} {n : ℕ} (hlt : -Real.pi < ↑n * Complex.arg x) (hle : ↑n * Complex.arg x ≤ Real.pi) (y : ℂ) :
    x ^ (↑n * y) = (x ^ n) ^ y

    A version of Complex.cpow_nat_mul with RHS that matches Complex.cpow_mul.

    The assumptions on the arguments are needed because the equality fails, e.g., for x = -I, n = 2, y = 1/2.

    theorem Complex.pow_cpow_nat_inv {x : ℂ} {n : ℕ} (h₀ : n ≠ 0) (hlt : -(Real.pi / ↑n) < Complex.arg x) (hle : Complex.arg x ≤ Real.pi / ↑n) :
    (x ^ n) ^ (↑n)⁻¹ = x
    theorem Complex.sq_cpow_two_inv {x : ℂ} (hx : 0 < x.re) :
    (x ^ 2) ^ 2⁻¹ = x

    See also Complex.pow_cpow_ofNat_inv for a version that also works for x * I, 0 ≤ x.

    theorem Complex.mul_cpow_ofReal_nonneg {a : ℝ} {b : ℝ} (ha : 0 ≤ a) (hb : 0 ≤ b) (r : ℂ) :
    (↑a * ↑b) ^ r = ↑a ^ r * ↑b ^ r
    theorem Complex.natCast_mul_natCast_cpow (m : ℕ) (n : ℕ) (s : ℂ) :
    (↑m * ↑n) ^ s = ↑m ^ s * ↑n ^ s
    theorem Complex.natCast_cpow_natCast_mul (n : ℕ) (m : ℕ) (z : ℂ) :
    ↑n ^ (↑m * z) = (↑n ^ m) ^ z
    theorem Complex.inv_cpow_eq_ite (x : ℂ) (n : ℂ) :
    x⁻¹ ^ n = if Complex.arg x = Real.pi then (starRingEnd ℂ) (x ^ (starRingEnd ℂ) n)⁻¹ else (x ^ n)⁻¹
    theorem Complex.inv_cpow (x : ℂ) (n : ℂ) (hx : Complex.arg x ≠ Real.pi) :
    x⁻¹ ^ n = (x ^ n)⁻¹
    theorem Complex.inv_cpow_eq_ite' (x : ℂ) (n : ℂ) :
    (x ^ n)⁻¹ = if Complex.arg x = Real.pi then (starRingEnd ℂ) (x⁻¹ ^ (starRingEnd ℂ) n) else x⁻¹ ^ n

    Complex.inv_cpow_eq_ite with the ite on the other side.

    theorem Complex.conj_cpow_eq_ite (x : ℂ) (n : ℂ) :
    (starRingEnd ℂ) x ^ n = if Complex.arg x = Real.pi then x ^ n else (starRingEnd ℂ) (x ^ (starRingEnd ℂ) n)