96 | @@ -97,7 +97,7 @@ static int secp256k1_gej_has_quad_y_var(const secp256k1_gej *a);
97 |
98 | /** Set r equal to the double of a. If rzr is not-NULL, r->z = a->z * *rzr (where infinity means an implicit z = 0).
99 | * a may not be zero. Constant time. */
100 | -static void secp256k1_gej_double_nonzero(secp256k1_gej *r, const secp256k1_gej *a, secp256k1_fe *rzr);
101 | +static void secp256k1_gej_double_nonzero(secp256k1_gej *r, const secp256k1_gej *a);
102 |
103 | /** Set r equal to the double of a. If rzr is not-NULL, r->z = a->z * *rzr (where infinity means an implicit z = 0). */
Sorry, again not your change. But I don't understand the rzr comment anyway. The comment indicates that *rzr is an input argument but in the code it's an output argument. Or am I just reading it in the wrong way?
The comment is giving an algebraic identity, not a procedure. rzr stores the value such that r->z == a->z * *rzr
I don't know how to write it as a procedure where it won't sound like it's computing an expensive inverse inside the function.
Ah, uh, sure. I guess == would have helped me already.
/** Set r equal to the double of a. If rzr is not-NULL, then this sets *rzr such that r->z == a->z * *rzr (where infinity means an implicit z = 0). */