Skip to content

Commit bc1a95f

Browse files
author
sigurd4
committed
Rename try_ methods to partial_ instead where appropriate
1 parent f383359 commit bc1a95f

File tree

6 files changed

+35
-21
lines changed

6 files changed

+35
-21
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ alloc = ["slice_ops/alloc", "array_trait/alloc"]
1818
[dependencies]
1919
moddef = "0.2.6"
2020
array_trait = "1.0.7"
21-
slice_ops = "1.0.7"
21+
slice_ops = {path = "../slice_ops"} #"1.0.7"
2222

2323
[dev-dependencies]
2424
tokio-test = "0.4.4"

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ pub mod asm
201201
#[inline(never)]
202202
pub fn magnitude(a: [i32; N]) -> Option<i32>
203203
{
204-
a.try_magnitude_squared()
204+
a.partial_magnitude_squared()
205205
}
206206

207207
#[inline(never)]

src/ops/_1d/magnitude.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
11
use core::ops::{AddAssign, Mul};
22

3-
use super::ArrayPartialMulDot;
3+
use slice_ops::ops::SliceVisit;
4+
5+
use super::{ArrayPartialMulDot, ArrayVisit};
46

57
#[const_trait]
68
pub trait ArrayPartialMagnitude<T, const N: usize>: ArrayPartialMulDot<T, N>
79
{
8-
fn try_magnitude_squared(&self) -> Option<<T as Mul<T>>::Output>
10+
fn partial_magnitude_squared(&self) -> Option<<T as Mul<T>>::Output>
911
where
1012
T: Mul<T, Output: AddAssign> + Copy;
11-
async fn try_magnitude_squared_async(&self) -> Option<<T as Mul<T>>::Output>
13+
fn magnitude_squared_from<O>(&self, from: O) -> O
14+
where
15+
T: Mul<T> + Copy,
16+
O: AddAssign<<T as Mul<T>>::Output>;
17+
async fn partial_magnitude_squared_async(&self) -> Option<<T as Mul<T>>::Output>
1218
where
1319
T: Mul<T, Output: AddAssign> + Copy;
1420
}
1521

1622
impl<T, const N: usize> ArrayPartialMagnitude<T, N> for [T; N]
1723
{
18-
fn try_magnitude_squared(&self) -> Option<<T as Mul<T>>::Output>
24+
fn partial_magnitude_squared(&self) -> Option<<T as Mul<T>>::Output>
1925
where
2026
T: Mul<T, Output: AddAssign> + Copy
2127
{
@@ -33,10 +39,18 @@ impl<T, const N: usize> ArrayPartialMagnitude<T, N> for [T; N]
3339
}
3440
Some(y)
3541
}
36-
async fn try_magnitude_squared_async(&self) -> Option<<T as Mul<T>>::Output>
42+
fn magnitude_squared_from<O>(&self, mut from: O) -> O
43+
where
44+
T: Mul<T> + Copy,
45+
O: AddAssign<<T as Mul<T>>::Output>
46+
{
47+
self.visit(|x| from += *x**x);
48+
from
49+
}
50+
async fn partial_magnitude_squared_async(&self) -> Option<<T as Mul<T>>::Output>
3751
where
3852
T: Mul<T, Output: AddAssign> + Copy
3953
{
40-
self.try_mul_dot_async(*self).await
54+
self.partial_mul_dot_async(*self).await
4155
}
4256
}

src/ops/_1d/mul_dot.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ use super::{sum::ArrayPartialSum, ArrayZipWith};
1010
#[const_trait]
1111
pub trait ArrayPartialMulDot<T, const N: usize>: Array + AsSlice<Item = T>
1212
{
13-
fn try_mul_dot<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
13+
fn partial_mul_dot<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
1414
where
1515
Rhs: ArrayForm<N>,
1616
T: Mul<Rhs::Elem, Output: AddAssign>;
1717

18-
async fn try_mul_dot_async<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
18+
async fn partial_mul_dot_async<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
1919
where
2020
Rhs: ArrayForm<N>,
2121
T: Mul<Rhs::Elem, Output: AddAssign>;
@@ -35,7 +35,7 @@ pub trait ArrayPartialMulDot<T, const N: usize>: Array + AsSlice<Item = T>
3535

3636
impl<T, const N: usize> ArrayPartialMulDot<T, N> for [T; N]
3737
{
38-
fn try_mul_dot<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
38+
fn partial_mul_dot<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
3939
where
4040
Rhs: ArrayForm<N>,
4141
T: Mul<Rhs::Elem, Output: AddAssign>
@@ -63,7 +63,7 @@ impl<T, const N: usize> ArrayPartialMulDot<T, N> for [T; N]
6363
value
6464
}
6565

66-
async fn try_mul_dot_async<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
66+
async fn partial_mul_dot_async<Rhs>(self, rhs: Rhs) -> Option<<T as Mul<Rhs::Elem>>::Output>
6767
where
6868
Rhs: ArrayForm<N>,
6969
T: Mul<Rhs::Elem, Output: AddAssign>
@@ -103,7 +103,7 @@ impl<T, const N: usize> ArrayPartialMulDot<T, N> for [T; N]
103103
T: Mul<Rhs::Elem, Output = U>,
104104
U: AddAssign
105105
{
106-
if let Some(x) = self.try_mul_dot_async(rhs).await
106+
if let Some(x) = self.partial_mul_dot_async(rhs).await
107107
{
108108
bias += x
109109
}

src/ops/_1d/product.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ use super::{ArrayDivideAndConquer, ArrayFold, ArrayReduce};
88
#[const_trait]
99
pub trait ArrayPartialProduct<T, const N: usize>: Array + AsSlice<Item = T>
1010
{
11-
fn try_product(self) -> Option<T>
11+
fn partial_product(self) -> Option<T>
1212
where
1313
T: MulAssign;
1414
fn product_from<P>(self, from: P) -> P
1515
where
1616
P: MulAssign<T>;
17-
async fn try_product_async(self) -> Option<T>
17+
async fn partial_product_async(self) -> Option<T>
1818
where
1919
T: MulAssign;
2020
}
2121

2222
impl<T, const N: usize> ArrayPartialProduct<T, N> for [T; N]
2323
{
24-
fn try_product(self) -> Option<T>
24+
fn partial_product(self) -> Option<T>
2525
where
2626
T: MulAssign
2727
{
@@ -39,7 +39,7 @@ impl<T, const N: usize> ArrayPartialProduct<T, N> for [T; N]
3939
x
4040
})
4141
}
42-
async fn try_product_async(self) -> Option<T>
42+
async fn partial_product_async(self) -> Option<T>
4343
where
4444
T: MulAssign
4545
{

src/ops/_1d/proj.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ impl<T, const N: usize> ArrayProj<T, N> for [T; N]
2525
{
2626
return private::empty()
2727
}
28-
let uv = self.try_mul_dot(rhs);
29-
let uu = self.try_magnitude_squared();
28+
let uv = self.partial_mul_dot(rhs);
29+
let uu = self.partial_magnitude_squared();
3030
let a = unsafe {
3131
uv.unwrap_unchecked()/uu.unwrap_unchecked()
3232
};
@@ -41,8 +41,8 @@ impl<T, const N: usize> ArrayProj<T, N> for [T; N]
4141
return private::empty()
4242
}
4343
let (uv, uu) = core::future::join!(
44-
self.try_mul_dot_async(rhs),
45-
self.try_magnitude_squared_async()
44+
self.partial_mul_dot_async(rhs),
45+
self.partial_magnitude_squared_async()
4646
).await;
4747
let a = unsafe {
4848
uv.unwrap_unchecked()/uu.unwrap_unchecked()

0 commit comments

Comments
 (0)