In this article we will resolve **valueerror: math domain error** using Python code examples. This error is generally raised by log() and sqrt() function of Python math library. If you provide any invalid value like -1 or 0 to the `log()`

function, it will raise the error.

## Why this error is raised?

The error says “math domain error” which means there is some issue with domain. In mathematics we have two things – **domain** and **range**. *Domain is the set of acceptable input values for a function* and range is the set of output generated by the function. So, `sin()`

has range of -1 to 1. Although its domain is any radian value.

In case of log(), 0 and negative numbers can’t be given as input. Understand it this way –

log(x) = y, which is equal to –

x = e^{y}

i.e., ^{y}√x = e

Now suppose x = -1, then, ^{y}√-1 = e

Root of a negative number is not a real number. This is a problem. The domain, -1, is not appropriate for log(). Same applies for sqrt().

## Code Example

Error Code – Let’s first reproduce the error –

import math print(math.log(-1))

This will throw the error –

Traceback (most recent call last): File "/home/jdoodle.py", line 5, in <module> print(math.log(-1)) ValueError: math domain error

### Solution

The only solution to this issue is to avoid using invalid domain for math functions. For log() & sqrt() avoid using negative numbers. Use `try...except`

block to catch exception –

import math print(math.log(5)) try: print(math.log(-1)) except: print("Invalid value in log function")

Output –

1.6094379124341003 Invalid value in log function