1
- """
2
- Map12(condition, f1, f2)
3
-
4
- Creates a function mapping `x -> condition(x) ? f1(x) : f2(x)`.
5
- """
6
- struct Map12{C,F1,F2}
7
- condition:: C
8
- f1:: F1
9
- f2:: F2
10
- end
11
- (m:: Map12 )(x) = m. condition (x) ? m. f1 (x) : m. f2 (x)
12
-
13
- minc (x, y) = min (x, y)
14
- minc (x:: Color , y:: Color ) = mapc (min, x, y)
15
- maxc (x, y) = max (x, y)
16
- maxc (x:: Color , y:: Color ) = mapc (max, x, y)
17
-
18
1
"""
19
2
minfinite(A; kwargs...)
20
3
21
4
Calculate the minimum value in `A`, ignoring any values that are not finite (Inf or NaN).
22
5
23
6
The supported `kwargs` are those of `minimum(f, A; kwargs...)`.
24
7
"""
25
- minfinite (A; kwargs... ) = mapreduce (Map12 (isfinite, identity, typemax), minc, A; kwargs... )
8
+ minfinite (A; kwargs... ) = mapreduce (IfElse (isfinite, identity, typemax), minc, A; kwargs... )
26
9
27
10
"""
28
11
maxfinite(A; kwargs...)
@@ -31,7 +14,7 @@ Calculate the maximum value in `A`, ignoring any values that are not finite (Inf
31
14
32
15
The supported `kwargs` are those of `maximum(f, A; kwargs...)`.
33
16
"""
34
- maxfinite (A; kwargs... ) = mapreduce (Map12 (isfinite, identity, typemin), maxc, A; kwargs... )
17
+ maxfinite (A; kwargs... ) = mapreduce (IfElse (isfinite, identity, typemin), maxc, A; kwargs... )
35
18
36
19
"""
37
20
maxabsfinite(A; kwargs...)
@@ -40,7 +23,7 @@ Calculate the maximum absolute value in `A`, ignoring any values that are not fi
40
23
41
24
The supported `kwargs` are those of `maximum(f, A; kwargs...)`.
42
25
"""
43
- maxabsfinite (A; kwargs... ) = mapreduce (Map12 (isfinite, abs, typemin), maxc, A; kwargs... )
26
+ maxabsfinite (A; kwargs... ) = mapreduce (IfElse (isfinite, abs, typemin), maxc, A; kwargs... )
44
27
45
28
"""
46
29
meanfinite(A; kwargs...)
@@ -53,14 +36,14 @@ function meanfinite end
53
36
54
37
if Base. VERSION >= v " 1.1"
55
38
function meanfinite (A; kwargs... )
56
- s = sum (Map12 (isfinite, identity, zero), A; kwargs... )
57
- n = sum (Map12 (isfinite, x-> true , x-> false ), A; kwargs... ) # TODO : replace with `Returns`
39
+ s = sum (IfElse (isfinite, identity, zero), A; kwargs... )
40
+ n = sum (IfElse (isfinite, x-> true , x-> false ), A; kwargs... ) # TODO : replace with `Returns`
58
41
return s./ n
59
42
end
60
43
else
61
44
function meanfinite (A; kwargs... )
62
- s = sum (Map12 (isfinite, identity, zero).(A); kwargs... )
63
- n = sum (Map12 (isfinite, x-> true , x-> false ).(A); kwargs... )
45
+ s = sum (IfElse (isfinite, identity, zero).(A); kwargs... )
46
+ n = sum (IfElse (isfinite, x-> true , x-> false ).(A); kwargs... )
64
47
return s./ n
65
48
end
66
49
end
@@ -77,16 +60,15 @@ function varfinite end
77
60
if Base. VERSION >= v " 1.1"
78
61
function varfinite (A; kwargs... )
79
62
m = meanfinite (A; kwargs... )
80
- n = sum (Map12 (isfinite, x-> true , x-> false ), A; kwargs... ) # TODO : replace with `Returns`
81
- s = sum (Map12 (isfinite, identity, zero), (A .- m). ^ 2 ; kwargs... )
63
+ n = sum (IfElse (isfinite, x-> true , x-> false ), A; kwargs... ) # TODO : replace with `Returns`
64
+ s = sum (IfElse (isfinite, identity, zero), (A .- m). ^ 2 ; kwargs... )
82
65
return s ./ max .(0 , (n .- 1 ))
83
66
end
84
67
else
85
68
function varfinite (A; kwargs... )
86
69
m = meanfinite (A; kwargs... )
87
- n = sum (Map12 (isfinite, x-> true , x-> false ).(A); kwargs... )
88
- s = sum (Map12 (isfinite, identity, zero).((A .- m). ^ 2 ); kwargs... )
70
+ n = sum (IfElse (isfinite, x-> true , x-> false ).(A); kwargs... )
71
+ s = sum (IfElse (isfinite, identity, zero).((A .- m). ^ 2 ); kwargs... )
89
72
return s ./ max .(0 , (n .- 1 ))
90
73
end
91
74
end
92
-
0 commit comments