From f0171a3d9b54b16b302e607366e37c056f2d6fd7 Mon Sep 17 00:00:00 2001 From: ashviz915 <154710760+avyukth-fll@users.noreply.github.com> Date: Wed, 22 Oct 2025 09:10:30 -0700 Subject: [PATCH] Ellipse perimeter calculation Updated the perimeter calculation for the Ellipse class to use Ramanujan's approximation --- geometry/geometry.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/geometry/geometry.py b/geometry/geometry.py index a0be8eb3befc..aa3f57f78c19 100644 --- a/geometry/geometry.py +++ b/geometry/geometry.py @@ -103,9 +103,12 @@ def area(self) -> float: def perimeter(self) -> float: """ >>> Ellipse(5, 10).perimeter - 47.12388980384689 + 48.44210548835644 """ - return math.pi * (self.major_radius + self.minor_radius) + a, b = self.major_radius, self.minor_radius + # Use Ramanujan's first approximation for ellipse perimeter + # https://en.wikipedia.org/wiki/Perimeter_of_an_ellipse#First_approximation + return math.pi * (3 * (a + b) - ((3 * a + b) * (a + 3 * b)) ** 0.5) class Circle(Ellipse):