Program to find the length of Latus Rectum of a Parabola

Last Updated : 23 Jul, 2025

Given a, b, and c the coefficients of X2, X, and the constant term in the general equation of the parabola  y = a\times x^{2} + b\times x + c              , the task is to find the length of the Latus Rectum of the parabola.

Examples:

Input: a = 3, b = 5, c = 1
Output: 0.333333

Input: a = 4, b = 0, c = 4
Output: 0.25

Approach: The given problem can be solved based on the following observations: 

Observation:

  • The Latus rectum of a parabola is the perpendicular line to the axis and at the focus of parabola and its length is equal to 4 times the distance between the focus and vertex of the parabola.

  • Therefore, the task is reduced to find the distance between focus and vertex of the parabola using formula:
    • d = sqrt( (x_{1}-x_{2})^{2} + (y_{1}-y_{2})^{2} )

Follow the steps below to solve the problem:

  • Initialize two variables, say vertex and focus to store the coordinates of vertex and focus of the parabola.
  • Find the coordinates of the vertex and focus of the parabola and store in corresponding variables.
  • Initialize a variable, say length, and set it to 4 times the distance between vertex and focus of the parabola.
  • Print the value of length as the answer.

Below is the implementation of the above approach:

C++
// C++ program for the above approach

#include <bits/stdc++.h>
using namespace std;

// Function to calculate distance
// between two points
float distance(float x1, float y1,
               float x2, float y2)
{
    // Calculating distance
    return sqrt((x2 - x1) * (x2 - x1)
                + (y2 - y1) * (y2 - y1));
}

// Function to calculate length of
// the latus rectum of a parabola
float lengthOfLatusRectum(float a,
                          float b, float c)
{
    // Stores the co-ordinates of
    // the vertex of the parabola
    pair<float, float> vertex
        = { (-b / (2 * a)),
            (((4 * a * c) - (b * b)) / (4 * a)) };

    // Stores the co-ordinates of
    // the focus of parabola
    pair<float, float> focus
        = { (-b / (2 * a)),
            (((4 * a * c) - (b * b) + 1) / (4 * a)) };

    // Print the distance between focus and vertex
    cout << 4 * distance(
                    focus.first, focus.second,
                    vertex.first, vertex.second);
}

// Driver Code
int main()
{
    // Given a, b & c
    float a = 3, b = 5, c = 1;

    // Function call
    lengthOfLatusRectum(a, b, c);

    return 0;
}
Java
// Java program for the above approach
class GFG{
  static class pair
  { 
    float first;
    float second; 
    public pair(float first, float second)  
    { 
      this.first = first; 
      this.second = second; 
    }    
  } 

  // Function to calculate distance
  // between two points
  static float distance(float x1, float y1,
                        float x2, float y2)
  {

    // Calculating distance
    return (float) Math.sqrt((x2 - x1) * (x2 - x1)
                             + (y2 - y1) * (y2 - y1));
  }

  // Function to calculate length of
  // the latus rectum of a parabola
  static void lengthOfLatusRectum(float a,
                                  float b, float c)
  {

    // Stores the co-ordinates of
    // the vertex of the parabola
    pair vertex
      = new pair( (-b / (2 * a)),
                 (((4 * a * c) - (b * b)) / (4 * a)) );

    // Stores the co-ordinates of
    // the focus of parabola
    pair focus
      = new pair( (-b / (2 * a)),
                 (((4 * a * c) - (b * b) + 1) / (4 * a)) );

    // Print the distance between focus and vertex
    System.out.print(4 * distance(
      (float)focus.first, (float)focus.second,
      (float)vertex.first, (float)vertex.second));
  }

  // Driver Code
  public static void main(String[] args)
  {

    // Given a, b & c
    float a = 3, b = 5, c = 1;

    // Function call
    lengthOfLatusRectum(a, b, c);

  }
}

// This code is contributed by 29AjayKumar 
Python3
# Python 3 program for the above approach
from math import sqrt

# Function to calculate distance
# between two points
def distance(x1, y1, x2, y2):
  
    # Calculating distance
    return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))

# Function to calculate length of
# the latus rectum of a parabola
def lengthOfLatusRectum(a, b, c):
  
    # Stores the co-ordinates of
    # the vertex of the parabola
    vertex =  [(-b / (2 * a)), (((4 * a * c) - (b * b)) / (4 * a))]

    # Stores the co-ordinates of
    # the focus of parabola
    focus = [(-b / (2 * a)), (((4 * a * c) - (b * b) + 1) / (4 * a))]

    # Print the distance between focus and vertex
    print("{:.6f}".format(4 * distance(focus[0], focus[1], vertex[0], vertex[1])))

# Driver Code
if __name__  == "__main__":
  
    # Given a, b & c
    a = 3
    b = 5
    c = 1

    # Function call
    lengthOfLatusRectum(a, b, c)
    
    # This code is contributed by bgangwar59.
C#
// C# program for the above approach
using System;

public class GFG{
  class pair
  { 
    public float first;
    public float second; 
    public pair(float first, float second)  
    { 
      this.first = first; 
      this.second = second; 
    }    
  } 

  // Function to calculate distance
  // between two points
  static float distance(float x1, float y1,
                        float x2, float y2)
  {

    // Calculating distance
    return (float) Math.Sqrt((x2 - x1) * (x2 - x1)
                             + (y2 - y1) * (y2 - y1));
  }

  // Function to calculate length of
  // the latus rectum of a parabola
  static void lengthOfLatusRectum(float a,
                                  float b, float c)
  {

    // Stores the co-ordinates of
    // the vertex of the parabola
    pair vertex
      = new pair( (-b / (2 * a)),
                 (((4 * a * c) - (b * b)) / (4 * a)) );

    // Stores the co-ordinates of
    // the focus of parabola
    pair focus
      = new pair( (-b / (2 * a)),
                 (((4 * a * c) - (b * b) + 1) / (4 * a)) );

    // Print the distance between focus and vertex
    Console.Write(4 * distance(
      (float)focus.first, (float)focus.second,
      (float)vertex.first, (float)vertex.second));
  }

  // Driver Code
  public static void Main(String[] args)
  {

    // Given a, b & c
    float a = 3, b = 5, c = 1;

    // Function call
    lengthOfLatusRectum(a, b, c);

  }
}

 

// This code is contributed by 29AjayKumar 
JavaScript
<script>
    // Javascript program for the above approach
    
    // Function to calculate distance
    // between two points
    function distance(x1, y1, x2, y2)
    {
        // Calculating distance
        return Math.sqrt((x2 - x1) * (x2 - x1)
                    + (y2 - y1) * (y2 - y1));
    }

    // Function to calculate length of
    // the latus rectum of a parabola
    function lengthOfLatusRectum(a, b, c)
    {
        // Stores the co-ordinates of
        // the vertex of the parabola
        let vertex
            = [ (-b / (2 * a)),
                (((4 * a * c) - (b * b)) / (4 * a)) ];

        // Stores the co-ordinates of
        // the focus of parabola
        let focus
            = [ (-b / (2 * a)),
                (((4 * a * c) - (b * b) + 1) / (4 * a)) ];

        // Print the distance between focus and vertex
        document.write((4 * distance(
                        focus[0], focus[1],
                        vertex[0], vertex[1])).toFixed(6));
    }
    
    // Given a, b & c
    let a = 3, b = 5, c = 1;
 
    // Function call
    lengthOfLatusRectum(a, b, c);
 
 // This code is contributed by divyeshrabadiya07.
</script>

 
 


Output: 
0.333333

 

Time Complexity: O(logn) because it is using inbuilt sqrt function
Auxiliary Space: O(1) 

Comment