34 using std::numeric_limits;
101 #if defined(_MSC_VER) 104 cerr <<
"[erfTest] Warning: test_real() not implemented for MSVC.\n";
111 if (
os_) *
os_ <<
"test_real()\n";
114 for (
double x=-a;
x<=a;
x+=a/100)
116 complex<double> resultComplex =
erf(complex<double>(
x));
117 double resultReal = ((double(*)(double))
::erf)(
x);
118 if (
os_) *
os_ <<
x <<
" -> " << resultComplex <<
" " << resultReal << endl;
124 #endif // defined(_MSC_VER) 129 if (
os_) *
os_ <<
"test_series()\n";
133 for (
double x=-a;
x<=a;
x+=a/5.)
134 for (
double y=-a;
y<=a;
y+=a/5.)
136 complex<double> z(
x,
y);
137 complex<double> result1 =
erf(z);
139 if (
os_) *
os_ << z <<
": " << abs(result1-result2) << endl;
149 if (
os_) *
os_ <<
"test_real_wrapper()\n";
152 for (
double x=-a;
x<=a;
x+=a/100)
155 double result_std =
::erf(
x);
156 if (
os_) *
os_ <<
x <<
" -> " << result_pwiz <<
" " << result_std << endl;
164 int main(
int argc,
char* argv[])
170 if (argc>1 && !strcmp(argv[1],
"-v"))
os_ = &cout;
171 if (
os_) *
os_ <<
"erfTest\n" << setprecision(20);
#define unit_assert_equal(x, y, epsilon)
PWIZ_API_DECL double erf(double x)
real error function; calls gcc-provided erf, complex version (below) on msvc
PWIZ_API_DECL std::complex< double > erf_series2(const std::complex< double > &z)
series implementation for testing
#define TEST_PROLOG(argc, argv)
KernelTraitsBase< Kernel >::space_type::abscissa_type x
KernelTraitsBase< Kernel >::space_type::ordinate_type y
int main(int argc, char *argv[])