This commit is contained in:
nikikalwar 2024-07-17 10:39:47 +09:00 committed by GitHub
commit 17f5219d95
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 0 deletions

View File

@ -19,5 +19,8 @@ describe('fastPowering', () => {
expect(fastPowering(16, 16)).toBe(18446744073709552000); expect(fastPowering(16, 16)).toBe(18446744073709552000);
expect(fastPowering(7, 21)).toBe(558545864083284000); expect(fastPowering(7, 21)).toBe(558545864083284000);
expect(fastPowering(100, 9)).toBe(1000000000000000000); expect(fastPowering(100, 9)).toBe(1000000000000000000);
expect(fastPowering(5, -5)).toBe(0.0003200000000000002);
expect(fastPowering(-5, 5)).toBe(-3125);
expect(fastPowering(-5, -5)).toBe(-0.0003200000000000002);
}); });
}); });

View File

@ -14,6 +14,12 @@ export default function fastPowering(base, power) {
return 1; return 1;
} }
if (power < 0) {
const powerNext = power * -1;
const baseNext = 1 / base;
return fastPowering(baseNext, powerNext);
}
if (power % 2 === 0) { if (power % 2 === 0) {
// If the power is even... // If the power is even...
// we may recursively redefine the result via twice smaller powers: // we may recursively redefine the result via twice smaller powers: