Skip to content

Commit 61a7f5b

Browse files
bors[bot]cuviper
andcommitted
Merge #57
57: Implement Zero::set_zero and One::set_one r=cuviper a=cuviper Co-authored-by: Josh Stone <[email protected]>
2 parents 813e021 + 1ed6add commit 61a7f5b

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ features = ["std", "serde", "rand"]
1919
[dependencies]
2020

2121
[dependencies.num-traits]
22-
version = "0.2.4"
22+
version = "0.2.7"
2323
default-features = false
2424

2525
[dependencies.serde]

src/lib.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -996,6 +996,12 @@ impl<T: Clone + Num> Zero for Complex<T> {
996996
fn is_zero(&self) -> bool {
997997
self.re.is_zero() && self.im.is_zero()
998998
}
999+
1000+
#[inline]
1001+
fn set_zero(&mut self) {
1002+
self.re.set_zero();
1003+
self.im.set_zero();
1004+
}
9991005
}
10001006

10011007
impl<T: Clone + Num> One for Complex<T> {
@@ -1008,6 +1014,12 @@ impl<T: Clone + Num> One for Complex<T> {
10081014
fn is_one(&self) -> bool {
10091015
self.re.is_one() && self.im.is_zero()
10101016
}
1017+
1018+
#[inline]
1019+
fn set_one(&mut self) {
1020+
self.re.set_one();
1021+
self.im.set_zero();
1022+
}
10111023
}
10121024

10131025
macro_rules! write_complex {
@@ -2384,4 +2396,30 @@ mod test {
23842396
assert_eq!(v.iter().product::<Complex64>(), _0_1i);
23852397
assert_eq!(v.into_iter().product::<Complex64>(), _0_1i);
23862398
}
2399+
2400+
#[test]
2401+
fn test_zero() {
2402+
let zero = Complex64::zero();
2403+
assert!(zero.is_zero());
2404+
2405+
let mut c = Complex::new(1.23, 4.56);
2406+
assert!(!c.is_zero());
2407+
assert_eq!(&c + &zero, c);
2408+
2409+
c.set_zero();
2410+
assert!(c.is_zero());
2411+
}
2412+
2413+
#[test]
2414+
fn test_one() {
2415+
let one = Complex64::one();
2416+
assert!(one.is_one());
2417+
2418+
let mut c = Complex::new(1.23, 4.56);
2419+
assert!(!c.is_one());
2420+
assert_eq!(&c * &one, c);
2421+
2422+
c.set_one();
2423+
assert!(c.is_one());
2424+
}
23872425
}

0 commit comments

Comments
 (0)