В общем, форма с положительной силой немного лучше, хотя при малом количестве она, скорее всего, не будет иметь практического эффекта. Конкретные случаи можно выделить. Например, если a или b является степенью двойки, ее следует использовать в качестве знаменателя, поскольку в этом случае деление не имеет ошибки округления.
В этом ответе я предполагаю двоичную с плавающей точкой IEEE-754 с округлением до ближайшего числа, связанного с четностью, и что соответствующие значения находятся в нормальном диапазоне формата с плавающей запятой.
Дано a
, b
и x
со значениями a , b и x , а также реализация pow
который вычисляет представимое значение, ближайшее к идеальному математическому значению (фактические реализации обычно не так хороши), pow(a/b, x)
вычисляет ( a / b • (1 + e * 1025) * 0 )) x • (1 + e 1 ), где e 0 - ошибка округления, которая возникает в делении, а e 1 - ошибка округления, возникающая в pow
, и pow(b/a, -x)
вычисляет ( * +1046 * б * 1 047 * / а * 1 049 * • (1 + е * ** 1 052 тысяча пятьдесят один * 2 * 1 053 *)) х • (1 + e 3 ), где e 2 и e 3 ошибки округления в этом делении и pow
соответственно.
Каждая из ошибок e 0 … e 3 лежит в интервале [- u / 2, u / 2], где u - единица наименьшей точности (ULP), равная 1 в формате с плавающей запятой. (Обозначение [ p , q ] - это интервал, содержащий все значения от p до q , включая p и q .) В случае, если результат близок к краю бинарной области (где показатель степени с плавающей точкой изменяется, а значение около 1), нижняя граница может быть - u / 4. В настоящее время я не буду анализировать этот случай.
Перезапись, это ( a / b ) x • (1 + e 0 ) x • (1 + e 1 ) и ( a / б * * одна тысяча сто двадцать шесть) * ** +1128 одна тысяча сто двадцать семь * х * ** 1130 тысяча сто двадцать девять * • (1 + * +1131 * е * * 2 тысячи сто тридцать три ) х • (1 + е 3 ). Это показывает, что основная разница заключается в (1 + e 0 ) x против (1 + e 2 ) х . 1 + e 1 против 1 + e 3 также является разницей, но это только окончательное округление. [Я могу рассмотреть дальнейший анализ этого позже, но пока опущу его.]
Рассмотрим (1 + e 0 ) x и (1 + e 2 ) - x . Потенциальные значения первого диапазона выражений [(1− u / 2) x , (1 + u / 2) x ], в то время как второй охватывает [(1 + u / 2) ) - x , (1− u / 2) - x ]. Когда x > 0, второй интервал длиннее первого:
- Длина первого: (1 + u / 2) x - (1 + u / 2) х .
- Длина секунды равна (1 / (1− u / 2)) x - (1 / (1 + u / 2)) х .
- Умножение последнего на (1− u 2 / 2 2 ) x производит (( 1- и * * 2 тысяча двести пятьдесят четыре / 2 2 ) / (1- * * и одна тысяча двести пятьдесят восемь / 2)) х - ((1− u 2 / 2 2 ) / (1 + u / 2)) x = (1 + u / 2) x - (1 + u / 2) x , то есть длина первого интервала.
- 1− u 2 / 2 2 <1, сo (1− <em>u 2 / 2 2 ) x <1 для положительного <em>x .
- Поскольку первая длина равна второй длине, умноженной на число меньше единицы, первый интервал короче.
Таким образом, форма, в которой показатель степени положителен,лучше в том смысле, что он имеет более короткий интервал потенциальных результатов.
Тем не менее, эта разница очень мала.Я не был бы удивлен, если бы это было ненаблюдаемым на практике.Кроме того, можно интересоваться распределением вероятностей ошибок, а не диапазоном потенциальных ошибок.Я подозреваю, что это также способствовало бы положительным показателям.