-
Notifications
You must be signed in to change notification settings - Fork 12.4k
/
Copy pathpower_of_n.py
58 lines (44 loc) · 1.36 KB
/
power_of_n.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Assign values to author and version.
__author__ = "Himanshu Gupta"
__version__ = "1.0.0"
__date__ = "2023-09-03"
def binaryExponentiation(x: float, n: int) -> float:
"""
Function to calculate x raised to the power n (i.e., x^n) where x is a float number and n is an integer and it will return float value
Example 1:
Input: x = 2.00000, n = 10
Output: 1024.0
Example 2:
Input: x = 2.10000, n = 3
Output: 9.261000000000001
Example 3:
Input: x = 2.00000, n = -2
Output: 0.25
Explanation: 2^-2 = 1/(2^2) = 1/4 = 0.25
"""
if n == 0:
return 1
# Handle case where, n < 0.
if n < 0:
n = -1 * n
x = 1.0 / x
# Perform Binary Exponentiation.
result = 1
while n != 0:
# If 'n' is odd we multiply result with 'x' and reduce 'n' by '1'.
if n % 2 == 1:
result *= x
n -= 1
# We square 'x' and reduce 'n' by half, x^n => (x^2)^(n/2).
x *= x
n //= 2
return result
if __name__ == "__main__":
print(f"Author: {__author__}")
print(f"Version: {__version__}")
print(f"Function Documentation: {binaryExponentiation.__doc__}")
print(f"Date: {__date__}")
print() # Blank Line
print(binaryExponentiation(2.00000, 10))
print(binaryExponentiation(2.10000, 3))
print(binaryExponentiation(2.00000, -2))