Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
#include <stdio.h>1#include <pari/pari.h>2#include <readline/readline.h>3#include <readline/history.h>4#include <setjmp.h>56jmp_buf env;78int gp_is_interactive(void) { return pari_infile == stdin; }9void gp_err_recover(long numerr) { longjmp(env, numerr); }10void gp_quit(long exitcode) { exit(exitcode); }1112entree functions_gp[]={13{"quit",0,(void*)gp_quit,11,"vD0,L,","quit({status = 0}): quit, return to the system with exit status 'status'."},14{NULL,0,NULL,0,NULL,NULL}};1516#define col(a) term_get_color(NULL, a)1718int main(int argc, char **argv)19{20pari_init(8000000,500000);21pari_add_module(functions_gp);22cb_pari_err_recover = gp_err_recover;23cb_pari_is_interactive = gp_is_interactive;24cb_pari_quit = gp_quit;25sd_colors("lightbg",d_INITRC);26gp_load_gprc();27pari_print_version();28(void)setjmp(env);29while(1)30{31GEN z;32const char *prompt = gp_format_prompt(GP_DATA->prompt);33char *in = readline(prompt);34pari_timer T, Tw;35long time, rtime;3637if (!in) break;38if (!*in) continue;3940add_history(in);41gp_echo_and_log(prompt,in);42timer_start(&T); walltimer_start(&Tw);43z = gp_read_str(in);44time = timer_delay(&T); rtime = walltimer_delay(&Tw);45pari_add_hist(z, time, rtime);46if (z != gnil && in[strlen(in)-1] != ';')47{48pari_printf("%s%%%lu = %s",col(c_HIST),pari_nb_hist(),col(c_OUTPUT));49output(z);50pari_puts(col(c_NONE));51}52if (GP_DATA->chrono && time)53{54if (pari_mt_nbthreads==1)55pari_printf("time = %s.\n", gp_format_time(time));56else57pari_printf("cpu time = %s, real time = %s.\n",58gp_format_time(time), gp_format_time(rtime));59}60free(in); avma = pari_mainstack->top;61}62return 0;63}646566