Программируемые калькуляторы HP

Предлагаю здесь размещать материалы, касающиеся программирования HP 50g и других калькуляторов северо-американской фирмы Hewlett-Packard.

HP 50g: единицы измерения и константы.

HP 50g позволяет корректно работать с размерностями физических величин. К сожалению, во-первых акцент сделан на преобразования из метрической системы мер в разные варианты британской — проблема, актуальная лишь для западников и потребителей западного. Исторически же важные древнерусские величины и национальные, принятые в соседствующих с Россией странах с древней культурой (Китай, Япония) практически игнорируются.

Во-вторых, обозначения физических величин латиницей не соответствуют отечественным научным традициям и легко приводят к конфузу.

В-третьих, калькулятор не умеет упрощать размерность автоматически. Умножив 1_A на 1_Ω получим не 1 В, а 1_(A*Ω). Попытка применить UBASE ни к чему хорошему не приводит. Перейти в другую размерность можно с помощью CONVERT, но для этого вам надо её знать или придётся гадать.

Надеюсь, что в отечественных калькуляторах эти проблемы будут решены. Пока же публикую перевод физических величин из вида, закодированного в HP 50g, в общепринятый.

2. Length.. (UNITS F2; длина)

m (meter) м (метр) 1_m = 1 м
cm (centimeter) см (сантиметр) 1_cm = 0,01 м
mm (millimeter) мм (миллиметр) 1_mm = 0,001 м
yd (yard) ярд 1_yd = 0,9144 м
ft (feet) фут 1_ft = 0,3048 м
in (inch) дюйм 1_in = 0,0254 м
Mpc (Mega parsec) Мпк (мегапарсек) 1_Mpc = 3,08567818585E22 м
pc (parsec) пк (парсек) 1_pc = 3,08567818585E16 м
lyr (light-year) св.г. (световой год) 1_lyr = 9,46052840488E15 м
au (astronomical unit) а.е. (астрономическая единица) 1_au = 149597900000 м
km (kilometer) км (километр) 1_km = 1000 м
mi (international mile) миля (сухопутная, международная) 1_mi = 1609,344 м
nmi (nautical mile) морская миля 1_nmi = 1852 м
miUS (US statute mile) миля (уставная, статутная) 1_miUS = 1609,34721869 м
chain (chain) чейн (геодезический) 1_chain = 20,1168402337 м
rd (rod) род 1_rd = 5,02921005842 м
fath (fathom) фатом (морская сажень) 1_fath = 1,82880365761 м
ftUS (survey foot) фут (геодезический) 1_ftUS = 0,304800609601 м
mil (mil) мил 1_mil = 0,0000254 м
μ (micron) мкм (микрометр, микрон) 1_μ = 0,000001 м
A° (Angstrom) A° (ангстрем) 1_A° = 0,0000000001 м
fermi (fermi) ферми 1_fermi = 1E-15 м

3. Area.. (UNITS F3; площадь)

m² (square meter) м² (квадратный метр) 1_m² = 1 м²
cm² (square centimeter) см² (квадратный сантиметр) 1_cm² = 0,0001 м²
b (barn) барн 1_b = 1E-28 м²
yd² (square yard) кв. ярд 1_yd² = 0,83612736 м²
ft² (square feet) кв. фут 1_ft² = 0,09290304 м²
in² (square inch) кв. дюйм 1_in² = 0,00064516 м²
km² (square kilometer) км² (квадратный километр) 1_km² = 1000000 м²
ha (hectare) га (гектар) 1_ha = 10000 м²
a (are) ар 1_a = 100 м²
mi² (square mile) кв. миля (сухопутная, международная) 1_mi² = 2589988,11034 м²
miUS² (square statute mile) кв. миля (уставная, статутная) 1_miUS² = 2589998,47032 м²
acre (acre) акр 1_acre = 4046,87260987 м²

4. Volume.. (UNITS F4; объём)

m³ (cubic meter) м³ (кубометр) 1_m³ = 1 м³
st (stere) 1_st = 1 м³
cm³ (cubic centimeter) см³ (кубический сантиметр) 1_cm³ = 0,000001 м³
yd³ (cubic yard) 1_yd³ = 0,764554857984 м³
ft³ (cubic feet) 1_ft³ = 0,028316846592 м³
in³ (cubic inch) 1_in³ = 0,000016387064 м³
l (liter) л (литр) 1_l = 0,001 м³
galUK (UK gallon) 1_galUK = 0,004546092 м³
galC (Canadian gallon) 1_galC = 0,00454609 м³
gal (US gallon) 1_gal = 0,003785411784 м³
qt (quart) 1_qt = 0,000946352946 м³
pt (pint) 1_pt = 0,000473176473 м³
ml (mililiter) мл (миллилитр) 1_ml = 0,000001 м³
cu (US cup) 1_cu = 2,365882365E-4 м³
ozfl (US fluid ounce) 1_ozfl = 2,95735295625E-5 м³
ozUK (UK fluid ounce) 1_ozUK = 0,000028413075 м³
tbsp (tablespoon) 1_tbsp = 1,47867647813E-5 м³
tsp (teaspoon) 1_tsp = 4,92892159375E-6 м³
bbl (barrel) 1_bbl = 0,158987294928 м³
bu (bushel) 1_bu = 0,03523907 м³
pk (peck) 1_pk = 0,0088097675 м³
fbm (board foot) 1_fbm = 0,002359737216 м³

5. Time.. (UNITS F5; время)

yr (year) г. (год) 1_yr = 31556925,9747 с
d (day) день 1_d = 86400 с
h (hour) ч. (час) 1_h = 3600 с
min (minute) минута 1_min = 60 с
s (second) с (секунда) 1_s = 1 с
Hz (hertz) Гц (Герц) 1_Hz = 1 с⁻¹

6. Speed.. (UNITS F6; скорость)

m/s (meter per second) м/с (метр в секунду) 1_m/s = 1 м/с
cm/s (centimeter per second) см/с (сантиметр в секунду) 1_cm/s = 0,01 м/с
ft/s (feet per second) 1_ft/s = 0,3048 м/с
kph (kilometer per hour) км/ч (километр в час) 1_kph = 0,2(7) м/с
mph (mile per hour) 1_mph = 0,44704 м/с
knot (nautical miles per hour) 1_knot = 0,51(4) м/с
c (speed of light) 1_c = 299792458 м/с
ga (acceleration of gravity) 1_ga = 9,80665 м/с²

7. Mass.. (UNITS NXT F1; масса)

kg (kilogram) кг (килограмм) 1_kg = 1 кг
g (gram) г (грамм) 1_g = 0,001 кг
lb (avoirdupois pound) 1_lb = 0,45359237 кг
oz (ounce) 1_oz = 0,028349523125 кг
slug (slug) 1_slug = 14,5939029372 кг
lbt (Troy pound) 1_lbt = 0,3732417216 кг
ton (short ton) 1_ton = 907,18474 кг
tonUK (long ton) 1_tonUK = 1016,0469088 кг
t (metric ton) 1_t = 1000 кг
ozt (Troy ounce) 1_ozt = 0,0311034768 кг
ct (carat) 1_ct = 0,0002 кг
grain (grain) 1_grain = 0,00006479891 кг
u (unified atomic mass) 1_u = 1,6605402E-27 кг
mol (mole) моль 1_mol = 1 моль

8. Force.. (UNITS NXT F2; сила)

N (newton) Н (Ньютон) 1_N = 1 Н = 1 кг*м/с²
dyn (dyne) 1_dyn = 0,00001 Н
gf (gram-force) 1_gf = 0,00980665 Н
kip (kilopound-force) 1_kip = 4448,22161526 Н
lbf (pound-force) 1_lbf = 4,44822161526 Н
pdl (poundal) 1_pdl = 0,138254954376 Н

9. Energy.. (UNITS NXT F3; энергия)

J (joule) Дж (Джоуль) 1_J = 1 Дж = 1 кг*(м/с)²
erg (erg) эрг 1_erg = 0,0000001 Дж
kcal (kilocalorie) 1_kcal = 4186,8 Дж
cal (calorie) 1_cal = 4,1868 Дж
Btu (International table btu) 1_Btu = 1055,05585262 Дж
ftxlbf (foot-pound) 1_(ft*lbf) = 1,35581794833 Дж
therm (EEC therm) 1_therm = 105506000 Дж
MeV (mega electron-volt) 1_MeV = 1,60217733E-13 Дж
eV (electron-volt) 1_eV = 1,60217733E-19 Дж

10. Power.. (UNITS NXT F4; мощность)

W (watt) Вт (Ватт) 1_W = 1 Вт = 1 кг*м²/с³
hp (horse power) 1_hp = 745,699871582 Вт

11. Pressure.. (UNITS NXT F5; давление)

Pa (pascal) Па (Паскаль) 1_Pa = 1 Па = 1 кг/(м*с²)
atm (atmosphere) атм. (атмосфера) 1_atm = 101325 Па
bar (bar) 1_bar = 100000 Па
psi (pounds per square inch) 1_psi = 6894,75729317 Па
torr (torr) 1_torr = 133,322368421 Па
mmHg (millimeters of mercury) 1_mmHg = 133,322368421 Па
inHg (inches of mercury) 1_inHg = 3386,38815789 Па
inH2O (inches of water) 1_inH2O = 248,84 Па

12. Temperature.. (UNITS NXT F6; температура)

°C (degree Celsius) °C (градус по Цельсию) 0_°C = 273,15 K
100_°C = 373,15 K
°F (degree Fahrenheit) °F (градус по Фаренгейту) 0_°F = 255,37(2) K
90_°F = 305,37(2) K
K (Kelvin) К (Кельвин) 0_K = 0 K
°R (degree Rankine) 0_°R = 0 K
90_°R = 50 K

13. Electric Current.. (UNITS NXT NXT F1; измерение электричества)

V (volt) В (вольт) 1_V = 1 В
A (ampere) А (ампер) 1_A = 1 А
C (coulomb) Кл (кулон) 1_C = 1 Кл = 1 А*с
Ω (ohm) ом 1_Ω = 1 Ом
F (farad) фарада 1_F = 1 Ф
W (watt) Вт (ватт) 1_W = 1 Вт
Fdy (faraday) Фарадей 1_Fdy = 1 Фарадей = 96487 Кл
H (henry) генри 1_H = 1 Гн
mho (mho) мо 1_mho = 1 мо = 1 Ом⁻¹
S (siemens) См (сименс) 1_S = 1 См = 1 Ом⁻¹
T (tesla) тесла 1_T = 1 Тл
Wb (weber) вебер 1_Wb = 1 Вб

14. Angle.. (UNITS NXT NXT F2; измерение плоских и телесных углов)

° (sexagesimal degree) 1_° = 1,74532925199E-2 радиан
r (radian) радиан 1_r = 1 радиан
grad (grade) 1_grad = 1,57079632679E-2 радиан
arcmin (minute of arc) 1_arcmin = 2,90888208666E-4 радиан
arcs (second of arc) 1_arcs = 4,8481368111E-6 радиан
sr (steradian) 1_sr = 1 стерадиан

15. Light.. (UNITS NXT NXT F3; измерение освещённости)

fc (footcandle) 1_fc = 10,7639104167 лк
flam (footlambert) 1_flam = 3,42625909964 кд/м²
lx (lux) лк (люкс) 1_lx = 1 лк = 1 кд*стерадиан/м²
ph (phot) 1_ph = 10000 лк
sb (stilb) 1_sb = 10000 кд/м²
lm (lumen) лм (люмен) 1_lm = 1 лм = 1 лк*м² = 1 кд*стерадиан
cd (candela) кд (кандела) 1_cd = 1 кд
lam (lambert) 1_lam = 3183,09886184 кд/м²

16. Radiation.. (UNITS NXT NXT F4; излучение)

Gy (gray) 1_Gy = 1 м²/с²
rad (rad) 1_rad = 0,01 м²/с²
rem (rem) 1_rem = 0,01 м²/с²
Sv (sievert) 1_Sv = 1 м²/с²
Bq (becquerel) 1_Bq = 1 с⁻¹
Ci (curie) 1_Ci = 37000000000 с⁻¹
R (roentgen) 1_R = 0,000258 А*с/кг

17. Viscosity.. (UNITS NXT NXT F5; вязкость)

P (poise) 1_P = 1 кг/(м*с)
St (stokes) 1_St = 0,0001 м²/с

117.02 MENU (другие)

gmol (gram-mole) 1_gmol = 1 моль
lbmol (pound-mole) 1_lbmol = 453,59237 моль
rpm (revolutions per minute) об/мин (обороты в минуту) 1_rpm = 1,(6)E-2 с⁻¹
dB (decibels) 1_dB = 1

Constants Library

NA Avogadro's number 6.0221367E23_1/gmol
k Boltzmann 1.380658E-23_J/K
Vm molar volume 22.4141_l/gmol
R universal gas 8.31451_J/(gmol*K)
StdT std temperature 273.15_K
StdP std pressure 101.325_kPa
σ Stefan-Boltzmann 5.67051E-8_W/(m²*K^4)
c speed of light 299792458._m/s
ε0 permittivity 8.85418781761E-12_F/m
μ0 permeability 1.25663706144E-6_H/m
g accel of gravity 9.80665_m/s²
G gravitation 6,67259E-11_m³/(s²*kg)
h Planck's 6.6260755E-34_J*s
hbar Dirac's 1.05457266E-34_J*s
q electronic charge 1.60217733E-19_C
me electron mass 9.1093897E-31_kg
qme q/me ratio 175881962000._C/kg
mp proton mass 1.6726231E-27_kg
mpme mp/me ratio 1836.152701
α fine structure .00729735308
φ mag flux quantum 2.06783461E-15_Wb
F Faraday 96485.309_C/gmol
R∞ Rydberg 10973731.534_1/m
a0 Bohr radius .0529177249_nm
μB Bohr magneton 9.2740154E-24_J/T
μN nuclear magneton 5.0507866E-27_J/T
λ0 photon wavelength 1239.8425_nm
f0 photon frequency 2.4179883E14_Hz
λc Compton wavelen .00242631058_nm
rad 1 radian 1_r
twoπ 2π radians 6.28318530718_r
angl ∠ in trig mode 180_°
c3 Wien's .002897756_m*K
kq k/q .00008617386_J/(K*C)
ε0q ε0/q 55263469.6_F/(m*C)
qε0 q*ε0 1.4185979E-30_F*C/m
εsi dielectric const 11.9
εox SiO2 dielec cons 3.9
I0 ref intensity .000000000001_W/m²

При составлении таблиц использовался калькулятор HP 50g с прошивкой 2.09, руководство пользователя HP 50g (UG Edition 1) и словарь Мюллера 1998 года издания (тот, где правильно написано русское слово хэкер). Постинг находится в процессе написания.

HP 50g: трюки, хитрости и недокументированные особенности.

Изысканные сочетания клавиш

Пр это правый Shift (оранжевый, ранее голубой), Лв это левый Shift (белый, ранее purple, красный или зелёный), а BS это Backspace. Запятая означает последовательное нажатие клавиш, а знак сложения означает одновременное удержание двух или более клавиш. Пробел означает оба эти варианта. Через дробную черту указаны альтернативные клавиши, на выбор.

Во всех режимах:

  • ON+F3 осуществляет «мягкую» перезагрузку (иностранцы пишут ON+C); если во время загрузки удерживать BS, то библиотеки не будут подключены; если во время загрузки удерживать F2, F3 и F4 (B, C и D), то подключается скрытая библиотека Development lib;

  • ON+F1+F6 осуществляет полную перезагрузку с очисткой памяти, флэш-память сохраняется (иностранцы пишут ON+A+F);
  • ON+F4 запуск встроенных тестов (иностранцы пишут ON+D), выход по ON+F3;
  • ON+Up послать снимок экрана на принтер через ИК-порт или на компьютер через USB-кабель;
  • Лв Up/Down/Right/Left передвинуть курсор на страницу вверх/вниз или ширину экрана влево/вправо (при редактировании);
  • Лв Down редактор командной строки (в режиме ожидания);
  • Лв+VAR переход в {HOME};
  • Лв+TOOL переключить режим REAL/COMPLEX;
  • Пр+ENTER переключение режима Approx/Exact;
  • Пр Up/Down/Right/Left передвинуть курсор до конца в указанном направлении (при редактировании);
  • Пр, Down вывод на экран списка переменных с их значениями (если активно меню VAR) или обозначений программных клавиш (в режиме ожидания);
  • Пр, Right запуск XSERV(), сервера XModem'а (предпочтительный способ связи с компьютером; в режиме ALG потребуется нажать ENTER);
  • Пр+Right запуск SERVER(), сервера Kermit'а (устаревший способ связи с компьютером; в режиме ALG потребуется нажать ENTER);
  • Пр F1…F6 кладут на стек объект из данного пункта меню (или записывают в строку его имя; если это меню VAR и переменная содержит программу, используется её текст);
  • Пр+9 переходит в меню TIME Tools..
  • ALPHA, Пр/Лв+7/8/9 расставляют акценты и умляуты над последней введённой гласной;
  • Up делает операцию HIST (путешествие по стеку);
  • Left показывает последний графический вывод (обычно график), выход по F6;
  • Down редактирует объект на вершине стека наиболее подходящим редактором (команда EDITB = Edit Best или EDIT из HP 48);
  • BS делает операцию DROP (удаляет число из стека);
  • ENTER делает операцию DUP (вводит число на вершине стека).

В режиме RPN:

  • Right делает операцию SWAP (меняет местами два верхних числа);

  • F1…F6 при активном меню VAR кладут на стек значение соответствующей переменной (если она содержит программу, то программа выполняется);
  • Лв, F1…F6 записывают вершину стека в данный пункт меню (если меню VAR, то в указанную переменную).

Ввод некоторых символов:

  • Пр+SPC вводит точку с запятой (;)

  • Пр+O вводит обратные кавычки (``)
  • ALPHA, Пр+O вводит заглавную греческую букву омега (Ω)
  • ALPHA, Пр+0 вводит стрелку вправо (→)
  • ALPHA, Пр+умножить вводит одну двойную кавычку (")
  • ALPHA, Пр+6 вводит символ градуса (например 90°)
  • ALPHA, Пр, 6 вводит символ угла (∠)
  • ALPHA, Пр 2/3 вводят !/? или ¡/¿ в зависимости от того, отпускается ли Пр до нажатия на цифру
  • ALPHA, Пр, 2 вводит восклицательный знак (факториал)
  • ALPHA, Пр делить вводит дробную черту (slash /)
  • ALPHA, Пр 5 вводит обратную дробную черту (backslash \)
  • ALPHA, Пр ENTER вводит «коммерческое at» (@)
  • ALPHA, Лв ENTER вводит амперсанд (&)

Скрытые "яйца"

Команда MINEHUNT запускает игру «Сапёр». Игру можно остановить, нажав клавишу STO. Это сохранит игру в текущем каталоге, в переменной MHPar . Мин обычно 20, но их количество (от 1 до 64) можно указать, создав переменную Nmines . Если число будет отрицательным, мины будут видны.

Если в режиме редактирования EQW набрать MINEISBETTER, выделить стрелкой вверх и нажать программную клавишу F6 (SIMP), запустится тетрис. Управлять клавишами 2, 4, 5 и 6. Во время игры нельзя выключить калькулятор, тетрис останавливается только при проигрыше игрока.

Если этот тетрис показался очень простым и скучным, наберите "HpMad" (с кавычками) в любой форме ввода. Например в поле BEEP меню CALCULATOR MODES.

Команда RULES выводит кроссворд из имён разработчиков и северо-американских национальных героев.

Карточки памяти

HP 50g поддерживает не только SD, но и MMC-карточки. Любые MMC-карточки (microMCC,..) пойдут, если есть соответствующий адаптер.

Фирма обещает, что максимальная ёмкость карточки равна 2Гб. Тем не менее встроенный FILER неспособен отображать правильно количество свободного места на карточке, если оно больше гигабайта. Как только карточка заполнится и свободное место станет меньше гигабайта, оно начнёт отображаться корректно.

Сам HP 50g форматирует карточки (которые больше 64Мб), как FAT32. Напомню о существовании в калькуляторе неизменяемого загрузчика, который способен обновлять с карточки содержимое прошивки (из меню ON+F4). Только последние выпуски загрузчика cпособны считывать эти обновления с FAT32. У промежуточных версий загрузчика были проблемы с прочтением FAT12. Фирма гарантирует обновление прошивки на всех выпусках HP 50g лишь при использовании на карточке файловой системы FAT16, то есть при форматировании её на компьютере.

Специальные имена каталога {HOME}

KEYTIME содержит время реакции клавиатуры на нажатую клавишу. Если точнее, то количество «тиков» (от 0 до 4096; в секунде 8192 «тиков»), в течении которых будет игнорироваться повторное нажатие клавиши. Чтобы клавиатура не глотала клавиши при быстром вводе, запишите туда 500…400 или даже 150…300.

STARTUP содержит программу, выполняющуюся при каждой «мягкой» перезагрузке. Запишите сюда всю инициализацию, включая настройку переменной KEYTIME, установку RPN, мягких меню, режима клавиатуры USER (-62 SF) и сохраните её копию во флэш-памяти или на SD-карточке.

Переменные STARTED и EXITED содержат программы, исполняемые при входе и выходе из редактора. Они могут содержать команды, скажем, убирающие и восстанавливающие строчки заголовка для расширения области редактирования.

X наличие этого имени является главной причиной, почему у новичков не работают дифференцирование и другие функции СКМ. Удалите её и живите спокойно.

Полезные команды и трюки

С помощью команды →LANGUAGE можно заставить систему говорить на одном из трёх встроенных языков. Для этого предварительно занесите в стек его код (0=английский, 1=французский и 2=испанский). Кстати, калькуляторы HP популярны во Франции.

Команда →Q (выбирается из конца меню CAT, то есть Пр SYMB, или набирается через ALPHA, Пр 0) переводит дробь из десятичной в рациональную. Например 0.625 →Q даст 1/16 . Перевести дробь обратно в десятичную можно с помощью команды →NUM (Пр ENTER).

Для появления разделителя тысячей (123456.78 = 123,456.780) сбросьте флаг Approx и установите формат числа Fix (допустим Fix 3).

WSLOG выдаёт в стек журнал с датами и временем каких-то событий.

TEVAL вычисляет значение на вершине стека аналогично EVAL, выдавая в качестве результата длительность выполнения команды.

Для перевода числа на вершине стека в другую размерность нажмите Лв и программируемую клавишу, соответствующую искомой размерности. (Подразумевается, что 117 флаг Soft MENU установлен.)

{A B FOO SWAP} MENU создаст настраиваемое меню с командами A, B, FOO и SWAP. Вызывать меню можно по команде CUSTOM, то есть Лв+MODE. На калькуляторах семейства HP 48 эта клавиша называлась CST и нажималась без префикса, поэтому некоторые любители перепрограммируют клавиатуру, меняя местами CUSTOM и MODE. Также популярен обмен между клавишами HIST (которая всё равно вызывается стрелкой вверх) и более удобной CMD.

Узнать код клавиши можно, выполнив в режиме RPN команды 0 WAIT и нажав её (можно ввести префикс). Это даст код клавиши, например у клавиши SYMB код 44.1. Код клавиши записывается, как rc.ph (row column . plane, а h равно 1 если префиксная клавиша удерживается и 0 если отпускается). «Нажать» клавишу можно и программно, дав её код на вход команды KEYEVAL.

В режиме USR (для перехода дважды нажать Лв, ALPHA) можно переназначать клавиши. Например последовательность {'Blabla' 44.1} STOKEYS повесит на редкоиспользуемую клавишу SYMB программу с именем Blabla.

Документация и литература

  1. User's manual
    Невероятно куцая (для HP) брошюрка на 184 странички с небрежной нарезкой из User's Guide, прилагаемая к калькулятору в бумажном виде. Существует перевод на русский язык. Кратко охватывает несколько приёмов работы с HP 50g, содержа несущественные ошибки и ряд забавных опечаток. Нужна лишь тем, кто не умеет вставлять батарейки в калькулятор и читать с экрана по-английски. Остальные могут сэкономить время, скачав User's Guide и пустив глянцевый цитатник на печную растопку.

  2. User's guide (UG)
    Детальное 888-страничное фирменное описание калькулятора HP 50g на английском со снимками экрана и нажимаемыми кнопками, разбитое по темам. Прилагается к калькулятору на компакт-диске, содержит незначительные ошибки и не распространяется в бумажном виде. В pdf'ку входит всё содержимое User's manual, но с большим количеством деталей и дополнений, включая основы программирования на UserRPL. На сайте www.hpcalc.org можно заказать бумажный User's Guide, но он будет несколько устаревший (для HP 48G, то есть практически без СКМ).

  3. Advanced user's reference manual (AUR)
    653-страничный pdf-файл от HP, детально и в алфавитном порядке по-английски описывающий команды HP 49g+/48gII. Также содержит информацию по командам СКМ, программированию на SysRPL и по встроенным (диз)ассемблерам. AUR специально не переиздавался для HP 50g. Но это не страшно, ведь HP 50g фактически и есть HP 49g+, только в строгом корпусе с улучшенной клавиатурой. Наоборот, люди на форумах советуют владельцам HP 49G даже более старую HP-48GX Advanced User's Reference Manual, в силу качества документации, написанной для HP 48G.

  4. Gilberto E. Urroz Science and Engineering Mathematics with the HP 49G
    Двухтомный учебник по математике, последовательно показывающий, как использовать HP 49G (а, следовательно, и HP 50g) для решения всё более сложных математических задач. Учебник был незаменим во времена HP 48, но её автора наняли для написания UG и AUR по HP 49, поэтому часть двухтомника дублируется в руководстве. Оба тома можно заказать на Амазоне.

  5. В. П. Дьяконов Современные зарубежные микрокалькуляторы
    Издание 2002 года содержит в пятой главе «обзорное описание» HP-48 на русском языке, включая азы программирования. В книжных магазинах уже не найти, но её ещё можно заказать через несколько Интернет-магазинов, с доставкой по территории России.

Талмуды под номером 2 и 3 (UG и AUR) можно скачать с сайта HP. Их лучше иметь в печатном виде, т.к. без овладения ими калькулятор будет больше простаивать, чем отрабатывать свою стоимость. Даже если печатать экономно (на двух сторонах листов A4, по четыре страницы на одной стороне), затраты на получение комплекта документации могут сравняться с ценой МК-152 (приводятся московские цены на январь 2008 года):

  • 200 рублей за пачку бумаги на 500 листов, используется наполовину;

  • 3000 рублей за картридж с тонером, используется меньше половины;
  • по 300 рублей за книгу на переплётные работы.

Учитывайте, что начиная с HP 49/50 кардинально поменялся стиль документации. Теперь вместо детального описания всех возможностей всё более усложняющегося устройства руководство «танцует» от типовых научных и инженерных задач. Иллюстрируя, с помощью нажатия каких кнопок предлагается их решать. Тем владельцам, кто привык к старому исчерпывающему технократическому стилю, рекомендую достать или распечатать руководства от HP 48. Большая часть информации оттуда всё ещё актуальна для HP 50g.

Прошивка и библиотеки

В Сети выложена прошивка 2.09 и неофициальная 2.10. После обновления прошивки необходимо установить новые версии библиотек L226 (EqnData.Lib = Equation Data) и L227 (EqnLib.lib = Equation Lib).

Также можно установить L229 — таблицу Менделеева (PerTbl.lib = Periodic Table), которую Jean-Yves Avenard перенёс из HP 48GX в 50g.

Проверить версию прошивки можно командой VERSION. Для «вирусной» передачи прошивки из одного калькулятора в другой служит команда ROMUPLOAD.

Команды, новые по сравнению с HP 48

Не-СКМ команды HP 49/50, отсутствующие в HP 48:

{ ANS COLLECT DBUG DEF DISPXY DRAW3DMATRIX DROPN DROP2 DUPDUP DUPN e
EQW EXITED EXPAND FAST3D FILER FLASHEVAL FONT→ →FONT FONT6 FONT7
FONT8 GROBADD HEADER→ →HEADER i ∞ INT I→R KEYTIME LANGUAGE
LOCAL MENUXY MINIFONT →NDISP NDUPN NIP PICK3 PLOT RCLVX REF RENAME R
→I ROMUPLOAD SCALEH SCALEW SCROLL ∑X2 ∑Y2 SREPL STARTED STARTEQW
STARTERR STARTOFF STARTUP STOVX TABLE TBLSET TOFF TPAR TRAN UNBIND
UNPICK UNROT VER WIN ZFACT ZPAR }

Команды СКМ:

{ ? ABCUV ACOS2S ADDTMOD ALGB ARIT ASIN2C ASIN2T ATAN2S AXL AXM AXQ
CASCFG CASCMD CHINREM CMPLX CURL DERIV DERVX DESOLVE DIFF DIV DIV2
DIV2MOD DIVIS DIVMOD DIVPC EGCD EPSX0 EULER EXLR EXP&LN EXPAND
EXPANDMOD EXPLN FACTOR FACTORMOD FACTORS FCOEF FOURIER FROOTS FXND
GAUSS GCD GCDMOD GROBADD HADAMARD HALFTAN HERMITE HESS HILBERT HORNER
IABCUV IBP ICHINREM IDIV2 IEGCD ILAP INTVX INVMOD IQUOT IREMAINDER
ISPRIME? JORDAN KEYEVAL LAGRANGE LAP LAPL LCM LCXM LDEC LEGENDRE LGCD
lim LIN LINSOLVE LNAME LNCOLLECT LVAR MAD MAIN MAP MATR MENUXY MODSTO
MULTMOD NEXTPRIME PA2B2 PARTFRAC PCAR PLOT PLOTADD POWMOD PREVAL
PREVPRIME PROMPTSTO PROPFRAC PTAYL QUOT QXA REF REMAINDER REORDER
RISCH rref RREFMOD SCROLL SERIES SEVAL SIGNTAB SIMP2 SINCOS SOLVE
SOLVER SOLVEVX SUBST SUBTMOD SYLVESTER TABVAL TABVAR TAN2SC TAN2SC2
TAYLOR0 TCHEBYCHEFF TCOLLECT TEVAL TEXPAND TLIN TRAN TRIG TRIGCOS
TRIGO TRIGSIN TRIGTAN TRUNC TSIMP VANDERMONDE VER XNUM ZEROS ∞ }

Питание

HP 50g способен питаться от компьютера (или специального сетевого адаптера) через USB-кабель, что позволяет экономить ресурс батареек. Также потребление существенно снизится, если вставлять в калькулятор SD-карточку лишь в случае необходимости, не пренебрегайте этим советом. Кстати, при каждом нажатии клавиши ON калькулятор обращается к карточке и если ваш корневой каталог захламлён, пауза может стать ощутимой. Пользуйтесь каталогами.

Очень много энергии отнимает форматирование SD-карточки, поэтому эту операцию лучше производить на компьютере (где, к тому же, можно выбрать FAT16) или при питании от USB.

Другим устройством, пожирающим энергию батареек, является ИК-порт. Особенно если он включён на приём.

Обычно калькуляторы HP славятся низким энергопотреблением. HP 50g требует сразу четыре батарейки и при умеренном использовании может проработать от одного «алкалайнового» комплекта больше полугода. В случае появления сигнала о слабых батарейках немедленно замените «пальчики» на новые, иначе подсадите «таблетку», рассчитанную на долгую пятилетнюю службу.

Основные и полезные сайты

Вышеописанное написалось после (или во время) изучения следующих рекомендуемых сайтов, большей частью англоязычных. Материал проверялся по мере возможности и необходимости на HP 50g с прошивкой 2.09 . Многое должно работать и на других калькуляторах семейства HP 49.

Выбор "модель калькулятора - класс школы/курс ВУЗа" от HP

Матрица показывает оптимальные с точки зрения производителя (Hewllet Packard, HP) модели калькуляторов для разных классов средней школы и курсов ВУЗа.

Пояснения.
Слева идут номера моделей калькуляторов HP, сверху - классы средней школы и курсы ВУЗа (Франция).
Collége соответствует советским 4-7 классам (не в курсе, какие они по номерам в новой системе)
Lycée - 8, 9 и 10 выпускной классы (советская 10-летка)
BAC+1/+2 - первый/второй курсы ВУЗа (у нас называлось ОТФ - общетехнический факультет)
BAC+3/+4 - 3 и 4 курсы (бакалавриат)
BAC+5/+6 - 5 и 6 курсы (магистратура)

Темно-синим цветом в середине выделена область программируемых калькуляторов (включая модели с обратной польской нотацией RPN).
Голубым наверху - инженерные алгебраические числогрызы.
Внизу циановым отмечены квадратики моделей для финансовой математики и статистики.

Исторический экскурс по калькуляторам Hewllet Packard 70-х годов

Случайно обнаружил весьма интересный, на мой взгляд, обзор истории развития ПМК от HP - пионеров этого направления. Авторский текст привожу без правок, без закругления полемических углов.
В конце заметки публикую последовавшую по итогам нашу небольшую дискуссию.



В очередной раз на очередном форуме прочитал: "Не все так плохо было у нас. Если и отставали от TI, HP и Casio, то года на два-три (и то, имхо это не с разработкой связано, а с выпуском, привязаным к пятилеткам)." Несколько лет мне было лень, но сейчас молчать уже не могу. Расскажу про программируемые HP - мне это ближе.

1974.
Итак, в 1974 году выходит HP-65 - первый в мире программируемый калькулятор.
Конечно же, обратная польская запись. Сто (100) шагов программы, девять регистров. Правда, практически любое нажатие клавиши, даже каждого из трех шифтов, занимает отдельный шаг - шаги у него шестибитные, в один шаг много не всунешь. Причем таблицу кодов учить не нужно - коды совпадают с положением на клавиатуре. Внутри, конечно, они преобразуются в шестибитные шаги (а склеивающиеся коды типа чтения-записи в регистр - по два в один шаг), но пользователю это не видно и не особо интересно.

Зато совершенно нет номеров шагов - можно ставить метки и потом делать переходы на них. Даже так: пять буквенных меток определяют подпрограммы, которые можно вызывать вручную нажатием одной клавиши или вызывать из других подпрограмм (правда, вложенные вызовы не поддерживаются). А десять цифровых меток - только для переходов.

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

Проверка условий тоже сделана довольно забавно - если условие не выполняется, то управление перескакивает на два шага вперед. А если выполняется, то идет на эти самые два шага, где может быть, например, переход или короткое действие.

А, да, чуть не забыл. МАГНИТНЫЕ КАРТЫ! Именно с них вроде как грузили программы расчета коррекции курса при стыковке "Союза-19" и "Аполлона" (у нас подобное безумие запланировали только как резерв в 1988 году на "Союзе ТМ-7" и МК-52, да и то, кажется, не пригодилось). Для простых людей, естественно, они тоже были полезны - сначала на них сохраняли свои программы, потом ими менялись, а потом покупали готовые пакеты, которые выглядели как немаленьких размеров книжка с маленькой коробочкой.

Стоила вся эта радость $795, хотя по сравнению с другими программируемыми устройствами того времени это было очень по-божески.

Калькулятор стал настолько популярным, что уже через несколько месяцев после выпуска энтузиасты начали выпускать и распостранять по почте ежемесячный самиздатовский журнал. Первый номер, правда, занимал всего две страницы, но со временем объем дошел до полусотни-сотни страниц.

1975.
Через год после HP-65 был объявлен HP-55. Хотя выглядел он довольно похоже, внутри его зачем-то изрядно поменяли. Всего 49 шагов программы, зато зачем-то 20 регистров. Правда, преобразование единиц и статистические функции, но разве в них счастье?

Никаких меток больше нет. Все как мы привыкли, с номерами шагов и без вставок-удалений. Наконец-то сделали листание программы назад. Шаги наконец-то восьмибитные, поэтому команда перехода влезает в один шаг. Условий вместо четырех осталось только два, но теперь они совмещены с переходами и тоже влезают в один шаг. Зато чтение-запись в регистры занимает два шага вместо одного. Никаких магнитных карт нет, зато зачем-то есть таймер.

Но все же это $395 - в два раза дешевле. В самиздатовском журнале обсуждают HP-55 и пишут для него программы, хотя HP-65 намного популярнее. Отдельные личности мечтают о SUPER 65 с сохраняющейся памятью, тысячей шагов, сотней регистров, двумя шифтами с подвыподвертом (я серьезно), защитой от копирования, вводом-выводом звука и термопринтером.

А пока они мечтают, выходит HP-25, поменьше и попроще.

Шагов все так же 49, регистров осталось 8, зато любая функция с любыми шифтами и переход влезают в одну команду. Условия вернули как в HP-65 - с перескоком на шаг вперед. И условий теперь целых восемь - сравнение двух чисел и числа с нулем. Да, кстати, десятичная точка перестала занимать отдельный разряд.

Но так как он стоит $195 - спасибо новой платформе - и переносится одной рукой, спрос огромный.

А в самиздате тем временем забывают про HP-55, бодро программируют для двух остальных, фотографируют потроха HP-65 и собирают из рассыпухи принтер. И, понимая, что ждать SUPER 65 с энергонезависимой памятью пока бессмысленно, начинают мечтать о чем-нибудь типа HP-75, изменения в котором будут чисто косметическими - всего один лист A4 через один интервал. От безысходности даже появляется раздел по кстати вышедшему TI SR-52 аж с целыми 224 шагами и 20 регистрами.

1976.
Безысходность в самиздате нарастает. В майском номере любители HP-65 расправляются с любителями SR-52 и выгоняют их в их собственный самиздат. Ну какой толк, говорят, от удвоенной памяти, если решение квадратного уравнения занимает 110 шагов вместо 45? А разложение на множители - 162 вместо 90? И вообще у них корпус неудобный и кнопки мелкие.

И тут появляется лесник во всем белом. Во-вторых, в HP-25 добавляют, да-да, не шифты с подвыподвертом, а энергонезависимую память, называют эту штуку HP-25C и начинают продавать всего за $200. А во-первых...

224 шага! (естественно, одношаговые команды) 26 регистров! (правда, десять из них доступны с трудом) HP-67!
О командах в несколько шагов, загубивших те же 224 шага в SR-52, уже никто не вспоминает. При редактировании программы можно двигаться налево, направо и в другие стороны. Меток, повешенных на клавиши, уже не 5, а 10. Конечно же, никаких номеров шагов. Процедуры можно вызывать до трех уровней вложенности. А еще можно читать и писать на карты не только программы, но и куски программ или данные из регистров. И даже делать все это программно.
А еще косвенная адресация.
И еще настольный вариант с принтером HP-97.

Самиздат в восторге, фотографирует потроха, пишет "жизнь" (первая версия - 50 минут на поколение на доске 10x10), блэкджек и стартрек. А другие занимаются еггогологией, она даже смешнее, чем у нас: они засовывают в HP-67 карты от HP-65 или вообще выключают питание на середине записи или включают на уже полупрочитанной карте. После того как искомый байт пойман, его можно записать на отдельную карту и делиться с друзьями :)

Да, кстати, стоил HP-67 $450, а HP-97 - $750.

1977.
Выходит замена для HP-25 - HP-29C с 98 шагами программы и 30 регистрами (14 опять доступны с трудом). Из HP-67 переползли метки (правда, только цифровые) с переходами, три уровня подпрограмм и косвенная адресация, а из HP-25C энергонезависимая память (кроме этих злосчастных 14 регистров).

Стоит $195, и опять есть HP-19C с принтером за $345.

И вот тут-то и появляется наш Б3-21, первоначально по 350 рублей. На первый взгляд он находится где-то между HP-55 и HP-25. Но:
- краткого исследования картинок достаточно, чтобы осознать пропасть в наборе функций, нет даже арктангенса;
- регистров только два (вместо традиционных четырех) стековых, семь нормальных и шесть кривых;
- шагов программы вроде бы больше, но из-за маленького стека приходится постоянно пользоваться регистрами, что раздувает программу.

Например, неполная гамма-функция занимает больше шагов, чем даже на HP-55, у которого двухшаговая работа с регистрами. А на HP-25 не только одношаговое чтение-запись регистров, но есть еще и одношаговая арифметика в них, что позволяет делать в его 49 шагах гораздо более интересные вещи.

И, куда ни ткнись, всюду отвратительные неудобства, даже адрес перехода приходится вводить по табличке. О глюках я лучше промолчу. Если кому-нибудь еще интересно, могу рассказать, что творилось в цивилизованном мире в 1978-1979 годах, пока у нас готовили Б3-34...

Оригинал заметки в ЖЖ автора tolstopuz


arbinada:
Хороший обзор.
Насчет 2-3 года - не слышал, а 5-6 лет - реальная цифра, собсно, вы к ней тоже приходите.
В условиях бурного развития рынка, кстати, задержка лет на 5 экономит массу усилий: не нужно воспроизводить то, что умерло за эти годы.
Сейчас, правда, говорить о задержке вообще не приходится в связи с отсутствием отрасли, как таковой.

tolstopuz:
в 1979 у них был hp-41c (с алфавитным жк дисплеем), а у нас б3-34 (хуже, чем hp-29c).
в 1982 у них hp-75c (бейсик), а у нас мк-54 (то есть вообще ничего нового).
а дальше у них в 1986 случилась маленькая революция - переход на rpl и выпуск легендарных 28 и 48. у нас же после выпуска мк-52 (потрясающий уродец, опять же на уровне моделей hp 1977 года) и мк-85 (аналог hp-75c) произошло не отставание, а тупик.
то есть общий итог получается такой - до 1986 года сделали три аналога далеко не лучших моделей 1978-79 года и одну с бейсиком. ничего даже близко похожего на модели 70-х(!) годов hp-41 и даже hp-67 сделано не было. про rpl я даже не говорю - это для нас просто ракетная техника.

arbinada:
RPL...
А оно нужно для калькуляторов? Там уже вполне компутерные задачки вырисовываются.
Действительно похоже на реактивный ранец за плечами, только что с ним делать в городе-то? :)) Лучше на велике или на авто.

По мне так и бейсик нафиг сдался (хотя опять же разница между hp-75с и мк-85 - 4 года). Бейсик - он для Excel хорош.

Алфавтный индикатор на hp-41c, если не ошибаюсь, только для вывода. С символьной информацией калькулятор не работал. То есть, да, удобнее читать сообщение "Ошибка" вместо ЕГГ0Г, но это не качественная разница.

Магнитные карты - да, качественная. Она была изначально, и, как мне кажется, не воспроизводилась по причине контроля за копированием информации в СССР (вспомните учет копий документов на предприятиях, а тут массовое копирование программ)

tolstopuz:
любая методика программирования имеет некий запас расширяемости, за которым с ней становится работать очень неудобно. если вы заметили, абсолютную адресацию у hp имели только 49-шаговые калькуляторы. при большем размере программы правка, меняющая число шагов, становится мучительной, я сам отлично помню это на мк-54. система меток (буквенные для подпрограмм и цифровые для переходов) хорошо работает для нескольких сотен шагов, но с тысячами не хватает и ее. точно так же начинают мешать другие детские ограничения типа уровня вложенности подпрограмм.

еще более серьезная проблема возникает с библиотеками подпрограмм. во-первых, они наверняка либо находятся на одних и тех же шагах программы, либо используют одни и те же метки. а что еще хуже - одни и те же регистры. то есть подключить к своей программе две разные чужие подпрограммы невозможно - надо переписывать одну из них.

rpl как раз и был ответом на эти вопросы. никаких шагов, никаких однобуквенных меток, никаких нумерованных регистров - только именованные переменные и ограниченный только объемом памяти стек. а переменные (и стековые регистры) могут хранить не только числа, но и строки, массивы и программы.

идея оказалась настолько удачной, что бейсик действительно нафиг сдался.

(кстати, главный недостаток мк-152 именно в том, что количество шагов просто зашкаливает для модели программирования, оставшейся от мк-52. представьте себе, как будет выглядеть использование чужой подпрограммы из 1000 шагов, если один из регистров занят другой подпрограммой из 500 шагов, да и номера шагов перекрываются.)

hp-41c имел на клавишах полный английский алфавит, один специальный регистр на 24 символа и возможность хранить по 6 символов в числовых регистрах. но главное не это, а объем памяти - 200 шагов и 63 регистра (которые можно отдать и под шаги программы, что увеличит их до 441), а если докупить модуль расширения, то уже 319 регистров и 1000 шагов (2231, если отдать все регистры под программу). это принципиально новая вычислительная мощность для калькулятора. вон, например, покер:
http://www.hpmuseum.org/software/41/41poker.htm

arbinada:
Со всем этим трудно не согласиться.
Просто я стою на позиции, что "калькулятору - калькуляторово", поэтому заниматься интеграцией подпрограмм да еще от разных авторов - это какое-то неправильное занятие для рядового пользователя, пусть даже и продвинутого. Авторам прикладных пакетов - да, но они спокойно разберутся в коллизиях при сборке (этакая ручная линковка, которую, несомненно, можно заменить более интеллектуальной автоматической процедурой на полноценном компьютере).
А рядовой просто возьмет машинку в руки, введет/загрузит готовую программу и сделает с ее помощью свое дело.

Судя по фронтальном виду hp-41c с символьной информацией он все-таки не работал (в смысле функций обработки, из программы "Покер", где 5 регистров используются для отрисовки 5 вариантов скрытых карт, это тоже видно), а ввод там был гораздо более убогим, чем, нынешние манипуляции SMS на мобилах. То есть, все-таки, эта фишка использовалась для удобства вывод информации пользователю.

tolstopuz:
ну да. загрузит готовую программу для решения системы дифуров, а потом загрузит готовую подпрограмму для специальной функции, используемой в его дифуре. и на rpl у него не будет никаких проблем.

без возможности оперировать со сложными данными как с единым целым работа с матрицами превращается в мучительное перетасовывание регистров. а на hp-48 рядовой пользователь просто возьмет машинку в руки, загрузит готовую программу и получит библиотеку линейной алгебры, где операции над матрицами делаются так же просто, как над числами, и массив собственных значений считается одной функцией, причем одной и той же для любого размера матрицы, лишь бы хватило памяти и терпения.

разве не для этого существуют калькуляторы?

символьные операции в hp-41c, конечно, убогие, но почему убог ввод при наличии полного алфавита, никак не пойму.

Ошибка в решении линейных систем на HP 50g.

Калькуляторы HP (включая 48GX и 49G) неправильно решают системы линейных уравнений. Точнее, если ответ отсутствует, числовой решатель (NUM.SLV) безо всякого сообщения об ошибке выдаст некое «приближение», которое сочтёт наилучшим. Фирме указывали на этот факт, но она считает подобное поведение своего калькулятора не ошибкой, а особенностью.

Пример (опубликованный Aharon Sarussi 5 мая 2000 года):
6x-3y=15
-2x+y=0

Вводим данные на экранчике SOLVE SYSTEM (четвёртый пункт Solve lin sys.. из меню Пр 7 NUM.SLV):
Матрица A=[[6. -3] [-2. 1.]]
Матрица B=[[15.] [0.]]

Калькулятор предлагает решение [[1.8] [-.9]], другими словами x=1.8, а y=-0.9

Если же решать уравнение вручную, то из второго уравнения получаем, что y=2x. Подставляя в первое получаем, что 0=15. Решений нет, а калькулятор бредит.

Что можно порекомендовать? Перед решением системы проверить, если ли у неё решения. И доверять полученному ответу (да и вообще запрашивать ответ в числах) лишь в том случае, когда точно уверены, что решения есть.

Ошибка факторизации HP 50g.

Приобрёл вражеский программируемый калькулятор. Отзыв напишу потом. А сейчас самое важное или, по крайней мере, интересное.

Обнаружение ошибки

Как известно, в компьютерной безопасности и криптографии важную роль играет «факторизация» целых чисел, то есть их разложение на простые множители. Напомню, что простое число это то, которое делится без остатка лишь на само себя и на единицу (2, 3, 5, 7, 11, 13,…). Каждое число может быть разложено на простые множители лишь единственным образом (скажем, 15=3*5). И найти это разложение намного дольше, чем перемножить взятые с потолка простые числа. Для разложения больших чисел приходится задействовать кластеры, состоящие из большого числа высокопроизводительных компьютеров. Чтож, пощупаем эту важную грань с помощью калькулятора.

Калькулятор HP 50g подкупает тем, что позволяет «из коробки» (функция ISPRIME?) тестировать числа «на простоту», а также с помощью команды FACTOR разлагать числа на простые множители. Инструкция обещает, что специальный «целый» тип данных позволяет калькулятору обрабатывать числа неограниченной длины. В руководстве (как в кратком User's Manual, так и в 888-страничном User's Guide) нет сведений об ограничениях команды FACTOR, и меня заинтересовала эта «серебряная пуля».

Возьмём два целых числа (занимающие 59 и 79 бит):
DVX = 555555555578888573
DVY = 465327987614456579865323

На оба числа ISPRIME? выдаёт 1, что означает, что это простые числа. Перемножим их, получив 138-битное число:
MAGIC = DVX*DVY = 258515548685555605977575788207962363654079

На это число ISPRIME? честно выдаёт 0, что означает, что оно составное. Однако команда FACTOR не разлагает его на сомножители (в данном случае DVX и DVY), будто оно простое! Более того, на основе этого числа можно создавать другие составные числа, например 17*1999*MAGIC, которые при факторизации на HP 50g не будут содержать в разложении простые множители DVX и DVY. Команда FACTOR будет стабильно использовать в разложении число MAGIC наравне с простыми числами, не сообщая пользователю об ошибке и никак не выделяя неразложенное число среди других сомножителей.

Я не искал другие подобные «лжепростые» числа, но уверен, что их достаточно. Для подбора длинных простых чисел удобно использовать команду NEXTPRIME. Работу которой, правда, тоже неплохо было бы проверить.

Любопытно проверить на других калькуляторах фирмы, присутствует ли в них эта «особенность». До того, как недокументированные ограничения команды FACTOR будут исследованы (кстати, используемая прошивка для HP 49G+/50g (v92, Revision #2.09; HP49 CAS VER 4.20060602) является последней и скачена из Интернета — следовательно технически возможно даже дизассемблирование) я рекомендую не полагаться на калькуляторы HP, по крайней мере в вопросах факторизации больших чисел. Чтобы не писали инструкции, серебряной пули нет и сомножители, выдаваемые командой FACTOR следует отдельно перепроверять на простоту — по меньшей мере с помощью команды ISPRIME? того же калькулятора.

Дальнейшее исследование

Похоже, что на команде FACTOR стоит таймаут. Если поиск сомножителей отнимает больше одной-двух минут, калькулятор сдаётся (как в том анекдоте про подбор пароля китайцами) и считает оставшееся число простым. В некоторых случаях удаётся получить дальнейшее разложение, запустив команду FACTOR для последнего сомножителя. Но если его даже в одиночку невозможно разложить за указанное время, он во всех разложениях будет восприниматься, как простое число. Как влияет на это скорость работы процессора (некоторые программы позволяют его разгонять чуть ли не до 200МГц), я не проверял.

Кстати, мне удалось подобрать значительно меньшие числа (по 27 бит каждое), 53-битное произведение которых заставляет сбоить встроенную команду факторизации:
DV1 = 80000023
DV2 = 90000049
MAG = DV1*DV2 = 7200005990001127

Фактически можно использовать произведение двух любых девяти (и более) значных простых чисел. Достаточно подольше потоптать клавиатуру калькулятора и дать команду NEXTPRIME, чтобы сгенерировать «тайный» сомножитель. Понятно, что после переписывания «сатурновской» прошивки под ARM скорость вычислений возрастёт и указанный диапазон на пару порядков увеличится. Непонятно лишь, почему в инструкции не отмечены не только найденные ограничения команды FACTOR, но и сам неверный ответ не сопровождается ни предупредительным сигналом, ни текстовым сообщением об ошибке.

А может, всё-таки не ошибка?

Итак, команда FACTOR работает не так, как ожидалось. Но тут закралось сомнение. Кто сказал, что она выполняет факторизацию так, как мы ожидаем? Быть может, команда FACTOR просто разлагает на множители. А простые они или нет, уже другое дело.

Чтож. Посмотрим на встроенную подсказку по ещё одной команде, FACTORS (снимок экрана слева). Слово "irreductible" как раз и означает неразложимые, простые множители. Справа же видим разложение по этой команде числа 10*MAG (72000059900011270). Как мы видим, простые множители 2 и 5 машинка нашла. Но на числе MAG споткнулась и показала его, как неразложимое. Хотя оно вполне себе разложимо (на DV1 и DV2).

Итого вердикт ясен. Ошибка. Кстати, в Сети приводятся и другие случаи, когда при сложности (или невозможности) получения правильного ответа HP 50g выдаёт не сообщение об ошибке и не предупреждение, а неправильный ответ. Выдаёт молча, ничем не выделяя подобное поведение на фоне правильных ответов. Так что, несмотря на всю невероятную вычислительную мощь HP 50g, с этой машинкой надо быть аккуратнее.