Open In App

Python Value Error :Math Domain Error in Python

Last Updated : 02 Oct, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Errors are the problems in a program due to which the program will stop the execution. One of the errors is ‘ValueError: math domain error’ in Python. In this article, you will learn why this error occurs and how to fix it with examples.

What is ‘ValueError: math domain error’ in Python?

In mathematics, we have certain operations that we consider undefined. Undefined refers to a term that is mathematically inexpressible. The most common examples of undefined operations in mathematics are:

  • A division by zero (For example 45/0)
  • The square root of negative numbers (For example: √-67)
  • The log of a negative number (For example log(-3))

When you perform such undefined operations or operations that fall outside the domain in Python, you encounter an error – ‘ValueError: math domain error’. A domain in mathematics refers to a range of all possible values a function accepts. When a function in Python is provided with a value outside the domain, ‘ValueError: math domain error’ occurs.

How to Fix “ValueError: math domain error” in Python?

Let us now discuss different scenarios where this error occurs and the respective solution to help you understand how to resolve the error.

math.sqrt()

Python has the math.sqrt() function that provides the square root of a number. However, the number should be greater than or equal to 0. If you provide a number less than 0, i.e., a negative number, the Python interpreter throws the error – ‘ValueError: math domain error’.

Python




import math
print math.sqrt(-9)


Output Error:

Hangup (SIGHUP)
Traceback (most recent call last):
  File "Solution.py", line 2, in <module>
    print math.sqrt(-9)
ValueError: math domain error

Solution:

The simple solution to avoid this error is to use the ‘if-else’ statement to check whether the entered number is negative or not. If it is not negative, the math.sqrt() function will provide the desired output. If the number is negative, it will display the message on the screen that a negative number cannot be used.

Here is how you can do it:

Python3




import math
num = int(input('Enter the number:'))
if num >= 0:
    ans = math.sqrt(num)
    print(f"The square root of the {} is {ans}")
else:
    print("The entered number is negative and cannot find the square root.")


Output 1:

Enter the number: 5
The square root of 5 is 2.23606797749979

Output 2:

Enter the number: -5
The entered number is negative and cannot find the square root.

math.log ()

The Python function math.log() provides the logarithm of a given number. However, it only accepts a number greater than 0. If you use a negative number and even 0, Python raises the error – ValueError: math domain error.

Python3




import math
print (math.log(0))


Output Error:

Hangup (SIGHUP)
Traceback (most recent call last):
  File "Solution.py", line 2, in <module>
    print (math.log(0))
ValueError: math domain error

Solution:

As we did in the above example, we will use the same if-else statement to avoid the ValueError.

Python3




import math
num = int(input("Enter the number: "))
if num > 0:
  result = math.log(num)
  print(f"The log of {} is {res}")
else:
  print("Cannot find the log of 0 or a negative number")


Output 1:

Enter the number: 4
The log of 4 is 1.3862943611198906

Output 2:

Enter the number: -5
Cannot find the log of 0 or a negative number

math.acos()

The math.acos() method gives the arc cosine value of a number. The range of this function is from -1 to 1. So, any number outside this range provided to this function will raise the error – ValueError: math domain error.

Python3




import math
print(math.acos(5))


Output Error:

Hangup (SIGHUP)
Traceback (most recent call last):
  File "Solution.py", line 2, in <module>
    print(math.acos(5))
ValueError: math domain error

Solution:

Python3




import math
num = int(input('Enter the number: '))
if -1 <= num <= 1:
    result = math.acos(num)
    print(f'The arc cosine of {num} is {result}')
else:
    print('Cannot find the arc cosine of any number other than ones between -1 and 1.')


Output 1

Enter the number: 1
The arc cosine of 1 is 0.0

Output 2

Enter the number: -3
Cannot find the arc cosine of any number other than ones between -1 and 1.

In a nutshell, when you use a number that is out of the range for a specific math function in Python, you will receive the error – ‘ValueError: math domain error’. Use proper conditional statements to handle the function and the values.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads