# Largest rectangle that can be inscribed in a semicircle

Given a semicircle of radius** r**, we have to find the largest rectangle that can be inscribed in the semicircle, with base lying on the diameter.**Examples:**

Input : r = 4 Output : 16 Input : r = 5 Output :25

Let **r** be the radius of the semicircle, **x** one half of the base of the rectangle, and **y** the height of the rectangle. We want to maximize the area, A = 2xy.

So from the diagram we have, **y = âˆš(r^2 – x^2)**

So, **A = 2*x*(âˆš(r^2 – x^2))**, or **dA/dx = 2*âˆš(r^2 – x^2) -2*x^2/âˆš(r^2 – x^2)**

Setting this derivative equal to 0 and solving for x, **dA/dx = 0 **

or, **2*âˆš(r^2 – x^2) – 2*x^2/âˆš(r^2 – x^2) = 0** **2r^2 – 4x^2 = 0 ****x = r/âˆš2**

This is the maximum of the area as, **dA/dx > 0 **when **x > r/âˆš2**

and, **dA/dx < 0** when **x > r/âˆš2**

Since **y =âˆš(r^2 – x^2)** we then have**y = r/âˆš2**

Thus, the base of the rectangle has **length = r/âˆš2** and its height has **length âˆš2*r/2**.

So, Area, **A=r^2**

## C++

`// C++ Program to find the` `// the biggest rectangle` `// which can be inscribed` `// within the semicircle` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the area` `// of the biggest rectangle` `float` `rectanglearea(` `float` `r)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(r < 0)` ` ` `return` `-1;` ` ` `// area of the rectangle` ` ` `float` `a = r * r;` ` ` `return` `a;` `}` `// Driver code` `int` `main()` `{` ` ` `float` `r = 5;` ` ` `cout << rectanglearea(r) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java Program to find the` `// the biggest rectangle` `// which can be inscribed` `// within the semicircle` `class` `GFG` `{` `// Function to find the area` `// of the biggest rectangle` `static` `float` `rectanglearea(` `float` `r)` `{` `// the radius cannot be negative` `if` `(r < ` `0` `)` ` ` `return` `-` `1` `;` `// area of the rectangle` `float` `a = r * r;` `return` `a;` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `float` `r = ` `5` `;` ` ` `System.out.println((` `int` `)rectanglearea(r));` `}` `}` `// This code is contributed` `// by ChitraNayal` |

## Python 3

`# Python 3 Program to find the` `# the biggest rectangle` `# which can be inscribed` `# within the semicircle` `# Function to find the area` `# of the biggest rectangle` `def` `rectanglearea(r) :` ` ` `# the radius cannot` ` ` `# be negative` ` ` `if` `r < ` `0` `:` ` ` `return` `-` `1` ` ` `# area of the rectangle` ` ` `a ` `=` `r ` `*` `r` ` ` `return` `a` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `r ` `=` `5` ` ` `# function calling` ` ` `print` `(rectanglearea(r))` `# This code is contributed` `# by ANKITRAI1` |

## C#

`// C# Program to find the` `// the biggest rectangle` `// which can be inscribed` `// within the semicircle` `using` `System;` `class` `GFG` `{` `// Function to find the area` `// of the biggest rectangle` `static` `float` `rectanglearea(` `float` `r)` `{` `// the radius cannot be negative` `if` `(r < 0)` ` ` `return` `-1;` `// area of the rectangle` `float` `a = r * r;` `return` `a;` `}` `// Driver code` `public` `static` `void` `Main()` `{` ` ` `float` `r = 5;` ` ` `Console.Write((` `int` `)rectanglearea(r));` `}` `}` `// This code is contributed` `// by ChitraNayal` |

## PHP

`<?php` `// PHP Program to find the` `// the biggest rectangle` `// which can be inscribed` `// within the semicircle` `// Function to find the area` `// of the biggest rectangle` `function` `rectanglearea(` `$r` `)` `{` ` ` `// the radius cannot` ` ` `// be negative` ` ` `if` `(` `$r` `< 0)` ` ` `return` `-1;` ` ` `// area of the rectangle` ` ` `$a` `= ` `$r` `* ` `$r` `;` ` ` `return` `$a` `;` `}` `// Driver code` `$r` `= 5;` `echo` `rectanglearea(` `$r` `).` `"\n"` `;` `// This code is contributed` `// by ChitraNayal` `?>` |

## Javascript

`<script>` `// javascript Program to find the` `// the biggest rectangle` `// which can be inscribed` `// within the semicircle` `// Function to find the area` `// of the biggest rectangle` `function` `rectanglearea(r)` `{` ` ` `// the radius cannot be negative` ` ` `if` `(r < 0)` ` ` `return` `-1;` ` ` ` ` `// area of the rectangle` ` ` `var` `a = r * r;` ` ` ` ` `return` `a;` `}` `// Driver code` `var` `r = 5;` `document.write(parseInt(rectanglearea(r)));` `// This code is contributed by Amit Katiyar` `</script>` |

**OUTPUT :**

25