time-to-botec

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

gauss-test.js (2080B)


      1 var vows = require('vows');
      2 var assert = require('assert');
      3 var suite = vows.describe('jStat');
      4 
      5 require('../env.js');
      6 
      7 suite.addBatch({
      8   'linearalgebra': {
      9     'topic': function() {
     10       return jStat;
     11     },
     12     // See "gauss elimination {{1, -3, 1, 4}, {2, -8, 8, -2}, {-6, 3, -15, 9}}"
     13     // on Wolfram Alpha
     14     'gauss elimination example 1': function(jStat) {
     15       var A = [[1, -3, 1], [2, -8, 8], [-6, 3, -15]];
     16       var B = [[4], [-2], [9]];
     17       var tol = 0.000001;
     18       var result = jStat.gauss_elimination(A, B);
     19       assert.epsilon(tol, result[0], 3);
     20       assert.epsilon(tol, result[1], -1);
     21       assert.epsilon(tol, result[2], -2);
     22     },
     23     // See "gauss elimination {{1, 1, 3}, {3, -2, 4}}" on Wolfram Alpha
     24     'gauss elimination example 2': function(jStat) {
     25       var A = [[1, 1], [3, -2]];
     26       var B = [[3], [4]];
     27       var tol = 0.000001;
     28       var result = jStat.gauss_elimination(A, B);
     29       assert.epsilon(tol, result[0], 2);
     30       assert.epsilon(tol, result[1], 1);
     31     },
     32     //Sanity check, should not do anything if already solved
     33     'gauss elimination example 3': function(jStat) {
     34       var A = jStat.identity(4);
     35       var B = [[1], [2], [3], [4]];
     36       var result = jStat.gauss_elimination(A, B);
     37       var tol = 0.000001;
     38       assert.epsilon(tol, result[0], 1);
     39       assert.epsilon(tol, result[1], 2);
     40       assert.epsilon(tol, result[2], 3);
     41       assert.epsilon(tol, result[3], 4);
     42     },
     43     // Use "{{1,1,1,1,10}, {0,1,1,1,9},{0,0,1,1,7},{0,0,0,1,4}}" on Wolfram
     44     // Since the matrix already has a lower left hand zero triangle, this just
     45     // tests the back-substitution portion of the algorithm
     46     'gauss elimination example 4': function(jStat) {
     47       var A = [[1,1,1,1],[0,1,1,1],[0,0,1,1],[0,0,0,1]];
     48       var B = [[10], [9], [7], [4]];
     49       var result = jStat.gauss_elimination(A, B);
     50       var tol = 0.000001;
     51       assert.epsilon(tol, result[3], 4);
     52       assert.epsilon(tol, result[2], 3);
     53       assert.epsilon(tol, result[1], 2);
     54       assert.epsilon(tol, result[0], 1);
     55     }
     56   }
     57 });
     58 
     59 suite.export(module);