1# Note: add integer versions of the functions? 2 3cdef extern from "<complex>" namespace "std" nogil: 4 cdef cppclass complex[T]: 5 complex() except + 6 complex(T, T) except + 7 complex(complex[T]&) except + 8 # How to make the converting constructor, i.e. convert complex[double] 9 # to complex[float]? 10 11 complex[T] operator+(complex[T]&) 12 complex[T] operator-(complex[T]&) 13 complex[T] operator+(complex[T]&, complex[T]&) 14 complex[T] operator+(complex[T]&, T&) 15 complex[T] operator+(T&, complex[T]&) 16 complex[T] operator-(complex[T]&, complex[T]&) 17 complex[T] operator-(complex[T]&, T&) 18 complex[T] operator-(T&, complex[T]&) 19 complex[T] operator*(complex[T]&, complex[T]&) 20 complex[T] operator*(complex[T]&, T&) 21 complex[T] operator*(T&, complex[T]&) 22 complex[T] operator/(complex[T]&, complex[T]&) 23 complex[T] operator/(complex[T]&, T&) 24 complex[T] operator/(T&, complex[T]&) 25 26 bint operator==(complex[T]&, complex[T]&) 27 bint operator==(complex[T]&, T&) 28 bint operator==(T&, complex[T]&) 29 bint operator!=(complex[T]&, complex[T]&) 30 bint operator!=(complex[T]&, T&) 31 bint operator!=(T&, complex[T]&) 32 33 # Access real part 34 T real() 35 void real(T) 36 37 # Access imaginary part 38 T imag() 39 void imag(T) 40 41 # Return real part 42 T real[T](complex[T]&) 43 long double real(long double) 44 double real(double) 45 float real(float) 46 47 # Return imaginary part 48 T imag[T](complex[T]&) 49 long double imag(long double) 50 double imag(double) 51 float imag(float) 52 53 T abs[T](complex[T]&) 54 T arg[T](complex[T]&) 55 long double arg(long double) 56 double arg(double) 57 float arg(float) 58 59 T norm[T](complex[T]) 60 long double norm(long double) 61 double norm(double) 62 float norm(float) 63 64 complex[T] conj[T](complex[T]&) 65 complex[long double] conj(long double) 66 complex[double] conj(double) 67 complex[float] conj(float) 68 69 complex[T] proj[T](complex[T]) 70 complex[long double] proj(long double) 71 complex[double] proj(double) 72 complex[float] proj(float) 73 74 complex[T] polar[T](T&, T&) 75 complex[T] ploar[T](T&) 76 77 complex[T] exp[T](complex[T]&) 78 complex[T] log[T](complex[T]&) 79 complex[T] log10[T](complex[T]&) 80 81 complex[T] pow[T](complex[T]&, complex[T]&) 82 complex[T] pow[T](complex[T]&, T&) 83 complex[T] pow[T](T&, complex[T]&) 84 # There are some promotion versions too 85 86 complex[T] sqrt[T](complex[T]&) 87 88 complex[T] sin[T](complex[T]&) 89 complex[T] cos[T](complex[T]&) 90 complex[T] tan[T](complex[T]&) 91 complex[T] asin[T](complex[T]&) 92 complex[T] acos[T](complex[T]&) 93 complex[T] atan[T](complex[T]&) 94 95 complex[T] sinh[T](complex[T]&) 96 complex[T] cosh[T](complex[T]&) 97 complex[T] tanh[T](complex[T]&) 98 99 complex[T] asinh[T](complex[T]&) 100 complex[T] acosh[T](complex[T]&) 101 complex[T] atanh[T](complex[T]&) 102