1.\" Copyright (c) 2004 David Schultz <das@FreeBSD.org> 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd March 16, 2005 28.Dt FEENABLEEXCEPT 3 29.Os 30.Sh NAME 31.Nm feenableexcept , 32.Nm fedisableexcept , 33.Nm fegetexcept 34.Nd floating-point exception masking 35.Sh LIBRARY 36.Lb libm 37.Sh SYNOPSIS 38.In fenv.h 39.Fd "#pragma STDC FENV_ACCESS ON" 40.Ft int 41.Fn feenableexcept "int excepts" 42.Ft int 43.Fn fedisableexcept "int excepts" 44.Ft int 45.Fn fegetexcept "void" 46.Sh DESCRIPTION 47The 48.Fn feenableexcept 49and 50.Fn fedisableexcept 51functions 52unmask and mask (respectively) exceptions specified in 53.Fa excepts . 54The 55.Fn fegetexcept 56function 57returns the current exception mask. 58All exceptions are masked by default. 59.Pp 60Floating-point operations that produce unmasked exceptions will trap, and a 61.Dv SIGFPE 62will be delivered to the process. 63By installing a signal handler for 64.Dv SIGFPE , 65applications can take appropriate action immediately without 66testing the exception flags after every operation. 67Note that the trap may not be immediate, but it should occur 68before the next floating-point instruction is executed. 69.Pp 70For all of these functions, the possible types of exceptions 71include those described in 72.Xr fenv 3 . 73Some architectures may define other types of floating-point exceptions. 74.Sh RETURN VALUES 75The 76.Fn feenableexcept , 77.Fn fedisableexcept , 78and 79.Fn fegetexcept 80functions return a bitmap of the exceptions that were unmasked 81prior to the call. 82.Sh SEE ALSO 83.Xr sigaction 2 , 84.Xr feclearexcept 3 , 85.Xr feholdexcept 3 , 86.Xr fenv 3 , 87.Xr feupdateenv 3 88.Sh BUGS 89Functions in the standard library may trigger exceptions multiple 90times as a result of intermediate computations; 91however, they generally do not trigger spurious exceptions. 92.Pp 93No interface is provided to permit exceptions to be handled in 94nontrivial ways. 95There is no uniform way for an exception handler to access 96information about the exception-causing instruction, or 97to determine whether that instruction should be reexecuted 98after returning from the handler. 99