std::fegetround,std::fesetround (3) - Linux Manuals

std::fegetround,std::fesetround: std::fegetround,std::fesetround

NAME

std::fegetround,std::fesetround - std::fegetround,std::fesetround

Synopsis


Defined in header <cfenv>
int fesetround( int round ) (1) (since C++11)
int fegetround() (2) (since C++11)


Manages the floating-point rounding direction.
1) Attempts to establish the floating-point rounding direction equal to the argument round, which is expected to be one of the floating_point_rounding_macros.
2) Returns the value of the floating_point_rounding_macro that corresponds to the current rounding direction.

Parameters


round - rounding direction, one of floating_point_rounding_macros

Return value


1) 0 on success, non-zero otherwise.
2) the floating_point_rounding_macro describing the current rounding direction or a negative value if the direction cannot be determined

Notes


The current rounding mode, reflecting the effects of the most recent fesetround, can also be queried with FLT_ROUNDS
See floating-point_rounding_macros for the effects of rounding.

Example


// Run this code


  #include <cmath>
  #include <cfenv>
  #include <iostream>


  int main()
  {
      #pragma STDC FENV_ACCESS ON
      std::fesetround(FE_DOWNWARD);
      std::cout << "rounding using FE_DOWNWARD: \n" << std::fixed
                << " 12.0 -> " << std::nearbyint(12.0) << '\n'
                << " 12.1 -> " << std::nearbyint(12.1) << '\n'
                << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
                << " 12.5 -> " << std::nearbyint(12.5) << '\n'
                << " 12.9 -> " << std::nearbyint(12.9) << '\n'
                << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
                << " 13.0 -> " << std::nearbyint(13.0) << '\n';
      std::fesetround(FE_TONEAREST);
      std::cout << "rounding using FE_TONEAREST: \n"
                << " 12.0 -> " << std::nearbyint(12.0) << '\n'
                << " 12.1 -> " << std::nearbyint(12.1) << '\n'
                << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
                << " 12.5 -> " << std::nearbyint(12.5) << '\n'
                << " 12.9 -> " << std::nearbyint(12.9) << '\n'
                << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
                << " 13.0 -> " << std::nearbyint(13.0) << '\n';
  }

Output:


  rounding using FE_DOWNWARD:
   12.0 -> 12.000000
   12.1 -> 12.000000
  -12.1 -> -13.000000
   12.5 -> 12.000000
   12.9 -> 12.000000
  -12.9 -> -13.000000
   13.0 -> 13.000000
  rounding using FE_TONEAREST:
   12.0 -> 12.000000
   12.1 -> 12.000000
  -12.1 -> -12.000000
   12.5 -> 12.000000
   12.9 -> 13.000000
  -12.9 -> -13.000000
   13.0 -> 13.000000

See also


nearbyint
nearbyintf
nearbyintl nearest integer using current rounding mode
           (function)
(C++11)
(C++11)
(C++11)


rint
rintf
rintl
lrint
lrintf
lrintl
llrint
llrintf nearest integer using current rounding mode with
llrintl exception if the result differs
           (function)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)