linear-algebra
Version:
Efficient, high-performance linear algebra library
56 lines (36 loc) • 1 kB
JavaScript
;
var sinon = require('sinon'),
chai = require('chai'),
expect = chai.expect,
should = chai.should();
chai.use(require('sinon-chai'));
var linAlg = require('../dist/linear-algebra.precision');
var precisionAdder = require('add');
var test = module.exports = {
beforeEach: function() {
this.mocker = sinon.sandbox.create();
},
afterEach: function() {
this.mocker.restore();
}
};
var subTest = require('./_commonTests')(linAlg, {
add: precisionAdder
});
subTest['custom adder'] = function() {
// dummy adder skips every other value and then adds 0.5 to result
var adder = function(floats) {
var ret = 0;
for (var i=0; i<floats.length; i+=2) {
ret += floats[i];
}
return ret + 0.5;
};
var Matrix = linAlg({
add: adder
}).Matrix;
var v1 = new Matrix([0.1, 0.2, 0.3]),
v2 = new Matrix([2, 5, 10]);
v1.dot(v2.trans()).data.should.eql([[ adder([0.1*2, 0.2*5, 0.3*10]) ]]);
};
test['high precision'] = subTest;