📜  C++ feholdexcept()(1)

📅  最后修改于: 2023-12-03 15:13:54.094000             🧑  作者: Mango

C++ feholdexcept()

The feholdexcept() function in C++ is used to save the current floating-point environment in a given object and then clear the floating-point status flags. It is a part of the <cfenv> header file and is defined in the cmath library.

Syntax
#include <cfenv>
int feholdexcept(fenv_t *envp);
Parameters
  • envp: A pointer to an object of fenv_t type where the current floating-point environment can be saved.
Return value

The function returns 0 if the floating-point environment was successfully saved and the status flags were cleared. If the function fails, it returns a non-zero value.

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

#pragma STDC FENV_ACCESS ON // enable access to the floating-point environment

int main()
{
    std::cout << "Initial floating-point status flags: " << std::fetestexcept(FE_ALL_EXCEPT) << std::endl;

    fenv_t env;
    if(std::feholdexcept(&env) != 0)
    {
        std::cerr << "Failed to save floating-point environment!" << std::endl;
        return -1;
    }

    std::cout << "Floating-point status flags after calling feholdexcept(): " << std::fetestexcept(FE_ALL_EXCEPT) << std::endl;
    std::cout << "Floating-point environment saved successfully!" << std::endl;

    return 0;
}

In the above example, we include the necessary header files and enable access to the floating-point environment using the #pragma STDC FENV_ACCESS ON directive. We then output the initial floating-point status flags using the std::fetestexcept() function.

Next, we declare an object of fenv_t type and call the feholdexcept() function to save the current floating-point environment in that object and clear the status flags. If the function returns a non-zero value, we output an error message and return -1.

Finally, we output the updated floating-point status flags using std::fetestexcept() and a success message.

Conclusion

The feholdexcept() function is an important tool for controlling the floating-point environment in C++. It allows us to save the current environment, modify it as needed, and then restore it to its original state. This can be useful in a wide range of applications, from numerical simulations to scientific computing.