00 следует понимать как ограничение, а не как арифметическое выражение, которое можно вычислить напрямую.
На множестве действительных чисел этот предел «существует» (упрощение здесь) и равен 1, так что вы получите такой результат.
С другой стороны, на множестве комплексных чисел вы приближаетесь к существенной сингулярности; не существует единого комплексного числа, которое можно было бы присвоить пределу 00. Таким образом, NaN
является единственным разумным результатом.
Поэтому, если вам нужна непротиворечивая степенная функция, обработка 00 как NaN в реальном случае также будет разумным путем, поскольку установка 00 = 1 несколько хитрая. во всяком случае, в реальной арифметике; хотя и меньше, чем в сложном случае.
Обратите внимание, что здесь я несколько упростил математические расчеты, но повторю ключевой момент: не существует числа, которое было бы значимым результатом для 00, интерпретируемого как комплексная степенная функция.
Это включает в себя число 1. Для математически более строгого обсуждения вы можете взглянуть на https://math.stackexchange.com/ или другой ресурс, более ориентированный на математику.
Наконец, стоит отметить, что результат std::pow(std::complex(0.0, 0.0), 0)
определяется реализацией; вышеизложенное является обоснованием разумного выбора, сделанного вашей реализацией. Однако с точки зрения строгого стандарта C++ и без учета математического аспекта этой проблемы 1 также будет подходящим результатом, как и пи, -∞ и 0.
person
Baum mit Augen
schedule
29.06.2018