Skip to content

Commit 2b051a2

Browse files
authored
Create real_and_reactive_power.py (TheAlgorithms#8665)
1 parent 54dedf8 commit 2b051a2

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import math
2+
3+
4+
def real_power(apparent_power: float, power_factor: float) -> float:
5+
"""
6+
Calculate real power from apparent power and power factor.
7+
8+
Examples:
9+
>>> real_power(100, 0.9)
10+
90.0
11+
>>> real_power(0, 0.8)
12+
0.0
13+
>>> real_power(100, -0.9)
14+
-90.0
15+
"""
16+
if (
17+
not isinstance(power_factor, (int, float))
18+
or power_factor < -1
19+
or power_factor > 1
20+
):
21+
raise ValueError("power_factor must be a valid float value between -1 and 1.")
22+
return apparent_power * power_factor
23+
24+
25+
def reactive_power(apparent_power: float, power_factor: float) -> float:
26+
"""
27+
Calculate reactive power from apparent power and power factor.
28+
29+
Examples:
30+
>>> reactive_power(100, 0.9)
31+
43.58898943540673
32+
>>> reactive_power(0, 0.8)
33+
0.0
34+
>>> reactive_power(100, -0.9)
35+
43.58898943540673
36+
"""
37+
if (
38+
not isinstance(power_factor, (int, float))
39+
or power_factor < -1
40+
or power_factor > 1
41+
):
42+
raise ValueError("power_factor must be a valid float value between -1 and 1.")
43+
return apparent_power * math.sqrt(1 - power_factor**2)
44+
45+
46+
if __name__ == "__main__":
47+
import doctest
48+
49+
doctest.testmod()

0 commit comments

Comments
 (0)