Todo - BrentBaccala/Singular GitHub Wiki
Further separation of sub-packages within kernel
Note: It is recommended to start with 3 commits':
- separate sources:
- create a new directory (e.g. /kernel/somepackage) in kernel for your sub-package
- move the necessary sources there with
git mv(NOTE: please don't change them!) - update
SOURCESin /kernel/Makefile.am (i.e. remove moved sources from the list) - copy /kernel/sample/Makefile.am and adapt it:
* replace sample with your sub-package name (e.g. libsample with libsomepackage)
* update
libsomepackage_la_SOURCESlist *git addthis new Makefile.am - change /configure.ac and /kernel/Makefile.am similar to SAMPLE (NOTE: use your sub-package name somepackage instead of sample)
- commit and test it on TC
- separate headers
- move the necessary headers to your sub-package directory with
git mv(NOTE: please don't change them!) - update
KERNELHEADERSin /kernel/Makefile.am (i.e. remove moved headers from the list) - update
libsomepackage_la_include_HEADERSandlibsomepackage_la_includedir - commit
- adapt all the includes (e.g. change
#include <kernel/someheader.h>to#include <kernel/somepackage/someheader.h>in /kernel/*, /Singular/*.{c,cc,h} and /dyn_modules//.{cc,h} - commit and test it on TC
Possible sub-packages (higher level mathematical algorithms):
Numeric(O: done)mpr_{base,inout,numeric}.{cc,h}
FGLM(O: done with d3e2512fa2f04365279bc6ac289aceafdd3ceff6 and 066288456fa8bd509318f0501d9d2f78256ddda3)- fglmgauss.h fglm.h fglmvec.h fglmcomb.cc fglmgauss.cc fglmhom.cc fglmvec.cc fglmzero.cc
Maps(Done by Adi):- fast_maps.{cc,h}
Spectrum(Done by Adi):- {semic,spectrum,splist}.{cc,h},
- GMPrat.cc (due to
HAVE_SPECTRUM), KMatrix.h, - {npolygon,multicnt}.{h,cc}
Combinatorics with(Done by Adi):hilb,vdim- {hdegree,hilb}.cc
- hutil.{cc,h}
Linear algebra(Done by Adi):- eigenval.{h,cc}, linearAlgebra.{cc,h}
- {Minor,MinorInterface,MinorProcessor}.{h,cc}
- Cache.h, CacheImplementation.h,
- interpolation.*
- minpoly.*
Groebner walks: {walkMain,walkProc,walkSupport}.{cc,h}(Done by Adi)GBEngine with GB + syzygies, resolutions, ratgbring, sba (aka F5) and slimgb (aka F4 and tgb)(Done by Adi):- F4.cc F4.h f5c.cc f5c.h f5data.cc f5data.h f5gb.cc f5gb.h f5lists.cc f5lists.h
- gr_kstd2.cc, nc.*, sca.cc, shiftgb.{cc,h}
- khstd.{h,cc}, kInline.h, kpolys.cc, kspoly.cc
- kstd1.cc kstd1.h kstd2.cc kstdfac.cc kstdfac.h
- kutil.{cc,h}, stairc.h
- ratgring.{cc,h} (TODO
HAVE_RATGRINGseems to be forgotten) - syz0.cc syz1.cc syz2.cc syz3.cc syz.cc syz.h
- tgb.cc tgbgauss.cc tgbgauss.h tgb.h tgb_internal.h
- units.{cc,h} (??)
- janet.{cc,h}
- misc -- candidates for
kernelCommonor to be moved into /Singular or /libpolys (TODO!):- common headers: mod2.h, structs.h
- polys.cc,h, ideals.cc,h (to be moved to libpolys?)
- fast_mult.cc,h,
- preimage.cc,h - (high level algorithm?! which package?)
- digitech.cc,h
- tmult.cc
- timer.cc,h (to be moved to /Singular/?)
- febase.cc,h, feread.cc
- misc.cc
- unused at the moment in
/old: IIntvec.h, old.*
These sub-packages are to be placed instead of ... under libSingular/kernel on the Singular4
diagram below.
O: Moved the following files from /Singular/ to /kernel/:
- Cache.h, CacheImplementation.h, Minor*, interpolation., minpoly.
- janet.*
O: Moved the following from /kernel/ to /Singular/:
- for Windows: htmlhelp.{h,lib}
Plan:
- find related files/parts of code for each package
- assign people
- separate packages:
- one-by-one
- keep Singular functional all the time
- simplest (most independent) first
- the left-overs (
kernelUtils) should not contain significant mathematical parts (at the end):
- polys.{h,cc} (with
ring currRing)
Current Singular4 package/library inclusion/usage diagram:
