# Find cubic root of a number

Given a number n, find the cube root of n.

Examples:

```Input:  n = 3
Output: Cubic Root is 1.442250

Input: n = 8
Output: Cubic Root is 2.000000
```

We can use binary search. First we define error e. Let us say 0.0000001 in our case. The main steps of our algorithm for calculating the cubic root of a number n are:

1. Initialize start = 0 and end = n
2. Calculate mid = (start + end)/2
3. Check if the absolute value of (n – mid*mid*mid) < e. If this condition holds true then mid is our answer so return mid.
4. If (mid*mid*mid)>n then set end=mid
5. If (mid*mid*mid)<n set start=mid.

Below is the implementation of above idea.

## C++

 `// C++ program to find cubic root of a number ` `// using Binary Search ` `#include ` `using` `namespace` `std; ` ` `  `// Returns the absolute value of n-mid*mid*mid ` `double` `diff(``double` `n,``double` `mid) ` `{ ` `    ``if` `(n > (mid*mid*mid)) ` `        ``return` `(n-(mid*mid*mid)); ` `    ``else` `        ``return` `((mid*mid*mid) - n); ` `} ` ` `  `// Returns cube root of a no n ` `double` `cubicRoot(``double` `n) ` `{ ` `    ``// Set start and end for binary search ` `    ``double` `start = 0, end = n; ` ` `  `    ``// Set precision ` `    ``double` `e = 0.0000001; ` ` `  `    ``while` `(``true``) ` `    ``{ ` `        ``double` `mid = (start + end)/2; ` `        ``double` `error = diff(n, mid); ` ` `  `        ``// If error is less than e then mid is ` `        ``// our answer so return mid ` `        ``if` `(error <= e) ` `            ``return` `mid; ` ` `  `        ``// If mid*mid*mid is greater than n set ` `        ``// end = mid ` `        ``if` `((mid*mid*mid) > n) ` `            ``end = mid; ` ` `  `        ``// If mid*mid*mid is less than n set ` `        ``// start = mid ` `        ``else` `            ``start = mid; ` `    ``} ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``double` `n = 3; ` `    ``printf``(````"Cubic root of %lf is %lf "````, ` `           ``n, cubicRoot(n)); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find cubic root of a number ` `// using Binary Search ` `import` `java.io.*; ` ` `  `class` `GFG  ` `{ ` `    ``// Returns the absolute value of n-mid*mid*mid ` `    ``static` `double` `diff(``double` `n,``double` `mid) ` `    ``{ ` `        ``if` `(n > (mid*mid*mid)) ` `            ``return` `(n-(mid*mid*mid)); ` `        ``else` `            ``return` `((mid*mid*mid) - n); ` `    ``} ` `     `  `    ``// Returns cube root of a no n ` `    ``static` `double` `cubicRoot(``double` `n) ` `    ``{ ` `        ``// Set start and end for binary search ` `        ``double` `start = ``0``, end = n; ` `  `  `        ``// Set precision ` `        ``double` `e = ``0.0000001``; ` `  `  `        ``while` `(``true``) ` `        ``{ ` `            ``double` `mid = (start + end)/``2``; ` `            ``double` `error = diff(n, mid); ` `  `  `            ``// If error is less than e then mid is ` `            ``// our answer so return mid ` `            ``if` `(error <= e) ` `                ``return` `mid; ` `  `  `            ``// If mid*mid*mid is greater than n set ` `            ``// end = mid ` `            ``if` `((mid*mid*mid) > n) ` `                ``end = mid; ` `  `  `            ``// If mid*mid*mid is less than n set ` `            ``// start = mid ` `            ``else` `                ``start = mid; ` `        ``} ` `    ``} ` `     `  `    ``// Driver program to test above function ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{ ` `        ``double` `n = ``3``; ` `        ``System.out.println(``"Cube root of "``+n+``" is "``+cubicRoot(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by Pramod Kumar `

## Python3

 `# Python 3 program to find cubic root  ` `# of a number using Binary Search ` ` `  `# Returns the absolute value of  ` `# n-mid*mid*mid ` `def` `diff(n, mid) : ` `    ``if` `(n > (mid ``*` `mid ``*` `mid)) : ` `        ``return` `(n ``-` `(mid ``*` `mid ``*` `mid)) ` `    ``else` `: ` `        ``return` `((mid ``*` `mid ``*` `mid) ``-` `n) ` `         `  `# Returns cube root of a no n ` `def` `cubicRoot(n) : ` `     `  `    ``# Set start and end for binary  ` `    ``# search ` `    ``start ``=` `0` `    ``end ``=` `n ` `     `  `    ``# Set precision ` `    ``e ``=` `0.0000001` `    ``while` `(``True``) : ` `         `  `        ``mid ``=` `(start ``+` `end) ``/` `2` `        ``error ``=` `diff(n, mid) ` ` `  `        ``# If error is less than e  ` `        ``# then mid is our answer ` `        ``# so return mid ` `        ``if` `(error <``=` `e) : ` `            ``return` `mid ` `             `  `        ``# If mid*mid*mid is greater ` `        ``# than n set end = mid ` `        ``if` `((mid ``*` `mid ``*` `mid) > n) : ` `            ``end ``=` `mid ` `             `  `        ``# If mid*mid*mid is less  ` `        ``# than n set start = mid ` `        ``else` `: ` `            ``start ``=` `mid ` `             `  `# Driver code ` `n ``=` `3` `print``(``"Cubic root of"``, n, ``"is"``,  ` `      ``round``(cubicRoot(n),``6``)) ` ` `  ` `  `# This code is contributed by Nikita Tiwari. `

## C#

 `// C# program to find cubic root  ` `// of a number using Binary Search ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Returns the absolute value ` `    ``// of n - mid * mid * mid ` `    ``static` `double` `diff(``double` `n, ``double` `mid) ` `    ``{ ` `        ``if` `(n > (mid * mid * mid)) ` `            ``return` `(n-(mid * mid * mid)); ` `        ``else` `            ``return` `((mid * mid * mid) - n); ` `    ``} ` `     `  `    ``// Returns cube root of a no. n ` `    ``static` `double` `cubicRoot(``double` `n) ` `    ``{ ` `         `  `        ``// Set start and end for ` `        ``// binary search ` `        ``double` `start = 0, end = n; ` ` `  `        ``// Set precision ` `        ``double` `e = 0.0000001; ` ` `  `        ``while` `(``true``) ` `        ``{ ` `            ``double` `mid = (start + end) / 2; ` `            ``double` `error = diff(n, mid); ` ` `  `            ``// If error is less than e then  ` `            ``// mid is our answer so return mid ` `            ``if` `(error <= e) ` `                ``return` `mid; ` ` `  `            ``// If mid * mid * mid is greater  ` `            ``// than n set end = mid ` `            ``if` `((mid * mid * mid) > n) ` `                ``end = mid; ` ` `  `            ``// If mid*mid*mid is less than  ` `            ``// n set start = mid ` `            ``else` `                ``start = mid; ` `        ``} ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `Main ()  ` `    ``{ ` `        ``double` `n = 3; ` `        ``Console.Write(``"Cube root of "``+ n  ` `                       ``+ ``" is "``+cubicRoot(n)); ` `    ``} ` `} ` ` `  `// This code is contributed by nitin mittal. `

## PHP

 ` (``\$mid` `* ``\$mid` `* ``\$mid``)) ` `        ``return` `(``\$n` `- (``\$mid` `*  ` `                ``\$mid` `* ``\$mid``)); ` `    ``else` `        ``return` `((``\$mid` `* ``\$mid` `*  ` `                 ``\$mid``) - ``\$n``); ` `} ` ` `  `// Returns cube root of a no n ` `function` `cubicRoot(``\$n``) ` `{ ` `     `  `    ``// Set start and end  ` `    ``// for binary search ` `    ``\$start` `= 0;  ` `    ``\$end` `= ``\$n``; ` ` `  `    ``// Set precision ` `    ``\$e` `= 0.0000001; ` ` `  `    ``while` `(true) ` `    ``{ ` `        ``\$mid` `= ((``\$start` `+ ``\$end``)/2); ` `        ``\$error` `= diff(``\$n``, ``\$mid``); ` ` `  `        ``// If error is less  ` `        ``// than e then mid is ` `        ``// our answer so return mid ` `        ``if` `(``\$error` `<= ``\$e``) ` `            ``return` `\$mid``; ` ` `  `        ``// If mid*mid*mid is ` `        ``// greater than n set ` `        ``// end = mid ` `        ``if` `((``\$mid` `* ``\$mid` `* ``\$mid``) > ``\$n``) ` `            ``\$end` `= ``\$mid``; ` ` `  `        ``// If mid*mid*mid is ` `        ``// less than n set ` `        ``// start = mid ` `        ``else` `            ``\$start` `= ``\$mid``; ` `    ``} ` `} ` ` `  `    ``// Driver Code ` `    ``\$n` `= 3; ` `    ``echo``(``"Cubic root of \$n is "``); ` `    ``echo``(cubicRoot(``\$n``)); ` ` `  `// This code is contributed by nitin mittal. ` `?> `

Output:

```Cubic root of 3.000000 is 1.442250
```

Time Complexity : O(Log n)