MtxVec Release History
Changes and new features of MtxVec v6.1.0 (June 2022):
- Implemented Lockless (never enters sleep(..)) TMtxVecController.MarkThread and TMtxVecController.UnMarkThread. The peformance gain grows with thread count. This speeds up the threading library when calling DoForLoop method.
- Object cache is now using TLS region (Thread Local Storage), to store its memory pool index. This progressively speeds up object allocation, when using more than 16 threads with the TMtxForLoop threading library.
- Added BlockGranularity addressing threading with high turbo clock frequencies and Intel Alder Lake with P+E cores. (asymetric multi-processing)
- Optimized critical-sections used for thread synchronisation for high thread count.
- Android 11 tagged pointer support.
- Brute-force exact K-NN algorithm on CPU with euclidian norm distance. Faster than KD-Tree, because it scales linearly with core count. Leads GPUs in price/performace by 4x especially in double precision. Can use AI accelerators used for NNs. Due to its performance a possible alternative to deep NNs. Located in MtxForLoop.ClusteredKNN. Up to 2000x faster than naive implementations for large problems.
- Updated Intel MKL and Intel IPP to OneAPI v2022.2
- Updated for Embarcadero Alexandria 11.1 release.
- When setting TMtxForLoop.ThreadCount, an Access Violation could be raised (thread race condition).
- When launching TMtxForLoop thread execution, the call could deadlock (thread race condition).
- The memory cache of TVecInt and TMtxInt was not active and this caused performance degradation in the case of threading.
Changes and new features of MtxVec v6.0.8 (February 2022):
- Updated Linux64 shared libs with latest Intel OneAPI. The minimum GLIBC version required reduced to 2.14. RHEL 7.x, 8.x, 9.x is now supported.
Changes and new features of MtxVec v6.0.8 (January 2022):
- Updated online and offline documentation.
- New Select/Select2D and SelectIndex/SelectIndex2D properties for Vector/VectorInt and Matrix/MatrixInt types. Check out the additional new syntax for expressions.
- Begun publishing videos for less known, but cool features, to YouTube.
- Updated Nuget package support to v6.
- Improved compatibility for .NET Core Winform (Preview) designer avoiding serialization of delegates.
Changes and new features of MtxVec v6.0.6 (December 2021):
- Updated Linux64 shared libs with latest Intel OneAPI. This time Lapack from Intel MKL is also included.
- When deploying to Linux it now suffices to copy the libs to the same folder as the app without any extra rights or config requirements by adding -rpath=$ORIGIN linker switch and reducing shared lib dependancies.
- Verified compatibility with FmxLinux. (MtxVec Demo application running on Ubuntu 20.04)
- Updated build tool to include building for Apple M1 (OSX ARM 64) .
- Updated demo applications for C++Builder including 64bit.
- Restored compile with TTPRECISION define disabled.
- Several bug fixes for the DewBuidTool.exe, used to rebuild packages for all platforms.
Changes and new features of MtxVec for .NET v6.0.6 (December 2021):
- Included .NET Core v6 assemblies.
- Updated for Visual Studio 2022.
- Additional (LAPACK) performance libraries now available also for Linux.
- Updated reference to Steema TeeChart to the latest version.
Changes and new features of MtxVec v6.0.6 (November 2021):
- Updated with latest Intel OneAPI IPP and MKL (2021 Update 4) libs.
- Fixed a bug affecting some functions with single precision in 64bit apps that caused invalid_instruction exception.
- Added support for Open CL 3.0 (Intel and NVidia GPUs).
- New options for reporting build errors of Open CL kernels.
- Add new command queue Enque overload.
- Added ability to read/write VectorInt/MatrixInt to/from GPU.
- Added possibility to declare arbitrary size of clVector and clMatrix with GPU memory not from object cache.
Changes and new features of MtxVec v6.0.5 (September 2021):
- Added support for RAD Studio 11.0.
- Several bug fixes when allocating more than 2GB per vector/matrix.
Changes and new features of MtxVec for .NET v6.0.4 (July 2021):
- Initial release of the MtxVec for .NET Core 5.0 rewritten in C#. MtxVec and its add-on packages are mirrored to C# and .NET Core framework from Delphi pascal source code by using propriety software. This allows us to maintain a single source code base and export to C# with a click of a button. Code depending on specific frameworks like VCL, FMX, Winforms, WPF etc.. is of course written separately.
Changes and new features of MtxVec v6.0.4 (May 2021):
- Added dll version in to names of high performance libraries. Simplifies different versions to coexist on the same computer.
- Added high performance shared libraries for Linux 64bit when using FireMonkey. The deployment is based on Intel OneAPI 2021 (Update 2). Achieves the same performance on Linux as on Windows.
- Fixed performance issues related to TStringList and TStrings debugger visualizers. Especially for RAD Studio 10.4 it is recommended, to turn off visualizers provided by Embarcadero, which are currently not in use, to improve the debugging speed.
- Minimum supported Delphi version has been raised to XE3.
- Fixed a bug in ScatterByMask, when Src data vector had zero length.
Changes and new features of MtxVec v6.0.4 (March 2021):
- Added TMtxVec.CapacityInElements, TMtxVec.CapacityInBytes. Changed behaviour of TMtxVec.Capacity
- Various minor fixes. (Demo applications, combinations of included dlls, Firemonkey,....)
Changes and new features of MtxVec v6.0.3 (August 2020):
- Undoing Bug fix for TStringGrid due to Sydney 10.4 Patch #3.
- Build Tool fix for "Concurrent precision", which failed for Stats Master and DSP Master, if enabled.
- Added TVec.Hilbert algorithm variant.
- Noticed Delphi 64bit debugger limitation: Evaluations are limited to 132KB max. 32bit debugger has no limit. Bug reported to Embarcadero.
- C++Debugger 10.4 Sydney still in difficult state even after Embarcadero Patch #3.
Changes and new features of MtxVec v6.0.2 (June 2020):
- Bug fix for TVec/TMtx/TMtxInt/TVecInt BinarySearch
- Greatly enhanced debugging stability and handling of nil and dangling pointers for Visualizers.
- TStringList bug fix for 64bit compilers, which used wrong string length field size. (allows display of milions of strings in real time).
- Array visualizers now also show variable storage precision.
- Bug fix for TStringGrid in 10.4 used by the TStringList visualizers, which was showing empty grid (CustomDraw passes wrong TRect size).
- Greatly enhanced visualizers on iOS64, OSX64 and Android 64. Full support for inline and variable inspection from Delphi for all types, including TStringList.
- Updated TCplx visualizers for regional settings, where comma is used as a decimal separator.
- Important: Due to poor C++Builder debugger capabilities, visualizers are not avilable for C++ apps in Sydney 10.4. All features are still functional for Berlin 10.1 classic C++ compiler and before.
Changes and new features of MtxVec v6.0.1 (June 2020):
- Support for Sydney 10.4.
- FireMonkey support for iOS and Android without ARC.
- High speed dlls updated for Intel MKL/IPP/C++ (release 2020 Update 1)
- Bug fix addressing C++Builder linker when using single precision functions from external dlls.
- The build tool can now also build packages for OSX64, which uses external linker.
- Added TMtxVecInt.CountIntRange function
- Added TVecInt.GroupCountIteration function
- Added TVecInt.GroupCount function
- Added TVec.GroupSum function
- Added TVec.GroupSumIteration function
- Enhanced TMtxVec.Replace uses IPP version of ReplaceNAN
- Added StudentRangeCDF for Studentized Range cumulative distribution
- Added StudentRangeCDFInv for inverse Studentized Range cumulative distribution.
Changes and new features of MtxVec v6.0 (March 2020):
- Combined run-time selectable floating point precision.
- Adding C++Builder support across all features.
- Minimum Windows version is Windows 7
- Minimum VCL Delphi/C++Builder supported version raised to Rad Studio XE2
- Minimum FireMonkey Delphi/C++Builder supported version raised to Rad Studio 10.2
Changes and new features of MtxVec v6.0 Pre-release (February 2020):
- Updated for Rio 10.3 Update 3 and added support for Android64 bit.
- Introduced TMtxVec.FloatPrecision, which allows computational precision to be specified at run-time. (major new feature of MtxVec v6). The same algorithm written once, can be executed either in double or single precision, where it makes sense. Single precision variant can run up to 2x faster and use up to 2x less memory.
- Enhanced SetSubRange routines and added SetSubRangeLevel, which now support nesting.
Changes and new features of MtxVec v5.4.1 (September 2019):
- Updated for Rio 10.3 Update 2 and added support for OSX64 bit.
- Introduced additional property to reduce memory allocation frequency: TMtxVec.Capacity, with similar behaviour as TList.Capacity
- Bug fix for TMtxGridSeries on FireMonkey in the TeeChart editor.
Changes and new features of MtxVec v5.4 (January 2019):
- Updated to latest version of Intel MKL, Intel IPP (release 2019).
- Vectorized version for FindIndexes, FindMask and FindAndGather for TVec/TMtx and TVecInt/TMtxInt. Especially when using FindMask, speed improvement of 10x or more is possible when vectorizing if-then clauses.
- Added example to MtxVec demo: "Vectorizing if-then with masks" to show how to use vectorized FindMask and FindIndexes.
- Dll API has changed. To prevent version conflicts, the library names have new version number: 6. VC runtime library (msvcrt120.dll) is no longer needed.
- MtxVec.Sparse6.dll has been joined in to MtxVec.Lapack6d.dll due to relatively much smaller size.
- Added new example to MtxVec demo: "Memory channels" exploring options to speed up code that cant be vectorized at all or only partially.
- Added single precision support to Pardiso sparse solver.
- Added single precision support to Trust-Region optimization method.
- Minimum Windows version increased to Windows 7 32bit.
- Minimum instruction set increased to SSE3 (from SSE2).
- Further increased number of routines with AVX-512 code path (by several dozens).
- Added ability to save and load state of TRandomGenerator including the state of all the specified streams.
- Added Uniform 32bit chunk and 64bit chunk random generators.
- Added RandomMultinomial random generator
- Greatly enhanced error checking and reporting for random generators.
Changes and new features of MtxVec v5.3.2 (December 2018):
- Support for Rad Studio Rio 10.3.
- Installer (Build Tool) support for all Delphi platforms.
- CPU Affinity support for DoForLoop on Windows.
- Optimization methods can now respond to a "stop" signal when running in its own thread. This can be helpfull, if the optimization process would deadlock or run too long.
- Various FireMonkey related fixes and refinments.
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)