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 computación matemática .
Autor (es) original (es) | Yuji Kida |
---|---|
Versión inicial | antes de 2005 |
Sistema operativo | DOS , Microsoft Windows |
Tipo | BÁSICO |
Licencia | Freeware / Dominio público (sin código fuente ) |
Características
UBASIC es un lenguaje listo para ejecutar que no necesita configurarse 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 una caja de DOS bajo el shell de DOS , Microsoft Windows , etc. Está especializado en 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 sintaxis cercana al álgebra ordinaria. Los archivos de ayuda tienen artículos y lecciones para principiantes.
UBASIC tiene un editor en línea integrado 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 volver a numerar líneas, cambiar nombres de variables y agregar programas adicionales. Puede rastrear, paso único y tiempo por milisegundos para ayudar a determinar la forma más rápida de hacer secciones muy repetitivas. Puede redefinir las teclas de función, ya sea para proporcionar una función fácil de presionar una tecla o para evitar que una función estándar se use accidentalmente cuando no debería. Puede utilizar el shell en DOS o ejecutar un comando de DOS. Puede convertir entre un juego de caracteres de un solo byte y un juego de caracteres de doble byte, pero para tener mucho uso para esto, la computadora host probablemente necesitaría un sistema operativo consciente . Los documentos se pueden agregar o modificar en UBHELP.HLP.
Prueba de primalidad con APRT-CLE (a 884 dígitos) (es mejor ejecutar esto bajo la versión 8.8F de UBASIC o posterior): se dice que 500 dígitos toman 5 horas en un PP-200, 150 dígitos toman aproximadamente 16 minutos en un 486- 100, aproximadamente 2¼ minutos en un K6 @ 233; 250 dígitos toma 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 primacía de los enteros dentro de su rango.
Factorizar con programas como ECMX es bastante rápido. Puede encontrar factores con el número de dígitos en los 20 bajos con bastante facilidad, en los 20 con menos facilidad y en los 20 superiores con menor probabilidad 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 serán las posibilidades de éxito, pero el número necesario (en promedio, a veces se puede tener o no suerte) 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, encontrando pequeños factores y potencias.
Ser interpretado permite modificar programas y luego reiniciar (usando GOTO) en medio de una ejecución, incluso de varios días, sin perder los datos acumulados. No se recomienda detenerse a menos que un programa haya estado guardando los datos de forma segura en algún lugar, o si los usuarios se olvidaron de escribir alguna forma para guardar los datos al salir (tal vez no esperaban encontrar ninguno y estaban tratando de probarlo). Cuando haga algo que pueda perder datos valiosos, o si necesita hacer algo más durante un tiempo, puede CONGELAR el programa actual en un archivo y luego FUSIONARlo (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 y subrutinas de usuario pueden pasarse como parámetros. Tiene etiquetas limitadas. Tiene varias opciones para funciones condicionales. Los usuarios pueden sangrar tanto como sea necesario o no, y pueden tener tanta estructura como desee o código espagueti . Es un error considerar a UBASIC como "no moderno" (como podría inferir un lector de artículos que confunden la sangría con la 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.
UBASIC versión 8 tiene la aritmética real y compleja de alta precisión (hasta 2600 dígitos) de versiones anteriores, y agrega aritmética racional exacta y aritmética de polinomios de una sola 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 para un documento en papel.
En 2005, el archivo de ayuda tenía muchos errores. Un proyecto de diez años para reescribir / corregir estaba casi listo para su publicación probablemente a finales 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 notificarse.
La versión 8.8 tiene una precisión diferente a la 8.74
Todavía hay algunos comandos que no tienen documentación:
COLEGIO KEYSCAN MODMUL (
Hay un nuevo comando de la versión 8.8C POLYCONV (que convierte polinomios entre módulo = 0 y módulo = primo. No hay especificaciones de formato.
ADVERTENCIA: Nunca pruebe ninguno de estos cuando algo importante esté (o podría estar) ejecutándose o suspendido en otro lugar, ya que se pueden esperar bloqueos, particularmente para KEYSCAN. Ver: CONGELAR, ENROLLAR, DERRETIR. (para una advertencia similar)
UBASIC tiene varios tipos de matrices, operadores lógicos, operadores de bits, 4 estructuras de bucle estándar y operadores combinados. Puede llamar a rutinas de lenguaje de máquina para aumentar la velocidad (ECMX hace esto), pero debe saber el lenguaje ensamblador para comprender las instrucciones; solo poder escribir TSR en DEBUG no es suficiente.
- Los valores de cadena se pueden calcular si representan una fórmula matemática.
- Por lo general, las cadenas se pueden ejecutar si representan un comando UBASIC.
- Las variables que contienen cadenas normalmente pueden sustituirse por las cadenas.
- Las cadenas se pueden ordenar alfabéticamente usando 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 pestañas en espacios o espacios en pestañas. Algunos programas no pueden generar pestañas y algunos se ahogan con ellas.
Los tipos de variables incluyen:1: entero2: racional3: real4: número complejo5: cuerda6: paquete (mezclado de cualquier tipo, incluidos otros paquetes)7: polinomio8: polinomio mod (coeficientes enteros módulo a 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,8 A (32), 8,8 A (16), 8,8 A (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 se identifican directamente. (El (16) y (32) se refieren al número 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 el primer 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. No se recomiendan las versiones en cursiva).
La mayoría de los usuarios solo necesitarían 8.8F.
Si ya está usando una versión posterior a la 8.74 y especialmente si está usando una versión posterior a la 8.7E, le recomendamos encarecidamente que cambie a la última versión (8.8F). Es posible que algunos programas (pantalla elegante, por ejemplo) escritos para 8.74 no funcionen en 8.8F sin una reescritura considerable. Las últimas versiones no eliminan los retornos de carro / saltos de línea de los archivos ASCII, y programas como UBH (incluso el de 8.8F) necesitan líneas adicionales para eliminarlos. Cualquier programa escrito para una versión no debe usarse en otra versión sin verificarlo.
Ciertos programas, como NFS, solo se ejecutarán en la versión experimental 9. **.
La versión ppmpx36e del tamiz cuadrático de múltiples polinomios necesita 8.8F y Windows.
Algunas versiones de UBASIC venían con un archivo UBCONST7.DAT defectuoso. Debe comparar el suyo con el suministrado en 8.8F. Si no es idéntico, debería cambiar.
UBASIC está disponible para1: IBM-PC / AT y compatibles2: NEC PC-98013: NEC PC-H984: Fujitsu FM-R5: Toshiba J-31006: HACHA7: 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 los paquetes de idioma en sus propios sitios.
UBASIC fue escrito por:Prof. Yuji KidaDepartamento de MatemáticasUniversidad de RikkyoNishi-Ikebukuro 3, Tokio 171, JAPÓN.(correo electrónico: [email protected])
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 rápido moderno debería calcular los recuentos de partición de p (0) ap (1000) en aproximadamente ½ segundo. Contraste eso con más de ½ siglo la primera vez. Para guardar el resultado en un archivo, elimine el comentario de la línea 40 (elimine el apóstrofe inicial).
10 CONSOLA: CONSOLA 1 , 24 , 0 : LOCALIZAR 1 , 0 20 IMPRIMIR CHR ( 2 ); "N" , "P (N)" , "RECUENTO DE PARTICIONES" 30 PALABRAS -19 : PUNTO -8 : H % = 11 : 'PARA N HASTA ~ 1200 40 ' PRINT = PRINT + "PARTN5.TXT": 'redireccionamiento de salida 50 N = 0 : 'INPUT N 60 CLR TIME 70 Mu = PI ( SQRT ( 24 * N -1 ) / 6 ) 80 CLR S 90 FOR K = 1 TO 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 NEXT 210 S = ROUND ( ABS ( S * 2 / ( MU * ( 24 * N -1 )))) 220 PRINT CUTSPC ( STR ( N )); 230 LOCATE 38 - ALEN ( S ) : PRINT S 240 IF N < 1,000 : INC N: GOTO 70 250 Tt = TIME1000: PRINT = PRINT : PRINT Tt / 1000 260 '~ 1,7% más rápido si N, K, L cambió a N %, K%, L%
Precisión
Cuando se trabaja con fracciones continuas, el número de términos está limitado por la precisión disponible y por el tamaño de cada término. Una fórmula aproximada es una precisión de 2 dígitos de fracciones decimales para cada (término multiplicado por el logaritmo en base diez del término). La única forma de hacer ese trabajo de forma segura es hacerlo dos veces, en paralelo, con la entrada inicial a uno difuminado en los últimos dígitos (al menos 1 palabra). Luego, cuando los dos cálculos no den términos idénticos, deténgase en el término anterior.
UBASIC puede calcular la función de partición sobre p (1330521). (En 8.74 hasta p (1361911) y las versiones de 4000 dígitos deberían obtener muchas más).
Rasgos principales
- Fuerte énfasis en la teoría de números
- Tiene programas de aplicación listos para usar como prueba de primalidad , factorización , números de Bernoulli, función zeta, etc.
- Las versiones de 8.74 tienen gráficos
- Puede trabajar con números de hasta 2600 dígitos ( bignums ), pero con funciones y números complejos el límite de dígitos es menor
- Tiene ayuda sensible al contexto en línea
Ver también
Referencias
- Notas
Las características esenciales consisten en lo siguiente:
- Los Primes Near Repdigit, A (n) B, AB (n) y UBASIC; Caldwell, Chris K .; Revista de MATEMÁTICAS RECREATIVAS, Vol. 22 (2) 101-109, 1990
- UBASIC: un BÁSICO de dominio público para las matemáticas; Neumann, Walter D .; Notices of the American Mathematical Society, mayo / junio de 1989, volumen 36, número 5, p. 557-559
- Actualización UBASIC; Neumann, Walter D .; Notices of the American Mathematical Society, marzo de 1991, volumen 38, número 3, p. 196-197
- 2 y 3 son algo antiguos, y el Sr. Neumann dice "dominio público" cuando debería decir "freeware" (sin código fuente).
enlaces externos
- (en francés) Página de inicio de UBASIC 9.0w
- (en japonés) Catálogo UBASIC86 por ykida (Vector)
- (en japonés) UBASIC Homepage: 3.3.2014
- Página de inicio de UBASIC en inglés: 18.2.2009
- UBASIC - Simtelnet (Última actualización: 25.06.1998)
- Versión no defectuosa 8.74
- Profesor Yuji Kida (Última actualización: 4 de abril de 2014 a las 09:58)
- UBASIC 7 de octubre de 2000 - La versión final 8.8F - en inglés (enlace obtenido el 17 de septiembre de 2017)
- Manual UBASIC - PDF con copia habilitada - Última corrección el 22 de julio de 2006 - en japonés - Última página archivada de WayBackMachine el 22 de julio de 2011 (enlace obtenido el 17 de septiembre de 2017)