Some (easy) cleanups as suggested from @ebfull.

Thanks!
This commit is contained in:
Michele Orrù 2017-08-23 20:26:56 +02:00
parent 2ac2d1213d
commit 9846ad2d17
3 changed files with 7 additions and 3 deletions

View File

@ -158,7 +158,7 @@ impl Field for Fq2 {
impl SqrtField for Fq2 {
fn legendre(&self) -> ::LegendreSymbol {
Fq2::norm(&self).legendre()
self.norm().legendre()
}
fn sqrt(&self) -> Option<Self> {
@ -578,7 +578,7 @@ fn bench_fq2_sqrt(b: &mut ::test::Bencher) {
#[test]
fn fq2_field_tests() {
use ::PrimeField;
::tests::field::random_field_tests::<Fq2>();
::tests::field::random_sqrt_tests::<Fq2>();
::tests::field::random_frobenius_tests::<Fq2, _>(super::fq::Fq::char(), 13);

View File

@ -554,6 +554,7 @@ impl Fr {
impl SqrtField for Fr {
fn legendre(&self) -> ::LegendreSymbol {
// s = self^((r - 1) // 2)
let s = self.pow([0x7fffffff80000000, 0xa9ded2017fff2dff, 0x199cec0404d0ec02, 0x39f6d3a994cebea4]);
if s == Self::zero() { Zero }
else if s == Self::one() { QuadraticResidue }

View File

@ -1,5 +1,5 @@
use rand::{Rng, SeedableRng, XorShiftRng};
use ::{SqrtField, Field, PrimeField};
use ::{SqrtField, Field, PrimeField, LegendreSymbol};
pub fn random_frobenius_tests<F: Field, C: AsRef<[u64]>>(characteristic: C, maxpower: usize) {
let mut rng = XorShiftRng::from_seed([0x5dbe6259, 0x8d313d76, 0x3237db17, 0xe5bc0654]);
@ -26,6 +26,7 @@ pub fn random_sqrt_tests<F: SqrtField>() {
let a = F::rand(&mut rng);
let mut b = a;
b.square();
assert_eq!(b.legendre(), LegendreSymbol::QuadraticResidue);
let b = b.sqrt().unwrap();
let mut negb = b;
@ -38,6 +39,8 @@ pub fn random_sqrt_tests<F: SqrtField>() {
for _ in 0..10000 {
let mut b = c;
b.square();
assert_eq!(b.legendre(), LegendreSymbol::QuadraticResidue);
b = b.sqrt().unwrap();
if b != c {