function median( a, b, c ) {
	if (
		isnan( a ) ||
		isnan( b ) ||
		isnan( c ) ||
		!( a <= c && c <= b )
	) {
		return NaN;
	}
	if ( c >= ( a+b ) / 2.0 ) {
		return a + sqrt( 0.5 * ( b-a ) * ( c-a ) );
	}
	return b - sqrt( 0.5 * ( b-a ) * ( b-c ) );
}
Returns the median of a triangular distribution.

@param {number} a - minimum support
@param {number} b - maximum support
@param {number} c - mode
@returns {number} median

@example
var v = median( 0.0, 1.0, 0.5 );
// returns 0.5

@example
var v = median( 4.0, 12.0, 9.0 );
// returns ~8.472

@example
var v = median( -4.0, 4.0, -1.0 );
// returns ~-0.472

@example
var v = median( 1.0, -0.1, 0.5 );
// returns NaN

@example
var v = median( 0.0, 1.0, 2.0 );
// returns NaN

@example
var v = median( NaN, 4.0, 2.0 );
// returns NaN

@example
var v = median( 0.0, NaN, 2.0 );
// returns NaN

@example
var v = median( 0.0, 4.0, NaN );
// returns NaN