function attransitionplus( n, x ) {
	var minusMminus1;
	var lnterm;
	var zpows;
	var iter;
	var sum0;
	var d4d;
	var N;
	var m;
	var k;
	var z;

	// Use N = (0.4 * digits) + (4 * n) for target value for x:
	d4d = 0.4 * DIGITS_BASE10;
	N = d4d + ( 4*n );
	m = n;
	iter = N - trunc( x );

	if ( iter > MAX_SERIES_ITERATIONS ) {
		debug( 'Exceeded maximum series evaluations when evaluated at n = %d and x = %d', n, x );
		return NaN;
	}
	minusMminus1 = -m - 1;
	z = x;
	sum0 = 0.0;
	zpows = 0.0;

	// Forward recursion to larger `x`, need to check for overflow first though:
	if ( ln( z+iter ) * minusMminus1 > -MAX_LN ) {
		for ( k = 1; k <= iter; k++ ) {
			zpows = pow( z, minusMminus1 );
			sum0 += zpows;
			z += 1;
		}
		sum0 *= factorial( n );
	} else {
		for ( k = 1; k <= iter; k++ ) {
			lnterm = ( ln( z ) * minusMminus1 ) + gammaln( n+1 );
			sum0 += exp( lnterm );
			z += 1;
		}
	}
	if ( ( n-1 ) & 1 ) {
		sum0 = -sum0;
	}
	return sum0 + atinfinityplus( n, z );
}
Evaluates the polygamma function.

@private
@param {PositiveInteger} n - derivative to evaluate
@param {number} x - input
@returns {number} (n+1)'th derivative
@see {@link http://functions.wolfram.com/GammaBetaErf/PolyGamma2/16/01/01/0017/}