Upstream Changes:
1.16 2012-08-06 Florent Angly <florent.angly@gmail.com>
* Fixed issue introduced in version 1.15 where rand() took no notice of
argument and irand() did (bug #78200, reported by David Morel)
* Migration of test suite to Test::More and Test::Number::Delta
1.15 2012-06-04 Florent Angly <florent.angly@gmail.com>
* Implemented irand() to draw random integers (bug #73298, feature requested
by crew@cs.stanford.edu)
* Fixed build failure on Hurd (bug #74165, reported and patched by Salvatore
Bonaccorso)
1.14 2012-05-27 Florent Angly <florent.angly@gmail.com>
* Fixed compilation problems with nmake on Windows platforms
(Florent Angly, bug #74984)
* Fixed issues with random seed (bug #77343, solution suggested by
Laurent Dami, fix implemented by Florent Angly)
1.13 2012-01-20 Abhijit Menon-Sen <ams@toroid.org>
* New seed generation and retrieval mechanism by Florent Angly (bug
#64640 on rt.cpan.org).
Changes since version 0.9:
- First release as a GNU package
- License change: LGPLv3+ for code, GFDLv1.3+ (with no invariant sections)
for documentation
- 100% of all lines are covered by tests
- Functions renamed:
mpc_mul_2exp to mpc_mul_2ui, mpc_div_2exp to mpc_div_2ui
- 0^0, which returned (NaN,NaN) previously, now returns (1,+0)
- Removed compatibility with K&R compilers, untestable due to lack of
such compilers
- New functions: mpc_log10, mpc_mul_2si, mpc_div_2si
- Speed-ups:
- mpc_fma
- Bug fixes:
- mpc_div and mpc_norm now return a value indicating the effective
rounding direction, as the other functions
- mpc_mul, mpc_sqr and mpc_norm now return correct results even if there
are over- or underflows during the computation
- mpc_asin, mpc_proj, mpc_sqr: Wrong result when input variable has
infinite part and equals output variable is corrected
- mpc_fr_sub: Wrong return value for imaginary part is corrected
variables, and customization should be done via INSTALL_ENV/MAKE_ENV
respectively. This also solves the internationalization issue fixed
in previous commit properly.
Noted by <joerg> on pkgsrc-changes@, many thanks!
Changes from version 3.1.0 to version 3.1.1:
- Improved MPFR manual.
- Test coverage: 96.5% lines of code.
- Bug fixes (see <http://www.mpfr.org/mpfr-3.1.0/#fixed> or ChangeLog file).
Release Log
Networkx-1.7
Release date: 4 July 2012
Highlights
New functions for k-clique community finding, flow hierarchy, union, disjoint union, compose, and intersection operators that work on lists of graphs, and creating the biadjacency matrix of a bipartite graph.
New approximation algorithms for dominating set, edge dominating set, independent set, max clique, and min-weighted vertex cover.
Many bug fixes and other improvements.
For full details of the tickets closed for this release (added features and bug fixes) see: https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.7
API Changes
See Version 1.7 notes and API changes
Summary of important user-visible changes for version 3.6:
---------------------------------------------------------
** The PCRE library is now required to build Octave. If a pre-compiled
package does not exist for your system, you can find PCRE sources
at http://www.pcre.org
** The ARPACK library is no longer distributed with Octave.
If you need the eigs or svds functions you must provide an
external ARPACK through a package manager or by compiling it
yourself. If a pre-compiled package does not exist for your system,
you can find the current ARPACK sources at
http://forge.scilab.org/index.php/p/arpack-ng
** Many of Octave's binary operators (.*, .^, +, -, ...) now perform
automatic broadcasting for array operations which allows you to use
operator notation instead of calling bsxfun or expanding arrays (and
unnecessarily wasting memory) with repmat or similar idioms. For
example, to scale the columns of a matrix by the elements of a row
vector, you may now write
rv .* M
In this expression, the number of elements of rv must match the
number of columns of M. The following operators are affected:
plus + .+
minus - .-
times .*
rdivide ./
ldivide .\
power .^ .**
lt <
le <=
eq ==
gt >
ge >=
ne != ~=
and &
or |
atan2
hypot
max
min
mod
rem
xor
additionally, since the A op= B assignment operators are equivalent
to A = A op B, the following operators are also affected:
+= -= .+= .-= .*= ./= .\= .^= .**= &= |=
See the "Broadcasting" section in the new "Vectorization and Faster
Code Execution" chapter of the manual for more details.
** Octave now features a profiler, thanks to the work of Daniel Kraft
under the Google Summer of Code mentorship program. The manual has
been updated to reflect this addition. The new user-visible
functions are profile, profshow, and profexplore.
** Overhaul of statistical distribution functions
Functions now return "single" outputs for inputs of class "single".
75% reduction in memory usage through use of logical indexing.
Random sample functions now use the same syntax as rand and accept
a comma separated list of dimensions or a dimension vector.
Functions have been made Matlab-compatible with regard to special
cases (probability on boundaries, probabilities for values outside
distribution, etc.). This may cause subtle changes to existing
scripts.
negative binomial function has been extended to real, non-integer
inputs. The discrete_inv function now returns v(1) for 0 instead of
NaN. The nbincdf function has been recoded to use a closed form
solution with betainc.
** strread, textscan, and textread have been completely revamped.
They now support nearly all Matlab functionality including:
* Matlab-compatible whitespace and delimiter defaults
* Matlab-compatible options: 'whitespace', treatasempty', format
string repeat count, user-specified comment style, uneven-length
output arrays, %n and %u conversion specifiers (provisionally)
** All .m string functions have been modified for better performance or
greater Matlab compatibility. Performance gains of 15X-30X have
been demonstrated. Operations on cell array of strings no longer pay
quite as high a penalty as those on 2-D character arrays.
deblank: Now requires character or cellstr input.
strtrim: Now requires character or cellstr input.
No longer trims nulls ("\0") from string for Matlab
compatibility.
strmatch: Follows documentation precisely and ignores trailing spaces
in pattern and in string. Note that this is documented
Matlab behavior but the implementation apparently does
not always follow it.
substr: Now possible to specify a negative LEN option which
extracts to within LEN of the end of the string.
strtok: Now accepts cellstr input.
base2dec, bin2dec, hex2dec:
Now accept cellstr inputs.
dec2base, dec2bin, dec2hex:
Now accept cellstr inputs.
index, rindex:
Now accept 2-D character array input.
strsplit: Now accepts 2-D character array input.
** Geometry functions derived from Qhull (convhull, delaunay, voronoi)
have been revamped. The options passed to the underlying qhull
command have been changed for better results or for Matlab
compatibility.
convhull: Default options are "Qt" for 2D, 3D, 4D inputs
Default options are "Qt Qx" for 5D and higher
delaunay: Default options are "Qt Qbb Qc Qz" for 2D and 3D inputs
Default options are "Qt Qbb Qc Qx" for 4D and higher
voronoi: No default arguments
** Date/Time functions updated. Millisecond support with FFF format
string now supported.
datestr: Numerical formats 21, 22, 29 changed to match Matlab.
Now accepts cellstr input.
** The following warning IDs have been removed:
Octave:associativity-change
Octave:complex-cmp-ops
Octave:empty-list-elements
Octave:fortran-indexing
Octave:precedence-change
** The warning ID Octave:string-concat has been renamed to
Octave:mixed-string-concat.
** Octave now includes the following Matlab-compatible preference
functions:
addpref getpref ispref rmpref setpref
** The following Matlab-compatible handle graphics functions have been
added:
guidata uipanel uitoolbar
guihandles uipushtool uiwait
uicontextmenu uiresume waitfor
uicontrol uitoggletool
The uiXXX functions above are experimental.
Except for uiwait and uiresume, the uiXXX functions are not
supported with the FLTK+OpenGL graphics toolkit.
The gnuplot graphics toolkit does not support any of the uiXXX
functions nor the waitfor function.
** New keyword parfor (parallel for loop) is now recognized as a valid
keyword. Implementation, however, is still mapped to an ordinary
for loop.
** Other new functions added in 3.6.0:
bicg nthargout usejava
is_dq_string narginchk waitbar
is_sq_string python zscore
is_function_handle register_graphics_toolkit
loaded_graphics_toolkits recycle
** Deprecated functions.
The following functions were deprecated in Octave 3.2 and have been
removed from Octave 3.6.
create_set spcholinv splu
dmult spcumprod spmax
iscommand spcumsum spmin
israwcommand spdet spprod
lchol spdiag spqr
loadimage spfind spsum
mark_as_command sphcat spsumsq
mark_as_rawcommand spinv spvcat
spatan2 spkron str2mat
spchol splchol unmark_command
spchol2inv split unmark_rawcommand
The following functions have been deprecated in Octave 3.6 and will
be removed from Octave 3.10 (or whatever version is the second major
release after 3.6):
cut is_duplicate_entry
cor polyderiv
corrcoef shell_cmd
__error_text__ studentize
error_text sylvester_matrix
** The following functions have been modified for Matlab compatibility:
randperm
CHANGES MADE TO MATHOMATIC 15.8.5 TO BRING IT UP TO THE NEXT VERSION:
Code, documentation, and user interface improvements, corrections,
and cleanup. Fixed many possible bugs, some where the wrong level global
expression buffers were being used.
05/26/12 - Push command improved with better responses. Same functionality.
In the source code, tune-up variable integer_coefficients was
renamed to "factor_out_all_numeric_gcds", because Mathomatic always
tries to have integer coefficients this year, but it doesn't always
factor out all numeric GCDs unless factor_out_all_numeric_gcds
is true, or the factor command is used. The default is false,
for more orderly and revealing coefficients.
Of course, much of what Mathomatic does is
try to improve readability and simplicity.
There is no need to set this variable, just use the factor command.
05/27/12 - Removed C declarations for memmove(3), the defaults in
/usr/include/string.h are probably better and what's wanted in
every case. It would be very odd if this didn't work 100%.
05/28/12 - readline history file renamed to "~/.matho_history" from
"~/.mathomatic_history". File name was too long for CygWin.
Tested thoroughly compiling, installing, and running under
the latest CygWin. Works fine, except for rlwrap. "rlwrap -v"
returns with error, a successful return is how I test for its
existence.
Made output redirection work with the "list primes" command.
06/02/12 - Cleanup of Linux, Mac OS X, and Windows binary distributions.
The Windows binary distribution now includes m4 scripts, in case
CygWin is installed, allowing use of m4 Mathomatic in Windows.
Fixed MinGW version to not output two carriage returns at the
end of every line of list command output.
06/03/12 - If compiled with -DSHOW_RESOURCES, will give total CPU usage and
RSS size in the "version status" command. Requires OS support.
Some OSes will show even more information. Uses getrusage(2).
06/04/12 - Allow breaking out of user line-input requests with Control-C.
Still have to hit the Enter key, but the command will be aborted.
06/05/12 - Added "lib/example.c", the simplest example yet of Symbolic Math
Library usage. Compile with "compile.testmain" or practice
compiling it by hand.
The simplify command now returns the number of expressions
simplified, so you can tell if "simplify sign" worked.
The solve command can now require verification, by using the
"verifiable" option, instead of the "verify" option. This causes
unverifiable solves to return with failure, aborting any reads.
Fixed missing code in internal C function free_mem().
I don't think it was used by anyone. A call to free_mem() is
now made on exit, if Mathomatic is compiled with -DVALGRIND, to
check for memory leaks.
06/08/12 - Added polynomial factoring to GCD result of divide command.
It is always handy to know what the factors are of the GCD.
Allow comma (,) at the end of most input lines. A comma now
terminates an expression instead of giving an error. Allow
commas all over the place, where-ever logical, in any
Mathomatic command-line. They are used as separators,
more so than spaces.
06/09/12 - Cleaned up variables command to always allow the count parameter,
and to line up everything with 8 character wide tabs.
Added ability to place the definite integration bounds on the
integrate command-line, just like the nintegrate command.
Added titles to most help command pages.
06/10/12 - The "factor number" command works much nicer now, and allows comma
separators and zero.
Developers should note that to remain the same as past versions,
HTML mode needs to be "set html all" to output HTML at all times
in both the application and the symbolic math library, even when
redirecting output. Now setting all HTML mode with
"make pdfsheet". "set html" only outputs HTML code to standard
output.
06/13/12 - Added warning in "misc/known_bugs.txt" about LLVM/Clang optimizer
failure when compiling Mathomatic with LLVM/Clang instead of gcc.
If you enable any optimization at all, entering (32^.5) and the
like will hang Mathomatic, putting it in an endless loop.
So when compiling Mathomatic with LLVM/Clang, always disable
optimization with "-O0", so that it will then run and pass
all of the tests in 1 second and not be infinitely slower.
Mathomatic will hang during "make test"
if compiled with optimization enabled using LLVM. Mathomatic is
not noticeably slower when compiled without any optimization,
because everything is memmove(3)s and floating point arithmetic.
06/15/12 - Added repeat option to replace command. A handy feature that
lets you try plugging different values into an equation. It
checks if the result is an identity, too.
06/18/12 - The version command now has a "status" option, which behaves
as before, displaying all version and status information.
The version command by itself now only displays the Mathomatic
version number. Running "mathomatic -v" is now a good way of
testing for the existence of Mathomatic on your system, only
outputting the version number to standard output and exiting
successfully.
06/19/12 - Removed the parenthesizing of variable names in all messages.
If the current expression is a non-equation, then prefixing or
suffixing an expression with "=" will add that expression as
the other equation side now, conveniently making it an equation
you can solve.
06/22/12 - Added equation number ranges option to tally command. Type
"tally -" to resume if the current equation hasn't changed. Type
"tally all" to add together all stored expressions as the starting
value. Specifying equation numbers or ranges will silently add
them, then prompt for the next things to add. The average option
now displays the number of entries (count) each time the average
is displayed. When you exit by typing an empty line, the current
total is saved in the next available equation space and made
current, so it can easily resume with "tally -". "-" by itself
always means the current equation.
gnuplot now works with MS-Windows better. Tried running a Windows
gnuplot test from scratch, without Cygwin, and it didn't work.
It should be mostly fixed now. So go ahead and try plotting
in Windows, after downloading and installing gnuplot. Please
complain if any problems.
Fixed a long-running problem with the plot command, by asking the
user questions, only if needed, so that gnuplot will not give an
error if you are multi-expression plotting.
06/23/12 - Moved load_rc() out of main.c so that the Mathomatic startup set
options file can be loaded by the library, if the developer wishes.
Changed a few things so that "set save" and "set no save" will work
if load_rc() is called beforehand.
06/25/12 - The simplify command has been fixed for optimal integer coefficient
factoring results and so "180*(sides-2)" simplification works
nicely, by keeping the result the same as the start by
factoring out rational constants greater than 1 (this is new),
along with less than 1,
if the coefficients remain or become integers.
Many things cleaned up and finished, like the official
documentation, the "code integer" command, and "examples/fact.c".
06/27/12 - Allow an ASCII string after the "set save" command, to save only
that string in ~/.mathomaticrc, so that string, which should be set
options, is for every Mathomatic session to start with.
For example, "set save bold color" will start out Mathomatic in
bold color mode every time. Enter "set no save" to remove.
"set save" by itself saves all of the current set options for every
future session.
Mathomatic version 16.0.0 released Friday 06/29/12.
Based on PR 46507 by Wen Heping.
* let to register egg-info.
* all files in distfile are not DOS style EOL oter than Windows related files,
so remove extract option for ZIP.
GMPY 1.15 is a bug fix release. The following bugs were fixed:
* Reference counting leak in divmod(x,0).
* Fatal crash in remove(x,1).
* Discontinue use of custom memory allocator. (Fixes compatibility with Sage.)
* Allow up to base-62 integer conversion.
Based on PR 46506 by Wen Heping.
* let to register egg-info.
* marked as incompatible with python 2.5, as new features in 1.3.
but not marked as compatible with 3.x, one file will not be compiled well
both 3.1 and 3.2.
Lease Log:
Networkx-1.6
Release date: 20 November 2011
Highlights
New functions for finding articulation points, generating random bipartite
graphs, constructing adjacency matrix representations, forming graph products,
computing assortativity coefficients, measuring subgraph centrality and
communicability, finding k-clique communities, and writing JSON format output.
New examples for drawing with D3 Javascript library, and ordering matrices with
the Cuthill-McKee algorithm.
More memory efficient implementation of current-flow betweenness and new
approximation algorithms for current-flow betweenness and shortest-path
betweenness.
Simplified handling of "weight" attributes for algorithms that use
weights/costs/values. See Version 1.6 notes and API changes.
Updated all code to work with the PyPy Python implementation http://pypy.org
which produces faster performance on many algorithms.
For full details of the tickets closed for this release (added features and bug
fixes) see: https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.6
API Changes
See Version 1.6 notes and API changes:
http://networkx.lanl.gov/reference/api_1.6.html
Networkx-1.5
Release date: 4 June 2011
For full details of the tickets closed for this release see: https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.5
Highlights
New features
* Algorithms for generating and analyzing bipartite graphs
* Maximal independent set algorithm
* Erd?s-Gallai graphical degree sequence test
* Negative edge cycle test
* More memory efficient Dijkstra path length with cutoff parameter
* Weighted clustering coefficient
* Read and write version 1.2 of GEXF reader format
* Neighbor degree correlation that handle subsets of nodes
* In-place node relabeling
* Many `weighted' graph algorithms now take optional parameter to use
specified edge attribute (default=`weight') (ticket 509)
* Test for distance regular graphs
* Fast directed Erd?s-Renyi graph generator
* Fast expected degree graph generator
* Navigable small world generator
* Waxman model generator
* Geographical threshold graph generator
* Karate Club, Florentine Families, and Davis' Women's Club graphs
API Changes
See Version 1.5 notes and API changes
http://networkx.lanl.gov/reference/api_1.5.html
Bug fixes
* Fix edge handling for multigraphs in networkx/graphviz interface
(ticket 507)
* Update networkx/pydot interface for new versions of pydot
(ticket 506), (ticket 535)
* Fix negative cycle handling in Bellman-Ford (ticket 502)
* Write more attributes with GraphML and GML formats (ticket 480)
* Handle white space better in read_edgelist (ticket 513)
* Better parsing of Pajek format files (ticket 524) (ticket 542)
* Isolates functions work with directed graphs (ticket 526)
* Faster conversion to numpy matrices (ticket 529)
* Add graph[`name'] and use properties to access Graph.name (ticket 544)
* Topological sort confused None and 0 (ticket 546)
* GEXF writer mishandled weight=0 (ticket 550)
* Speedup in SciPy version of PageRank (ticket 554)
* Numpy PageRank node order incorrect + speedups (ticket 555)
Networkx-1.4
Release date: 23 January 2011
New features
* k-shell,k-crust,k-corona
* read GraphML files from yEd
* read/write GEXF format files
* find cycles in a directed graph
* DFS and BFS algorithms
* chordal graph functions
* Prim's algorithm for minimum spanning tree
* r-ary tree generator
* rich club coefficient
* NumPy matrix version of Floyd's algorithm for all-pairs shortest path
* read GIS shapefiles
* functions to get and set node and edge attributes
* and more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.4
API Changes
* gnp_random_graph() now takes a directed=True|False keyword instead of
create_using
* gnm_random_graph() now takes a directed=True|False keyword instead of
create_using
Bug fixes
* see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.4
Networkx-1.3
Release date: 28 August 2010
See: https://networkx.lanl.gov/trac/timeline
New features
* Works with Python versions 2.6, 2.7, 3.1, and 3.2 (but not 2.4 and 2.5).
* Minimum cost flow algorithms
* Bellman-Ford shortest paths
* GraphML reader and writer
* More exception/error types
* Updated many tests to unittest style. Run with:
"import networkx; networkx.test()" (requires nose testing package)
* and more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.3
API Changes
* minimum_spanning_tree() now returns a NetworkX Graph (a tree or forest)
Bug fixes
* see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.3
The Munkres module provides an implementation of the Munkres
algorithm (also called the Hungarian algorithm or the Kuhn-Munkres
algorithm), useful for solving the Assignment Problem.
Assignment Problem: Let C be an nxn matrix representing the costs
of each of n workers to perform any of n jobs. The assignment
problem is to assign jobs to workers in a way that minimizes the
total cost. Since each worker can perform only one job and each
job can be assigned to only one worker the assignments represent
an independent set of the matrix C.
Contributed to pkgsrc-wip by Jason Bacon.
ARPACK is a collection of Fortran77 subroutines designed to solve large
scale eigenvalue problems.
The package is designed to compute a few eigenvalues and corresponding
eigenvectors of a general n by n matrix A. It is most appropriate for large
sparse or structured matrices A where structured means that a matrix-vector
product w <- Av requires order n rather than the usual order n**2 floating
point operations. This software is based upon an algorithmic variant of the
Arnoldi process called the Implicitly Restarted Arnoldi Method (IRAM). When
the matrix A is symmetric it reduces to a variant of the Lanczos process
called the Implicitly Restarted Lanczos Method (IRLM). These variants may be
viewed as a synthesis of the Arnoldi/Lanczos process with the Implicitly
Shifted QR technique that is suitable for large scale problems. For many
standard problems, a matrix factorization is not required. Only the action
of the matrix on a vector is needed. ARPACK software is capable of solving
large scale symmetric, nonsymmetric, and generalized eigenproblems from
significant application areas. The software is designed to compute a few (k)
eigenvalues with user specified features such as those of largest real part
or largest magnitude. Storage requirements are on the order of n*k locations.
No auxiliary storage is required. A set of Schur basis vectors for the desired
k-dimensional eigen-space is computed which is numerically orthogonal to working
precision. Numerically accurate eigenvectors are available on request.
Important Features:
o Reverse Communication Interface.
o Single and Double Precision Real Arithmetic Versions for Symmetric,
Non-symmetric, Standard or Generalized Problems.
o Single and Double Precision Complex Arithmetic Versions for Standard
or Generalized Problems.
o Routines for Banded Matrices - Standard or Generalized Problems.
o Routines for The Singular Value Decomposition.
o Example driver routines that may be used as templates to implement
numerous Shift-Invert strategies for all problem types, data types
and precision.
Thiss fixes a compilation issue with aligned_allocator, and a typo
in the ParametrizedLine documentation.
2.0.16:
Fix bug in 3x3 tridiagonlisation (and consequently in 3x3 selfadjoint eigen decomposition).
Fix compilation for new gcc 4.6.
Fix performance regression since 2.0.12: in some matrix-vector product, complex matrix expressions were not pre-evaluated.
Fix documentation of Least-Square.
New feature: support for part<SelfAdjoint>.
Fix bug in SparseLU::setOrderingMethod.
FFTW 3.3.2
* Removed an archaic stack-alignment hack that was failing with
gcc-4.7/i386.
* Added stack-alignment hack necessary for gcc on Windows/i386. We
will regret this in ten years (see previous change).
* Fix incompatibility with Intel icc which pretends to be gcc
but does not support quad precision.
* make libfftw{threads,mpi} depend upon libfftw when using libtool;
this is consistent with most other libraries and simplifies the life
of various distributors of GNU/Linux.
FFTW 3.3.1
* Changes since 3.3.1-beta1:
- Reduced planning time in estimate mode for sizes with large
prime factors.
- Added AVX autodetection under Visual Studio. Thanks Carsten
Steger for submitting the necessary code.
- Modern Fortran interface now uses a separate fftw3l.f03 interface
file for the long double interface, which is not supported by
some Fortran compilers. Provided new fftw3q.f03 interface file
to access the quadruple-precision FFTW routines with recent
versions of gcc/gfortran.
* Added support for the NEON extensions to the ARM ISA. (Note to beta
users: an ARM cycle counter is not yet implemented; please contact
fftw@fftw.org if you know how to do it right.)
* MPI code now compiles even if mpicc is a C++ compiler; thanks to
Kyle Spyksma for the bug report.
FFTW 3.3.2
* Removed an archaic stack-alignment hack that was failing with
gcc-4.7/i386.
* Added stack-alignment hack necessary for gcc on Windows/i386. We
will regret this in ten years (see previous change).
* Fix incompatibility with Intel icc which pretends to be gcc
but does not support quad precision.
* make libfftw{threads,mpi} depend upon libfftw when using libtool;
this is consistent with most other libraries and simplifies the life
of various distributors of GNU/Linux.
CHANGES MADE TO MATHOMATIC 15.8.4 TO BRING IT UP TO THE NEXT VERSION:
General cleanup.
05/11/12 - Renamed fact(x) function to factorial(x), because Maxima uses
the function "factorial(x)" and no one uses "fact(x)". Added
factorial(x) as a standard function in rmath. Removed binary
operator name "mod" from rmath, due to having a different meaning
in conventional mathematics. It previously meant the % operator,
which is a programming language construct and not math.
05/14/12 - Improved user interface of divide command.
05/16/12 - Improved introduction to Mathomatic in "doc/manual.html".
05/17/12 - Made more use of C function !isfinite(double) for better
reliability. Checks for infinity and NaN on user input.
05/18/12 - Solve verify now quick simplifies the solve result, so you
don't have to. This will result in better verification and
less chance of oversized expressions.
05/20/12 - Fixed solving bug where it was throwing away absolute values.
Improved the way Mathomatic looks.
05/21/12 - examples/limits.c is now a highly polished program, LGPL licensed.
Compile with "./compile.limits". Tells the integer and float
C data types, with sizes, characteristics, and verification
for the current C compiler (cc).
Display total number of unique solutions stored with
"simplify sign".
Fixed several errors in the simplify command documentation in the
Mathomatic Command Reference.
05/22/12 - Fixed simplify command to simplify (x^2 - 1)^4/(x + 1)^2 properly,
by factoring repeated factor polynomials at the very end.
Fixed bug in divide command, wasn't calculating the polynomial GCD
sometimes, etc, because input was not being expanded. Broken on
12/14/11, fixed today.
05/23/12 - Fixed limit command to return the original expression when the
limit variable is not found or the expression contains no
variables. A warning is given, telling that this is the case.
Thanks to Parag Magunia for indicating that this was a bug.
Previously these cases only returned with an error message.
"tests/limits.in" limit command regression tests checked and
re-added to the main tests. All still works the same as when
these limit command regression tests were removed long ago.
05/24/12 - Cleanup, and remove "examples/c", replaced with
"examples/compile.limits" and "examples/compile.roots".
Mathomatic version 15.8.5 released Friday 05/25/12.
CHANGES MADE TO MATHOMATIC 15.8.3 TO BRING IT UP TO THE NEXT VERSION:
The version command now displays the last main prompt return value, and
the number of allocated equation spaces.
04/29/12 - Added simplifying trig identities to the tests. Discovered
"solve 0" doesn't work anymore, use "solve for 0" instead.
"solve 0" will be fixed and enhanced shortly.
04/30/12 - "solve 0" and "solve verify 0" work now. "solve verify 0"
will solve for zero and tell you if the equation is an identity
or not, while "solve 0" simply solves the current equation for
zero. "solve all verify 0" will verify that all entered equations
are identities.
With the roots command, the "Inverse check" value is not
displayed unless debugging is enabled now.
The iterative calculate command mode now always tells the
number of completed feedback iterations.
It was not apparent before.
Documented and ignore pause command with demo mode now,
instead of html mode.
Demo mode is specified with -d, html mode with -x.
05/02/12 - Mathomatic now proudly displays when verifying a solve operation.
Too many UI improvements to mention, all relatively minor.
05/03/12 - Added "copy select" option to the copy command, which selects
the first created copy, making it the current equation, rather
than not updating the current equation.
05/04/12 - Ran valgrind on the symbolic math library executable testmain,
after running all the tests, no memory
leaks were found at all! I was surprised! Now I get to pat
myself on the back! I will make another release soon.
05/05/12 - "display simple" is now allowed, in addition to "display mixed",
to display simple or mixed fractions as desired, regardless of
the default.
"set finance" option removed, replace with "set fixed" option.
Works similarly, except now you can do "set fixed_point=0" to have
integer-only output.
"set no fixed" or "set fixed -1" turns off fixed-point
mode, returning you to true floating-point mode.
05/06/12 - Added more integer factoring debugging code. It's a shame that
Mathomatic only does double precision floating point arithmetic.
Made "set no autodelete" the default. Numeric expressions will
not be deleted. "set auto" leaves "autodelete" alone now.
05/07/12 - real and imaginary commands now append "_real" or "_imag" to the
solved for variable name now, if a solved equation. This is for
clarification and ease of use.
05/08/12 - Improved "misc/limits.c" and added GNU LGPL license preamble.
Later moved to directory examples.
-d demo mode now allows using the calculate command without
prompting for the values of any of the variables. This is so the
calculate command can be used with the online versions of
Mathomatic.
05/09/12 - Moved all worthy example source code from directory misc to
directory examples, so they can be included in the binary
distributions. Moved and now available are limits.c, roots.c,
and testprimes.
Improved/shortened the eliminate command messages and made the
"using" syntax consistent.
Need "set debug -2" to suppress everything now, including warnings.
"set debug -1" only suppresses helpful messages now, warnings will
get through. Warnings are usually rather important.
Mathomatic version 15.8.4 released Thursday 05/10/12.
CHANGES MADE TO MATHOMATIC 15.8.2 TO BRING IT UP TO THE NEXT VERSION:
Code cleanup.
03/27/12 - Added simplification of "tests/trig.in" and "tests/hypertrig.in"
to the regression tests.
04/02/12 - Added ability to create all non-re-entrant code, so that the Apple
app store won't complain. The line containing "_REENTRANT" in
"includes.h" has been commented out, so nothing special needs to be
done, when compiling for iOS.
04/07/12 - Added ability to make help command text paragraphs all one long
line, instead of always expecting an 80 column or higher display.
Useful for 40 column displays for example, as long as the display
wraps at 40 columns, the output should look OK. Better than it
did, anyways. Tables and such are preserved. See the beginning
of "help.c".
04/10/12 - Fixed bug failing to run gnuplot with Mathomatic compiled with
MINGW. This only affects the MS-Windows version. So if you have
downloaded gnuplot under MS-Windows, the plot command should work
the same as in all other operating systems, now. Be sure and name
it gnuplot.exe and have it in an executable directory in your PATH.
This fixed bug is thanks to Tom Sturgeon for bringing this
error to my attention. This gnuplot fix will be included in the
next release, version 15.8.3, and is now in the development
version. The problem was caused by differences between the Unix
echo command and the Windows echo command.
04/12/12 - Comparing expressions with the compare command will now tell if
one expression is the negation (times -1) of the other.
04/22/12 - Added the HTML tidy command after rman, so that the HTML errors
created by rman are all fixed.
Added and documented matho_clear(3) to Symbolic Math Library,
replaces clear_all(). Simply rename all occurrences of
clear_all() in your code that uses the library with
matho_clear().
04/23/12 - Improved debugging code and error messages.
04/25/12 - The previous autocalc result is erased every time autocalc is
used, unless "set no autodelete" was done. This is done in case
you would like to keep every calculation you made stored in an
equation space. The default is the previous behavior:
"set autodelete", which only keeps one numerical calculation
in memory. "autodelete" only means something when "autocalc" is
on, and since the library has no calculate command, this is not
available in the symbolic math library.
04/27/12 - Cleanup of equation space selecting, shelling out with !, etc.
In the Mathomatic application, everything is now flushed before
user input (with fflush(NULL)). fflush(NULL) is not used at all
anymore in the symbolic math library.
Mathomatic version 15.8.3 released Saturday 04/28/12.
CHANGES MADE TO MATHOMATIC 15.8.1 TO BRING IT UP TO THE NEXT VERSION:
Change of 12/18/11 partially undone. Preventing power collecting
of absolute values doesn't seem necessary anymore, some other
change done recently must have fixed it.
Now power collecting is always done when requested,
fixing a substantial simplification regression that began on 12/18/11.
03/13/12 - Small fix to main makefile. "mandir" and "docdir" no longer depend
on "datadir".
03/14/12 - Small fix to simplification. Any absolute value (such as
|x*y| = ((x*y)^2)^.5) is now not ever power expanded
(to (x^2)^.5*(y^2)^.5 or (x*x*y*y)^.5), so some results are
simpler, like simplifying |x^2-x|.
03/23/12 - A change to the matho script makes GNU m4 no longer quiet
about any warnings or errors, when running m4 Mathomatic.
Mathomatic version 15.8.2 released Saturday 03/24/12.
* Author: Artem Ignatiev <zazubrik@gmail.com>
* remove require and rake altogether
* gem build and rake gem both work fine without those requires,
* and requiring 'rake' broke bundler
* add rake as development dependency
* Somehow it broken rake on my other project
=== 0.7.0 / 07.05.2012
* Author: Artem Ignatiev <zazubrik@gmail.com>
* use both ruby 1.8 and 1.9 compatible way of getting character code when hashing
* Fix syntax for ruby-1.9
* return gemspec so that bundler can find it
When bundler loads gemspec, it evaluates it, and if the return value is
not a gem specification built, refuses to load the gem.
* Testing worksheet protection
=== 0.6.9 / 28.04.2012
* Yield is more simple here too.
* No need to capture the block in Spreadsheet.open
* Rather than extending a core class, let's just use #rcompact from a helper module
Changes from versions 3.0.* to version 3.1.0:
- The "canard à l'orange" release.
- The MPFR source has been reorganized.
- Dropped ansi2knr support.
- TLS support is now detected automatically. If TLS is supported, MPFR is
built as thread safe by default. To disable TLS explicitly, configure
MPFR with --disable-thread-safe.
- New --enable-gmp-internals configure option to use GMP's undocumented
functions (not from the public API). Note that library versioning is
not guaranteed to work if this option is used.
- The mpfr_urandom and mpfr_urandomb functions now return identical values
on processors with different word size (assuming the same random seed, and
since the GMP random generator does not depend itself on the word size,
cf http://gmplib.org/list-archives/gmp-devel/2010-September/001642.html).
- The mpfr_add_one_ulp and mpfr_sub_one_ulp macros (which are obsolete and
no more documented) will be removed in a future release.
- Speed improvement for the mpfr_sqr and mpfr_div functions using Mulders'
algorithm. As a consequence, other functions using those routines are
also faster.
- Much faster formatted output (mpfr_printf, etc.) with %Rg and similar.
- The --with-gmp-build configure option can now be used when the GMP
source directory and the GMP build directory are different (without
having to copy header files manually as before).
- New functions mpfr_buildopt_gmpinternals_p, mpfr_buildopt_tune_case,
mpfr_frexp, mpfr_grandom and mpfr_z_sub.
- New divide-by-zero exception (flag) and associated functions.
- The mpfr.h header can be included several times, while still supporting
optional functions (see Section "Headers and Libraries" in the manual).
- Updated tuning parameters.
- Improved MPFR manual.
- MPFR tests: libtool no longer generates wrapper scripts with "make check"
(so that running the tests under valgrind or gdb is easier).
- Bug fixes.
Note: The mpfr_subnormalize implementation up to MPFR 3.0.0 did not change
the flags. In particular, it did not follow the generic rule concerning
the inexact flag (and no special behavior was specified). The case of the
underflow flag was more a lack of specification.
NetBSD-6.99.4/amd64:
All 160 tests passed
(1 test was not run)
changes: any new features, performance improvements and bug fixes,
Some highlights are:
-Re-introduction of datetime dtype support to deal with dates in arrays.
-A new 16-bit floating point type.
-A new iterator, which improves performance of many functions.
Functions for inference in generalised linear spatial models. The
posterior and predictive inference is based on Markov chain Monte
Carlo methods. Package geoRglm is an extension to the package geoR,
which must be installed first.
Database interface and PostgreSQL driver for R. This package provides
a Database Interface (DBI) compliant driver for R to access PostgreSQL
database systems. A wiki and issue tracking system for the package
are available at Google Code at https://code.google.com/p/rpostgresql/.
A database interface (DBI) definition for communication between R and
relational database management systems. All classes in this package
are virtual and need to be extended by the various R/DBMS
implementations.
A package with classes and methods for spatio-temporal data. In
particular, space-time regular lattices, sparse lattices, and
irregular data are supported, with limited support for trajectories,
but not for topologies with S/T interactions such as space-time
prisms. Utility functions are provided for plotting data as map
sequences (lattice or animation) or multiple time series; for spatial
and temporal selection, as well as methods for retrieving coordinates,
for subsetting, print, summary, etc.
Provide for uniform handling of R's different time-based data classes
by extending zoo, maximizing native format information preservation
and allowing for user level customization and extension, while
simplifying cross-class interoperability.
An S3 class with methods for totally ordered indexed observations. It
is particularly aimed at irregular time series of numeric
vectors/matrices and factors. Zoo's key design goals are independence
of a particular index/date/time class and consistency with ts and base
R by providing methods to extend standard generics.
CHANGES IN R VERSION 2.14.2:
NEW FEATURES:
o The internal untar() (as used by default by R CMD INSTALL) now
knows about some pax headers which bsdtar (e.g., the default tar
for Mac OS >= 10.6) can incorrectly include in tar files, and
will skip them with a warning.
o Function compactPDF() in package tools now takes the default for
argument gs_quality from environment variable GS_QUALITY: there
is a new value "none", the ultimate default, which prevents
GhostScript being used in preference to qpdf just because
environment variable R_GSCMD is set. If R_GSCMD is unset or set
to "", the function will try to find a suitable GhostScript
executable.
o For consistency with the logLik() method, nobs() for "nls" files
now excludes observations with zero weight. (Reported by Berwin
Turlach.)
UTILITIES:
o R CMD check now reports by default on licenses not according to
the description in 'Writing R Extensions'.
o R CMD check has a new option --as-cran to turn on most of the
customizations that CRAN uses for its incoming checks.
PACKAGE INSTALLATION:
o R CMD INSTALL will now no longer install certain file types from
inst/doc: these are almost certainly mistakes and for some
packages are wasting a lot of space.
+ BUG FIXES
CHANGES IN R VERSION 2.14.1:
NEW FEATURES:
o parallel::detectCores() is now able to find the number of
physical cores (rather than CPUs) on Sparc Solaris.
It can also do so on most versions of Windows; however the
default remains detectCores(logical = TRUE) on that platform.
o Reference classes now keep a record of which fields are locked.
$lock() with no arguments returns the names of the locked fields.
o HoltWinters() reports a warning rather than an error for some
optimization failures (where the answer might be a reasonable
one).
o tools::dependsOnPkg() now accepts the shorthand dependencies =
"all".
o parallel::clusterExport() now allows specification of an
environment from which to export.
o The quartz() device now does tilde expansion on its file
argument.
o Option print in Sweave's RweaveLatex() driver now emulates
auto-printing rather than printing (which can differ for an S4
object by calling show() rather than print()).
o filled.contour() now accepts infinite values: previously it might
have generated invalid graphics files (e.g. containing NaN
values).
+ BUG FIXES
Remove devel/py-ctypes (only needed by and supporting python24).
Remove PYTHON_VERSIONS_ACCEPTED and PYTHON_VERSIONS_INCOMPATIBLE
lines that just mirror defaults now.
Miscellaneous cleanup while editing all these files.
Changes in Maxima 5.27:
Backwards-incompatible changes:
* remove obsolete Cray Fortran translator
* rename topoly and to_poly_solver to to_poly and to_poly_solve, respectively
New items in core:
* new functions zn_order, zn_primroot_p, zn_primroot, zn_log, chinese
New items in share:
* package rkf45: Runge-Kutta-Fehlberg 4th-5th order numerical o.d.e. solver
Other changes:
* functions bessel_i, bessel_j: results for imaginary arguments
* function build_info: return a structure instead of just printing its data
* function plot3d: allow 3-d parametric plots
* functions fortmx, f90mx: generate assignments to 1-d array when argument is a list
* package ezunits: update values for physical constants
* revise and update documentation
* reorganization of directory maxima/share
* clean up source code by cutting out unused functions
Bug fixes:
3509430: limit of tanh(x) at 0 makes no sense
3497046: Integration of products of sin(nz)/(nz) sometimes fails
3495182: hgfred([-n/2, (n-1)/2],[1],x) --> error
3484414: display places (false) before output if display2d is false
3480954: integrate(sin(x)^2/x,x,minf,inf) gives not zero
3473549: gcl bug using 1-12-2012 defint.lisp
3470668: Integration is not correct: invalid 'false' term in results
3469184: integrate(exp(-x^n),x,0,1) bug for n >2
3449369: nfloat
3397562: sin(x^2)/(x^2) improper integral incorrect?
mailing list 2012-02-27: print ( false ) bug 5.26.0
mailing list circa 2012-02-19: BIGFLOAT::%TO should pass CL complex numbers
mailing list circa 2012-01-27: nonstandard extension in category scripts
mailing list circa 2012-01-09: invert_by_lu does not work as expected
overflow in regularized incomplete gamma function
incorrect value for gamma_incomplete(0,200*%i)
It sounds like COMPILE-FILE is broken in CLISP on NetBSD/amd64.
Silence warnings and suppress redefinition check in order to compile it
without a single warning.
Makefile.
A package that provides classes and methods for spatial data. The
classes document where the spatial location information resides, for
2D or 3D data. Utility functions are provided, e.g. for plotting data
as maps, spatial selection, as well as methods for retrieving
coordinates, for subsetting, print, summary, etc.
Changes in OpenAxiom-1.4.1
Algebra
The domain ScriptFormulaFormat and the package ScriptFormulaFormat1 have been removed.
Changes in OpenAxiom-1.4.0
This release introduces the following changes from the base document
("AXIOM: The Scientific Computation System" by Jenks and Sutor).
Compiler
* The compiler now accepts interpreter-style unnamed functions.
* The compiler now generate far better (Lisp) codes for Spad libraries
or scripts. The compiler now applies more aggressive (but sound)
optimizations, including domain inlining, type propagations.
* The compiler now accepts interpreter-style unnamed functions.
* Parameterized macros are now supported by the compiler.
* The compiler now support exception handling. In particular,
the try/finally programming construct was added to support reliable
resource management (e.g. opening/closing or creating/removing files.)
Algebra
In addition to novelties in OpenAxiom-1.3.0, the following types have been
added to OpenAxiom-1.4.0:
* The category BooleanLogic has been added.
It is now extended by PropositionalLogic and BitAggregate.
The domain SingleInteger now satisfies BooleanLogic.
* It it now possible to obtain the string representation of a
DoubleFloat value. The function
string: DoubleFloat -> %
was added to the domain String
* A function matrix is now exported by the category MatrixCategory
to allow construction of matrices whose entries can be succinctely
described by a function. For instance, the 4-by-4 Hilbert matrix
may be expressed as
m: Matrix Fraction Integer := matrix(4,4,(i,j) +-> 1/(i+j))
Note that the third argument is a function that computes the value
of the (i,j)th entry.
* The category StringCategory was removed as it was essentially redundant
with the category StringAggregate.
* The category MappingCategory is now part of the algebra as a builtin
category constructor.
* The following operators
less?: (%,NonNegativeInteger) -> Boolean
more?: (%,NonNegativeInteger) -> Boolean
size?: (%,NonNegativeInteger) -> Boolean
have been moved from the category Aggregate to StreamAggregate
where they seem more appropriate.
* The domain InnerTaylorSeries now satisfies the category BiModule.
* The domains FreeModule and OrderedFreeMonoid now satisfy the newly
added FreeMonoidCategory.
* The list of domains for OpenAxiom program manipulation has been expanded.
* Support for range and segment bindings now includes RangeBinding.
Boot
Boot, the programming language used to write the OpenAxiom compiler,
has been vastly improved. Lisp codes are being phased out.
CHANGES MADE TO MATHOMATIC 15.8.0 TO BRING IT UP TO THE NEXT VERSION:
Added some important missing documentation, and the makefiles were fixed.
Some scary messages explained to make them less scary.
02/23/12 - All makefiles corrected to fix the following problem:
Removed -Cv option from the install command, so that installing
Mathomatic under NetBSD works without a hitch. The "install -Cv"
option is not supported under some operating systems, so compiling
and installing Mathomatic will now be easier on those systems.
02/27/12 - Added Heron's formula (calculates the area of any triangle, given
all three side lengths) to the "help geometry" command. Mathomatic
can solve for any side length, too. See "tests/heron.in" for some
proofs.
03/01/12 - "make uninstall" is now passing the current "prefix" (the directory
being operated on, like "/usr") to the lib and primes uninstall.
03/04/12 - Added noisy compile-time warning if DBL_DIG is not 15, and display
it as digits precision in the version command.
Removed "no right_associative_power" from set options listing, now
only lists "right_associative_power" if it is set. A very
unimportant and rarely used option that was just taking up display
space. However, when set, this option makes Mathomatic work like
most other computer algebra systems when parsing multiple power
operators on the same level (without parentheses). So feel free
to use it, or recommend I make it the default.
03/06/12 - Fixed a bug in modulus simplification; sometimes it would go in an
infinite loop because it was not checking that it made the
expression smaller. It now checks that the result is actually
smaller. Surprisingly, this problem happened only when doing
polynomial division for a modulus operator to simplify it.
Here is a test expression, to see if you have this bug:
(x % ((x - y)/integer_any1)). Simplifying it results in a hang,
on any version of Mathomatic without the new bug fix.
Mathomatic version 15.8.1 released Friday 03/09/12.
* Reduced planning time in estimate mode for sizes with large prime factors.
* Added AVX autodetection under Visual Studio.
* Modern Fortran interface now uses a separate fftw3l.f03 interface file for
the long double interface, which is not supported by some Fortran compilers.
Provided new fftw3q.f03 interface file to access the quadruple-precision FFTW
routines with recent versions of gcc/gfortran.
* Added support for the NEON extensions to the ARM ISA.
* MPI code now compiles even if mpicc is a C++ compiler.
* Updated test files from the Math::BigInt distribution
* Updated bundled Devel::CheckLib from v0.92 to v0.93
* Math::BigInt::GMP now requires Math::BigInt v1.997
* Include "^MYMETA\.(yml|json)\z" in MANIFEST.SKIP. Whereas META.* are
generated by the distribution author at packaging time, MYMETA.* are
generated by the end user at configure time after any dynamic dependencies
are known.
* Changed Makefile.PL so that a "make dist" makes a META.yml and META.json.
* Updated common test files from the Math::BigInt distribution.
Notable changes in FriCAS 1.1.6 (compared to version 1.1.5):
- Added experimental graph theory package.
- Added power series expanders for Weierstrass elliptic
functions at 0.
- New functions: kroneckerProduct and kroneckerSum for matrices,
numeric weierstrassInvariants and modularInvariantJ, symbolic
Jacobi Zeta, double float numeric elliptic integrals.
- New domains for vectors and matrices of unsigned 8 and 16 bit integers.
- Changes to Spad compiler: underscores which are not needed as escape
are now significant in Spad names and strings, macros with parameters
are supported, added partial support for exceptions, braces can
be used for grouping.
- A few speedups.
- Reduced disc space usage during build.
Bug fixes, in particular:
- Fixed eval of hypergeometricF at 0
- Fixed problem with scope of macros.
- Worked around problems with openinig named pipes in several Lisp
implementations.
- Fixed a problem with searching documentation via HyperDoc.
- Fixed build problem on Mac OSX.
Notable changes in FriCAS 1.1.5 (compared to version 1.1.4):
- Added numeric version of lambertW.
- New function 'rootFactor' which tries to write roots of products
as products of roots.
- 'try', 'catch' and 'finally' are now Spad keywords.
- Experimental support for using gmp with Closure CL (64-bit Intel/Amd
only).
- New categoris CoercibleFrom and ConvertibleFrom. New domain
for ordinals up to epsilon0. New domain for matrices of machine
integers. New package for solving linear equations written as
expressions (faster then general expression solver).
- Functions exported by Product() are now called 'construct', 'first'
and 'second' (instead of 'makeprod', 'selectfirst' and 'selectsecond'
respectively).
- Some functions are now much faster, in particular bivariate
factorization over small finite fields.
- When using sbcl FriCAS now tries to preload statistical profiler.
Bug fixes, in particular:
- Fixed handling of Control-C in FriCAS compiled by recent sbcl.
- Fixed HyperDoc crash due to bad handling of '#'.
- Fixed power series expanders for elliptic integrals.
- Fixed 'possible wild ramifcation' problem with algebraic
integrals.
- 'has' in interpreter now correctly handles '%'.
- Spad compiler can now handle single '=>' at top level of a function.
- Fixed few problems with conditional types in Spad compiler.
Notable changes in FriCAS 1.1.4 (compared to version 1.1.3):
- New domains for combinatorial probability theory by Franz Lehner.
- Improved integration of algebraic functions.
- Initial support for semirings.
- Updated framework for theory of computations.
- In Spad parser '**', '^' and '->' are now
right-associative.
- Spad parser now longer transforms relational operators.
- Join of categories is faster which speeds up Spad compiler.
Bug fixes, in particular:
- Retraction of 'rootOf' from Expression(Integer) to AlgebraicNumber
works now.
- Attempt to print error message about invalid type no longer
crash (SF 2977357).
- Fixed few problems in Spad compiler dealing with conditional exports.
- HyperDoc now should find all function descriptions (previously
it missed several).
CHANGES MADE TO MATHOMATIC 15.7.3 TO BRING IT UP TO THE NEXT VERSION:
02/05/12 - The variables command now returns false (with error message) if
no normal variables are listed with the default or "count"
command line options. This is so it can detect numeric-only
expressions, which may be useful.
02/08/12 - The set command now returns the string "Success." upon success,
if the debug level is positive or zero. m4 Mathomatic startup
m4 scripts required adjustment, so they wouldn't repeatedly say
"Success.".
02/13/12 - The variables command by default now displays e, i, pi as e#, i#,
and pi#, so you can tell they are not normal variables. This
affected other functionality of the variables command, fix was
uploaded before the end of the day.
02/14/12 - Change of 12/24/11 was undone. Many expressions containing the
imaginary unit, such as the complex exponential expansion of the
tangent function, were not getting simplified with the simplify
command. See the complex number problem in "misc/known_bugs.txt".
Simplification should work better now for expressions containing
division by complex numbers.
Mathomatic version 15.8.0 released Saturday 02/18/12.
CHANGES MADE TO MATHOMATIC 15.7.2 TO BRING IT UP TO THE NEXT VERSION:
Some minor user interface improvements were made.
12/14/11 - Further improved parse_complex(), so simplify works better and
the divide command no longer approximates, giving more accurate
symbolic answers.
12/18/11 - Combining powers and different denominators that contain absolute
values like ((x^2)^.5) is now prevented. This allows correct
simplification and solving when dealing with absolute values.
Tested with the Batman equations, which, when plotted
display the Batman logo ("tests/batman_plot").
12/21/11 - Moved place where 1/i is converted to -i to within the complex
number division handler, making complex number results more
consistent and correct.
12/23/11 - Changed the chief author's main email address to
"gesslein@mathomatic.org". The old linux.com email address didn't
seem to work, reliability issues, etc.
12/24/11 - Combining different denominators that contain the imaginary unit
(i) is now prevented. This prevents getting different answers
after simplifying a complicated complex number expression.
01/01/12 - All copyright dates updated to include the new year 2012.
Happy New Year everybody!
"set html" in the library now allows pretty HTML output with
redirected output and with 2D library result string expression
output ("set display2d" or display command).
Still no color HTML output for the library.
01/04/12 - Improvement to simplification made, less unnecessary divisions
and prettier results of the simplify command. Needs testing.
01/05/12 - Added color HTML output for redirected output when using the
symbolic math library.
01/24/12 - Increased the size of icons/mathomatic.png to 64x64 and made
it look nicer. This is the new, resizeable Mathomatic logo:
icons/mathomatic.svg.
01/25/12 - Published makenews.sh script to make the NEWS file out of the
changes.txt file.
01/26/12 - Added tests/demo and tests/demo_sub, to run specific scripts,
and create complete HTML output files from them. These are used
to create the examples on the Mathomatic website.
Mathomatic version 15.7.3 released Wednesday 02/01/12.
CHANGES MADE TO MATHOMATIC 15.7.1 TO BRING IT UP TO THE NEXT VERSION:
A C code cleanup was performed and new debugging/self-checking code was added.
11/19/11 - "make uninstall" now uninstalls the prime number tools and
symbolic math library too.
11/20/11 - Cleaned up calculate command to allow feedback iteration of more
than one expression at a time, for a consistent user interface.
11/22/11 - The Mathomatic command "help geometry" now enters the common
geometry formulas for you, into equation spaces.
Added "help conversions" which enters some common metric/English
conversion formulas; with it, you just select the equation that
does what you want, solving for the desired unit of measurement.
Then you just type "repeat calculate" to try different values.
"tests/geometry.in" and "tests/conversions.in" have been
subsequently removed.
11/25/11 - When compiled for the Symbolic Math Library, Mathomatic defaults
to single-line output ("set no display2d"), so that output can be
easily fed back into the input. Otherwise, output defaults to
2D mode ("set display2d"). Mathomatic no longer ignores the
display2d flag when using the Symbolic Math Library.
11/26/11 - The command "factor number" now works in the symbolic math library,
similarly to the way it works in the Mathomatic application.
11/27/11 - matho-sumsq in the Prime Number Tools now gets its input from
standard input, if invoked with no arguments.
11/29/11 - Added shell script "misc/testprimes" for a parallel, brute force
test for the first 50,000,000 primes generated by matho-primes.
Read the shell script for more information. Runs in 30 seconds on
a fast, dual-core computer.
11/30/11 - Added -m option to matho-primes, which allows specifying a
memory size multiplier.
12/02/11 - Added ability to push a text string into the readline history
buffer, with the "push string" command. Whenever the command
"push equation-number-ranges" fails, the entire argument text
string is pushed, instead.
12/03/11 - Made it so that entering "#" followed by a variable name at the main prompt
searches backwards through all equation spaces for that variable, and then
selecting and displaying that equation space. "/" followed by a variable name
performs similarly, but searches forward.
12/04/11 - Added "help main" command, which lists all things allowed at the
main prompt.
Added "tests/cubic2.in", which is the general cubic polynomial
formula using 2 equations.
Improved display order and functionality of "optimize all" command.
12/11/11 - Better detection of complex numbers with fixed parse_complex()
internal function.
Rationalizing denominators that contain absolute values ((x^2)^.5)
is now prevented. This was a bug.
Mathomatic version 15.7.2 released Tuesday 12/13/11.
CHANGES MADE TO MATHOMATIC 15.7.0 TO BRING IT UP TO THE NEXT VERSION:
11/03/11 - Added "tests/heart.in", which plots a nice looking heart with
gnuplot while running Mathomatic.
Displaying thousands separators in MinGW was failing, now it must
be specified with the THOUSANDS_SEPARATOR compile-time define.
Thousands separators are not well supported in most standard C
libraries, causing failure to display numbers, so they are now
turned off. So now "set finance" works in the MS-Windows version,
it was not working at all before (bug reports, anyone?).
11/04/11 - Testing "set finance" mode when doing the standard Mathomatic
tests now. "tests/finance.in" now does "set finance" first thing.
Do we need a round-up option for "set finance" mode? Currently
rounds to nearest cent.
11/06/11 - Some minor improvements to the Mathomatic symbolic math library
error handling output were made. And no more redundant nor
inappropriate things are sent to standard output when SILENT=0,
only helpful messages are output.
Added the "unfactor count" command option, which also displays the
resulting number of additive terms in each equation side.
11/10/11 - Improved error and warning messages.
Rearrangements were made for future reliability and thorough
testing.
11/11/11 - Allow multiple equation-number-ranges for the simplify command.
11/12/11 - Code cleanup and added more DEBUG error checking.
Added a little helpful color to the help command.
11/13/11 - "repeat echo -" now draws a line of dashes, "repeat echo" clears
the screen, etc.
The derivative command now properly terminates as soon as the
derivative reaches 0, whenever an order greater than 1 is
specified. Previously it just kept differentiating, order times.
The number of derivatives taken until the result reached 0 is
displayed. No primes are added to the LHS variable if the required
number of primes to add won't fit in the variable name. Previously
it gave the wrong number of primes (') if they all didn't fit.
Cleanup of the Mathomatic Prime Number Tools and their man pages.
11/14/11 - Fixed a missing check for out of memory failure in plot command.
Plotting expressions with sign variables in them now gives a
suggestion to try "simplify sign" first, because gnuplot doesn't
handle +/- or sign variables, but it can plot multiple
expressions at once.
11/17/11 - Made "make test" and ./t work under Cygwin, by ignoring trailing
carriage returns when comparing test output.
Mathomatic version 15.7.1 released Friday 11/18/11.
CHANGES MADE TO MATHOMATIC 15.6.5 TO BRING IT UP TO THE NEXT VERSION:
A C code cleanup was done.
10/02/11 - Allow an equation-number-range to be specified on the calculate
command command-line, so that multiple equation spaces can be
calculated automatically with a single command.
10/19/11 - Improved nintegrate command results. nintegrate of cos(sin(x+1))
wrt x from 0 to 1 now always gives the correct simplified result.
Rewrote to allow specifying lower and upper bounds on command line.
10/20/11 - Divide command improved: Allow specifying the dividend and divisor
on the command line. Other minor fixes.
The Mathomatic command "plot x^2" works now, Mathomatic
automatically replaces all ^ with ** on the plot command line.
10/21/11 - Added compilation option -fexceptions to CFLAGS in the Mathomatic
application and library makefiles and build scripts. May be why
exception handling wasn't working well in the past.
10/22/11 - Fixed the display command in the symbolic math library to respond
to "set columns=number" to cut-off the 2D expression output string
at the number column, instead of always 80 columns. And Unix shell
style redirection for the display command works now, to be
consistent with the other library commands, simultaneously
returning a single 2D expression string (width controlled by the
"set columns" variable) and outputting all specified 2D expressions
to the file pointed to by gfp (width limit set to infinity).
Trying to remove -lncurses from ld command line again, getting more
build failures because of it. To compile under old Red Hat Linux,
"LDLIBS=-lncurses make READLINE=1" must be used now. All other
distros should easily compile with no changes now.
10/24/11 - Added the "variables count" option, to display the counts of each
variable in the specified expressions or equations.
11/01/11 - Added "NEWS" file, which is just "changes.txt" reversed. "NEWS" is
ordered neatly with the latest changes at the top.
Mathomatic version 15.7.0 released Wednesday 11/02/11.
CHANGES MADE TO MATHOMATIC 15.6.4 TO BRING IT UP TO THE NEXT VERSION:
8/25/11 - Now allowing balanced parentheses with anything inside them in
variable names, so that they can preserve functions temporarily.
Just type "set special ()" to use this option and stop getting
errors when entering functions. They will not be real functions,
just variables whose name is the complete function string.
8/27/11 - Added sinc(x) function to m4 Mathomatic, which is the normalized
sinc function, defined as sin(pi*x)/(pi*x).
8/31/11 - Split off the generally useful stuff and general C math defines
from am.h to standard.h; am.h only contains Mathomatic defines now.
standard.h and complex_lib.c with complex.h can be included in
your C math programs if you like, with no changes required.
Use of gcd.c in other floating point programs that need a gcd() or
double-to-fraction convert function is recommended. The code
has been heavily tested by this CAS.
9/02/11 - Fixed and tested the variables command to handle complex number
equations better.
9/04/11 - Cleaned up and improved documentation on modular arithmetic and
its options. Mathomatic can simplify, calculate, and even solve
modular arithmetic!
9/06/11 - The 2D display command's internals were
rewritten to allow outputting to C string buffers. This allows
the display command to return a multi-line, formatted expression
string when using the Symbolic Math Library. Note that there is
no color mode when outputting to a C string, but if you send the
string to a terminal, it displays the specified equation space
nicely in 2D fraction format.
9/18/11 - Mathomatic "help color" command page created.
9/19/11 - Ported Mathomatic to latest OpenIndiana SunOS operating system.
Some changes were required and implemented for easier compilation.
All tests passed!
9/24/11 - Improved set command error reporting.
Mathomatic version 15.6.5 released Sunday 09/25/11.
CHANGES MADE TO MATHOMATIC 15.6.3 TO BRING IT UP TO THE NEXT VERSION:
8/05/11 - Approximating complex number roots only when helpful or approximating,
improving some results when imaginary numbers are used; for example,
simplifying sqrt(sin(x)) now returns the best possible result.
8/06/11 - Added "make strip" target to allow easily running the Unix strip
utility on the resulting binaries.
Deleted the "make install-strip" and "make bininstall-strip" targets.
Additionally display C compiler version number in version command.
8/09/11 - Added ability to make a shared library of the Symbolic Math Library,
using the cmake utility. "CMakeLists.txt" was the only file changed.
The shared library is thoroughly UNtested. :-)
8/13/11 - A colon character (:) placed before any main prompt input will make
it ignore any error occuring in that particular line, so any current
read operation won't abort. Any Mathomatic command preceded with a
colon will always return with successful status.
File "misc/identities.in" was added, showing a strength and weakness
of Mathomatic.
Removed "doc" target in makefile, due to interference from a
directory of the same name; use the "html" target instead.
Added cheat card "doc/quickrefcard.html", created by "make htmlcard"
and scripts "makehtmlcard.sh" and "makehtmlcard.awk". The PDF of
this currently has to be made manually with a web browser, using
print to PDF file.
Added ability to automatically create cheat sheet "quickref.pdf",
created by "make pdfsheet", which invokes script "makepdfsheet.sh".
8/19/11 - General complex number root approximation bug fix: expressions like
sqrt(sin(9)) now give the correct result, instead of a negative
number, when using the calculate command. The calculate command is
used to immediately evaluate it when you type "sqrt(sin(9))" into
the m4 Mathomatic main prompt.
8/20/11 - The variables command now defines all "integer" and "sign" variables
as "int" instead of "double".
8/21/11 - Rewrote the code command code lister to allow output to a C string.
Code command is now completely available with string output in the
Symbolic Math Library, meaning Mathomatic can automatically
generate programming language code within other programs now.
Mathomatic version 15.6.4 released Wednesday 08/24/11.
CHANGES MADE TO MATHOMATIC 15.6.2 TO BRING IT UP TO THE NEXT VERSION:
Source code and user documentation cleanup and corrections.
Creating a PDF book from the Mathomatic man pages with "make bookman" is more
likely to work now. Package txt2man must be installed to run "make bookman".
6/24/11 - Added file misc/known_bugs.txt, which is the current list of known
bugs in Mathomatic.
7/04/11 - Added file tests/quadratic.in, just a script that solves the general
quadratic equation.
7/06/11 - Fixed error messaging to not always give command usage information
when a command fails or gives a negative result.
Now only gives command usage info when helpful,
like when something on the command line is incorrect.
7/07/11 - Fixed the Mathomatic derivative command to not fail with a helpful
error message when the derivative is zero.
Now it just gives a warning message along with the successful
result of the constant zero.
7/23/11 - Mathomatic no longer compiles correctly with the latest Xcode gcc,
due to a bug in Apple's gcc optimizer. Either turn the optimizer
completely off when compiling with Xcode, or use the gcc provided
by MacPorts. Xcode version 3.x and other non-Apple C compilers will
work fine. All mention of Xcode has been removed from the
Mathomatic distribution.
7/28/11 - Balanced parentheses and brackets are now allowed in variable names,
if the "set special_variable_characters" command is run first.
For example, "set special ()" will allow entry of named functions,
converting them to variables, which might be useful in some cases.
However, entry of variables like "f(x)" will not be differentiatable,
because there is no "x" variable in that, only the "f(x)" variable.
There can be no spaces encountered in the function; variable names
end at any non-variable character, including space characters. I
can change this, if anyone requests it.
Entry of array elements is still possible with "set special []".
This is the default.
7/29/11 - Prompts are now blue when reading files into Mathomatic in color mode.
7/30/11 - Allow an equation number range on the solve command line, for faster,
more automated solving. If you want to solve all entered equations
for x, just type "solve all x" or "solve verify all for x" to be sure.
7/31/11 - Allow "repeat read filename" command, which repeatedly reads a script
until it fails or is aborted.
8/04/11 - "make install" now shows if installed executables are new or have
changed since the last install.
Mathomatic version 15.6.3 released Thursday 08/04/11.
CHANGES MADE TO MATHOMATIC 15.6.1 TO BRING IT UP TO THE NEXT VERSION:
6/06/11 - Corrected datadir variable usage in the main Mathomatic makefile.
Directly importing datadir could have catastrophically deleted the
entire /usr/share directory with "make uninstall".
6/12/11 - Added proper compilation option (WIN32_CONSOLE_COLORS) for color mode
in MinGW, in case use with mintty.exe is desired.
Mathomatic version 15.6.2 released Sunday 06/12/11.
CHANGES MADE TO MATHOMATIC 15.6.0 TO BRING IT UP TO THE NEXT VERSION:
The Mathomatic user documentation and help have been shaped up.
A BOLD_COLOR compile-time flag was added, to make Mathomatic default to
using bold color mode. Used on the Mac and Windows versions of
Mathomatic now.
5/8/11 - The "factor number" command now allows number ranges, in addition
to integers and integer expressions.
5/9/11 - Install "m4/functions.m4" to proper directory (/usr/share/mathomatic/m4).
The "m4" directory is no longer installed to the system doc directory.
A big thanks to Terje Røsten of Fedora for showing me the way on this,
and for his timely Mathomatic package maintenance in Fedora Linux.
5/11/11 - The matho-primes utility can now be run from within Mathomatic by typing
"list primes". Put any arguments you want to pass to matho-primes on the
"list primes" command line. Redirection doesn't work yet for this, so it
remains undocumented.
5/15/11 - Added NOGAMMA compile-time define, which makes the factorial function
integer only, if desired.
Added color mode to the MinGW Windows version of Mathomatic, thanks to
Doug Snead for the code. Tested in cmd.exe, command.com, and CygWin.
The new color mode does not work in mintty.exe.
5/16/11 - Allow defining SILENT=0 when compiling the symbolic math library,
so that "set debug level" works and normal Mathomatic debugging works
within the library code. Thanks to Doug Snead for suggesting this.
5/21/11 - Changed "make check" to not use the time command, as /usr/bin/time is not
available on all systems. "make test" performs the same function and
still uses time.
5/23/11 - Updated the Free Software Foundation's address in the LGPL license text
and in all source files.
Mathomatic version 15.6.1 released Sunday 06/05/11.
* Stop to treat NetBSD's sed as GNU sed, not full compatible.
* Then, no need to reset TOOLS_PLATFORM.gsed for NetBSD if USE_TOOLS+=gsed and
real GNU sed is required.
* In addition, convert simple USE_TOOLS+=gsed to conditionally, without NetBSD.
* convert {BUILD_,}DEPENDS+=gsed to USE_TOOLS, all tools from gsed are real gsed.
(Leaf package, so ok during freeze.)
Upstream changelog:
2009.08.14: Changes between NTL 5.5.1 and 5.5.2
New routines MulAddTo and MulSubFrom for computing x += a*b and x
-= a*b, where x and a are ZZ's and b is a ZZ or a long. In the case
where b is a long, this may be much faster than writing mul(t, a, b);
add(x, x, t). See ZZ.txt for details. These new routines are used in a
number of places in NTL to get faster algorithms (for example, the LLL
routine).
Fixed a relatively benign indexing bug in GF2EX discovered by
Berend-Benjamin Tams using the valgrind tool.
2009.05.05: Changes between NTL 5.5 and 5.5.1
If using GMP (via either NTL_GMP_LIP or NTL_GMP_HACK), then the
new version (4.3.0) of GMP implements the XGCD functionality
differently, so that the coefficients do not always agree with those
returned by the classical extended Euclidean algorithm. This version
of NTL corrects the coefficients, so that the "classical" coefficients
are always produced, regardless of GMP's implementation. This version
of NTL also works around a bug in GMP 4.3.0's XGCD code (although that
bug should be fixed in GMP 4.3.1).
The configure script has been slightly modified: there is a new
configuration variable DEF_PREFIX, whose value can be used to set
PREFIX, GMP_PREFIX, and GF2X_PREFIX in one stroke. Also, the (somewhat
esoteric) configure variables GMP_LIBDIR, GMP_INCDIR, GF2X_LIBDIR, and
GF2X_INCDIR have slightly different meanings now.
2009.04.08: Changes between NTL 5.4.2 and 5.5
Added the ability to generate a shared library (with help from Tim
Abbott). Details.
Fixed some standardization issues (with help from Tim Abbot):
default location of installed documentation files now conforms to
standards; use of EOF now conforms to standards.
Added a callback mechanism to NTL's error reporting function. See
ErrorCallback in tools.txt.
Added support for the gf2x library for speeding up arithmetic in
GF2X (with help from Emmanuel Thom?). Details.
In conjuction with the above, I also changed the GF2X so that it
works better with very large polynomials: large blocks of memory are
released, recursive HalfGCD algorithms are used for large polynomials.
Fixed a bug in void TraceMod(zz_p& x, const zz_pX& a, const
zz_pXModulus& F) (reported by Luca De Feo).
Fixed a performance issue in various versions of SetCoeff
(reported by Luca De Feo).
Fixed the declaration of mat_zz_p transpose(const mat_zz_p& a)
(reported by Benoit Lacelle).
2008.03.05: Changes between NTL 5.4.1 and 5.4.2
Fixed a bug in the sub(ZZ_pEX, ZZ_pE, ZZ_pEX) and sub(zz_pEX,
zz_pE, zz_pEX) routines (reported by Charanjit Jutla). Under certain
circumstances, these could outout wrong answers.
2007.05.09: Changes between NTL 5.4 and 5.4.1
Fixed rounding bug in expm1 (reported by Paul Zimmermann).
Fixed memory leak in several LLL routines (reported by Friedrich Bahr).
Fixed infinite loop in several LLL routines (this only occurred on
machines, like x86, with double rounding).
Improved GF2X timing tests (suggested by Paul Zimmermann).
2005.03.24: Changes between NTL 5.3.2 and 5.4
By default, NTL now compiles in ISO mode (using namespaces,
etc.). You can always revert to traditional mode by unsetting the flag
NTL_STD_CXX (either pass NTL_STD_CXX=off to the configure script, or
manually edit the config.h file).
Some bug fixes:
The sqrt and log1p routines for the RR class would produce
incorrectly rounded results in certain circumstances (although this
only affected the relative error of the result very marginally).
The SqrRootPrec routine for the RR class could not be called,
because it was defined incorrectly.
Thanks to Paul Zimmermann for finding (and fixing) these bugs!
Paul has also validated NTL's RR class by cross-checking it with the
MPFR library.
Some performance enhancements:
Added a new MulModPrecon inline function for computing (a * b)
% n for single precision numbers, when b and n are fixed for several
computations. On some platforms this can be twice as fast or more than
the old MulMod2 routine. This indirectly affects a lot of computations
that are done via homomorphic imaging (polynomial multiplication over
zz_p, ZZ_p, and ZZ, matrix computations over zz_p and ZZ).
Rewrote the small prime FFT to take advantage of the new
MulModPrecon, and to be more cache friendly.
Improved the performance of the GF2X multiplication
routine. On some platforms, it can be twice as fast as the old
one. Thanks (again) to Paul Zimmermann for suggesting some of these
improvements and supplying some of the code.
Miscellany:
Rewrote several of the installation scripts in Perl (the old
shell scripts were getting too messy to maintain). However, the syntax
for all of the command-line interfaces remains identical.
2004.05.21: Changes between NTL 5.3.1 and 5.3.2
Some bug fixes.
Re-wrote SqrRootMod to make it run faster.
This makes the package build and work at least in NetBSD on some platforms.
Summary of important user-visible changes for version 3.4.3:
-----------------------------------------------------------
** Octave 3.4.3 is a bug fixing release.
Summary of important user-visible changes for version 3.4.2:
-----------------------------------------------------------
** Octave 3.2.4 fixes some minor installation problems that affected
version 3.4.1.
Summary of important user-visible changes for version 3.4.1:
-----------------------------------------------------------
** Octave 3.4.1 is primarily a bug fixing release.
** IMPORTANT note about binary incompatibility in this release:
Binary compatibility for all 3.4.x releases was originally planned,
but this is impossible for the 3.4.1 release due to a bug in the way
shared libraries were built in Octave 3.4.0. Because of this bug,
.oct files built for Octave 3.4.0 must be recompiled before they
will work with Octave 3.4.1.
Given that there would be binary incompatibilities with shared
libraries going from Octave 3.4.0 to 3.4.1, the following
incompatible changes were also made in this release:
* The Perl Compatible Regular Expression (PCRE) library is now
required to build Octave.
* Octave's libraries and .oct files are now installed in
subdirectories of $libdir instead of $libexecdir.
Any future Octave 3.4.x release versions should remain binary
compatible with Octave 3.4.1 as proper library versioning is now
being used as recommended by the libtool manual.
** The following functions have been deprecated in Octave 3.4.1 and will
be removed from Octave 3.8 (or whatever version is the second major
release after 3.4):
cquad is_duplicate_entry perror strerror
** The following functions are new in 3.4.1:
colstyle gmres iscolumn isrow mgorth nproc rectangle
** The get_forge_pkg function is now private.
** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw
functions are now private.
** The logistic_regression_derivatives and logistic_regression_likelihood
functions are now private.
** ChangeLog files in the Octave sources are no longer maintained
by hand. Instead, there is a single ChangeLog file generated from
the Mercurial version control commit messages. Older ChangeLog
information can be found in the etc/OLD-ChangeLogs directory in the
source distribution.
Summary of important user-visible changes for version 3.4:
---------------------------------------------------------
** BLAS and LAPACK libraries are now required to build Octave. The
subset of the reference BLAS and LAPACK libraries has been removed
from the Octave sources.
** The `lookup' function was extended to be more useful for
general-purpose binary searching. Using this improvement, the
ismember function was rewritten for significantly better
performance.
** Real, integer and logical matrices, when used in indexing, will now
cache the internal index_vector value (zero-based indices) when
successfully used as indices, eliminating the conversion penalty for
subsequent indexing by the same matrix. In particular, this means it
is no longer needed to avoid repeated indexing by logical arrays
using find for performance reasons.
** Logical matrices are now treated more efficiently when used as
indices. Octave will keep the index as a logical mask unless the
ratio of true elements is small enough, using a specialized
code. Previously, all logical matrices were always first converted
to index vectors. This results in savings in both memory and
computing time.
** The `sub2ind' and `ind2sub' functions were reimplemented as compiled
functions for better performance. These functions are now faster,
can deliver more economized results for ranges, and can reuse the
index cache mechanism described in previous paragraph.
** The built-in function equivalents to associative operators (`plus',
`times', `mtimes', `and', and `or') have been extended to accept
multiple arguments. This is especially useful for summing
(multiplying, etc.) lists of objects (of possibly distinct types):
matrix_sum = plus (matrix_list{:});
** An FTP object type based on libcurl has been implemented. These
objects allow ftp connections, downloads and uploads to be
managed. For example,
fp = ftp ("ftp.octave.org);
cd (fp, "gnu/octave");
mget (fp, "octave-3.2.3.tar.bz2");
close (fp);
** The default behavior of `assert (observed, expected)' has been
relaxed to employ less strict checking that does not require the
internals of the values to match. This avoids previously valid
tests from breaking due to new internal classes introduced in future
Octave versions.
For instance, all of these assertions were true in Octave 3.0.x
but false in 3.2.x due to new optimizations and improvements:
assert (2*linspace (1, 5, 5), 2*(1:5))
assert (zeros (0, 0), [])
assert (2*ones (1, 5), (2) (ones (1,5)))
** The behavior of library functions `ismatrix', `issquare', and
`issymmetric' has been changed for better consistency.
* The `ismatrix' function now returns true for all numeric,
logical and character 2-D or N-D matrices. Previously, `ismatrix'
returned false if the first or second dimension was zero.
Hence, `ismatrix ([])' was false,
while `ismatrix (zeros (1,2,0))' was true.
* The `issquare' function now returns a logical scalar, and is
equivalent to the expression
ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x)
The dimension is no longer returned. As a result, `issquare ([])'
now yields true.
* The `issymmetric' function now checks for symmetry instead of
Hermitianness. For the latter, ishermitian was created. Also,
logical scalar is returned rather than the dimension, so
`issymmetric ([])' is now true.
** Function handles are now aware of overloaded functions. If a
function is overloaded, the handle determines at the time of its
reference which function to call. A non-overloaded version does not
need to exist.
** Overloading functions for built-in classes (double, int8, cell,
etc.) is now compatible with Matlab.
** Function handles can now be compared with the == and != operators,
as well as the `isequal' function.
** Performance of concatenation (using []) and the functions `cat',
`horzcat', and `vertcat' has been improved for multidimensional
arrays.
** The operation-assignment operators +=, -=, *= and /= now behave more
efficiently in certain cases. For instance, if M is a matrix and S a
scalar, then the statement
M += S;
will operate on M's data in-place if it is not shared by another
variable, usually increasing both time and memory efficiency.
Only selected common combinations are affected, namely:
matrix += matrix
matrix -= matrix
matrix .*= matrix
matrix ./= matrix
matrix += scalar
matrix -= scalar
matrix *= scalar
matrix /= scalar
logical matrix |= logical matrix
logical matrix &= logical matrix
where matrix and scalar belong to the same class. The left-hand
side must be a simple variable reference.
Moreover, when unary operators occur in expressions, Octave will
also try to do the operation in-place if it's argument is a
temporary expresssion.
** The effect of comparison operators (<, >, <=, and >=) applied to
complex numbers has changed to be consistent with the strict
ordering defined by the `max', `min', and `sort' functions. More
specifically, complex numbers are compared by lexicographical
comparison of the pairs `[abs(z), arg(z)]'. Previously, only real
parts were compared; this can be trivially achieved by wrapping the
operands in real().
** The automatic simplification of complex computation results has
changed. Octave will now simplify any complex number with a zero
imaginary part or any complex matrix with all elements having zero
imaginary part to a real value. Previously, this was done only for
positive zeros. Note that the behavior of the complex function is
unchanged and it still produces a complex value even if the
imaginary part is zero.
** As a side effect of code refactoring in liboctave, the binary
logical operations are now more easily amenable to compiler
optimizations and are thus significantly faster.
** Octave now allows user-defined `subsasgn' methods to optimize out
redundant copies. For more information, see the manual.
** More efficient matrix division handling. Octave is now able to
handle the expressions
M' \ V
M.' \ V
V / M
(M is a matrix and V is a vector) more efficiently in certain cases.
In particular, if M is triangular, all three expressions will be
handled by a single call to xTRTRS (from LAPACK), with appropriate
flags. Previously, all three expressions required a physical
transpose of M.
** More efficient handling of certain mixed real-complex matrix
operations. For instance, if RM is a real matrix and CM a complex
matrix,
RM * CM
can now be evaluated either as
complex (RM * real (CM), RM * imag (CM))
or as
complex (RM) * CM,
depending on the dimensions. The first form requires more
temporaries and copying, but halves the FLOP count, which normally
brings better performance if RM has enough rows. Previously, the
second form was always used.
Matrix division is similarly affected.
** More efficient handling of triangular matrix factors returned from
factorizations. The functions for computing QR, LU and Cholesky
factorizations will now automatically return the triangular matrix
factors with proper internal matrix_type set, so that it won't need
to be computed when the matrix is used for division.
** The built-in `sum' function now handles the non-native summation
(i.e., double precision sum of single or integer inputs) more
efficiently, avoiding a temporary conversion of the whole input
array to doubles. Further, `sum' can now accept an extra option
argument, using a compensated summation algorithm rather than a
straightforward sum, which significantly improves precision if lots
of cancellation occurs in the summation.
** The built-in `bsxfun' function now uses optimized code for certain
cases where built-in operator handles are passed in. Namely, the
optimizations concern the operators `plus', `minus', `times',
`ldivide', `rdivide', `power', `and', `or' (for logical arrays),
the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the
functions `min' and `max'. Optimizations only apply when both
operands are of the same built-in class. Mixed real/complex and
single/double operations will first convert both operands to a
common type.
** The `strfind' and `strrep' functions now have compiled
implementations, facilitating significantly more efficient searching
and replacing in strings, especially with longer patterns. The code
of `strcat' has been vectorized and is now much more efficient when
many strings are concatenated. The `strcmpi' and `strncmpi'
functions are now built-in functions, providing better performance.
** Matlab-style ignoring input and output function arguments using
tilde (~) is now supported. Ignored output arguments may be
detected from a function using the built-in function `isargout'.
For more details, consult the manual.
** The list datatype, deprecated since the introduction of cells, has
been removed.
** The accumarray function has been optimized and is now significantly
faster in certain important cases.
** The behavior of isreal and isnumeric functions was changed to be more
Matlab-compatible.
** The integer math & conversion warnings (Octave:int-convert-nan,
Octave:int-convert-non-int-val, Octave:int-convert-overflow,
Octave:int-math-overflow) have been removed.
** rem and mod are now built-in functions. They also handle integer
types efficiently using integer arithmetic.
** Sparse indexing and indexed assignment has been mostly rewritten.
Since Octave uses compressed column storage for sparse matrices,
major attention is devoted to operations manipulating whole columns.
Such operations are now significantly faster, as well as some other
important cases.
Further, it is now possible to pre-allocate a sparse matrix and
subsequently fill it by assignments, provided they meet certain
conditions. For more information, consult the `spalloc' function,
which is no longer a mere dummy. Consequently, nzmax and nnz are no
longer always equal in Octave. Octave may also produce a matrix
with nnz < nzmax as a result of other operations, so you should
consistently use nnz unless you really want to use nzmax (i.e. the
space allocated for nonzero elements).
Sparse concatenation is also affected, and concatenating sparse
matrices, especially larger collections, is now significantly more
efficient. This applies to both the [] operator and the
cat/vertcat/horzcat functions.
** It is now possible to optionally employ the xGESDD LAPACK drivers
for computing the singular value decomposition using svd(), instead
of the default xGESVD, using the configuration pseudo-variable
svd_driver. The xGESDD driver can be up to 6x times faster when
singular vectors are requested, but is reported to be somewhat less
robust on highly ill-conditioned matrices.
** Configuration pseudo-variables, such as page_screen_output or
confirm_recursive_rmdir (or the above mentioned svd_driver), now
accept a "local" option as second argument, requesting the change
to be undone when the current function returns:
function [status, msg] = rm_rf (dir)
confirm_recursive_rmdir (false, "local");
[status, msg] = rmdir (dir, "s");
...
endfunction
Upon return, confirm_recursive_rmdir will be restored to the value
it had on entry to the function, even if there were subsequent
changes to the variable in function rm_rf or any of the functions
it calls.
** pkg now accepts a -forge option for downloading and installing
packages from Octave Forge automatically. For example,
pkg install -forge general
will automatically download the latest release of the general
package and attempt to install it. No automatic resolving of
dependencies is provided. Further,
pkg list -forge
can be used to list all available packages.
** The internal data representation of structs has been completely
rewritten to make certain optimizations feasible. The field data
can now be shared between structs with equal keys but different
dimensions or values, making operations that preserve the fields
faster. Economized storage is now used for scalar structs (just
like most other scalars), making their usage more
memory-efficient. Certain array-like operations on structs
(concatenation, uniform cellfun, num2cell) have gained a
significant speed-up. Additionally, the octave_scalar_map class
now provides a simpler interface to work with scalar structs within
a C++ DLD function.
** Two new formats are available for displaying numbers:
format short eng
format long eng
Both display numbers in engineering notation, i.e., mantissa +
exponent where the exponent is a multiple of 3.
** The following functions are new in Octave 3.4:
accumdim erfcx nfields pqpnonneg uigetdir
bitpack fileread nth_element quadcc uigetfile
bitunpack fminbnd onCleanup randi uiputfile
blkmm fskipl pbaspect repelems uimenu
cbrt ifelse pie3 reset whitebg
curl ishermitian powerset rsf2csf
chop isindex ppder saveas
daspect luupdate ppint strread
divergence merge ppjumps textread
** Using the image function to view images with external programs such
as display, xv, and xloadimage is no longer supported. The
image_viewer function has also been removed.
** The behavior of struct assignments to non-struct values has been
changed. Previously, it was possible to overwrite an arbitrary
value:
a = 1;
a.x = 2;
This is no longer possible unless a is an empty matrix or cell
array.
** The dlmread function has been extended to allow specifying a custom
value for empty fields.
** The dlmread and dlmwrite functions have been modified to accept
file IDs (as returned by fopen) in addition to file names.
** Octave can now optimize away the interpreter overhead of an
anonymous function handle, if the function simply calls another
function or handle with some of its parameters bound to certain
values. Example:
f = @(x) sum (x, 1);
When f is called, the call is forwarded to @sum with the constant 1
appended, and the anonymous function call does not occur on the
call stack.
** Deprecated functions.
The following functions were deprecated in Octave 3.0 and have been
removed from Octave 3.4.
beta_cdf geometric_pdf pascal_pdf
beta_inv geometric_rnd pascal_rnd
beta_pdf hypergeometric_cdf poisson_cdf
beta_rnd hypergeometric_inv poisson_inv
binomial_cdf hypergeometric_pdf poisson_pdf
binomial_inv hypergeometric_rnd poisson_rnd
binomial_pdf intersection polyinteg
binomial_rnd is_bool setstr
chisquare_cdf is_complex struct_contains
chisquare_inv is_list struct_elements
chisquare_pdf is_matrix t_cdf
chisquare_rnd is_scalar t_inv
clearplot is_square t_pdf
clg is_stream t_rnd
com2str is_struct uniform_cdf
exponential_cdf is_symmetric uniform_inv
exponential_inv is_vector uniform_pdf
exponential_pdf isstr uniform_rnd
exponential_rnd lognormal_cdf weibcdf
f_cdf lognormal_inv weibinv
f_inv lognormal_pdf weibpdf
f_pdf lognormal_rnd weibrnd
f_rnd meshdom weibull_cdf
gamma_cdf normal_cdf weibull_inv
gamma_inv normal_inv weibull_pdf
gamma_pdf normal_pdf weibull_rnd
gamma_rnd normal_rnd wiener_rnd
geometric_cdf pascal_cdf
geometric_inv pascal_inv
The following functions were deprecated in Octave 3.2 and will
be removed from Octave 3.6 (or whatever version is the second major
release after 3.2):
create_set spcholinv splu
dmult spcumprod spmax
iscommand spcumsum spmin
israwcommand spdet spprod
lchol spdiag spqr
loadimage spfind spsum
mark_as_command sphcat spsumsq
mark_as_rawcommand spinv spvcat
spatan2 spkron str2mat
spchol splchol unmark_command
spchol2inv split unmark_rawcommand
The following functions have been deprecated in Octave 3.4 and will
be removed from Octave 3.8 (or whatever version is the second major
release after 3.4):
autocor cellidx gammai krylovb values
autocov dispatch glpkmex replot
betai fstat is_global saveimage
* For compatibility with Matlab, mu2lin (x) is now equivalent to
mu2lin (x, 0).
* The ARPACK library is now distributed with Octave so it no longer
needs to be available as an external dependency when building
Octave.
Although mcsim.dvi, mcsim.html, and mcsim.texinfo aren't on the PLIST, the
package tries to build them anyway, at least on DragonFly. This modifies
the documentation makefile to prevent this. DragonFly doesn't have dvips
and thus the package was failing to build.
environment. Note: some of the ones I'm adding may not be absolutely
required; I made this list by checking atimes after building R with
all tex stuff available, and confirmed that with (only) these packages
available it does build.
It doesn't help that the R makefile, apparently intentionally, doesn't
stop if running tex fails.
The ld linker from binutils 2.22 has --no-copy-dt-needed-entries enabled by
default, which is exactly opposite of earlier versions of the linker.
Previously ld would recursively search libraries linked in by the object's
primary libraries during symbol resolution. Now linker wants all libraries
explicit requested, otherwise one gets a message such as this:
ld: <object file>: undefined reference to symbol '<symbol>'
ld: note: '<symbol>' is defined in DSO <shared library> so try adding it
to the linker command line.
If this message is encountered, the two options are either to explicitly
add it to the linker command as suggested, or use the
--no-copy-dt-needed-entries switch to return the linker to its previous
behavior. In the case of math/pari, libstdc++ was added to the library
list for the plotfltk.o object. This explicit link is required by DragonFly
which is migrated to binutils 2.22 as its default version.
as executables rather than loadable modules
This might cause that the pkg doesn't build on as many platforms as
it did before, but it has a chance to work now.
bump PKGREV
Recent versions of devel/p5-Object-InsideOut optionally uses this
module.
This module provides pseudorandom number generators (PRNGs) that are
based on the Mersenne Twister algorithm. There is a functional
interface to a standalone PRNG, and an OO interface (based on the
inside-out object model as implemented by the Object::InsideOut
module) for generating multiple PRNG objects.