nl_tokens: EKURTOSIS // FUNCTION : ekurtosis ( p [ opts ] ) Computes the distribution ekurtosis .
pl_tokens: function ekurtosis ( p , options ) { /* jshint newcap:false */ var opts = { } , ctor , err , out , dt , d ; if ( isNumber ( p ) || isnan ( p ) ) { return ekurtosis1 ( p ) ; } if ( arguments . length > 1 ) { err = validate ( opts , options ) ; if ( err ) { throw err ; } } if ( isMatrixLike ( p ) ) { if ( opts . copy !== false ) { dt = opts . dtype || 'float64' ; ctor = ctors ( dt ) ; if ( ctor === null ) { throw new Error ( 'ekurtosis()::invalid option. Data type option does not have a corresponding array constructor. Option: `' + dt + '`.' ) ; } // Create an output matrix: d = new ctor ( p . length ) ; out = matrix ( d , p . shape , dt ) ; } else { out = p ; } return ekurtosis5 ( out , p ) ; } if ( isTypedArrayLike ( p ) ) { if ( opts . copy === false ) { out = p ; } else { dt = opts . dtype || 'float64' ; ctor = ctors ( dt ) ; if ( ctor === null ) { throw new Error ( 'ekurtosis()::invalid option. Data type option does not have a corresponding array constructor. Option: `' + dt + '`.' ) ; } out = new ctor ( p . length ) ; } return ekurtosis6 ( out , p ) ; } if ( isArrayLike ( p ) ) { // Handle deepset first... if ( opts . <mask> ) { opts . sep = opts . sep || '.' ; return ekurtosis4 ( p , opts . path , opts . sep ) ; } // Handle regular and accessor arrays next... if ( opts . copy === false ) { out = p ; } else if ( opts . dtype ) { ctor = ctors ( opts . dtype ) ; if ( ctor === null ) { throw new TypeError ( 'ekurtosis()::invalid option. Data type option does not have a corresponding array constructor. Option: `' + opts . dtype + '`.' ) ; } out = new ctor ( p . length ) ; } else { out = new Array ( p . length ) ; } if ( opts . accessor ) { return ekurtosis3 ( out , p , opts . accessor ) ; } return ekurtosis2 ( out , p ) ; } return NaN ; }