Все интересные float
2022-08-03 12:29Соорудил список всех "интересных" чисел с плавающей точкой (32-битных). Вдруг кому пригодится.
floats.txt
Некоторые выдающиеся экземпляры:
floats.txt
Некоторые выдающиеся экземпляры:
Знак | Экспонента Мантисса 0 00000000 00000000000000000000000 = 0.0 1 00000000 00000000000000000000000 = -0.0 0 00000000 00000000000000000000001 = 1.40129846e-45 денормализованное 0 00000000 10000000000000000000000 = 5.87747175e-39 денормализованное 0 00000000 11111111111111111111111 = 1.17549421e-38 денормализованное 0 00000001 00000000000000000000000 = 1.17549435e-38 0 01111111 00000000000000000000000 = 1.0 0 01111111 00000000000000000000001 = 1.00000012 0 01111111 10000000000000000000000 = 1.5 0 01111111 11111111111111111111111 = 1.99999988 0 10000000 00000000000000000000000 = 2.0 0 10000000 00000000000000000000001 = 2.00000024 0 10000000 10000000000000000000000 = 3.0 0 10000000 11111111111111111111111 = 3.99999976 0 11111110 00000000000000000000000 = 1.70141183e+38 0 11111110 11111111111111111111111 = 3.40282347e+38 0 11111111 00000000000000000000000 = inf 1 11111111 00000000000000000000000 = -inf 0 11111111 00000000000000000000001 = nan 0 11111111 10000000000000000000000 = nan 0 11111111 11111111111111111111111 = nan

no subject
Date: 2022-08-04 00:12 (UTC)no subject
Date: 2022-08-04 01:35 (UTC)Что это за странное представление. Старший бит подразумевается, что ли?
no subject
Date: 2022-08-04 01:49 (UTC)no subject
Date: 2022-08-04 02:41 (UTC)no subject
Date: 2022-08-04 03:53 (UTC)Хотя один край видно и там работать не будет: (1,2] отображается в (0,-1] а теперь прикиньте сколько индивидуальных значений IEEE float находятся в этих диапазонах.
no subject
Date: 2022-08-05 03:36 (UTC)no subject
Date: 2022-08-04 02:05 (UTC)no subject
Date: 2022-08-04 03:58 (UTC)It can be required that the most significant digit of the significand of a non-zero number be non-zero (except when the corresponding exponent would be smaller than the minimum one). This process is called normalization. For binary formats (which uses only the digits 0 and 1), this non-zero digit is necessarily 1. Therefore, it does not need to be represented in memory; allowing the format to have one more bit of precision. This rule is variously called the leading bit convention, the implicit bit convention, the hidden bit convention, or the assumed bit convention.
https://en.wikipedia.org/wiki/Floating-point_arithmetic#Hidden_bit
no subject
Date: 2022-08-04 03:48 (UTC)Для сравнения 2-х чисел на больше/меньше почти всегда достаточно первых 16-бит
только отрицательный ноль раздражает. проверка на него - дополнительная операция
Еще интересное число: 0.1
Для начинающего программиста обычно открытие - его неточное представление:
0 01111011 10011001100110011001101
no subject
Date: 2022-08-04 04:44 (UTC)Алгоритм по ссылке был опубликован в 1974 году, но советская секретная математика, возможно, тоже была не промах. Впрочем, аналогичная команда была и в IBM NORC, так что и американская секретная морская артиллерийская математика, возможно, была не промах ещё раньше, пардон за каламбур.
no subject
Date: 2022-08-05 02:38 (UTC)А про него раньше не слышал.
Из названия можно догадаться, что у профессора Кагана была бабушка, сыгравшая важную роль в изобретении алгоритма. :)
no subject
Date: 2022-08-05 03:38 (UTC)no subject
Date: 2022-08-05 03:58 (UTC)F O R E X ИПM AH CCCP BEPCИЯ 2.02 OT 15.07.80 1 PROGRAM MAIN 1 2 S = 0. 2 3 SS = 0. 3 4 C = 0. 4 5 DO 10 I = 1,1000 5 6 D = MOD(I*137, 1001)/1001.0 6 7 SS = SS + D 7 8 T = S + D 8 9 C = (S - T) + D + C 9 10 S = T 10 11 10 CONTINUE 11 12 S = S + C 12 13 PRINT 1, S, SS 13 14 1 FORMAT(1XF20.15) 14 15 END 15 *EXECUTE 500.000000000000000 499.999999848194420Несмотря на известную несимметричность округления при делении, её оказалось недостаточно, чтобы испортить правильно подсчитанную сумму даже в последнем знаке. А тупое сложение успело потерять бит 17-18 точности.
no subject
Date: 2022-08-05 06:11 (UTC)no subject
Date: 2022-08-05 06:41 (UTC)no subject
Date: 2022-08-05 20:25 (UTC)no subject
Date: 2022-08-05 20:27 (UTC)https://drive.google.com/file/d/1ysssn7u6ZHzauKt34lAGK67I1Z_Csi-E/
Книжка 1962 года, но сама машина разработана в 1957-м.
no subject
Date: 2022-08-06 01:37 (UTC)