  Sanitizers are a relatively recent trend in software engineering. They aim at
automatically finding bugs in programs, and they are now commonly available to
programmers as part of compiler toolchains. For example, the LLVM project
includes out-of-the-box sanitizers to detect thread safety (tsan), memory
(asan,msan,lsan), or undefined behaviour (ubsan) bugs.
  In this article, we present nsan, a new sanitizer for locating and debugging
floating-point numerical issues, implemented inside the LLVM sanitizer
framework. nsan puts emphasis on practicality. It aims at providing precise,
and actionable feedback, in a timely manner.
  nsan uses compile-time instrumentation to augment each floating-point
computation in the program with a higher-precision shadow which is checked for
consistency during program execution. This makes nsan between 1 and 4 orders of
magnitude faster than existing approaches, which allows running it routinely as
part of unit tests, or detecting issues in large production applications.
