diff options
Diffstat (limited to 'man3p/ilogb.3p')
-rw-r--r-- | man3p/ilogb.3p | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/man3p/ilogb.3p b/man3p/ilogb.3p new file mode 100644 index 000000000..6c5f8fa99 --- /dev/null +++ b/man3p/ilogb.3p @@ -0,0 +1,110 @@ +.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved +.TH "ILOGB" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" ilogb +.SH NAME +ilogb, ilogbf, ilogbl \- return an unbiased exponent +.SH SYNOPSIS +.LP +\fB#include <math.h> +.br +.sp +int ilogb(double\fP \fIx\fP\fB); +.br +int ilogbf(float\fP \fIx\fP\fB); +.br +int ilogbl(long double\fP \fIx\fP\fB); +.br +\fP +.SH DESCRIPTION +.LP +These functions shall return the exponent part of their argument \fIx\fP. +Formally, the return value is the integral part of +log_r|x| as a signed integral value, for non-zero \fIx\fP, where \fIr\fP +is the radix of the machine's floating-point +arithmetic, which is the value of FLT_RADIX defined in \fI<float.h>\fP. +.LP +An application wishing to check for error situations should set \fIerrno\fP +to zero and call +\fIfeclearexcept\fP(FE_ALL_EXCEPT) before calling these functions. +On return, if \fIerrno\fP is non-zero or +\fIfetestexcept\fP(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) +is non-zero, an error has occurred. +.SH RETURN VALUE +.LP +Upon successful completion, these functions shall return the exponent +part of \fIx\fP as a signed integer value. They are +equivalent to calling the corresponding \fIlogb\fP() function and +casting the returned value +to type \fBint\fP. +.LP +If \fIx\fP is 0, \ a domain error shall occur, and +the value FP_ILOGB0 shall be returned. +.LP +If \fIx\fP is \(+-Inf, \ a domain error shall occur, and +the value {INT_MAX} shall be returned. +.LP +If \fIx\fP is a NaN, \ a domain error shall occur, and +the value FP_ILOGBNAN shall be returned. +.LP +If the correct value is greater than {INT_MAX}, {INT_MAX} shall be +returned and a domain error shall occur. +.LP +If the correct value is less than {INT_MIN}, {INT_MIN} shall be returned +and a domain error shall occur. +.SH ERRORS +.LP +These functions shall fail if: +.TP 7 +Domain\ Error +The \fIx\fP argument is zero, NaN, or \(+-Inf, or the correct value +is not representable as an integer. +.LP +If the integer expression (math_errhandling & MATH_ERRNO) is non-zero, +then \fIerrno\fP shall be set to [EDOM]. If the +integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, +then the invalid floating-point exception shall be raised. +.sp +.LP +\fIThe following sections are informative.\fP +.SH EXAMPLES +.LP +None. +.SH APPLICATION USAGE +.LP +On error, the expressions (math_errhandling & MATH_ERRNO) and (math_errhandling +& MATH_ERREXCEPT) are independent of +each other, but at least one of them must be non-zero. +.SH RATIONALE +.LP +The errors come from taking the expected floating-point value and +converting it to \fBint\fP, which is an invalid operation in +IEEE\ Std\ 754-1985 (since overflow, infinity, and NaN are not representable +in a type \fBint\fP), so should be a domain +error. +.LP +There are no known implementations that overflow. For overflow to +happen, {INT_MAX} must be less than +LDBL_MAX_EXP*\fIlog2\fP(FLT_RADIX) or {INT_MIN} must be greater than +LDBL_MIN_EXP*\fIlog2\fP(FLT_RADIX) if subnormals are not +supported, or {INT_MIN} must be greater than (LDBL_MIN_EXP-LDBL_MANT_DIG)*\fIlog2\fP(FLT_RADIX) +if subnormals are supported. +.SH FUTURE DIRECTIONS +.LP +None. +.SH SEE ALSO +.LP +\fIfeclearexcept\fP() , \fIfetestexcept\fP() , \fIlogb\fP() , \fIscalb\fP() +, the Base Definitions volume of +IEEE\ Std\ 1003.1-2001, Section 4.18, Treatment of Error Conditions +for +Mathematical Functions, \fI<float.h>\fP, \fI<math.h>\fP +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. In the +event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . |