6#ifndef THEORETICA_COMPLEX_FUNCTIONS 
    7#define THEORETICA_COMPLEX_FUNCTIONS 
   10#include "../core/real_analysis.h" 
   28        return complex<T>(z.a, -z.b);
 
 
   43    inline complex<T> 
square(complex<T> z) {
 
 
   53    inline complex<T> 
cube(complex<T> z) {
 
 
   63    inline complex<T> 
exp(complex<T> z) {
 
   64        return complex<T>(
cos(z.Im()), 
sin(z.Im())) * 
exp(z.Re());
 
 
   79    inline complex<T> 
sin(complex<T> z) {
 
   81        const complex<T> t = z * complex<T>(0, 1);
 
   82        return (
exp(t) - 
exp(-t)) / complex<T>(0, 2);
 
 
   89    inline complex<T> 
cos(complex<T> z) {
 
   91        const complex<T> t = z * complex<T>(0, 1);
 
   92        return (
exp(t) + 
exp(-t)) / 2.0;
 
 
   99    inline complex<T> 
tan(complex<T> z) {
 
  101        const complex<T> t = z * complex<T>(0, 2);
 
  102        return (
exp(t) - 1) / (
exp(t) + 1) * complex<T>(0, -1);
 
 
  109    inline complex<T> 
sqrt(complex<T> z) {
 
  112            return complex<T>(0);
 
 
  123    inline complex<T> 
ln(complex<T> z) {
 
  124        return complex<T>(
ln(z.norm()), z.arg());
 
 
  131    inline complex<T> 
asin(complex<T> z) {
 
  132        return ln(complex<T>(0, 1) * z + 
sqrt(complex<T>(1, 0) - 
square(z))) * complex<T>(0, -1);
 
 
  139    inline complex<T> 
acos(complex<T> z) {
 
 
  147    inline complex<T> 
atan(complex<T> z) {
 
  148        return ln((complex<T>(0, 1) - z) / (complex<T>(0, 1) + z)) * complex<T>(0, -0.5);
 
 
real Re() const
Return real part.
Definition dual2.h:85
 
Main namespace of the library which contains all functions and objects.
Definition algebra.h:27
 
double real
A real number, defined as a floating point type.
Definition constants.h:198
 
dual2 sqrt(dual2 x)
Compute the square root of a second order dual number.
Definition dual2_functions.h:54
 
dual2 ln(dual2 x)
Compute the natural logarithm of a second order dual number.
Definition dual2_functions.h:151
 
dual2 abs(dual2 x)
Compute the absolute value of a second order dual number.
Definition dual2_functions.h:198
 
dual2 asin(dual2 x)
Compute the arcsine of a second order dual number.
Definition dual2_functions.h:204
 
complex< T > identity(complex< T > z)
Complex identity.
Definition complex_analysis.h:19
 
dual2 exp(dual2 x)
Compute the exponential of a second order dual number.
Definition dual2_functions.h:138
 
complex< T > inverse(complex< T > z)
Compute the conjugate of a complex number.
Definition complex_analysis.h:35
 
constexpr real INVSQR2
The inverse of the square root of 2.
Definition constants.h:264
 
dual2 conjugate(dual2 x)
Return the conjugate of a second order dual number.
Definition dual2_functions.h:35
 
dual2 cos(dual2 x)
Compute the cosine of a second order dual number.
Definition dual2_functions.h:86
 
constexpr real MACH_EPSILON
Machine epsilon for the real type.
Definition constants.h:207
 
dual2 tan(dual2 x)
Compute the tangent of a second order dual number.
Definition dual2_functions.h:100
 
dual2 acos(dual2 x)
Compute the arcosine of a second order dual number.
Definition dual2_functions.h:223
 
int sgn(real x)
Return the sign of x (1 if positive, -1 if negative, 0 if null)
Definition real_analysis.h:259
 
dual2 sin(dual2 x)
Compute the sine of a second order dual number.
Definition dual2_functions.h:72
 
dual2 square(dual2 x)
Return the square of a second order dual number.
Definition dual2_functions.h:23
 
dual2 atan(dual2 x)
Compute the arctangent of a second order dual number.
Definition dual2_functions.h:242
 
dual2 cube(dual2 x)
Return the cube of a second order dual number.
Definition dual2_functions.h:29