function ibetaRoots( a, b, target, invert ) {
	return roots;

	/**
	* Calculates roots.
	*
	* @private
	* @param {number} x - input value
	* @returns {Array} roots
	*/
	function roots( x ) {
		var buf;
		var f1;
		var f2;
		var f;
		var y;

		y = 1.0 - x;

		buf = [ 0.0, 0.0 ];
		kernelBetainc( x, a, b, true, invert, buf, 1, 0 );
		f = buf[ 0 ] - target;
		f1 = buf[ 1 ];
		if ( invert ) {
			f1 = -f1;
		}
		if ( y === 0.0 ) {
			y = FLOAT64_MIN_NORM * 64.0;
		}
		if ( x === 0.0 ) {
			x = FLOAT64_MIN_NORM * 64.0;
		}
		f2 = f1 * ( -(y*a) + ( ( b-2.0 ) * x ) + 1.0 );
		if ( abs( f2 ) < y * x * FLOAT64_MAX ) {
			f2 /= (y * x);
		}
		if ( invert ) {
			f2 = -f2;
		}
		// Make sure we don't have a zero derivative:
		if ( f1 === 0.0 ) {
			f1 = ( ( invert ) ? -1.0 : 1.0 ) * FLOAT64_MIN_NORM * 64.0;
		}
		return [ f, f1, f2 ];
	}
}
Returns a root finding function.

@private
@param {PositiveNumber} a - function parameter
@param {PositiveNumber} b - function parameter
@param {Probability} target - probability value
@param {boolean} invert - boolean indicating whether to find the roots of the upper or lower incomplete beta function
@returns {Function} root finding function