14#define PLURAL_INTERNAL_DECLARATIONS 1
21#include "factory/factory.h"
61 #ifdef READLINE_READLINE_H_OK
62 #include <readline/readline.h>
64 #ifndef RL_VERSION_MAJOR
65 #define RL_VERSION_MAJOR 0
70#include <NTL/version.h>
80 if ((((
ui<<3)>>3)==
ui)
95 if ((((
unsigned long)
i)==
ui) && (((
i<<3)>>3)==
i))
209 unsigned long long k,
l,
i;
251 for (
i = 0;
i <
k;
i++)
436 while (*
ss!=
'\0')
ss++;
501 Werror(
"no example for %s", str);
641 WarnS(
"cannot set option");
652 else if ((
strncmp(n,
"no",2)==0)
660 WarnS(
"cannot clear option");
679 else if ((
strncmp(n,
"no",2)==0)
694 Werror(
"unknown option `%s`",n);
759#ifndef __GMP_BITS_PER_MP_LIMB
760#define __GMP_BITS_PER_MP_LIMB GMP_LIMB_BITS
762#include <flint/flint.h>
766#ifndef MAKE_DISTRIBUTION
773 StringAppend(
"Singular for %s version %s (%d, %d bit) %s",
783#if defined(mpir_version)
785#elif defined(gmp_version)
804#if defined(HAVE_DYN_RL)
818 #if defined(HAVE_READLINE) && !defined(FEREAD)
832 #if defined(__GNUC__) && (__GNUC__<9) &&!defined(__clang__)
843#ifdef HAVE_DYNAMIC_LOADING
846#ifdef HAVE_DYNANIC_PPROCS
880#ifdef __OPTIMIZE_SIZE__
887 #ifdef NTL_AVOID_BRANCHING
888 #undef HAVE_GENERIC_ADD
891#ifdef HAVE_GENERIC_ADD
896#ifdef HAVE_GENERIC_MULT
918#define SI_SHOW_BUILTIN_MODULE(name) StringAppend(" %s", #name);
922#undef SI_SHOW_BUILTIN_MODULE
925 "CC = %s,FLAGS : %s,\n"
926 "CXX = %s,FLAGS : %s,\n"
927 "DEFS : %s,CPPFLAGS : %s,\n"
928 "LDFLAGS : %s,LIBS : %s "
942#if (OM_TRACK > 2) && defined(OM_TRACK_CUSTOM)
955 poly
p=(poly)
l->data;
981 printf(
"type %d not yet implementd in p_SetRingOfLeftv\n",
l->rtyp);
992 PrintS(
"====== Top ==============\n");
1000 Print(
"::%s, typ %s level %d data %lx",
1013 Print(
"(T)::%s, typ %s level %d data %lx\n",
1030 Print(
"%s::%s, typ %s level %d data %lx\n",
1121#ifdef HAVE_SIMPLEIPC
1128#if PORTABLE_SEMAPHORES
1187 printf(
"Auf Wiedersehen.\n");
1252#if __FLINT_RELEASE >= 20503
1257 WerrorS(
"at least one name required");
1286 package save=currPack;
1294#if __FLINT_RELEASE >= 20503
1316 float_len=(
int)(
long)
pnn->Data();
1317 float_len2=float_len;
1321 float_len2=(
int)(
long)
pnn->Data();
1366 WerrorS(
"expected `crossprod(coeffs, ...)`");
1451 #ifdef _SC_NPROCESSORS_ONLN
1453 #elif defined(_SC_NPROCESSORS_CONF)
BOOLEAN naInitChar(coeffs cf, void *infoStruct)
Initialize the coeffs object.
BOOLEAN n2pInitChar(coeffs cf, void *infoStruct)
static int si_min(const int a, const int b)
static CanonicalForm bound(const CFMatrix &M)
void factoryseed(int s)
random seed initializer
VAR void(* factoryError)(const char *s)
Class used for (list of) interpreter objects.
INLINE_THIS void Init(int l=0)
VAR BOOLEAN singular_in_batchmode
Coefficient rings, fields and other domains suitable for Singular polynomials.
static FORCE_INLINE void number2mpz(number n, coeffs c, mpz_t m)
static FORCE_INLINE number mpz2number(mpz_t m, coeffs c)
@ n_R
single prescision (6,6) real numbers
@ n_FlintQrat
rational funtion field over Q
@ n_polyExt
used to represent polys as coeffcients
@ n_Q
rational (GMP) numbers
@ n_algExt
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic
@ n_Zn
only used if HAVE_RINGS is defined
@ n_long_R
real floating point (GMP) numbers
@ n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
@ n_Z
only used if HAVE_RINGS is defined
@ n_nTupel
n-tupel of cf: ZZ/p1,... ZZ/pn, R, long_R
static FORCE_INLINE BOOLEAN n_GreaterZero(number n, const coeffs r)
ordered fields: TRUE iff 'n' is positive; in Z/pZ: TRUE iff 0 < m <= roundedBelow(p/2),...
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
static FORCE_INLINE BOOLEAN n_IsZero(number n, const coeffs r)
TRUE iff 'n' represents the zero element.
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
#define MAKE_DISTRIBUTION
const CanonicalForm int s
const CanonicalForm int const CFList const Variable & y
const Variable & v
< [in] a sqrfree bivariate poly
char name(const Variable &v)
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
void WerrorS(const char *s)
const char * feSetOptValue(feOptIndex opt, char *optarg)
static void * feOptValue(feOptIndex opt)
EXTERN_VAR struct fe_option feOptSpec[]
static char * feResource(feResourceConfig config, int warn)
void feInitResources(const char *argv0)
void monitor(void *F, int mode)
void feStringAppendBrowsers(int warn)
char * fe_fgets_dummy(const char *, char *, int)
char *(* fe_fgets_stdin)(const char *pr, char *s, int size)
char * fe_fgets(const char *pr, char *s, int size)
char * fe_fgets_stdin_drl(const char *pr, char *s, int size)
char * fe_fgets_stdin_emu(const char *pr, char *s, int size)
void fe_reset_input_mode()
VAR FILE * File_Profiling
VAR BOOLEAN File_Log_written
BOOLEAN flintQ_InitChar(coeffs cf, void *infoStruct)
coeffs flintQInitCfByName(char *s, n_coeffType n)
BOOLEAN flintZn_InitChar(coeffs cf, void *infoStruct)
coeffs flintZnInitCfByName(char *s, n_coeffType n)
EXTERN_VAR BBA_Proc gnc_gr_bba
EXTERN_VAR BBA_Proc gnc_gr_mora
EXTERN_VAR BBA_Proc sca_gr_bba
EXTERN_VAR BBA_Proc sca_mora
EXTERN_VAR BBA_Proc sca_bba
STATIC_VAR unsigned short primes[]
primes, primes_len: used to step through possible extensions
const char * Tok2Cmdname(int tok)
static int RingDependend(int t)
ideal k_gnc_gr_mora(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
ideal k_gnc_gr_bba(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
static BOOLEAN length(leftv result, leftv arg)
int iiInitArithmetic()
initialisation of arithmetic structured data
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
void killhdl(idhdl h, package proot)
int iiAddCproc(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
BOOLEAN iiEStart(char *example, procinfo *pi)
BOOLEAN iiLibCmd(const char *newlib, BOOLEAN autoexport, BOOLEAN tellerror, BOOLEAN force)
char * iiGetLibProcBuffer(procinfo *pi, int part)
void iiCheckPack(package &p)
BOOLEAN iiCheckTypes(leftv args, const short *type_list, int report)
check a list of arguemys against a given field of types return TRUE if the types match return FALSE (...
static char * iiGetLibName(const procinfov pi)
find the library of an proc
ideal k_sca_bba(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
Modified modern Sinuglar Buchberger's algorithm.
ideal k_sca_mora(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
Modified modern Sinuglar Mora's algorithm.
ideal k_sca_gr_bba(const ideal F, const ideal Q, const intvec *, const intvec *, kStrategy strat, const ring _currRing)
Modified Plural's Buchberger's algorithmus.
poly k_NF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce, const ring _currRing)
NOTE: this is just a wrapper which sets currRing for the actual kNF call.
static int factor_using_division(mpz_t t, unsigned int limit, lists primes, int *multiplicities, int &index, unsigned long bound)
int singular_fstat(int fd, struct stat *buf)
#define SI_SHOW_BUILTIN_MODULE(name)
const struct soptionStruct verboseStruct[]
static void factor_using_pollard_rho(mpz_t n, unsigned long a, lists primes, int *multiplicities, int &index)
static BOOLEAN iiCrossProd(leftv res, leftv args)
static BOOLEAN ii_FlintQ_init(leftv res, leftv a)
int flint_mod_init(SModulFunctions *psModulFunctions)
STATIC_VAR n_coeffType n_FlintQ
lists primeFactorisation(const number n, const int pBound)
Factorises a given bigint number n into its prime factors less than or equal to a given bound,...
void omSingOutOfMemoryFunc()
BOOLEAN setOption(leftv res, leftv v)
static void factor_gmp(mpz_t t, lists primes, int *multiplicities, int &index, unsigned long bound)
static BOOLEAN iiFloat(leftv res, leftv pnn)
void setListEntry(lists L, int index, mpz_t n)
void singular_example(char *str)
static BOOLEAN ii_FlintZn_init(leftv res, leftv a)
const struct soptionStruct optionStruct[]
void setListEntry_ui(lists L, int index, unsigned long ui)
STATIC_VAR n_coeffType n_FlintZn
static void callWerrorS(const char *s)
volatile BOOLEAN m2_end_called
STATIC_VAR unsigned add[]
This file provides miscellaneous functionality.
#define SI_FOREACH_BUILTIN(add)
Data for type_of_LIB to determine built-in modules, use add(name) to add built-in library to macro.
#define p_SetRingOfLm(p, r)
The main handler for Singular numbers which are suitable for Singular polynomials.
void nRegisterCfByName(cfInitCfByNameProc p, n_coeffType n)
n_coeffType nRegister(n_coeffType n, cfInitCharProc p)
#define SHORT_REAL_LENGTH
#define omFreeSize(addr, size)
#define omCheckAddr(addr)
#define omFreeBinAddr(addr)
#define SI_SAVE_OPT(A, B)
#define TEST_OPT_INTSTRATEGY
#define OPT_NOTREGULARITY
#define OPT_STAIRCASEBOUND
#define TEST_RINGDEP_OPTS
#define SI_RESTORE_OPT(A, B)
static int index(p_Length length, p_Ord ord)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
void StringSetS(const char *st)
void StringAppendS(const char *st)
void PrintS(const char *s)
void feStringAppendResources(int warn)
void Werror(const char *fmt,...)
static BOOLEAN rField_has_simple_inverse(const ring r)
#define rField_is_Ring(R)
coeffs nrnInitCfByName(char *s, n_coeffType)
VAR sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
VAR int sem_acquired[SIPC_MAX_SEMAPHORES]
int status int void * buf
BOOLEAN slPrepClose(si_link l)
BOOLEAN slClose(si_link l)
EXTERN_VAR volatile BOOLEAN ssiToBeClosed_inactive
EXTERN_VAR link_list ssiToBeClosed
#define SIPC_MAX_SEMAPHORES
INST_VAR sleftv sLastPrinted
BOOLEAN ntInitChar(coeffs cf, void *infoStruct)
Initialize the coeffs object.