Sigo con Forth, tanto con PFE como con eforth. Para PFE tengo ~/.pferc para dejarlo equivalente a las funciones raras de for..loop en EForth: .( pasa a la línea 50 ) S" FLOATING" ENVIRONMENT? S" FLOATING-EXT" ENVIRONMENT? S" HELP" ENVIRONMENT? S" EDITOR" ENVIRONMENT? S" SOCKET" ENVIRONMENT? S" GFORTH" ENVIRONMENT? 0 CONSTANT FALSE -1 CONSTANT TRUE : 0SP DEPTH ?DUP IF 0 DO DROP LOOP THEN ; : >MARK ( --A ) HERE 0 , ; : AHEAD ( --A ) COMPILE branch >MARK ; IMMEDIATE : AFT ( a --a A ) DROP [COMPILE] AHEAD [COMPILE] BEGIN SWAP ; IMMEDIATE : FOR ( RUNTIME: N -- ) COMPILE ABS \ NO NEGATIVES COMPILE LIT 0 , COMPILE SWAP [COMPILE] ?DO ; IMMEDIATE : NEXT COMPILE LIT -1 , [COMPILE] +LOOP ; IMMEDIATE MARKER CLEAR-DICTIONARY \ : FACT DUP 1 > IF DUP 1 - RECURSE * ELSE DROP 1 THEN ; : GCD BEGIN DUP WHILE TUCK MOD REPEAT DROP ; : LCM 2DUP * ABS -ROT GCD / ; : ROUND% 10 */ 5 + 10 / . ; \ : FACT ?DUP IF DUP 1 - RECURSE * ELSE 1 THEN ; : PI* 355 113 */ ; : PI/ 113 355 */ ; : BINOM ( N1 N2 -- ND ) \ N K --> C(N,K) DUP 0= IF 2DROP 1 S>D ELSE 2DUP 1- SWAP 1- SWAP RECURSE 2SWAP M*/ THEN ; 0sp Como véis tambien tengo definidos pi* y pi/, aunque no escalen con la precisión deseada. Pero hay otras aproximaciones en Starting Forth: pi: 1.068.966.896 / 340.262.731 introduciendo dobles en una máquina de 16 bit no escalará lo suficiente usando m*/, pero sí que se puede usar si existe el convertir el entero a doble con s>d, operer con dobles y volver de vuelta. Pero eso sería para una precisión astronómica, y nunca mejor dicho, tanto por las magnitudes como por las necesidades de la NASA. En otro orden de cosas, empecé a leer el Calculus Made Easy, pero la revisión por el gran matemático Martin Gardner, aunque sea un filósofo dedicado a la matemática recreativa y el cálculo infinitesimal se le haya hecho bola. De ahí que re-colaborara en el libro aprendiendo él el cálculo. Martin se quejaba de que el cálculo inf. actual estaba enseñado con una complejidad apabullante, hecho para resolverse simbólicamente con computadoras y no con lápiz y papel. Con simbólicamente me refiero a sustituir expresiones por equivalentes, es decir, la derivación de seno, coseno y demás razones trigonométricas hace que de una se pase a otra equivalente. Y muchos de los ejerccios como dice Gardner no están para hacerse de forma 'normal' en un cuaderno sin volverse loco, si no con programas informáticos hechos en Lisp o parecidos donde no calculan el resultado como tal, si no que te lo 'vomitan'. Sin duda ese hombre era más fan de las matemáticas discretas con operaciones aritméticas que el jugar con infinitesimales y mareantes curvas. No era el hombre fan de complejidades, lo mismo que Chuck More usando enteros y racionales con enteros en vez de sesudas operaciones algebráicas. Seguramente usaría sumatorias en vez de integrales y para los voltajes en los robots de la nasa usaría umbrales discretos en vez de una onda para analizar una seÑal es su plenitud; pero este mundo es *digital* y si los datos concuerdan... al carajo el leer la onda completa si lo que te interesa es una franja paraq recibir o no el bit. Volvamos al libro. En Forth existe una librería científica; pero es más para operar con complejos, resolver álgebra con funciones definidas y cálculo bruto. no va a resolverte las ecuaciones, solo cuadráticas y alguna integral por allá. El resto te toca a tí, al contrario que un Common Lisp con una suite entera llamada Maxima que derivó de Macsyma, un conjunto de ficheros Lisp para resolver como dije ecuaciones de forma simbólica. ¿Es mejor este enfoque, el usar un pack de algoritmos en Forth vs dejar que Maxima lo resuelva todo? Opino que si sabes qué algoritmos aplicar, Máxima es un poco matar moscas a cañonazos. Forth en su "Scilib" ya tiene un fichero para integrales y para FFT. Tú eres el responsable de establecer las variables y el de simplificar; Forth como mucho te escuperá el resultado. Es lo mejor de ambos mundos. Puedes usar ficheros de FFT o funciones para operar con números complejos y solo esos, reduciendo enormemente el código requerido. Sí, de forma simbólica es mucho más potente y se reducen quizá errores. Pero el de Forth está documentado y te dice hasta el umbral de error. Antes de terminar, me gustaría decir que antes que usar números flotantes, lo mejor sería operar con fracciones hasta acostumbrase. Y si puedes en una máquina vieja con Forth, mejor.