Немного об алгоритме деления в БЭСМ-6
Feb. 19th, 2020 03:08 pmНаконец, я придумал честный способ выяснить, насколько соответствовало истине утверждение, что операция деления не нуждалась в округлении, потому что при выбранной методике ее выполнения частное равновероятно может получиться с избытком или с недостатком. Честность заключается в использовании чисел с двойной точностью для проверки результата, и большего разнообразия делимых, избегая деления "нацело".
Что заметно выше случайного, поскольку 2041890-1955806=86084, а квадратный корень из количества испытаний - всего 2000. Аналогичный тест на IEEE floats (double vs long double) даёт разницу порядка единиц тысяч (0.145%), и при увеличении числа испытаний превалирование уменьшается по модулю, а на БЭСМ-6 остается двухпроцентным.
Ф O P T P A H - Г Д P
( 10.06.84 HФИTM )
001 PROGRAM MAIN
002 INTEGER LT, GT, EQ
003 DOUBLE PRECISION D
004 LT = 0
005 GT = 0
006 EQ = 0
007 K = 0
008 DO 10 I = 1001,1727,6
009 DO 10 J = 65537,131071,2
010 K=K+1
011 A = I
012 B = J
013 C = A/B
014 D = C
015 D = D * B
016 IF (D.GT.A) GT=GT+1
017 IF (D.LT.A) LT=LT+1
018 IF (D.EQ.A) EQ=EQ+1
019 10 CONTINUE
020 PRINT 1,K,LT,EQ,GT
021 1 FORMAT(4X5HTOTAL7X2HLT7X2HEQ7X2HGT/4I9)
022 R = 100.0*(LT-GT)/K
023 PRINT 2,R
024 2 FORMAT(’ DOWNWARD ROUNDING PREVALENCE BY ’
,F7.3,’%’)
025 END
TOTAL LT EQ GT
3997696 2041890 0 1955806
DOWNWARD ROUNDING PREVALENCE BY 2.153%
Что заметно выше случайного, поскольку 2041890-1955806=86084, а квадратный корень из количества испытаний - всего 2000. Аналогичный тест на IEEE floats (double vs long double) даёт разницу порядка единиц тысяч (0.145%), и при увеличении числа испытаний превалирование уменьшается по модулю, а на БЭСМ-6 остается двухпроцентным.
no subject
Date: 2020-02-20 05:55 am (UTC)Интересно, в то время кто-нибудь проводил подобные исследования? Я от физиков слышал только тихий ропот и бурчание по поводу некачественной бэсмовской арифметики. Это уже когда появились сопроцессоры Weitek и народ имел возможность сравнивать.
https://en.wikipedia.org/wiki/Weitek
no subject
Date: 2020-02-20 07:11 am (UTC)А что любая до-IEEE арифметика в подмётки не годилась IEEE-арифметике, хорошо известно. :)
no subject
Date: 2020-02-20 08:52 am (UTC)Интересно было бы посмотреть что там насчитает "рельсовое" деление на МЭСМ-6...
no subject
Date: 2020-02-20 04:01 pm (UTC)В более старых лебедевских машинах или такой же алгоритм, или non-restoring division (там же, выше). Он в некоторых случаях отличается в младшем бите и от IEEE, и от SRT.
no subject
Date: 2020-02-21 09:35 pm (UTC)