fbpx
Wikipedia

Long double (doble largo)

En C y otros lenguajes de programación similares, un long double se refiere a un tipo de dato de punto (o coma) flotante que suele ser más preciso que un double. Tal y como otros tipos de coma flotante de C, este no se adhiere necesariamente al formato IEEE de coma flotante.

long double en C

Historia

El tipo long double estaba presente en el estándar de C de 1989, pero el soporte fue mejorado en la revisión del estándar de C de 1999, o C99, el cual extendió la biblioteca estándar para incluir las funciones que operan en long double como sinl() y strtold().

Las constantes dobles largas son constantes de punto flotante seguidas del sufijo "L" o "l" (L minúscula), p. ej., 0.333333333333333333L. Sin un sufijo, la evaluación depende de FLT_EVAL_METHOD.

Implementaciones

En la arquitectura x86, la mayoría de compiladores de C implementan el long double como el tipo de dato de 80 bits de precisión extendida soportado por el hardware x86 (a veces almacenado como 12 o 16 bytes para mantener la alineación de datos), tal y como se especifica en los estándares C99/C11 (IEC 60559 floating-point arithmetic (Anexo F)). Una excepción es Microsoft Visual C++ para x86, el cual hace de long double un sinónimo de double. El compilador C++ de Intel para Microsoft Windows soporta precisión extendida, pero requiere del modificador /Qlong‑double para que los long double se correspondan al formato de precisión extendido de hardware.[1]

Los compiladores también pueden usar long double para conseguir un formato de precisión cuádruple de 128 bits. Este es el caso en el HP-UX[2]​ y en máquinas Solaris/SPARC.[3]​ Actualmente, este formato solo se implementa en software debido a carencia de soporte en hardware.

En algunas máquinas PowerPC y SPARCv9, los long double están implementados como aritmética doble-doble, donde un valor long double está considerado como la suma exacta de dos valores de precisión doble, dando al menos una precisión de 106 bits. Con tal formato, el tipo long double no conforma el estándar IEEE de coma flotante[cita requerida]. Si no, un long double sería sencillamente un sinónimo para double (de precisión doble).

Con el compilador C GNU, long double es una extensión de 80 bits de precisión en procesadores x86 sin importar el espacio utilizado por el tipo de dato (que pueden ser 96 o 128 bits). En otras arquitecturas, un long double puede ser un doble-doble (por ejemplo en PowerPC[4][5]​) o cuádruplo de 128 bits (por ejemplo en SPARC).[6]​ Desde gcc 4.3, una precisión cuádruple es también soportada en x86, pero usando el tipo no estándar __float128 y no el long double.[7]

A pesar de que la arquitectura x86, y específicamente el conjunto de instrucciones de coma flotante x87 para x86, soporta operaciones de 80 bits con precisión extendida, es posible de configurar el procesador para que redondee automáticamente las operaciones a precisión doble (o incluso simple). Sin embargo, en modo de precisión extendida, la precisión extendida puede ser utilizada para efectuar cálculos intermedios generados por el compilador incluso cuando los resultados finales se almacenan en una precisión más baja. Con gcc para Linux, la precisión extendida de 80 bits es la utilizada por defecto; en varios sistemas operativos BSD (FreeBSD y OpenBSD), el modo de precisión doble es el usado por defecto, y las operaciones con long double son reducidas a precisión doble.[8]​ (NetBSD 7.0 y siguientes, por el contrario, usan la precisión extendida de 80 bits por defecto).[9]​ Aun así, es posible a anular esto dentro de un programa individual a través del FLDCW (floating-point load control-word o "palabra de control de carga de instrucción de punto flotante"). En x86_64, las variantes de BSD utilizan la precisión extendida de 80 bits por defecto. Microsoft Windows con Visual C++ también pone el procesador en modo de precisión doble por defecto, pero esto, de nuevo, puede ser anulado dentro de un programa (por ejemplo con el uso de la función _controlfp_s en Visual C++).[10]​ El Compilador C++ de Intel para x86, sin embargo, habilita modo de precisión extendida por defecto.[11]​ En OS X, un long double es un número de precisión extendida de 80 bits.

Otras especificaciones

En CORBA (de la especificación 3.0, que usa el "Estándar 754-1985 ANSI/IEEE" como referencia), "el tipo de dato long double representa un número de coma flotante IEEE extendido doble, con un exponente de al menos 15 bits de longitud y una fracción con signo de al menos 64 bits", con GIOP/IIOP CDR, los tipos de datos de los cuales "siguen exactamente el formato estándar IEEE para números de coma flotante", clasificando esto como lo que parece ser un IEEE 754-2008 binary128, también conocido como un número de precisión cuádruple pero sin usar dicho nombre.

Referencias

  1. Intel Sitio de desarrollador
  2. Hewlett Packard (1992). «Porting C Programs». HP-UX Portability Guide - HP 9000 Computers (2nd edición). pp. 5-3 and 5-37. 
  3. Sol
  4. Dentro de Macintosh - PowerPC Numerics el 9 de octubre de 2012 en Wayback Machine.
  5. 128-bit long double support routines for Darwin
  6. SPARC Opciones
  7. GCC 4.3 Notas de Liberación
  8. Brian J. Gough Y Richard M. Stallman
  9. «Significant changes from NetBSD 6.0 to 7.0». 
  10. Red de Desarrollador del Microsoft
  11. Intel C++ Documentación de Compilador
  •   Datos: Q17148569

long, double, doble, largo, texto, sigue, traducción, incompleta, quieres, colaborar, wikipedia, busca, artículo, original, finaliza, esta, traducción, copia, pega, siguiente, código, página, discusión, autor, este, artículo, subst, aviso, traducción, incomple. El texto que sigue es una traduccion incompleta Si quieres colaborar con Wikipedia busca el articulo original y finaliza esta traduccion Copia y pega el siguiente codigo en la pagina de discusion del autor de este articulo subst Aviso traduccion incompleta Long double doble largo En C y otros lenguajes de programacion similares un long double se refiere a un tipo de dato de punto o coma flotante que suele ser mas preciso que un double Tal y como otros tipos de coma flotante de C este no se adhiere necesariamente al formato IEEE de coma flotante Indice 1 long double en C 1 1 Historia 1 2 Implementaciones 2 Otras especificaciones 3 Referenciaslong double en C EditarHistoria Editar El tipo long double estaba presente en el estandar de C de 1989 pero el soporte fue mejorado en la revision del estandar de C de 1999 o C99 el cual extendio la biblioteca estandar para incluir las funciones que operan en long double como sinl y strtold Las constantes dobles largas son constantes de punto flotante seguidas del sufijo L o l L minuscula p ej 0 333333333333333333L Sin un sufijo la evaluacion depende de FLT EVAL METHOD Implementaciones Editar En la arquitectura x86 la mayoria de compiladores de C implementan el long double como el tipo de dato de 80 bits de precision extendida soportado por el hardware x86 a veces almacenado como 12 o 16 bytes para mantener la alineacion de datos tal y como se especifica en los estandares C99 C11 IEC 60559 floating point arithmetic Anexo F Una excepcion es Microsoft Visual C para x86 el cual hace de long double un sinonimo de double El compilador C de Intel para Microsoft Windows soporta precision extendida pero requiere del modificador Qlong double para que los long double se correspondan al formato de precision extendido de hardware 1 Los compiladores tambien pueden usar long double para conseguir un formato de precision cuadruple de 128 bits Este es el caso en el HP UX 2 y en maquinas Solaris SPARC 3 Actualmente este formato solo se implementa en software debido a carencia de soporte en hardware En algunas maquinas PowerPC y SPARCv9 los long double estan implementados como aritmetica doble doble donde un valor long double esta considerado como la suma exacta de dos valores de precision doble dando al menos una precision de 106 bits Con tal formato el tipo long double no conforma el estandar IEEE de coma flotante cita requerida Si no un long double seria sencillamente un sinonimo para double de precision doble Con el compilador C GNU long double es una extension de 80 bits de precision en procesadores x86 sin importar el espacio utilizado por el tipo de dato que pueden ser 96 o 128 bits En otras arquitecturas un long double puede ser un doble doble por ejemplo en PowerPC 4 5 o cuadruplo de 128 bits por ejemplo en SPARC 6 Desde gcc 4 3 una precision cuadruple es tambien soportada en x86 pero usando el tipo no estandar float128 y no el long double 7 A pesar de que la arquitectura x86 y especificamente el conjunto de instrucciones de coma flotante x87 para x86 soporta operaciones de 80 bits con precision extendida es posible de configurar el procesador para que redondee automaticamente las operaciones a precision doble o incluso simple Sin embargo en modo de precision extendida la precision extendida puede ser utilizada para efectuar calculos intermedios generados por el compilador incluso cuando los resultados finales se almacenan en una precision mas baja Con gcc para Linux la precision extendida de 80 bits es la utilizada por defecto en varios sistemas operativos BSD FreeBSD y OpenBSD el modo de precision doble es el usado por defecto y las operaciones con long double son reducidas a precision doble 8 NetBSD 7 0 y siguientes por el contrario usan la precision extendida de 80 bits por defecto 9 Aun asi es posible a anular esto dentro de un programa individual a traves del FLDCW floating point load control word o palabra de control de carga de instruccion de punto flotante En x86 64 las variantes de BSD utilizan la precision extendida de 80 bits por defecto Microsoft Windows con Visual C tambien pone el procesador en modo de precision doble por defecto pero esto de nuevo puede ser anulado dentro de un programa por ejemplo con el uso de la funcion controlfp s en Visual C 10 El Compilador C de Intel para x86 sin embargo habilita modo de precision extendida por defecto 11 En OS X un long double es un numero de precision extendida de 80 bits Otras especificaciones EditarEn CORBA de la especificacion 3 0 que usa el Estandar 754 1985 ANSI IEEE como referencia el tipo de dato long double representa un numero de coma flotante IEEE extendido doble con un exponente de al menos 15 bits de longitud y una fraccion con signo de al menos 64 bits con GIOP IIOP CDR los tipos de datos de los cuales siguen exactamente el formato estandar IEEE para numeros de coma flotante clasificando esto como lo que parece ser un IEEE 754 2008 binary128 tambien conocido como un numero de precision cuadruple pero sin usar dicho nombre Referencias Editar Intel Sitio de desarrollador Hewlett Packard 1992 Porting C Programs HP UX Portability Guide HP 9000 Computers 2nd edicion pp 5 3 and 5 37 Sol Dentro de Macintosh PowerPC Numerics Archivado el 9 de octubre de 2012 en Wayback Machine 128 bit long double support routines for Darwin SPARC Opciones GCC 4 3 Notas de Liberacion Brian J Gough Y Richard M Stallman Significant changes from NetBSD 6 0 to 7 0 Red de Desarrollador del Microsoft Intel C Documentacion de Compilador Datos Q17148569Obtenido de https es wikipedia org w index php title Long double doble largo amp oldid 118118673, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos