forked from broune/frobby
-
Notifications
You must be signed in to change notification settings - Fork 3
/
changelog.txt
174 lines (132 loc) · 7.16 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
*** Version 0.9.4 2018-08-16
- >>>> UNOFFICIAL <<<<
- Improved portability
- guilty party: John Abbott
*** Version 0.9.0, 2011-09-23
- Added support for computing Euler characteristic
- Added a deformation algorithm for computing Hilbert-Poincare series
- Added the Bigatti et al. algorithm for computing Hilbert-Poincare series
- Improved the Slice algorithm implementation for computing H-P series
- All option names can now be given as a unique prefix just as for action names
- The analyze action can now report on strong and weak genericity
- The library interface now supports primary decomposition
- The library interface now supports associated primes
- Reading input monomial ideals is now significantly faster
The new Euler characteristic code uses a new algorithm that is joint
work with Eduardo Saenz-de-Cabezon. As documented in our paper, the
Frobby implementation of this algorithm is much faster than
implementations of Euler characteristic algorithms in other
systems. The euler action has many options, but the default should be the
fastest for nearly all ideals.
The Hilbert-Poincare series code was written to compare the Slice
algorithm, the deformation algorithm and the Bigatti et
al. algorithm. The deformation has as far as I know never previously
been implemented or even very explicitly described in the
litterature. The Bigatti algorithm wasn't faster initially after
implementing it as described in the litterature, but with some
additional improvements it got significantly better. It still is not
faster for all ideals, but the improved version is still usually the
best algorithm which is why it is the default algorithm used.
*** Version 0.8.2, 2009-07-07
New features and improvements in this version include
- Fast dimension and codimension of monomial ideals
- Various speed improvements (see below)
- Generation of random edge ideals
- Optimization over maximal standard monomials with negative
objective function.
The new (co)dimension code uses an algorithm gleaned from the source
code of Macaulay 2, though the code in Frobby is substantially faster
due to a few improvements. It is not known to me who to credit with
this algorithm. Now that Frobby supports negative objective functions,
the more general optimize action can also be used to compute the
dimension, but this is not nearly as fast.
There are also many smaller improvements. They are too many to list
here, but the more visible ones are shown below.
** Performance improvements
- Actions frobgrob and optimize are substantially faster due to code
improvements and due to the bound optimization now being
accessible. It had been turned off by mistake in the previous
release, even when explicitly requested via the command line option
-bound. The bound optimization itself has been improved to work
with objective funtions with negative entries.
- Improved the pure power split selection strategies to choose a
middle variable in case of ties instead of the left-most
variable. This makes no difference for most inputs, but leads to
dramatic speed-ups for some particular highly non-generic inputs.
- All slice-based algorithms are slightly faster due to low-level
code improvements.
- The action optimize now uses the degree split strategy by default
instead of median, which is faster.
** Deprecated functionality
- The action frobgrob is deprecated and will be removed in a future
version of Frobby. Use the action optimize with options
chopFirstAndSubtract and maxStandard to achieve the same effect.
- The split selection strategy named frob is now deprecated and will
be removed in a future version of Frobby. Use the name degree to
achieve the same effect.
** Miscellaneous improvements
- The polynomial ring is named R in the Macaulay 2 format, which is a
problem if there is also a variable named R in the ring, since then
Macaulay 2 will report an error on reading the file. Frobby now
renames the ring to R1 in that case, or R2 if there is also a
variable named R1 and so on.
- All formats now support underscores as part of variable names.
- There is now an output format "count" that just prints the total
number of generators.
** Technical Improvements
- A benchmark suite has been added to detect preformance regressions,
such as the above situation with the bound optimization getting
turned off. There is also support for profiling to detect the lines
of code that are taking the most time.
- The amount of information in the developer documentation, which is
generated based on source code comments, has increased
substantially.
- The design for how internal C++ tests are done is much improved and
the number of tests bas been expanded substantially.
- Code file dependency tracking is much improved. It is now fully automatic,
so the Makefile target depend is removed.
- All Frobby files now use unix-style line endings, rather than the
mix that was there before.
- Frobby now explicitly refuses to use independence splits when
solving Frobenius problems and other optimization problems. They
were never implemented for that case.
- The install makefile target now uses sudo, so that it does not have
to be run as root to install Frobby. This is not the case on
Cygwin, which does not seem to have sudo.
- Option -chopFirstAndSubtract now fails gracefully when there are no
variables, such as when using -iformat null. In general actions now
deal well with -iformat null, and this is now part of the
testsuite.
- Numerous small improvements to performance, design and comments all
over the codebase.
*** Version 0.8.1, 2009-04-30
This is a minor update.
- There is now a manual in doc/manual.tex.
- Frobby no longer crashes when using the -stats and -debug options.
- The developer documentation can now be built on Cygwin.
- The example/ directory is now named liraryTest/ to avoid confusion.
- The Makefile now has an "install" target.
*** Version 0.8.0, 2009-02-12
This version adds support for
- Hilbert-Poincare series.
- Primary decomposition.
- Maximal standard monomials.
- Linear optimization problems over monomial ideals.
- The format cocoa4 that can be processed by CoCoA 4.
- The format singular, which can be processed by Singular.
- Manipulation of polynomials for formats where it makes sense.
The library interface is expanded and is now tested in the
testsuite. This interface is being used by Macaulay 2 and CoCoA to
perform some of their computations on monomial ideals. The library
interface, and Frobby in general, is now exception-safe and deals
gracefully with running out of memory. Frobby is also included with
Sage as an optional package.
The testsuite for every functionality has been greatly extended and
improved, with the consequence that the tests now take much longer to
run, as they are testing many more aspects of Frobby and there is more
testing going on.
Having Frobby included with Macaulay 2 and CoCoA has resulted in a
number of improvements to make Frobby build correctly on the many
platforms that these systems support. Thanks goes to Daniel R. Grayson,
Michael Stillman and Anna Bigatti for their work on this.
** Changes were not tracked prior to version 0.8.0