Mul._eval_is_rational watches for real and zero

An alternative to #8009 fixes #8008