// m4th v0.1.0 | (c) 2013-2014 Hendrik Helwich | MIT License !function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gf;c=f+=1){for(d=g=c,l=b.columns;l>g;d=g+=1)for(e=h=0;c>h;e=h+=1)b.set(c,d,b.get(c,d)-b.get(c,e)*b.get(e,d));for(d=i=m=c+1,n=b.columns;n>i;d=i+=1){for(e=j=0;c>j;e=j+=1)b.set(d,c,b.get(d,c)-b.get(d,e)*b.get(e,c));b.set(d,c,b.get(d,c)/b.get(c,c))}}this.lu=b},h={solve:function(a,b){var c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;for(null==b&&(b=a.clone()),c=this.lu,a.rows===c.columns&&a.isSize(b)||f("unmatching matrix dimension"),g=h=0,o=c.columns;o>h;g=h+=1)for(d=i=p=g+1,q=c.columns;q>i;d=i+=1)for(e=j=0,r=b.columns;r>j;e=j+=1)b.set(d,e,b.get(d,e)-b.get(g,e)*c.get(d,g));for(g=k=s=c.columns-1;k>=0;g=k+=-1){for(e=l=0,t=b.columns;t>l;e=l+=1)b.set(g,e,b.get(g,e)/c.get(g,g));for(d=m=0;g>m;d=m+=1)for(e=n=0,u=b.columns;u>n;e=n+=1)b.set(d,e,b.get(d,e)-b.get(g,e)*c.get(d,g))}return b},getInverse:function(){var a;return a=c.I(this.lu.columns),this.solve(a,a)}},b.exports=e(g,h)},{"./matrix":3,"ut1l/create/object":5,"ut1l/create/throwable":6}],3:[function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;g=a("ut1l/create/object"),c=a("ut1l/create/throwable"),k=c("MatrixException"),l=function(){return k("invalid dimension")},m=Math.floor,e=Math.ceil,v=Math.sqrt,t=Math.min,n=function(a){return a},d=function(a,b){return a+b},u=function(a,b){return a-b},o=function(a){return"number"==typeof a},q=function(a,b,c){var d,f,g;o(a)?(g=a,o(b)?(f=b,d=c):d=b):d=a,null==g&&(g=e(v(d.length))),null==f&&(f=0===g?0:null!=d?e(d.length/g):g),null==d&&(d=[]),this.columns=f,this.rows=g,this.array=d},s={I:function(a,b){var d,e,g;for(null==b&&(b=a),c=f(a,b),c.fill(0,c),d=e=0,g=t(a,b);g>e;d=e+=1)c.set(d,d,1);return c},diag:function(a,b){return null==b?b=f(a.length,a.length):b.isSize(a.length)||l(),b.each(function(c,d,e){return b.set(d,e,d===e?a[d]:0)}),b}},j=function(a,b){var c,d,e;for(c=d=0,e=this.columns;e>d;c=d+=1)b.call(this,this.get(a,c),a,c);return this},h=function(a){var b,c,d;for(b=c=0,d=this.rows;d>c;b=c+=1)j.call(this,b,a);return this},i=function(a){var b,c,d;for(b=c=0,d=t(this.rows,this.columns);d>c;b=c+=1)a.call(this,this.get(b,b),b,b);return this},p=function(a){return function(b,c){var d;return d=c,a.call(this,function(a,c,e){d=null!=d?b.call(this,d,a,c,e):a}),d}},r={get:function(a,b){return null==b&&(b=0),this.array[a*this.columns+b]},set:function(a,b,c){return this.array[a*this.columns+b]=c,this},isSize:function(a,b){return o(a)?(null==b&&(b=a),this.rows===a&&this.columns===b):this.isSize(a.rows,a.columns)},isSquare:function(){return this.rows===this.columns},each:h,eachDiagonal:i,reduce:p(h),reduceDiagonal:p(i),reduceRows:function(a,b){var c,d,e,f,g,h,i,j,k;for(e=[],c=h=0,j=this.rows;j>h;c=h+=1){for(g=b,d=i=0,k=this.columns;k>i;d=i+=1)f=this.get(c,d),g=null!=g?a.call(this,g,f,c,d):f;e.push(g)}return e},map:function(){var a,b,d,e,g;return a=arguments,g=a.length-1,void 0===a[g]&&(g-=1),"function"!=typeof a[g]?(c=a[g--],this.isSize(c)||l()):c=f(this.rows,this.columns),d=a[g],e=c.rows*c.columns,b=[],c.each(function(e){return function(f,h,i){var j,k;for(b[0]=e.get(h,i),j=k=0;g>k;j=k+=1)b[j+1]=a[j].get(h,i);return b[++j]=h,b[++j]=i,c.set(h,i,d.apply(e,b))}}(this)),c},clone:function(a){return this.map(n,a)},fill:function(a,b){return this.map(function(){return a},b)},times:function(a,b){return this.map(function(b){return a*b},b)},add:function(a,b){return this.map(a,d,b)},minus:function(a,b){return this.map(a,u,b)},transp:function(a){var b,c,d,e,g,h,i,j;if(null==a&&(a=f(this.columns,this.rows)),a===this)return b=this.clone(),h=[this.columns,this.rows],this.rows=h[0],this.columns=h[1],b.transp(this);for((this.rows!==a.columns||this.columns!==a.rows)&&l(),c=e=0,i=this.columns;i>e;c=e+=1)for(d=g=0,j=this.rows;j>g;d=g+=1)a.set(c,d,this.get(d,c));return a},mult:function(a,b){var c,d,e,g,h,i,j,k,m;for(null==b&&(b=f(this.rows,a.columns)),(this.columns!==a.rows||b.rows!==this.rows||b.columns!==a.columns)&&l(),b.fill(0,b),c=g=0,j=this.rows;j>g;c=g+=1)for(d=h=0,k=a.columns;k>h;d=h+=1)for(e=i=0,m=this.columns;m>i;e=i+=1)b.array[c*b.columns+d]+=this.get(c,e)*a.get(e,d);return b},toString:function(){var a;return a=function(a,b){return a+" "+b},function(){return this.reduceRows(a).join("\n")}}()},b.exports=f=g(s,q,r)},{"ut1l/create/object":5,"ut1l/create/throwable":6}],4:[function(a,b){var c,d,e,f,g,h;c=a("./matrix"),e=a("ut1l/create/object"),d=a("ut1l/create/throwable"),f=d("MatrixException"),g=function(a,b,c,d){var e,g,h,i,j,k,l,m,n,o;for(null==b&&(b=a.clone()),null==c&&(c=b),null==d&&(d=b),b.isSquare()||f("matrix must be square"),this.size=b.columns,g=j=m=this.size-1;j>=0;g=j+=-1)for(e=k=g;k>=0;e=k+=-1){for(i=b.get(e,g),h=l=n=g+1,o=this.size;o>l;h=l+=1)i-=c.get(e,h)*d.get(h,h)*c.get(g,h);e===g?d.set(g,g,i):(0===d.get(g,g)&&f("not a regular matrix"),c.set(e,g,i/d.get(g,g)))}this.ud=b},h={solveDiagonal:function(a,b){var c,d,e,f,g,h;for(null==b&&(b=a.clone()),c=e=0,g=this.size;g>e;c=e+=1)for(d=f=0,h=a.columns;h>f;d=f+=1)b.set(c,d,a.get(c,d)/this.ud.get(c,c));return b},solveUnitTriangular:function(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;if(null==c&&(c=a.clone()),b)for(e=g=0,m=a.columns;m>g;e=g+=1)for(d=h=0,n=this.size;n>h;d=h+=1)for(c.set(d,e,a.get(d,e)),f=i=0;d>i;f=i+=1)c.set(d,e,c.get(d,e)-this.ud.get(f,d)*c.get(f,e));else for(e=j=0,o=a.columns;o>j;e=j+=1)for(d=k=p=this.size-1;k>=0;d=k+=-1)for(c.set(d,e,a.get(d,e)),f=l=q=d+1,r=this.size;r>l;f=l+=1)c.set(d,e,c.get(d,e)-this.ud.get(d,f)*c.get(f,e));return c},solve:function(a,b){return null==b&&(b=a.clone()),this.solveUnitTriangular(a,!1,b),this.solveDiagonal(b,b),this.solveUnitTriangular(b,!0,b),b}},b.exports=e(g,h)},{"./matrix":3,"ut1l/create/object":5,"ut1l/create/throwable":6}],5:[function(a,b){var c;c=function(a,b,c){var d,e,f,g;"function"==typeof a?(c=b,b=a,a=null):null==b&&null==c&&(c=a,a=null),d=null!=b?function(a){var c;return c=b.apply(this,a),void 0!==c?c:this}:function(){},null==c&&(c={}),d.prototype=c,e=function(){return new d(arguments)},e.prototype=c;for(f in a)g=a[f],e[f]=g;return e},b.exports=c},{}],6:[function(a,b){var c,d,e,f,g;c=a("./object"),g={name:"Error",toString:function(){return null!=this.message?""+this.name+": "+this.message:this.name}},e=c(g),f=function(a){var b;this.message=a,b=Error.call(this,a),this.stack=b.stack},d=function(a,b){var d;return null==b&&(b=e),d=b(),null!=a&&(d.name=a),c(f,d)},d.c4tch=function(){var a,b,c,d,f,g,h,i;for(c=arguments,g=[],d=h=0,i=c.length;i>h&&(b=c[d],b.prototype instanceof e);d=++h)g.push(b);return 0===g.length&&g.push(e),a=c[d],f=c[d+1],function(){var b,c,d,e;try{return a.apply(this,arguments)}catch(h){for(b=h,d=0,e=g.length;e>d;d++)if(c=g[d],b instanceof c)return null!=f?f.call(this,b):void 0;throw b}}},b.exports=d},{"./object":5}]},{},[1]);