# Some tasks for Singular

Volunteers needed
## Programming in C/C++: the easy stuff

introduce namespace singular and singular_factory with macros
(analogue to NTL)

make Singular and Macaulay2 to use the same libraries (factory, libfac)

rewrite factory to use mpz_t instead of MP_INT -- done

write a 64bit version of kernel/longrat.cc -- assigned

## Programming in C/C++: the advanced stuff

rewrite kernel/longalg -- done

improve/rewrite long floating point arithmetic to be usable in
Groebner base computations (via a hybrid emthod: each number is a pair (float, mod-p-integer))

omalloc: rewrite it (inline routines, thread safe) -- assigned

rewrite Singular/grammar.y to be compatible with bison 2.4

rewrite Singular/scanner.l to be compatible with flex > 2.5.4

## Programming in Singular libraries

rewrite zeroset.lib/primitiv.lib: should use factorize instead of FactorMain

in all libaries: exchange constructions with execute by ringlist

in all libraries: introduce the new argument alias for parameters, test it
and time it

## Mathematics

rewrite factorize for univariate polynomials over Q(a)

rewrite factorize for multivariate polynomials over Q(a)

incremental algorithm: given a radical ideal I and a polynomial p not in I,
compute the radical of I+(p)

incremental algorithm: given a prime ideal I and a polynomial p not in I,
compute the primary decomposition of I+(p)

special case algorithm: given a radical ideal I,
compute the primary decomposition of I

## Testing

test the different variants for GCD (SW_USE_GCD_P, SW_USE_EZGCD, SW_USE_CHINREM_GCD, SW_USE_fieldGCD, SW_USE_EZGCD_P, SW_USE_QGCD ...)

timings for the different variants of GCD

Singular uses test suites to test the correctness of new versions.
Task: write/adapt tools to test the coverage of the test suite(s):
which part of the source code is not tested,
which commands/variants of commands do not appear in the
documentation ?

improve lib2doc (the utility to generate the documentation from
for a library)

check all magic constants in Singular: are they still valid ? -- assigned

## Porting

compile and test Singular on your favorite platform(s)