УБАСИК
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() UBASIC 32-бит (английская версия) | |
Оригинальный автор(ы) | Юджи Кида |
---|---|
Первоначальный выпуск | до 2005 года |
Операционная система | ДОС , Microsoft Windows |
Тип | БАЗОВЫЙ |
Лицензия | Бесплатное ПО / общественное достояние (без исходного кода ) |
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 несколько сложнее, а с числом цифр выше 20 с меньшими шансами на успех. Он нашел 30-значный коэффициент. (Нахождение факторов с помощью метода эллиптических кривых всегда рискованно для более крупных факторов. Чем больше кривых тестируется, тем больше шансов на успех, но необходимое количество (в среднем иногда может повезти или не повезти) быстро увеличивается с увеличением размер факторов. Всегда лучше использовать самую быструю доступную машину. ECMX использует принятые стандарты для определения пределов того, когда следует прекратить работу с одной кривой и переключиться на другую. Он имеет предварительное тестирование простоты, поиск малых факторов и степеней.
Интерпретация позволяет модифицировать программы, а затем перезапускать их (с помощью GOTO) в середине прогона, даже многодневного, без потери накопленных данных. Остановка не рекомендуется, если программа где-то безопасно не сохранила данные или если пользователи забыли написать какой-либо способ сохранения данных при выходе (возможно, они не ожидали его найти и пытались это доказать). Когда вы делаете что-либо, что может привести к потере ценных данных, или если вам нужно какое-то время сделать что-то еще, вы можете ЗАМОРОЗИТЬ текущую программу в файл, а затем ПЛАВИТЬ ее (при условии, что нижняя конфигурация памяти остается той же).
В UBASIC есть номера строк. Он не использует отступы для управления структурой. Он имеет подпрограммы и пользовательские функции с передаваемыми параметрами и локальными переменными. Параметры можно передавать по значению или по имени. Пользовательские функции и подпрограммы могут передаваться в качестве параметров. У него ограниченное количество этикеток. Он имеет различные варианты условных функций. Пользователи могут делать отступы столько, сколько необходимо, или вообще не делать их вообще, а также могут иметь столько структуры, сколько хотят, или спагетти-кода . Ошибочно считать UBASIC «несовременным» (как может прийти к выводу читатель статей, в которых отступы путаются со структурой и не поддерживаются номера строк). Наличие номеров строк позволяет легко перейти к промежуточной точке программы, что иногда позволяет избежать дублирования строк.
UBASIC версии 8 имеет высокоточную действительную и комплексную арифметику (до 2600 цифр) предыдущих версий и добавляет точную рациональную арифметику и арифметику полиномов с одной переменной с комплексными, рациональными коэффициентами или коэффициентами по модулю p, а также обработку строк и ограниченные возможности обработки списков. In также имеет контекстно-зависимую онлайн-документацию (для получения информации прочтите UBHELP.DOC). При этом используется файл ASCII, который можно распечатать как бумажный документ.
По состоянию на 2005 год в файле справки было много ошибок. Десятилетний проект по переписыванию/исправлению был почти готов к публикации, вероятно, к концу лета 2005 года. Новый файл справки имеет новое расширение «.hlp» и, в конечном итоге, имя пакета u3d748f*. Список обновлений доступен, но о многих изменениях не сообщается.
Версия 8.8 имеет точность, отличную от версии 8.74.
Есть еще некоторые команды, для которых нет документации:
SCHOOL KEYSCAN MODMUL(
В версии 8.8C появилась новая команда (POLYCONV), которая преобразует полиномы между модулем = 0 и модулем = простое число. Спецификаций форматирования нет.
ВНИМАНИЕ: Никогда не проверяйте ничего из этого, когда что-то важное работает (или может быть) запущено или приостановлено где-то еще, поскольку можно ожидать зависаний, особенно для KEYSCAN. См.: ЗАМОРОЗИТЬ, СВЕРНУТЬ, РАСПЛАВИТЬ. (для аналогичного предупреждения)
UBASIC имеет несколько типов массивов, логические операторы, битовые операторы, четыре стандартных структуры цикла и комбинированные операторы. Он может вызывать подпрограммы машинного языка для увеличения скорости (ECMX делает это), но вы должны знать язык ассемблера, чтобы хотя бы понимать инструкции - просто уметь писать TSR в DEBUG недостаточно.
- Строковые значения можно вычислить, если они представляют собой математическую формулу.
- Строки обычно могут выполняться, если они представляют собой команду UBASIC.
- Переменные, содержащие строки, обычно могут быть заменены строками.
- Строки могут быть расположены в алфавитном порядке с использованием MIN или MAX.
UBASIC можно использовать для обработки практически любого типа данных. Например: файлы .WAV. Он может обрабатывать текстовые файлы для преобразования табуляции в пробелы или пробелов в табуляции. Некоторые программы не могут создавать вкладки, а некоторые фактически захлебываются ими.
Типы переменных включают в себя:
- целое число
- рациональный
- настоящий
- комплексное число
- нить
- пакет (смешанный из любых типов, включая другие пакеты)
- полиномиальный
- 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( С), 8.7Е(32), 8.7Е(16), 8.30(32), 8.30(16), 7.25(32), 7.25(16), 8.8А(32), 8,8А(16), 8.8А (С), 8,8С(32), 8,8С(16), 8,8С(С), 8,8Е(32), 8,8Е(16), 8,8Е(С) . 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 доступен для
- IBM-PC/AT и совместимые устройства
- НЭК ПК-9801
- НЭК ПК-H98
- Fujitsu FM-R
- Тошиба J-3100
- ТОПОР
- DOS/V
Чтобы получить последнюю версию UBASIC, см. разделы внешних ссылок. Многие интернет-страницы по математике имеют соответствующие языки/пакеты на своих сайтах.
Пример программы
[ редактировать ]Ниже приведена короткая простая программа для функции подсчета разделов. Хотя в ней не так много сложных структур, это настоящая программа, придуманная не для этой статьи. На современном быстром Athlon он должен вычислить количество разделов от p(0) до p(1000) примерно за ½ секунды. Сравните это с более чем полувеком в первый раз. Чтобы сохранить результат в файл, раскомментируйте строку 40 (удалите начальный апостроф).
10 CONSOLE:CONSOLE 1,24,0:LOCATE 1,0
20 PRINT CHR(2);"N","P(N)","PARTITION COUNT"
30 WORD -19:POINT -8:H%=11:'FOR N UP TO ~1200
40 'PRINT=PRINT+"PARTN5.TXT":'output redirect
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 to 160 is selberg formula
110 CLR C
120 FOR L=0 TO 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 'to get A(K,N), multiply C by SQRT(K/3)
170 U=EXP(Mu/K)
180 R=(Mu+K)/U:'Rademacher's convergence term
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<1000:INC N:GOTO 70
250 Tt=TIME1000:PRINT=PRINT:PRINT Tt/1000
260 '~1.7% faster if N,K,L changed to N%,K%,L%
Точность
[ редактировать ]При работе с непрерывными дробями количество членов ограничено доступной точностью и размером каждого члена. Приблизительная формула представляет собой точность до 2 цифр десятичной дроби для каждого (член, умноженный на десятичный логарифм термина). Единственный способ безопасно выполнить такую работу — выполнить ее дважды параллельно, при этом начальный ввод должен быть подмешан в последних нескольких цифрах (минимум 1 слово). Затем, когда два расчета не дают одинаковых членов, остановитесь на предыдущем члене.
UBASIC может вычислить статистическую сумму выше p(1330521). (В версиях 8.74 до p(1361911) и 4000-значных версиях должно быть намного больше.)
Поглаживания рук
[ редактировать ]- Сильный упор на теорию чисел
- Имеет готовые прикладные программы, такие как тест на простоту , факторинг , числа Бернулли, дзета-функция и т.д.
- Версии с 8.74 имеют графику
- Может работать с числами длиной до 2600 цифр ( bignums ), но с функциями и комплексными числами предел цифр меньше.
- Имеет онлайн-контекстно-зависимую справку.
См. также
[ редактировать ]- БАЗОВЫЙ
- Список диалектов BASIC по платформам
- Факторизация эллиптической кривой Ленстры
- комплексные числа
- Простое число
- Йорген Педерсен Грам
- Логарифмическая интегральная функция
- Основные пробелы
- Интегрированная среда разработки
Ссылки
[ редактировать ]- Примечания
Основные характеристики заключаются в следующем:
- Ближние простые числа, A(n)B, AB(n) и UBASIC; Колдуэлл, Крис К.; Журнал развлекательной математики, Vol. 22(2) 101-109, 1990 г.
- UBASIC: общедоступный BASIC по математике; Нойманн, Уолтер Д.; Уведомления Американского математического общества, май/июнь 1989 г., том 36, номер 5, стр. 557-559
- Обновление UBASIC; Нойманн, Уолтер Д.; Уведомления Американского математического общества, март 1991 г., том 38, номер 3, стр. 196-197
- 2 и 3 несколько устарели, и г-н Нойманн говорит «общественное достояние», вместо того чтобы говорить «бесплатное ПО» (без исходного кода).
Внешние ссылки
[ редактировать ]- (на французском языке) Домашняя страница UBASIC 9.0w
- (на японском языке) Каталог UBASIC86 от ykida (вектор)
- (на японском языке) Домашняя страница UBASIC: 3 марта 2014 г.
- Домашняя страница UBASIC на английском языке: 18 февраля 2009 г.
- UBASIC - Simtelnet (Последнее обновление: 25.06.1998)
- Исправная версия 8.74
- Профессор Юджи Кида (Последнее обновление: 4 апреля 2014 г., 09:58)
- UBASIC, 7 октября 2000 г. — окончательная версия 8.8F — на английском языке (ссылка получена 17 сентября 2017 г.)
- Руководство UBASIC — PDF с включенным копированием — последнее исправление 22 июля 2006 г. — на японском языке — последняя страница в архиве WayBackMachine 22 июля 2011 г. (ссылка получена 17 сентября 2017 г.)
- [1] Исходный код для UBASIC 9.