В числовом программном обеспечении вы часто хотите проверить, равны ли два числа с плавающей точкой точно . LAPACK полон примеров для таких случаев. Конечно, наиболее распространенный случай - это когда вы хотите проверить, равно ли число с плавающей запятой равным «Ноль», «Один», «Два», «Половина». Если кому-то интересно, я могу выбрать некоторые алгоритмы и перейти к деталям.
Также в BLAS вы часто хотите проверить, является ли число с плавающей запятой точно нулем или единицей. Например, подпрограмма dgemv может вычислять операции вида
- y = бета * y + альфа * A * x
- y = бета * y + альфа * A ^ T * x
- y = бета * y + альфа * A ^ H * x
Таким образом, если бета равна единице, у вас есть «плюс», а для беты - ноль «простое назначение». Таким образом, вы, безусловно, можете сократить вычислительные затраты, если уделите этим (обычным) случаям особый подход.
Конечно, вы можете разработать подпрограммы BLAS таким образом, чтобы избежать точных сравнений (например, с помощью некоторых флагов). Однако LAPACK полон примеров, когда это невозможно.
P.S:.
Есть, конечно, много случаев, когда вы не хотите, чтобы проверка была "точно равна". Для многих это даже может быть единственным случаем, с которым им приходится иметь дело. Все, что я хочу отметить, это то, что есть и другие случаи.
Хотя LAPACK написан на Фортране, логика такая же, если вы используете другие языки программирования для числового программного обеспечения.