function Arcsine() {
	var a;
	var b;
	if ( !(this instanceof Arcsine) ) {
		if ( arguments.length === 0 ) {
			return new Arcsine();
		}
		return new Arcsine( arguments[ 0 ], arguments[ 1 ] );
	}
	if ( arguments.length ) {
		a = arguments[ 0 ];
		b = arguments[ 1 ];
		if ( !isNumber( a ) || isnan( a ) ) {
			throw new TypeError( format( 'invalid argument. Minimum support must be a number. Value: `%s`.', a ) );
		}
		if ( !isNumber( b ) || isnan( b ) ) {
			throw new TypeError( format( 'invalid argument. Maximum support must be a number. Value: `%s`.', b ) );
		}
		if ( a >= b ) {
			throw new RangeError( format( 'invalid arguments. Minimum support must be less than maximum support. Value: `(%f, %f)`.', a, b ) );
		}
	} else {
		a = 0.0;
		b = 1.0;
	}
	defineProperty( this, 'a', {
		'configurable': false,
		'enumerable': true,
		'get': function get() {
			return a;
		},
		'set': function set( value ) {
			if ( !isNumber( value ) || isnan( value ) ) {
				throw new TypeError( format( 'invalid assignment. Must be a number. Value: `%s`.', value ) );
			}
			if ( value >= b ) {
				throw new RangeError( format( 'invalid assignment. Must be less than %f. Value: `%f`.', b, value ) );
			}
			a = value;
		}
	});
	defineProperty( this, 'b', {
		'configurable': false,
		'enumerable': true,
		'get': function get() {
			return b;
		},
		'set': function set( value ) {
			if ( !isNumber( value ) || isnan( value ) ) {
				throw new TypeError( format( 'invalid assignment. Must be a number. Value: `%s`.', value ) );
			}
			if ( value <= a ) {
				throw new RangeError( format( 'invalid assignment. Must be greater than %f. Value: `%f`.', a, value ) );
			}
			b = value;
		}
	});
	return this;
}
Arcsine distribution constructor.

@constructor
@param {number} [a=0.0] - minimum support
@param {number} [b=1.0] - maximum support
@throws {TypeError} `a` must be a number
@throws {TypeError} `b` must be a number
@throws {RangeError} `a` must be less than `b`
@returns {Arcsine} distribution instance

@example
var arcsine = new Arcsine( 0.0, 1.0 );

var y = arcsine.cdf( 0.8 );
// returns ~0.705

var mu = arcsine.mean;
// returns 0.5