time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

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);