Math Vector Library

Math Vector Library is a high performance, industry-quality C, C++ and Fortran function library providing high performance math subroutines on vectors. The library is heavily vectorized and specifically tuned to leverage performance increases from Single-Instruction-Multiple-Data (SIMD) processor instructions on all supported platforms.

The library supports both execution on normal and strided vectors, with any vector argument having an own stride that can be set. Multiple backends exist for various processor feature levels of any targeted architecture and where applicable an OpenMP® based version is available as well. As such this library is an excellent choice for digital signal processing (DSP), artificial intelligence (AI), 3D computer graphics, shader runtimes, seismological and high-performance computing applications.

A scalar version of the library is also included. This library uses the same function implementations as the Math Vector Library and will as such yield the same accuracy as the vector counterpart. This is useful to ensure consistency of calculations in an application developed.

The library has been optimized for a multitude of computer architectures providing a true write-once compile-everywhere paradigm.

Functionality

Also have a look at the documentation for an exhaustive list of functionality.

  • Base functionality
    • Square and cube roots: normal and reciprocal
    • Trigonometric functions: normal, inverses, in degrees, scaled by π
    • Hyperbolic functions: normal and inverses
    • Exponentials: normal, base-2, minus-1
    • Logarithms: normal, base-2, base-10, plus-1
    • Special functions: complementary and normal error function, bessel functions of the first and second kinds, log-gamma
    • Rounding: floor, ceil, truncate
    • Miscellaneous: reciprocal, absolute value, euclidean distance
    • Complex Numbers: square root, power, conjugate, projection exponentiation, logarithm, argument, normal and hyperbolic trigonometric functions
  • Machine Learning
    • Activation Functions (incl. first derivatives): Sigmoid, ReLU, Tanh, Softplus, Softsign, Gaussian, GELU, SiLU, MISH, PReLU and SeLU

Support

  • Community Support: (free)
    • Email support provided through a public user’s mailing list.
  • Support Contract: (yearly subscription):
    • Installation and deployment support
    • Private email support
    • Processor model specific builds

Availability

The following platforms are currently supported. Optimized builds for specific processor extensions such as SSE and AVX or specific processors are available.

Primary Platforms offer the highest performance and hand-optimized functions. These are our main development targets.

  • Linux
    • x86 (SSE2)
    • x86_64 (multiversioning 1))
    • aarch64 (ARMv8a, ARMv8.4a, ARMv9a)
    • PowerPC64 (little and big endian, Power 8, 9 and 10, multiversioning 1))
    • RISC-V 64bit (RV64IG)
  • Windows
    • x86 (SSE, SSE2)
    • x86_64 (AVX, AVX2)

Secondary Platforms still offer quite high-performance but are not our main development targets.

  • Linux
    • armhfp (ARMv7a, ARMv8a both w/ and w/o NEON)
    • MIPS (little and big endian, MIPS2, MIPS32r6)
    • MIPS64 (little and big endian, MIPS3, MIPS4)
    • z/Arch s390x (arch6, arch11, arch12, arch13)

1) Library versions with multiversioning contain optimized variants of every function for every applicable instruction set architecture variant. The most appropriate variant is chosen on the first call to the subroutine. Variants include different instruction set extensions such as AVX and AVX2 on x86_64 or the target processor such as Power8 and Power9 on PowerPC64. This allows the library to be easily deployed.

If you purchase a support contract we can furthermore produce specialized builds for specific processor models of the supported architectures.

Pricing

Pricing is calculated as developer seat which corresponds to a single software developer developing with the product and runtime which corresponds to the product being deployed on a machine.

A runtime license must be purchased for every computer the product is being deployed on, a developer license must be purchased for every developer who works with the product. At least one developer seat and one runtime license are required.

Type of License Price per Machine Price per User
Developer Seat 7500 EUR
Runtime 200 EUR
Runtime (High-Volume) Contact Sales
  • Support +20% of the total license fees for the product (developer seat(s) + runtimes) for the the customer annually.
  • Academic, Non-Commercial Pricing: 40% discount.

For specialized requirements such as high-volume runtime licenses contact sales so we can work out a solution.

Order Information

Please contact a sales representative for inquiries.

Product and Service Numbers
Number Description
SA-00001-010 Math Vector Library 1.0, Developer Seat
SA-00002-010 Math Vector Library 1.0 (Linux, x86, x86_64/amd64), Runtime
SA-00003-010 Math Vector Library 1.0 (Microsoft Windows, x86, x86_64/amd64), Runtime
SA-00004-010 Math Vector Library 1.0 (Linux, PowerPC64le/PowerPC64el), Runtime
SA-00005-010 Math Vector Library 1.0 (Linux, AArch64), Runtime
SA-00006-010 Math Vector Library 1.0 (Linux, ARMhfp), Runtime
SA-00007-010 Math Vector Library 1.0 (Linux, RISC-V 64bit), Runtime
SA-00008-010 Math Vector Library 1.0 (Linux, MIPS/MIPS64), Runtime
SA-00009-010 Math Vector Library 1.0 (Linux, s390x), Runtime
SS-00004-100 Math Vector Library Support Contract (1 year)