Здравствуйте, kepo4ka, Вы писали:
K>Здравствуйте, Кодт, вы тут много всего написали:
K>Насколько я понимаю применять такой алгоритм в принципе не стоит. Равно как и оценивать его эффективность.
K>Если переменная a и b, не целочисленные. И a намного больше b => a-=b даст нам a. И весь алгоритм посыпался.
Потому что плавающие числа
конечной разрядности не образуют группу ни по сложению, ни по умножению.
А фиксированные — образуют группу (целые — образуют даже кольцо — вычетов по модулю 2^n).
А еще они образуют группу по битовому сложению (xor). Отсюда — такая формула
a = a (-) b;
b = a (+) b;
a = a (-) b;
где (+), (-) это операция над группой и ее противоположность.
Общедоступны
3 варианта:
+|-,
-|+ (sic! обратите внимание на расположение операндов -- здесь нет коммутативности) и
^|^.
Абстрактная алгебра рулит!