I just found out that when entering a negative x and a decimal y, Math.Pow()
returns the not-defined value as result, which is wrong I guess. Calculating this in other programs, even like the windows Calculator works with a correct result. Also this case is not mentioned in the documentation.
Target Framework is 4.
Can anyone explain this?
The result is going to be complex number, so you have to use Complex
class from System.Numerics
namespace.
Complex n = new Complex(-2, 0);
Complex result = Complex.Pow(n, 1.1);
In case if result is real number ( integer power), then you can use Math.Pow
.
As @JeppeStigNielsen mentioned, the conversion from int
/ double
to Complex
is implicit, so the code can be shortened to:
Complex result = Complex.Pow(-2, 1.1);
Also this case is not mentioned in the documentation
You sure? From it's documentation ;
Parameters
x < 0 but not NegativeInfinity; y is not an integer, NegativeInfinity, or PositiveInfinity.
Return value
NaN
I'm not sure which OS you tried but it doesn't work in calc.exe (Win7 - 64bit) says Invalid Input .
As Ulugbek mentioned , taking 1.1
power of a negative value creates a complex number. Because (-2) 1.1 = (-2) 11/10 = (-2) 1/10 11 and getting 10
times rooth of -2
returns a complex number.
Since Math.Pow
takes and returns double
values, this doesn't fit with requirements. You can use Complex
class from System.Numerics
.
http://www.wolframalpha.com/input/?i=-2^1.1
Further reading: How is Math.Pow() implemented in .NET Framework?
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.