# ones.
extensions = [
'breathe',
- 'sphinx.ext.autosectionlabel'
+ 'sphinx.ext.autosectionlabel',
+ 'sphinxcontrib.bibtex',
]
+bibtex_bibfiles = ['references.bib']
+
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
std::ostream& operator<<(std::ostream& out, const Grammar& g) CVC4_EXPORT;
/* -------------------------------------------------------------------------- */
-/* Rounding Mode for Floating Points */
+/* Rounding Mode for Floating-Points */
/* -------------------------------------------------------------------------- */
-/*!
- * A CVC4 floating point rounding mode.
+/**
+ * Rounding modes for floating-point numbers.
+ *
+ * For many floating-point operations, infinitely precise results may not be
+ * representable with the number of available bits. Thus, the results are rounded in
+ * a certain way to one of the representable floating-point numbers.
+ *
+ * \verbatim embed:rst:leading-asterisk
+ * These rounding modes directly follow the SMT-LIB theory for floating-point
+ * arithmetic, which in turn is based on IEEE Standard 754 :cite:`IEEE754`.
+ * The rounding modes are specified in Sections 4.3.1 and 4.3.2 of the IEEE
+ * Standard 754.
+ * \endverbatim
*/
enum CVC4_EXPORT RoundingMode
{
+ /**
+ * Round to the nearest even number.
+ * If the two nearest floating-point numbers bracketing an unrepresentable
+ * infinitely precise result are equally near, the one with an even least
+ * significant digit will be delivered.
+ */
ROUND_NEAREST_TIES_TO_EVEN,
+ /**
+ * Round towards positive infinity (+oo).
+ * The result shall be the format’s floating-point number (possibly +oo)
+ * closest to and no less than the infinitely precise result.
+ */
ROUND_TOWARD_POSITIVE,
+ /**
+ * Round towards negative infinity (-oo).
+ * The result shall be the format’s floating-point number (possibly -oo)
+ * closest to and no less than the infinitely precise result.
+ */
ROUND_TOWARD_NEGATIVE,
+ /**
+ * Round towards zero.
+ * The result shall be the format’s floating-point number closest to and no
+ * greater in magnitude than the infinitely precise result.
+ */
ROUND_TOWARD_ZERO,
+ /**
+ * Round to the nearest number away from zero.
+ * If the two nearest floating-point numbers bracketing an unrepresentable
+ * infinitely precise result are equally near, the one with larger magnitude
+ * will be selected.
+ */
ROUND_NEAREST_TIES_TO_AWAY,
};