def test__erfs(): assert _erfs(z).diff(z) == -2/sqrt(S.Pi)+2*z*_erfs(z) assert _erfs(1/z).series(z) == z/sqrt(pi) - z**3/(2*sqrt(pi)) + 3*z**5/(4*sqrt(pi)) + O(z**6) assert expand(erf(z).rewrite('tractable').diff(z).rewrite('intractable')) == erf(z).diff(z) assert _erfs(z).rewrite("intractable") == (-erf(z) + 1)*exp(z**2)
def test__erfs(): assert _erfs(z).diff(z) == -2/sqrt(S.Pi) + 2*z*_erfs(z) assert _erfs(1/z).series(z) == \ z/sqrt(pi) - z**3/(2*sqrt(pi)) + 3*z**5/(4*sqrt(pi)) + O(z**6) assert expand(erf(z).rewrite('tractable').diff(z).rewrite('intractable')) \ == erf(z).diff(z) assert _erfs(z).rewrite("intractable") == (-erf(z) + 1)*exp(z**2)
def test__erfs(): assert _erfs(z).diff(z) == -2 / sqrt(S.Pi) + 2 * z * _erfs(z) assert _erfs(1 / z).series(z) == z / sqrt(pi) - z**3 / ( 2 * sqrt(pi)) + 3 * z**5 / (4 * sqrt(pi)) + O(z**6) assert expand(erf(z).rewrite("tractable").diff(z).rewrite( "intractable")) == erf(z).diff(z) assert _erfs(z).rewrite("intractable") == (-erf(z) + 1) * exp(z**2) raises(ArgumentIndexError, lambda: _erfs(z).fdiff(2))
def test_erfi(): assert erfi(nan) is nan assert erfi(oo) is S.Infinity assert erfi(-oo) is S.NegativeInfinity assert erfi(0) is S.Zero assert erfi(I * oo) == I assert erfi(-I * oo) == -I assert erfi(-x) == -erfi(x) assert erfi(I * erfinv(x)) == I * x assert erfi(I * erfcinv(x)) == I * (1 - x) assert erfi(I * erf2inv(0, x)) == I * x assert erfi( I * erf2inv(0, x, evaluate=False)) == I * x # To cover code in erfi assert erfi(I).is_real is False assert erfi(0).is_real is True assert conjugate(erfi(z)) == erfi(conjugate(z)) assert erfi(x).as_leading_term(x) == 2 * x / sqrt(pi) assert erfi(x * y).as_leading_term(y) == 2 * x * y / sqrt(pi) assert (erfi(x * y) / erfi(y)).as_leading_term(y) == x assert erfi(1 / x).as_leading_term(x) == erfi(1 / x) assert erfi(z).rewrite('erf') == -I * erf(I * z) assert erfi(z).rewrite('erfc') == I * erfc(I * z) - I assert erfi(z).rewrite('fresnels') == (1 - I) * ( fresnelc(z * (1 + I) / sqrt(pi)) - I * fresnels(z * (1 + I) / sqrt(pi))) assert erfi(z).rewrite('fresnelc') == (1 - I) * ( fresnelc(z * (1 + I) / sqrt(pi)) - I * fresnels(z * (1 + I) / sqrt(pi))) assert erfi(z).rewrite('hyper') == 2 * z * hyper([S.Half], [3 * S.Half], z **2) / sqrt(pi) assert erfi(z).rewrite('meijerg') == z * meijerg( [S.Half], [], [0], [Rational(-1, 2)], -z**2) / sqrt(pi) assert erfi(z).rewrite('uppergamma') == ( sqrt(-z**2) / z * (uppergamma(S.Half, -z**2) / sqrt(S.Pi) - S.One)) assert erfi(z).rewrite( 'expint') == sqrt(-z**2) / z - z * expint(S.Half, -z**2) / sqrt(S.Pi) assert erfi(z).rewrite('tractable') == -I * (-_erfs(I * z) * exp(z**2) + 1) assert expand_func(erfi(I * z)) == I * erf(z) assert erfi(x).as_real_imag() == \ (erfi(re(x) - I*im(x))/2 + erfi(re(x) + I*im(x))/2, -I*(-erfi(re(x) - I*im(x)) + erfi(re(x) + I*im(x)))/2) assert erfi(x).as_real_imag(deep=False) == \ (erfi(re(x) - I*im(x))/2 + erfi(re(x) + I*im(x))/2, -I*(-erfi(re(x) - I*im(x)) + erfi(re(x) + I*im(x)))/2) assert erfi(w).as_real_imag() == (erfi(w), 0) assert erfi(w).as_real_imag(deep=False) == (erfi(w), 0) raises(ArgumentIndexError, lambda: erfi(x).fdiff(2))
def test_erfc(): assert erfc(nan) is nan assert erfc(oo) == 0 assert erfc(-oo) == 2 assert erfc(0) == 1 assert erfc(I * oo) == -oo * I assert erfc(-I * oo) == oo * I assert erfc(-x) == S(2) - erfc(x) assert erfc(erfcinv(x)) == x assert erfc(I).is_real is False assert erfc(0).is_real is True assert erfc(erfinv(x)) == 1 - x assert conjugate(erfc(z)) == erfc(conjugate(z)) assert erfc(x).as_leading_term(x) is S.One assert erfc(1 / x).as_leading_term(x) == erfc(1 / x) assert erfc(z).rewrite("erf") == 1 - erf(z) assert erfc(z).rewrite("erfi") == 1 + I * erfi(I * z) assert erfc(z).rewrite("fresnels") == 1 - (1 + I) * ( fresnelc(z * (1 - I) / sqrt(pi)) - I * fresnels(z * (1 - I) / sqrt(pi))) assert erfc(z).rewrite("fresnelc") == 1 - (1 + I) * ( fresnelc(z * (1 - I) / sqrt(pi)) - I * fresnels(z * (1 - I) / sqrt(pi))) assert erfc(z).rewrite("hyper") == 1 - 2 * z * hyper( [S.Half], [3 * S.Half], -(z**2)) / sqrt(pi) assert erfc(z).rewrite("meijerg") == 1 - z * meijerg( [S.Half], [], [0], [Rational(-1, 2)], z**2) / sqrt(pi) assert (erfc(z).rewrite("uppergamma") == 1 - sqrt(z**2) * (1 - erfc(sqrt(z**2))) / z) assert erfc(z).rewrite("expint") == S.One - sqrt(z**2) / z + z * expint( S.Half, z**2) / sqrt(S.Pi) assert erfc(z).rewrite("tractable") == _erfs(z) * exp(-(z**2)) assert expand_func(erf(x) + erfc(x)) is S.One assert erfc(x).as_real_imag() == ( erfc(re(x) - I * im(x)) / 2 + erfc(re(x) + I * im(x)) / 2, -I * (-erfc(re(x) - I * im(x)) + erfc(re(x) + I * im(x))) / 2, ) assert erfc(x).as_real_imag(deep=False) == ( erfc(re(x) - I * im(x)) / 2 + erfc(re(x) + I * im(x)) / 2, -I * (-erfc(re(x) - I * im(x)) + erfc(re(x) + I * im(x))) / 2, ) assert erfc(w).as_real_imag() == (erfc(w), 0) assert erfc(w).as_real_imag(deep=False) == (erfc(w), 0) raises(ArgumentIndexError, lambda: erfc(x).fdiff(2)) assert erfc(x).inverse() == erfcinv
def test_erfc(): assert erfc(nan) == nan assert erfc(oo) == 0 assert erfc(-oo) == 2 assert erfc(0) == 1 assert erfc(I * oo) == -oo * I assert erfc(-I * oo) == oo * I assert erfc(-x) == S(2) - erfc(x) assert erfc(erfcinv(x)) == x assert erfc(I).is_real is False assert erfc(0).is_real is True assert erfc(erfinv(x)) == 1 - x assert conjugate(erfc(z)) == erfc(conjugate(z)) assert erfc(x).as_leading_term(x) == S.One assert erfc(1 / x).as_leading_term(x) == erfc(1 / x) assert erfc(z).rewrite('erf') == 1 - erf(z) assert erfc(z).rewrite('erfi') == 1 + I * erfi(I * z) assert erfc(z).rewrite('fresnels') == 1 - (1 + I) * ( fresnelc(z * (1 - I) / sqrt(pi)) - I * fresnels(z * (1 - I) / sqrt(pi))) assert erfc(z).rewrite('fresnelc') == 1 - (1 + I) * ( fresnelc(z * (1 - I) / sqrt(pi)) - I * fresnels(z * (1 - I) / sqrt(pi))) assert erfc(z).rewrite( 'hyper') == 1 - 2 * z * hyper([S.Half], [3 * S.Half], -z**2) / sqrt(pi) assert erfc(z).rewrite('meijerg') == 1 - z * meijerg( [S.Half], [], [0], [-S.Half], z**2) / sqrt(pi) assert erfc(z).rewrite( 'uppergamma') == 1 - sqrt(z**2) * (1 - erfc(sqrt(z**2))) / z assert erfc(z).rewrite('expint') == S.One - sqrt(z**2) / z + z * expint( S.Half, z**2) / sqrt(S.Pi) assert erfc(z).rewrite('tractable') == _erfs(z) * exp(-z**2) assert expand_func(erf(x) + erfc(x)) == S.One assert erfc(x).as_real_imag() == \ (erfc(re(x) - I*im(x))/2 + erfc(re(x) + I*im(x))/2, -I*(-erfc(re(x) - I*im(x)) + erfc(re(x) + I*im(x)))/2) assert erfc(x).as_real_imag(deep=False) == \ (erfc(re(x) - I*im(x))/2 + erfc(re(x) + I*im(x))/2, -I*(-erfc(re(x) - I*im(x)) + erfc(re(x) + I*im(x)))/2) assert erfc(w).as_real_imag() == (erfc(w), 0) assert erfc(w).as_real_imag(deep=False) == (erfc(w), 0) raises(ArgumentIndexError, lambda: erfc(x).fdiff(2)) assert erfc(x).inverse() == erfcinv