Skip to content

Commit

Permalink
Create real_and_reactive_power.py (TheAlgorithms#8665)
Browse files Browse the repository at this point in the history
  • Loading branch information
rohan472000 authored Apr 17, 2023
1 parent 54dedf8 commit 2b051a2
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions electronics/real_and_reactive_power.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import math


def real_power(apparent_power: float, power_factor: float) -> float:
"""
Calculate real power from apparent power and power factor.
Examples:
>>> real_power(100, 0.9)
90.0
>>> real_power(0, 0.8)
0.0
>>> real_power(100, -0.9)
-90.0
"""
if (
not isinstance(power_factor, (int, float))
or power_factor < -1
or power_factor > 1
):
raise ValueError("power_factor must be a valid float value between -1 and 1.")
return apparent_power * power_factor


def reactive_power(apparent_power: float, power_factor: float) -> float:
"""
Calculate reactive power from apparent power and power factor.
Examples:
>>> reactive_power(100, 0.9)
43.58898943540673
>>> reactive_power(0, 0.8)
0.0
>>> reactive_power(100, -0.9)
43.58898943540673
"""
if (
not isinstance(power_factor, (int, float))
or power_factor < -1
or power_factor > 1
):
raise ValueError("power_factor must be a valid float value between -1 and 1.")
return apparent_power * math.sqrt(1 - power_factor**2)


if __name__ == "__main__":
import doctest

doctest.testmod()

0 comments on commit 2b051a2

Please sign in to comment.