Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
/* Copyright (C) 2000-2018 The PARI group.12This file is part of the PARI/GP package.34PARI/GP is free software; you can redistribute it and/or modify it under the5terms of the GNU General Public License as published by the Free Software6Foundation; either version 2 of the License, or (at your option) any later7version. It is distributed in the hope that it will be useful, but WITHOUT8ANY WARRANTY WHATSOEVER.910Check the License for details. You should have received a copy of it, along11with the package; see the file 'COPYING'. If not, write to the Free Software12Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */1314#include "pari.h"15#include "paripriv.h"1617GEN18galoisnbpol(long a)19{20GEN n;21pariFILE *F;22char *s = stack_malloc(strlen(pari_datadir) + 11 + 20 + 1);23sprintf(s,"%s/galpol/%ld/nb", pari_datadir, a);24F = pari_fopengz(s);25if (!F) pari_err_FILE("galpol file",s);26n = gp_read_stream(F->file);27if (!n || typ(n)!=t_INT) pari_err_FILE("galpol file [incompatible]",s);28pari_fclose(F); return n;29}3031GEN32galoisgetpol(long a, long b, long sig)33{34pariFILE *F;35GEN V;36const char *si;37char *s;38if (a<=0) pari_err_DOMAIN("galoisgetpol", "degree", "<=", gen_0, stoi(a));39if (b<0) pari_err_DOMAIN("galoisgetpol", "index", "<", gen_0, stoi(b));40if (!b) return galoisnbpol(a);41switch(sig)42{43case 1: si="real"; break;44case 2: if (a%2==0) { si="complex"; break; }45pari_err_DOMAIN("galoisgetpol", "s", ">", gen_1, stoi(sig));46default:47pari_err_FLAG("galoisgetpol");48return NULL;/*LCOV_EXCL_LINE*/49}50/* left on stack */51s = stack_sprintf("%s/galpol/%ld/%ld/%s", pari_datadir, a,b,si);52F = pari_fopengz(s);53if (!F)54{55long n = itos(galoisnbpol(a));56if (b > n)57pari_err_DOMAIN("galoisgetpol", "group index", ">", stoi(n), stoi(b));58else pari_err_FILE("galpol file", s);59}60V = gp_read_stream(F->file);61if (!V || typ(V)!=t_VEC) pari_err_FILE("galpol file", F->name);62pari_fclose(F); return V;63}6465GEN66galoisgetgroup(long a, long b)67{68pariFILE *F;69GEN V;70char *s;71if (a<=0) pari_err_DOMAIN("galoisgetgroup", "degree", "<=", gen_0, stoi(a));72if (b<0) pari_err_DOMAIN("galoisgetgroup", "index", "<", gen_0, stoi(b));73if (!b) return galoisnbpol(a);74/* left on stack */75s = stack_sprintf("%s/galpol/%ld/%ld/group", pari_datadir, a,b);76F = pari_fopengz(s);77if (!F)78{79long n = itos(galoisnbpol(a));80if (b > n)81pari_err_DOMAIN("galoisgetgroup", "group index", ">", stoi(n), stoi(b));82else pari_err_FILE("galpol file", s);83}84V = gp_read_stream(F->file);85if (!V || typ(V)!=t_VEC) pari_err_FILE("galpol file", F->name);86pari_fclose(F); return V;87}8889GEN90galoisgetname(long a, long b)91{92pariFILE *F;93GEN V;94char *s;95if (a<=0) pari_err_DOMAIN("galoisgetname", "degree", "<=", gen_0, stoi(a));96if (b<0) pari_err_DOMAIN("galoisgetname", "index", "<", gen_0, stoi(b));97/* left on stack */98s = stack_sprintf("%s/galpol/%ld/%ld/name", pari_datadir, a,b);99F = pari_fopengz(s);100if (!F)101{102long n = itos(galoisnbpol(a));103if (b > n)104pari_err_DOMAIN("galoisgetname", "group index", ">", stoi(n), stoi(b));105else pari_err_FILE("galpol file", s);106}107V = gp_read_stream(F->file);108if (!V || typ(V)!=t_STR) pari_err_FILE("galpol file", F->name);109pari_fclose(F); return V;110}111112113