if (is_ex_exactly_of_type(arg, numeric))
return csgn(ex_to_numeric(arg));
- else if (is_ex_exactly_of_type(arg, mul)) {
+ else if (is_ex_of_type(arg, mul) &&
+ is_ex_of_type(arg.op(arg.nops()-1),numeric)) {
numeric oc = ex_to_numeric(arg.op(arg.nops()-1));
if (oc.is_real()) {
if (oc > 0)
return -csgn(I*arg/oc).hold();
}
}
-
+
return csgn(arg).hold();
}
REGISTER_FUNCTION(eta, eval_func(eta_eval).
evalf_func(eta_evalf).
- series_func(eta_series));
+ series_func(eta_series).
+ latex_name("\\eta"));
//////////
REGISTER_FUNCTION(Li2, eval_func(Li2_eval).
evalf_func(Li2_evalf).
derivative_func(Li2_deriv).
- series_func(Li2_series));
+ series_func(Li2_series).
+ latex_name("\\mbox{Li}_2"));
//////////
// trilogarithm
return Li3(x).hold();
}
-REGISTER_FUNCTION(Li3, eval_func(Li3_eval));
+REGISTER_FUNCTION(Li3, eval_func(Li3_eval).
+ latex_name("\\mbox{Li}_3"));
//////////
// factorial
// Differentiation is handled in function::derivative because of its special requirements
REGISTER_FUNCTION(Order, eval_func(Order_eval).
- series_func(Order_series));
+ series_func(Order_series).
+ latex_name("\\mathcal{O}"));
//////////
// Inert partial differentiation operator