32 std::complex<double>
Werrf(std::complex<double> z) {
33 const double cc = 1.12837916709551;
34 const double xlim = 5.33;
35 const double ylim = 4.29;
39 std::complex<double> w;
41 if(y < ylim && x < xlim) {
43 const double q = (1.0 - y / ylim) *
sqrt(1.0 - (x * x) / (xlim * xlim));
45 const int nc = 6 + int(23.0 * q);
46 const int nu = 9 + int(21.0 * q);
47 const std::complex<double> zz(1.6 * q + y, - x);
50 std::complex<double> r(0.0);
51 for(
int n = nu;
n > nc;
n--) {
52 r = 0.5 / (zz + double(
n + 1) * r);
56 double power =
pow(3.2 * q, nc);
57 const double div = 0.3125 / q;
58 std::complex<double> s(0.0);
59 for(
int n = nc;
n >= 0;
n--) {
60 r = 0.5 / (zz + double(
n + 1) * r);
69 const std::complex<double> zz(y, - x);
70 std::complex<double> r(0.0);
71 for(
int n = 8;
n >= 0;
n--) {
72 r = 0.5 / (zz + double(
n + 1) * r);
81 std::complex<double> zz(x, y);
Tps< T > pow(const Tps< T > &x, int y)
Integer power.
Tps< T > exp(const Tps< T > &x)
Exponential.
Tps< T > sqrt(const Tps< T > &x)
Square root.
FLieGenerator< T, N > imag(const FLieGenerator< std::complex< T >, N > &)
Take imaginary part of a complex generator.
FLieGenerator< T, N > real(const FLieGenerator< std::complex< T >, N > &)
Take real part of a complex generator.
std::complex< double > Werrf(std::complex< double > z)
Complex error function.
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
m_complex conj(const m_complex &c)