frexp
, , frexpf
, frexpl
Obtiene la mantisa y el exponente de un número de punto flotante.
Sintaxis
double frexp(
double x,
int *expptr
);
float frexpf(
float x,
int * expptr
);
long double frexpl(
long double x,
int * expptr
);
#define frexpl(X, INT_PTR) // Requires C11 or higher
float frexp(
float x,
int * expptr
); // C++ only
long double frexp(
long double x,
int * expptr
); // C++ only
Parámetros
x
Valor de punto flotante.
expptr
Puntero al exponente de entero almacenado.
Valor devuelto
frexp
devuelve la mantisa. Si x
es 0, la función devuelve 0 para la mantisa y el exponente. Si expptr
es NULL
, el controlador de parámetros no válidos se invoca como se describe en Validación de parámetros. Si la ejecución puede continuar, esta función establece errno
en EINVAL
y devuelve 0.
Comentarios
La frexp
función divide el valor de punto flotante (x
) en una mantisa () y un exponente (m
n
), de modo que el valor absoluto de m
es mayor o igual que 0,5 y menor que 1,0 y = x
m
* 2.n
El exponente de entero n
se almacena en la ubicación a la que apunta expptr
.
Dado que C++ admite sobrecargas, puede llamar a las sobrecargas de frexp
. En un programa de C, a menos que use la <macro tgmath.h> para llamar a esta función, frexp
siempre toma un double
y un int
puntero y devuelve un double
.
Si usa la macro <tgmath.h>frexp()
, el tipo del argumento determina qué versión de la función se selecciona. Consulte Matemáticas de tipo genérico para obtener más información.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Función | Encabezado necesario |
---|---|
frexp , , frexpf , frexpl |
<math.h> |
frexp Macro |
<tgmath.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_frexp.c
// This program calculates frexp( 16.4, &n )
// then displays y and n.
#include <math.h>
#include <stdio.h>
int main( void )
{
double x, y;
int n;
x = 16.4;
y = frexp( x, &n );
printf( "frexp( %f, &n ) = %f, n = %d\n", x, y, n );
}
frexp( 16.400000, &n ) = 0.512500, n = 5
Vea también
Compatibilidad con cálculos matemáticos y el punto flotante
ldexp
modf
, , modff
, modfl