Square root of two Complex Numbers

Given two positive integers A and B representing the complex number Z in the form of Z = A + i * B, the task is to find the square root of the given complex number.
Examples:
Input: A = 0, B =1
Output:
The Square roots are:
0.707107 + 0.707107*i
-0.707107 – 0.707107*iInput: A = 4, B = 0
Output:
The Square roots are:
2
-2
Approach: The given problem can be solved based on the following observations:
- It is known that the square root of a complex number is also a complex number.
- Then considering the square root of the complex number equal to X + i*Y, the value of (A + i*B) can be expressed as:
- A + i * B = (X + i * Y) * (X + i * Y)
- A + i * B = X2 – Y2+ 2 * i * X * Y
- Equating the value of real and complex parts individually:
From the above observations, calculate the value of X and Y using the above formula and print the value (X + i*Y) as the resultant square root value of the given complex number.
Below is the implementation of the above approach:
C++
// C++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to find the square root of// a complex numbervoid complexRoot(int A, int B){ // Stores all the square roots vector<pair<double, double> > ans; // Stores the first square root double X1 = abs(sqrt((A + sqrt(A * A + B * B)) / 2)); double Y1 = B / (2 * X1); // Push the square root in the ans ans.push_back({ X1, Y1 }); // Stores the second square root double X2 = -1 * X1; double Y2 = B / (2 * X2); // If X2 is not 0 if (X2 != 0) { // Push the square root in // the array ans[] ans.push_back({ X2, Y2 }); } // Stores the third square root double X3 = (A - sqrt(A * A + B * B)) / 2; // If X3 is greater than 0 if (X3 > 0) { X3 = abs(sqrt(X3)); double Y3 = B / (2 * X3); // Push the square root in // the array ans[] ans.push_back({ X3, Y3 }); // Stores the fourth square root double X4 = -1 * X3; double Y4 = B / (2 * X4); if (X4 != 0) { // Push the square root // in the array ans[] ans.push_back({ X4, Y4 }); } } // Prints the square roots cout << "The Square roots are: " << endl; for (auto p : ans) { cout << p.first; if (p.second > 0) cout << "+"; if (p.second) cout << p.second << "*i" << endl; else cout << endl; }}// Driver Codeint main(){ int A = 0, B = 1; complexRoot(A, B); return 0;} |
Java
// Java program for the above approachimport java.util.*;class GFG{ static class pair{ double first, second; public pair(double first, double second) { this.first = first; this.second = second; } } // Function to find the square root of// a complex numberstatic void complexRoot(int A, int B){ // Stores all the square roots Vector<pair> ans = new Vector<pair>(); // Stores the first square root double X1 = Math.abs(Math.sqrt((A + Math.sqrt(A * A + B * B)) / 2)); double Y1 = B / (2 * X1); // Push the square root in the ans ans.add(new pair( X1, Y1 )); // Stores the second square root double X2 = -1 * X1; double Y2 = B / (2 * X2); // If X2 is not 0 if (X2 != 0) { // Push the square root in // the array ans[] ans.add(new pair(X2, Y2)); } // Stores the third square root double X3 = (A - Math.sqrt(A * A + B * B)) / 2; // If X3 is greater than 0 if (X3 > 0) { X3 = Math.abs(Math.sqrt(X3)); double Y3 = B / (2 * X3); // Push the square root in // the array ans[] ans.add(new pair(X3, Y3)); // Stores the fourth square root double X4 = -1 * X3; double Y4 = B / (2 * X4); if (X4 != 0) { // Push the square root // in the array ans[] ans.add(new pair(X4, Y4)); } } // Prints the square roots System.out.print("The Square roots are: " + "\n"); for(pair p : ans) { System.out.printf("%.4f", p.first); if (p.second > 0) System.out.print("+"); if (p.second != 0) System.out.printf("%.4f*i\n", p.second); else System.out.println(); }}// Driver Codepublic static void main(String[] args){ int A = 0, B = 1; complexRoot(A, B);}}// This code is contributed by shikhasingrajput |
Python3
# Python3 program for the above approachfrom math import sqrt# Function to find the square root of# a complex numberdef complexRoot(A, B): # Stores all the square roots ans = [] # Stores the first square root X1 = abs(sqrt((A + sqrt(A * A + B * B)) / 2)) Y1 = B / (2 * X1) # Push the square root in the ans ans.append([X1, Y1]) # Stores the second square root X2 = -1 * X1 Y2 = B / (2 * X2) # If X2 is not 0 if (X2 != 0): # Push the square root in # the array ans[] ans.append([X2, Y2]) # Stores the third square root X3 = (A - sqrt(A * A + B * B)) / 2 # If X3 is greater than 0 if (X3 > 0): X3 = abs(sqrt(X3)) Y3 = B / (2 * X3) # Push the square root in # the array ans[] ans.append([X3, Y3]) # Stores the fourth square root X4 = -1 * X3 Y4 = B / (2 * X4) if (X4 != 0): # Push the square root # in the array ans[] ans.append([X4, Y4]) # Prints the square roots print("The Square roots are: ") for p in ans: print(round(p[0], 6), end = "") if (p[1] > 0): print("+", end = "") if (p[1]): print(str(round(p[1], 6)) + "*i") else: print()# Driver Codeif __name__ == '__main__': A,B = 0, 1 complexRoot(A, B)# This code is contributed by mohit kumar 29 |
C#
// C# code to implement the approachusing System;using System.Collections.Generic;class GFG{ // Definition of Pair struct private struct Pair { public double First; public double Second; // Constructor public Pair(double first, double second) { First = first; Second = second; } } // Function to find the square root of // a complex number private static void ComplexRoot(int A, int B) { // Stores all the square roots var ans = new List<Pair>(); // Stores the first square root double X1 = Math.Abs(Math.Sqrt((A + Math.Sqrt(A * A + B * B)) / 2)); double Y1 = B / (2 * X1); // Push the square root in the ans ans.Add(new Pair(X1, Y1)); // Stores the second square root double X2 = -1 * X1; double Y2 = B / (2 * X2); // If X2 is not 0 if (X2 != 0) { // Push the square root in // the array ans[] ans.Add(new Pair(X2, Y2)); } // Stores the third square root double X3 = (A - Math.Sqrt(A * A + B * B)) / 2; // If X3 is greater than 0 if (X3 > 0) { X3 = Math.Abs(Math.Sqrt(X3)); double Y3 = B / (2 * X3); // Push the square root in // the array ans[] ans.Add(new Pair(X3, Y3)); // Stores the fourth square root double X4 = -1 * X3; double Y4 = B / (2 * X4); if (X4 != 0) { // Push the square root // in the array ans[] ans.Add(new Pair(X4, Y4)); } } // Prints the square roots Console.WriteLine("The Square roots are: \n"); foreach (var p in ans) { Console.Write($"{p.First:0.000000}"); if (p.Second > 0) { Console.Write("+"); } if (p.Second != 0) { Console.Write($"{p.Second:0.000000} * i\n"); } else { Console.WriteLine(); } } } // Driver code static void Main(string[] args) { int A = 0, B = 1; ComplexRoot(A, B); }}// This code is contributed by phasing17 |
Javascript
<script>// Javascript program for the above approach// Function to find the square root of// a complex numberfunction complexRoot(A, B){ // Stores all the square roots var ans = []; // Stores the first square root var X1 = Math.abs(Math.sqrt((A + Math.sqrt(A * A + B * B)) / 2)); var Y1 = B / (2 * X1); // Push the square root in the ans ans.push([X1, Y1]); // Stores the second square root var X2 = -1 * X1; var Y2 = B / (2 * X2); // If X2 is not 0 if (X2 != 0) { // Push the square root in // the array ans[] ans.push([X2, Y2]); } // Stores the third square root var X3 = (A - Math.sqrt(A * A + B * B)) / 2; // If X3 is greater than 0 if (X3 > 0) { X3 = Math.abs(Math.sqrt(X3)); var Y3 = B / (2 * X3); // Push the square root in // the array ans[] ans.push([X3, Y3]); // Stores the fourth square root var X4 = -1 * X3; var Y4 = B / (2 * X4); if (X4 != 0) { // Push the square root // in the array ans[] ans.push([X4, Y4]); } } // Prints the square roots document.write( "The Square roots are: <br>"); ans.forEach(p => { document.write( p[0].toFixed(6)); if (p[1] > 0) document.write( "+"); if (p[1]) document.write( p[1].toFixed(6) + "*i<br>" ); else document.write("<br>"); });}// Driver Codevar A = 0, B = 1;complexRoot(A, B);</script> |
Output:
The Square roots are: 0.707107+0.707107*i -0.707107-0.707107*i
Time Complexity: O(1)
Auxiliary Space: O(1)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!




