Blitz++ is a C++ class library for scientific computing which provides
performance on par with Fortran 77/90. It uses template techniques to
achieve high performance. The current versions provide dense arrays
and vectors, random number generators, and small vectors and matrices.
Blitz++ is distributed freely under an open source license, and
contributions to the library are welcomed.
The Matrix Template Library is a C++ class library for basic linear
algebra. The MTL is designed for high-performance while at the same
time taking advantage of the generic programming paradigm (ala the
STL) to allow much greater flexibility and breadth of
functionality. Many new and advanced programming techniques were used
in the construction of this library.
The MTL is a low level library in the sense that the user must be
conscious of the matrix type being used, and that all computationally
expensive operations are explicit. The MTL is not a C++
Matlab. Nevertheless, the interface is designed to be simple and easy
to use.
The matrix types provided include compressed sparse row/column,
banded, packed, diagonal (and tridiagonal), envelope, array of
pointers, and of course dense matrices. All matrix types share a
common and easy to use interface.
The algorithms consist of the traditional basic linear algebra
routines (from the BLAS level-1 to 3) which includes matrix and vector
arithmetic as well as operations such as backward substitution and
norm calculations.
Major goals of this release:
* Speed: often 20% or more faster than FFTW 2.x, even without SIMD (see below).
* Complete rewrite, to make it easier to add new algorithms and transforms.
* New API, to support more general semantics.
Other enhancements:
* SIMD acceleration on supporting CPUs (SSE, SSE2, 3DNow!, and AltiVec).
(With special thanks to Franz Franchetti for many experimental prototypes
and to Stefan Kral for the vectorizing generator from fftwgel.)
* True in-place 1d transforms of large sizes (as well as compressed
twiddle tables for additional memory/cache savings).
* More arbitrary placement of real & imaginary data, e.g. including
interleaved (as in FFTW 2.x) as well as separate real/imag arrays.
* Efficient prime-size transforms of real data.
* Multidimensional transforms can operate on a subset of a larger matrix,
and/or transform selected dimensions of a multidimensional array.
* By popular demand, simultaneous linking to double precision (fftw),
single precision (fftwf), and long-double precision (fftwl) versions
of FFTW is now supported.
* Cycle counters (on all modern CPUs) are exploited to speed planning.
* Efficient transforms of real even/odd arrays, a.k.a. discrete
cosine/sine transforms (types I-IV). (Currently work via pre/post
processing of real transforms, ala FFTPACK, so are not optimal.)
* DHTs (Discrete Hartley Transforms), again via post-processing
of real transforms (and thus suboptimal, for now).
* Support for linking to just those parts of FFTW that you need,
greatly reducing the size of statically linked programs when
only a limited set of transform sizes/types are required.
* Canonical global wisdom file (/etc/fftw/wisdom) on Unix, along
with a command-line tool (fftw-wisdom) to generate/update it.
* Fortran API can be used with both g77 and non-g77 compilers
simultaneously.
* Multi-threaded version has optional OpenMP support.
* Authors' good looks have greatly improved with age.
Changes:
* The directory structure and configuration scripts have completely changed
* RGB colors supported for color= keyword, pli, plf, plfp
see help,color or help,pli for more information
* lsdir, mkdir, rmdir functions added so yorick can read and
manipulate directories by itself
* i86_primitives and other modern binary formats added
see help,createb and help,__i86 for more information
* cheby.i, convol.i, dawson.i, kepler.i added to interpreted
library
* added "hex" 3D transport solver (similar to drat 2D solver)
* improved the emacs/yorick.el package again, mostly by removing
unwanted "improvements" to emacs; see emacs/README
Changes:
* read_line in input.c and e_load in earray.c handles now properly '\r'
characters from DOS files.
* bug fix in metaps.c : postscript macros bar and fbar now handle hue the
right way.
* handles wheel mouse to scroll the text window content.
* better event handling : test_key, test_code, syswait hack.
* drag and drop support from gtk/gnome apps (xdnd). it works with
- ROX
- Nautilus
drag and drop from Konqueror does not work.
* popup menu for terminal editing
* modulo bug fix
* logspace, xlogplot, ylogplot, xylogplot, xlogmark, ylogmark, xylogmark
enhanced and included in util.e (no more in a separate package).
* gcm, lcm, primes, isprime and factor functions added to modulo.e
* bug fix in project function in graphics.c
* util.e
- added figure function which allow to draw quicly several graphs
in the graphical window
- xlabel, ylabel updates to fill the figure function requirements
- xgrid : scale is now sent to the bottom right of the graph
- added rotate, animate
* bug fix in my scan_dir function in main.c, which causes Segmentation
fault
* bug fix in the way euler was dealing with input and lineinput in term.c
* new : antialiasing function to enable or disable antialiasing in
density plots
* complete reorder in source file for future enhancements
* bug fix with solaris (scandir made portable)
* delete outputs menu item
Changes include:
* New try/catch mechanism for control of exception handling.
* Fixed memory leaks in solve and svd.
* Builtin `tril' and `triu' functions -- sparse arrays stay sparse.
* Fixed integer overflow problems in `band' and `cram'.
* Incorporated the SuperLU package for solving sparse linear
systems. Previously, sparse systems were converted to dense and
solved with LAPACK (unless configured with BCSLIB-EXT).
* Included support for memory allocation debugging with dmalloc.
* Improved the logical operations to do a much better job at
maintaining sparsity.
* New standard function `select'.
* Changes to the matrix bandwidth minimization code. The old `band'
function is now called `gpskca' and can do either profile or
bandwidth minimization of symmetric or hermitian matrices. Matrix
statistics are computed by the new `band' function.
* New standard functions `linspace' and `logspace'.
* New standard function `equilibrate' computes scale factors to
improve the condition of a matrix. However, sparse code has not
yet been included.
* Fixed several deficiencies in the `transform' function.
* Removed old get_ascii and put_ascii functions. I doubt if anyone
has used these in the last decade. To read and write matrices in
text files, use the algae MatrixMarket package.
* Fixed several errors with hermitian symmetry.
* Fixed mishandling of sparse matrix multiplication case where
non-zero factors give a zero result.
* Added "short-circuit" logical operators && and ||.
* Added the `cram' builtin function -- it's the same as `form'
except the output array is sparse when that makes sense.
* Added the `product' user function -- product of array elements.
* Added `mksparse' and `exsparse' functions for converting matrices
to and from coordinate form.
* Switched to LAPACK's DGGEV now that DGEGV is deprecated. Also use
the new workspace size query feature in LAPACK, rather than
working it out ourselves.
* Use LAPACK's ZHEGV and ZGGEV for complex generalized eigenvalue
problems.
* Use floating point exception support from glibc 2.2 on Linux.
* Improved accuracy and behavior for complex arguments in functions
`log', `asin', and `acos'.
* Added inverse hyperbolic trig functions `asinh', `acosh', and `atanh'.
* Various minor bug fixes.
+ Added facility for adding outlines to worksheets. Added
outline.pl example.
+ Moved write_comment() code into the core modules. It is now
possible to write cell comments.
+ Added option to return a slice from the sheets() method.
+ Added link to latest Excel97 pre-release.
! Changed, once more, the handling of temp files to avoid several
file closing bugs.
! Fixed handling of column sizing for widths less than 1 unit.
! Renamed addworksheet() and addformat() to add_worksheet()
and add_format() for consistency with other method names.
Older names are supported but deprecated.
! Fixed internal sheet indexing in formulas on some platforms.
This caused multi-sheet workbooks with formulas to crash.
! Fixed non-lexical filehandles to prevent problems in
multi-threaded environments.
+ Added the set_codepage() workbook method. This is mainly to
prevent a bug that caused Gnumeric to crash but it is also
useful for people working with non ascii chars on the Macintosh.
! Fixed the non-deletion of temporary files. Users of version
0.38 should probably clean up their tmp dirs manually.
! Changed default handling of set_fg_color and set_bg_color from
what Excel expected to what everyone else expected. Setting the
fill colour of a cell should now be more intuitive.
+ Replaced the merge_cells() method with the merge_range() method.
This is mainly to prevent the Excel 97 crashing bug that occurs
when merge_cells() is used correctly. It also provide a simpler
interface to the merge feature. Updated merge example programs.
! Refactored the error raising mechanism for formulas. The source
of errors should now be clearer.
! Minor internal fixes to Format.pm.
+ Added formula caching to speed up the writing of formulas.
+ Added handling of A:A column notation in formulas and
applicable worksheet methods.
+ Changed handling of numbers with leading zeroes so that they
can be treated as strings and the zeroes maintained.
+ Modified $workbook->close() to return the value of the system
file close.
+ Made file size exceeded a die() error instead of a warning.
+ Added option to hide row with the set_row() method
+ Added more examples: merge4.pl, merge5.pl, sendmail.pl and repeat.pl
! Fixed write_url() when handling relative links in the current
directory.
! Fixed handling of multiple AND()'s and OR()'s in formulas.
! Fixed bug when creating a very large number of files within a
single program on Windows.
! Added warning about Excel97 crashing bug with merge_cells().
! Fixed handling of parentheses in Worksheet names.
! Fixed minor bugs in Format.pm. Thanks Johann Hanne.
! Fixed File::Temp dependency in Makefile. Thanks to many.
+ Added set_tempdir() method to allow a user defined temp directory.
+ Fixed default format behaviour for formats set via the set_row()
and set_column() methods.
+ Extended the hide_gridlines() method to allow hiding of screen
gridlines as well as print gridlines.
+ Added long_string.pl a workaround example for the 255 char
limit.
+ Added https match to url regex.
+ Added user definable colour palette.
+ Added headers.pl and colors.pl examples.
* lotus-123 : fix incorrect import of logarithmic functions
log -> log instead of log10
ln -> ln instead of log
* XL95 export : Use unquoted names in externsheets
* Fix a problem with the euro/yen/pound symbols
http://bugzilla.gnome.org/show_bug.cgi?id=103571
* Back port fix
* Backport morten's fix for latex export problem
* Use even blunter instrument on xml importer.
Important notice:
Two packages have been removed from optional ones: PropertiedClasses, kinds.
MA has been rewritten to use standard property and will not work for
ancient Pythons. (Pre 2.1, I think). Use the MA / Propertied Classes
from Numeric 22 if you can't use this one.
The kinds package (subject of PEP-0242) will be released as a separate
package shortly. PEP-0242 was withdrawn because this facility did not seem
to be worth putting in the standard library, but kinds is correct as is.
Other changes are bugfixes.
Coq is a Proof Assistant for a Logical Framework known as the
Calculus of Inductive Constructions. It allows the interactive
construction of formal proofs, and also the manipulation of
functional programs consistently with their specifications.
v0.3
* Changed default spring length to 0 and default spring constant to 1
* Made dot file import more robust:
* Reports if it doesn't seem to be a dot file rather than blindly
trying to open it
* Accounts for more dot syntax
* doesn't segfault on any of the graphviz examples
* Made graphopt file opening more robust:
* Reports if it doesn't seem to be a graphopt file rather than
blindly trying to open it
v0.2
* Changed references to vector to std::vector, making compliant with
latest c++ standards (a la gcc 3)
Makefiles simply need to use this value often, for better or for
worse.
(2) Create a new variable FIX_RPATH that lists variables that should
be cleansed of -R or -rpath values if ${_USE_RPATH} is "no". By
default, FIX_RPATH contains LIBS, X11_LDFLAGS, and LDFLAGS, and
additional variables may be appended from package Makefiles.
Changes between NTL 5.3 and 5.3.1
* Fixed a bug affecting the BuildIrred routines for ZZ_pEX and
zz_pEX.
Changes between NTL 5.2 and 5.3
* Minimized and isolated constructs that do not adhere to C/C++
standards, and added flags NTL_CLEAN_INT and NTL_CLEAN_PTR which
force stricter compliance with these standards.
* Added functions IsWhiteSpace, CharToIntVal, and IntValToChar to
the tools module.
* Added methods allocated, position1 to generic vector classes.
* Added method allocated to the class vec_GF2.
* Added conversion routines from unsigned int/long to int, long,
float, and double.
* Added routines AddPrec, SubPrec, etc., to the RR module, and
declared the practice of directly assigning to the variable
RR::prec obsolete.
* Fixed a number of minor bugs.
Changes between NTL 5.1a and 5.2
* Implemented Mark van Hoeij's new algorithm for factorining
polynomials with rational coefficients. This new algorithm is much
more efficient than the previous algorithm used by NTL, and is the
default (one can switch back to the old algorithm with a run-time
switch).
* Added routines LLL_plus that are just like the all-integer LLL
routines, except that they return the exact values of the squared
lengths of the Gramm-Schmidt basis vectors. This is useful in
implementing van Hoeij's algorithm.
* Made a small change to quad_float.c to make it compile under gcc
version 3.0 without errors. This is the one place in NTL where I
resort to just a little assmebly code (but only on x86/Linux
platforms), and wouldn't you know it, this is the one place where
gcc 3.0 had problems.
* Made a small change to the procedure for generating a
distribution, so that now all files in the "tar" file comprising
the distribution come without any annoyingly excessive access
control restrictions.
* Changed the version numbering scheme so that it is now closer to
"standard practice". This is version "5.2". Any small bug fixes to
this version will be named "5.2.1", "5.2.2", etc. Also, macros are
now defined so that the numerical components of the version number
are available to the programmer.
- make sure the path is correctly determined for pvm.
- add a --tag= argument to libtool when building fortran code.
This makes all selftests pass on my alpha.
Main Changes Scilab 2.6 -> 2.7
==============================
THANKS
======
Scilab group wants to thank the increasing number of people who have
contributed to this new version of Scilab, with special mention to
Anders Blomdell, Stephane Mottelet, Dan McMahill
Ton van Overbeek, Bruno Pincon and Enrico Segre.
NEW FUNCTIONALITIES
===================
Slicot based control routines (www.win.tue.nl/wgs/slicot.html)
have been introduced with a special attention
to identification functions, lyapunov, sylvester and riccati equation solvers.
Interface with TeXmacs (www.texmacs.org) a high level scientific text editor.
The editor allows you to write structured documents via a wysiwyg interface
including Scilab sessions and results.
An embedded text editor scipad derived from TkNotepad
(www.mindspring.com/~joeja/programs.html) as been developped.
C Code generation from Scicos discrete models
Blocks defining DAE are now usable in Scicos.
Statistic toolbox added (labostat).
A new graphics version based on objects and entities has been developped
(beta version). It allows to edit the properties of graphics
objects. By default, the old graphics version is used. Tu use the new graphics
version see the help of "graphics_entities".
OTHERS IMPROVEMENTS
===================
Linear algebra primitives now based on Lapack instead of Linpack/Eispack.
Basic functions revised (thanks to B Pincon).
stacksize use is no more restricted.
Hypertext, xml based, online help.
Binary Matlab file .mat loader (loadmatfile) added.
Possibility to customize graphics window event handlers (seteventhandler).
edit_graph, a graph editor for Metanet toolbox, written in Scilab, replaces
xmetanet. It works on both Unix and Windows.
INCOMPATIBLITIES
================
It is higly recommended to rebuild user's scilab functions libraries. This
can be done as follow:
predef(0);genlib('mylib','mylib_path',%t)
gschur and gspec functions are now obsolete and replaced by schur and spec.
Geci and the communication library have been removed. Use PVM interface instead.
Metanet graph editor has been rewritten. Use edit_graph instead.
man pages have to be written in HTML or better in XML but chapters
written in the old ascii files are still handled.
Scicos internal data structure have been changed. Automatic translation
is made when old diagrams are loaded.
rebuild the documentation database at install/deinstall time. This means
that:
- PLIST's do not need to call scrollkeeper-{update,rebuilddb} directly;
this is done by a bsd.pkg.install.mk template.
- The share/omf directory is only removed by scrollkeeper, which is the
last package in the dependancy tree.
- PKGREVISION is bumped.
Reviewed by wiz.
Changes since version 1.1.1 include:
* Addition of new functions
* Many bugfixes
* Homepage and distribution moved from sources.redhat.com to GNU.
See NEWS for more info.
have it be automatically included by bsd.pkg.mk if USE_PKGINSTALL is set
to "YES". This enforces the requirement that bsd.pkg.install.mk be
included at the end of a package Makefile. Idea suggested by Julio M.
Merino Vidal <jmmv at menta.net>.
CHANGES IN R VERSION 1.6.2
BUG FIXES
o plot.stepfun() now obeys a `ylim=.' specification.
o removeClass() does a better job of removing inheritance
information.
o setIs() will not allow mismatched representations between two
classes (without an explicit coerce method).
o The code underlying polygon drawing contained a memory leak.
This showed up in persp, but did not affect other graphics
functions. It is now possible to draw big DEMs.
o logLik.nls() gave wrong df.
o rbind() with a mixture of data frames and matrices treated the
matrices as vectors.
o stripchart(method="stack") was not handling missing values.
o Arithmetic functions such as log() lost the object bit from
classed objects if coercion was needed.
o exp_rand would go into an infinite loop if unif_rand returned 0.
o formatC(x, format="fg") could return exponential format if
rounding pushed x over a positive power of 10.
o attr(x, foo) used partial matching for `foo' (even though not
documented to do so), and failed to find `foo' if there were
two or more partial matches before the exact match in the list
of attributes.
o Rdconv now creates direct HTML hyperlinks when linking to
documentation in the same package. The code now ensures that
links which can be resolved within the package are so resolved,
even when there are possible resolutions in other packages.
o If readBin(what=character()) is used incorrectly on a file which
does not contain C-style character strings, warnings (usually
many) are now given.
o Building libR.so with the zlib in the R sources was not
finding the local zlib headers.
o system(intern=TRUE) has an undocumented line length limit of
119 chars both on Unix and Windows. The limit is now 8096 and
documented. On Unix (only) every 120th character used to be
discarded.
o plot.POSIX[cl]t were not passing graphics parameters on to
axis.POSIXct.
o On some HP-UX systems, installed scripts were not executable
when using the BSD-compatible install system program found by
configure. We now always use install-sh on HP-UX.
o c() was converting NA names to "NA": now proper NA strings are
used wherever possible.
o A typo was causing segfaults when using data.entry under SuSE.