$ echo "24 3 3 4 4 10" | class.x -f -po zbin # 3 minutes on 3GHz P4 ... 800kR-1280 11MB 2461kIP 968kNF-12k 11_46 v17r17 f28r27 85b24 177s 177u 66n 24 3 3 4 4 10 R=798878 +1280sl hit=0 IP=2461059 NF=968137 (12612) Writing zbin: 798878+1280sl 1181m+14s 9846494b ... # POLY_Dmax=4 Writing zbin: 798878+1308sl 1181m+14s 9847010b ... # POLY_Dmax=5 Writing zbin: 798878+1658sl 1181m+14s 9851469b ... # POLY_Dmax=6 ... Due to dimension-dependent optimizations in Find_Equations() the path-dependent number of sl-polytopes depends on the setting of POLY_Dmax at compilation time. For extracting the sl-polytopes we need to convert the BIN-file: $ class.x -pi zbin -do zzdb Read zbin (798878poly +1280sl 9846494b) write zzdb.* (15 files) done (0s) (for BIN-files only the h-polytopes are extracted by default). The following has to be iterated until no sl-polytopes are left:$ class.x -b -di zzdb |poly.x -fp| class.x -f -pi zbin -po zbinS ... Writing zbinS: 4457+0sl 0m+0s 46913b u18 done: 0s ... $ class.x -pi zbin -pa zbinS -po zbinHS ... Writing zbinHS: 803335+0sl 1181m+14s 9877364b $ class.x -b -pi zbinHS | class.x -f -pi zbinHS -sv -po zbinQ ... Writing zbinQ: 9+0sl 0m+0s 75b ... $ class.x -b -pi zbinQ |poly.x -fp| class.x -f -pi zbinHS -po zbinQS ... Writing zbinQS: 9+0sl 0m+0s 75b ... # nothing new $ class.x -b -pi zbinQ | class.x -f -pi zbinHS -sv -po zbinQQ ... Writing zbinQQ: 4+0sl 0m+0s 31b ... $ class.x -pi zbinQQ -ps zbinQ -po zbinQ2 ... Writing zbinQ2: 0+0sl 0m+0s 0b # nothing new / iteration finished $ class.x -pi zbinHS -pa zbinQ -po zbinHSQ ... Writing zbinHSQ: 803344+0sl 1181m+14s 9877439b # Final result. Alternatively we may base the calculation on the data base zzdb and first extract the q-polytopes (q for quotient, i.e. reflexive polytopes on coarser lattice). The following procedure avoids multiple updates of the h-polytopes (e.g. in case of large data): $ class.x -b -di zzdb |poly.x -fp| class.x -f -di zzdb -po zbinS ... Writing zbinS: 4457+0sl 0m+0s 46913b ... $ class.x -di zzdb -sv -po zbinQ ... Writing zbinQ: 805+0sl 0m+0s 7532b ... $ class.x -pi zbinS -pa zbinQ -po zbinSQ ... Writing zbinSQ: 4466+0sl 0m+0s 46988b Check for termination of the iteration (sl is already 0): $ class.x -b -pi zbinSQ |poly.x -fp| class.x -f -di zzdb -po zbinS2 ... Writing zbinS2: 4466+0sl 0m+0s 46988b ... # nothing new (zbinS2=zbinSQ) $ class.x -b -pi zbinSQ | class.x -f -di zzdb -sv -po zbinQ2 ... Writing zbinQ2: 132+0sl 0m+0s 1232b ... $ class.x -pi zbinQ2 -ps zbinSQ -po zbinQ2new ... Writing zbinQ2new: 0+0sl 0m+0s 0b # nothing new / interation finished $ class.x -di zzdb -pa zbinSQ ... Writing zzdb: 803344+0sl 1181m+14s 9877439b # Same final result
$ class.x -pi zb.1 -ps zb.2 -po zb.1n # 1n=1-2=(H1=h1-A,S1=s1-C-D) $ class.x -pi zb.2 -ps zb.1 -po zb.2n # 2n=2-1=(H2=h2-A,S2=s2-B-D) $ class.x -pi zb.1 -ps zb.1n -po zb.1i # 1i=1-1n=(A,C+D) $ class.x -pi zb.2 -ps zb.2n -po zb.2i # 2i=2-2n=(A,B+D) $ class.x -pi zb.1i -ps zb.2n -po zb.AD1 # (A,D) $ class.x -pi zb.2i -ps zb.1n -po zb.AD2 # (A,D) $ class.x -pi zb.1i -ps zb.2i -po zb.0C # (0,C) $ class.x -pi zb.2i -ps zb.1i -po zb.0B # (0,B) $ class.x -pi zb.1 -pa zb.2 -po zb.12 # (H=H1+H2+A, S=S1+S2+D) Data base operations are similarly defined: After conversion from bin to db (direct back-conversion is not implemented): $ class.x -pi zb.2 -do zzdb2; class.x -pi zb.1 -ds zzdb2 -po zb.1n $ class.x -di zzdb2 -pa zb.1 -do zzdb.12