Гиперболические функции

Вычисление гиперболических функций вещественной переменной:

Использование

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

Вначале необходимо выбрать эту функцию. Для этого надо нажать БП, потом дважды — клавишу, над которой надписана одноименная тригонометрическая функция.

Аргумент вводится в #X, затем нажимается клавиша С/П. На индикаторе появляется соответствующее значение функции. Дальше можно вводить следующий аргумент и снова нажимать С/П — выбранная функция будет отрабатывать, пока пользователь явно не переключится на другую с помощью БП.

Примеры:

Для расчётов используется только стек. Сохранять полученные результаты можно в любых адресуемых регистрах.

Предусмотрена простейшая подстраховка от ошибки. В программе на первом значимом шаге (38) стои́т команда с кодом 3C, вызывающая сообщение ЕГГОГ: она выполнится, если пользователь по рассеяности нажмёт В/О С/П вместо выбора нужной функции через БП.

Исходный код

																38. 3C		39. +
40. F√		41. +		42. Fln		43. С/П		44. В↑		45. Fx²		46. 1		47. БП		48. 39		49. 1
50. −		51. F√		52. +		53. Fln		54. С/П		55. В↑		56. Fx²		57. БП		58. 49		59. ÷
60. 1		61. +		62. Fln		63. 2		64. ÷		65. С/П		66. В↑		67. +		68. 1		69. FВx
70. −		71. БП		72. 59		73. −		74. 2		75. ÷		76. С/П		77. Feˣ		78. В↑		79. F1/x
80. БП		81. 73		82. В↑		83. F1/x	84. +		85. 2		86. ÷		87. С/П		88. Feˣ		89. БП
90. 82		91. +		92. 2		93. ↔		94. ÷		95. 1		96. ↔		97. −		98. С/П		99. В↑
A0. +		A1. Feˣ		A2. 1		A3. БП		A4. 91

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

Именно это и позволяет вызывать нужную функцию через наглядную мнемонику.

Во-вторых, можно заметить, что функции как бы разорваны: сначала идёт хвост функции с командой останова, за которой находится её начало. Сделано это для уплотнения кода: длина функций не равна в точности 11 шагам, и если разместить функции просто по адресам вызова, между ними останутся неиспользуемые шаги. Поскольку программа предусматривает возможность повторного вызова функций, это требует «закольцовывающей» команды перехода: здесь она после выполнения начала функции передаёт управление на её хвост, после отработки которого программа останавливается на команде С/П, непосредственно предшествующей началу этой функции.

В-третьих, несмотря на то, что конец программы занимает шаги 98…A4, она подходит не только для МК-61/МК-52, где это самостоятельные шаги программной памяти, но и для Б3-34/МК-54/МК-56/МС-1104, в которых эти шаги приходится на короткую побочную ветвь 160-шагового цикла: в 98-шаговых моделях команды с этих шагов просто дублируются в начальные шаги программной памяти 00…06, и при обращении к адресу 99 (функция th) отрабатывают как положено.

Программу разработал, перевёл в формат эмулятора и составил эту инструкцию Адам Лаврик — 2026-04-24