throw(pole_error("log_eval(): log(0)",0));
if (x.info(info_flags::real) && x.info(info_flags::negative))
return (log(-x)+I*Pi);
throw(pole_error("log_eval(): log(0)",0));
if (x.info(info_flags::real) && x.info(info_flags::negative))
return (log(-x)+I*Pi);