Mathematical Library for Critical Systems
LibmCS
The Mathematical Library for Critical Systems (LibmCS) is an extensively tested and validated mathematical library (libm), which provides predictable accuracy results in all domains. The available wrappers give equal results for auto-coding development approaches and the qualification data package (QDP) supports an automatic qualification according to ECSS E-ST-40 and Q-ST-80 Category B.
The library is open source, based on FDLIBM and forked from Newlib; the source code is comprehensively refactored regarding the design and documentation and is compliant to several standards.
As output of the QLibmCS activity, the library is designed and developed to minimize the project specific integration effort and reduce the cost for long term maintenance.
Standard compliant to:
- POSIX (IEEE Std 1003.1-2017)
- IEEE-754 2019 (ISO 60559)
- ISO C18 (ISO/IEC 9899)
- MISRA-C 2012
- ECSS E-ST-40 and Q-ST-80 Category B (pre-qualified)
Supported Processors:
- x86-64
- ARM
- RISC-V
- SPARC V8 (LEON 2/3/4)
Supported Compiler/Environments:
- GCC (>= 4.2.1)
- Clang
- RTEMS
- GNU/Linux
- MATLAB/Simulink (MIL/SIL/PIL Wrapper)
- GNAT via ADA Bindings
Further detailed Information:
- Public Repository: LibmCS on Gitlab
- Test reports: Qualified LibmCS Test Report Index
- Brochure: QLibmCS_MR-BR.00-ML_i1_r2_Brochure.pdf
- Presentation: QLibmCS_MR-FP.00-ML_i1_r1_Final_Presentation.pdf
The Qualification Data Package is freely available for ESA Member States on ESSR: LibmCS Mathematical Library and Qualification Data Package
MAXI Toolbox
The Qualification Data package contains MAXI Toolbox, a test suite software for in-depth analysis and qualification of standard conform mathematical libraries. The Toolbox contains all necessary test specification, runs on a Linux OS (PC/Virtual machine) and needs access to the specific target for executing the tests.
MAXI provides two different modes, the qualification mode for conducting single-click automatic test runs and qualification evidence generation including progress log window, and the expert mode which offers multiple configuration options and functions for operational investigation or specific numerical/timing/coverage analysis.
The Toolbox is designed to be easily extensible for custom hardware targets and also for different mathematical libraries. For many targets there are already pre-defined configurations presets.
Application:
- Python App running on GNU/Linux PC/VM
- Many Target Configuration presets available
- Expert View for configuration and numerical/timing/coverage analysis
- Qualification View for full qualification campaigns and evidence generation
- MPFR based Oracle integrated for each mathematical function for exact comparisons
Test specification:
- YAML format:
- Easily human-readable and editable,
- comfortable number formats like decimal, hex, decimal scientific, hexadecimal scientific
- convenient range options like linear, logarithmic, and fixed bit steps,
- several options for specific FPU (DAZ/FTZ) or platform (32/64 Bit) behavior.
- 4.000 unit tests for full statement, decision and MC/DC coverage on LibmCS
- 1.000 single value validation tests including special value cases for the standards
- 250 million range validation tests for detailed accuracy characterization
Test reports:
- HTML output for fast browsing and deep investigations
- HDF5 output for easy custom post-processing
- Structural coverage report retrieved from target and generated by GCOV
- Maximum ULP and Relative error computation and comparisons
- Jupyter Notebooks for flexible and individual assessment
The MAXI Toolbox is available on request via libmcs@gtd-gmbh.de