@@ -23,7 +23,7 @@ pub mod interpolate {
23
23
Self :: float_percentile_index ( q, len) . floor ( ) as usize
24
24
}
25
25
#[ doc( hidden) ]
26
- fn upper_index ( q : f64 , len : usize ) -> usize {
26
+ fn higher_index ( q : f64 , len : usize ) -> usize {
27
27
Self :: float_percentile_index ( q, len) . ceil ( ) as usize
28
28
}
29
29
#[ doc( hidden) ]
@@ -33,56 +33,58 @@ pub mod interpolate {
33
33
#[ doc( hidden) ]
34
34
fn needs_lower ( q : f64 , len : usize ) -> bool ;
35
35
#[ doc( hidden) ]
36
- fn needs_upper ( q : f64 , len : usize ) -> bool ;
36
+ fn needs_higher ( q : f64 , len : usize ) -> bool ;
37
37
#[ doc( hidden) ]
38
38
fn interpolate < D > (
39
39
lower : Option < Array < T , D > > ,
40
- upper : Option < Array < T , D > > ,
40
+ higher : Option < Array < T , D > > ,
41
41
q : f64 ,
42
42
len : usize ,
43
43
) -> Array < T , D >
44
44
where
45
45
D : Dimension ;
46
46
}
47
47
48
- /// Select the upper value.
49
- pub struct Upper ;
48
+ /// Select the higher value.
49
+ pub struct Higher ;
50
50
/// Select the lower value.
51
51
pub struct Lower ;
52
52
/// Select the nearest value.
53
53
pub struct Nearest ;
54
- /// Select the midpoint of the two values.
54
+ /// Select the midpoint of the two values (`(lower + higher) / 2`) .
55
55
pub struct Midpoint ;
56
- /// Linearly interpolate between the two values.
56
+ /// Linearly interpolate between the two values
57
+ /// (`lower + (higher - lower) * fraction`, where `fraction` is the
58
+ /// fractional part of the index surrounded by `lower` and `higher`).
57
59
pub struct Linear ;
58
60
59
- impl < T > Interpolate < T > for Upper {
61
+ impl < T > Interpolate < T > for Higher {
60
62
fn needs_lower ( _q : f64 , _len : usize ) -> bool {
61
63
false
62
64
}
63
- fn needs_upper ( _q : f64 , _len : usize ) -> bool {
65
+ fn needs_higher ( _q : f64 , _len : usize ) -> bool {
64
66
true
65
67
}
66
68
fn interpolate < D > (
67
69
_lower : Option < Array < T , D > > ,
68
- upper : Option < Array < T , D > > ,
70
+ higher : Option < Array < T , D > > ,
69
71
_q : f64 ,
70
72
_len : usize ,
71
73
) -> Array < T , D > {
72
- upper . unwrap ( )
74
+ higher . unwrap ( )
73
75
}
74
76
}
75
77
76
78
impl < T > Interpolate < T > for Lower {
77
79
fn needs_lower ( _q : f64 , _len : usize ) -> bool {
78
80
true
79
81
}
80
- fn needs_upper ( _q : f64 , _len : usize ) -> bool {
82
+ fn needs_higher ( _q : f64 , _len : usize ) -> bool {
81
83
false
82
84
}
83
85
fn interpolate < D > (
84
86
lower : Option < Array < T , D > > ,
85
- _upper : Option < Array < T , D > > ,
87
+ _higher : Option < Array < T , D > > ,
86
88
_q : f64 ,
87
89
_len : usize ,
88
90
) -> Array < T , D > {
@@ -94,19 +96,19 @@ pub mod interpolate {
94
96
fn needs_lower ( q : f64 , len : usize ) -> bool {
95
97
<Self as Interpolate < T > >:: float_percentile_index_fraction ( q, len) < 0.5
96
98
}
97
- fn needs_upper ( q : f64 , len : usize ) -> bool {
99
+ fn needs_higher ( q : f64 , len : usize ) -> bool {
98
100
!<Self as Interpolate < T > >:: needs_lower ( q, len)
99
101
}
100
102
fn interpolate < D > (
101
103
lower : Option < Array < T , D > > ,
102
- upper : Option < Array < T , D > > ,
104
+ higher : Option < Array < T , D > > ,
103
105
q : f64 ,
104
106
len : usize ,
105
107
) -> Array < T , D > {
106
108
if <Self as Interpolate < T > >:: needs_lower ( q, len) {
107
109
lower. unwrap ( )
108
110
} else {
109
- upper . unwrap ( )
111
+ higher . unwrap ( )
110
112
}
111
113
}
112
114
}
@@ -118,20 +120,20 @@ pub mod interpolate {
118
120
fn needs_lower ( _q : f64 , _len : usize ) -> bool {
119
121
true
120
122
}
121
- fn needs_upper ( _q : f64 , _len : usize ) -> bool {
123
+ fn needs_higher ( _q : f64 , _len : usize ) -> bool {
122
124
true
123
125
}
124
126
fn interpolate < D > (
125
127
lower : Option < Array < T , D > > ,
126
- upper : Option < Array < T , D > > ,
128
+ higher : Option < Array < T , D > > ,
127
129
_q : f64 ,
128
130
_len : usize ,
129
131
) -> Array < T , D >
130
132
where
131
133
D : Dimension ,
132
134
{
133
135
let denom = T :: from_u8 ( 2 ) . unwrap ( ) ;
134
- ( lower. unwrap ( ) + upper . unwrap ( ) ) . mapv_into ( |x| x / denom. clone ( ) )
136
+ ( lower. unwrap ( ) + higher . unwrap ( ) ) . mapv_into ( |x| x / denom. clone ( ) )
135
137
}
136
138
}
137
139
@@ -142,12 +144,12 @@ pub mod interpolate {
142
144
fn needs_lower ( _q : f64 , _len : usize ) -> bool {
143
145
true
144
146
}
145
- fn needs_upper ( _q : f64 , _len : usize ) -> bool {
147
+ fn needs_higher ( _q : f64 , _len : usize ) -> bool {
146
148
true
147
149
}
148
150
fn interpolate < D > (
149
151
lower : Option < Array < T , D > > ,
150
- upper : Option < Array < T , D > > ,
152
+ higher : Option < Array < T , D > > ,
151
153
q : f64 ,
152
154
len : usize ,
153
155
) -> Array < T , D >
@@ -156,7 +158,7 @@ pub mod interpolate {
156
158
{
157
159
let fraction = <Self as Interpolate < T > >:: float_percentile_index_fraction ( q, len) ;
158
160
let mut a = lower. unwrap ( ) ;
159
- let b = upper . unwrap ( ) ;
161
+ let b = higher . unwrap ( ) ;
160
162
azip ! ( mut a, ref b in {
161
163
let a_f64 = a. to_f64( ) . unwrap( ) ;
162
164
let b_f64 = b. to_f64( ) . unwrap( ) ;
@@ -364,25 +366,25 @@ where
364
366
{
365
367
assert ! ( ( 0. <= q) && ( q <= 1. ) ) ;
366
368
let mut lower = None ;
367
- let mut upper = None ;
369
+ let mut higher = None ;
368
370
let axis_len = self . len_of ( axis) ;
369
371
if I :: needs_lower ( q, axis_len) {
370
372
let lower_index = I :: lower_index ( q, axis_len) ;
371
373
lower = Some ( self . map_axis_mut ( axis, |mut x| x. sorted_get_mut ( lower_index) ) ) ;
372
- if I :: needs_upper ( q, axis_len) {
373
- let upper_index = I :: upper_index ( q, axis_len) ;
374
- let relative_upper_index = upper_index - lower_index;
375
- upper = Some ( self . map_axis_mut ( axis, |mut x| {
374
+ if I :: needs_higher ( q, axis_len) {
375
+ let higher_index = I :: higher_index ( q, axis_len) ;
376
+ let relative_higher_index = higher_index - lower_index;
377
+ higher = Some ( self . map_axis_mut ( axis, |mut x| {
376
378
x. slice_mut ( s ! [ lower_index..] )
377
- . sorted_get_mut ( relative_upper_index )
379
+ . sorted_get_mut ( relative_higher_index )
378
380
} ) ) ;
379
381
} ;
380
382
} else {
381
- upper = Some (
382
- self . map_axis_mut ( axis, |mut x| x. sorted_get_mut ( I :: upper_index ( q, axis_len) ) ) ,
383
+ higher = Some (
384
+ self . map_axis_mut ( axis, |mut x| x. sorted_get_mut ( I :: higher_index ( q, axis_len) ) ) ,
383
385
) ;
384
386
} ;
385
- I :: interpolate ( lower, upper , q, axis_len)
387
+ I :: interpolate ( lower, higher , q, axis_len)
386
388
}
387
389
388
390
fn percentile_axis_skipnan_mut < I > ( & mut self , axis : Axis , q : f64 ) -> Array < A , D :: Smaller >
0 commit comments