Given here is a regular octagon of side length **a**, the task is to find the length of it’s diagonal.**Examples:**

Input: a = 4 Output: 10.4525 Input: a = 5 Output: 13.0656

**Approach**: From the diagram it is clear that,

AB^2 + BC^2 = AC^2

here, in triangleAED,b^2 + b^2 = a^2

or,b=a/√2(Please refer)

So,AB = a + 2b = a + √2a

and,BC = a

So, diagonalAC = a√(4 + 2√2)

Below is the implementation of the above approach:

## C++

`// C++ Program to find the diagonal` `// of the octagon` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the diagonal` `// of the octagon` `float` `octadiagonal(` `float` `a)` `{` ` ` `// side cannot be negative` ` ` `if` `(a < 0)` ` ` `return` `-1;` ` ` `// diagonal of the octagon` ` ` `return` `a * ` `sqrt` `(4 + (2 * ` `sqrt` `(2)));` `}` `// Driver code` `int` `main()` `{` ` ` `float` `a = 4;` ` ` `cout << octadiagonal(a) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java Program to find the diagonal` `// of the octagon` `import` `java.util.*;` `class` `solution` `{` ` ` `// Function to find the diagonal` `// of the octagon` `static` `double` `octadiagonal(` `double` `a)` `{` ` ` ` ` `// side cannot be negative` ` ` `if` `(a < ` `0` `)` ` ` `return` `-` `1` `;` ` ` ` ` `// diagonal of the octagon` ` ` `return` `a * Math.sqrt(` `4` `+ (` `2` `* Math.sqrt(` `2` `)));` `}` ` ` `// Driver code` `public` `static` `void` `main(String args[])` `{` ` ` `double` `a = ` `4` `;` ` ` `System.out.println( octadiagonal(a));` ` ` `}` `}` `//contributed by Arnab Kundu` |

## Python3

`# Python3 Program to find the diagonal` `# of the octagon` `import` `math` `# Function to find the diagonal` `# of the octagon` `def` `octadiagonal(a):` ` ` `# side cannot be negative` ` ` `if` `(a < ` `0` `):` ` ` `return` `-` `1` `;` ` ` `# diagonal of the octagon` ` ` `return` `a ` `*` `math.sqrt(` `4` `+` `(` `2` `*` `math.sqrt(` `2` `)))` `# Driver code` `if` `__name__` `=` `=` `'__main__'` `:` ` ` `a ` `=` `4` ` ` `print` `(octadiagonal(a))` `# This code is contributed by` `# Shivi_Aggarwal` |

## C#

`// C# Program to find the diagonal` `// of the octagon` `using` `System;` `class` `GFG` `{` `// Function to find the diagonal` `// of the octagon` `static` `double` `octadiagonal(` `double` `a)` `{` ` ` `// side cannot be negative` ` ` `if` `(a < 0)` ` ` `return` `-1;` ` ` `// diagonal of the octagon` ` ` `return` `a * Math.Sqrt(4 +` ` ` `(2 * Math.Sqrt(2)));` `}` `// Driver code` `public` `static` `void` `Main()` `{` ` ` `double` `a = 4;` ` ` `Console.WriteLine(octadiagonal(a));` `}` `}` `// This code is contributed` `// by inder_verma` |

## PHP

`<?php` `// PHP program to find the diagonal` `// of the octagon` `// Function to find the diagonal` `// of the octagon` `function` `octadiagonal(` `$a` `)` `{` ` ` `// side cannot be negative` ` ` `if` `(` `$a` `< 0)` ` ` `return` `-1;` ` ` `// diagonal of the octagon` ` ` `return` `$a` `* sqrt(4 + (2 * sqrt(2)));` `}` `// Driver code` ` ` `$a` `= 4;` ` ` `echo` `octadiagonal(` `$a` `) ;` `// This code is contributed` `// by inder_verma` `?>` |

## Javascript

`<script>` `// javascript Program to find the diagonal` `// of the octagon` `// Function to find the diagonal` `// of the octagon` `function` `octadiagonal(a)` `{` ` ` ` ` `// side cannot be negative` ` ` `if` `(a < 0)` ` ` `return` `-1;` ` ` ` ` `// diagonal of the octagon` ` ` `return` `a * Math.sqrt(4 + (2 * Math.sqrt(2)));` `}` `var` `a = 4;` `document.write( octadiagonal(a).toFixed(5));` `// This code is contributed by 29AjayKumar` `</script>` |

**Output:**

10.4525

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**