table of contents
        
      
      
    | std::pow(std::complex)(3) | C++ Standard Libary | std::pow(std::complex)(3) | 
NAME¶
std::pow(std::complex) - std::pow(std::complex)
Synopsis¶
 Defined in header <complex>
  
   template< class T > (1)
  
   complex<T> pow( const complex<T>& x, const
    complex<T>& y );
  
   template< class T > (2)
  
   complex<T> pow( const complex<T>& x, const T& y );
  
   template< class T > (3)
  
   complex<T> pow( const T& x, const complex<T>& y );
  
   template< class T, class U >
  
   complex</*Promoted*/> pow( const complex<T>& x, const
    complex<U>& (4) (since C++11)
  
   y );
  
   template< class T, class U > (5) (since C++11)
  
   complex</*Promoted*/> pow( const complex<T>& x, const U&
    y );
  
   template< class T, class U > (6) (since C++11)
  
   complex</*Promoted*/> pow( const T& x, const complex<U>&
    y );
  
   1-3) Computes complex x raised to a complex power y with a branch cut along
    the
  
   negative real axis for the first argument.
  
   4-6) Additional overloads are provided for all arithmetic types, such
  
   that
  
   1. If either argument is long double or std::complex<long double>,
  
   then both arguments are cast to std::complex<long double> (since
    C++11)
  
   2. Otherwise, if either argument is double, std::complex<double> or
  
   integer type, then both arguments are cast to std::complex<double>
  
   3. Otherwise, if either argument is float or std::complex<float>,
  
   then both arguments are cast to std::complex<float>
Parameters¶
 x - base as a complex value
  
   y - exponent as a complex value
Return value¶
 If no errors occur, the complex power xy
  
   , is returned.
  
   Errors and special cases are handled as if the operation is implemented by
  
   std::exp(y*std::log(x))
  
   The result of std::pow(0, 0) is implementation-defined.
Example¶
// Run this code
  
   #include <iostream>
  
   #include <complex>
  
   int main()
  
   {
  
   std::cout << std::fixed;
  
   std::complex<double> z(1, 2);
  
   std::cout << "(1,2)^2 = " << std::pow(z, 2) <<
    '\n';
  
   std::complex<double> z2(-1, 0); // square root of -1
  
   std::cout << "-1^0.5 = " << std::pow(z2, 0.5) <<
    '\n';
  
   std::complex<double> z3(-1, -0.0); // other side of the cut
  
   std::cout << "(-1, -0)^0.5 = " << std::pow(z3, 0.5)
    << '\n';
  
   std::complex<double> i(0, 1); // i^i = exp(-pi/2)
  
   std::cout << "i^i = " << std::pow(i, i) << '\n';
  
   }
Output:¶
 (1,2)^2 = (-3.000000,4.000000)
  
   -1^0.5 = (0.000000,1.000000)
  
   (-1, -0)^0.5 = (0.000000,-1.000000)
  
   i^i = (0.207880,0.000000)
See also¶
 sqrt(std::complex) complex square root in the range of the right
    half-plane
  
   (function template)
  
   pow
  
   powf raises a number to the given power (\(\small{x^y}\)x^y)
  
   powl (function)
  
   (C++11)
  
   (C++11)
  
   applies the function std::pow to two valarrays or a valarray and
  
   pow(std::valarray) a value
  
   (function template)
| 2022.07.31 | http://cppreference.com |