• No results found

En una reuni´on se plantea la siguiente pregunta: “¿Cu´anto vale π?”

El ingeniero dice: “Es aproximadamente 3 y 1/7.” El f´ısico responde: “Es 3.141592.”

El matem´atico piensa un momento, y replica: “Es igual a π.”

(Del folklore) Hemos mostrado la posibilidad te´orica de representar los n´umeros reales mediante sucesiones de d´ıgitos en distintas bases. Ahora vamos a enfrentarnos con su representaci´on pr´actica en un orde- nador, con las limitaciones efectivas que la realidad impone.

6.2.1. N´umeros de m´aquina

El conjunto de los n´umeros reales no puede representarse plenamente en un ordenador (¡ni siquiera el de los n´umeros enteros!). Si queremos guardar las cifras decimales (o m´as frecuentemente, binarias) de un n´umero en un ordenador, s´olo disponemos de un n´umero finito de ‘huecos’ para hacerlo. Podemos, simplemente, ignorar las cifras del desarrollo a partir de un cierto lugar; pero se aprovecha mejor el espacio evitando “ceros innecesarios” como en la ‘notaci´on cient´ıfica’, con una representaci´on en punto flotante:

n´umero = signo × mantisa × baseexponente

Por ejemplo, para la constante de gravitaci´on universal G = 6.673 × 10−11, la mantisa es 6.673, la base es 10 y el exponente −11.

Este y otros ejemplos de magnitudes muy grandes o muy peque˜nas, como

Masa del electr´on 9.109 × 10−28 g.

Masa del sol 1.989 × 1030 kg.

Constante de Plank 6.626 × 10−34 J·s N´umero de Avogadro 6.022 × 1023 mol−1 ponen de manifiesto el ahorro de cifras que conlleva esta notaci´on.

Pero cada n´umero admite infinitas representaciones de este tipo:

−111/2 = −55.5 × 100= −5.55 × 101 = −0.555 × 102 = . . ., o tambi´en −111/2 = −555 × 10−1 = −5550 × 10−2= . . .

Para tener unicidad hace falta normalizar la representaci´on. Habitualmente, como hemos hecho en los ejemplos de notaci´on cient´ıfica,

el primer d´ıgito no nulo de la mantisa aparece a la izquierda del punto, la parte entera del valor absoluto consta de una sola cifra: −111/2 = −5.55 × 101.

Esto excluye el n´umero 0, que queda como excepci´on, y ha de ser representado aparte. En matem´aticas es tambi´en frecuente otra normalizaci´on,

colocando la primera cifra no nula inmediatamente despu´es del punto; el valor absoluto de la mantisa es siempre menor o igual que 1 y su parte entera es nula:

−111/2 = −0.555 × 102.

La diferencia entre ambas normalizaciones es inesencial: todo se reduce a sumar o restar 1 al exponente. Lo importante es que el punto decimal flota para eliminar los ceros ‘innecesarios’:

La normalizaci´on ahorra espacio: Si se emplea base 2 en vez de base 10, como todas las mantisas comenzar´an por hh1. etc.ii, podemos sobreentender no s´olo el punto, sino tambi´en el 1 (‘t´ecnica del bit fantasma’). En la segunda normalizaci´on, todas las mantisas —en cualquier base— van a comenzar porhh0. etc.ii, lo que hace innecesario explicitar el 0 y el punto.

Finalmente, el tama˜no de las palabras del ordenador fuerza a limitar:

la precisi´on, la cantidad p de d´ıgitos disponibles para colocar en ellos la mantisa;

la cantidad p0 de d´ıgitos disponibles para el exponente, que estar´a por tanto comprendido entre un valor m´ınimo y un valor m´aximo.

Con tales condicionantes, fijada una base β, los n´umeros de m´aquina , verdaderamente dis- ponibles en el ordenador, ser´an

y = ±βE  d1+ d2 β + d3 β2 + · · · + dp βp−1  ,

donde cada d´ıgito dk satisface 0 ≤ dk ≤ β − 1 y d1 6= 0, y el exponente E toma sus valores entre un m´ınimo Emin y un m´aximo Emax.

Paralelamente, con la segunda normalizaci´on obtendr´ıamos

y = ±βe d1 β + d2 β2 + · · · + dp βp  ,

con 0 ≤ dk ≤ β − 1 y d1 6= 0, y emin ≤ e ≤ emax. Se pasa de una a otra, por tanto, tomando e = E + 1. Ambas son equivalentes, en el sentido de que generan exactamente los mismos n´umeros (con la relaci´on se˜nalada entre los exponentes, y con Emin= emin− 1, Emax= emax− 1).

A´un as´ı:

— hay multitud de implementaciones posibles — cada fabricante elige la que mejor le parece

— esto dificulta enormemente la transportabilidad de los programas de c´alculo. Para unificar, se han propuesto diversas estandarizaciones:

norma IEEE 754(completada con laIEEE 854); denominada tambi´en IEC 559. Es la m´as utilizada. Hay en la red ‘applets’ que muestran el formato archivado por el ordenador ([2]). La normalizaci´on elegida para la mantisa (denominada significando en esta norma) es la primera, d1.d2. . . dp, con β = 2 o β = 10 como bases permitidas.

norma ISO/IEC 10967-1 Language Independent Aritmetic, Part 1 [LIA-1], posterior y menos

restrictiva. Usa la segunda normalizaci´on 0.d1d2. . . dp para la mantisa (denominada ahora fracci´on), y admite cualquier base β que sea un n´umero natural par.

Sistemas num´ericos en punto flotante

Para analizar las dificultades y la complejidad de la representaci´on y manejo en el ordenador de n´umeros en punto flotante, se establecen ‘modelos ideales’, que sean ‘simples pero realistas’. Siguiendo a Higham (v. [Hig] §2.1, pp. 40 y ss.), usaremos lo que ´el denomina sistemas num´ericos

en punto flotante.

Previamente, notemos: cuando escribimos

y = ±βe d1 β + d2 β2 + · · · + dp βp  , la fracci´on f = d1 β + d2 β2 + · · · + dp

βp se puede representar tambi´en como m × β

−p, donde m es un entero de p d´ıgitos del intervalo [βp−1, βp− 1]; concretamente m = d1βp−1+ d2βp−2+ · · · + dp. As´ı

Por ser la notaci´on m´as c´omoda, ´esta es la forma de los valores que vamos a usar para definir los sistemas num´ericos en punto flotante.

Definici´on 6.2.1. Un sistema num´erico en punto flotante es un subconjunto finito de R, F = F (β, p, emin, emax), caracterizado por cuatro par´ametros enteros:

β ∈ Z (la base o radix de F ) • p ∈ Z (la precisi´on de F )

• emin ∈ Z (el menor exponente de F ) • emax∈ Z (el mayor exponente de F )

Dados valores espec´ıficos de β, p, emin, emax, se define

FN = {y = ±m × βe−p : m, e ∈ Z, βp−1≤ m ≤ βp− 1, emin≤ e ≤ emax},

y finalmente

F = {0} ∪ FN El mayor y el menor n´umero positivo de F son

f max := m´ax{y ∈ F : y > 0} = βemax(1 − β−p)

f minN := m´ın{y ∈ FN : y > 0} = βemin−1

Llamaremos rango de F al conjunto [−f max, −f minN] ∪ {0} ∪ [f minN, f max] (que contiene a F estrictamente).

N´otese que ahora la mantisa m de un n´umero y = 0.d1d2. . . dp × βe de FN es el entero d1d2. . . dp (escritos en base β).

Llamaremos a d1 eld´ıgito m´as significativo y a dp el d´ıgito menos significativo de y.

En la norma LIA-1, los par´ametros β y p han de satisfacer

β ≥ 2 y p ≥ 2,

y β tiene que ser par.

As´ı mismo, “para que haya bastantes elementos en F ”, los par´ametros emin, emax y p han de satisfacer

p − 2 ≤ −emin ≤ βp− 1, p ≤ emax≤ βp− 1.

En IEEE 754 y 854 se consideran cuatro formatos distintos: precisi´on simple, precisi´on doble, precisi´on simple extendida, precisi´on doble extendida, con valores para los par´ametros (ver [Hig],

p. 41):

formato β p emin emax

IEEE simple 2 24 −125 128

IEEE doble 2 53 −1021 1024

IEEE simple extendida 2 ≥ 32 ≤ −1021 ≥ 1024 IEEE doble extendida 2 ≥ 64 ≤ −16381 ≥ 16384

Ejemplos

1.- Si β = 2, p = 5 [= 22 + 1], y = 11/2 = 22+ 1 + 1/2 = 23(2−1+ 2−3+ 2−4), tendr´ıamos (con mantisa y exponente en base 2, escrito el cero como O y el uno como I para distinguir) y = O.IOIIO × 2II = IOIIO × 2II−IOI; la mantisa m es IOIIO y el exponente e es II.

2.- ‘Minimodelo’ con β = 2, p = 3, emin= −1, emax= 3. Los n´umeros no negativos de F ser´ıan (en escritura decimal) el 0 y fracci´on 1/2 1/2 + 1/8 1/2 + 1/4 1/2 + 1/4 + 1/8 exponente 0.25 0.3125 0.3750 0.4375 × 2−1 0.5 0.625 0.750 0.875 × 20 1.0 1.25 1.50 1.75 × 21 2.0 2.5 3.0 3.5 × 22 4.0 5.0 6.0 7.0 × 23

que se distribuyen gr´aficamente as´ı:

0 0.25 0.5 1.0 2.0 3.0 4.0 5.0 6.0 7.0

Junto con sus opuestos (los sim´etricos respecto del origen) forman el sistema F = F (2, 3, −1, 3). Este ejemplo ilustra c´omo el espaciado de los n´umeros de F salta un factor 2 (= β) con cada potencia de 2 (= β).

6.2.2. Aproximaci´on por redondeo

Elegido un determinado sistema num´erico en punto flotante para implementar en el ordenador, el resto de los n´umeros reales (¡casi todos!) no existen para ´el. Esta situaci´on no es nueva en absoluto: cada vez que hemos usado un valor num´erico de π, hemos puesto π = 3.14, o π = 3.1416, o π = 3.141592654 (cuando disponemos de calculadora); no hemos podido manejar su ‘valor exacto’, que, como dec´ıa el matem´atico, ‘es π’. La realidad fuerza inevitablemente a tomar aproximaciones, por lo que, si no podemos evitar los errores que generan, tratemos al menos de minimizarlos.

Eso hacemos cuando ponemos π = 3.1416 (aproximaci´on por exceso) y no π = 3.1415 (aproxi- maci´on por defecto o por corte): tomamos el valor m´as pr´oximo a π entre los que tienen cinco cifras decimales.

Para simplificar(*), definiremos:

Definici´on 6.2.2 (Redondeo y desbordamiento.). Dado F = F (β, p, emin, emax), elredondeo ( respecto de F ) es la aplicaci´on f l : R → F ∪ {overflow, underflow} dada por

f l(x) = overflow si |x| > f max = m´ax F (hay un desbordamiento por exceso)

f l(x) = underflow si 0 < |x| < f minN = m´ın{|y| : y ∈ F, y 6= 0} (hay un desbordamiento por defecto).

f l(x) = elemento de F m´as pr´oximo a x si x est´a en el rango de F .

Cuando haya dos n´umeros en F a la misma distancia de x, convendremos en tomar como f l(x) el que tenga el ´ultimo d´ıgito dp par.

(*)

La norma IEEE 754 contempla distintos modos de redondeo: redondeo hacia +∞ (round down), redondeo hacia −∞ (round up), redondeo hacia 0 (round towards zero) y redondeo al m´as pr´oximo (round to nearest ). Ver [Gold]

Ejercicio. Para x, y en el rango de F , (i) x ≤ y implica f l(x) ≤ f l(y); (ii) f l(−x) = − f l(x);

(iii) f l(βn· x) = βn· f l(x) (supuesto βn· x en el rango de F ).

Ejemplos. (1) En nuestro ‘minimodelo’ con β = 2, p = 3, emin = −1, emax = 3, se produce desbordamiento por exceso siempre que |x| > 7, y por defecto si 0 < |x| < 0.25.

underflow overflow

0 0.25 0.5 1.0 2.0 3.0 4.0 5.0 6.0 7.0

Para x = 4.5, ser´ıa f l(x) = 4; para x = 5.5, ser´ıa f l(x) = 6 (¿por qu´e?). (2) Para β = 10, p = 6:

a = 0.31415926525 . . . × 101 f l(a) = 0.314159 × 101 b = −0.81412781 f l(b) = −0.814128 × 100 c = 0.112399972 f l(c) = 0.124000 × 100 d = 0.999999721 f l(d) = 0.100000 × 101

Obs´ervese c´omo el ´ultimo d´ıgito de la mantisa de b ha sido modificado. El cambio puede afectar incluso a varios d´ıgitos (como en c) y a veces hasta al exponente, como en el ejemplo d.

Medidas del error de redondeo

Al redondear un n´umero, es decir, al sustituir un x ∈ R por f l(x) como valor aproximado, cometemos un error cuyo tama˜no conviene saber controlar. Puesto que cada x en el rango de F que no pertenezca a F estar´a en un intervalo (y1, y2) con extremos en F y uno s´olo, y f l(x) ser´a precisamente uno de esos extremos,

y1 —————————————— y2

x

el valor de | f l(x) − x| = m´ın{|x − y| : y ∈ F } ser´a, en el peor de los casos, la mitad de la longitud y2− y1 del intervalo. Basta, por tanto, controlar el espaciado entre los n´umeros de F . En general, se observa que el espaciado es uniforme entre potencias consecutivas de β, y que se multiplica por β al saltar a una nueva potencia de β.

Para concretar m´as, se utiliza el ´epsilon de la m´aquina, que es la distancia M desde 1.0 al siguiente n´umero de F m´as grande que ´el. Por tanto,

Definici´on 6.2.3. ´Epsilon de la m´aquina . Para un sistema num´erico en punto flotante F = F (β, p, emin, emax), el´epsilon de la m´aquina es el n´umero

M = β1−p,

Por tanto, M es el espaciado de los n´umeros en punto flotante entre 1.0 y β, mientras que el espaciado de los n´umeros entre 1.0 y 1/β es β−p= M/β. En general,

Lema 6.2.4. La distancia entre un n´umero en punto flotante normalizado y y otro n´umero en punto flotante normalizado adyacente a y es como m´ınimo β−1M|y| y como m´aximo M|y| (salvo que uno de ellos sea cero).

Pero seg´un dice [Hig], ‘la cantidad m´as ´util asociada con F , que est´a por todas partes en el

mundo del an´alisis de los errores de redondeo’, es la llamada unidad de redondeo, que no es otra cosa que la mitad del ´epsilon de la m´aquina.

Definici´on 6.2.5. Dado un sistema num´erico en punto flotante F = F (β, p, emin, emax), el n´umero u = 1

1−p= 1

2M se llama unidad de redondeo del sistema F .

En el est´andar IEEE con simple precisi´on se tiene u = 2−24≈ 5.96 × 10−8; en doble precisi´on, u = 2−53≈ 1.11 × 10−16.

A partir del lema anterior, se obtiene:

Proposici´on 6.2.6. Si x ∈ R est´a en el rango de F , entonces

| f l(x) − x| ≤ u |x| = 1 2β 1−p|x|; precisando m´as, f l(x) = x(1 + δ), |δ| < u = 1 2β 1−p.

Demostraci´on. Ver [Hig], p. 42, Th. 2.2.

Esta proposici´on nos da cotas superiores del error absoluto y del error relativo en la aproxima- ci´on de x por f l(x). Recordamos la definici´on de estos conceptos.

Definici´on 6.2.7. Sea x un n´umero real. Six es otro n´e umero real, que tomamos como una aproxi- maci´on de x, se llama error absoluto (de la aproximaci´on) a la diferencia

Ea(x) = |x −x|,e

y error relativo (cuando x 6= 0) al cociente

Er(x) = Ea(x) |x| = |x −x|e |x| = 1 −xe x = e x x − 1 .

As´ıx = x + α con |α| = Ee a(x); y para x 6= 0,x = x(1 + ρ) con |ρ| = Ee r(x).

La proposici´on 6.2.6 significa, por tanto, que el error relativo del redondeo es siempre estricta- mente menor que la unidad de redondeo.

Nota. En algunos textos, el error se expresa en t´erminos de la unidad en el ´ultimo lugar, que se define para un y ∈ F por

ulp(y) = ulp(±0.d1d2. . . dp× βe) = 0.00 . . . 01 × βe= βe−p

(ulp: unity in the last place). As´ı, por ejemplo, si F corresponde a β = 10 y p = 3, y se redondea .0314159 a .314 × 10−1, entonces hay un error de .159 unidades en el ´ultimo lugar. Dada la distri- buci´on de los elementos de F , es preferible usar el error relativo, m´as preciso; mientras que para x = 0.9994999999 tendr´ıamos f l(x) = 0.999 × 100, con ulp(f l(x)) = 10−3 y un error de 0.4999999 ulp ≈ 0.5 ulp, el error relativo es 0.0005002502252 ≈ 0.1u, y sin embargo para x = 1.005 ser´ıa f l(x) = 0.100 × 101, con ulp(f l(x)) = 10−2, un error de 0.5 ulp igualmente, pero el error relativo correspondiente ser´ıa 0.004975124378 ≈ u, aproximadamente diez veces mayor que el anterior (este es el fen´omeno llamado wobbling precision, ‘precisi´on bamboleante’ u ‘oscilante’).