One thing that is a stupid bug is that the DomainError does not tell the user what domain he is outside, and that he might want to add `.` after the exponent in order to get a Float64 result. sqrt(-1) does a much better job in that regard. There are some efficiency concerns about adding a string to the DomainError type, and currently we fix this by checking the backtrace in the showerror function.
There has also been discussion on whether ^(a::Integer,b::Integer) should return a Float64 by default, and defer to pow() like /(a::Integer, b::Integer) defers to div(). The problem is that many people like the 10^45 vs 1e45 notation for large integers vs float constants, and we can make it a clean error instead of a silent bug.
