Skip to content

secp256k1: Add additional field64 benchmarks.#3710

Open
davecgh wants to merge 10 commits into
decred:masterfrom
davecgh:secp256k1_field64_benchmarks
Open

secp256k1: Add additional field64 benchmarks.#3710
davecgh wants to merge 10 commits into
decred:masterfrom
davecgh:secp256k1_field64_benchmarks

Conversation

@davecgh

@davecgh davecgh commented Jun 23, 2026

Copy link
Copy Markdown
Member

This requires #3708.

This adds some additional benchmarks for the new FieldVal64 type and performs a bit of light cleanup while here.

@davecgh davecgh added this to the 2.2.0 milestone Jun 23, 2026
valery-osheter-cb and others added 10 commits June 23, 2026 14:53
Introduce FieldVal64, an alternative secp256k1 field element that packs
the value into four uint64 limbs (base 2^64) and stays fully reduced
after every operation.

AI-assisted: developed with the help of an AI coding assistant; all code
reviewed and tested by the author.
Add a test suite for FieldVal64 mirroring the existing FieldVal tests:
serialization round-trips, arithmetic (add, negate, multiply, square),
normalization, inverse, square root, and the bit predicates, plus
randomized checks. Cases that only apply to the unnormalized FieldVal
representation are adjusted since FieldVal64 is always fully reduced.

AI-assisted: developed with the help of an AI coding assistant; all code
reviewed and tested by the author.
Add micro-benchmarks for the FieldVal64 multiply, square, inverse, and
related operations to track the pure Go performance.

AI-assisted: developed with the help of an AI coding assistant; all code
reviewed and tested by the author.
Reorder methods to mirror field.go and tidy the exported doc comments
so the two field backends stay consistent.
Drop Normalize and magnitude tracking since FieldVal64 is always fully
reduced, add MulBy2 through MulBy8 for the common small-constant
multiplications, and back them with a generic MulInt.
Rework the edge-case tests to exercise the 4x64 limbs rather than the
10x26 word boundaries inherited from FieldVal, remove the inconsistent
TestField64ReductionCarry, and ensure the operations remain constant
time, along with assorted small fixes.
This moves some of the FieldVal64 benchmarks to match the order
definition in the 10x26 field for consistency.
@davecgh davecgh force-pushed the secp256k1_field64_benchmarks branch from e1e481c to f24a1c2 Compare June 23, 2026 19:56
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