  Achieving high code coverage is essential in testing, which gives us
confidence in code quality. Testing floating-point code usually requires
painstaking efforts in handling floating-point constraints, e.g., in symbolic
execution. This paper turns the challenge of testing floating-point code into
the opportunity of applying unconstrained programming --- the mathematical
solution for calculating function minimum points over the entire search space.
Our core insight is to derive a representing function from the floating-point
program, any of whose minimum points is a test input guaranteed to exercise a
new branch of the tested program. This guarantee allows us to achieve high
coverage of the floating-point program by repeatedly minimizing the
representing function.
  We have realized this approach in a tool called CoverMe and conducted an
extensive evaluation of it on Sun's C math library. Our evaluation results show
that CoverMe achieves, on average, 90.8% branch coverage in 6.9 seconds,
drastically outperforming our compared tools: (1) Random testing, (2) AFL, a
highly optimized, robust fuzzer released by Google, and (3) Austin, a
state-of-the-art coverage-based testing tool designed to support floating-point
code.
