FPBench Logo

Metadata 1.1 (DRAFT VERSION)

Common metadata for floating-point computations

FPBench 1.1 standards

FPBench is a standard benchmark suite for the floating point community. The benchmark suite contains a common format for floating-point computation and metadata and a common set of accuracy measures:

  1. The FPCore input format
  2. FPCore example inputs
  3. Metadata for FPCore benchmarks
  4. Standard measures of error

FPCore metadata properties

The metadata properties allow describing additional information about each benchmark, such as their name, description, precision, citations, or preconditions.

FPBench 1.1 defines the meaning of the following properties:

A string name for the benchmark. If a name is needed and not provided, we recommend using the body expression.
A string description for the benchmark and its inputs. We recommend describing the physical meaning and units of inputs when applicable.
A list of symbols that describe the sources of the benchmark. We recommend making available a BibTeX file which uses the same symbols as keys.
Describes the floating-point precision used for rounding, using a list naming a precision family and its parameters, or using a short-hand symbol synonymous with such a list.
(float e s)
An IEEE-754 binary floating-point value with e exponent bits and s significant bits (including the implicit bits). binary64 and binary32 are common shorthands.
(posit es nbits)
Posits with es exponent bits and nbits total bits. posit8, posit16, posit32, and posit64 are common shorthands.
(fixed i f)
Fixed point, with i integer bits and f fractional bits.
A special precision for arbitrary real numbers, where no rounding takes place.
A special precision for mathematical integers, where no rounding takes place.
Where no :precision property is specified, implementations should assume a sane default, such as binary64 or possibly real depending on the application domain.
The floating-point rounding mode used for rounding. Expected to be one of the IEEE 754 modes nearestEven, nearestAway, toPositive, toNegative, or toZero.
A precondition on inputs to the benchmark. Tools should not use points that fail the precondition to determine the accuracy of the benchmark. It is expected to be an expression that returns a boolean value. A rounding context can be given explicitly for the expression, but if it is not, the default rounding context is assumed to have real precision rather than the overall properties specified for the FPCore.
A real-valued function approximated by the benchmark. If not provided, then it is assumed to be the body of the benchmark. As with preconditions specified with :pre, a rounding context can be provided explicitly, but it is assumed to have real precision rather than the overall properties specified for the FPCore.
The library used in the source to implement floating-point operations. It is expected to be a symbol identifying a library implementation and version, such as gnu-libm-2.34.

Additionally, properties prefixed by the name of a tool (such as :xxx-foobar) are reserved for definition by that tool. Only that tool may define the meaning of those properties; other tools should not depend on the meaning of those properties, nor must the defining tool keep the meaning constant.