| .\" Copyright (c) 2004 David Schultz <das@FreeBSD.org> |
| .\" All rights reserved. |
| .\" |
| .\" Redistribution and use in source and binary forms, with or without |
| .\" modification, are permitted provided that the following conditions |
| .\" are met: |
| .\" 1. Redistributions of source code must retain the above copyright |
| .\" notice, this list of conditions and the following disclaimer. |
| .\" 2. Redistributions in binary form must reproduce the above copyright |
| .\" notice, this list of conditions and the following disclaimer in the |
| .\" documentation and/or other materials provided with the distribution. |
| .\" |
| .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| .\" SUCH DAMAGE. |
| .\" |
| .\" $FreeBSD: src/lib/msun/man/fegetenv.3,v 1.1 2004/06/06 10:06:26 das Exp $ |
| .\" |
| .Dd May 8, 2004 |
| .Dt FEGETENV 3 |
| .Os |
| .Sh NAME |
| .Nm fegetenv , |
| .Nm feholdexcept , |
| .Nm fesetenv , |
| .Nm feupdateenv |
| .Nd floating-point environment save and restore |
| .Sh LIBRARY |
| .Lb libm |
| .Sh SYNOPSIS |
| .In fenv.h |
| .Fd "#pragma STDC FENV_ACCESS ON" |
| .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 |
| The floating-point environment includes exception flags and masks, the |
| current rounding mode, and other architecture-specific settings. |
| However, it does not include the floating-point register file. |
| .Pp |
| The |
| .Fn fegetenv |
| function stores the current floating-point environment in the object |
| pointed to by |
| .Fa envp , |
| whereas |
| .Fn feholdexcept |
| saves the current environment, then clears all exception flags |
| and masks all floating-point exceptions. |
| .Pp |
| The |
| .Fn fesetenv |
| function restores a previously saved environment. |
| The |
| .Fn feupdateenv |
| function restores a saved environment as well, but it also |
| raises any exceptions that were set in the environment it |
| replaces. |
| .Pp |
| The |
| .Fn feholdexcept |
| function is often used with |
| .Fn feupdateenv |
| or |
| .Fn fesetenv |
| to suppress spurious exceptions that occur as a result of |
| intermediate computations. |
| An example in |
| .Xr fenv 3 |
| demonstrates how to do this. |
| .Sh RETURN VALUES |
| The |
| .Fn fegetenv , |
| .Fn feholdexcept , |
| .Fn fesetenv , |
| and |
| .Fn feupdateenv |
| functions return 0 if they succeed, and non-zero otherwise. |
| .Sh SEE ALSO |
| .Xr feclearexcept 3 , |
| .Xr fenv 3 , |
| .Xr feraiseexcept 3 , |
| .Xr fesetenv 3 , |
| .Xr fetestexcept 3 , |
| .Xr fpgetmask 3 , |
| .Xr fpgetprec 3 , |
| .Xr fpsetmask 3 , |
| .Xr fpsetprec 3 |
| .Sh STANDARDS |
| The |
| .Fn fegetenv , |
| .Fn feholdexcept , |
| .Fn fesetenv , |
| and |
| .Fn feupdateenv |
| functions conform to |
| .St -isoC-99 . |
| .Sh HISTORY |
| These routines first appeared in |
| .Fx 5.3 . |