Long double (doble llarc)
Plantilla:Traducció incompleta
En C i uns atres llenguages de programació similars, un long double es referix a un tipo de senya de punt (o menge) flotant que sol ser més precís que un double. Tal i com atres tipos de menge flotant de C, este no s'adherix necessàriament al format IEEE de menge flotant.
long double en C
[editar | editar còdic]Història
[editar | editar còdic]El tipo long double estava present en l'estàndart de C de 1989, pero el soport va ser millorat en la revisió de l'estàndart de C de 1999, o C99, el qual va estendre la biblioteca estàndar per a incloure les funcions que operen en long double com sinl() i strtold().
Les constants dobles llargues són constants de punt flotant seguides del sufix "L" o "l" (L minúscula), p. eix., 0.333333333333333333L. Sense un sufix, l'evaluació depén de FLT_EVAL_METHOD.
Implementacions
[editar | editar còdic]En l'arquitectura x86, la majoria de compiladors de C implementen el long double com el tipo de senya de 80 bits de precisió estesa soportat per l'hardware x86 (a voltes almagasenat com 12 o 16 bytes per a mantindre l'alliniació de senyes), tal i com s'especifica en els estàndarts C99/C11 (IEC 60559 floating-point arithmetic (Anexe F)). Una excepció és Microsoft Visual C++ per a x86, el qual fa de long double un sinònim de double. El compilador C++ d'Intel para Microsoft Windows soporta precisió estesa, pero requerix del modificador /Qlong‑double per a que els long double es corresponguen al format de precisió estés d'hardware.[1]
Els compiladors també poden usar long double per a conseguir un format de precisió cuádruple de 128 bits. Est és el cas en el HP-UX[2] i en màquines Solaris/SPARC.[3] Actualment, este format solament s'implementa en software per carència de soport en hardware.
En algunes màquines PowerPC i SPARCv9, els long double estan implementats com a aritmètica doble-doble, a on un valor long double està considerat com la suma exacta de dos valors de precisió doble, donant a lo manco una precisió de 106 bits. En tal format, el tipo long double no conforma l'estàndart IEEE de menge flotantcita requerida. Si no, un long double seria senzillament un sinònim per a double (de precisió doble).
En el compilador C GNU, long double és una extensió de 80 bits de precisió en processadors x86 sense importar l'espai utilisat pel tipo de senya (que poden ser 96 o 128 bits). En atres arquitectura, un long double pot ser un doble-doble (per eixemple en PowerPC[4][5]) o quàdruple de 128 bits (per eixemple en SPARC).[6] Des de gcc 4.3, una precisió cuádruple és també soportada en x86, pero usant el tipo no estàndar __float128 i no el long double.[7]
A pesar de que l'arquitectura x86, i específicament el conjunt d'instruccions de menge flotant x87 per a x86, soporta operacions de 80 bits en precisió estesa, és possible de configurar el processador per a que redonege automàticament les operacions a precisió doble (o inclús simple). No obstant, en modo de precisió estesa, la precisió estesa pot ser utilisada per a efectuar càlculs intermijos generats pel compilador inclús quan els resultats finals s'almagasenen en una precisió més baixa. En gcc per a Linux, la precisió estesa de 80 bits és l'utilisada per defecte; en varis sistemes operatius BSD (FreeBSD i OpenBSD), el modo de precisió doble és l'usat per defecte, i les operacions en long double són reduïdes a precisió doble.[8] (NetBSD 7.0 i següents, pel contrari, usen la precisió estesa de 80 bits per defecte).[9] Aixina i tot, és possible a anular açò dins d'un programa individual a través de el FLDCW (floating-point lloeu control-word o "paraula de control de càrrega d'instrucció de punt flotant"). En x86_64, les variants de BSD utilisen la precisió estesa de 80 bits per defecte. Microsoft Windows en Visual C++ també posa el processador en modo de precisió doble per defecte, pero açò, de nou, pot ser anulat dins d'un programa (per eixemple en l'us de la funció _controlfp_s en Visual C++).[10] El Compilador C++ d'Intel per a x86, no obstant, habilita modo de precisió estesa per defecte.[11] En OS X, un long double és un número de precisió estesa de 80 bits.
Atres especificacions
[editar | editar còdic]En CORBA (de l'especificació 3.0, que usa el "Estàndart 754-1985 ANSI/IEEE" com a referència), "el tipo de senya long double representa un número de menge flotant IEEE estés doble, en un exponent d'a lo manco 15 bits de llongitut i una fracció en signe d'a lo manco 64 bits", en GIOP/IIOP CDR, els tipos de senyes dels quals "seguixen exactament el format estàndar IEEE per a números de menge flotant", classificant açò com lo que sembla ser un IEEE 754-2008 binary128, també conegut com un número de precisió cuádruple pero sense usar dit nom.
Referències
[editar | editar còdic]- ↑ Intel Sitie de desenrollador
- ↑ Hewlett Packard (1992). «Porting C Programs», HP-UX Portability Guide - HP 9000 Computers, 2nd edició, pp. 5-3 and 5-37.
- ↑ Sol
- ↑ Dins de Macintosh - PowerPC Numerics
- Archivat el 9 de octubre de 2012 archivat en Wayback Machine.
- ↑ 128-bit long double support routines for Darwin
- ↑ SPARC Opcions
- ↑ GCC 4.3 Notes de Lliberació
- ↑ Brian J. Gough I Richard M. Stallman
- ↑ «Significant changes from NetBSD 6.0 to 7.0».
- ↑ Ret de Desenrollador del Microsoft
- ↑ Intel C++ Documentació de Compilador
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Long double (doble largo)» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.