UNPKG

alzebra

Version:

An All-In-One Herd of Linear Algebra Functions

1 lines 13.4 kB
(()=>{var r={738:function(r){(function(e){"use strict";var t,i=20,n=1,o=1e6,s=1e6,u=-7,f=21,a=false,c="[big.js] ",l=c+"Invalid ",h=l+"decimal places",m=l+"rounding mode",v=c+"Division by zero",p={},d=void 0,g=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function _Big_(){function Big(r){var e=this;if(!(e instanceof Big))return r===d?_Big_():new Big(r);if(r instanceof Big){e.s=r.s;e.e=r.e;e.c=r.c.slice()}else{if(typeof r!=="string"){if(Big.strict===true&&typeof r!=="bigint"){throw TypeError(l+"value")}r=r===0&&1/r<0?"-0":String(r)}parse(e,r)}e.constructor=Big}Big.prototype=p;Big.DP=i;Big.RM=n;Big.NE=u;Big.PE=f;Big.strict=a;Big.roundDown=0;Big.roundHalfUp=1;Big.roundHalfEven=2;Big.roundUp=3;return Big}function parse(r,e){var t,i,n;if(!g.test(e)){throw Error(l+"number")}r.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1;if((t=e.indexOf("."))>-1)e=e.replace(".","");if((i=e.search(/e/i))>0){if(t<0)t=i;t+=+e.slice(i+1);e=e.substring(0,i)}else if(t<0){t=e.length}n=e.length;for(i=0;i<n&&e.charAt(i)=="0";)++i;if(i==n){r.c=[r.e=0]}else{for(;n>0&&e.charAt(--n)=="0";);r.e=t-i-1;r.c=[];for(t=0;i<=n;)r.c[t++]=+e.charAt(i++)}return r}function round(r,e,t,i){var n=r.c;if(t===d)t=r.constructor.RM;if(t!==0&&t!==1&&t!==2&&t!==3){throw Error(m)}if(e<1){i=t===3&&(i||!!n[0])||e===0&&(t===1&&n[0]>=5||t===2&&(n[0]>5||n[0]===5&&(i||n[1]!==d)));n.length=1;if(i){r.e=r.e-e+1;n[0]=1}else{n[0]=r.e=0}}else if(e<n.length){i=t===1&&n[e]>=5||t===2&&(n[e]>5||n[e]===5&&(i||n[e+1]!==d||n[e-1]&1))||t===3&&(i||!!n[0]);n.length=e;if(i){for(;++n[--e]>9;){n[e]=0;if(e===0){++r.e;n.unshift(1);break}}}for(e=n.length;!n[--e];)n.pop()}return r}function stringify(r,e,t){var i=r.e,n=r.c.join(""),o=n.length;if(e){n=n.charAt(0)+(o>1?"."+n.slice(1):"")+(i<0?"e":"e+")+i}else if(i<0){for(;++i;)n="0"+n;n="0."+n}else if(i>0){if(++i>o){for(i-=o;i--;)n+="0"}else if(i<o){n=n.slice(0,i)+"."+n.slice(i)}}else if(o>1){n=n.charAt(0)+"."+n.slice(1)}return r.s<0&&t?"-"+n:n}p.abs=function(){var r=new this.constructor(this);r.s=1;return r};p.cmp=function(r){var e,t=this,i=t.c,n=(r=new t.constructor(r)).c,o=t.s,s=r.s,u=t.e,f=r.e;if(!i[0]||!n[0])return!i[0]?!n[0]?0:-s:o;if(o!=s)return o;e=o<0;if(u!=f)return u>f^e?1:-1;s=(u=i.length)<(f=n.length)?u:f;for(o=-1;++o<s;){if(i[o]!=n[o])return i[o]>n[o]^e?1:-1}return u==f?0:u>f^e?1:-1};p.div=function(r){var e=this,t=e.constructor,i=e.c,n=(r=new t(r)).c,s=e.s==r.s?1:-1,u=t.DP;if(u!==~~u||u<0||u>o){throw Error(h)}if(!n[0]){throw Error(v)}if(!i[0]){r.s=s;r.c=[r.e=0];return r}var f,a,c,l,m,p=n.slice(),g=f=n.length,w=i.length,b=i.slice(0,f),y=b.length,x=r,_=x.c=[],E=0,A=u+(x.e=e.e-r.e)+1;x.s=s;s=A<0?0:A;p.unshift(0);for(;y++<f;)b.push(0);do{for(c=0;c<10;c++){if(f!=(y=b.length)){l=f>y?1:-1}else{for(m=-1,l=0;++m<f;){if(n[m]!=b[m]){l=n[m]>b[m]?1:-1;break}}}if(l<0){for(a=y==f?n:p;y;){if(b[--y]<a[y]){m=y;for(;m&&!b[--m];)b[m]=9;--b[m];b[y]+=10}b[y]-=a[y]}for(;!b[0];)b.shift()}else{break}}_[E++]=l?c:++c;if(b[0]&&l)b[y]=i[g]||0;else b=[i[g]]}while((g++<w||b[0]!==d)&&s--);if(!_[0]&&E!=1){_.shift();x.e--;A--}if(E>A)round(x,A,t.RM,b[0]!==d);return x};p.eq=function(r){return this.cmp(r)===0};p.gt=function(r){return this.cmp(r)>0};p.gte=function(r){return this.cmp(r)>-1};p.lt=function(r){return this.cmp(r)<0};p.lte=function(r){return this.cmp(r)<1};p.minus=p.sub=function(r){var e,t,i,n,o=this,s=o.constructor,u=o.s,f=(r=new s(r)).s;if(u!=f){r.s=-f;return o.plus(r)}var a=o.c.slice(),c=o.e,l=r.c,h=r.e;if(!a[0]||!l[0]){if(l[0]){r.s=-f}else if(a[0]){r=new s(o)}else{r.s=1}return r}if(u=c-h){if(n=u<0){u=-u;i=a}else{h=c;i=l}i.reverse();for(f=u;f--;)i.push(0);i.reverse()}else{t=((n=a.length<l.length)?a:l).length;for(u=f=0;f<t;f++){if(a[f]!=l[f]){n=a[f]<l[f];break}}}if(n){i=a;a=l;l=i;r.s=-r.s}if((f=(t=l.length)-(e=a.length))>0)for(;f--;)a[e++]=0;for(f=e;t>u;){if(a[--t]<l[t]){for(e=t;e&&!a[--e];)a[e]=9;--a[e];a[t]+=10}a[t]-=l[t]}for(;a[--f]===0;)a.pop();for(;a[0]===0;){a.shift();--h}if(!a[0]){r.s=1;a=[h=0]}r.c=a;r.e=h;return r};p.mod=function(r){var e,t=this,i=t.constructor,n=t.s,o=(r=new i(r)).s;if(!r.c[0]){throw Error(v)}t.s=r.s=1;e=r.cmp(t)==1;t.s=n;r.s=o;if(e)return new i(t);n=i.DP;o=i.RM;i.DP=i.RM=0;t=t.div(r);i.DP=n;i.RM=o;return this.minus(t.times(r))};p.neg=function(){var r=new this.constructor(this);r.s=-r.s;return r};p.plus=p.add=function(r){var e,t,i,n=this,o=n.constructor;r=new o(r);if(n.s!=r.s){r.s=-r.s;return n.minus(r)}var s=n.e,u=n.c,f=r.e,a=r.c;if(!u[0]||!a[0]){if(!a[0]){if(u[0]){r=new o(n)}else{r.s=n.s}}return r}u=u.slice();if(e=s-f){if(e>0){f=s;i=a}else{e=-e;i=u}i.reverse();for(;e--;)i.push(0);i.reverse()}if(u.length-a.length<0){i=a;a=u;u=i}e=a.length;for(t=0;e;u[e]%=10)t=(u[--e]=u[e]+a[e]+t)/10|0;if(t){u.unshift(t);++f}for(e=u.length;u[--e]===0;)u.pop();r.c=u;r.e=f;return r};p.pow=function(r){var e=this,t=new e.constructor("1"),i=t,n=r<0;if(r!==~~r||r<-s||r>s){throw Error(l+"exponent")}if(n)r=-r;for(;;){if(r&1)i=i.times(e);r>>=1;if(!r)break;e=e.times(e)}return n?t.div(i):i};p.prec=function(r,e){if(r!==~~r||r<1||r>o){throw Error(l+"precision")}return round(new this.constructor(this),r,e)};p.round=function(r,e){if(r===d)r=0;else if(r!==~~r||r<-o||r>o){throw Error(h)}return round(new this.constructor(this),r+this.e+1,e)};p.sqrt=function(){var r,e,t,i=this,n=i.constructor,o=i.s,s=i.e,u=new n("0.5");if(!i.c[0])return new n(i);if(o<0){throw Error(c+"No square root")}o=Math.sqrt(i+"");if(o===0||o===1/0){e=i.c.join("");if(!(e.length+s&1))e+="0";o=Math.sqrt(e);s=((s+1)/2|0)-(s<0||s&1);r=new n((o==1/0?"5e":(o=o.toExponential()).slice(0,o.indexOf("e")+1))+s)}else{r=new n(o+"")}s=r.e+(n.DP+=4);do{t=r;r=u.times(t.plus(i.div(t)))}while(t.c.slice(0,s).join("")!==r.c.slice(0,s).join(""));return round(r,(n.DP-=4)+r.e+1,n.RM)};p.times=p.mul=function(r){var e,t=this,i=t.constructor,n=t.c,o=(r=new i(r)).c,s=n.length,u=o.length,f=t.e,a=r.e;r.s=t.s==r.s?1:-1;if(!n[0]||!o[0]){r.c=[r.e=0];return r}r.e=f+a;if(s<u){e=n;n=o;o=e;a=s;s=u;u=a}for(e=new Array(a=s+u);a--;)e[a]=0;for(f=u;f--;){u=0;for(a=s+f;a>f;){u=e[a]+o[f]*n[a-f-1]+u;e[a--]=u%10;u=u/10|0}e[a]=u}if(u)++r.e;else e.shift();for(f=e.length;!e[--f];)e.pop();r.c=e;return r};p.toExponential=function(r,e){var t=this,i=t.c[0];if(r!==d){if(r!==~~r||r<0||r>o){throw Error(h)}t=round(new t.constructor(t),++r,e);for(;t.c.length<r;)t.c.push(0)}return stringify(t,true,!!i)};p.toFixed=function(r,e){var t=this,i=t.c[0];if(r!==d){if(r!==~~r||r<0||r>o){throw Error(h)}t=round(new t.constructor(t),r+t.e+1,e);for(r=r+t.e+1;t.c.length<r;)t.c.push(0)}return stringify(t,false,!!i)};p.toJSON=p.toString=function(){var r=this,e=r.constructor;return stringify(r,r.e<=e.NE||r.e>=e.PE,!!r.c[0])};p.toNumber=function(){var r=Number(stringify(this,true,true));if(this.constructor.strict===true&&!this.eq(r.toString())){throw Error(c+"Imprecise conversion")}return r};p.toPrecision=function(r,e){var t=this,i=t.constructor,n=t.c[0];if(r!==d){if(r!==~~r||r<1||r>o){throw Error(l+"precision")}t=round(new i(t),r,e);for(;t.c.length<r;)t.c.push(0)}return stringify(t,r<=t.e||t.e<=i.NE||t.e>=i.PE,!!n)};p.valueOf=function(){var r=this,e=r.constructor;if(e.strict===true){throw Error(c+"valueOf disallowed")}return stringify(r,r.e<=e.NE||r.e>=e.PE,true)};t=_Big_();t["default"]=t.Big=t;if(typeof define==="function"&&define.amd){define((function(){return t}))}else if(true&&r.exports){r.exports=t}else{e.Big=t}})(this)},557:function(r,e,t){"use strict";var i=this&&this.__createBinding||(Object.create?function(r,e,t,i){if(i===undefined)i=t;var n=Object.getOwnPropertyDescriptor(e,t);if(!n||("get"in n?!e.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(r,i,n)}:function(r,e,t,i){if(i===undefined)i=t;r[i]=e[t]});var n=this&&this.__exportStar||function(r,e){for(var t in r)if(t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t))i(e,r,t)};var o=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(e,"__esModule",{value:true});e.Alzebra=void 0;var s=o(t(491));var u=o(t(738));var f=t(21);var a=function(){function Alzebra(r){(0,s.default)(Array.isArray(r),"Matrix must be an array");var e=Alzebra.checkMatrixRows(r);(0,s.default)(e===null,e);this.matrix=Alzebra.bigNumMatrix(r)}Alzebra.prototype.eliminassian=function(r){(0,s.default)(this.matrix.length===r.length,"The number of values in the result vector must equal the number of rows in the Alzebra matrix");var e=Alzebra.copyBigMatrix(this.matrix);var t=Alzebra.bigNumVector(r);for(var i=0;i<t.length;i++){e[i].push(t[i])}var n=new f.Eliminassian(e).solve().numbered;var o=n.map((function(r){return r.splice(r.length-1)[0]}));return{matrix:n,vector:o}};Alzebra.checkMatrixRows=function(r){if(!r.length)return"Matrix must have at least 1 row";var e=r[0].length;for(var t=0;t<r.length;t++){var i=r[t];if(!Array.isArray(i))return"Matrix rows must be arrays";if(!i.every((function(r){return typeof r==="number"})))return"Matrix rows must only contain numbers";if(i.length!==e)return"Matrix rows must have equal length"}return null};Alzebra.bigNumVector=function(r){return r.map((function(r){return new u.default(r)}))};Alzebra.bigNumMatrix=function(r){return r.map(Alzebra.bigNumVector)};Alzebra.copyBigMatrix=function(r){return r.map((function(r){return r.map((function(r){return new u.default(r)}))}))};return Alzebra}();e.Alzebra=a;n(t(77),e);e["default"]=a},21:function(r,e,t){"use strict";var i=this&&this.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,o;i<n;i++){if(o||!(i in e)){if(!o)o=Array.prototype.slice.call(e,0,i);o[i]=e[i]}}return r.concat(o||Array.prototype.slice.call(e))};var n=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(e,"__esModule",{value:true});e.Eliminassian=void 0;var o=n(t(738));var s=function(){function Eliminassian(r){var e=this;this.colsAdded=0;this.solve=function(){e.makeSquare();e.forwardEliminate();e.backSubstitute();e.removeZeroRows();e.removeZeroCols();return e};this.makeSquare=function(){var r;if(e.numRows!==e.numCols){if(e.numRows<e.numCols){var t=e.numCols-e.numRows;(r=e.matrix).push.apply(r,Eliminassian.zeroArray2D(e.trueCols,t))}else{var n=e.numCols;var o=e.numRows-n;e.matrix.forEach((function(r){r.splice.apply(r,i([n,0],Eliminassian.zeroArray(o),false))}));e.colsAdded=o}}return e};this.forwardEliminate=function(){var _loop_1=function(r){if(e.matrix[r][r].eq(0)){var t=e.matrix.slice(r+1).findIndex((function(e){return!e[r].eq(0)}));if(t===-1)return"continue";e.swapRows(r,t+r+1)}var i=e.matrix[r];var n=i[r];e.modifyRow(r,(function(r){return r.div(n)}));e.rowsLooper(r+1)((function(t){var i=e.scaleRow(r,e.matrix[t][r]);e.modifyRow(t,(function(r,e){return r.minus(i[e])}))}))};for(var r=0;r<e.matrix[0].length-1;r++){_loop_1(r)}return e};this.backSubstitute=function(){e.columnsLooper(e.numCols-1,{reverse:true})((function(r){var t=e.matrix[r];if(!t[r].eq(0)){e.rowsLooper(r-1,{reverse:true})((function(t){var i=e.scaleRow(r,e.matrix[t][r]);e.modifyRow(t,(function(r,e){return r.minus(i[e])}))}))}}));return e};this.removeZeroRows=function(){var r=[];e.rowsLooper(0)((function(t){var i=e.matrix[t].find((function(r){return!r.eq(0)}));if(!i)r.push(t-r.length)}));r.forEach((function(r){return e.matrix.splice(r,1)}));return e};this.removeZeroCols=function(){var r=e.numCols;if(e.colsAdded){e.rowsLooper(0)((function(t){e.matrix[t].splice(r-e.colsAdded,e.colsAdded)}))}return e};this.rowsLooper=function(r,t){if(t===void 0){t={reverse:false}}return function(i){for(var n=r;(t===null||t===void 0?void 0:t.reverse)?n>=0:n<e.matrix.length;(t===null||t===void 0?void 0:t.reverse)?n--:n++){i(n)}}};this.columnsLooper=function(r,t){if(t===void 0){t={reverse:false}}return function(i){for(var n=r;(t===null||t===void 0?void 0:t.reverse)?n>=0:n<e.matrix[0].length;(t===null||t===void 0?void 0:t.reverse)?n--:n++){i(n)}}};this.swapRows=function(r,t){var i=e.matrix[t];e.matrix[t]=e.matrix[r];e.matrix[r]=i};this.scaleRow=function(r,t){return e.matrix[r].map((function(r){return r.mul(t)}))};this.modifyRow=function(r,t){e.matrix[r].forEach((function(r,e,i){return i[e]=t(r,e)}))};this.matrix=r}Object.defineProperty(Eliminassian.prototype,"numbered",{get:function(){return Eliminassian.numMatrix(this.matrix)},enumerable:false,configurable:true});Object.defineProperty(Eliminassian.prototype,"numRows",{get:function(){return this.matrix.length},enumerable:false,configurable:true});Object.defineProperty(Eliminassian.prototype,"trueCols",{get:function(){return this.matrix[0].length},enumerable:false,configurable:true});Object.defineProperty(Eliminassian.prototype,"numCols",{get:function(){return this.trueCols-1},enumerable:false,configurable:true});Eliminassian.numMatrix=function(r){return r.map((function(r){return r.map((function(r){return r.toNumber()+0}))}))};Eliminassian.zeroArray=function(r){return i([],new Array(r).fill(new o.default(0)),true)};Eliminassian.zeroArray2D=function(r,e){return new Array(e).fill(Eliminassian.zeroArray(r))};return Eliminassian}();e.Eliminassian=s},77:(r,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true})},491:r=>{"use strict";r.exports=require("assert")}};var e={};function __nccwpck_require__(t){var i=e[t];if(i!==undefined){return i.exports}var n=e[t]={exports:{}};var o=true;try{r[t].call(n.exports,n,n.exports,__nccwpck_require__);o=false}finally{if(o)delete e[t]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t=__nccwpck_require__(557);module.exports=t})();