jueves, 17 de abril de 2008

Revienta tu Hoja de Cálculo


Nos ha llamado la atención en nuestra entrada anterior el comentario de juan en el que decía que el máximo factorial que podía calcular el programa Excel era el de 170 (cuyo resultado es 7,2574 x 10^306)

Eso nos ha animado a comprobarlo (es cierto), comprobar que la (estupenda) hoja de cálculo de OpenOffice.org tiene ese mismo tope y tratar de buscar operaciones que rocen esos límites.

Por ejemplo, en potencias de 9 , la máxima que admiten (de nuevo coinciden) ambas hojas de cálculo es

9^323 = 1,6609 x 10^308

curiosamente por encima del tope que habíamos leído que tiene Excel, 9.9E+307 (es decir, 9,9 x 10^307).

¿Se podrán superar esos límites? Y, sobre todo, ¿habrá otras operaciones elegantes y no forzadas que lleguen allí justo al límite donde no llega la Hoja de Cálculo?

16 comentarios:

goyo lekuona dijo...

Hola a todos. Bonito tema ;-)

COmo curiosidad al respecto, y antes de que tenga un tiempo para trabajarlo
Si pedimos a Excel que nos calcule, como dice Juan Luis, 9^323 nos da sin problemas 1,6609E+308, pero si escribes tu directamente ese número NO LO ACEPTA. Para el eso es un texto. Lo cual no ocurre con números en notación científica con magnitud menor que 308. Quiero decir, si escribes en una casilla 1,6609E+303 lo acepta como número ( y por tanto lo coloca alineado a la derecha de la casilla ) pero si le pones la magnitud mayor que 307 entonces lo toma como texto ( claramente te lo alinea a la izquierda de la casilla

Curioso, no? Y mas teniendo en cuenta que algunos los acepta como resultado de operaciones, pero no como número introducido directamente

NaCl U2 Yo!

goyo lekuona dijo...

Si, se puede superar ese limite. Que por como se suele almacenar la informacion en ele ordenador imagino que el limite tendra que ver con la base 2. BINGO! PArece que el tope anda por el 2^1024 (cargados de interes informatico esos númeritos ;-)) Si le pedimos que realice esa operación nos da error de Número. Pero si le pedimos que calcule:
2^1023,99999999999 ahí si que no da problemas y calcula como un campeon que es
1,79769313484981E+308. Y dice que el logaritmo en base 2 ES 1024 |-O

Pero como decia antes no nos deja introducir ese numerito :-O

NaCl U2 Yo!

Vaya con el temita, parece que me ha picado je je je

goyo lekuona dijo...

Bueno, ya he conseguido un ñata con OpenOffice, y aunque el límite parece el mismo, Calc si permite introducir 1,55E+308 como número

Doy fe, el notario, GoYo ( simepre dando la nota = notario ;-) )

NaCl U2 Yo!

goyo lekuona dijo...

Puede que el límite esté en el número 1,79769313486231E+308, no?

NaCl U2 Yo!

Juan Luis dijo...

Ya sabía yo que te gustaría esta entrada, Goyo.

Y, sí, tuve problemas al escribir directamente esos números grandes que mencionas

Juan Luis dijo...

Muy interesante lo de 2^1024, la verdad, yo "a mano" (multiplicando por uno coma algo sucesivamente) sí he superado el 1,80 E+308 (pero ya no me preguntes cómo, ¡no guardé el archivo!)

padawan dijo...

curiosa anotación, el mayor número que se puede utilizar viene definido por los estándares de representación binaria de IEEE. En una plataforma de 32 bits, es:
max(double)= 1.79769e+308

no sé si en Excel hay soporte ya para números de 64 bits, con lo cual el mayor número debería ser bastante mayor.

padawan dijo...

aquí está la explicación a estos límites :)

http://en.wikipedia.org/wiki/IEEE_754#Double-precision_64_bit

Juan Luis dijo...

Gracias, Padawan, eso explica las coincidencias en los límites de los distintos programas...

goyo lekuona dijo...

En efecto, programas destinados a los calculos matematicos trabajan con muchiiiisima mas precision ( P.E. 2^1024 = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216

Y me surge una nueva duda. Y el valor mas pequeño? que ese si que me suele aparecer frecuentemente al trabajar con la hoja de calculo ( intentare encontrar un ejemplo ) ya que muchas veces en lugar de 0 aparece el valor en notación científica nosecuantos E - mucho ;-)

NaCl U2 Yo!

Juan Luis dijo...

Según la entrada que citaba Padawan sería ±2^(−126) ≈ ±1.175494351×10E−38...

goyo lekuona dijo...

Ya, pero el casdo es que ( y escribo de memoria) el erro anda por el orden de magnitud -15, que queda bastante lejos de eso -38

Si es que son un pozo de sorpresas estas hojas de cálculo ;-)

NaCl U2 Yo!

P.S. espero conseguir un ratito para encontrar alguno de los ejemplos de ese error, que sorprendentemente son mas habituales de lo que cabría esperar :-O

goyo lekuona dijo...

Buneo, ya he encontrado un ejemplo para Excel ( tarde pero seguro ;-))

En la casilla A1 ponemos 0,2 y en la B1 -3

Luego en la casilla B2 voy a poner un cálculo que repetire en las casillas inferiores. Esto es, en la casilla B2 escribo =B2+$A$1 Lo acepto y le digo que me lo copie en las 20 casillas inferiores ( hasta la B22 y resulta que en la casilla B16, donde claramente debería dar 0, resulta que da
3,88578058618805E-16 que si bien es próximo NO ES CERO!!!!

Decirme si os funciona, please. Bueno, en este caso debería decir si NO os funciona ;-)

NaCl U2 Yo!

Juan Luis dijo...

¡Es cierto! Bueno, creo que te refieres a poner en B2 la fórmula =B1+$A$1 (no =B2+$A$1) y efectivamente comete ese error.

Y, tachín-tachín, la hoja de OpenOffice no comete ese error (a lo mejor sí otros)

Jose dijo...

Hablando de excel...
La versión que tengo (Office Xp) no acepta el simple texto:
SAB
el cual lo cambia con SAP, una verdadera rareza, ¿alguien sabe a qué se debe?
saludos
http://pepedosmil.blogia.com

Juan Luis dijo...

La versión que yo tengo no... Eso tiene aspecto de corrección automática, que alguien haya incluido esa palabra.