#include #include #include #include #include #include "../../include/pari/pari.h" #include "../currTime.h" #define cputime currTime #define REPEAT_TIMES_CONTROL (1<<24) double get_cost_for_log( int len) { return (double)len * sqrt((double)len) ; } void init_pari_version(ulong *major, ulong *minor, ulong *patch) { const ulong mask = (1<>= PARI_VERSION_SHIFT; *minor = n & mask; n >>= PARI_VERSION_SHIFT; *major = n; } void test_log_performance() { int lens[]= { 20,30,40,50,60,70,80,90,100, 125,158,199,251,316,398,501,630,794,1000, 1258,1584,1995,2511,3162,3981,5011,6309,7943,10000, 17782,31622,56234,100000, }; double st; double time_cost; int n; // repeat times int prec; // precision in digital int precInBits; // precison in bits GEN x, y, z; unsigned long ltop; unsigned long long_prec; // precision in limbs ulong major, minor, patch; int i; init_pari_version (&major, &minor, &patch); printf ("%s\n", PARIVERSION); printf ("Version: %d.%d.%d\n", major, minor, patch); #ifdef pari_version printf ("Library version: %s\n", pari_version ()); #endif pari_init (20000000, 1000); printf("Test performance of Pari function mplog\n"); for (i=0;i=1.0) break; n*=2; } st= st*1000.00; //convert to ms printf ("%d:", prec); printf(" took %f ms (%d eval in %f ms)\n", st/n,n,st); } } int main(int argc, char* argv[]) { test_log_performance(); return 0; }