2019-04-02

vak: (Default)
Сделал питоновский скрипт для забав с вещественными значеними БЭСМ-6. Конвертирует восьмеричное представление в вещественное и обратно.

https://github.com/besm6/besm6.github.io/blob/master/wiki/examples/besmword

Пробуем небольшие числа:
$ besmword 1.0
1.0 = 4050 0000 0000 0000
$ besmword 2.0
2.0 = 4110 0000 0000 0000
$ besmword 3.0
3.0 = 4114 0000 0000 0000
$ besmword 5.0
5.0 = 4152 0000 0000 0000
$ besmword 7.0
7.0 = 4156 0000 0000 0000
$ besmword -1.0
-1.0 = 4020 0000 0000 0000
$ besmword -2.0
-2.0 = 4060 0000 0000 0000
$ besmword -3.0
-3.0 = 4124 0000 0000 0000
$ besmword -5.0
-5.0 = 4166 0000 0000 0000
$ besmword -7.0
-7.0 = 4162 0000 0000 0000
FLT_MAX: максимальные положительное и отрицательное вещественные числа.
$ besmword 7757777777777777
7757 7777 7777 7777 = 9.2233720368464e+18
$ besmword 7760000000000000
7760 0000 0000 0000 = -9.2233720368548e+18
FLT_MIN: наименьшие положительное и отрицательное вещественные числа.
$ besmword 0010000000000000
0010 0000 0000 0000 = 2.7105054312138e-20
$ besmword 0027777777777777
0027 7777 7777 7777 = -2.7105054312187e-20
Нащупываем FLT_EPSILON: дискретность представления вещественных чисел.
$ besmword 4050000000000000
4050 0000 0000 0000 = 1
$ besmword 4050000000000001
4050 0000 0000 0001 = 1.0000000000018
То есть epsilon = 1.0000000000018 - 1.0 = 1.8e-12. Для сравнения: 1.2e-07 для 32-битного float и 2.2e-16 для 64-битного double.

Формат представления чисел БЭСМ-6 описан здесь: http://www.besm6.org/wiki/Numbers