stringtranslate.com

УБАСИК

UBASIC — это бесплатный ( общественное достояние без исходного кода ) интерпретатор BASIC, написанный Юдзи Кида из Университета Риккё в Японии , специализирующийся на математических вычислениях.

Функции

UBASIC — это готовый к запуску язык, который не нужно настраивать с другим продвинутым языком, что является распространенной проблемой для многозначных математических языков. Он работает в DOS или в окне DOS под оболочкой DOS , Microsoft Windows и т. д. Он специализируется на теории чисел , проверке простоты , факторизации и больших целых числах (до 2600 цифр). Будучи реализацией BASIC, он облегчает чтение программ без необходимости проводить обширное изучение, поскольку BASIC — это язык, структура и синтаксис которого близки к обычной алгебре . В файлах справки есть статьи и уроки для начинающих.

UBASIC имеет встроенный онлайн-редактор с несколькими вспомогательными средствами для отладки. Он может показывать перекрестные ссылки на вызывающие строки, строки, содержащие переменную, и списки переменных/массивов. Он может перенумеровывать строки, изменять имена переменных и добавлять дополнительные программы. Он может трассировать, пошагово и по времени в миллисекундах, чтобы помочь определить самый быстрый способ выполнения часто повторяющихся разделов. Он может переопределять функциональные клавиши, либо для предоставления простой функции с одним нажатием клавиши, либо для предотвращения случайного использования стандартной функции, когда она не должна быть использована. Он может переходить в DOS или выполнять команду DOS. Он может преобразовывать между однобайтовым набором символов и двухбайтовым набором символов , но для того, чтобы использовать это, хост-компьютеру, вероятно, понадобится соответствующая операционная система . Документы могут быть добавлены или изменены в UBHELP.HLP .

Тестирование простоты с помощью APRT-CLE (до 884 цифр) (лучше всего запускать его на UBASIC версии 8.8F или более поздней): 500 цифр, как говорят, занимают 5 часов на PP-200, 150 цифр занимают около 16 минут на 486-100, около 2¼ минут на K6@233; 250 цифр занимают около 13½ минут на K6@233. Современные машины могут быть до 10 раз быстрее. APRT-CLE часто является алгоритмом выбора для тестирования простоты целых чисел в его диапазоне.

Факторизация с помощью таких программ, как ECMX, выполняется довольно быстро. Она может довольно легко находить факторы с количеством цифр в нижних 20-х числах, несколько сложнее в средних 20-х числах и с меньшими шансами на успех. Она нашла 30-значный фактор. (Поиск факторов с помощью метода эллиптических кривых всегда рискован для больших факторов. Чем больше число проверяемых кривых, тем больше шансов на успех, но необходимое число (в среднем, иногда может повезти или не повезти) быстро увеличивается с размером факторов. Всегда лучше использовать самую быструю из доступных машин. ECMX использует принятые стандарты для пределов, когда следует прекратить работу с одной кривой и перейти к другой. Она имеет предварительную проверку простоты, находит малые факторы и степени.

Интерпретация позволяет изменять программы и затем перезапускать (используя GOTO) в середине выполнения, даже многодневного, без потери накопленных данных. Остановка не рекомендуется, если только программа не сохраняла данные где-то безопасно, или если пользователи забыли написать какой-либо способ сохранения данных при выходе (возможно, они не ожидали найти какой-либо способ и пытались это доказать). Когда вы делаете что-то, что может привести к потере ценных данных, или если вам нужно сделать что-то еще на некоторое время, вы можете сохранить FREEZEтекущую программу в файл, а затем MELTее (при условии, что нижняя конфигурация памяти та же самая).

UBASIC имеет номера строк . Он не использует отступы для управления структурой. Он имеет подпрограммы и пользовательские функции с переданными параметрами и локальными переменными. Параметры могут передаваться по значению или по имени. Пользовательские функции и подпрограммы могут передаваться как параметры. Он имеет ограниченное количество меток. Он имеет различные параметры для условных функций. Пользователи могут делать отступы столько, сколько нужно, или не делать их вообще, и могут иметь столько структуры, сколько нужно, или спагетти-код . Ошибочно считать UBASIC «несовременным» (как может подумать читатель статей, которые путают отступы со структурой и не одобряют номера строк). Наличие номеров строк позволяет легко переходить к промежуточной точке в подпрограмме, что иногда может избавить от дублирования строк.

Версия UBASIC 8 имеет высокоточную вещественную и комплексную арифметику (до 2600 цифр) предыдущих версий и добавляет точную рациональную арифметику и арифметику одномерных многочленов с комплексными, рациональными или по модулю p коэффициентами , а также возможности обработки строк и ограниченной обработки списков. Также имеет контекстно-зависимую онлайн-документацию (для получения информации прочтите UBHELP.DOC ). Файл, который это использует, имеет формат ASCII и может быть распечатан для бумажного документа.

По состоянию на 2005 год файл справки содержал множество ошибок. Десятилетний проект по переписыванию/исправлению был почти готов к публикации, вероятно, к концу лета 2005 года. Новый файл справки имеет новое расширение .hlp и в конечном итоге имя пакета u3d748f*. Список обновлений доступен, но многие изменения остаются неотчетливыми.

Версия 8.8 имеет другую точность, чем 8.74

Некоторые команды все еще не имеют документации:

 SCHOOL KEYSCAN MODMUL(

В версии 8.8C появилась новая команда POLYCONV, преобразующая полиномы между modulus=0 и modulus=prime. Спецификации форматирования отсутствуют.

ПРЕДУПРЕЖДЕНИЕ: Никогда не проверяйте ничего из этого, когда что-то важное запущено (или может быть запущено) или приостановлено где-то еще, так как могут возникнуть блокировки, особенно для KEYSCAN. См.: FREEZE, ROLL, MELT. (для похожего предупреждения)

UBASIC имеет несколько типов массивов , логических операторов , битовых операторов , четыре стандартных структуры циклов и комбинированные операторы. Он может вызывать процедуры машинного языка для увеличения скорости (ECMX делает это), но вы должны знать язык ассемблера , чтобы даже понимать инструкции — просто уметь писать TSR в DEBUG недостаточно.

UBASIC можно использовать для обработки практически любых данных. Например: файлы .WAV . Он может обрабатывать текстовые файлы, чтобы преобразовывать табуляции в пробелы или пробелы в табуляции. Некоторые программы не могут генерировать табуляции, а некоторые вообще задыхаются от них.

Типы переменных включают в себя:

  1. целое число
  2. рациональный
  3. настоящий
  4. комплексное число
  5. нить
  6. пакет (смешанный из любых типов, включая другие пакеты)
  7. многочлен
  8. mod полином (коэффициенты целых чисел по модулю простого числа)

Поиск в Интернете в начале 2005 года выявил версии 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 версий из 52 известных номеров. Многие из них не идентифицированы напрямую. ((16) и (32) относятся к числу бит в механизме умножения. (4000) относится к специальным версиям, которые могут достигать более 4000 цифр (некоторым пользователям может понадобиться одна из них, например, для генерации первых 792 чисел Бернулли для удвоения индекса 1584: последняя версия может получить только 540/1080). (C) предназначена для машин CGA . Версии, выделенные курсивом, не рекомендуются.)

Большинству пользователей понадобится всего 8,8F.

Если вы уже используете версию более позднюю, чем 8.74, и особенно если вы используете версию более позднюю, чем 8.7E, то вам настоятельно рекомендуется перейти на последнюю версию (8.8F). Некоторые программы (например, fancy display), написанные для 8.74, могут не работать в 8.8F без значительной переработки. Последние версии не удаляют возвраты каретки / переводы строк из файлов ASCII, и такие программы, как UBH (даже та, что в 8.8F), требуют добавления строк для их удаления. Любая программа, написанная для одной версии, не должна использоваться в другой версии без проверки.

Некоторые программы, такие как NFS, будут работать только в экспериментальной версии 9.**.

Для версии многополиномиального квадратичного решета ppmpx36e требуются 8.8F и Windows.

Некоторые версии UBASIC поставлялись с дефектным файлом UBCONST7.DAT . Вам следует сравнить свой файл с тем, который поставляется в 8.8F. Если он не идентичен, вам следует переключиться.

UBASIC доступен для

  1. IBM PC/AT и совместимые
  2. NEC PC-9801
  3. NEC PC-H98
  4. Fujitsu FM-R
  5. Тошиба J-3100
  6. ТОПОР
  7. ДОС/В

Для получения последней версии UBASIC см. разделы внешних ссылок. Многие страницы интернет-математики имеют язык/пакеты на своих собственных сайтах.

Образец программы

Ниже приведена короткая простая программа для функции подсчета разделов. Хотя в ней нет многих более сложных структур, это настоящая программа, не придуманная для этой статьи. На современном быстром Athlon она должна вычислять подсчеты разделов от p(0) до p(1000) примерно за ½ секунды. Сравните это с более чем ½ столетия в первый раз. Чтобы сохранить результат в файл, раскомментируйте строку 40 (удалите начальный апостроф).

 10 КОНСОЛЬ: КОНСОЛЬ 1 , 24 , 0 : РАСПОЛОЖЕНИЕ 1 , 0 20 ПЕЧАТЬ CHR ( 2 ); "N" , "P(N)" , "PARTITION COUNT" 30 WORD -19 : POINT -8 : H %= 11 : 'ДЛЯ N ДО ~1200 40 'PRINT=PRINT+"PARTN5.TXT":'перенаправление вывода 50 N = 0 : 'ВХОД N 60 CLR TIME 70 Mu = PI ( SQRT ( 24 * N -1 ) / 6 ) 80 CLR S 90 ДЛЯ K = 1 ДО H % 100 '110 до 160 - формула Сельберга 110 CLR C 120 ДЛЯ L = 0 ДО 2 * K -1 130 IF (( 3 * L ^ 2 + L ) \ 2 ) @ K = ( - N ) @ K 140 : C += ( -1 ) ^ L * COS ( PI (( 6 * L + 1 ) / ( 6 * K ))) 150 NEXT 160 'чтобы получить A(K,N), умножьте C на SQRT(K/3) 170 U = EXP ( Mu / K ) 180 R = ( Mu + K ) / U: 'член сходимости Радемахера 190 S += (( Mu - K ) * U + R ) * C 200 NEXT 210 S = ROUND ( ABS ( S * 2 / ( MU *                                            ( 24 * N -1 )))) 220 ПЕЧАТЬ CUTSPC ( STR ( N )); 230 ЛОКЕЙТ 38 - ALEN ( S ) : ПЕЧАТЬ S 240 IF N < 1000 : INC N: GOTO 70 250 Tt = TIME1000: ПЕЧАТЬ = ПЕЧАТЬ : ПЕЧАТЬ Tt / 1000 260 '~1,7% быстрее, если N,K,L изменены на N%,K%,L%            

Точность

При работе с непрерывными дробями количество членов ограничено доступной точностью и размером каждого члена. Приблизительная формула имеет точность в 2 десятичных знака для каждого (член умножить на логарифм члена по основанию 10). Единственный способ выполнить такую ​​работу безопасно — сделать это дважды, параллельно, с первоначальным вводом в один, размытым в конечных нескольких цифрах (по крайней мере, 1 слово). Затем, когда два вычисления не дадут идентичных членов, остановитесь на предыдущем члене.

UBASIC может вычислить функцию распределения до p(1330521). (В версии 8.74 до p(1361911), а версии с 4000 цифрами должны получить гораздо больше.)

Основные черты

Смотрите также

Ссылки

Примечания

Основные характеристики включают в себя следующее:

Внешние ссылки