Expression Templates Library (ETL)
Classes | Namespaces | Functions
complex.hpp File Reference

binary-compatible std::complex faster implementation More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  etl::complex< T >
 Complex number implementation. More...
 

Namespaces

 etl
 Root namespace for the ETL library.
 

Functions

template<typename T >
bool etl::operator== (const complex< T > &lhs, const complex< T > &rhs)
 Test two complex numbers for equality. More...
 
template<typename T >
bool etl::operator!= (const complex< T > &lhs, const complex< T > &rhs)
 Test two complex numbers for inequality. More...
 
template<typename T >
complex< T > etl::operator- (complex< T > rhs)
 Returns a complex number with the value of -rhs. More...
 
template<typename T >
complex< T > etl::operator+ (const complex< T > &lhs, const complex< T > &rhs)
 Computes the addition of two complex numbers. More...
 
template<typename T >
complex< T > etl::operator- (const complex< T > &lhs, const complex< T > &rhs)
 Computes the subtraction of two complex numbers. More...
 
template<typename T >
complex< T > etl::operator* (const complex< T > &lhs, const complex< T > &rhs)
 Computes the multiplication of two complex numbers. More...
 
template<typename T >
complex< T > etl::operator* (const complex< T > &lhs, T rhs)
 Computes the multiplication of a complex number and a scalar. More...
 
template<typename T >
complex< T > etl::operator* (T lhs, const complex< T > &rhs)
 Computes the multiplication of a complex number and a scalar. More...
 
template<typename T >
complex< T > etl::operator/ (const complex< T > &lhs, T rhs)
 Computes the division of a complex number and a scalar. More...
 
template<typename T >
complex< T > etl::operator/ (const complex< T > &lhs, const complex< T > &rhs)
 Computes the division of two complex numbers. More...
 
template<typename T >
etl::abs (complex< T > z)
 Computes the magnitude of the given complex number. More...
 
template<typename T >
etl::arg (complex< T > z)
 Computes the phase angle of the given complex number. More...
 
template<typename T >
complex< T > etl::sqrt (complex< T > z)
 Computes the complex square root of the input. More...
 
template<typename T >
complex< T > etl::invsqrt (complex< T > z)
 Computes the inverse complex square root of the input. More...
 
template<typename T >
complex< T > etl::cbrt (complex< T > z)
 Computes the complex cubic root of the input. More...
 
template<typename T >
complex< T > etl::invcbrt (complex< T > z)
 Computes the inverse complex cubic root of the input. More...
 
template<typename T >
complex< T > etl::log (complex< T > z)
 Computes the complex logarithm, in base e, of the input. More...
 
template<typename T >
complex< T > etl::log2 (complex< T > z)
 Computes the complex logarithm, in base 2, of the input. More...
 
template<typename T >
complex< T > etl::log10 (complex< T > z)
 Computes the complex logarithm, in base 10, of the input. More...
 
template<typename T >
complex< T > etl::sin (complex< T > z)
 Computes the sinus of the complex input. More...
 
template<typename T >
complex< T > etl::cos (complex< T > z)
 Computes the cosine of the complex input. More...
 
template<typename T >
complex< T > etl::tan (complex< T > z)
 Computes the tangent of the complex input. More...
 
template<typename T >
complex< T > etl::cosh (complex< T > z)
 Computes the hyperbolic cosine of the complex input. More...
 
template<typename T >
complex< T > etl::sinh (complex< T > z)
 Computes the hyperbolic sinus of the complex input. More...
 
template<typename T >
complex< T > etl::tanh (complex< T > z)
 Computes the hyperbolic tangent of the complex input. More...
 
template<typename T >
complex< T > etl::inverse (complex< T > x)
 Returns the inverse of the complex number. More...
 
template<typename T >
complex< T > etl::inverse_conj (complex< T > x)
 Returns the inverse of the conjugate of the complex number. More...
 
template<typename T >
complex< T > etl::conj_inverse (complex< T > x)
 Returns the conjugate of the inverse of the complex number. More...
 
template<typename T >
complex< T > etl::conj (const complex< T > &c)
 Returns the conjugate of the complex number. More...
 
template<typename T >
etl::get_imag (const std::complex< T > &c)
 Returns the imaginary part of the given complex number. More...
 
template<typename T >
etl::get_imag (const etl::complex< T > &c)
 Returns the imaginary part of the given complex number. More...
 
template<typename T >
etl::get_real (const std::complex< T > &c)
 Returns the real part of the given complex number. More...
 
template<typename T >
etl::get_real (const etl::complex< T > &c)
 Returns the real part of the given complex number. More...
 
template<typename T >
std::complex< T > etl::get_conj (const std::complex< T > &c)
 Returns the conjugate of the given complex number. More...
 
template<typename T >
etl::complex< T > etl::get_conj (const etl::complex< T > &c)
 Returns the conjugate of the given complex number. More...
 
template<typename T >
std::ostream & etl::operator<< (std::ostream &os, const etl::complex< T > &c)
 Outputs a textual representation of the complex number in the given stream. More...
 

Detailed Description

binary-compatible std::complex faster implementation

For some reason, the compilers are not inlining std::complex operations, resulting in way slower code. This template is binary-compatible so it can be reinterpreted as to one another and its operations can be inlined easily. This results in much faster code for FFT for instance.