Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix tests for Modulus plus one div four #552

Merged
merged 4 commits into from
Dec 21, 2022

Conversation

rubdos
Copy link
Contributor

@rubdos rubdos commented Dec 20, 2022

Description

In the field tests, when (modulus + 1) / 4 is a limb shorter than the modulus, the comparison failed because of trailing zeroes.

This fix is a bit ugly, but works for the curve that I'm implementing. I'm not sure what would be cleaner, suggestions welcome. BigUint::from() would've been a lot cleaner, but it takes no &[u64]; how is that generally resolved in Arkworks?

What kind of unit test would you want? I intend to submit the curve I mention above when I'm sure I can show nothing-up-my-sleeves. FWIW, the kind of curves that trigger this condition, are curves that are slightly bigger than a nice round n*64 bits in length; e.g. curves that embed existing 256-bit curves.


  • Targeted PR against correct branch (master)
  • Linked to GitHub issue with discussion and accepted design OR have an explanation in the PR that describes this work.
  • Wrote unit tests
  • Updated relevant documentation in the code
  • Added a relevant changelog entry to the Pending section in CHANGELOG.md
  • Re-reviewed Files changed in the GitHub PR explorer

@rubdos rubdos requested review from a team as code owners December 20, 2022 18:27
@rubdos rubdos requested review from Pratyush, mmagician and weikengchen and removed request for a team December 20, 2022 18:27
When (modulus + 1) / 4 is a limb shorter than the modulus, the
comparison failed because of trailing zeroes.
@rubdos rubdos force-pushed the modulus-plus-one-div-four-fix branch from 8ea9226 to a453241 Compare December 20, 2022 18:28
Copy link
Member

@Pratyush Pratyush left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great, thanks for the fix!

test-templates/src/fields.rs Outdated Show resolved Hide resolved
Co-authored-by: Ruben De Smet <ruben.de.smet@rubdos.be>
@Pratyush Pratyush changed the title Modulus plus one div four fix Fix tests for Modulus plus one div four Dec 21, 2022
@Pratyush Pratyush merged commit 6d20923 into arkworks-rs:master Dec 21, 2022
@rubdos rubdos deleted the modulus-plus-one-div-four-fix branch December 21, 2022 08:32
andrewmilson added a commit to andrewmilson/algebra that referenced this pull request Jan 1, 2023
* upstream/master: (29 commits)
  Fix some clippy lints (arkworks-rs#570)
  Correct tag name & complete command suggestion (arkworks-rs#569)
  Open a "release-PR" against a `releases` branch (arkworks-rs#566)
  Allow to overwrite default impl of `msm` in TwistedEdwards form (arkworks-rs#567)
  Remove poly-benches. (arkworks-rs#558)
  DO NOT MERGE YET. Release 0.4 (arkworks-rs#512)
  otherwise downstream users that have not migrated will not see warning (arkworks-rs#563)
  use `into_bigint()` in `Debug` for `Fp<P, N>` (arkworks-rs#562)
  Add `frobenius_map_in_place` (arkworks-rs#557)
  Fix test_sw_properties for some cofactor groups (arkworks-rs#555)
  Move h2c tests to test-templates (arkworks-rs#554)
  impl `CanonicalSerialize/Deserialize` for `BigUint` (arkworks-rs#551)
  Fix MontFp issue in fields with 64 * k bits (arkworks-rs#550)
  Fix tests for Modulus plus one div four (arkworks-rs#552)
  fix (arkworks-rs#547)
  Rename all `*Parameters` to `*Config` (arkworks-rs#545)
  Fix doc-comment on `SWUMap` and CamelCase `(CO)DOMAIN`
  Small cleanups in hash-to-curve (arkworks-rs#544)
  Allow to overwrite the default implementation of `msm` (arkworks-rs#528)
  Move `multi_miller_loop` and `final_exponentiation` into `BW6Config` (arkworks-rs#542)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants