- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Function isEQ(x,y : Real) : Boolean;
Begin
if(x = y) Then isEQ := True Else isEQ := False;
End;
Begin
{...}
End.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+115
Function isEQ(x,y : Real) : Boolean;
Begin
if(x = y) Then isEQ := True Else isEQ := False;
End;
Begin
{...}
End.
Не выспался...
inkanus-gray 18.07.2010 18:10 # +4
А для вещественных лучше так:
А c учётом вычислительных погрешностей:
(x = 0 особый случай).
Здесь eps определено так, что 1 + eps = 1 в логике компилятора.
Чувствую, сейчас кто-нибудь прибежит и крикнет: «Баян!»
WebKill_HochetVBan 18.07.2010 18:58 # −1
Нужно так:
- это не сработает.
inkanus-gray 18.07.2010 19:05 # +1
Пару раз наступил на грабли из-за машинного эпсилон, после чего сравниваю именно таким способом.
WebKill_HochetVBan 18.07.2010 19:25 # +1
зы: Что-бы ты не говорил, а isEQ := (x - y) = 0; не сработает.
inkanus-gray 18.07.2010 19:29 # 0
x0wl 19.07.2010 13:47 # 0
bugmenot 19.07.2010 21:14 # 0
Lure Of Chaos 18.07.2010 21:17 # 0
inkanus-gray 18.07.2010 21:23 # 0
Lure Of Chaos 18.07.2010 21:30 # 0
inkanus-gray 18.07.2010 21:39 # +2
Или через указатели на память:
Жаль, не будет работать на значениях, только на переменных.
inkanus-gray 18.07.2010 21:49 # +1
inkanus-gray 18.07.2010 21:57 # 0
Lure Of Chaos 18.07.2010 22:06 # −1
inkanus-gray 18.07.2010 22:20 # 0
Lure Of Chaos 18.07.2010 22:24 # 0
inkanus-gray 18.07.2010 22:28 # 0
Сравнение с округлением может споткнуться в случае, когда порядки разные, например, что-то типа 2 и 1,(9) или нормализованное число и денормализованное.
Lure Of Chaos 18.07.2010 22:32 # −3
так что предлагаю не задумываться о сравнении, а оставить на шаге битовых операций для вещественных чисел
Lure Of Chaos 18.07.2010 22:05 # 0
интересно, это может иметь какой-нибудь практический смысл, или судьба совершенных чисел повторится - красиво, но бесполезно?
inkanus-gray 18.07.2010 22:08 # 0
Lure Of Chaos 18.07.2010 22:13 # +1
inkanus-gray 18.07.2010 22:16 # 0
Lure Of Chaos 18.07.2010 22:23 # 0
достаточно мощный компьютер может предказать будущее
время лишено мистицизма - в том утверждении, что "никто не знает, что будет" - и, возможно, все "существующее в будущем" - "уже" существует давно
Lure Of Chaos 18.07.2010 22:53 # 0
но это уже уводит мысль в направлении о копирастии, что информация должна быть свободной )))
megakoteyka 12.08.2010 13:38 # 0
И получается, что при достаточно длинном ключе не хватит не то, что времени на перебор, а еще и тупо энергии, даже если злоумышленник умудрится запитать свой мегакомп от Солнца. Тут уж как технологии не развивай - не вскроешь.
А еще можно вспомнить о "сроке годности" информации - через год взлома перебором скрытая информация может запросто потерять свою ценность.
Lure Of Chaos 12.08.2010 13:53 # 0
megakoteyka 12.08.2010 14:08 # 0
Обратите внимание на раздел "Оценка предельных мощностей взлома" - энергии Солнца хватит лишь на 250-разрядный ключ.
Lure Of Chaos 12.08.2010 14:10 # 0
megakoteyka 12.08.2010 14:36 # 0
bugmenot 19.07.2010 20:43 # +2
inkanus-gray 20.07.2010 00:35 # 0
А для типа Extended (80 бит) придётся вводить ^array[0..9]of Byte или ^array[0..4]of SmallWord и ксорить по частям.
bugmenot 20.07.2010 07:44 # 0
x0wl 20.07.2010 14:44 # 0
bugmenot 20.07.2010 15:04 # +1
x0wl 20.07.2010 16:33 # +2
ctm 26.08.2010 16:25 # +1
type hack = ^Longint;
var t: longint;
...
t := hack(@x)^ - hack(@y)^;
if (t < 0) then t := -t;
isEQ := t < (1 shl n); // n - точность. чем меньше, тем точнее. погрешность в мантиссе, а знак и экспонента должны совпадать.
ну случай с нулем отдельно нужно обрабатывать.
и на значениях работать будет ;)
inkanus-gray 18.07.2010 21:42 # 0
Lure Of Chaos 18.07.2010 21:55 # −3
я о том, что, например, 2 and 3 не представляется таким же понятным действием, как, например 2 + 3. тогда как даже тригонометрические функции хорошо представимы соотношением углов и сторон треугольника, комплексные числа - как двумерная числовая величина, и т.д.
megakoteyka 12.08.2010 13:29 # +2
Lure Of Chaos 18.07.2010 22:02 # 0
но для хора вещественных - самое то, что надо, браво инканус!