mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-08 16:53:07 +00:00
frob format
This commit is contained in:
parent
ecde3d13b1
commit
37ad340774
@ -385,8 +385,8 @@ pub fn gen_fp12_sparse() -> Fp12 {
|
||||
|
||||
fn frob_fp6(n: usize, c: Fp6) -> Fp6 {
|
||||
let n = n % 6;
|
||||
let frob_t1 = frob_t1(n);
|
||||
let frob_t2 = frob_t2(n);
|
||||
let frob_t1 = FROB_T1[n];
|
||||
let frob_t2 = FROB_T2[n];
|
||||
|
||||
if n % 2 != 0 {
|
||||
Fp6 {
|
||||
@ -411,81 +411,187 @@ pub fn frob_fp12(n: usize, f: Fp12) -> Fp12 {
|
||||
}
|
||||
}
|
||||
|
||||
fn frob_t1(n: usize) -> Fp2 {
|
||||
let pair = match n {
|
||||
0 => [U256::one(), U256::zero()],
|
||||
1 => [
|
||||
U256::from_str("0x2fb347984f7911f74c0bec3cf559b143b78cc310c2c3330c99e39557176f553d")
|
||||
.unwrap(),
|
||||
U256::from_str("0x16c9e55061ebae204ba4cc8bd75a079432ae2a1d0b7c9dce1665d51c640fcba2")
|
||||
.unwrap(),
|
||||
],
|
||||
2 => [
|
||||
U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48")
|
||||
.unwrap(),
|
||||
U256::zero(),
|
||||
],
|
||||
3 => [
|
||||
U256::from_str("0x856e078b755ef0abaff1c77959f25ac805ffd3d5d6942d37b746ee87bdcfb6d")
|
||||
.unwrap(),
|
||||
U256::from_str("0x4f1de41b3d1766fa9f30e6dec26094f0fdf31bf98ff2631380cab2baaa586de")
|
||||
.unwrap(),
|
||||
],
|
||||
4 => [
|
||||
U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(),
|
||||
U256::zero(),
|
||||
],
|
||||
5 => [
|
||||
U256::from_str("0x28be74d4bb943f51699582b87809d9caf71614d4b0b71f3a62e913ee1dada9e4")
|
||||
.unwrap(),
|
||||
U256::from_str("0x14a88ae0cb747b99c2b86abcbe01477a54f40eb4c3f6068dedae0bcec9c7aac7")
|
||||
.unwrap(),
|
||||
],
|
||||
_ => panic!(),
|
||||
};
|
||||
const FROB_T1: [Fp2; 6] = [
|
||||
Fp2 {
|
||||
re: Fp { val: pair[0] },
|
||||
im: Fp { val: pair[1] },
|
||||
}
|
||||
}
|
||||
re: Fp { val: U256::one() },
|
||||
im: Fp { val: U256::zero() },
|
||||
},
|
||||
Fp2 {
|
||||
re: Fp {
|
||||
val: U256([
|
||||
0x99e39557176f553d,
|
||||
0xb78cc310c2c3330c,
|
||||
0x4c0bec3cf559b143,
|
||||
0x2fb347984f7911f7,
|
||||
]),
|
||||
},
|
||||
im: Fp {
|
||||
val: U256([
|
||||
0x1665d51c640fcba2,
|
||||
0x32ae2a1d0b7c9dce,
|
||||
0x4ba4cc8bd75a0794,
|
||||
0x16c9e55061ebae20,
|
||||
]),
|
||||
},
|
||||
},
|
||||
Fp2 {
|
||||
re: Fp {
|
||||
val: U256([
|
||||
0xe4bd44e5607cfd48,
|
||||
0xc28f069fbb966e3d,
|
||||
0x5e6dd9e7e0acccb0,
|
||||
0x30644e72e131a029,
|
||||
]),
|
||||
},
|
||||
im: Fp { val: U256::zero() },
|
||||
},
|
||||
Fp2 {
|
||||
re: Fp {
|
||||
val: U256([
|
||||
0x7b746ee87bdcfb6d,
|
||||
0x805ffd3d5d6942d3,
|
||||
0xbaff1c77959f25ac,
|
||||
0x856e078b755ef0a,
|
||||
]),
|
||||
},
|
||||
im: Fp {
|
||||
val: U256([
|
||||
0x380cab2baaa586de,
|
||||
0x0fdf31bf98ff2631,
|
||||
0xa9f30e6dec26094f,
|
||||
0x4f1de41b3d1766f,
|
||||
]),
|
||||
},
|
||||
},
|
||||
Fp2 {
|
||||
re: Fp {
|
||||
val: U256([
|
||||
0x5763473177fffffe,
|
||||
0xd4f263f1acdb5c4f,
|
||||
0x59e26bcea0d48bac,
|
||||
0x0,
|
||||
]),
|
||||
},
|
||||
im: Fp { val: U256::zero() },
|
||||
},
|
||||
Fp2 {
|
||||
re: Fp {
|
||||
val: U256([
|
||||
0x62e913ee1dada9e4,
|
||||
0xf71614d4b0b71f3a,
|
||||
0x699582b87809d9ca,
|
||||
0x28be74d4bb943f51,
|
||||
]),
|
||||
},
|
||||
im: Fp {
|
||||
val: U256([
|
||||
0xedae0bcec9c7aac7,
|
||||
0x54f40eb4c3f6068d,
|
||||
0xc2b86abcbe01477a,
|
||||
0x14a88ae0cb747b99,
|
||||
]),
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
fn frob_t2(n: usize) -> Fp2 {
|
||||
let pair = match n {
|
||||
0 => [U256::one(), U256::zero()],
|
||||
1 => [
|
||||
U256::from_str("0x5b54f5e64eea80180f3c0b75a181e84d33365f7be94ec72848a1f55921ea762")
|
||||
.unwrap(),
|
||||
U256::from_str("0x2c145edbe7fd8aee9f3a80b03b0b1c923685d2ea1bdec763c13b4711cd2b8126")
|
||||
.unwrap(),
|
||||
],
|
||||
2 => [
|
||||
U256::from_str("0x59e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe").unwrap(),
|
||||
U256::zero(),
|
||||
],
|
||||
3 => [
|
||||
U256::from_str("0xbc58c6611c08dab19bee0f7b5b2444ee633094575b06bcb0e1a92bc3ccbf066")
|
||||
.unwrap(),
|
||||
U256::from_str("0x23d5e999e1910a12feb0f6ef0cd21d04a44a9e08737f96e55fe3ed9d730c239f")
|
||||
.unwrap(),
|
||||
],
|
||||
4 => [
|
||||
U256::from_str("0x30644e72e131a0295e6dd9e7e0acccb0c28f069fbb966e3de4bd44e5607cfd48")
|
||||
.unwrap(),
|
||||
U256::zero(),
|
||||
],
|
||||
5 => [
|
||||
U256::from_str("0x1ee972ae6a826a7d1d9da40771b6f589de1afb54342c724fa97bda050992657f")
|
||||
.unwrap(),
|
||||
U256::from_str("0x10de546ff8d4ab51d2b513cdbb25772454326430418536d15721e37e70c255c9")
|
||||
.unwrap(),
|
||||
],
|
||||
_ => panic!(),
|
||||
};
|
||||
const FROB_T2: [Fp2; 6] = [
|
||||
Fp2 {
|
||||
re: Fp { val: pair[0] },
|
||||
im: Fp { val: pair[1] },
|
||||
}
|
||||
}
|
||||
re: Fp { val: U256::one() },
|
||||
im: Fp { val: U256::zero() },
|
||||
},
|
||||
Fp2 {
|
||||
re: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0x848a1f55921ea762,
|
||||
0xd33365f7be94ec72,
|
||||
0x80f3c0b75a181e84,
|
||||
0x5b54f5e64eea801,
|
||||
]),
|
||||
}
|
||||
},
|
||||
im: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0xc13b4711cd2b8126,
|
||||
0x3685d2ea1bdec763,
|
||||
0x9f3a80b03b0b1c92,
|
||||
0x2c145edbe7fd8aee,
|
||||
]),
|
||||
}
|
||||
},
|
||||
},
|
||||
Fp2 {
|
||||
re: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0x5763473177fffffe,
|
||||
0xd4f263f1acdb5c4f,
|
||||
0x59e26bcea0d48bac,
|
||||
0x0,
|
||||
]),
|
||||
}
|
||||
},
|
||||
im: { Fp { val: U256::zero() } },
|
||||
},
|
||||
Fp2 {
|
||||
re: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0x0e1a92bc3ccbf066,
|
||||
0xe633094575b06bcb,
|
||||
0x19bee0f7b5b2444e,
|
||||
0xbc58c6611c08dab,
|
||||
]),
|
||||
}
|
||||
},
|
||||
im: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0x5fe3ed9d730c239f,
|
||||
0xa44a9e08737f96e5,
|
||||
0xfeb0f6ef0cd21d04,
|
||||
0x23d5e999e1910a12,
|
||||
]),
|
||||
}
|
||||
},
|
||||
},
|
||||
Fp2 {
|
||||
re: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0xe4bd44e5607cfd48,
|
||||
0xc28f069fbb966e3d,
|
||||
0x5e6dd9e7e0acccb0,
|
||||
0x30644e72e131a029,
|
||||
]),
|
||||
}
|
||||
},
|
||||
im: { Fp { val: U256::zero() } },
|
||||
},
|
||||
Fp2 {
|
||||
re: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0xa97bda050992657f,
|
||||
0xde1afb54342c724f,
|
||||
0x1d9da40771b6f589,
|
||||
0x1ee972ae6a826a7d,
|
||||
]),
|
||||
}
|
||||
},
|
||||
im: {
|
||||
Fp {
|
||||
val: U256([
|
||||
0x5721e37e70c255c9,
|
||||
0x54326430418536d1,
|
||||
0xd2b513cdbb257724,
|
||||
0x10de546ff8d4ab51,
|
||||
]),
|
||||
}
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
fn frob_z(n: usize) -> Fp2 {
|
||||
let pair = match n {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
use anyhow::Result;
|
||||
use ethereum_types::U256;
|
||||
|
||||
use crate::bn254_arithmetic::{fp12_to_vec, gen_fp12, gen_fp12_sparse, frob_fp12, Fp12};
|
||||
use crate::bn254_arithmetic::{fp12_to_vec, frob_fp12, gen_fp12, gen_fp12_sparse, Fp12};
|
||||
use crate::cpu::kernel::aggregator::KERNEL;
|
||||
use crate::cpu::kernel::interpreter::run_interpreter;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user