Skip to content

Commit 9c6cec2

Browse files
committed
Rename upper -> higher to match NumPy
1 parent 444b609 commit 9c6cec2

File tree

1 file changed

+33
-31
lines changed

1 file changed

+33
-31
lines changed

src/percentile.rs

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub mod interpolate {
2323
Self::float_percentile_index(q, len).floor() as usize
2424
}
2525
#[doc(hidden)]
26-
fn upper_index(q: f64, len: usize) -> usize {
26+
fn higher_index(q: f64, len: usize) -> usize {
2727
Self::float_percentile_index(q, len).ceil() as usize
2828
}
2929
#[doc(hidden)]
@@ -33,56 +33,58 @@ pub mod interpolate {
3333
#[doc(hidden)]
3434
fn needs_lower(q: f64, len: usize) -> bool;
3535
#[doc(hidden)]
36-
fn needs_upper(q: f64, len: usize) -> bool;
36+
fn needs_higher(q: f64, len: usize) -> bool;
3737
#[doc(hidden)]
3838
fn interpolate<D>(
3939
lower: Option<Array<T, D>>,
40-
upper: Option<Array<T, D>>,
40+
higher: Option<Array<T, D>>,
4141
q: f64,
4242
len: usize,
4343
) -> Array<T, D>
4444
where
4545
D: Dimension;
4646
}
4747

48-
/// Select the upper value.
49-
pub struct Upper;
48+
/// Select the higher value.
49+
pub struct Higher;
5050
/// Select the lower value.
5151
pub struct Lower;
5252
/// Select the nearest value.
5353
pub struct Nearest;
54-
/// Select the midpoint of the two values.
54+
/// Select the midpoint of the two values (`(lower + higher) / 2`).
5555
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`).
5759
pub struct Linear;
5860

59-
impl<T> Interpolate<T> for Upper {
61+
impl<T> Interpolate<T> for Higher {
6062
fn needs_lower(_q: f64, _len: usize) -> bool {
6163
false
6264
}
63-
fn needs_upper(_q: f64, _len: usize) -> bool {
65+
fn needs_higher(_q: f64, _len: usize) -> bool {
6466
true
6567
}
6668
fn interpolate<D>(
6769
_lower: Option<Array<T, D>>,
68-
upper: Option<Array<T, D>>,
70+
higher: Option<Array<T, D>>,
6971
_q: f64,
7072
_len: usize,
7173
) -> Array<T, D> {
72-
upper.unwrap()
74+
higher.unwrap()
7375
}
7476
}
7577

7678
impl<T> Interpolate<T> for Lower {
7779
fn needs_lower(_q: f64, _len: usize) -> bool {
7880
true
7981
}
80-
fn needs_upper(_q: f64, _len: usize) -> bool {
82+
fn needs_higher(_q: f64, _len: usize) -> bool {
8183
false
8284
}
8385
fn interpolate<D>(
8486
lower: Option<Array<T, D>>,
85-
_upper: Option<Array<T, D>>,
87+
_higher: Option<Array<T, D>>,
8688
_q: f64,
8789
_len: usize,
8890
) -> Array<T, D> {
@@ -94,19 +96,19 @@ pub mod interpolate {
9496
fn needs_lower(q: f64, len: usize) -> bool {
9597
<Self as Interpolate<T>>::float_percentile_index_fraction(q, len) < 0.5
9698
}
97-
fn needs_upper(q: f64, len: usize) -> bool {
99+
fn needs_higher(q: f64, len: usize) -> bool {
98100
!<Self as Interpolate<T>>::needs_lower(q, len)
99101
}
100102
fn interpolate<D>(
101103
lower: Option<Array<T, D>>,
102-
upper: Option<Array<T, D>>,
104+
higher: Option<Array<T, D>>,
103105
q: f64,
104106
len: usize,
105107
) -> Array<T, D> {
106108
if <Self as Interpolate<T>>::needs_lower(q, len) {
107109
lower.unwrap()
108110
} else {
109-
upper.unwrap()
111+
higher.unwrap()
110112
}
111113
}
112114
}
@@ -118,20 +120,20 @@ pub mod interpolate {
118120
fn needs_lower(_q: f64, _len: usize) -> bool {
119121
true
120122
}
121-
fn needs_upper(_q: f64, _len: usize) -> bool {
123+
fn needs_higher(_q: f64, _len: usize) -> bool {
122124
true
123125
}
124126
fn interpolate<D>(
125127
lower: Option<Array<T, D>>,
126-
upper: Option<Array<T, D>>,
128+
higher: Option<Array<T, D>>,
127129
_q: f64,
128130
_len: usize,
129131
) -> Array<T, D>
130132
where
131133
D: Dimension,
132134
{
133135
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())
135137
}
136138
}
137139

@@ -142,12 +144,12 @@ pub mod interpolate {
142144
fn needs_lower(_q: f64, _len: usize) -> bool {
143145
true
144146
}
145-
fn needs_upper(_q: f64, _len: usize) -> bool {
147+
fn needs_higher(_q: f64, _len: usize) -> bool {
146148
true
147149
}
148150
fn interpolate<D>(
149151
lower: Option<Array<T, D>>,
150-
upper: Option<Array<T, D>>,
152+
higher: Option<Array<T, D>>,
151153
q: f64,
152154
len: usize,
153155
) -> Array<T, D>
@@ -156,7 +158,7 @@ pub mod interpolate {
156158
{
157159
let fraction = <Self as Interpolate<T>>::float_percentile_index_fraction(q, len);
158160
let mut a = lower.unwrap();
159-
let b = upper.unwrap();
161+
let b = higher.unwrap();
160162
azip!(mut a, ref b in {
161163
let a_f64 = a.to_f64().unwrap();
162164
let b_f64 = b.to_f64().unwrap();
@@ -364,25 +366,25 @@ where
364366
{
365367
assert!((0. <= q) && (q <= 1.));
366368
let mut lower = None;
367-
let mut upper = None;
369+
let mut higher = None;
368370
let axis_len = self.len_of(axis);
369371
if I::needs_lower(q, axis_len) {
370372
let lower_index = I::lower_index(q, axis_len);
371373
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| {
376378
x.slice_mut(s![lower_index..])
377-
.sorted_get_mut(relative_upper_index)
379+
.sorted_get_mut(relative_higher_index)
378380
}));
379381
};
380382
} 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))),
383385
);
384386
};
385-
I::interpolate(lower, upper, q, axis_len)
387+
I::interpolate(lower, higher, q, axis_len)
386388
}
387389

388390
fn percentile_axis_skipnan_mut<I>(&mut self, axis: Axis, q: f64) -> Array<A, D::Smaller>

0 commit comments

Comments
 (0)