ff: PrimeField: BitAnd<u64, Output = u64> + Shr<u32, Output = Self>

This commit is contained in:
Jack Grigg
2020-04-22 10:45:51 +12:00
parent 1fdca393bb
commit 08500ee712
7 changed files with 348 additions and 17 deletions

View File

@@ -1931,6 +1931,79 @@ fn test_fq_mul_assign() {
}
}
#[test]
fn test_fq_shr() {
let mut a = Fq::from_repr(FqRepr([
0xaa5cdd6172847ffd,
0x43242c06aed55287,
0x9ddd5b312f3dd104,
0xc5541fd48046b7e7,
0x16080cf4071e0b05,
0x1225f2901aea514e,
]))
.unwrap();
a = a >> 0;
assert_eq!(
a.into_repr(),
FqRepr([
0xaa5cdd6172847ffd,
0x43242c06aed55287,
0x9ddd5b312f3dd104,
0xc5541fd48046b7e7,
0x16080cf4071e0b05,
0x1225f2901aea514e,
])
);
a = a >> 1;
assert_eq!(
a.into_repr(),
FqRepr([
0xd52e6eb0b9423ffe,
0x21921603576aa943,
0xceeead98979ee882,
0xe2aa0fea40235bf3,
0x0b04067a038f0582,
0x0912f9480d7528a7,
])
);
a = a >> 50;
assert_eq!(
a.into_repr(),
FqRepr([
0x8580d5daaa50f54b,
0xab6625e7ba208864,
0x83fa9008d6fcf3bb,
0x019e80e3c160b8aa,
0xbe52035d4a29c2c1,
0x0000000000000244,
])
);
a = a >> 130;
assert_eq!(
a.into_repr(),
FqRepr([
0xa0fea40235bf3cee,
0x4067a038f0582e2a,
0x2f9480d7528a70b0,
0x0000000000000091,
0x0000000000000000,
0x0000000000000000,
])
);
a = a >> 64;
assert_eq!(
a.into_repr(),
FqRepr([
0x4067a038f0582e2a,
0x2f9480d7528a70b0,
0x0000000000000091,
0x0000000000000000,
0x0000000000000000,
0x0000000000000000,
])
);
}
#[test]
fn test_fq_squaring() {
let a = Fq(FqRepr([

View File

@@ -669,6 +669,67 @@ fn test_fr_mul_assign() {
}
}
#[test]
fn test_fr_shr() {
let mut a = Fr::from_repr(FrRepr([
0xb33fbaec482a283f,
0x997de0d3a88cb3df,
0x9af62d2a9a0e5525,
0x36003ab08de70da1,
]))
.unwrap();
a = a >> 0;
assert_eq!(
a.into_repr(),
FrRepr([
0xb33fbaec482a283f,
0x997de0d3a88cb3df,
0x9af62d2a9a0e5525,
0x36003ab08de70da1,
])
);
a = a >> 1;
assert_eq!(
a.into_repr(),
FrRepr([
0xd99fdd762415141f,
0xccbef069d44659ef,
0xcd7b16954d072a92,
0x1b001d5846f386d0,
])
);
a = a >> 50;
assert_eq!(
a.into_repr(),
FrRepr([
0xbc1a7511967bf667,
0xc5a55341caa4b32f,
0x075611bce1b4335e,
0x00000000000006c0,
])
);
a = a >> 130;
assert_eq!(
a.into_repr(),
FrRepr([
0x01d5846f386d0cd7,
0x00000000000001b0,
0x0000000000000000,
0x0000000000000000,
])
);
a = a >> 64;
assert_eq!(
a.into_repr(),
FrRepr([
0x00000000000001b0,
0x0000000000000000,
0x0000000000000000,
0x0000000000000000,
])
);
}
#[test]
fn test_fr_squaring() {
let a = Fr(FrRepr([