Articulo de referencia

UBÁSICO

UBASIC es un intérprete BASIC gratuito ( software de dominio público sin código fuente ) escrito por Yuji Kida en la Universidad Rikkyo en Japón , especializado en cálculo matem...

UBASIC es un intérprete BASIC gratuito ( software de dominio público sin código fuente ) escrito por Yuji Kida en la Universidad Rikkyo en Japón , especializado en cálculo matemático .

Características

UBASIC es un lenguaje listo para ejecutarse que no necesita ser configurado con otro lenguaje avanzado, lo cual es un problema común con los lenguajes matemáticos de varios dígitos. Se ejecuta en DOS o en un cuadro DOS bajo el shell DOS , Microsoft Windows , etc. Está especializado para teoría de números , pruebas de primalidad , factorización y números enteros grandes (hasta 2600 dígitos). Al ser una implementación de BASIC, es fácil leer programas sin tener que hacer un estudio extenso, ya que BASIC es un lenguaje que tiene una estructura y una sintaxis cercanas al álgebra ordinaria . Los archivos de ayuda tienen artículos y lecciones para principiantes.

UBASIC tiene un editor en línea incorporado con varias ayudas para la depuración. Puede mostrar referencias cruzadas a líneas de llamada, líneas que contienen una variable y listas de variables/matrices. Puede renumerar líneas, cambiar nombres de variables y agregar programas adicionales. Puede trazar, paso a paso y cronometrar por milisegundos para ayudar a determinar la forma más rápida de realizar secciones altamente repetitivas. Puede redefinir teclas de función, ya sea para proporcionar una función fácil de presionar una tecla o para evitar que se use accidentalmente una función estándar cuando no debería. Puede pasar a DOS o ejecutar un comando DOS. Puede convertir entre conjuntos de caracteres de un solo byte y conjuntos de caracteres de doble byte , pero para tener mucho uso para esto, la computadora host probablemente necesitaría un sistema operativo que lo sepa . Se pueden agregar o modificar documentos en UBHELP.HLP .

Pruebas de primalidad con APRT-CLE (hasta 884 dígitos) (es mejor ejecutar esto con la versión 8.8F o posterior de UBASIC): se dice que 500 dígitos demoran 5 horas en un PP-200, 150 dígitos demoran aproximadamente 16 minutos en un 486-100, aproximadamente 2¼ minutos en un K6@233; 250 dígitos demoran aproximadamente 13½ minutos en un K6@233. Las máquinas recientes pueden ser hasta 10 veces más rápidas. APRT-CLE es a menudo el algoritmo de elección para probar la primalidad de los números enteros dentro de su rango.

La factorización con programas como ECMX es bastante rápida. Puede encontrar factores con un número de dígitos en el rango bajo de 20 con bastante facilidad, en el rango medio de 20 con algo menos de facilidad y en el rango alto de 20 con menos posibilidades de éxito. Ha encontrado un factor de 30 dígitos. (Encontrar factores con el método de curva elíptica siempre es arriesgado para factores más grandes. Cuanto mayor sea el número de curvas que se prueban, mayores son las posibilidades de éxito, pero el número necesario (en promedio, a veces uno puede tener suerte o no) aumenta rápidamente con el tamaño de los factores. Siempre es mejor usar la máquina más rápida disponible. ECMX usa los estándares aceptados para los límites de cuándo dejar de trabajar con una curva y cambiar a la siguiente. Tiene pruebas preliminares de primalidad, búsqueda de factores pequeños y potencias.

Al ser interpretado, permite modificar programas y luego reiniciarlos (usando GOTO) en medio de una ejecución, incluso de varios días, sin perder los datos acumulados. No se recomienda detener el programa a menos que haya estado guardando los datos de forma segura en algún lugar o si los usuarios olvidaron escribir alguna forma de guardar los datos al salir (quizás no esperaban encontrar ninguna y estaban tratando de probarlo). Cuando se hace algo que puede perder datos valiosos, o si necesita hacer algo más durante un tiempo, puede guardar FREEZEel programa actual en un archivo y luego MELThacerlo (siempre que la configuración de memoria inferior sea la misma).

UBASIC tiene números de línea . No utiliza sangría para controlar la estructura. Tiene subrutinas y funciones de usuario con parámetros pasados ​​y variables locales. Los parámetros se pueden pasar por valor o por nombre. Las funciones de usuario y subrutinas se pueden pasar como parámetros. Tiene etiquetas limitadas. Tiene varias opciones para funciones condicionales. Los usuarios pueden sangrar tanto como sea necesario o no sangrar en absoluto, y pueden tener tanta estructura como quieran o código espagueti . Es un error considerar a UBASIC como "no moderno" (como podría inferirse por un lector de artículos que confunden sangría con estructura y no favorecen los números de línea). Tener números de línea permite saltar fácilmente a un punto intermedio en una rutina, lo que a veces puede ahorrar líneas duplicadas.

La versión 8 de UBASIC tiene la aritmética real y compleja de alta precisión (hasta 2600 dígitos) de las versiones anteriores, y agrega aritmética racional exacta y aritmética de polinomios de una variable con coeficientes complejos, racionales o módulo p , así como manejo de cadenas y capacidades limitadas de manejo de listas. También tiene documentación en línea sensible al contexto (lea UBHELP.DOC para obtener información). El archivo que utiliza es ASCII y se puede imprimir como documento en papel.

En 2005, el archivo de ayuda tenía muchos errores. Un proyecto de diez años para reescribirlo y corregirlo estaba casi listo para su publicación probablemente a fines del verano de 2005. El nuevo archivo de ayuda tiene una nueva extensión .hlp y, finalmente, el nombre del paquete u3d748f*. Hay una lista de actualizaciones disponible, pero muchos cambios siguen sin informarse.

La versión 8.8 tiene una precisión diferente a la 8.74

Todavía hay algunos comandos que no tienen documentación:

 SCHOOL
 KEYSCAN
 MODMUL(

Hay un nuevo comando de la versión 8.8C POLYCONVque convierte polinomios entre módulo=0 y módulo=primo. No hay especificaciones de formato.

ADVERTENCIA: Nunca pruebe ninguno de estos mientras algo importante esté (o pueda estar) ejecutándose o suspendido en otro lugar, ya que pueden producirse bloqueos, en particular en el caso de KEYSCAN. Consulte: FREEZE, ROLL, MELT. (para obtener una advertencia similar)

UBASIC tiene varios tipos de matrices , operadores lógicos , operadores de bits , cuatro estructuras de bucle estándar y operadores combinados. Puede llamar a rutinas de lenguaje de máquina para aumentar la velocidad (ECMX lo hace), pero debe saber lenguaje ensamblador para comprender las instrucciones; no basta con poder escribir TSR en DEBUG.

  • Se pueden calcular valores de cadena si representan una fórmula matemática.
  • Generalmente, las cadenas se pueden ejecutar si representan un comando UBASIC.
  • Las variables que contienen cadenas generalmente pueden sustituirse por las cadenas.
  • Las cadenas se pueden ordenar alfabéticamente utilizando MIN o MAX.

UBASIC se puede utilizar para procesar casi cualquier tipo de datos. Por ejemplo, archivos .WAV . Puede procesar archivos de texto para convertir tabulaciones en espacios o espacios en tabulaciones. Algunos programas no pueden generar tabulaciones y otros incluso se bloquean al generarlas.

Los tipos de variables incluyen:

  1. entero
  2. racional
  3. real
  4. número complejo
  5. cadena
  6. Paquete (mezcla de cualquier tipo, incluidos otros paquetes)
  7. polinomio
  8. polinomio mod (coeficientes enteros módulo un primo)

Una búsqueda en Internet a principios de 2005 arrojó las versiones 8.74(32), 8.74(16), 8.71(4000(16)), 9.0ZE, 9.0ZC, 9.0E, 8.8F(32), 8.8F(16), 8.8F(C) , 8.7E(32), 8.7E(16), 8.30(32), 8.30(16), 7.25(32), 7.25(16), 8.8A(32), 8,8A(16), 8.8A(C), 8.8C(32), 8.8C(16), 8.8C(C), 8.8E(32), 8.8E(16), 8.8E(C) . 12 versiones de 52 números conocidos. Muchos de estos no están identificados directamente. (Los (16) y (32) se refieren a la cantidad de bits en el motor de multiplicación. (4000) se refiere a versiones especiales que pueden llegar a más de 4000 dígitos (algunos usuarios pueden necesitar uno de estos, como para generar los primeros 792 números de Bernoulli para duplicar el índice 1584: la última versión solo puede obtener 540/1080). La (C) es para máquinas CGA . Las versiones en cursiva no se recomiendan).

La mayoría de los usuarios solo necesitarían 8,8 F.

Si ya está utilizando una versión posterior a la 8.74 y, especialmente, si está utilizando una versión posterior a la 8.7E, se le recomienda encarecidamente que cambie a la última versión (8.8F). Algunos programas (por ejemplo, los de visualización elegante) escritos para la 8.74 pueden no funcionar en la 8.8F sin una reescritura considerable. Las últimas versiones no eliminan los retornos de carro o los avances de línea de los archivos ASCII, y los programas como UBH (incluso el de la 8.8F) necesitan líneas adicionales para eliminarlos. Cualquier programa escrito para una versión no debe utilizarse en otra versión sin comprobarlo.

Ciertos programas como NFS solo se ejecutarán en la versión experimental 9.**.

La versión ppmpx36e del tamiz cuadrático multipolinomial necesita 8.8F y Windows.

Algunas versiones de UBASIC venían con un archivo UBCONST7.DAT defectuoso . Debe comparar el suyo con el que se incluye en la versión 8.8F. Si no es idéntico, debe cambiar de versión.

UBASIC está disponible para

  1. IBM PC/AT y compatibles
  2. NEC PC-9801
  3. PC-H98 de NEC
  4. Fujitsu FM-R
  5. Toshiba J-3100
  6. HACHA
  7. Dos/V

Para obtener la última versión de UBASIC, consulte las secciones de enlaces externos. Muchas páginas de matemáticas de Internet tienen el lenguaje y los paquetes en sus propios sitios.

Programa de muestra

El siguiente es un programa breve y sencillo para la función de recuento de particiones. Aunque no tiene muchas de las estructuras más sofisticadas, es un programa real, no inventado para este artículo. En un Athlon moderno y rápido, debería calcular los recuentos de particiones de p(0) a p(1000) en aproximadamente ½ segundo. Compare eso con más de ½ siglo la primera vez. Para guardar el resultado en un archivo, descomente la línea 40 (elimine el apóstrofo inicial).

 10 CONSOLA: CONSOLA 1 , 24 , 0 : LOCALIZAR 1 , 0 20 IMPRIMIR CHR ( 2 ); "N" , "P(N)" , "RECUENTO DE PARTICIONES" 30 PALABRA -19 : PUNTO -8 : H %= 11 : 'PARA N HASTA ~1200 40 'PRINT=PRINT+"PARTN5.TXT":'redirección de salida 50 N = 0 : 'ENTRADA N 60 CLR TIEMPO 70 Mu = PI ( SQRT ( 24 * N -1 ) / 6 ) 80 CLR S 90 PARA K = 1 A H % 100 '110 a 160 es la fórmula de Selberg 110 CLR C 120 PARA L = 0 A 2 * K -1 130 SI (( 3 * L ^ 2 + L ) \ 2 ) @ K = ( - N ) @ K 140 : C += ( -1 ) ^ L * COS ( PI (( 6 * L + 1 ) / ( 6 * K ))) 150 SIGUIENTE 160 'para obtener A(K,N), multiplica C por SQRT(K/3) 170 U = EXP ( Mu / K ) 180 R = ( Mu + K ) / U: 'término de convergencia de Rademacher 190 S += (( Mu - K ) * U + R ) * C 200 SIGUIENTE 210 S = ROUND ( ABS ( S * 2 / ( MU *     
     
      
    
    
     
    
     
       
    
     
       
       
       
    
    
    
    
    
   
   ( 24 * N -1 )))) 
220 IMPRIMIR CUTSPC ( STR ( N )); 230 LOCALIZAR 38 - ALEN ( S ) : IMPRIMIR S 240 SI N < 1000 : INC N: GOTO 70 250 Tt = TIEMPO1000: IMPRIMIR = IMPRIMIR : IMPRIMIR Tt / 1000 260 '~1,7 % más rápido si N,K,L cambió a N%,K%,L%    
     
      
    
   

Exactitud

Cuando se trabaja con fracciones continuas, la cantidad de términos está limitada por la precisión disponible y por el tamaño de cada término. Una fórmula aproximada es la precisión de 2 dígitos decimales para cada término (término multiplicado por el logaritmo en base diez del término). La única forma de hacer este trabajo de manera segura es hacerlo dos veces, en paralelo, con la entrada inicial y una interpolación en los últimos dígitos (al menos 1 palabra). Luego, cuando los dos cálculos no dan términos idénticos, se detiene en el término anterior.

UBASIC puede calcular la función de partición hasta p(1330521). (En 8.74 hasta p(1361911) y las versiones de 4000 dígitos deberían obtener muchos más).

Rasgos principales

Véase también

Referencias

Notas

Las características esenciales consisten en lo siguiente:

  • Los números primos de casi un dígito, A(n)B, AB(n) y UBASIC; Caldwell, Chris K.; Journal of RECREATIONAL MATHEMATICS, vol. 22(2) 101-109, 1990
  • UBASIC: un BASIC de dominio público para matemáticas; Neumann, Walter D.; Notices of the American Mathematical Society, mayo/junio de 1989, volumen 36, número 5, págs. 557-559
  • Actualización de UBASIC; Neumann, Walter D.; Avisos de la American Mathematical Society, marzo de 1991, volumen 38, número 3, pág. 196-197
  • 2 y 3 son algo antiguos, y el señor Neumann dice "dominio público" cuando debería decir "freeware" (sin código fuente).
  • (en francés) Página de inicio de UBASIC 9.0w
  • (en japonés) Catálogo UBASIC86 de ykida (Vector)
  • (en japonés) Página de inicio de UBASIC: 3.3.2014
  • Página de inicio de UBASIC: 18.2.2009
  • UBASIC - Simtelnet (Última actualización: 25.06.1998)
  • Versión 8.74 sin defectos
  • Profesor Yuji Kida (Última actualización: 4 de abril de 2014 a las 09:58)
  • UBASIC 7 de octubre de 2000 - Versión final 8.8F - en inglés (Enlace recuperado el 17 de septiembre de 2017)
  • Manual de UBASIC - PDF con copia habilitada - Última corrección el 22 de julio de 2006 - en japonés - Última página archivada en WayBackMachine el 22 de julio de 2011 (Enlace recuperado el 17 de septiembre de 2017)
  • [1] Código fuente de UBASIC 9
Obtenido de "https://es.wikipedia.org/w/index.php?title=UBASIC&oldid=1243899628"