()
| 778 | |
| 779 | #[test] |
| 780 | fn test_chunk_dense_dense_mul_numerator_zero() { |
| 781 | let mut prng = ChaCha20Rng::seed_from_u64(0); |
| 782 | let f = ark_bn254::Fq12::rand(&mut prng); |
| 783 | let f_n = ark_bn254::Fq12::new(ark_bn254::Fq6::ONE, f.c1 / f.c0); |
| 784 | |
| 785 | let g_n = ark_bn254::Fq12::new(ark_bn254::Fq6::ONE, -f.c1 / f.c0); |
| 786 | |
| 787 | let h = f_n * g_n; |
| 788 | let h_n = ark_bn254::Fq12::new(ark_bn254::Fq6::ONE, h.c1 / h.c0); |
| 789 | |
| 790 | let (hint_out, is_invalid_input, h_scr, mul_hints) = chunk_dense_dense_mul(f_n.c1, g_n.c1); |
| 791 | assert!(is_invalid_input); |
| 792 | |
| 793 | let f_n_c1 = DataType::Fp6Data(f_n.c1); |
| 794 | let g_n_c1 = DataType::Fp6Data(g_n.c1); |
| 795 | let h_n_c1 = DataType::Fp6Data(h_n.c1); |
| 796 | let hint_out = DataType::Fp6Data(hint_out); |
| 797 | |
| 798 | let mut preimage_hints = vec![]; |
| 799 | let f6_hints = f_n_c1.to_witness(ElementType::Fp6); |
| 800 | let g6_hints = g_n_c1.to_witness(ElementType::Fp6); |
| 801 | let h6_hints = h_n_c1.to_witness(ElementType::Fp6); |
| 802 | preimage_hints.extend_from_slice(&f6_hints); |
| 803 | preimage_hints.extend_from_slice(&g6_hints); |
| 804 | preimage_hints.extend_from_slice(&h6_hints); |
| 805 | |
| 806 | let bitcom_scr = script! { |
| 807 | {hint_out.to_hash().as_hint_type().push()} |
| 808 | {Fq::toaltstack()} |
| 809 | {g_n_c1.to_hash().as_hint_type().push()} |
| 810 | {Fq::toaltstack()} |
| 811 | {f_n_c1.to_hash().as_hint_type().push()} |
| 812 | {Fq::toaltstack()} |
| 813 | }; |
| 814 | |
| 815 | let hash_scr = script! { |
| 816 | {hash_messages(vec![ElementType::Fp6, ElementType::Fp6, ElementType::Fp6])} |
| 817 | OP_TRUE |
| 818 | }; |
| 819 | |
| 820 | let tap_len = h_scr.len() + hash_scr.len(); |
| 821 | let scr = script! { |
| 822 | for h in mul_hints { |
| 823 | {h.push()} |
| 824 | } |
| 825 | for h in preimage_hints { |
| 826 | {h.push()} |
| 827 | } |
| 828 | {bitcom_scr} |
| 829 | {h_scr} |
| 830 | {hash_scr} |
| 831 | }; |
| 832 | let res = execute_script(scr); |
| 833 | if res.final_stack.len() > 1 { |
| 834 | for i in 0..res.final_stack.len() { |
| 835 | println!("{i:} {:?}", res.final_stack.get(i)); |
| 836 | } |
| 837 | } |
nothing calls this directly
no test coverage detected