This commit is contained in:
Dmitry Vagner 2022-12-29 14:03:52 -08:00
parent 053a0206f1
commit de8637ce8c
5 changed files with 21 additions and 11 deletions

View File

@ -731,6 +731,8 @@ pub fn miller_loop(p: Curve, q: TwistedCurve) -> Fp12 {
pub fn tate(p: Curve, q: TwistedCurve) -> Fp12 {
let mut out = miller_loop(p, q);
println!("POSTMILLER: {:#?}", out);
let inv = inv_fp12(out);
out = frob_fp12(6, out);
out = mul_fp12(out, inv);
@ -738,7 +740,12 @@ pub fn tate(p: Curve, q: TwistedCurve) -> Fp12 {
let acc = frob_fp12(2, out);
out = mul_fp12(out, acc);
println!("PREPOWER: {:#?}", out);
let pow = power(out);
println!("POWER: {:#?}", pow);
out = frob_fp12(3, out);
mul_fp12(out, pow)

View File

@ -1,11 +1,11 @@
/// Note: uncomment this to test
global test_mul_fp12:
// stack: inA, f, f', inB, g, g', mul_dest, inA, inB, out, ret_stack, out
// stack: inA, f, f', inB, g, g', mul_dest, inA, inB, out, return_fp12_on_stack, out
%store_fp12
// stack: inB, g, g', mul_dest, inA, inB, out, ret_stack, out
// stack: inB, g, g', mul_dest, inA, inB, out, return_fp12_on_stack, out
%store_fp12
// stack: mul_dest, inA, inB, out, ret_stack, out
// stack: mul_dest, inA, inB, out, return_fp12_on_stack, out
JUMP
///////////////////////////////////////

View File

@ -1,7 +1,7 @@
global test_pow:
// stack: ptr, f, ptr, out, ret_stack, out
// stack: ptr, f, ptr, out, return_fp12_on_stack, out
%store_fp12
// stack: ptr, out, ret_stack, out
// stack: ptr, out, return_fp12_on_stack, out
%jump(power)
/// def power(acc):

View File

@ -1071,7 +1071,7 @@
%mstore_kernel_general
%endmacro
global ret_stack:
global return_fp12_on_stack:
// stack: out
%load_fp12
%jump(0xdeadbeef)

View File

@ -46,7 +46,7 @@ fn make_mul_stack(f: Fp12, g: Fp12, mul_label: &str) -> Vec<U256> {
in0,
in1,
out,
make_label("ret_stack"),
make_label("return_fp12_on_stack"),
out,
],
])
@ -133,7 +133,7 @@ fn test_power() -> Result<()> {
let stack = make_stack(vec![
vec![ptr],
fp12_to_vec(f),
vec![ptr, out, make_label("ret_stack"), out],
vec![ptr, out, make_label("return_fp12_on_stack"), out],
]);
let output: Vec<U256> = get_output("test_pow", stack);
@ -151,9 +151,12 @@ fn make_tate_stack(p: Curve, q: TwistedCurve) -> Vec<U256> {
let p_: Vec<U256> = p.into_iter().collect();
let q_: Vec<U256> = q.into_iter().flatten().collect();
let ret_stack = make_label("ret_stack");
make_stack(vec![vec![ptr], p_, q_, vec![ptr, out, ret_stack, out]])
make_stack(vec![
vec![ptr],
p_,
q_,
vec![ptr, out, make_label("return_fp12_on_stack"), out],
])
}
#[test]