This page provides answers to frequently asked questions about the current features of the NMath .NET math libraries, as well as common development questions and problems. If after reading the NMath FAQ, you still have a question, please contact us.
Q. Does NMath include source code?
A. Source code can be purchased with team or site licenses.
Q. Is NMath "pure" .NET?
A. 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.
Q. Which versions of the .NET Framework does NMath support?
A. The prebuilt NMath libraries support .NET Framework 3.5 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 2.0 are available upon request.
Q. Do we need to buy a license for each developer working with NMath?
A. 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.
Q. Does your licensing policy require runtime or distribution fees?
A. No. There are no runtime fees or royalties. Please see the license agreement for more information.
Q. Can I install my copy of NMath on more than one machine?
A. 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.
Q. How do I know NMath is accurate?
A. 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.
Q. When using NMath in a multithreaded environment, my application terminates with the following error message:
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.
A. 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.