.\" $OpenBSD: fegetenv.3,v 1.2 2011/05/26 15:42:27 jmc Exp $ .\" .\" Copyright (c) 2011 Martynas Venckus .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd $Mdocdate: May 26 2011 $ .Dt FEGETENV 3 .Os .Sh NAME .Nm fegetenv , .Nm feholdexcept , .Nm fesetenv , .Nm feupdateenv .Nd manage floating-point environment .Sh SYNOPSIS .Fd #include .Ft int .Fn fegetenv "fenv_t *envp" .Ft int .Fn feholdexcept "fenv_t *envp" .Ft int .Fn fesetenv "const fenv_t *envp" .Ft int .Fn feupdateenv "const fenv_t *envp" .Sh DESCRIPTION These functions manage the floating-point environment -- status flags, rounding direction modes and exception masks -- as one entity. The .Fa envp input argument is an object representing the floating-point environment. The macro .Dv FE_DFL_ENV represents the default floating-point environment -- the one installed at program startup. .Pp The .Fn fegetenv function stores the current floating-point environment in the object pointed to by .Pa envp . .Pp The .Fn feholdexcept function saves the current floating-point environment in the object pointed to by .Pa envp , clears the floating-point status flags, and then installs a non-stop (continue on floating-point exceptions) mode for all floating-point exceptions. .Pp The .Fn fesetenv function establishes the floating-point environment represented by the object pointed to by .Pa envp . The argument .Pa envp shall point to an object set by a call to .Fn fegetenv or .Fn feholdexcept , or equal the macro .Dv FE_DFL_ENV . Note that .Fn fesetenv merely installs the state of the floating-point status flags represented through its argument, and does not raise these floating-point exceptions. .Pp The .Fn feupdateenv function saves the currently raised floating-point exceptions in its automatic storage, installs the floating-point environment represented by the object pointed to by .Pa envp , and then raises the saved floating-point exceptions. The argument .Pa envp shall point to an object set by a call to .Fn feholdexcept or .Fn fegetenv , or equal the macro .Dv FE_DFL_ENV . .Sh RETURN VALUES The .Fn fegetenv , .Fn feholdexcept , .Fn fesetenv , and .Fn feupdateenv functions return zero on success, and non-zero if an error occurred. .Sh SEE ALSO .Xr feclearexcept 3 , .Xr feenableexcept 3 , .Xr fegetround 3 .Sh STANDARDS The .Fn fegetenv , .Fn feholdexcept , .Fn fesetenv , and .Fn feupdateenv functions conform to .St -isoC-99 . .Pp The return types for .Fn fegetenv , .Fn fesetenv , and .Fn feupdateenv are .Vt int for alignment with .St -isoC-99 Defect Report #202.