English | 日本語
Last Updated: May 30, 2026

kv - a C++ Library for Verified Numerical Computation

Masahide Kashiwagi

1. Introduction

A set of libraries for verified numerical computations (kv library), which is written in the C++ language, is available to download in this page.

For overview of verified numerical computation and kv library, please see the slide: kv-intro-e.pdf (94 pages)

In old versions of kv library (which had been developed from the autumn, 2007 to the spring, 2013), the interval library in Boost (boost.interval) was used. In the present version of kv library (see, 3. Download and Install), all programs with respect to interval arithmetics are originally produced, whereas some functions in Boost still partially used in kv library, e.g., boost.ublas for linear algebras.

2. Requirement

A computational environment where C++ program and Boost can work, is required to use kv library.

We need to change rounding mode to realize interval arithmeric. See 5. Interval Arithmetic and 20. Changing Rounding Mode and Compiler Options for details of the requirements on CPU and compiler.

Basically, the present kv library is developed on Ubuntu 26.04 (64bit) + g++. Unix operating systems (64bit) are recommended, while it was confirmed that kv library works on the following computational environments:

3. Download and Install

Download: kv-0.4.60.tar.gz (updated on May 30, 2026)
(Old versions are available to download here.)

You can also access to the source code of kv on https://github.com/mskashi/kv .

The kv library is designed to work without "install" (and therefore "make") but only with the header files in itself. The all functions provided by kv library are confined in the namespace of "kv" so that these functions does not compete with other libraries.

For detailed installation and testing instructions, please see Getting Started.

It is recommended to specify the options -O3 (or other possible optimization options) and -DNDEBUG, both of which strongly affect the execution speed (the details of the NDEBUG macro can be found in boost.ublas). Additionally remark that the option of -DKV_FASTROUND is available to perform faster interval arithmetics when using an Intel's CPU and a 64bit operating system.

When you change your computational environment or compile options, it is recommended to re-check whether the rounding mode is correctly changed for the four arithmetic and square-root operations, by compiling and performing test/test-rounding.cc.

4. List of components

5. Interval arithmetic (interval)

6. Double-double precision arithmetics (dd)

7. Intel 80bit floating point numbers (fp80, ddx)

8. Wrapper for MPFR (mpfr) (in Japanese)

9. Complex number Arithmetic (complex) (in Japanese)

10. Automatic differentiation (autodif) (in Japanese)

11. Affine Arithmetic (affine) (in Japanese)

12. Power series arithmetic (psa) (in Japanese)

13. Verification by the Krawczyk method for nonlinear equations (in Japanese)

14. Finding all solutions to nonlinear equations (in Japanese)

15. Verification for initial value problem for ODEs (in Japanese)

16. Solver for initial value problems and verification for boundary value problem by shooting method (in Japanese)

17. Numerical integration (in Japanese)

18. Verification for special functions (in Japanese)

19. Other functions (in Japanese)

20. Function objects and problem description (in Japanese)

21. Changing Rounding Mode and Compiler Options

22. Appendix

22.1 What is Boost? (in Japanese)

22.2 Matrix computation with boost.ublas (in Japanese)

22.3 Numeric types (in Japanese)

22.4 Bonus: a simple interval arithmetic library

23. Web Demonstration of kv Library

24. Application Examples of kv Library (in Japanese)

25. Papers or Articles related to kv Library (in Japanese)

26. Concluding remarks

This library is used in the C++ part of HIKMOT and contributes greatly to its high speed. It is also used for research by students in my laboratory and development is carried out refrecting their oppinions.

Since the library will not be improved unless it is used by a lot of people, I hope many people will use this library.

For the development of this library, Mr. Keiichiro Kashiwagi of NTT Network Innovation Laboratories got a great deal of cooperation. I express my gratitude here.

Copyright (c) 2013-2026 Masahide Kashiwagi. This software is released under the MIT license.

Update history (in Japanese)

Acknowledgment (in Japanese)


kv - a C++ Library for Verified Numerical Computation /