mirror of
https://github.com/status-im/secp256k1.git
synced 2025-02-23 19:28:19 +00:00
Merge bitcoin-core/secp256k1#1030: doc: Fix upper bounds + cleanup in field_5x52_impl.h comment
1287786c7a97eff520ffbd6b0d8b2f99dbfc6371 doc: Add comment to top of field_10x26_impl.h (Elliott Jin) 58da5bd589f61b0e0e9b58388ee3e0da8a2c3c3a doc: Fix upper bounds + cleanup in field_5x52_impl.h comment (Elliott Jin) Pull request description: When reviewing #816 I noticed the upper bounds in the comment at the top of `field_5x52_impl.h` were off by 1 (see `fe_verify`). This PR fixes the upper bounds and also cleans up the comment along the way. ACKs for top commit: real-or-random: ACK 1287786c7a97eff520ffbd6b0d8b2f99dbfc6371 Tree-SHA512: 4b7dadc92451ab1ceb5a547a3101ff37f3ffd0645490563f1f3442ea8d6219f100ed914289d22435c4172d190fa1ff52e37e4464132bb3f9bbcc338488227f7b
This commit is contained in:
commit
0b83b203e1
@ -11,6 +11,15 @@
|
||||
#include "field.h"
|
||||
#include "modinv32_impl.h"
|
||||
|
||||
/** See the comment at the top of field_5x52_impl.h for more details.
|
||||
*
|
||||
* Here, we represent field elements as 10 uint32_t's in base 2^26, least significant first,
|
||||
* where limbs can contain >26 bits.
|
||||
* A magnitude M means:
|
||||
* - 2*M*(2^22-1) is the max (inclusive) of the most significant limb
|
||||
* - 2*M*(2^26-1) is the max (inclusive) of the remaining limbs
|
||||
*/
|
||||
|
||||
#ifdef VERIFY
|
||||
static void secp256k1_fe_verify(const secp256k1_fe *a) {
|
||||
const uint32_t *d = a->n;
|
||||
|
@ -22,11 +22,18 @@
|
||||
#endif
|
||||
|
||||
/** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F,
|
||||
* represented as 5 uint64_t's in base 2^52. The values are allowed to contain >52 each. In particular,
|
||||
* each FieldElem has a 'magnitude' associated with it. Internally, a magnitude M means each element
|
||||
* is at most M*(2^53-1), except the most significant one, which is limited to M*(2^49-1). All operations
|
||||
* accept any input with magnitude at most M, and have different rules for propagating magnitude to their
|
||||
* output.
|
||||
* represented as 5 uint64_t's in base 2^52, least significant first. Note that the limbs are allowed to
|
||||
* contain >52 bits each.
|
||||
*
|
||||
* Each field element has a 'magnitude' associated with it. Internally, a magnitude M means:
|
||||
* - 2*M*(2^48-1) is the max (inclusive) of the most significant limb
|
||||
* - 2*M*(2^52-1) is the max (inclusive) of the remaining limbs
|
||||
*
|
||||
* Operations have different rules for propagating magnitude to their outputs. If an operation takes a
|
||||
* magnitude M as a parameter, that means the magnitude of input field elements can be at most M (inclusive).
|
||||
*
|
||||
* Each field element also has a 'normalized' flag. A field element is normalized if its magnitude is either
|
||||
* 0 or 1, and its value is already reduced modulo the order of the field.
|
||||
*/
|
||||
|
||||
#ifdef VERIFY
|
||||
|
Loading…
x
Reference in New Issue
Block a user