13#include <flint/flint.h>
14#include <flint/nmod_poly.h>
15#include "factory/factory.h"
29static const char*
Eati(
const char *
s,
int *
i)
32 if (((*
s) >=
'0') && ((*
s) <=
'9'))
40 while (((*
s) >=
'0') && ((*
s) <=
'9'));
50 return (r->type==n) &&(r->ch==
pp->ch)
51 &&(r->pParameterNames!=
NULL)
52 &&(strcmp(r->pParameterNames[0],
pp->name)==0);
131 nmod_poly_set_coeff_ui(
res,0,
i);
140 slong ii=mpz_mod_ui(tmp,
i,r->ch);
142 nmod_poly_set_coeff_ui(
res,0,ii);
245static const char*
Read(
const char * st, number * a,
const coeffs r)
250 *a=(number)
omAlloc(
sizeof(nmod_poly_t));
253 if (*
s==
'-') { neg=
TRUE;
s++;}
260 else if(strncmp(
s,r->pParameterNames[0],strlen(r->pParameterNames[0]))==0)
263 s+=strlen(r->pParameterNames[0]);
292 if (ac>bc)
return TRUE;
293 else if (ac<bc)
return FALSE;
382 ii=mpz_mod_ui(tmp,
i->z,dst->ch);
385 if (ii<0) ii+=dst->ch;
386 nmod_poly_set_coeff_ui(
res,0,ii);
396 WerrorS(
"not yet: ChineseRemainder");
407 nmod_poly_set_coeff_ui(
res,1,1);
415 WerrorS(
"not yet: ConvFactoryNSingN");
422 WerrorS(
"not yet: ConvSingNFactoryN");
429 sprintf(CoeffName_flint_Zn,
"flint:Z/%d[%s]",r->ch,r->pParameterNames[0]);
430 return (
char*)CoeffName_flint_Zn;
434 const char start[]=
"flint:Z/";
435 const int start_len=strlen(start);
436 if (strncmp(
s,start,start_len)==0)
441 int l=sscanf(
s,
"%d[%s",&
p,st);
446 while (st[strlen(st)-1]==
']') st[strlen(st)-1]=
'\0';
457 int l=nmod_poly_length(aa);
459 for(
int i=
l;
i>=0;
i--)
461 ulong ul=nmod_poly_get_coeff_ui(aa,
i);
462 fprintf(d->
f_write,
"%lu ", ul);
473 for (
int i=
l;
i>=0;
i--)
476 nmod_poly_set_coeff_ui(aa,
i,ul);
551 cf->iNumberOfParameters = 1;
552 char **pn=(
char**)
omAlloc0(
sizeof(
char*));
554 cf->pParameterNames = (
const char **)pn;
Coefficient rings, fields and other domains suitable for Singular polynomials.
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
const CanonicalForm int s
nmod_poly_init(FLINTmipo, getCharacteristic())
nmod_poly_clear(FLINTmipo)
void WerrorS(const char *s)
static number ConvFactoryNSingN(const CanonicalForm, const coeffs)
static CanonicalForm ConvSingNFactoryN(number, BOOLEAN, const coeffs)
static void WriteShort(number a, const coeffs r)
static char * CoeffName(const coeffs r)
static number Lcm(number a, number b, const coeffs r)
static void MPZ(mpz_t result, number &n, const coeffs r)
static number Neg(number a, const coeffs r)
static BOOLEAN Greater(number a, number b, const coeffs r)
static const char * Read(const char *st, number *a, const coeffs r)
static number Mult(number a, number b, const coeffs c)
static number Init_bigint(number i, const coeffs dummy, const coeffs dst)
static number Sub(number a, number b, const coeffs c)
static long Int(number &n, const coeffs r)
static number Init(long i, const coeffs r)
static BOOLEAN CoeffIsEqual(const coeffs r, n_coeffType n, void *parameter)
static void Normalize(number &a, const coeffs r)
static number Gcd(number a, number b, const coeffs r)
static number ExtGcd(number a, number b, number *s, number *t, const coeffs r)
static void WriteFd(number a, const ssiInfo *d, const coeffs)
static BOOLEAN GreaterZero(number k, const coeffs r)
static BOOLEAN DBTest(number a, const char *f, const int l, const coeffs r)
static void Delete(number *a, const coeffs r)
static number ReadFd(const ssiInfo *d, const coeffs r)
BOOLEAN flintZn_InitChar(coeffs cf, void *infoStruct)
static void KillChar(coeffs cf)
nmod_poly_struct * nmod_poly_ptr
static number Copy(number a, const coeffs r)
static number InitMPZ(mpz_t i, const coeffs r)
static number Div(number a, number b, const coeffs c)
static void Power(number a, int i, number *result, const coeffs r)
static BOOLEAN Equal(number a, number b, const coeffs r)
static number Add(number a, number b, const coeffs c)
static BOOLEAN IsOne(number a, const coeffs r)
static number Farey(number p, number n, const coeffs)
static BOOLEAN IsZero(number a, const coeffs r)
static int ParDeg(number x, const coeffs r)
static nMapFunc SetMap(const coeffs src, const coeffs dst)
static number ChineseRemainder(number *x, number *q, int rl, BOOLEAN sym, CFArray &inv_cache, const coeffs)
static BOOLEAN IsMOne(number k, const coeffs r)
static void SetChar(const coeffs r)
static const char * Eati(const char *s, int *i)
static number Parameter(const int i, const coeffs r)
static number Invers(number a, const coeffs r)
static number IntMod(number a, number b, const coeffs c)
static int Size(number n, const coeffs r)
coeffs flintZnInitCfByName(char *s, n_coeffType n)
static number ExactDiv(number a, number b, const coeffs c)
number nvInvers(number c, const coeffs r)
The main handler for Singular numbers which are suitable for Singular polynomials.
const char *const nDivBy0
#define omFreeSize(addr, size)
void StringAppendS(const char *st)
long s_readlong(s_buff F)