Hi Richy, the method Li_eval checks if all entries of x_ are equal to +1 or -1. In this case, the function Li is converted to a multiple zeta value. If all but the first entry of x_ are equal to +1 or -1, the function Li is converted to a harmonic polylog H. After checking that an entry of x_ is equal to +1 or -1, the operator > is used. This may lead to an "numeric::operator>(): complex inequality" exception in the case where the real part of an entry of x_ is equal to +/-1 (either exact or as a float, this does not matter) and the imaginary part is equal to zero as a float. The attached patch avoids the improper use of the operator > in this cases and sets the +/-1 arguments of H and zeta as real numbers. For zeta the method Li_eval is modified, for H the appropriate place is a modification of the method convert_parameter_Li_to_H. Best wishes, Stefan