All NMath libraries have extensive, automated unit test suites for all NMath types and methods. Basic math operations are performed by the native Intel Math Kernel Library (included with NMath). Higher level operations are tested against data from other commercial products and published sources. Each library must pass its associated tests prior to any release, protecting earlier code from being accidentally harmed during revisions. NMath is used and trusted by many industry leading companies.
Yes. You can install a licensed copy of an NMath library on more than one machine. We understand that developers may need to use more than one machine for their work.
No. There are no runtime fees or royalties. Please see the license agreement for more information.
Yes. Licenses are sold per developer seat. Each developer writing code using an NMath library requires a license. For example, if 5 developers are writing an application, and only 3 are doing most of the intense math work, all 5 must have a license.
The prebuilt NMath libraries support .NET Framework 4.0 Client Profile or higher. (The .NET Framework Client Profile is a subset of the .NET Framework that is optimized for client applications.) Prebuilt assemblies for .NET 3.5 are available upon request.
The answer depends somewhat on your definition of “pure .NET”. NMath is written entirely in C#. For better performance of basic linear algebra operations, however, NMath relies on the native Intel Math Kernel Library (included with NMath). All memory used by native code is allocated from the managed heap.
Source code can be purchased with team or site licenses.
OMP Run-time library: currently configured to support a maximum of 32 threads. OMP abort: Please specify a larger value via the KMP_ALL_THREADS environment variable to raise this limit.
This occurs even though I never have more than 32 threads active at one time.
This problem only occurs in older versions of NMath. If you have annual maintenance contract, you can upgrade to the latest code at no additional charge.
Alternatively, raise the limit specified by KMP_ALL_THREADS appropriately–for example, “set KMP_ALL_THREADS = 100”–or design your application to use the System.Threading.ThreadPool class which maintains a pool of worker threads, and has a default limit of 25 threads per available processor.