|
1 | 1 | @testset "error functions" begin
|
2 | 2 | @testset "real argument" begin
|
3 |
| - @test erf(Float16(1)) ≈ 0.84270079294971486934 rtol=2*eps(Float16) |
4 |
| - @test erf(Float32(1)) ≈ 0.84270079294971486934 rtol=2*eps(Float32) |
5 |
| - @test erf(Float64(1)) ≈ 0.84270079294971486934 rtol=2*eps(Float64) |
6 |
| - |
7 |
| - @test erfc(Float16(1)) ≈ 0.15729920705028513066 rtol=2*eps(Float16) |
8 |
| - @test erfc(Float32(1)) ≈ 0.15729920705028513066 rtol=2*eps(Float32) |
9 |
| - @test erfc(Float64(1)) ≈ 0.15729920705028513066 rtol=2*eps(Float64) |
10 |
| - |
11 |
| - @test erfcx(Float16(1)) ≈ 0.42758357615580700442 rtol=2*eps(Float16) |
12 |
| - @test erfcx(Float32(1)) ≈ 0.42758357615580700442 rtol=2*eps(Float32) |
13 |
| - @test erfcx(Float64(1)) ≈ 0.42758357615580700442 rtol=2*eps(Float64) |
14 |
| - |
15 |
| - @test_throws MethodError logerfc(Float16(1)) |
16 |
| - @test_throws MethodError logerfc(Float16(-1)) |
17 |
| - @test logerfc(Float32(-100)) ≈ 0.6931471805599453 rtol=2*eps(Float32) |
18 |
| - @test logerfc(Float64(-100)) ≈ 0.6931471805599453 rtol=2*eps(Float64) |
19 |
| - @test logerfc(Float32(1000)) ≈ -1.0000074801207219e6 rtol=2*eps(Float32) |
20 |
| - @test logerfc(Float64(1000)) ≈ -1.0000074801207219e6 rtol=2*eps(Float64) |
21 |
| - @test logerfc(1000) ≈ -1.0000074801207219e6 rtol=2*eps(Float32) |
22 |
| - @test logerfc(Float32(10000)) ≈ log(erfc(BigFloat(10000, precision=100))) rtol=2*eps(Float32) |
23 |
| - @test logerfc(Float64(10000)) ≈ log(erfc(BigFloat(10000, precision=100))) rtol=2*eps(Float64) |
24 |
| - |
25 |
| - @test_throws MethodError logerfcx(Float16(1)) |
26 |
| - @test_throws MethodError logerfcx(Float16(-1)) |
27 |
| - @test iszero(logerfcx(0)) |
28 |
| - @test logerfcx(Float32(1)) ≈ -0.849605509933248248576017509499 rtol=2eps(Float32) |
29 |
| - @test logerfcx(Float64(1)) ≈ -0.849605509933248248576017509499 rtol=2eps(Float32) |
30 |
| - @test logerfcx(Float32(-1)) ≈ 1.61123231767807049464268192445 rtol=2eps(Float32) |
31 |
| - @test logerfcx(Float64(-1)) ≈ 1.61123231767807049464268192445 rtol=2eps(Float32) |
32 |
| - @test logerfcx(Float32(-100)) ≈ 10000.6931471805599453094172321 rtol=2eps(Float32) |
33 |
| - @test logerfcx(Float64(-100)) ≈ 10000.6931471805599453094172321 rtol=2eps(Float64) |
34 |
| - @test logerfcx(Float32(100)) ≈ -5.17758512266433257046678208395 rtol=2eps(Float32) |
35 |
| - @test logerfcx(Float64(100)) ≈ -5.17758512266433257046678208395 rtol=2eps(Float64) |
36 |
| - @test logerfcx(Float32(-1000)) ≈ 1.00000069314718055994530941723e6 rtol=2eps(Float32) |
37 |
| - @test logerfcx(Float64(-1000)) ≈ 1.00000069314718055994530941723e6 rtol=2eps(Float64) |
38 |
| - @test logerfcx(Float32(1000)) ≈ -7.48012072190621214066734919080 rtol=2eps(Float32) |
39 |
| - @test logerfcx(Float64(1000)) ≈ -7.48012072190621214066734919080 rtol=2eps(Float64) |
40 |
| - |
41 |
| - @test erfi(Float16(1)) ≈ 1.6504257587975428760 rtol=2*eps(Float16) |
42 |
| - @test erfi(Float32(1)) ≈ 1.6504257587975428760 rtol=2*eps(Float32) |
43 |
| - @test erfi(Float64(1)) ≈ 1.6504257587975428760 rtol=2*eps(Float64) |
| 3 | + for T in (Float16, Float32, Float64) |
| 4 | + @test @inferred(erf(T(1))) isa T |
| 5 | + @test erf(T(1)) ≈ T(0.84270079294971486934) rtol=2*eps(T) |
44 | 6 |
|
45 |
| - @test erfinv(Integer(0)) == 0 == erfinv(0//1) |
46 |
| - @test_throws MethodError erfinv(Float16(1)) |
47 |
| - @test erfinv(Float32(0.84270079294971486934)) ≈ 1 rtol=2*eps(Float32) |
48 |
| - @test erfinv(Float64(0.84270079294971486934)) ≈ 1 rtol=2*eps(Float64) |
| 7 | + @test @inferred(erfc(T(1))) isa T |
| 8 | + @test erfc(T(1)) ≈ T(0.15729920705028513066) rtol=2*eps(T) |
49 | 9 |
|
50 |
| - @test erfcinv(Integer(1)) == 0 == erfcinv(1//1) |
51 |
| - @test_throws MethodError erfcinv(Float16(1)) |
52 |
| - @test erfcinv(Float32(0.15729920705028513066)) ≈ 1 rtol=2*eps(Float32) |
53 |
| - @test erfcinv(Float64(0.15729920705028513066)) ≈ 1 rtol=2*eps(Float64) |
| 10 | + @test @inferred(erfcx(T(1))) isa T |
| 11 | + @test erfcx(T(1)) ≈ T(0.42758357615580700442) rtol=2*eps(T) |
| 12 | + |
| 13 | + @test @inferred(logerfc(T(1))) isa T |
| 14 | + @test logerfc(T(-100)) ≈ T(0.6931471805599453) rtol=2*eps(T) |
| 15 | + @test logerfc(T(1000)) ≈ T(-1.0000074801207219e6) rtol=2*eps(T) |
| 16 | + @test logerfc(T(10000)) ≈ T(log(erfc(BigFloat(10000, precision=100)))) rtol=2*eps(T) |
| 17 | + |
| 18 | + @test @inferred(logerfcx(T(1))) isa T |
| 19 | + @test logerfcx(T(1)) ≈ T(-0.849605509933248248576017509499) rtol=2eps(T) |
| 20 | + @test logerfcx(T(-1)) ≈ T(1.61123231767807049464268192445) rtol=2eps(T) |
| 21 | + @test logerfcx(T(-100)) ≈ T(10000.6931471805599453094172321) rtol=2eps(T) |
| 22 | + @test logerfcx(T(100)) ≈ T(-5.17758512266433257046678208395) rtol=2eps(T) |
| 23 | + @test logerfcx(T(-1000)) ≈ T(1.00000069314718055994530941723e6) rtol=2eps(T) |
| 24 | + @test logerfcx(T(1000)) ≈ T(-7.48012072190621214066734919080) rtol=2eps(T) |
| 25 | + |
| 26 | + @test @inferred(erfi(T(1))) isa T |
| 27 | + @test erfi(T(1)) ≈ T(1.6504257587975428760) rtol=2*eps(T) |
| 28 | + |
| 29 | + @test @inferred(erfinv(T(1))) isa T |
| 30 | + @test erfinv(T(0.84270079294971486934)) ≈ 1 rtol=2*eps(T) |
54 | 31 |
|
55 |
| - @test dawson(Float16(1)) ≈ 0.53807950691276841914 rtol=2*eps(Float16) |
56 |
| - @test dawson(Float32(1)) ≈ 0.53807950691276841914 rtol=2*eps(Float32) |
57 |
| - @test dawson(Float64(1)) ≈ 0.53807950691276841914 rtol=2*eps(Float64) |
| 32 | + @test @inferred(erfcinv(T(1))) isa T |
| 33 | + @test erfcinv(T(0.15729920705028513066)) ≈ 1 rtol=2*eps(T) |
58 | 34 |
|
| 35 | + @test @inferred(dawson(T(1))) isa T |
| 36 | + @test dawson(T(1)) ≈ T(0.53807950691276841914) rtol=2*eps(T) |
| 37 | + |
| 38 | + @test @inferred(faddeeva(T(1))) isa Complex{T} |
| 39 | + @test faddeeva(T(1)) ≈ 0.36787944117144233402+0.60715770584139372446im rtol=2*eps(T) |
| 40 | + end |
| 41 | + |
| 42 | + @test logerfc(1000) ≈ -1.0000074801207219e6 rtol=2*eps(Float32) |
| 43 | + @test erfinv(Integer(0)) == 0 == erfinv(0//1) |
| 44 | + @test erfcinv(Integer(1)) == 0 == erfcinv(1//1) |
59 | 45 | @test faddeeva(0) == faddeeva(0//1) == 1
|
60 |
| - @test faddeeva(Float16(1)) ≈ 0.36787944117144233402+0.60715770584139372446im rtol=2*eps(Float16) |
61 |
| - @test faddeeva(Float32(1)) ≈ 0.36787944117144233402+0.60715770584139372446im rtol=2*eps(Float32) |
62 |
| - @test faddeeva(Float64(1)) ≈ 0.36787944117144233402+0.60715770584139372446im rtol=2*eps(Float64) |
63 | 46 | end
|
64 | 47 |
|
65 | 48 | @testset "complex arguments" begin
|
|
0 commit comments