def _eval_(self, z, **kwds): """ EXAMPLES:: sage: harmonic_number(0) 0 sage: harmonic_number(1) 1 sage: harmonic_number(20) 55835135/15519504 sage: harmonic_number(5/2) -2*log(2) + 46/15 sage: harmonic_number(2*x) harmonic_number(2*x) """ if z in ZZ: if z == 0: return Integer(0) elif z == 1: return Integer(1) elif z > 1: import sage.libs.flint.arith as flint_arith return flint_arith.harmonic_number(z) elif z in QQ: from sage.functions.other import psi1 return psi1(z + 1) - psi1(1)
def _eval_(self, z, **kwds): """ EXAMPLES:: sage: harmonic_number(0) 0 sage: harmonic_number(1) 1 sage: harmonic_number(20) 55835135/15519504 sage: harmonic_number(5/2) -2*log(2) + 46/15 sage: harmonic_number(2*x) harmonic_number(2*x) """ if z in ZZ: if z == 0: return Integer(0) elif z == 1: return Integer(1) elif z > 1: import sage.libs.flint.arith as flint_arith return flint_arith.harmonic_number(z) elif z in QQ: from sage.functions.other import psi1 return psi1(z+1) - psi1(1)