The OpenD Programming Language

fastmath

Functions attribute, an alias for ldc.attributes.fastmath .

  • 1. Enable optimizations that make unsafe assumptions about IEEE math (e.g. that addition is associative) or may not work for all input ranges. These optimizations allow the code generator to make use of some instructions which would otherwise not be usable (such as fsin on X86).
  • 2. Allow optimizations to assume the arguments and result are not NaN. Such optimizations are required to retain defined behavior over NaNs, but the value of the result is undefined.
  • 3. Allow optimizations to assume the arguments and result are not +`-inf. Such optimizations are required to retain defined behavior over +`-Inf, but the value of the result is undefined.
  • 4. Allow optimizations to treat the sign of a zero argument or result as insignificant.
  • 5. Allow optimizations to use the reciprocal of an argument rather than perform division.
  • 6. Allow floating-point contraction (e.g. fusing a multiply followed by an addition into a fused multiply-and-add).
  • 7. Allow algebraically equivalent transformations that may dramatically change results in floating point (e.g. reassociate).

Note: Can be used with all compilers.

import mir.math.common;
version(LDC)
alias fastmath = ldc.attributes.fastmath

Meta