mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-10 01:33:07 +00:00
miller test passes
This commit is contained in:
parent
ef824110fd
commit
e35644e9e0
@ -686,8 +686,7 @@ fn third_point(m: Fp, p: Curve, q: Curve) -> Curve {
|
||||
fn curve_add(p: Curve, q: Curve) -> Curve {
|
||||
if p == q {
|
||||
curve_double(p)
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
third_point(cord_slope(p, q), p, q)
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,13 +160,7 @@ mul_tangent_2:
|
||||
after_double:
|
||||
// stack: 2*O, retdest, 0xnm, times, O, P, Q, out {100: line}
|
||||
SWAP5 POP SWAP5 POP
|
||||
|
||||
// stack: retdest, 0xnm, times, 2*O, P, Q, out {100: line}
|
||||
|
||||
%pop3 %pop2 %pop2 %pop4
|
||||
%load_fp12
|
||||
%jump(0xdeadbeef)
|
||||
|
||||
JUMP
|
||||
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ use ethereum_types::U256;
|
||||
|
||||
use crate::bn254::{
|
||||
cord, fp12_to_vec, frob_fp12, gen_curve_point, gen_fp12, gen_fp12_sparse,
|
||||
gen_twisted_curve_point, mul_fp12, power, tangent, Curve, Fp12, TwistedCurve,
|
||||
gen_twisted_curve_point, miller_loop, mul_fp12, power, tangent, Curve, Fp12, TwistedCurve,
|
||||
};
|
||||
use crate::cpu::kernel::aggregator::KERNEL;
|
||||
use crate::cpu::kernel::interpreter::run_interpreter;
|
||||
@ -167,73 +167,38 @@ fn test_line() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// fn make_miller_stack(p: [Fp; 2], q: [Fp2; 2]) -> Vec<U256> {
|
||||
// let ptr = U256::from(300);
|
||||
// let out = U256::from(400);
|
||||
#[test]
|
||||
fn test_miller() -> Result<()> {
|
||||
let ptr = U256::from(300);
|
||||
let out = U256::from(400);
|
||||
|
||||
// let p: Vec<U256> = p.into_iter().collect();
|
||||
// let q: Vec<U256> = q.into_iter().flatten().collect();
|
||||
let p: Curve = [U256::one(), U256::from(2)];
|
||||
let q: TwistedCurve = [
|
||||
[
|
||||
U256::from_str("0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed")
|
||||
.unwrap(),
|
||||
U256::from_str("0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2")
|
||||
.unwrap(),
|
||||
],
|
||||
[
|
||||
U256::from_str("0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa")
|
||||
.unwrap(),
|
||||
U256::from_str("0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b")
|
||||
.unwrap(),
|
||||
],
|
||||
];
|
||||
|
||||
// let ret_stack = U256::from(KERNEL.global_labels["ret_stack"]);
|
||||
let p_: Vec<U256> = p.into_iter().collect();
|
||||
let q_: Vec<U256> = q.into_iter().flatten().collect();
|
||||
|
||||
// let mut input = vec![ptr];
|
||||
// input.extend(p);
|
||||
// input.extend(q);
|
||||
// input.extend(vec![ptr, out, ret_stack]);
|
||||
// input.reverse();
|
||||
// input
|
||||
// }
|
||||
let ret_stack = make_label("ret_stack");
|
||||
|
||||
// #[test]
|
||||
// fn test_miller() -> Result<()> {
|
||||
// let p = [U256::from(1), U256::from(2)];
|
||||
// let q = [
|
||||
// [
|
||||
// U256::from_str("0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2")
|
||||
// .unwrap(),
|
||||
// ],
|
||||
// [
|
||||
// U256::from_str("0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x90689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b")
|
||||
// .unwrap(),
|
||||
// ],
|
||||
// ];
|
||||
let initial_stack = make_stack(vec![vec![ptr], p_, q_, vec![ptr, out, ret_stack]]);
|
||||
|
||||
// let test_mill = KERNEL.global_labels["test_miller"];
|
||||
// let stack = make_miller_stack(p, q);
|
||||
let output = get_output("test_miller", initial_stack);
|
||||
let expected = fp12_to_vec(miller_loop(p, q));
|
||||
|
||||
// let output: Vec<U256> = run_interpreter(test_mill, stack)?.stack().to_vec();
|
||||
// let mut expected: Vec<U256> = vec![
|
||||
// U256::from_str("0xbf4dbb7e41fb58122aa29dcced57731d7cbb49b1fe9a73cb13416e1002376da")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x110b019c149b43a7fbd6d42d7553debcbebd35c148f63aaecf72a5fbda451ac6")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x27225e97ee6c877964c8f32e0b54e61ead09c3e818174cd8b5beabe7cd7385e8")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x5762cb6648b4b4c5df8a8874a21d937adf185d91f34e8ccf58f5b39196db02").unwrap(),
|
||||
// U256::from_str("0x463002dc1a426b172f4a1e29486fc11eba01de99b559368139c8ef5271eb37f")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x753dcc72acdffcc45633803f1b555388969dd7c27d2a674a23a228f522480d9")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0xd32a892d29151553101376a6638938135e30126f698a40a73f20c6ac64a4585")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x290afd3e28c223a624d9f5a737f9f9e4b4200b518333844d81acc445fa5910da")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x262e0ee72a8123b741dc113b8e2d207ee8bad011e0f6ae2015439960c789cf78")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x1588e0b23d868d7517e3021e620c69eb1521a49faa9bfcd4cf3a54127d4d14cb")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x1c23a135a7dfa96db62622c5fef4b9751d121523dd39ca1cefeacb3419835a53")
|
||||
// .unwrap(),
|
||||
// U256::from_str("0x2caeb873076ec8f37fa7af265d2966dd0024acbc63bd2b21f323084fc71f4a59")
|
||||
// .unwrap(),
|
||||
// ];
|
||||
// expected.reverse();
|
||||
assert_eq!(output, expected);
|
||||
|
||||
// assert_eq!(output, expected);
|
||||
|
||||
// Ok(())
|
||||
// }
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user