Програмне забезпечення

Оригінал статтi: faculty.missouri.edu

Я включаю сюди ряд програмних проектів. Я хотів би подякувати NSF за надання підтримки під час розробки більш математичного програмного забезпечення.

Код для складних функцій арксинуса, арккосинуса та арктангенсу

Я написав код для реалізації складних функцій arcsine, arccosine та arctangent casinh, casin, cacosh, cacos, catanh, catan. В даний час я маю намір, щоб вони стали частиною операційної системи FreeBSD, але я хотів би працювати з усіма, хто хоче додати його до інших систем (наприклад, glibc). Код заснований на роботі “Реалізація складних функцій арксинуса та аркосинуса за допомогою обробки винятків” Т. Е. Халла, Томаса Ф. Фергріва та Пінг Так Пітера Танга, опублікованої в ACM Transactions on Mathematical Software, том 23, випуск 3, 1997, сторінки 299-335, http://dl.acm.org/citation.cfm?id=275324.

Код доступний за адресою http://people.freebsd.org/~stephen/ у файлах catrig.c, catrigf.c, catrigl.c. Тести показують, що як реальна, так і уявна частини результатів мають значення в межах 4 ULP (одиниці останнього місця). Вони, безумовно, набагато точніші, ніж поточні реалізації в glibc або NetBSD. Код catrig.c повністю коментований, а код catrigf.c та catrigl.c – це плаваюча та довга подвійні (80 біт та 128 біт) версії відповідно. (Плаваюча версія іноді давала результати, точність яких трохи гірша, ніж 4 ULP.) Див. https://wiki.freebsd.org/Numerics для прогресу з числа у FreeBSD.

Алгоритм у статті Халла, Фергріва і Танга також використовується в бібліотеках Boost: http://www.boost.org/doc/libs/1_53_0/boost/math/complex/asin.hpp. Їх реалізація більш вірна оригінальному алгоритму, ніж моєму коду. Бібліотеки Boost також містять код для atanh та acos. Останні два алгоритми потребували виправлення, щоб бути точними в деяких крайових випадках: див. Https://svn.boost.org/trac/boost/ticket/7290 та https://svn.boost.org/trac/boost/ticket/7291.

Xkbset

Ця програма допомагає керувати багатьма функціями XKB вікна X. Сюди входять такі функції, як MouseKeys, AccessX, StickyKeys, BounceKeys і SlowKeys, як описано нижче. Вона включає програму графічного інтерфейсу, яка допомагає керувати прискоренням MouseKeys. Програма доступна у вихідній формі тут.

Ви також можете переглянути інші подібні програми:

(MouseKeys глючить щодо прискорення: див. виправлення помилок для клавіш. Це частково виправлено у версії 4.0.2 XFree86 та повністю виправлено у версії 4.0.3.)

Програми рідин

Ось кілька програм для імітації рідин. Усі вони написані для Unix.

  • Заставка xlockmore містить режим euler2d, який імітує двовимірне рівняння Ейлера. Використовуйте версію 4.17 або вище (але версія 4.18 містить значні оптимізації). ЇЇ можна отримати звідси або тут. Тепер це також включено в программу xscreensaver.
Зображення рішення 2d рівняння Ейлера
  • Я написав кілька програм для моделювання рівнянь Нав’є-Стокса з періодичними граничними умовами. Вони чудово використовують пакет швидкого перетворення Фур’є fftw. Для відображення вони використовують протокол OpenGL – я використовую пакет Mesa. Вони доступні тут.

AccessX для X Window

Примітка додана в серпні 2012 року: інформація в цьому розділі дуже стара і в основному застаріла.

Тут я описую AccessX, варіант, вбудований у версію X Window R6 і вище. Це допомагає користувачам, які мають певні обмеження щодо своїх здібностей, користуватися клавіатурою або мишами. Якщо у вас є інша інформація для розміщення на цій сторінці, повідомте мені про це: [email protected].

У деяких версіях X Window ви можете знайти вбудовану програму під назвою accessx, яка дозволяє вмикати та вимикати ці параметри. Сюди входить IRIX 6.5 для SGI, можливо, щось на Sun, і DECwindows.

Для інших версій X зараз існує ряд інших програм, які виконують те саме завдання:

  • XFree86-4.0 має утиліту xf86cfg, яка дозволяє користувачам встановлювати деякі параметри accessx.
  • Програма інтерфейсу командного рядка xkbset, написана мною.
  • Дуже обмежена, але досить проста для розуміння программа cheap-accessx-0.1.tar.gz.
  • Очевидно, що випуск 6.6 X Window (версія 11) включатиме програму Accessx, передану Sun та DEC/Compaq. Шукайте її, коли ваш улюблений дистрибутив наздожене X11R6.6.

На веб-сайті http://ccpc5.unican.es/doc/du-40D-doc/AQ917BTE/DOCU_013.HTM є дуже гарні вказівки щодо використання різних функцій Accessx, а також детальний опис (включаючи багато подробиць про прискорення клавіш MouseKeys) у документі ftp://ftp.x.org/pub/R6.4/xc/doc/hardcopy/XKB/XKBlib.ps.gz. Зокрема, якщо функцію accessx X увімкнено, багато функцій accessx можна ввімкнути без запуску будь-якої спеціальної програми, а саме:

  • Липкі клавіші: Наприклад, щоб отримати @, натисніть клавішу SHIFT, відпустіть її, а потім натисніть 2. Щоб написати XKB, двічі натисніть SHIFT, потім xkb, потім знову SHIFT. Працює також з CONTROL і ALT. Щоб увімкнути / вимкнути це, натисніть клавішу SHIFT 5 разів.
  • Повільні клавіші: змушує клавіші працювати, лише якщо вони натискаються протягом певного періоду часу (тому випадкові натискання клавіш не реєструються). Щоб увімкнути / вимкнути це, натисніть клавішу SHIFT протягом 8 секунд.
  • Клавіші миші: Цифрова клавіатура може використовуватися як і миша для переміщення курсору. Щоб увімкнути / вимкнути це, натисніть у такому порядку (утримуючи їх натиснутими, доки не закінчите з третьою клавішею): ліва клавіша SHIFT, ліва клавіша ALT, клавіша NUM-LOCK. (Насправді клавіші миші глючать щодо прискорення: див. Виправлення помилок для клавіш миші.)

Існує кілька способів увімкнути цю функцію accessx. Наприклад:

  • Під час запуску X увімкніть + accessx. Наприклад, якщо ви запускаєте X за допомогою команди startx, зробіть це так:

startx – + accessx

  • Якщо ви використовуєте X через xdm, знайдіть файл під назвою Xservers у каталозі, який може називатися / usr / X11R6 / lib / X11 / xdm, і переконайтеся, що в ньому є такий рядок, як:

: 0 local / usr / X11R6 / bin / X + accessx

(Добре, я не тестував цього – можливо, хтось інший би перевірив це і сказав мені, чи працює)

  • Використовуйте мою утиліту xkbset наступним чином:

xkbset a

  • Якщо ви використовуєте XFree86 версії 4.0.2 або новішої: як кореневе редагування /usr/X11R6/lib/X11/xkb/X0-config.keyboard (або де б не був цей файл), і переконайтеся, що AccessxKeys відображається у такому рядку, як

Controls + = RepeatKeys + MouseKeys + MouseKeysAccel + AccessxKeys

(цей файл може бути створенийx f86cfg, або ви можете просто створити його самостійно).

Природна математика

Це програма, яка дозволяє писати математику так, як вона вимовляється, і перетворює її на LaTeX, щоб її можна було красиво набрати. Це спочатку було створено, щоб допомогти інвалідам писати математику. Це називається Natural Math.

Головоломки Поліміно

Ось набір програм для розгадування головоломок, в яких поліоміно розміщено у геометричній фігурі (зазвичай це прямокутник). Деякі з них були використані для вирішення деяких проблем за адресою http://www.xs4all.nl/~gp/PolyominoSolver/Polyomino.html. Якщо хтось знайде помилки в моїх програмах або зможе надати незалежну перевірку деяких моїх номерів, я був би вдячний.

Заставка xlockmore містить режим polyominoes, який вирішує різні головоломки polyomino в режимі реального часу. Використовуйте версію 5.01 або вище (але версія 5.00 має менший набір проблем, який називається пентоміно). Її можна отримати звідси. Тепер це також включено в программу xscreensaver.

Малюнок Поліоміно

Пакет видачі

Це пакет програм, що дозволяють розподіляти завдання програмування (наприклад, підраховуючи подвійні прості числа) між кількома комп’ютерами. Це описано за адресою http://faaching.missouri.edu/~stephen/software/dispense/. Примітка додана 22 серпня 2012 р.: Схоже, це програмне забезпечення не працює з новішими версіями коду бази даних Берклі. Оскільки цей код був написаний, для вирішення цієї проблеми є, мабуть, інші, набагато кращі.

Сферичний пакет

Обчислює PDE на сферах з використанням сферичних гармонік. Це описано за адресою http://faaching.missouri.edu/~stephen/software/spherical/.

Пакет “Швидке точне закриття”

Обчислює “Швидке точне закриття” для рівнянь типу Джеффрі. Це описано за адресою http://faaching.missouri.edu/~stephen/software/fec/.