How to calculate the nth root of a number in JavaScript?

In JavaScript, calculating the nth root of a number requires understanding the mathematical rules for roots and applying appropriate methods. We'll explore two primary approaches: using Math.pow() and using logarithms.

Understanding nth Root Rules

Before calculating nth roots, it's important to understand when solutions exist:

  • If the number is positive and the root is even, there are two solutions (positive and negative). Example: 2nd root of 16 is +4 and -4

  • If the number is positive and the root is odd, there is one positive solution. Example: 3rd root of 27 is 3

  • If the number is negative and the root is odd, there is one negative solution. Example: 3rd root of -27 is -3

  • If the number is negative and the root is even, there is no real solution

Using Math.pow() Method

The Math.pow() function calculates the power of a number. To find the nth root, we use the mathematical property that the nth root of x equals x raised to the power of 1/n.

Syntax

Math.pow(base, 1/root)

Example

<html>
<head>
    <title>nth Root Calculator</title>
</head>
<body>
    <h2>Calculating nth Root using Math.pow()</h2>
    <div id="results"></div>
    
    <script>
        function calcRoot(base, root) {
            let isBasePositive = base > 0;
            let isRootEven = root % 2 === 0;
            
            if (base === 0) {
                return `${root}th root of ${base} is 0`;
            }
            
            if (root === 0) {
                return `${root}th root of ${base} is Infinity`;
            }
            
            if (isBasePositive && isRootEven) {
                let ans = Math.pow(base, 1 / root);
                return `${root}th root of ${base} is ±${ans.toFixed(3)}`;
            }
            
            if (isBasePositive && !isRootEven) {
                let ans = Math.pow(base, 1 / root);
                return `${root}th root of ${base} is ${ans.toFixed(3)}`;
            }
            
            if (!isBasePositive && !isRootEven) {
                let ans = Math.pow(Math.abs(base), 1 / root);
                return `${root}th root of ${base} is -${ans.toFixed(3)}`;
            }
            
            if (!isBasePositive && isRootEven) {
                return `${root}th root of ${base} has no real solution`;
            }
        }
        
        // Test cases
        let results = document.getElementById('results');
        results.innerHTML = `
            <p>${calcRoot(16, 2)}</p>
            <p>${calcRoot(27, 3)}</p>
            <p>${calcRoot(-27, 3)}</p>
            <p>${calcRoot(-16, 2)}</p>
        `;
    </script>
</body>
</html>

Using Logarithm Method

The logarithm method uses the mathematical identity: nth root of x = e^(ln(x)/n). This approach works well for positive numbers.

Formula

result = Math.exp(Math.log(base) / root)

Example

<html>
<head>
    <title>nth Root with Logarithm</title>
</head>
<body>
    <h2>Calculating nth Root using Logarithm</h2>
    <div id="log-results"></div>
    
    <script>
        function calcRootLog(base, root) {
            if (base <= 0) {
                return `Logarithm method works only for positive numbers`;
            }
            
            let result = Math.exp(Math.log(base) / root);
            return `${root}th root of ${base} is ${result.toFixed(3)}`;
        }
        
        // Test cases
        let logResults = document.getElementById('log-results');
        logResults.innerHTML = `
            <p>${calcRootLog(16, 2)}</p>
            <p>${calcRootLog(125, 3)}</p>
            <p>${calcRootLog(81, 4)}</p>
            <p>${calcRootLog(-27, 3)}</p>
        `;
    </script>
</body>
</html>

Comparison of Methods

Method Handles Negative Numbers Precision Best Use Case
Math.pow() Yes (with logic) High General purpose, all scenarios
Logarithm No High Positive numbers only

Practical Implementation

Here's a complete function that handles all cases:

<html>
<head>
    <title>Complete nth Root Calculator</title>
</head>
<body>
    <h2>Complete nth Root Calculator</h2>
    <div id="complete-results"></div>
    
    <script>
        function nthRoot(base, root) {
            if (root === 0) return "Undefined (division by zero)";
            if (base === 0) return 0;
            
            let isBaseNegative = base < 0;
            let isRootEven = root % 2 === 0;
            
            // No real solution for negative base and even root
            if (isBaseNegative && isRootEven) {
                return "No real solution";
            }
            
            let absBase = Math.abs(base);
            let result = Math.pow(absBase, 1 / root);
            
            if (isBaseNegative && root % 2 !== 0) {
                result = -result;
            }
            
            return result;
        }
        
        // Test the function
        let tests = [
            [16, 2], [27, 3], [-27, 3], [-16, 2], [64, 3], [0, 5]
        ];
        
        let output = "";
        tests.forEach(([base, root]) => {
            let result = nthRoot(base, root);
            output += `<p>${root}th root of ${base} = ${result}</p>`;
        });
        
        document.getElementById('complete-results').innerHTML = output;
    </script>
</body>
</html>

Conclusion

Both Math.pow() and logarithm methods effectively calculate nth roots in JavaScript. Math.pow() is more versatile for handling negative numbers and even roots, while the logarithm method is simpler but limited to positive numbers. Choose based on your specific requirements and input constraints.

Updated on: 2026-03-15T23:18:59+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements