if (x.is_zero()) // log(0) -> infinity
throw(pole_error("log_eval(): log(0)",0));
if (x.info(info_flags::real) && x.info(info_flags::negative))
+ //if (x.info(info_flags::rational) && x.info(info_flags::negative))
return (log(-x)+I*Pi);
if (x.is_equal(_ex1)) // log(1) -> 0
return _ex0;