# FunctionDomain ouput conflict with Limit output

I was just trying to find out the available domain for a function using the following :

FunctionDomain[-((I*a*(-1 + E^(2*I*a*Pi)))/(-1 + a^2)), a, Complexes]


& this unexpectedly returned : -1 + a^2 != 0 whereas I had previously checked :

Limit[-((I*a*(-1 + E^(2*I*a*Pi)))/(-1 + a^2)), a -> 1]


which returned as expected a Pi.

Can someone please explain why FunctionDomain failed? How can one trust it's output when it didn't calculate the limits here? I suspect that I am doing something incorrectly.

Furthermore, I also didn't understand the output of the following :

FunctionDomain[-((I*a*(-1 + E^(2*I*a*Pi)))/(-1 + a^2)), a, Reals] (* False *)


Also, how would someone extract the information about the domain for non-zero range (those values of a where my expression is not zero) in this case?

Clear["Global*"]

expr = -((I*a*(-1 + E^(2*I*a*Pi)))/(-1 + a^2));

Limit[expr, a -> #] & /@ {-1, 1}

(* {π, π} *)

FunctionDomain[expr, a, Complexes]

(* -1 + a^2 != 0 *)


This indicates that the function is undefined for a = 1 or a = -1. The fact that the limits exist does not indicate that the function is defined for these values.

This is similar to Sin[x]/x which is undefined for x = 0 but the limit as x -> 0 is 1. In this case, Sinc[x] is defined to include the limiting case in the function definition.

FunctionDomain[expr, a, Reals]

(* False *)


This indicates that there are no real values of a for which expr` is real.

• Thank you for such a nice explanation. Could you say one more thing here? What if I have to use such an expression in an integral or something? Will I have to be careful about this? One could very well have expressions which are not feasible to be examined by hand. What to do in that case? May 6, 2020 at 14:46
• Your comment is too general for me to understand. If you have a specific question, post it as a new question. May 6, 2020 at 14:51