Сделал питоновский скрипт для забав с вещественными значеними БЭСМ-6. Конвертирует восьмеричное представление в вещественное и обратно.
https://github.com/besm6/besm6.github.io/blob/master/wiki/examples/besmword
Пробуем небольшие числа:
Формат представления чисел БЭСМ-6 описан здесь: http://www.besm6.org/wiki/Numbers
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 0000FLT_MAX: максимальные положительное и отрицательное вещественные числа.
$ besmword 7757777777777777 7757 7777 7777 7777 = 9.2233720368464e+18 $ besmword 7760000000000000 7760 0000 0000 0000 = -9.2233720368548e+18FLT_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