## 6.1 Limitations

SINGULAR has the following limitations:

- the characteristic of a prime field must be less than or equal to 2147483647 (2^31)
  (the characteristic of a prime field in the factory routines must be less than 536870912 (2^29)) (factory is used for `factorize`, `gcd`, `resultant`, `extgcd`, `sqrfree`, `char_series`, `det`, `laguerre`, `system("HNF",..)`, `system("LLL",..)`,`system("rref",..)`, `system("absFact",..)`, function fields, polynomial division)
  (the characteristic of a prime field in the NTL routines must be less than NTL_SP_BOUND (2^30) on 32bit machines - This is always the case since currently, only factory uses NTL.) (factory is used for `factorize`, `gcd`, `resultant`, `extgcd`, `sqrfree`, `char_series`, `det`, `laguerre`, `system("HNF",..)`, `system("LLL",..)`,`system("rref",..)`, `system("absFact",..)`, function fields, polynomial division)
- if only NTL is used, extgcd has a limit on the coefficients: At the current setting of NTL_MAX_FFTPRIMES (20000), on 64-bit machines with 50-bit FFT primes, this allows for polynomials with 20*50/2 = 500K-bit coefficients, while the table itself takes 160KB.
- the number of elements in GF(p,n) must be less than 65536 (2^16)
- the (weighted) degree of a monomial must be less than 2147483648 (2^31)
- the rank of any free module must be less than 2147483648 (2^31)
- the maximal allowed exponent of a ring variable depends on the ordering of the ring and is at least 32767 (2^15-1). See also Monomial orderings for setting other limits.
- the precision of long floating point numbers (for ground field `real`) must be less than 32768 (2^15)
- integers (of type `int`) have the limited range from -2147483648 to 2147483647 (-2^31..2^31-1)
- floating point numbers (type `number` from field `real`) have a limited range which is machine dependent. A typical range is -1.0e-38 to 1.0e+38. The string representation of overflow and underflow is machine dependent, as well. For example "`Inf`" on Linux, or "`+.+00e+00`" on HPUX.
  Their input syntax is given by `scanf`, but must start with a digit.
- floating point numbers (type `number` from field `real` with a precision p larger then 3) use internally `mpf_set_default_prec(3.5*p+1)`.
  Their input syntax is given by `mpf_set_str` from GMP, but must start with a digit.
- the length of an identifier is unlimited but `listvar` displays only the first 20 characters
- statements may not contain more than 10000 tokens
- tokens (i.e. strings, numbers, ...) may not be longer than 16382 characters
- All input to SINGULAR must be 7-bit clean, i.e. special characters like the the German Umlaute (ä, ö, etc.), or the French accent characters may neither appear as input to SINGULAR, nor in libraries or procedure definitions.
- parallelization (like `modStd`) can not use more than SIPC_MAX_SEMAPHORES (512) cpus. This limit can be changed in the source file `Singular/links/simpleipc.h`.
- `vspace`, used in `system("verifyGB",I)` and `farey` can not use more than MAX_PROCESS (64) cpus. This limit can be changed in the source file `kernel/oswrapper/vspace.h`.

User manual for Singular version 4.4.1, 2025, generated by texi2html.