Function dbl [src]

Double a secp256k1 point.

Prototype

pub fn dbl(p: Secp256k1) Secp256k1

Parameters

p: Secp256k1

Source

pub fn dbl(p: Secp256k1) Secp256k1 { var t0 = p.y.sq(); var Z3 = t0.dbl(); Z3 = Z3.dbl(); Z3 = Z3.dbl(); var t1 = p.y.mul(p.z); var t2 = p.z.sq(); // b3 = (2^2)^2 + 2^2 + 1 const t2_4 = t2.dbl().dbl(); t2 = t2_4.dbl().dbl().add(t2_4).add(t2); var X3 = t2.mul(Z3); var Y3 = t0.add(t2); Z3 = t1.mul(Z3); t1 = t2.dbl(); t2 = t1.add(t2); t0 = t0.sub(t2); Y3 = t0.mul(Y3); Y3 = X3.add(Y3); t1 = p.x.mul(p.y); X3 = t0.mul(t1); X3 = X3.dbl(); return .{ .x = X3, .y = Y3, .z = Z3, }; }