mirror of
https://github.com/chylex/Query.git
synced 2025-07-06 09:04:34 +02:00
Compare commits
2 Commits
d52ec8a615
...
2b9d5bba8f
Author | SHA1 | Date | |
---|---|---|---|
2b9d5bba8f | |||
8380aaa9f8 |
@ -36,14 +36,28 @@ public abstract record Number : IAdditionOperators<Number, Number, Number>,
|
||||
public override Number Pow(Number exponent) {
|
||||
if (exponent is Rational { Value: {} rationalExponent }) {
|
||||
Fraction fractionExponent = rationalExponent.GetImproperFraction();
|
||||
if (fractionExponent.Denominator == 1 && fractionExponent.Numerator >= 0) {
|
||||
|
||||
if (fractionExponent.Numerator >= 0 && fractionExponent.Denominator == 1) {
|
||||
try {
|
||||
return new Rational(BigRational.Pow(Value, fractionExponent.Numerator));
|
||||
} catch (OverflowException) {}
|
||||
}
|
||||
|
||||
if (fractionExponent.Numerator == 1 && fractionExponent.Denominator > 1) {
|
||||
Number result = PowAsDecimal(exponent);
|
||||
|
||||
BigRational assumedPerfectPowerRoot = new BigRational(decimal.Floor(result.AsDecimal));
|
||||
BigRational assumedPerfectPower = BigRational.Pow(assumedPerfectPowerRoot, fractionExponent.Denominator);
|
||||
|
||||
return assumedPerfectPower == Value ? assumedPerfectPowerRoot : result;
|
||||
}
|
||||
}
|
||||
|
||||
return new Decimal(AsDecimal).Pow(exponent);
|
||||
return PowAsDecimal(exponent);
|
||||
|
||||
Number PowAsDecimal(Number number) {
|
||||
return new Decimal(AsDecimal).Pow(number);
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString(IFormatProvider? formatProvider) {
|
||||
|
@ -109,7 +109,7 @@
|
||||
JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8AAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA
|
||||
AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA
|
||||
AEE=
|
||||
</value>
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing.Common" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
@ -155,6 +155,6 @@
|
||||
JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8AAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA
|
||||
AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA
|
||||
AEE=
|
||||
</value>
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
Loading…
Reference in New Issue
Block a user