-rw-r--r-- 1564 high-ctidh-20210504/costpoly.c
#include <assert.h> #include <string.h> #include <stdio.h> #include "poly.h" int main() { printf("tree1 = (0"); for (long long n = 1;n <= 64;++n) { fp P[2*n]; long long s = poly_tree1size(n); fp T[s]; fp_mulsq_count = 0; poly_tree1(T,P,n); printf(", %lld",fp_mulsq_count); } printf(")\n"); printf("multiprod2 = (0"); for (long long n = 1;n <= 64;++n) { fp T[3*n]; fp_mulsq_count = 0; poly_multiprod2(T,n); printf(", %lld",fp_mulsq_count); } printf(")\n"); printf("multiprod2_selfreciprocal = (0"); for (long long n = 1;n <= 64;++n) { fp T[3*n]; fp_mulsq_count = 0; poly_multiprod2_selfreciprocal(T,n); printf(", %lld",fp_mulsq_count); } printf(")\n"); for (long long post = 0;post < 2;++post) { if (post) printf("multieval_postcompute = {\n"); else printf("multieval_precompute = {\n"); for (long long n = 2;n <= 32;n += 2) { fp P[2*n]; long long s = poly_tree1size(n); fp T[s]; poly_tree1(T,P,n); printf(" %lld:{",n); for (long long flen = 1;flen <= 64;flen += 2) { fp v[n]; fp f[flen]; long long t = poly_multieval_precomputesize(n,flen); fp precomp[t]; fp_mulsq_count = 0; poly_multieval_precompute(precomp,n,flen,P,T); if (post) { fp_mulsq_count = 0; poly_multieval_postcompute(v,n,f,flen,P,T,precomp); } printf("%lld:%lld,",flen,fp_mulsq_count); } printf("},\n"); } printf("}\n"); } return 0; }