cauchy-test.js (2055B)
1 var vows = require('vows'); 2 var assert = require('assert'); 3 var suite = vows.describe('jStat.distribution'); 4 5 require('../env.js'); 6 7 var tol = 0.0000001; 8 9 suite.addBatch({ 10 'cauchy pdf': { 11 'topic': function() { 12 return jStat; 13 }, 14 'check pdf calculation': function(jStat) { 15 var pdf = jStat.cauchy.pdf; 16 17 assert.epsilon(tol, pdf(1, 0, 1), 1 / (2 * Math.PI)); 18 assert.epsilon(tol, pdf(3, 0, 1), 1 / (10 * Math.PI)); 19 assert.epsilon(tol, pdf(-2, 0, 1), 1 / (5 * Math.PI)); 20 21 //Location parameter 22 assert.epsilon(tol, pdf(1, 1, 1), 1 / Math.PI); 23 assert.epsilon(tol, pdf(0, -3, 1), 1 / (10 * Math.PI)); 24 25 //Scale parameter 26 assert.epsilon(tol, pdf(0, 1, 3), 1 / ((10 / 3) * Math.PI)); 27 assert.epsilon(tol, pdf(0, 1, 0.5), 1 / (2.5 * Math.PI)); 28 29 //Negative test cases 30 assert.epsilon(tol, pdf(0, 0, -3), 0); 31 }, 32 'check cdf calculations': function(jStat) { 33 var cdf = jStat.cauchy.cdf; 34 35 assert.epsilon(tol, cdf(0, 0, 1), 0.5); 36 assert.epsilon(tol, cdf(3, 0, 1), (Math.atan(3) / Math.PI) + 0.5); 37 38 assert.epsilon(tol, cdf(0, 1, 1), (Math.atan(-1) / Math.PI) + 0.5); 39 assert.epsilon(tol, cdf(3, 1, 1), (Math.atan(2) / Math.PI) + 0.5); 40 41 assert.epsilon(tol, cdf(0, 1, 2), (Math.atan(-0.5) / Math.PI) + 0.5); 42 assert.epsilon(tol, cdf(1, 0, 0.5), (Math.atan(2) / Math.PI) + 0.5); 43 }, 44 'median': function(jStat) { 45 var median = jStat.cauchy.median; 46 47 assert.epsilon(tol, median(0, 1), 0); 48 assert.epsilon(tol, median(0, 4), 0); 49 assert.epsilon(tol, median(-2, 1), -2); 50 }, 51 'mode': function(jStat) { 52 var mode = jStat.cauchy.mode; 53 54 assert.epsilon(tol, mode(0, 1), 0); 55 assert.epsilon(tol, mode(0, 4), 0); 56 assert.epsilon(tol, mode(-2, 1), -2); 57 } 58 } 59 }); 60 61 suite.export(module);