MtxVec release history
Changes and new features of MtxVec v5.3.1 (January 2018)::
- Support for Linux on Rad Studio Tokyo 10.2. (Update 2) with MtxVec Core. The following units are supported on Linux: Math387, MtxVecBase, MtxParseClass, MtxParseExpr, MtxParseOperator, MtxParseProbabilities, Blas, Lapack, lapack_dfti, MtxExpr, MtxExprInt, MtxForLoop, MtxVecInt, MtxVecTools, Optimization, Polynoms, Probabilities.
- Bug fix for concurrent precision build (double and single precision), where RegisterClass was called twice with the same type.
- Bug fix for TVecInt.BitUnpack when bit count was less than 32.
- Modifed SumOfSquares and Standard Deviation for greater numerical accuracy and about 50% higher speed.
- Enabled "Integer overflow" and "Integer Division By Zero" error messages.
- Integer math is now based on Int64.
- Bug fixes for sqr and sqrt when param was integer.
Changes and new features of MtxVec v5.3 (November 2017)::
- TVec/TVecInt and TMtx/TMtx received upgrade of ValueToStrings for fixed width font output with headers. Usefull for command line printout of small matrices.
- Added ability for "colon range" autocomplete: a(2:) = b; //short for a(2:(2+Length(b)) = b;
- Added "Edit and Continue" type of debugging support for the script
- Added "Tooltips" for variable evaluation during debugging of the script.
- File read/write and some string management routines added to the expression parser.
- Much improved example code how to handle spreadsheet like data.
- Several bugs fixed.
Changes and new features of MtxVec v5.3 (October 2017)::
- Added support for Apple Acccelerate framework on iOS and macOS. Includes accelerated versions of FFT, BLAS 1,2,3 and Lapack.
- Support for complex-number Lapack on iOS and OSX for MtxVec Core Edition.
- Substantial improvement of speed of Math functions: sin, cos, log, exp,.. on Android, iOS and OS X. Math387 now bypasses default Delphi System unit math functions. Vectorized versions use the Accelerate framework on the iOSand OS X. Average speedup is about 20x.
- Added support for TMtxInt and Matrix to the Debugger Visualizer.
- Debugger Visualizer bug fix, which helps more variables to be successfully evaluated.
- Added support for [1, 2 ; 3, 4] for vector/matrix concatenation/initialization.
- Added support for "if-else", "while" and "for-loop" clauses.
- Added support for "break" and "continue" clauses.
- Added support for strings and custom objects.
- Added string grid adaptor, which enables reading and writing from an arbitrary string grid like object.
- Added support for empty lines and comments.
- Command line printout can be surpressed by specifying ";" at the end of the line.
- Further performance optimization for single line and multi-line expression evaluation by about 2x.
- Expressions are now case-sensitive, but function aliases are allowed (Tan() for tan() for example).
- Added one new demo for demonstrating the new features of the parser.
- More automated tests have been implemented
- All features are available on Windows, macOS, Android and iOS.
- End user summary can be found here
Changes and new features of MtxVec v5.2 (May 2017)::
- Added integer matrix (TMtxInt and MatrixInt) covering 108+ overloaded functions
- Added TVec.BinarySearch and TMtx.BinarySearch for exact and nearest index on sorted data
- Added 80 new optimized functions for integer math used by TVecInt and TMtxInt
- Added ThreadIndex parameter to the MtxForLoop threaded function type
- Support for Rad Studio Tokyo XE 10.2, VCL and FMX
- Added integer, integer vector, integer matrix, boolean, boolean vector and boolean matrix types.
- Support for funtions with multiple results: (a,b,c....) = fun(d)
- Added all functions from Probabilities.pas to the expression parser.
- Added large set of functions from MtxVec.pas to the expression parser, like FFT, FFT2D, SVD, etc..
- Total of 300+ functions and operators now available to the expression parser.
- Fixed a number of defects and improved error reporting. Performance optimization.
- Total code base for the parser increased by about 3x.
Changes and new features of MtxVec v5.1.1 (September 2016):
- Added TVecInt.ThresholdGT_LT
- Added ThreshAbsGt and ThreshAbsLt to TVecInt, TVec and TMtx,
- Added TVecInt.BinarySearch,TVecInt.Find,
- Added TVecInt.ThresholdLT/TVecInt.ThresholdGT
- Updated Intel MKL and Intel IPP related code to latest revision.
- Fixed a problem with MKL VML user side multi-threading. (MtxVec.Vmld.dll)
- Fix for TMtxComponentList.Count when reducing value.
- TMtxGridSeries. Increased color count from 3 to 5. Greatly increased the possibility of possible color combinations palette designs.
- TMtxGridSeries. Improved support for fixed user-specified scale.
Changes and new features of MtxVec v5.1 (May 2016)::
- Support for Delphi and C++Builder Berlin 10.1
- Added TMtx.Filter2D usefull for 2D convolution of images.
- Improved performance of math routines via Intel IPP v9 update.
- Improved performance of Lapack routines via latest Intel MKL update.
- Support for old and new 32bit and 64bit C++Builder compilers. With RAD Studio 10.1 Berlin the C++ code performance is much improved.
Changes and new features of MtxVec v5.03 (September 2015)::
- Support for Delphi and C++Builder Seattle 10.
- Added support for OS X and iOS with Delphi 10 to MtxVec Core edition.
- Update to MtxVec demo for FireMonkey to run also on iOS based tablets.
- IDE help file integration added for XE8 and Delphi 10.
- Updates related to TeeChart.
Changes and new features of MtxVec v5.02 (April 2015)::
- Internal memory access optimization giving performance improvements on both 32bit and 64bit code (on Windows) from 10 to 100% depending on algorithm. The greatest improvement can been seen for algorithms using long vectors and smallest for algorithms which are using block processing.
- Certified support for Android. New Chapter added to MtxVec Users Guide about Delphi mobile compiler support.
- Update to MtxVec demo for FireMonkey to run also on Android tablets.
- Various performance enhancements affecting automatic reference counting on Delphi mobile compilers.
- Fixes to debugger visualizer affecting VectorInt and TVecInt. Additional simplifications will keep all visualizers working in more demanding debug scenarios.
- Fixed NormL1 and NormL2 functions on 64bit, complex number and single precision.
- Fixes for TMtx.Eig() on 64bit and single precision.
- Support for XE8 and related TeeChart updates.
Changes and new features of MtxVec v5 (December 2014)::
- Optional build parameter (MtxVec Core Edition) results in 100% full source code in pascal. (allows for portability to Android, iOS, OSx when used together with FireMonkey.)
- Added support for annoynmous methods to TMtxForLoop.
- New example (MtxVecThreading.pas) with description about efficient multi-threading in MtxVec Users Guid.pdf.
- Enhanced string formating and automatic column sizing in Debugger Visualizers.
- Adapted TMtxGridSeries to support latest TeeChart version (released sept. 2014).
Changes and new features of MtxVec v4.51 (September 2014):
- Added support for XE7 Delphi and C++Builder for both VCL and FireMonkey frameworks.
- Updated Intel MKL and IPP dlls to the latest versions.
- Simplified syntax for arrays specified in code available for Rad Studio XE7 and later.
- Added missing overload VectorInt.BlockInit(SrcVec);
- Fixed a bug when using Subranged vectors.
- Fixed a bug with Matrix.SortDescend for complex values.
- Fixes to complex variants of TMtx.EigSchureGen, TMtx.EigSym, TMtx.EigSymGen and variants when using debug build.
- Sparse matrices:
- Fixed a bug with TSparseMtx.Add when adding matrices which contain explicit zeros.
- Fixed a bug with TSparseMtx.Copy when copying matrices which contain explicit zeros.
Changes and new features of MtxVec v4.5 (May 2014):
- Update to MKL and IPP. Performance improvements for eigenvalue calculations
- Added support for RAD Studio XE6 FireMonkey and VCL.
- Added TMtx.Eig overload with optional condition number estimation.
- Added generalized eigenvalue method TMtx.EigGen.
- Added calculation of Schure vectors. TMtx.EigSchure
- Added calculation of generalized Schure vectors. TMtx.EigSchureGen
- Updated calculation of eigenvalues for symmetric matrices. TMtx.EigSym
- Added calculation of generalized eigenvalues for symmetric matrices. TMtx.EigSymGen
- Updated TMtx.LQRSolve. Least square solutions with support for for rank deficient matrices.
- Added generalized SVD decomposition. TMtx.SVDGen.
- Added Gauss Markov Linear Model solver with TMtx.GLMSolve
- Important: Old TMtx.EigGen has become TMtx.EigSymGen and TMtx.EigGen has new meaning.
- Faster function inlining with Delphi XE6 and newer.
- Fixed debugger visualizer package installation for FireMonkey.
- Added eigenvalue calculation for symmetric matrices TSparseMtx.EigSym
- Added generalized eigenvalue calculation for symmetric matrices TSparseMtx.EigSymGen
Changes and new features of MtxVec v4.4 (March 2014):
- Update to IPP dlls and a dll bug fix.
Changes and new features of MtxVec v4.4 (February 2014):
- Added BitPack, BitUnpack methods and Bits property to TVecInt.
- Added help for Median filter functions.
- Added support for FireMonkey from including XE5 and forward. This covers all UI components, debugger visualizer and demo.
- Prerelease of MtxVec Core: ability to run MtxVec without dependancy on external dlls. Large parts of StatsMaster and DSP Master are already functional.
- Optional custom search path for TeeChart added to the BuildTool.
Changes and new features of MtxVec v4.3 (October 2013):
- New set of dlls with support for Intel 4th Generation Core CPUs and Intel Xeon Phi.
Changes and new features of MtxVec v4.3 (September 2013):
- Fixed performance issues with debugger visualizers in big applications.
- Added support for TeeChart 2013 GDI+ Canvas.
- Support for Embarcadero Delphi XE5.
- Support for 64bit C++ XE4 and XE5 compiler.
Changes and new features of MtxVec v4.3 (July 2013):
- Added support for concurrent use of double and single precision version of the library. All functions, methods and components are available in both variants. Debugging in to source code and debugger visualizers remain fully supported.
- Added TMtx.LUSolve overload, which makes use of a precomputed factorization.
Changes and new features of MtxVec v4.22 (May 2013):
- Support for Delphi and C++Builder XE4.
Changes and new features of MtxVec v4.2 (October 2012):
- Support for Delphi and C++Builder XE3.
- Cougar Open CL now works with non unicode Delphi versions (2006 and 2007) (bug fix)
- Cougar Open CL now detects also MtxVec version change and automatically rebuilds Open CL source
- Fixed C++ function operator for sVector.
- Fixed memory allocation for 64bit TMtx, which only allowed 32bit range.
- Bug fix for complex version of the TMtx.SVD function.
- Recreated and updated C++ Demo for many C++Builder versions.
Changes and new features of MtxVec v4.2 (April 2012):
- Redesigned C++ language interface while keeping the option to use old syntax for backward compatibility.
- New C++ syntax supported for C++Builder XE1, XE2 and newer.
- Enabled support for C++ to call and link directly against functions from external MtxVec dlls.
- New MtxVec C++Builder demo for version XE2 featuring new syntax.
- Simplified linking of MtxVec with the C++ project.
- Debugger visualizers for C++ Builder have been implemented to support a range of MtxVec types including: TVec, TMtx, sVector, cVector, sMatrix, cMatrix, oclVector, oclMatrix, VectorInt, TOpenCLVector, TOpenCLMatrix, TVecInt,
- Cougar Open CL bug fix within clPlatform initialization (ResetLength)
- Cougar Open CL support for SetSubRange and working with subvectors and submatrices including function operator overload in C++
- Introduction of Cougar Open CL parallel reduction based algorithms. Support for sum, norms, average, min, max, dot product, etc... known from MtxVec supported for all precisions and platforms. Parallel reduction allows non-destructive summation process and makes it possible for single precision math to achieve same or higher accuracy than double precision for algorithms relying on summation of long arrays.
- Performance of Cougar Open CL is now completely invariant to the length of the vector or size of the matrix. The programmer needs not to worry about memory alignment or vector size.
- Updated help and tested with XE2 Update 4 and TeeChart 2012.
- Updated code related to Intel IPP and MKL libraries to the latest version. Note that the minimum CPU requirement has been raised by Intel to SSE2 capable CPU (P4, released in year 2000). AMD was still selling new CPUs without SSE2 in 2006. This limitation was first introduced by Intel in 2009. MtxVec v4.1 was the last version with the capability to support older CPUs (generic x86 code). The move by Intel is also the reason for 3 years of delay in the Intel related code update. The new dlls improve performance mostly for the new generation of CPUs, capable of SSE4.2 and Intel AVX instruction sets. According to Intel these can sometimes reach cca 60%. Old dlls may cause "instruction not recognized" exception on the latest generation of Intel CPUs.
- Debugger visualizers have been enhanced for Delphi to support Open CL vector and matrix types: clVector and clMatrix
Changes and new features of MtxVec v4.1 (October 2011):
- Generalized LSI solver from lapack included (dgglse ).
- Cougar Open CL bug fixes and improvements. Bugs were fixed for UpSample, DownSample, Reverse, Difference, Ramp, Rotate, Shift and Threshold functions.
- Open CL objects like clVector and clMatrix now have full Debugger Visualizer support including tooltips in both 32bit and 64bit.
- Cougar Open CL now runs fine with 64bit compiler.
- Intel Open CL driver supports direct function pointer calls. This gives you a high performance free C compiler with support also for Intel AVX for use at runtime without the need for app restart. What you compile you can immediately execute from within the same application and the same address space as if though the just compiled function was already a part of the application.
- TeeChart Pro 2011 support for XE2.
- New examples for Open CL were added to the MtxVec Demo.
- Multi GPU threading support is now built in to the Cougar Open CL library.
- Fixed bug for comma as decimal separator related to Cougar Open CL.
- Fixed bug for detection of double precision support on Cayman (AMD HD 9000 series) GPUs.
Changes and new features of MtxVec v4.1 (September 2011):
- Cougar Open CL opens the world of GPU processing to Delphi developers. Two new units clMtxVec and clMtxExpr add two new types clVector and clMatrix which can run their functions on the GPU.
- Cougar Open CL substantially simplifies custom Open CL algorithm development, integration and deployment.
- Support for Delphi XE2 and its 64bit compiler.
Changes and new features of MtxVec v4 (March 2011):
- Rewritten FFT descriptor cache now optimized for heavy multithreading. This also fixed two bugs related to the multithreaded use of FFTs.
- Fixed a number of issues related to defining custom functions with the function evaluator.
- Fixed TeeChart related issue (Panning/IPanning) which raised compiler error with TeeChart older than v2010.
- Fixed references to Dew lib files from v3 to v4 within the C++Builder demo applications.
- Fixed integer random number generators.
- Substantially improved error checking for several distribution fitting and testing functions to avoid deadlocks when used from optimization methods. This now has Stats Master demo app now working without erorrs.
Changes and new features of MtxVec v4 (November 2010):
- Threading library has a new new greedy method for threaded job distribution.
- Debugger visualizers in Delphi XE are now enabled also for tooltips. When hovering with mouse over TStrings/TVec/Vector/Matrix/TMtx descendants, the tooltip will show values stored in the object. The magnifying glass icons showing availability of the visualizers are also back now. (disabled before because of bugs in Delphi 2010).
Changes and new features of MtxVec v4 (September 2010):
- Support for Delphi/C++Builder XE. Fixed bogus error reports related to range checking.
- Support for TeeChart 2010.
Changes and new features of MtxVec v4 (June 2010):
- Multi-precision integer vector math with TVecInt and VectorInt with full support for object cache and math expressions. Supported are all standard operators +,-,*,/, or, xor, and, not plus more than 50 methods separately for 32bit, 16bit and 8bit integers.
- Support for TeeChart 2010.
- Updated dlls for latest version of MKL and IPP with support for Intel AVX.
- Reduced distribution size with FFT core cross-platform fallback code providing FFTfunctions (1D and 2D) with reasonable performance without external dlls.
- Reduced distribution size with IPP core cross-platform fallback code providing signal processing functions with reasonable performance without external dlls. The standalone source code delivers a substantial amount of DSP related algorithms including multi-rate FIR filters, auto and cross correlations, DCT and more.
- Certified support for 4GB address space for 32bit applications under 64bit OS and 3GB address space for 32bit OS.
- Debugger for Delphi 2010 and later supports formated tooltips for Vector/Matrix/TVec/TMtx.
- TCplx type will display as a + bi on the tooltip and in the evaluator.
- Fixed a bug for string list visualizer where empty lines were left out.
- Added new overloads to TMtxForLoop supporting code vectorization within launched threads.
- Fixed a bug with TMtxForLoop when ResponseTime was set to zero and improved responsivness of the thread pool to just 2us which allows threading of very short sections of code.
- Fixed a bug for unsorted linear interpolation.
- Bottom up reachitectured memory allocation and PInvoke interop achieving further performance gains.
- Debugger tooltips and watches for TVec/TMtx/TVecInt and Vector/Matrix/VectorInt are showing object values.
- Debugger visualizer works also for TVec/TMtx
- support for VS2010.NET and client framework.
Changes and new features of MtxVec v3.52 (September 2009):
- New and enhanced debugger visualizer allows charting/viewing of arrays, vectors (TVec/Vector) and matrices (TMtx/Matrix) while debugging.
- Multiple visualizer windows can remain open concurrently while stepping through code with F8. Expressions and scripting allow manipulation of debugger data. Added support for 2D arrays.
- Docked debugger visualizer windows persist between debugging sessions.
- New strings and stringlist visualizer.
- New threaded for-loop component joins simplicity of use with excellent performance.
- New super-conductive object cache implementation features linear scaling with number of threads and enables concurrency of math expressions which can now be threaded. MtxVec now allows perfect scaling of its code across any number of cores via TMtxThread.
- Support for Delphi 2010 and integration of debugger visualizers in to the new IDE features.
Changes and new features of MtxVec v3.51 (January 2009):
- First release of 64bit support for MtxVec for Delphi.NET. Delivers typically 20-50% faster floating point code execution and ability to allocate vectors and matrices with up to 16GB in size.
- Support for Intel Core i7, Intels first native quad core.
- Substantially improved threading by solving and fixing many problems which hindered widespread adoption before.
- Threading now works for BLAS (Lapack), FIR filtering, FFT's and optionally also math functions like Exp, Ln, Log...
- Improved memory allocation system. Applications performing a lot of memory allocations and deallocations should receive a substantiall boost, in some cases by several times.
Changes and new features of MtxVec v3.5 (September 2008):
- Support for Delphi/C++Builder 2009.
- Debugger visualizer allows charting/viewing of arrays, vectors (TVec/Vector) and matrices (TMtx/Matrix) while debugging.
- New code optimizations and multithreaded functions.
- Support for SSE4.1 for Intel Core 2 Wolfdale from Intel MKL v10 and IPP v6.
- Substantially updated help file system.
- New TeeChart series TMtxFastLineSeries allows zoom in/out with pixeldownsample enabled internally. Applicable also to the DrawIt method and debugger Visualizer.
- TMtxFastLineSeries is 3x faster than TFastLineSeries when not using pixeldownsample.
- Function overloading allowed based on parameter count.
- Custom functions can be object methods.
- Vectors and matrices can be accessed by elements a(i) or m(r,c).
- Colon operator allows selection of ranges of rows and colums m(:), m(1,:), v(2:3).
- Assign operator supports colon operator: m(2:3) = 4.
- Colon operator supports step <> 1 and allows: m(10:-1:3) = 4
- Vectors and matrices can return elements from conditions: a = m(m > 4)
- Functions accept strings as parameters and can return string as result.
- Added several linear programming algorithms, including Dual Simplex, Two Phase Simplex ordinary Simplex LP and Gomory's Cutting Plane (CPA) algorithms.
- New TMtxLP component for easy usage of all LP algorithms.
Changes and new features of MtxVec v3.0.1 (November 2007):
- New code optimizations for Intel Penryn, SSE4a.
- Support for Intel MKL v10.
- Bug fixes for single precision and Delphi.NET.
- Improvements to help files (see also links, more examples)
- Installers and recompile tools have been improved to work well on Vista 32 and Vista x64. (UAC still needs to be disabled)
- More in-depth multi-core tested dlls.
- Out of core solver support for Pardiso sparse solvers.
- Better support (more settings) for ill-conditioned sparse matrices for Pardiso.
Changes and new features of MtxVec v3 (June 2007):
- New code optimizations and support for Intel Core 2 Duo product familiy.
- New multithreaded VML function support. Simple functions like Sin, Cos.. are threaded when vector length exceeds about 5000 elements. No MtxVec code change required to have your code run on multiple cores.
- Together with Vector/Matrix classes it is possible to write math expressions in its natural format and have the code at the same time executed on multiple cores!
- LAPACK v3.1 delivers increased precision and performance.
- Reduced distribution size with "Compact MtxVec". In case of the Stats Master by 50%. There are now more and more specialized dll's.
- Intel MKL 9.1 and Intel IPP 5.2 updated with the Intel v10 C++ and Fortran compilers.
Sparse solver: UMFPACK support updated to v5.1
- Pardiso sparse solver support updated to latest version of MKL.
- New HTML Help 2 format of the help file.
- Support for Delphi 2007 and C++Builder 2007.
- New set of true color 24x24 and 16x16 icons for components to support newer IDE tool palette.
- Simplex algorithm now supports lower and/or upper bounds for parameters.
- Added Trust Region (TR) algorithm. Now it's possible to find unbounded or bounded minimum of vector function of several variables.
- Added 8 new distributions: Gumbel (minimum), Gumbel (maximum), Erlang, Power, Inverse Gaussian, Fatigue Life, Johnson SB, Johnson UB. Probabilities unit now includes 34 different distributions.
- Moved distribution statistical parameter calculation from Statistics.pas to Probabilities.pas. Basic statistics now includes estimates for distribution mean, variance, skewness and kurtosis.
- All TVec/TMtx methods are now also available from Vector/Matrix. It is now possible to completely replace TVec/TMtx with Vector/Matrix.
- Many new functions have been added where previously methods were needed, because Vector and Matrix are now value objects and can return a value.
- Vector/Matrix syntax is now the default syntax. (Biggest change!) Old style TVec/TMtx code will still compile.
- Loads of new syntax options and simplifications with support for operator overloading.Vector can passed as a parameter to functions accepting TVec, TMtxVec or double dynamic array as a paramter.
- World class performance when evaluating Vector/Matrix expressions. Nealy no performance loss in compare to using CreateIt/FreeIt.
- Help updated to the new Vector/Matrix syntax.
- New TMtxVecGrid control (derived from TCustomGrid) allows easy viewing and editing of real or complex vector or matrix. The same control is now used in MtxVecEdit.pas unit. It now allows real-time browsing of matrices with milions and bilions of elements.
- New unit introduces several routines for numerical integration (1D, 2D, n-D).
- All numerical gradient estimation routines moved from Optimization.pas unit.
- Many enhancements to the TMtxGridSeries include support for rainbow palette and up to three levels of color mixing with top and bottom clip-off.
- Updated with support for TeeChart v8.
- Help file has received a major upgrade to Html Help 2 format.
- Nearly all examples have been extended with C++ and C# examples.
- New easier to read and navigate look and feel.
- Code examples have been updated to relfect the new default syntax with Vector and Matrix objects.
- Html Help 2 format integrates in to the IDE and F1 is again functional across all products.
- Demo updated with Vector/Matrix syntax.
Changes and new features of MtxVec 2.1.5 (May 2006):
- Support for BDS2006 Update#2.
- Simplex optimization algorithm features support for constrained optimization.
- TMtxGridSeries now supports three color and rainbow color palette with a very rich set of options including color balance and custom bitmap resampling methods.
- Updates for Intel MKL 8.1 and Intel IPP 5.1 and Intel Compilers v9.1.
- FFT''s can now be multithread.
- TVec.Difference got a lag parameter.
- API improvements for the vectorized parser.
Changes and new features of MtxVec 2.1 (December 2005):
- Operator overloading for Delphi 2006 with support for Vectors, Matrices and complex numbers!
- Enhanced support for .NET platform.
- Dll's updated with Intel MKL 8
- New Vectorized expression parser gives you the fastest expression evaluation available. Includes support for matrix divison (solving linear equations), from left and right (LQR solver) and can do per element operations by placing a dot in front of the * or / operators. Despite all this features and support for complex numbers, it still delivers best in class performance even when used with single element real valued expressions only.
- Fixed a bug when resizing object cache.
- Fixed a bug in TPiecePoly when assigning Breaks before Coefficients.
- TMtxComponent has been upgraded with VCL and Winforms independent FreeNotification system.
- ViewValues editor now comes with MS Office style menus.
- ViewValues editor now correctly copies columns to clipboard.
- Support for C++ personality of BDS 2006.
- Upgraded automatic recompile tool for all supported products and IDE personalities.
Changes and new features of MtxVec 2.0 (November 2004):
- Single source code compiles on .NET and W32.
- Sparse matrices: Umfpack v4.3 and Pardiso solver.
- All C/C++ code with support for SSE2/SSE3.
- All Fortran code compiled with support for SSE2/SSE3.
- Support (solvers) for complex sparse matrices.
- New TRandomGenerator encapsulates new random generators.
- Several 100 (!!) new highly optimized methods and overloads of existing methods for TVec, TMtx and TSparseMtx classes.
- New FFT engine with support for arbitrary length FFT's (including arbitrary 2D FFT sizes) and symmetric multiprocessing.
- Extensive tests written to interface DUnit test framework. This has been one of the biggest tasks. Tests execute under .NET and W32 and ensure that code gives the same result.
- New memory allocation bypassing Delphi's and CLR memory manager and allowing to better exploit available system memory.
- Intel SPL call's replaced with Intel IPP 4.0.
- New dll interfaces allow support of C++Builder and Kylix.
- Common abstract class between for TVec, TMtx and TSparseMtx sharing over 100 unique functions not counting overloads.
- New syntax options allowing much more flexibility when exchanging data between TVec, TMtx and TSparseMtx. Only the "view" of memory is changed. It is possible to write single source code which can take vector, matrix and sparse matrix objects as parameters.
- Vastly improved error checking, mostly due to in-depth tests.
- Prescot CPU support exploiting the features of the new instruction set.
- Extensive performance optimizations across the entire library.
- Operator overloading under .NET for complex numbers.
- Every effort has been made to achieve as high as possible backward compatibility. There are only a few functions, that have been removed and/or replaced with a different version. There are no functions with same signature and different meaning.
- It should be possible to write single source code that would execute on W32 and .NET with the same or very similar performance even for short vectors and small matrices.
Changes and new features of MtxVec 1.5 (June 2002):
MtxVec.pas and Math387.pas
- Eig returns left and right eigenvectors in columns
- SVD returns left singular vectors and right singular vectors in columns. SVD requires U and V to be both assigned (<> nil) and computes the singular vectors using divide and conquer algorithm.
- Most Math387 routines rewritten in assembler (much faster)
- New TMtx.MtxSqrt routine allows computation of a square root of the matrix by using
- eigenvalue decomposition (all matrix types supported).
- New TMtx.MtxFunction method allows computation of any matrix function (Power of the matrix, square root of the matrix, log of the matrix,..) via eigenvalue decomposition.
- Added support for sparse matrices.
- SetRoundToTrunc speeds up the computation of the Trunc function.
- Added SetSubRange and SetSubIndex to TVec to allow multiple views of selected number of elements (subvectors) and simplify indexing.
- Added TMtx.SaveToMatrixMarketFile routine, supporting MatrixMarket file format.
- StringsToValues now accepts blanks as delimiters.
- Added TMtx.PixelDownSample method.
- Added TVec.BlockInit and TVec.BlockNext to simplify development of block processing enabled algorithms.
- Chart menu items are now automatically added/removed if you compile/install MtxTee1X.dpk package.
- New TMtxViewDialog component holding the state of the dialog displayed via ViewValues. (allows setting and storing the parameters for the dialog).
- Introduces TSparseMtx class capable of handling real and complex sparse matrices.
- Encapsulates UMF Pack v 3.2, one of the fastest direct sparse matrix solvers and interfacing MKL 5.1 BLAS III.
- Features iterative sparse solvers (cg, bcg, gmres, ..).
- Compute inverse of the sparse matrix.
- Many conversion routines to convert to and form different matrix formats (triplet, banded, dense, Harwell-Boeing).
- Load and save MatrixMarket file format.
- Very fast banded matrix solvers already available in TMtx.
- Add, subtract, multiply routines for sparse/sparse and dense/sparse matrices.
- PixelDownSample routine to allow fast display of the non-zero pattern of the matrices of huge sizes (1000 000 x 1000 000 elements).
- Complete set of standard math routines known from TVec and TMtx. (Log, Power, Sin, Cos, etc...)
- Evalute expressions containing real and/or complex numbers.
- Unlimited number of user defined variables.
- Unlimited number of user defined functions.
- Each function can have up to 6 parameters.
- Maintain a list of parsed expressions.
- New TMtxExpression object
- New TMtxFunctionEvaluator component
- Added NAN and Inf checks to DrawValues method.
- Added support for pixelDownsample for matrices.
- Added TMtxGridSeries for displaying matrix values. Works with all TeeChart versions (v4-v5 Standard or PRO).
- Most procedures taking vector parameters have been completely rewritten and take advantage of block processing design combined with optimized vector processing. (big speed gains).
MtxVecTools, MtxVecDBTools, MtxVecComCtrls and MtxBaseComp.pas
- Added new TMtxProgressDialog component (a TThread component) designed to simplify threading of numerical algorithms, display progress bar and allow interuption of the processing. TMtxFloatEdit component has been enhanced. Ctrl+DlbClick will bring up settings for increment and number format. Added a feature to store those settings in the registry.
- ViewValues and DrawIt display settings are preserved between calls.
- New TMtxComponent featuring generic SaveToStream, LoadFromStream and Assign procedure for all derived classes. (MtxBaseComp.pas).
- All TeeChart units placed in separate package. Now you can recompile this package with any Teechart version.
- All Optimization routines now work fine with C++ Builder 5 and 6.
- Added support for C++ Builder 6.
- Improved compatibility for P4.
- Updated Intel Math Kernel Libraries.
- Resolved issues with dynamic linking of MKL.
- Code optimisation all around...
Changes and new features of MtxVec 1.02 (July 2001):
MtxVec.pas and Math387.pas
- New TMtx.Determinant method (calculates determinant of squared matrix)
- New TMtx.OnSetSize event (triggered when matrix Rows or Cols properties are changed)
- New TVec.Shift method (simiar to TVec.Rotate method)
- New IsNanInf boolean function
- New TVec.Round and TVec.Trunc functions
- Math387 functions are now almost completely written in assembler (including complex versions).
- Added StayOnTop boolean parameter to ViewValues procedure
- Improved TeeChart drawing routines. All TeeChart v5 users will notice additional spee-up.
- Added TMtxOptimization.Asign and TMtxDataset.Asign methods
- Added TMtxDataset.ColumnsToMtx method (reads from all VecColumns and stores the results in single matrix)
- Improved TMtxDataset reading/writing to database algorithms
- Added new TMtxFloatEdit component (Up/Down edit box with support for complex increment)
- Added support for Delphi 6
- MtxVec now uses the latest Math Kernel Libraries (MKL 5.1)
- Reorganized package scheme (runtime, designtime packages)
- Now all Delphi (double and single distribution) are packaged in one installer. The same
- applies to C++ Builder.
- Significantly improved optimization routines.
Initial release of MtxVec 1.0 (August 2000)