MtxVec for .NET - Frequently Asked Questions
What is MtxVec for .NET?
MtxVec is a real High Performance object-oriented numerical library covering linear algebra, optimization, statistics, expression evaluators and many other frequently used math functions. MtxVec can deliver very high single and double precision floating point performance. It takes advantage of SSE2/SSE3/SSE4 vectorized instruction sets of Intels latest CPU's, supports multi-core CPU's and symmetric multiprocessing for many of its functions. All the performance sensitive processing of the MtxVec is performed in the unmanaged code. All the unmanaged code interfaces have been very carefully designed and the library is able to deliver nearly the same performance .NET in compare to its C++ version. The final result is the top notch performance of unmanaged code available within a managed environment in a way safe for the programmer. MtxVec features extensive test database, explicit range checking and and is very suitable for applications requiring a lot of memory for keeping large matrices and vectors in memory.
Why use MtxVec for .NET when Visual Studio already has math functions?
Speed and functionality. If your application needs to deliver real time mathematical results, you need speed. If your application needs to implement special, less known mathematical algorithms, not covered in standard math libraries, you need functionality. In either case MtxVec is a good choice.
Who uses these libraries?
Users include scientists from research labs at Universities, corporate development teams for process control applications and other commercial application designers. We use these libraries ourselfs on each project we work on. This helps improve and further develope the library. The fact that we use the product that we make, ensures that the concept and user interface really does suit the actual programmer.
How does it work?
From the users point of view it's as easy as possible. After installing the packages from nuget.org and adding the "using Dew.Math; using Dew.Math.Units;" command to the C# source file, the library is ready to be used. We have included a large number of examples in the help files and also as executables.
Won't the use of unmanaged code slow down the application?
The interface to unmanaged code is made in a very effective way. For applications working with vectors and matrices, the performance of the memory management and consequently the performance of the .NET application as a whole will improve substantially.
For those which prefer portability, we have a Core Edition, which does not depend on unmanaged code.
Are MtxVec object still garbage collected?
What is the advantage of MtxVec against managed code math libraries?
Well tested code which did not have to be translated in to a new language possibly introducing new bugs is one. Another advantage is performance, this includes both the direct execution performance and reduced memory usage when solving the same kind of problems. The performance differences is really by "orders of magnitude". The main aim of MtxVec so to leave .NET developers the productivity, without paying with the performance.
Do I need to buy Intel MKL for MtxVec to work?
No. MtxVec uses some functions from MKL library and an additional license is not required.
Will MtxVec run on Linux?
Which .NET framework versions are supported?
All versions from .NET v2.0, with .NET Core starting with v5.
Which compilers does MtxVec support?
Do MtxVec assemblies pass PEVerify test?
Yes. They use unmanaged code though, because it is not possible to write assembler in .NET.
Wont MtxVec become obsolete once .NET compilers are improved?
Even the best x86 native compilers today still use specialy optimized libraries. And there are two things that make MtxVec special: high quality code of a vast array of different numerical algorithms and speed. While in theory everything is possible, the reality of today shows astounding performance gains (10-30x) for numerical applications which use MtxVec against custom code. The only way to expirience those gains, is to try the library.