Skip to content

Instantly share code, notes, and snippets.

@Galadirith
Created January 1, 2017 20:16
Show Gist options
  • Save Galadirith/664029897ffc82f0f6d44eb87321f2cd to your computer and use it in GitHub Desktop.
Save Galadirith/664029897ffc82f0f6d44eb87321f2cd to your computer and use it in GitHub Desktop.
PhenomD in the browser
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.phenomd=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var _,fft,math,nd,phenom;fft=require("ndarray-fft");nd=require("ndarray");_=require("underscore");math=require("mathjs");phenom=require("./phenomd.coffee");module.exports=function(m1,m2,x1,x2,fmin,fmax,dfreqs){var T,fGap,fTap,fTapEnd,freqs,hTD,htilde,htildes,i,ihTD,n,ph,rhTD,shift,thTD,tshift,w,zeros;if(m1==null){m1=10}if(m2==null){m2=10}if(x1==null){x1=0}if(x2==null){x2=0}if(fmin==null){fmin=25}if(fmax==null){fmax=3e3}if(dfreqs==null){dfreqs=1/10}ph=new phenom(m1,m2,x1,x2,fmin,fmax,dfreqs);ph.IMRPhenomDGenerateFD();htilde=ph.htilde;freqs=ph.flist_Hz;tshift=math.complex(0,2*math.pi);shift=math.exp(freqs.map(function(f){return math.multiply(f,tshift)}));htildes=math.multiply(math.dotMultiply(htilde,shift),1e20);fTapEnd=40;fTap=math.filter(freqs,function(e){return fmin<e&&e<fTapEnd});fGap=fTapEnd-fmin;w=math.dotDivide(1,math.add(math.exp(math.add(math.dotDivide(fGap,math.subtract(fTap,fmin)),math.dotDivide(fGap,math.subtract(fTap,fTapEnd)))),1));w=math.concat([0],w);w=math.concat(w,math.ones(freqs.length-fTap.length-1));htildes=math.dotMultiply(w,htildes)._data;zeros=math.zeros(fmin/dfreqs)._data;htildes=math.concat(zeros,htildes);zeros=math.zeros(htildes.length-1)._data;htildes=math.concat(htildes,zeros);zeros=math.zeros(Math.pow(2,htildes.length.toString(2).length)-htildes.length)._data;htildes=math.concat(htildes,zeros);rhTD=nd(math.re(htildes));ihTD=nd(math.im(htildes));fft(-1,rhTD,ihTD);rhTD=rhTD.data;ihTD=ihTD.data;rhTD.reverse();ihTD.reverse();T=1/dfreqs;n=htildes.length;thTD=function(){var j,ref,results;results=[];for(i=j=0,ref=n-1;0<=ref?j<=ref:j>=ref;i=0<=ref?++j:--j){results.push(i*T/(n-1))}return results}();return hTD=[thTD,rhTD,ihTD]}},{"./phenomd.coffee":2,mathjs:23,ndarray:516,"ndarray-fft":513,underscore:520}],2:[function(require,module,exports){var Constants,FinalSpin0815,FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH,M_eta_m1_m2,PhenomD,PhenomDInternalsAmplitude,PhenomDInternalsPhase,UsefulPowers,_,absolute,amp0Func,angle,arctan,chipn,exp,fdamp,fring,log,math,pi,pow,pow_2_of,pow_3_of,pow_4_of,remnant,sign,sqrt,utils,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;_=require("underscore");utils=require("./utils.coffee");M_eta_m1_m2=utils.M_eta_m1_m2;chipn=utils.chipn;UsefulPowers=utils.UsefulPowers;pow_2_of=utils.pow_2_of;pow_3_of=utils.pow_3_of;pow_4_of=utils.pow_4_of;Constants=utils.Constants;amp0Func=utils.amp0Func;remnant=require("./remnant.coffee");fring=remnant.fring;fdamp=remnant.fdamp;FinalSpin0815=remnant.FinalSpin0815;FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH=remnant.FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH;math=require("mathjs");sqrt=math.sqrt;pi=math.pi;exp=math.exp;log=math.log;arctan=math.atan;angle=math.arg;absolute=math.abs;sign=math.sign;pow=math.pow;PhenomDInternalsAmplitude=function(){"docstring for PhenomDInternalsAmplitude";function PhenomDInternalsAmplitude(){}PhenomDInternalsAmplitude.prototype.rho1_fun=function(p){"rho_1 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,t1,t2,t3,t4,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;t1=3931.8979897196696-17395.758706812805*eta;t2=(3132.375545898835+343965.86092361377*eta-1216256.5819981997*eta2)*xi;t3=(-70698.00600428853+1383907.177859705*eta-3966276.1890979446*eta2)*xi2;t4=(-60017.52423652596+803515.1181825735*eta-2091710.365941658*eta2)*xi3;return t1+t2+t3+t4};PhenomDInternalsAmplitude.prototype.rho2_fun=function(p){"rho_2 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,t1,t2,t3,t4,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;t1=-40105.47653771657+112253.0169706701*eta;t2=(23561.696065836168-3476180.699403351*eta+11375936.70849482*eta2)*xi;t3=(754313.1127166454-13084760.44625268*eta+36444584.853928134*eta2)*xi2;t4=(596226.612472288-7427790.1143564405*eta+18928977.514040343*eta2)*xi3;return t1+t2+t3+t4};PhenomDInternalsAmplitude.prototype.rho3_fun=function(p){"rho_3 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,t1,t2,t3,t4,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;t1=83208.35471266537-191237.7264145924*eta;t2=(-210916.2454782992+8717975.08352568*eta-26914942.420669552*eta2)*xi;t3=(-1988980.6527362722+30888029.960154563*eta-83908702.79256162*eta2)*xi2;t4=(-1453503.1953446497+17063528.990822166*eta-42748659.731120914*eta2)*xi3;return t1+t2+t3+t4};PhenomDInternalsAmplitude.prototype.init_amp_ins_prefactors=function(p,model_pars,powers_of_pi){"helper function for AmpInsAnsatz\np : dict\npowers_of_pi : instant of UsefulPowers class\noutput:\noutput a dictionary called prefactors";var Pi,Pi2,Seta,chi1,chi12,chi2,chi22,eta,eta2,eta3,prefactors,rho1,rho2,rho3;prefactors={};eta=p["eta"];prefactors["PNamp0"]=amp0Func(eta);chi1=p["chi1z"];chi2=p["chi2z"];rho1=model_pars["rho1"];rho2=model_pars["rho2"];rho3=model_pars["rho3"];chi12=chi1*chi1;chi22=chi2*chi2;eta2=eta*eta;eta3=eta*eta2;Pi=pi;Pi2=powers_of_pi.two;Seta=sqrt(1-4*eta);prefactors["two_thirds"]=(-969+1804*eta)*powers_of_pi.two_thirds/672;prefactors["one"]=(chi1*(81*(1+Seta)-44*eta)+chi2*(81-81*Seta-44*eta))*Pi/48;prefactors["four_thirds"]=(-27312085-10287648*chi22-10287648*chi12*(1+Seta)+10287648*chi22*Seta+24*(-1975055+857304*chi12-994896*chi1*chi2+857304*chi22)*eta+35371056*eta2)*powers_of_pi.four_thirds/8128512;prefactors["five_thirds"]=powers_of_pi.five_thirds*(chi2*(-285197*(-1+Seta)+4*(-91902+1579*Seta)*eta-35632*eta2)+chi1*(285197*(1+Seta)-4*(91902+1579*Seta)*eta-35632*eta2)+42840*(-1+4*eta)*Pi)/32256;prefactors["two"]=-(Pi2*(-336*(-3248849057+2943675504*chi12-3339284256*chi1*chi2+2943675504*chi22)*eta2-324322727232*eta3-7*(-177520268561+107414046432*chi22+107414046432*chi12*(1+Seta)-107414046432*chi22*Seta+11087290368*(chi1+chi2+chi1*Seta-chi2*Seta)*Pi)+12*eta*(-545384828789-176491177632*chi1*chi2+202603761360*chi22+77616*chi12*(2610335+995766*Seta)-77287373856*chi22*Seta+5841690624*(chi1+chi2)*Pi+21384760320*Pi2)))/60085960704;prefactors["seven_thirds"]=rho1;prefactors["eight_thirds"]=rho2;prefactors["three"]=rho3;return prefactors};PhenomDInternalsAmplitude.prototype.AmpInsAnsatz=function(Mf,powers_of_Mf,prefactors){"input:\n Mf : float\n dimensionless frequency\n powers_of_Mf : instance of UsefulPowers class\n prefactors : dict\n output from init_amp_ins_prefactors function\nInspiral amplitude plus rho phenom coefficents. rho coefficients computed\nin rho1_fun, rho2_fun, rho3_fun functions.\nAmplitude is a re-expansion. See 1508.07253 and Equation 29, 30 and Appendix B arXiv:1508.07253 for details";var Mf2,Mf3;Mf2=powers_of_Mf.two;Mf3=Mf*Mf2;return 1+powers_of_Mf.two_thirds*prefactors["two_thirds"]+Mf*prefactors["one"]+powers_of_Mf.four_thirds*prefactors["four_thirds"]+powers_of_Mf.five_thirds*prefactors["five_thirds"]+Mf2*prefactors["two"]+powers_of_Mf.seven_thirds*prefactors["seven_thirds"]+powers_of_Mf.eight_thirds*prefactors["eight_thirds"]+Mf3*prefactors["three"]};PhenomDInternalsAmplitude.prototype.DAmpInsAnsatz=function(Mf,p,model_pars,powers_of_pi,powers_of_Mf){"input frequency : Mf\nTake the AmpInsAnsatz expression and compute the first derivative\nwith respect to frequency to get the expression below.";var Mf2,Pi,Pi2,Seta,chi1,chi12,chi2,chi22,eta,eta2,eta3,rho1,rho2,rho3;eta=p["eta"];chi1=p["chi1z"];chi2=p["chi2z"];rho1=model_pars["rho1"];rho2=model_pars["rho2"];rho3=model_pars["rho3"];chi12=chi1*chi1;chi22=chi2*chi2;eta2=eta*eta;eta3=eta*eta2;Mf2=Mf*Mf;Pi=pi;Pi2=powers_of_pi.two;Seta=sqrt(1-4*eta);return(-969+1804*eta)*powers_of_pi.two_thirds/(1008*powers_of_Mf.third)+(chi1*(81*(1+Seta)-44*eta)+chi2*(81-81*Seta-44*eta))*Pi/48+(-27312085-10287648*chi22-10287648*chi12*(1+Seta)+10287648*chi22*Seta+24*(-1975055+857304*chi12-994896*chi1*chi2+857304*chi22)*eta+35371056*eta2)*powers_of_Mf.third*powers_of_pi.four_thirds/6096384+5*powers_of_Mf.two_thirds*powers_of_pi.five_thirds*(chi2*(-285197*(-1+Seta)+4*(-91902+1579*Seta)*eta-35632*eta2)+chi1*(285197*(1+Seta)-4*(91902+1579*Seta)*eta-35632*eta2)+42840*(-1+4*eta)*Pi)/96768-Mf*Pi2*(-336*(-3248849057+2943675504*chi12-3339284256*chi1*chi2+2943675504*chi22)*eta2-324322727232*eta3-7*(-177520268561+107414046432*chi22+107414046432*chi12*(1+Seta)-107414046432*chi22*Seta+11087290368*(chi1+chi2+chi1*Seta-chi2*Seta)*Pi)+12*eta*(-545384828789-176491177632*chi1*chi2+202603761360*chi22+77616*chi12*(2610335+995766*Seta)-77287373856*chi22*Seta+5841690624*(chi1+chi2)*Pi+21384760320*Pi2))/30042980352+7/3*pow(Mf,4/3)*rho1+8/3*powers_of_Mf.five_thirds*rho2+3*Mf2*rho3};PhenomDInternalsAmplitude.prototype.gamma1_fun=function(p){"gamma 1 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return.006927402739328343+.03020474290328911*eta+(.006308024337706171-.12074130661131138*eta+.26271598905781324*eta2)*xi+(.0034151773647198794-.10779338611188374*eta+.27098966966891747*eta2)*xi2+(.0007374185938559283-.02749621038376281*eta+.0733150789135702*eta2)*xi3};PhenomDInternalsAmplitude.prototype.gamma2_fun=function(p){"gamma 2 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 1.010344404799477+.0008993122007234548*eta+(.283949116804459-4.049752962958005*eta+13.207828172665366*eta2)*xi+(.10396278486805426-7.025059158961947*eta+24.784892370130475*eta2)*xi2+(.03093202475605892-2.6924023896851663*eta+9.609374464684983*eta2)*xi3};PhenomDInternalsAmplitude.prototype.gamma3_fun=function(p){"gamma 3 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 1.3081615607036106-.005537729694807678*eta+(-.06782917938621007-.6689834970767117*eta+3.403147966134083*eta2)*xi+(-.05296577374411866-.9923793203111362*eta+4.820681208409587*eta2)*xi2+(-.006134139870393713-.38429253308696365*eta+1.7561754421985984*eta2)*xi3};PhenomDInternalsAmplitude.prototype.AmpMRDAnsatz=function(Mf,model_pars){"input frequency : Mf\nAnsatz for the merger-ringdown amplitude. Equation 19 arXiv:1508.07253";var fDM,fDMgamma3,fRD,fminfRD,gamma1,gamma2,gamma3;fRD=model_pars["fRD"];fDM=model_pars["fDM"];gamma1=model_pars["gamma1"];gamma2=model_pars["gamma2"];gamma3=model_pars["gamma3"];fDMgamma3=fDM*gamma3;fminfRD=Mf-fRD;return exp(-fminfRD*gamma2/fDMgamma3)*(fDMgamma3*gamma1)/(pow_2_of(fminfRD)+pow_2_of(fDMgamma3))};PhenomDInternalsAmplitude.prototype.DAmpMRDAnsatz=function(Mf,model_pars){"input frequency : Mf\nfirst frequency derivative of AmpMRDAnsatz";var expfactor,fDM,fDMgamma3,fRD,fminfRD,gamma1,gamma2,gamma3,pow2_fDMgamma3,pow2pluspow2;fRD=model_pars["fRD"];fDM=model_pars["fDM"];gamma1=model_pars["gamma1"];gamma2=model_pars["gamma2"];gamma3=model_pars["gamma3"];fDMgamma3=fDM*gamma3;pow2_fDMgamma3=pow_2_of(fDMgamma3);fminfRD=Mf-fRD;expfactor=exp(fminfRD*gamma2/fDMgamma3);pow2pluspow2=pow_2_of(fminfRD)+pow2_fDMgamma3;return-2*fDM*fminfRD*gamma3*gamma1/(expfactor*pow_2_of(pow2pluspow2))-gamma2*gamma1/(expfactor*pow2pluspow2)};PhenomDInternalsAmplitude.prototype.fmaxCalc=function(model_pars){"Equation 20 arXiv:1508.07253 (called f_peak in paper)\nanalytic location of maximum of AmpMRDAnsatz";var fDM,fRD,gamma2,gamma3;fRD=model_pars["fRD"];fDM=model_pars["fDM"];gamma2=model_pars["gamma2"];gamma3=model_pars["gamma3"];if(gamma2<=1){return absolute(fRD+fDM*(-1+sqrt(1-pow_2_of(gamma2)))*gamma3/gamma2)}else{return absolute(fRD+fDM*-1*gamma3/gamma2)}};PhenomDInternalsAmplitude.prototype.AmpIntAnsatz=function(Mf,model_pars){"Ansatz for the intermediate amplitude. Equation 21 arXiv:1508.07253";var Mf2,Mf3,Mf4;Mf2=Mf*Mf;Mf3=Mf*Mf2;Mf4=Mf*Mf3;return model_pars["delta0"]+model_pars["delta1"]*Mf+model_pars["delta2"]*Mf2+model_pars["delta3"]*Mf3+model_pars["delta4"]*Mf4};PhenomDInternalsAmplitude.prototype.AmpIntColFitCoeff=function(p){"The function name stands for 'Amplitude Intermediate Collocation Fit Coefficient'\nThis is the 'v2' value in Table 5 of arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return.8149838730507785+2.5747553517454658*eta+(1.1610198035496786-2.3627771785551537*eta+6.771038707057573*eta2)*xi+(.7570782938606834-2.7256896890432474*eta+7.1140380397149965*eta2)*xi2+(.1766934149293479-.7978690983168183*eta+2.1162391502005153*eta2)*xi3};PhenomDInternalsAmplitude.prototype.delta0_fun=function(delta_params,d){"delta_params\nd : dict of delta\nThe following functions (delta{0,1,2,3,4}_fun) were derived\nin mathematica according to\nthe constraints detailed in arXiv:1508.07253,\nsection 'Region IIa - intermediate'.\nThese are not given in the paper.\nCan be rederived by solving Equation 21 for the constraints\ngiven in Equations 22-26 in arXiv:1508.07253";var d1,d2,f1,f12,f13,f14,f15,f2,f22,f23,f24,f3,f32,f33,f34,f35,v1,v2,v3;f1=delta_params["f1"];f2=delta_params["f2"];f3=delta_params["f3"];v1=delta_params["v1"];v2=delta_params["v2"];v3=delta_params["v3"];d1=delta_params["d1"];d2=delta_params["d2"];f12=d["f12"];f13=d["f13"];f14=d["f14"];f15=d["f15"];f22=d["f22"];f23=d["f23"];f24=d["f24"];f32=d["f32"];f33=d["f33"];f34=d["f34"];f35=d["f35"];return-((d2*f15*f22*f3-2*d2*f14*f23*f3+d2*f13*f24*f3-d2*f15*f2*f32+d2*f14*f22*f32-d1*f13*f23*f32+d2*f13*f23*f32+d1*f12*f24*f32-d2*f12*f24*f32+d2*f14*f2*f33+2*d1*f13*f22*f33-2*d2*f13*f22*f33-d1*f12*f23*f33+d2*f12*f23*f33-d1*f1*f24*f33-d1*f13*f2*f34-d1*f12*f22*f34+2*d1*f1*f23*f34+d1*f12*f2*f35-d1*f1*f22*f35+4*f12*f23*f32*v1-3*f1*f24*f32*v1-8*f12*f22*f33*v1+4*f1*f23*f33*v1+f24*f33*v1+4*f12*f2*f34*v1+f1*f22*f34*v1-2*f23*f34*v1-2*f1*f2*f35*v1+f22*f35*v1-f15*f32*v2+3*f14*f33*v2-3*f13*f34*v2+f12*f35*v2-f15*f22*v3+2*f14*f23*v3-f13*f24*v3+2*f15*f2*f3*v3-f14*f22*f3*v3-4*f13*f23*f3*v3+3*f12*f24*f3*v3-4*f14*f2*f32*v3+8*f13*f22*f32*v3-4*f12*f23*f32*v3)/(pow_2_of(f1-f2)*pow_3_of(f1-f3)*pow_2_of(f3-f2)))};PhenomDInternalsAmplitude.prototype.delta1_fun=function(delta_params,d){var d1,d2,f1,f12,f13,f14,f15,f2,f22,f23,f24,f3,f32,f33,f34,f35,v1,v2,v3;f1=delta_params["f1"];f2=delta_params["f2"];f3=delta_params["f3"];v1=delta_params["v1"];v2=delta_params["v2"];v3=delta_params["v3"];d1=delta_params["d1"];d2=delta_params["d2"];f12=d["f12"];f13=d["f13"];f14=d["f14"];f15=d["f15"];f22=d["f22"];f23=d["f23"];f24=d["f24"];f32=d["f32"];f33=d["f33"];f34=d["f34"];f35=d["f35"];return-((-(d2*f15*f22)+2*d2*f14*f23-d2*f13*f24-d2*f14*f22*f3+2*d1*f13*f23*f3+2*d2*f13*f23*f3-2*d1*f12*f24*f3-d2*f12*f24*f3+d2*f15*f32-3*d1*f13*f22*f32-d2*f13*f22*f32+2*d1*f12*f23*f32-2*d2*f12*f23*f32+d1*f1*f24*f32+2*d2*f1*f24*f32-d2*f14*f33+d1*f12*f22*f33+3*d2*f12*f22*f33-2*d1*f1*f23*f33-2*d2*f1*f23*f33+d1*f24*f33+d1*f13*f34+d1*f1*f22*f34-2*d1*f23*f34-d1*f12*f35+d1*f22*f35-8*f12*f23*f3*v1+6*f1*f24*f3*v1+12*f12*f22*f32*v1-8*f1*f23*f32*v1-4*f12*f34*v1+2*f1*f35*v1+2*f15*f3*v2-4*f14*f32*v2+4*f12*f34*v2-2*f1*f35*v2-2*f15*f3*v3+8*f12*f23*f3*v3-6*f1*f24*f3*v3+4*f14*f32*v3-12*f12*f22*f32*v3+8*f1*f23*f32*v3)/(pow_2_of(f1-f2)*pow_3_of(f1-f3)*pow_2_of(-f2+f3)))};PhenomDInternalsAmplitude.prototype.delta2_fun=function(delta_params,d){var d1,d2,f1,f12,f13,f14,f15,f2,f23,f24,f3,f32,f33,f34,f35,v1,v2,v3;f1=delta_params["f1"];f2=delta_params["f2"];f3=delta_params["f3"];v1=delta_params["v1"];v2=delta_params["v2"];v3=delta_params["v3"];d1=delta_params["d1"];d2=delta_params["d2"];f12=d["f12"];f13=d["f13"];f14=d["f14"];f15=d["f15"];f23=d["f23"];f24=d["f24"];f32=d["f32"];f33=d["f33"];f34=d["f34"];f35=d["f35"];return-((d2*f15*f2-d1*f13*f23-3*d2*f13*f23+d1*f12*f24+2*d2*f12*f24-d2*f15*f3+d2*f14*f2*f3-d1*f12*f23*f3+d2*f12*f23*f3+d1*f1*f24*f3-d2*f1*f24*f3-d2*f14*f32+3*d1*f13*f2*f32+d2*f13*f2*f32-d1*f1*f23*f32+d2*f1*f23*f32-2*d1*f24*f32-d2*f24*f32-2*d1*f13*f33+2*d2*f13*f33-d1*f12*f2*f33-3*d2*f12*f2*f33+3*d1*f23*f33+d2*f23*f33+d1*f12*f34-d1*f1*f2*f34+d1*f1*f35-d1*f2*f35+4*f12*f23*v1-3*f1*f24*v1+4*f1*f23*f3*v1-3*f24*f3*v1-12*f12*f2*f32*v1+4*f23*f32*v1+8*f12*f33*v1-f1*f34*v1-f35*v1-f15*v2-f14*f3*v2+8*f13*f32*v2-8*f12*f33*v2+f1*f34*v2+f35*v2+f15*v3-4*f12*f23*v3+3*f1*f24*v3+f14*f3*v3-4*f1*f23*f3*v3+3*f24*f3*v3-8*f13*f32*v3+12*f12*f2*f32*v3-4*f23*f32*v3)/(pow_2_of(f1-f2)*pow_3_of(f1-f3)*pow_2_of(-f2+f3)))};PhenomDInternalsAmplitude.prototype.delta3_fun=function(delta_params,d){var d1,d2,f1,f12,f13,f14,f2,f22,f24,f3,f32,f33,f34,v1,v2,v3;f1=delta_params["f1"];f2=delta_params["f2"];f3=delta_params["f3"];v1=delta_params["v1"];v2=delta_params["v2"];v3=delta_params["v3"];d1=delta_params["d1"];d2=delta_params["d2"];f12=d["f12"];f13=d["f13"];f14=d["f14"];f22=d["f22"];f24=d["f24"];f32=d["f32"];f33=d["f33"];f34=d["f34"];return-((-2*d2*f14*f2+d1*f13*f22+3*d2*f13*f22-d1*f1*f24-d2*f1*f24+2*d2*f14*f3-2*d1*f13*f2*f3-2*d2*f13*f2*f3+d1*f12*f22*f3-d2*f12*f22*f3+d1*f24*f3+d2*f24*f3+d1*f13*f32-d2*f13*f32-2*d1*f12*f2*f32+2*d2*f12*f2*f32+d1*f1*f22*f32-d2*f1*f22*f32+d1*f12*f33-d2*f12*f33+2*d1*f1*f2*f33+2*d2*f1*f2*f33-3*d1*f22*f33-d2*f22*f33-2*d1*f1*f34+2*d1*f2*f34-4*f12*f22*v1+2*f24*v1+8*f12*f2*f3*v1-4*f1*f22*f3*v1-4*f12*f32*v1+8*f1*f2*f32*v1-4*f22*f32*v1-4*f1*f33*v1+2*f34*v1+2*f14*v2-4*f13*f3*v2+4*f1*f33*v2-2*f34*v2-2*f14*v3+4*f12*f22*v3-2*f24*v3+4*f13*f3*v3-8*f12*f2*f3*v3+4*f1*f22*f3*v3+4*f12*f32*v3-8*f1*f2*f32*v3+4*f22*f32*v3)/(pow_2_of(f1-f2)*pow_3_of(f1-f3)*pow_2_of(-f2+f3)))};PhenomDInternalsAmplitude.prototype.delta4_fun=function(delta_params,d){var d1,d2,f1,f12,f13,f2,f22,f23,f3,f32,f33,v1,v2,v3;f1=delta_params["f1"];f2=delta_params["f2"];f3=delta_params["f3"];v1=delta_params["v1"];v2=delta_params["v2"];v3=delta_params["v3"];d1=delta_params["d1"];d2=delta_params["d2"];f12=d["f12"];f13=d["f13"];f22=d["f22"];f23=d["f23"];f32=d["f32"];f33=d["f33"];return-((d2*f13*f2-d1*f12*f22-2*d2*f12*f22+d1*f1*f23+d2*f1*f23-d2*f13*f3+2*d1*f12*f2*f3+d2*f12*f2*f3-d1*f1*f22*f3+d2*f1*f22*f3-d1*f23*f3-d2*f23*f3-d1*f12*f32+d2*f12*f32-d1*f1*f2*f32-2*d2*f1*f2*f32+2*d1*f22*f32+d2*f22*f32+d1*f1*f33-d1*f2*f33+3*f1*f22*v1-2*f23*v1-6*f1*f2*f3*v1+3*f22*f3*v1+3*f1*f32*v1-f33*v1-f13*v2+3*f12*f3*v2-3*f1*f32*v2+f33*v2+f13*v3-3*f1*f22*v3+2*f23*v3-3*f12*f3*v3+6*f1*f2*f3*v3-3*f22*f3*v3)/(pow_2_of(f1-f2)*pow_3_of(f1-f3)*pow_2_of(-f2+f3)))};PhenomDInternalsAmplitude.prototype.ComputeDeltasFromCollocation=function(p,model_pars,powers_of_pi){"Output: diction of:\nf1,f2,f3,v1,v2,v3,d1,d2\nand\ndelta0,delta1,delta2,delta3,delta4.\nIn phenomD code this gets added to the model_pars dictionary\nCalculates delta_i's\nMethod described in arXiv:1508.07253 section 'Region IIa - intermediate'";var chi,d,d1,d2,delta_params,dfx,eta,f1,f2,f3,powers_of_f1,v1,v2,v3;delta_params={};eta=p["eta"];chi=p["chipn"];f1=this.AMP_fJoin_INS;f3=model_pars["fmaxCalc"];dfx=(f3-f1)/2;f2=f1+dfx;powers_of_f1=new UsefulPowers(f1);v1=this.AmpInsAnsatz(f1,powers_of_f1,model_pars["amp_prefactors"]);d1=this.DAmpInsAnsatz(f1,p,model_pars,powers_of_pi,powers_of_f1);v3=this.AmpMRDAnsatz(f3,model_pars);d2=this.DAmpMRDAnsatz(f3,model_pars);v2=this.AmpIntColFitCoeff(p);delta_params["f1"]=f1;delta_params["f2"]=f2;delta_params["f3"]=f3;delta_params["v1"]=v1;delta_params["v2"]=v2;delta_params["v3"]=v3;delta_params["d1"]=d1;delta_params["d2"]=d2;d={};d["f12"]=f1*f1;d["f13"]=f1*d["f12"];d["f14"]=f1*d["f13"];d["f15"]=f1*d["f14"];d["f22"]=f2*f2;d["f23"]=f2*d["f22"];d["f24"]=f2*d["f23"];d["f32"]=f3*f3;d["f33"]=f3*d["f32"];d["f34"]=f3*d["f33"];d["f35"]=f3*d["f34"];delta_params["delta0"]=this.delta0_fun(delta_params,d);delta_params["delta1"]=this.delta1_fun(delta_params,d);delta_params["delta2"]=this.delta2_fun(delta_params,d);delta_params["delta3"]=this.delta3_fun(delta_params,d);delta_params["delta4"]=this.delta4_fun(delta_params,d);return delta_params};return PhenomDInternalsAmplitude}();PhenomDInternalsPhase=function(superClass){"docstring for PhenomDInternalsPhase";extend(PhenomDInternalsPhase,superClass);function PhenomDInternalsPhase(){return PhenomDInternalsPhase.__super__.constructor.apply(this,arguments)}PhenomDInternalsPhase.prototype.alpha1Fit=function(p){"alpha 1 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 43.31514709695348+638.6332679188081*eta+(-32.85768747216059+2415.8938269370315*eta-5766.875169379177*eta2)*xi+(-61.85459307173841+2953.967762459948*eta-8986.29057591497*eta2)*xi2+(-21.571435779762044+981.2158224673428*eta-3239.5664895930286*eta2)*xi3};PhenomDInternalsPhase.prototype.alpha2Fit=function(p){"alpha 2 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return-.07020209449091723-.16269798450687084*eta+(-.1872514685185499+1.138313650449945*eta-2.8334196304430046*eta2)*xi+(-.17137955686840617+1.7197549338119527*eta-4.539717148261272*eta2)*xi2+(-.049983437357548705+.6062072055948309*eta-1.682769616644546*eta2)*xi3};PhenomDInternalsPhase.prototype.alpha3Fit=function(p){"alpha 3 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 9.5988072383479-397.05438595557433*eta+(16.202126189517813-1574.8286986717037*eta+3600.3410843831093*eta2)*xi+(27.092429659075467-1786.482357315139*eta+5152.919378666511*eta2)*xi2+(11.175710130033895-577.7999423177481*eta+1808.730762932043*eta2)*xi3};PhenomDInternalsPhase.prototype.alpha4Fit=function(p){"alpha 4 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return-.02989487384493607+1.4022106448583738*eta+(-.07356049468633846+.8337006542278661*eta+.2240008282397391*eta2)*xi+(-.055202870001177226+.5667186343606578*eta+.7186931973380503*eta2)*xi2+(-.015507437354325743+.15750322779277187*eta+.21076815715176228*eta2)*xi3};PhenomDInternalsPhase.prototype.alpha5Fit=function(p){"alpha 5 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return.9974408278363099-.007884449714907203*eta+(-.059046901195591035+1.3958712396764088*eta-4.516631601676276*eta2)*xi+(-.05585343136869692+1.7516580039343603*eta-5.990208965347804*eta2)*xi2+(-.017945336522161195+.5965097794825992*eta-2.0608879367971804*eta2)*xi3};PhenomDInternalsPhase.prototype.PhiMRDAnsatzInt=function(Mf,model_pars){"Ansatz for the merger-ringdown phase Equation 14 arXiv:1508.07253";var fpow0_75,fpow1_5,sqrootf;sqrootf=sqrt(Mf);fpow1_5=Mf*sqrootf;fpow0_75=sqrt(fpow1_5);return-(model_pars["alpha2"]/Mf)+4/3*(model_pars["alpha3"]*fpow0_75)+model_pars["alpha1"]*Mf+model_pars["alpha4"]*arctan((Mf-model_pars["alpha5"]*model_pars["fRD"])/model_pars["fDM"])};PhenomDInternalsPhase.prototype.DPhiMRD=function(Mf,model_pars,eta){"First frequency derivative of PhiMRDAnsatzInt";return(model_pars["alpha1"]+model_pars["alpha2"]/pow_2_of(Mf)+model_pars["alpha3"]/Math.pow(Mf,.25)+model_pars["alpha4"]/(model_pars["fDM"]*(1+pow_2_of(Mf-model_pars["alpha5"]*model_pars["fRD"])/pow_2_of(model_pars["fDM"]))))/eta};PhenomDInternalsPhase.prototype.beta1Fit=function(p){"beta 1 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 97.89747327985583-42.659730877489224*eta+(153.48421037904913-1417.0620760768954*eta+2752.8614143665027*eta2)*xi+(138.7406469558649-1433.6585075135881*eta+2857.7418952430758*eta2)*xi2+(41.025109467376126-423.680737974639*eta+850.3594335657173*eta2)*xi3};PhenomDInternalsPhase.prototype.beta2Fit=function(p){"beta 2 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return-3.282701958759534-9.051384468245866*eta+(-12.415449742258042+55.4716447709787*eta-106.05109938966335*eta2)*xi+(-11.953044553690658+76.80704618365418*eta-155.33172948098394*eta2)*xi2+(-3.4129261592393263+25.572377569952536*eta-54.408036707740465*eta2)*xi3};PhenomDInternalsPhase.prototype.beta3Fit=function(p){"beta 3 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return-25156429818799565e-21+19750256942201327e-21*eta+(-18370671469295915e-21+21886317041311973e-21*eta+8250240316860033e-20*eta2)*xi+(7157371250566708e-21-55780000112270685e-21*eta+.00019142082884072178*eta2)*xi2+(5447166261464217e-21-3220610095021982e-20*eta+7974016714984341e-20*eta2)*xi3};PhenomDInternalsPhase.prototype.PhiIntAnsatz=function(Mf,model_pars){"ansatz for the intermediate phase defined by Equation 16 arXiv:1508.07253";return model_pars["beta1"]*Mf-model_pars["beta3"]/(3*pow_3_of(Mf))+model_pars["beta2"]*log(Mf)};PhenomDInternalsPhase.prototype.DPhiIntAnsatz=function(Mf,model_pars,eta){"First frequency derivative of PhiIntAnsatz\n(this time with 1./eta explicitly factored in)";return(model_pars["beta1"]+model_pars["beta3"]/pow_4_of(Mf)+model_pars["beta2"]/Mf)/eta};PhenomDInternalsPhase.prototype.DPhiIntTemp=function(Mf,model_pars,eta,C2Int){"temporary instance of DPhiIntAnsatz used when computing\ncoefficients to make the phase C(1) continuous between regions.";var beta1,beta2,beta3;beta1=model_pars["beta1"];beta2=model_pars["beta2"];beta3=model_pars["beta3"];return C2Int+(beta1+beta3/pow_4_of(Mf)+beta2/Mf)/eta};PhenomDInternalsPhase.prototype.sigma1Fit=function(p){"sigma 1 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 2096.551999295543+1463.7493168261553*eta+(1312.5493286098522+18307.330017082117*eta-43534.1440746107*eta2)*xi+(-833.2889543511114+32047.31997183187*eta-108609.45037520859*eta2)*xi2+(452.25136398112204+8353.439546391714*eta-44531.3250037322*eta2)*xi3};PhenomDInternalsPhase.prototype.sigma2Fit=function(p){"sigma 2 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return-10114.056472621156-44631.01109458185*eta+(-6541.308761668722-266959.23419307504*eta+686328.3229317984*eta2)*xi+(3405.6372187679685-437507.7208209015*eta+1631817.1307344697*eta2)*xi2+(-7462.648563007646-114585.25177153319*eta+674402.4689098676*eta2)*xi3};PhenomDInternalsPhase.prototype.sigma3Fit=function(p){"sigma 3 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return 22933.658273436497+230960.00814979506*eta+(14961.083974183695+1194018.1342318142*eta-3104223.9693052764*eta2)*xi+(-3038.166617199259+1872032.2849093592*eta-7309145.012085539*eta2)*xi2+(42738.22871475411+467502.018616601*eta-3064853.498512499*eta2)*xi3};PhenomDInternalsPhase.prototype.sigma4Fit=function(p){"sigma 4 phenom coefficient. See corresponding row in Table 5 arXiv:1508.07253";var chi,eta,eta2,xi,xi2,xi3;eta=p["eta"];chi=p["chipn"];xi=-1+chi;xi2=xi*xi;xi3=xi2*xi;eta2=eta*eta;return-14621.71522218357-377812.8579387104*eta+(-9608.682631509726-1710892.5257214056*eta+4332924.601416521*eta2)*xi+(-22366.683262266528-2501971.6386377467*eta+10274495.902259542*eta2)*xi2+(-85360.30079034246-570025.3441737515*eta+4396844.346849777*eta2)*xi3};PhenomDInternalsPhase.prototype.SimInspiralTaylorF2AlignedPhasing=function(p){"input\n p : dict\noutput - pn coefficient dictionary\n pfa : dict\n pfa['N'],\n pfa['v[0]'],\n pfa['v[2]'],\n pfa['v[3]'],\n pfa['v[4]'],\n pfa['v[5]'],\n pfa['vlogv[5]'],\n pfa['v[6]'],\n pfa['v[6]'],\n pfa['vlogv[6]'],\n pfa['v[7]']\n\nSimInspiralTaylorF2AlignedPhasing\nThis code is taken from the top LALSimIMRPhenomD_internals.c\nIt implements the, then currrent, state of the PN calculations in\nLAL. After PhenomD was constructed the 3PN spin-spin term\nwas added to LAL. This implementation does NOT use this term.\nThis implementation + 3PN spin-spin term should equate to LAL (07/06/2016)\n\n - original text from LALSimIMRPhenomD_internals.c:\n''This waveform uses the TaylorF2 coefficients for it's inspiral phase augmented\nby higher order phenomenological terms tuned to SEOBv2-Hybrid waveforms.\nBelow are lines copied from LALSimInspiralPNCoefficients.c which are the TaylorF2\nphase coefficients we have used.\nWe document them here in case changes to that file changes the behaviour\nof this waveform.''";var LAL_GAMMA,LAL_PI,SL,chi1L,chi1dotchi2,chi1sq,chi2L,chi2sq,d,dSigmaL,eta,j,key,len,m1,m1M,m2,m2M,mtot,pfa,pfaN,pn_gamma,pn_sigma,qm_def1,qm_def2,ref;pfa={};m1=p["m1"];m2=p["m2"];chi1L=p["chi1z"];chi2L=p["chi2z"];mtot=p["Mtot"];eta=p["eta"];d=(m1-m2)/(m1+m2);m1M=m1/mtot;m2M=m2/mtot;chi1sq=chi1L*chi1L;chi2sq=chi2L*chi2L;chi1dotchi2=chi1L*chi2L;LAL_PI=pi;LAL_GAMMA=.5772156649015329;qm_def1=1;qm_def2=1;SL=m1M*m1M*chi1L+m2M*m2M*chi2L;dSigmaL=d*(m2M*chi2L-m1M*chi1L);pfaN=3/(128*eta);pfa["v[0]"]=1;pfa["v[1]"]=0;pfa["v[2]"]=5*(743/84+11*eta)/9;pfa["v[3]"]=-16*LAL_PI;pfa["v[4]"]=5*(3058.673/7.056+5429/7*eta+617*eta*eta)/72;pfa["v[5]"]=5/9*(7729/84-13*eta)*LAL_PI;pfa["vlogv[5]"]=5/3*(7729/84-13*eta)*LAL_PI;pfa["v[6]"]=11583.231236531/4.69421568-640/3*LAL_PI*LAL_PI-6848/21*LAL_GAMMA+eta*(-15737.765635/3.048192+2255/12*LAL_PI*LAL_PI)+eta*eta*76055/1728-eta*eta*eta*127825/1296;pfa["v[6]"]+=-6848/21*log(4);pfa["vlogv[6]"]=-6848/21;pfa["v[7]"]=LAL_PI*(77096675/254016+378515/1512*eta-74045/756*eta*eta);pn_sigma=eta*(721/48*chi1L*chi2L-247/48*chi1dotchi2);pn_sigma+=(720*qm_def1-1)/96*m1M*m1M*chi1L*chi1L;pn_sigma+=(720*qm_def2-1)/96*m2M*m2M*chi2L*chi2L;pn_sigma-=(240*qm_def1-7)/96*m1M*m1M*chi1sq;pn_sigma-=(240*qm_def2-7)/96*m2M*m2M*chi2sq;pn_gamma=(554345/1134+110*eta/9)*SL+(13915/84-10*eta/3)*dSigmaL;pfa["v[7]"]+=(-8980424995/762048+6586595*eta/756-305*eta*eta/36)*SL-(170978035/48384-2876425*eta/672-4735*eta*eta/144)*dSigmaL;pfa["v[6]"]+=LAL_PI*(3760*SL+1490*dSigmaL)/3;pfa["v[5]"]+=-1*pn_gamma;pfa["vlogv[5]"]+=-3*pn_gamma;pfa["v[4]"]+=-10*pn_sigma;pfa["v[3]"]+=188*SL/3+25*dSigmaL;ref=Object.keys(pfa);for(j=0,len=ref.length;j<len;j++){key=ref[j];pfa[key]*=pfaN}return pfa};PhenomDInternalsPhase.prototype.init_phi_ins_prefactors=function(model_pars,powers_of_pi){"helper function for phase\np : dict\npn : dict of PN coefficients from SimInspiralTaylorF2AlignedPhasing\npowers_of_pi : instant of UsefulPowers class\noutput:\noutput a dictionary called prefactors";var LAL_PI_4,Pi,pn,prefactors,sigma1,sigma2,sigma3,sigma4;pn=model_pars["pn"];prefactors={};sigma1=model_pars["sigma1"];sigma2=model_pars["sigma2"];sigma3=model_pars["sigma3"];sigma4=model_pars["sigma4"];Pi=pi;LAL_PI_4=pi/4;prefactors["initial_phasing"]=pn["v[5]"]-LAL_PI_4;
prefactors["two_thirds"]=pn["v[7]"]*powers_of_pi.two_thirds;prefactors["third"]=pn["v[6]"]*powers_of_pi.third;prefactors["third_with_logv"]=pn["vlogv[6]"]*powers_of_pi.third;prefactors["logv"]=pn["vlogv[5]"];prefactors["minus_third"]=pn["v[4]"]/powers_of_pi.third;prefactors["minus_two_thirds"]=pn["v[3]"]/powers_of_pi.two_thirds;prefactors["minus_one"]=pn["v[2]"]/Pi;prefactors["minus_five_thirds"]=pn["v[0]"]/powers_of_pi.five_thirds;prefactors["one"]=sigma1;prefactors["four_thirds"]=sigma2*3/4;prefactors["five_thirds"]=sigma3*3/5;prefactors["two"]=sigma4/2;return prefactors};PhenomDInternalsPhase.prototype.PhiInsAnsatzInt=function(Mf,eta,prefactors,powers_of_Mf,powers_of_pi){"input\nMf : dimensionless frequency\npowers_of_Mf : instance of UsefulPowers\nprefactors : dict\n output from init_phi_ins_prefactors function\np : dict\nAnsatz for the inspiral phase.\nWe call the LAL TF2 coefficients here.\nThe exact values of the coefficients used are given\nas comments in the top of this file\nDefined by Equation 27 and 28 arXiv:1508.07253";var logv,phasing,v;v=powers_of_Mf.third*powers_of_pi.third;logv=log(v);phasing=prefactors["initial_phasing"];phasing+=prefactors["two_thirds"]*powers_of_Mf.two_thirds;phasing+=prefactors["third"]*powers_of_Mf.third;phasing+=prefactors["third_with_logv"]*logv*powers_of_Mf.third;phasing+=prefactors["logv"]*logv;phasing+=prefactors["minus_third"]/powers_of_Mf.third;phasing+=prefactors["minus_two_thirds"]/powers_of_Mf.two_thirds;phasing+=prefactors["minus_one"]/Mf;phasing+=prefactors["minus_five_thirds"]/powers_of_Mf.five_thirds;phasing+=(prefactors["one"]*Mf+prefactors["four_thirds"]*powers_of_Mf.four_thirds+prefactors["five_thirds"]*powers_of_Mf.five_thirds+prefactors["two"]*powers_of_Mf.two)/eta;return phasing};PhenomDInternalsPhase.prototype.DPhiInsAnsatzInt=function(Mf,powers_of_pi,model_pars,eta){"input\nMf : dimensionless frequency\npowers_of_pi : instance of UsefulPowers\nprefactors : dict\n output from init_phi_ins_prefactors function\np : dict\npn : dict\nFirst frequency derivative of PhiInsAnsatzInt";var Dphasing,Pi,logv,pn,sigma1,sigma2,sigma3,sigma4,v,v2,v3,v4,v5,v6,v7,v8;pn=model_pars["pn"];sigma1=model_pars["sigma1"];sigma2=model_pars["sigma2"];sigma3=model_pars["sigma3"];sigma4=model_pars["sigma4"];Pi=pi;v=Math.pow(Pi*Mf,1/3);logv=log(v);v2=v*v;v3=v*v2;v4=v*v3;v5=v*v4;v6=v*v5;v7=v*v6;v8=v*v7;Dphasing=0;Dphasing+=+2*pn["v[7]"]*v7;Dphasing+=(pn["v[6]"]+pn["vlogv[6]"]*(1+logv))*v6;Dphasing+=pn["vlogv[5]"]*v5;Dphasing+=-1*pn["v[4]"]*v4;Dphasing+=-2*pn["v[3]"]*v3;Dphasing+=-3*pn["v[2]"]*v2;Dphasing+=-4*pn["v[1]"]*v;Dphasing+=-5*pn["v[0]"];Dphasing/=v8*3/Pi;Dphasing+=(sigma1+sigma2*v/powers_of_pi.third+sigma3*v2/powers_of_pi.two_thirds+sigma4/Pi*v3)/eta;return Dphasing};PhenomDInternalsPhase.prototype.ComputeIMRPhenDPhaseConnectionCoefficients=function(eta,model_pars,powers_of_pi){"p : dict\n\nreturns\n C1Int, C2Int, C1MRD, C2MRD\n\nThis function aligns the three phase parts (inspiral, intermediate and merger-rindown)\nsuch that they are c^1 continuous at the transition frequencies\nDefined in VIII. Full IMR Waveforms arXiv:1508.07253";var C1Int,C1MRD,C2Int,C2MRD,DPhiIns,DPhiInt,DPhiIntTempVal,DPhiMRDVal,PhiIntTempVal,fInsJoin,fMRDJoin,powers_of_fInsJoin,prefactors;fInsJoin=this.PHI_fJoin_INS;fMRDJoin=.5*model_pars["fRD"];prefactors=model_pars["phi_prefactors"];DPhiIns=this.DPhiInsAnsatzInt(fInsJoin,powers_of_pi,model_pars,eta);DPhiInt=this.DPhiIntAnsatz(fInsJoin,model_pars,eta);C2Int=DPhiIns-DPhiInt;powers_of_fInsJoin=new UsefulPowers(fInsJoin);C1Int=this.PhiInsAnsatzInt(fInsJoin,eta,prefactors,powers_of_fInsJoin,powers_of_pi)-1/eta*this.PhiIntAnsatz(fInsJoin,model_pars)-C2Int*fInsJoin;PhiIntTempVal=1/eta*this.PhiIntAnsatz(fMRDJoin,model_pars)+C1Int+C2Int*fMRDJoin;DPhiIntTempVal=this.DPhiIntTemp(fMRDJoin,model_pars,eta,C2Int);DPhiMRDVal=this.DPhiMRD(fMRDJoin,model_pars,eta);C2MRD=DPhiIntTempVal-DPhiMRDVal;C1MRD=PhiIntTempVal-1/eta*this.PhiMRDAnsatzInt(fMRDJoin,model_pars)-C2MRD*fMRDJoin;return[C1Int,C2Int,C1MRD,C2MRD]};return PhenomDInternalsPhase}(PhenomDInternalsAmplitude);module.exports=PhenomD=function(superClass){extend(PhenomD,superClass);function PhenomD(m1,m2,chi1z,chi2z,f_min,f_max,delta_f,distance,fRef,phiRef,finspin_func,chip){var ref,ref1,ref2;if(m1==null){m1=10}if(m2==null){m2=10}if(chi1z==null){chi1z=0}if(chi2z==null){chi2z=0}if(f_min==null){f_min=20}if(f_max==null){f_max=0}if(delta_f==null){delta_f=1/64}if(distance==null){distance=1e6*Constants.PC_SI}if(fRef==null){fRef=0}if(phiRef==null){phiRef=0}if(finspin_func==null){finspin_func="FinalSpin0815"}if(chip==null){chip=0}this.Mf_CUT=.2;this.AMP_fJoin_INS=.014;this.PHI_fJoin_INS=.018;this.MIN_FINAL_SPIN=-.717;this.MAX_ALLOWED_MASS_RATIO=5e3;if(m1<m2){ref=[chi2z,chi1z],chi1z=ref[0],chi2z=ref[1];ref1=[m2,m1],m1=ref1[0],m2=ref1[1]}this.p={};this.p["m1"]=m1;this.p["m2"]=m2;this.p["chi1z"]=chi1z;this.p["chi2z"]=chi2z;this.p["f_min"]=f_min;this.p["f_max"]=f_max;this.p["delta_f"]=delta_f;this.p["distance"]=distance;this.p["fRef"]=fRef;this.p["phiRef"]=phiRef;this.p["chip"]=chip;ref2=M_eta_m1_m2(this.p["m1"],this.p["m2"]),this.p["Mtot"]=ref2[0],this.p["eta"]=ref2[1];this.p["chipn"]=chipn(this.p["eta"],this.p["chi1z"],this.p["chi2z"]);this.powers_of_pi=new UsefulPowers(pi);this.finspin_func=finspin_func;this.model_pars=this.compute_model_parameters(this.p,this.finspin_func)}PhenomD.prototype.compute_model_parameters=function(p,finspin_func){"compute_model_parameters(p, finspin_func)\np : dict\nfinspin_func : string, name of final spin function. Used in phenomP as it\nuses a different final spin function.";var model_pars,powers_of_fRef,ref;model_pars={};model_pars["amp0"]=2*sqrt(5/(64*pi))*p["Mtot"]*Constants.MRSUN_SI*p["Mtot"]*Constants.MTSUN_SI/p["distance"];model_pars["M_sec"]=p["Mtot"]*Constants.MTSUN_SI;if(p["f_max"]===0){p["f_max"]=this.Mf_CUT/model_pars["M_sec"]}if(p["fRef"]===0){p["fRef"]=p["f_min"]}if(finspin_func==="FinalSpin0815"){model_pars["finspin"]=FinalSpin0815(p["eta"],p["chi1z"],p["chi2z"])}else if(finspin_func==="FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH"){model_pars["finspin"]=FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH(p["m1"],p["m2"],p["chip"],p["chi1z"],p["chi2z"]);if(absolute(model_pars["finspin"])>1){console.log("Warning: final spin magnitude "+model_pars["finspin"]+" > 1. Setting final spin magnitude = 1.");model_pars["finspin"]=sign(model_pars["finspin"])}}else{console.log("finspin_func = "+finspin_func+" not recognised")}model_pars["fRD"]=fring(p["eta"],p["chi1z"],p["chi2z"],model_pars["finspin"]);model_pars["fDM"]=fdamp(p["eta"],p["chi1z"],p["chi2z"],model_pars["finspin"]);model_pars["rho1"]=this.rho1_fun(p);model_pars["rho2"]=this.rho2_fun(p);model_pars["rho3"]=this.rho3_fun(p);model_pars["amp_prefactors"]=this.init_amp_ins_prefactors(p,model_pars,this.powers_of_pi);model_pars["gamma1"]=this.gamma1_fun(p);model_pars["gamma2"]=this.gamma2_fun(p);model_pars["gamma3"]=this.gamma3_fun(p);model_pars["fmaxCalc"]=this.fmaxCalc(model_pars);_.extend(model_pars,this.ComputeDeltasFromCollocation(p,model_pars,this.powers_of_pi));model_pars["pn"]=this.SimInspiralTaylorF2AlignedPhasing(p);model_pars["sigma1"]=this.sigma1Fit(p);model_pars["sigma2"]=this.sigma2Fit(p);model_pars["sigma3"]=this.sigma3Fit(p);model_pars["sigma4"]=this.sigma4Fit(p);model_pars["phi_prefactors"]=this.init_phi_ins_prefactors(model_pars,this.powers_of_pi);model_pars["beta1"]=this.beta1Fit(p);model_pars["beta2"]=this.beta2Fit(p);model_pars["beta3"]=this.beta3Fit(p);model_pars["alpha1"]=this.alpha1Fit(p);model_pars["alpha2"]=this.alpha2Fit(p);model_pars["alpha3"]=this.alpha3Fit(p);model_pars["alpha4"]=this.alpha4Fit(p);model_pars["alpha5"]=this.alpha5Fit(p);ref=this.ComputeIMRPhenDPhaseConnectionCoefficients(p["eta"],model_pars,this.powers_of_pi),model_pars["C1Int"]=ref[0],model_pars["C2Int"]=ref[1],model_pars["C1MRD"]=ref[2],model_pars["C2MRD"]=ref[3];model_pars["t0"]=this.computetimeshift(model_pars,p["eta"]);model_pars["MfRef"]=model_pars["M_sec"]*p["fRef"];powers_of_fRef=new UsefulPowers(model_pars["MfRef"]);model_pars["phi_fRef"]=this.IMRPhenomDPhase(model_pars["MfRef"],p["eta"],model_pars,powers_of_fRef);model_pars["phi_precalc"]=2*p["phiRef"]+model_pars["phi_fRef"];return model_pars};PhenomD.prototype.IMRPhenomDAmplitude=function(Mf,model_pars,powers_of_Mf){"Call ComputeIMRPhenomDAmplitudeCoefficients() first!\nThis function computes the IMR amplitude given phenom coefficients.\nDefined in VIII. Full IMR Waveforms arXiv:1508.07253";var AmpIns,AmpInt,AmpMRD,AmpPreFac,amp_prefactors,fInsJoin,fMRDJoin;fInsJoin=this.AMP_fJoin_INS;fMRDJoin=model_pars["fmaxCalc"];amp_prefactors=model_pars["amp_prefactors"];AmpPreFac=amp_prefactors["PNamp0"]/powers_of_Mf.seven_sixths;if(Mf<=fInsJoin){AmpIns=AmpPreFac*this.AmpInsAnsatz(Mf,powers_of_Mf,amp_prefactors);return AmpIns}else if(Mf>=fMRDJoin){AmpMRD=AmpPreFac*this.AmpMRDAnsatz(Mf,model_pars);return AmpMRD}else{AmpInt=AmpPreFac*this.AmpIntAnsatz(Mf,model_pars);return AmpInt}};PhenomD.prototype.IMRPhenomDPhase=function(Mf,eta,model_pars,powers_of_Mf){"This function computes the IMR phase given phenom coefficients.\nDefined in VIII. Full IMR Waveforms arXiv:1508.07253";var PhiIns,PhiInt,PhiMRD,fInsJoin,fMRDJoin,phi_prefactors,pn;pn=model_pars["pn"];fInsJoin=this.PHI_fJoin_INS;fMRDJoin=.5*model_pars["fRD"];phi_prefactors=model_pars["phi_prefactors"];if(Mf<=fInsJoin){PhiIns=this.PhiInsAnsatzInt(Mf,eta,phi_prefactors,powers_of_Mf,this.powers_of_pi);return PhiIns}else if(Mf>=fMRDJoin){PhiMRD=1/eta*this.PhiMRDAnsatzInt(Mf,model_pars)+model_pars["C1MRD"]+model_pars["C2MRD"]*Mf;return PhiMRD}else{PhiInt=1/eta*this.PhiIntAnsatz(Mf,model_pars)+model_pars["C1Int"]+model_pars["C2Int"]*Mf;return PhiInt}};PhenomD.prototype.computetimeshift=function(model_pars,eta){var t0;t0=this.DPhiMRD(model_pars["fmaxCalc"],model_pars,eta);return t0};PhenomD.prototype.IMRPhenomDGenerateFDSingleFrequencyPoint=function(Mf){"standalone phenomD strain generator for a single frequency point\ninput:\n Mf : geometric frequency\noutput:\n htilde at Mf";var amp,htilde,phase,powers_of_Mf;powers_of_Mf=new UsefulPowers(Mf);amp=this.IMRPhenomDAmplitude(Mf,this.model_pars,powers_of_Mf);phase=this.IMRPhenomDPhase(Mf,this.p["eta"],this.model_pars,powers_of_Mf);phase-=this.model_pars["t0"]*(Mf-this.model_pars["MfRef"])+this.model_pars["phi_precalc"];htilde=math.multiply(this.model_pars["amp0"]*amp,exp(math.complex(0,-phase)));return htilde};PhenomD.prototype.IMRPhenomDGenerateFD=function(){"generates frequency domain strain\ncalls IMRPhenomDGenerateFDSingleFrequencyPoint() in a loop.\nattributes :\n flist_Hz\n htilde";var Mf,i,j,len,ref,results;this.flist_Hz=_.range(this.p["f_min"],this.p["f_max"],this.p["delta_f"]);this.htilde=[];ref=_.range(this.flist_Hz.length);results=[];for(j=0,len=ref.length;j<len;j++){i=ref[j];Mf=this.flist_Hz[i]*this.model_pars["M_sec"];results.push(this.htilde[i]=this.IMRPhenomDGenerateFDSingleFrequencyPoint(Mf))}return results};PhenomD.prototype.getampandphase=function(htilde){"input: htilde\nattributes :\n amp\n phase\n\ngiven IMRPhenomDGenerateFD is run and self.htilde is initialised,\ncompute the amplitude and phase of the waveform.";this.amp=absolute(htilde);return this.phase=angle(htilde)};return PhenomD}(PhenomDInternalsPhase)},{"./remnant.coffee":4,"./utils.coffee":5,mathjs:23,underscore:520}],3:[function(require,module,exports){var QNMData;QNMData={};QNMData["QNMData_a"]=[-1,-.999,-.998,-.996,-.994,-.992,-.99,-.988,-.986,-.984,-.982,-.98,-.978,-.976,-.974,-.972,-.97,-.968,-.966,-.964,-.962,-.96,-.958,-.956,-.954,-.952,-.95,-.948,-.946,-.944,-.942,-.94,-.938,-.936,-.934,-.932,-.93,-.928,-.926,-.924,-.922,-.92,-.918,-.916,-.914,-.912,-.91,-.908,-.906,-.904,-.902,-.9,-.898,-.896,-.894,-.892,-.89,-.888,-.886,-.884,-.882,-.88,-.878,-.876,-.874,-.872,-.87,-.868,-.866,-.864,-.862,-.86,-.858,-.856,-.854,-.852,-.85,-.848,-.846,-.844,-.842,-.84,-.838,-.836,-.834,-.832,-.83,-.828,-.826,-.824,-.822,-.82,-.818,-.816,-.814,-.812,-.81,-.808,-.806,-.804,-.802,-.8,-.798,-.796,-.794,-.792,-.79,-.788,-.786,-.784,-.782,-.78,-.778,-.776,-.774,-.772,-.77,-.768,-.766,-.764,-.762,-.76,-.758,-.756,-.754,-.752,-.75,-.748,-.746,-.744,-.742,-.74,-.738,-.736,-.734,-.732,-.73,-.728,-.726,-.724,-.722,-.72,-.718,-.716,-.714,-.712,-.71,-.708,-.706,-.704,-.702,-.7,-.698,-.696,-.694,-.692,-.69,-.688,-.686,-.684,-.682,-.68,-.678,-.676,-.674,-.672,-.67,-.668,-.666,-.664,-.662,-.66,-.658,-.656,-.654,-.652,-.65,-.648,-.646,-.644,-.642,-.64,-.638,-.636,-.634,-.632,-.63,-.628,-.626,-.624,-.622,-.62,-.618,-.616,-.614,-.612,-.61,-.608,-.606,-.604,-.602,-.6,-.598,-.596,-.594,-.592,-.59,-.588,-.586,-.584,-.582,-.58,-.578,-.576,-.574,-.572,-.57,-.568,-.566,-.564,-.562,-.56,-.558,-.556,-.554,-.552,-.55,-.548,-.546,-.544,-.542,-.54,-.538,-.536,-.534,-.532,-.53,-.528,-.526,-.524,-.522,-.52,-.518,-.516,-.514,-.512,-.51,-.508,-.506,-.504,-.502,-.5,-.498,-.496,-.494,-.492,-.49,-.488,-.486,-.484,-.482,-.48,-.478,-.476,-.474,-.472,-.47,-.468,-.466,-.464,-.462,-.46,-.458,-.456,-.454,-.452,-.45,-.448,-.446,-.444,-.442,-.44,-.438,-.436,-.434,-.432,-.43,-.428,-.426,-.424,-.422,-.42,-.418,-.416,-.414,-.412,-.41,-.408,-.406,-.404,-.402,-.4,-.398,-.396,-.394,-.392,-.39,-.388,-.386,-.384,-.382,-.38,-.378,-.376,-.374,-.372,-.37,-.368,-.366,-.364,-.362,-.36,-.358,-.356,-.354,-.352,-.35,-.348,-.346,-.344,-.342,-.34,-.338,-.336,-.334,-.332,-.33,-.328,-.326,-.324,-.322,-.32,-.318,-.316,-.314,-.312,-.31,-.308,-.306,-.304,-.302,-.3,-.298,-.296,-.294,-.292,-.29,-.288,-.286,-.284,-.282,-.28,-.278,-.276,-.274,-.272,-.27,-.268,-.266,-.264,-.262,-.26,-.258,-.256,-.254,-.252,-.25,-.248,-.246,-.244,-.242,-.24,-.238,-.236,-.234,-.232,-.23,-.228,-.226,-.224,-.222,-.22,-.218,-.216,-.214,-.212,-.21,-.208,-.206,-.204,-.202,-.2,-.198,-.196,-.194,-.192,-.19,-.188,-.186,-.184,-.182,-.18,-.178,-.176,-.174,-.172,-.17,-.168,-.166,-.164,-.162,-.16,-.158,-.156,-.154,-.152,-.15,-.148,-.146,-.144,-.142,-.14,-.138,-.136,-.134,-.132,-.13,-.128,-.126,-.124,-.122,-.12,-.118,-.116,-.114,-.112,-.11,-.108,-.106,-.104,-.102,-.1,-.098,-.096,-.094,-.092,-.09,-.088,-.086,-.084,-.082,-.08,-.078,-.076,-.074,-.072,-.07,-.068,-.066,-.064,-.062,-.06,-.058,-.056,-.054,-.052,-.05,-.048,-.046,-.044,-.042,-.04,-.038,-.036,-.034,-.032,-.03,-.028,-.026,-.024,-.022,-.02,-.018,-.016,-.014,-.012,-.01,-.008,-.006,-.004,-.002,0,.002,.004,.006,.008,.01,.012,.014,.016,.018,.02,.022,.024,.026,.028,.03,.032,.034,.036,.038,.04,.042,.044,.046,.048,.05,.052,.054,.056,.058,.06,.062,.064,.066,.068,.07,.072,.074,.076,.078,.08,.082,.084,.086,.088,.09,.092,.094,.096,.098,.1,.102,.104,.106,.108,.11,.112,.114,.116,.118,.12,.122,.124,.126,.128,.13,.132,.134,.136,.138,.14,.142,.144,.146,.148,.15,.152,.154,.156,.158,.16,.162,.164,.166,.168,.17,.172,.174,.176,.178,.18,.182,.184,.186,.188,.19,.192,.194,.196,.198,.2,.202,.204,.206,.208,.21,.212,.214,.216,.218,.22,.222,.224,.226,.228,.23,.232,.234,.236,.238,.24,.242,.244,.246,.248,.25,.252,.254,.256,.258,.26,.262,.264,.266,.268,.27,.272,.274,.276,.278,.28,.282,.284,.286,.288,.29,.292,.294,.296,.298,.3,.302,.304,.306,.308,.31,.312,.314,.316,.318,.32,.322,.324,.326,.328,.33,.332,.334,.336,.338,.34,.342,.344,.346,.348,.35,.352,.354,.356,.358,.36,.362,.364,.366,.368,.37,.372,.374,.376,.378,.38,.382,.384,.386,.388,.39,.392,.394,.396,.398,.4,.402,.404,.406,.408,.41,.412,.414,.416,.418,.42,.422,.424,.426,.428,.43,.432,.434,.436,.438,.44,.442,.444,.446,.448,.45,.452,.454,.456,.458,.46,.462,.464,.466,.468,.47,.472,.474,.476,.478,.48,.482,.484,.486,.488,.49,.492,.494,.496,.498,.5,.502,.504,.506,.508,.51,.512,.514,.516,.518,.52,.522,.524,.526,.528,.53,.532,.534,.536,.538,.54,.542,.544,.546,.548,.55,.552,.554,.556,.558,.56,.562,.564,.566,.568,.57,.572,.574,.576,.578,.58,.582,.584,.586,.588,.59,.592,.594,.596,.598,.6,.602,.604,.606,.608,.61,.612,.614,.616,.618,.62,.622,.624,.626,.628,.63,.632,.634,.636,.638,.64,.642,.644,.646,.648,.65,.652,.654,.656,.658,.66,.662,.664,.666,.668,.67,.672,.674,.676,.678,.68,.682,.684,.686,.688,.69,.692,.694,.696,.698,.7,.702,.704,.706,.708,.71,.712,.714,.716,.718,.72,.722,.724,.726,.728,.73,.732,.734,.736,.738,.74,.742,.744,.746,.748,.75,.752,.754,.756,.758,.76,.762,.764,.766,.768,.77,.772,.774,.776,.778,.78,.782,.784,.786,.788,.79,.792,.794,.796,.798,.8,.802,.804,.806,.808,.81,.812,.814,.816,.818,.82,.822,.824,.826,.828,.83,.832,.834,.836,.838,.84,.842,.844,.846,.848,.85,.852,.854,.856,.858,.86,.862,.864,.866,.868,.87,.872,.874,.876,.878,.88,.882,.884,.886,.888,.89,.892,.894,.896,.898,.9,.902,.904,.906,.908,.91,.912,.914,.916,.918,.92,.922,.924,.926,.928,.93,.932,.934,.936,.938,.94,.942,.944,.946,.948,.95,.952,.954,.956,.958,.96,.962,.964,.966,.968,.97,.972,.974,.976,.978,.98,.982,.984,.986,.988,.99,.992,.994,.996,.998,.999,1];QNMData["QNMData_fring"]=[.0464014,.046411,.0464197,.0464373,.0464526,.046473,.0464909,.0465084,.0465259,.0465435,.0465611,.0465789,.0465966,.0466144,.0466322,.0466501,.0466679,.0466858,.0467038,.0467217,.0467397,.0467577,.0467757,.0467937,.0468117,.0468298,.0468479,.046866,.0468842,.0469024,.0469205,.0469388,.046957,.0469752,.0469935,.0470118,.0470302,.0470485,.0470669,.0470853,.0471037,.0471221,.0471406,.0471591,.0471776,.0471962,.0472147,.0472333,.0472519,.0472705,.0472892,.0473079,.0473266,.0473453,.0473641,.0473829,.0474017,.0474205,.0474393,.0474582,.0474771,.047496,.047515,.047534,.047553,.047572,.047591,.0476101,.0476292,.0476483,.0476675,.0476866,.0477058,.0477251,.0477443,.0477636,.0477829,.0478022,.0478216,.0478409,.0478603,.0478798,.0478992,.0479187,.0479382,.0479577,.0479773,.0479969,.0480165,.0480361,.0480558,.0480755,.0480952,.0481149,.0481347,.0481545,.0481743,.0481942,.048214,.0482339,.0482539,.0482738,.0482938,.0483138,.0483339,.0483539,.048374,.0483941,.0484143,.0484345,.0484547,.0484749,.0484951,.0485154,.0485357,.0485561,.0485764,.0485968,.0486173,.0486377,.0486582,.0486787,.0486992,.0487198,.0487404,.048761,.0487817,.0488024,.0488231,.0488438,.0488646,.0488854,.0489062,.048927,.0489479,.0489688,.0489898,.0490108,.0490318,.0490528,.0490739,.0490949,.0491161,.0491372,.0491584,.0491796,.0492008,.0492221,.0492434,.0492647,.0492861,.0493075,.0493289,.0493504,.0493719,.0493934,.0494149,.0494365,.0494581,.0494797,.0495014,.0495231,.0495448,.0495666,.0495884,.0496102,.0496321,.049654,.0496759,.0496979,.0497198,.0497419,.0497639,.049786,.0498081,.0498302,.0498524,.0498746,.0498969,.0499192,.0499415,.0499638,.0499862,.0500086,.050031,.0500535,.050076,.0500986,.0501212,.0501438,.0501664,.0501891,.0502118,.0502345,.0502573,.0502801,.050303,.0503259,.0503488,.0503717,.0503947,.0504177,.0504408,.0504639,.050487,.0505102,.0505334,.0505566,.0505799,.0506032,.0506265,.0506499,.0506733,.0506967,.0507202,.0507437,.0507673,.0507909,.0508145,.0508381,.0508618,.0508856,.0509093,.0509332,.050957,.0509809,.0510048,.0510288,.0510527,.0510768,.0511008,.0511249,.0511491,.0511733,.0511975,.0512217,.051246,.0512704,.0512947,.0513192,.0513436,.0513681,.0513926,.0514172,.0514418,.0514664,.0514911,.0515158,.0515406,.0515654,.0515902,.0516151,.05164,.051665,.05169,.051715,.0517401,.0517652,.0517904,.0518156,.0518408,.0518661,.0518914,.0519168,.0519422,.0519677,.0519931,.0520187,.0520443,.0520699,.0520955,.0521212,.052147,.0521727,.0521986,.0522244,.0522503,.0522763,.0523023,.0523283,.0523544,.0523805,.0524067,.0524329,.0524592,.0524855,.0525118,.0525382,.0525646,.0525911,.0526176,.0526442,.0526708,.0526975,.0527242,.0527509,.0527777,.0528045,.0528314,.0528583,.0528853,.0529123,.0529394,.0529665,.0529936,.0530208,.0530481,.0530754,.0531027,.0531301,.0531576,.053185,.0532126,.0532402,.0532678,.0532954,.0533232,.0533509,.0533788,.0534066,.0534345,.0534625,.0534905,.0535186,.0535467,.0535749,.0536031,.0536313,.0536596,.053688,.0537164,.0537449,.0537734,.0538019,.0538305,.0538592,.0538879,.0539167,.0539455,.0539744,.0540033,.0540322,.0540613,.0540903,.0541195,.0541486,.0541779,.0542072,.0542365,.0542659,.0542953,.0543248,.0543544,.054384,.0544136,.0544433,.0544731,.0545029,.0545328,.0545627,.0545927,.0546228,.0546529,.054683,.0547132,.0547435,.0547738,.0548042,.0548346,.0548651,.0548956,.0549262,.0549569,.0549876,.0550184,.0550492,.0550801,.0551111,.0551421,.0551731,.0552043,.0552354,.0552667,.055298,.0553293,.0553608,.0553922,.0554238,.0554554,.055487,.0555188,.0555505,.0555824,.0556143,.0556463,.0556783,.0557104,.0557425,.0557747,.055807,.0558393,.0558717,.0559042,.0559367,.0559693,.056002,.0560347,.0560675,.0561003,.0561333,.0561662,.0561993,.0562324,.0562656,.0562988,.0563321,.0563655,.0563989,.0564324,.056466,.0564996,.0565333,.0565671,.056601,.0566349,.0566688,.0567029,.056737,.0567712,.0568054,.0568398,.0568742,.0569086,.0569432,.0569778,.0570124,.0570472,.057082,.0571169,.0571519,.0571869,.057222,.0572572,.0572924,.0573278,.0573632,.0573986,.0574342,.0574698,.0575055,.0575413,.0575771,.057613,.057649,.0576851,.0577213,.0577575,.0577938,.0578302,.0578666,.0579032,.0579398,.0579765,.0580132,.0580501,.058087,.058124,.0581611,.0581983,.0582355,.0582728,.0583102,.0583477,.0583853,.058423,.0584607,.0584985,.0585364,.0585744,.0586125,.0586506,.0586888,.0587272,.0587656,.058804,.0588426,.0588813,.05892,.0589589,.0589978,.0590368,.0590759,.0591151,.0591543,.0591937,.0592331,.0592727,.0593123,.059352,.0593918,.0594317,.0594717,.0595118,.0595519,.0595922,.0596326,.059673,.0597135,.0597542,.0597949,.0598357,.0598767,.0599177,.0599588,.06,.0600413,.0600827,.0601242,.0601658,.0602074,.0602492,.0602911,.0603331,.0603752,.0604174,.0604597,.060502,.0605445,.0605871,.0606298,.0606726,.0607155,.0607585,.0608016,.0608448,.0608881,.0609315,.0609751,.0610187,.0610624,.0611063,.0611502,.0611943,.0612385,.0612827,.0613271,.0613716,.0614162,.0614609,.0615058,.0615507,.0615958,.0616409,.0616862,.0617316,.0617771,.0618227,.0618684,.0619143,.0619603,.0620064,.0620526,.0620989,.0621453,.0621919,.0622385,.0622853,.0623323,.0623793,.0624265,.0624737,.0625212,.0625687,.0626163,.0626641,.062712,.06276,.0628082,.0628565,.0629049,.0629534,.0630021,.0630509,.0630998,.0631489,.0631981,.0632474,.0632968,.0633464,.0633961,.063446,.063496,.0635461,.0635964,.0636468,.0636973,.063748,.0637988,.0638497,.0639008,.063952,.0640034,.0640549,.0641066,.0641584,.0642103,.0642624,.0643147,.0643671,.0644196,.0644723,.0645251,.0645781,.0646312,.0646845,.0647379,.0647915,.0648453,.0648992,.0649532,.0650074,.0650618,.0651163,.065171,.0652258,.0652808,.065336,.0653913,.0654468,.0655024,.0655582,.0656142,.0656703,.0657266,.0657831,.0658398,.0658966,.0659535,.0660107,.066068,.0661255,.0661832,.0662411,.0662991,.0663573,.0664157,.0664742,.066533,.0665919,.066651,.0667103,.0667697,.0668294,.0668892,.0669493,.0670095,.0670699,.0671305,.0671913,.0672523,.0673134,.0673748,.0674364,.0674981,.0675601,.0676222,.0676846,.0677471,.0678099,.0678729,.067936,.0679994,.068063,.0681268,.0681908,.068255,.0683194,.0683841,.0684489,.068514,.0685793,.0686448,.0687105,.0687765,.0688426,.068909,.0689757,.0690425,.0691096,.0691769,.0692444,.0693122,.0693802,.0694484,.0695169,.0695856,.0696546,.0697238,.0697932,.0698629,.0699328,.070003,.0700734,.0701441,.0702151,.0702862,.0703577,.0704294,.0705013,.0705735,.070646,.0707188,.0707918,.0708651,.0709386,.0710124,.0710865,.0711609,.0712355,.0713105,.0713857,.0714612,.0715369,.071613,.0716893,.071766,.0718429,.0719201,.0719976,.0720755,.0721536,.072232,.0723107,.0723898,.0724691,.0725488,.0726287,.072709,.0727896,.0728705,.0729518,.0730333,.0731152,.0731975,.07328,.0733629,.0734462,.0735297,.0736136,.0736979,.0737825,.0738675,.0739528,.0740384,.0741245,.0742109,.0742976,.0743847,.0744722,.0745601,.0746483,.0747369,.0748259,.0749153,.075005,.0750952,.0751857,.0752767,.075368,.0754597,.0755519,.0756445,.0757374,.0758308,.0759246,.0760188,.0761135,.0762086,.0763041,.0764001,.0764965,.0765933,.0766906,.0767883,.0768865,.0769852,.0770843,.0771839,.077284,.0773845,.0774855,.077587,.077689,.0777915,.0778945,.077998,.078102,.0782065,.0783115,.078417,.0785231,.0786297,.0787368,.0788445,.0789527,.0790614,.0791708,.0792806,.0793911,.0795021,.0796137,.0797259,.0798386,.079952,.080066,.0801805,.0802957,.0804115,.0805279,.0806449,.0807626,.0808809,.0809999,.0811195,.0812398,.0813608,.0814824,.0816048,.0817278,.0818515,.0819759,.082101,.0822269,.0823534,.0824808,.0826088,.0827376,.0828672,.0829975,.0831286,.0832605,.0833932,.0835267,.083661,.0837962,.0839321,.0840689,.0842066,.0843451,.0844845,.0846248,.084766,.084908,.085051,.0851949,.0853398,.0854856,.0856323,.08578,.0859287,.0860784,.0862292,.0863809,.0865336,.0866875,.0868423,.0869983,.0871553,.0873135,.0874727,.0876331,.0877947,.0879574,.0881213,.0882864,.0884527,.0886202,.088789,.0889591,.0891304,.0893031,.089477,.0896523,.089829,.090007,.0901865,.0903674,.0905497,.0907335,.0909188,.0911056,.0912939,.0914838,.0916753,.0918684,.0920631,.0922595,.0924576,.0926574,.092859,.0930623,.0932675,.0934745,.0936834,.0938942,.0941069,.0943216,.0945384,.0947571,.094978,.095201,.0954262,.0956536,.0958832,.0961151,.0963494,.096586,.0968251,.0970667,.0973109,.0975576,.0978069,.098059,.0983138,.0985715,.098832,.0990955,.099362,.0996316,.0999043,.10018,.10046,.100742,.101028,.101318,.101611,.101908,.102209,.102514,.102823,.103136,.103454,.103775,.104102,.104432,.104768,.105109,.105454,.105805,.106161,.106523,.106891,.107264,.107644,.10803,.108422,.108822,.109228,.109642,.110063,.110493,.11093,.111376,.111831,.112295,.112769,.113254,.113748,.114254,.114772,.115302,.115845,.116401,.116972,.117559,.118161,.118781,.119418,.120076,.120754,.121454,.122179,.12293,.123709,.124519,.125362,.126243,.127165,.128132,.129151,.130228,.131371,.132592,.133904,.135325,.136881,.138607,.14056,.142833,.1456111,.1493707,.1521282,.1579619];QNMData["QNMData_fdamp"]=[.0140098,.0140102,.0140106,.0140114,.0140177,.0140154,.0140148,.014015,.0140156,.0140164,.0140172,.0140181,.0140189,.0140198,.0140206,.0140214,.0140223,.0140231,.0140239,.0140247,.0140256,.0140264,.0140272,.014028,.0140288,.0140296,.0140305,.0140313,.0140321,.0140329,.0140337,.0140345,.0140353,.0140361,.0140369,.0140377,.0140385,.0140393,.0140401,.0140409,.0140417,.0140425,.0140433,.014044,.0140448,.0140456,.0140464,.0140472,.014048,.0140487,.0140495,.0140503,.0140511,.0140519,.0140526,.0140534,.0140542,.0140549,.0140557,.0140565,.0140572,.014058,.0140587,.0140595,.0140603,.014061,.0140618,.0140625,.0140633,.014064,.0140648,.0140655,.0140663,.014067,.0140677,.0140685,.0140692,.01407,.0140707,.0140714,.0140722,.0140729,.0140736,.0140744,.0140751,.0140758,.0140765,.0140772,.014078,.0140787,.0140794,.0140801,.0140808,.0140815,.0140822,.0140829,.0140837,.0140844,.0140851,.0140858,.0140865,.0140872,.0140879,.0140885,.0140892,.0140899,.0140906,.0140913,.014092,.0140927,.0140934,.014094,.0140947,.0140954,.0140961,.0140967,.0140974,.0140981,.0140988,.0140994,.0141001,.0141007,.0141014,.0141021,.0141027,.0141034,.014104,.0141047,.0141053,.014106,.0141066,.0141073,.0141079,.0141086,.0141092,.0141098,.0141105,.0141111,.0141117,.0141124,.014113,.0141136,.0141142,.0141149,.0141155,.0141161,.0141167,.0141173,.014118,.0141186,.0141192,.0141198,.0141204,.014121,.0141216,.0141222,.0141228,.0141234,.014124,.0141246,.0141252,.0141257,.0141263,.0141269,.0141275,.0141281,.0141287,.0141292,.0141298,.0141304,.0141309,.0141315,.0141321,.0141326,.0141332,.0141338,.0141343,.0141349,.0141354,.014136,.0141365,.0141371,.0141376,.0141382,.0141387,.0141392,.0141398,.0141403,.0141408,.0141414,.0141419,.0141424,.0141429,.0141435,.014144,.0141445,.014145,.0141455,.014146,.0141466,.0141471,.0141476,.0141481,.0141486,.0141491,.0141496,.01415,.0141505,.014151,.0141515,.014152,.0141525,.014153,.0141534,.0141539,.0141544,.0141549,.0141553,.0141558,.0141562,.0141567,.0141572,.0141576,.0141581,.0141585,.014159,.0141594,.0141599,.0141603,.0141608,.0141612,.0141616,.0141621,.0141625,.0141629,.0141633,.0141638,.0141642,.0141646,.014165,.0141654,.0141658,.0141662,.0141667,.0141671,.0141675,.0141679,.0141683,.0141686,.014169,.0141694,.0141698,.0141702,.0141706,.014171,.0141713,.0141717,.0141721,.0141724,.0141728,.0141732,.0141735,.0141739,.0141742,.0141746,.0141749,.0141753,.0141756,.014176,.0141763,.0141766,.014177,.0141773,.0141776,.014178,.0141783,.0141786,.0141789,.0141792,.0141796,.0141799,.0141802,.0141805,.0141808,.0141811,.0141814,.0141817,.0141819,.0141822,.0141825,.0141828,.0141831,.0141833,.0141836,.0141839,.0141842,.0141844,.0141847,.0141849,.0141852,.0141854,.0141857,.0141859,.0141862,.0141864,.0141867,.0141869,.0141871,.0141874,.0141876,.0141878,.014188,.0141882,.0141884,.0141887,.0141889,.0141891,.0141893,.0141895,.0141897,.0141899,.01419,.0141902,.0141904,.0141906,.0141908,.0141909,.0141911,.0141913,.0141914,.0141916,.0141917,.0141919,.014192,.0141922,.0141923,.0141925,.0141926,.0141927,.0141929,.014193,.0141931,.0141932,.0141934,.0141935,.0141936,.0141937,.0141938,.0141939,.014194,.0141941,.0141942,.0141942,.0141943,.0141944,.0141945,.0141946,.0141946,.0141947,.0141947,.0141948,.0141949,.0141949,.0141949,.014195,.014195,.0141951,.0141951,.0141951,.0141951,.0141952,.0141952,.0141952,.0141952,.0141952,.0141952,.0141952,.0141952,.0141952,.0141952,.0141952,.0141951,.0141951,.0141951,.014195,.014195,.014195,.0141949,.0141949,.0141948,.0141948,.0141947,.0141946,.0141946,.0141945,.0141944,.0141943,.0141942,.0141941,.014194,.0141939,.0141938,.0141937,.0141936,.0141935,.0141934,.0141933,.0141931,.014193,.0141929,.0141927,.0141926,.0141924,.0141923,.0141921,.0141919,.0141918,.0141916,.0141914,.0141912,.0141911,.0141909,.0141907,.0141905,.0141903,.0141901,.0141898,.0141896,.0141894,.0141892,.0141889,.0141887,.0141885,.0141882,.014188,.0141877,.0141874,.0141872,.0141869,.0141866,.0141863,.014186,.0141858,.0141855,.0141852,.0141848,.0141845,.0141842,.0141839,.0141836,.0141832,.0141829,.0141826,.0141822,.0141819,.0141815,.0141811,.0141808,.0141804,.01418,.0141796,.0141792,.0141788,.0141784,.014178,.0141776,.0141772,.0141768,.0141763,.0141759,.0141755,.014175,.0141746,.0141741,.0141736,.0141732,.0141727,.0141722,.0141717,.0141712,.0141707,.0141702,.0141697,.0141692,.0141687,.0141681,.0141676,.0141671,.0141665,.0141659,.0141654,.0141648,.0141642,.0141637,.0141631,.0141625,.0141619,.0141613,.0141607,.01416,.0141594,.0141588,.0141582,.0141575,.0141569,.0141562,.0141555,.0141549,.0141542,.0141535,.0141528,.0141521,.0141514,.0141507,.01415,.0141492,.0141485,.0141478,.014147,.0141462,.0141455,.0141447,.0141439,.0141431,.0141424,.0141416,.0141407,.0141399,.0141391,.0141383,.0141374,.0141366,.0141357,.0141349,.014134,.0141331,.0141322,.0141313,.0141304,.0141295,.0141286,.0141277,.0141267,.0141258,.0141248,.0141239,.0141229,.0141219,.014121,.01412,.014119,.014118,.0141169,.0141159,.0141149,.0141138,.0141128,.0141117,.0141106,.0141095,.0141085,.0141074,.0141062,.0141051,.014104,.0141029,.0141017,.0141006,.0140994,.0140982,.014097,.0140958,.0140946,.0140934,.0140922,.014091,.0140897,.0140885,.0140872,.0140859,.0140846,.0140833,.014082,.0140807,.0140794,.0140781,.0140767,.0140753,.014074,.0140726,.0140712,.0140698,.0140684,.014067,.0140655,.0140641,.0140626,.0140612,.0140597,.0140582,.0140567,.0140552,.0140536,.0140521,.0140505,.014049,.0140474,.0140458,.0140442,.0140426,.014041,.0140393,.0140377,.014036,.0140343,.0140327,.014031,.0140292,.0140275,.0140258,.014024,.0140223,.0140205,.0140187,.0140169,.0140151,.0140132,.0140114,.0140095,.0140076,.0140057,.0140038,.0140019,.014,.013998,.0139961,.0139941,.0139921,.0139901,.0139881,.013986,.013984,.0139819,.0139798,.0139777,.0139756,.0139735,.0139713,.0139691,.013967,.0139648,.0139625,.0139603,.0139581,.0139558,.0139535,.0139512,.0139489,.0139466,.0139442,.0139419,.0139395,.0139371,.0139346,.0139322,.0139297,.0139273,.0139248,.0139223,.0139197,.0139172,.0139146,.013912,.0139094,.0139068,.0139041,.0139014,.0138987,.013896,.0138933,.0138906,.0138878,.013885,.0138822,.0138793,.0138765,.0138736,.0138707,.0138678,.0138648,.0138619,.0138589,.0138559,.0138528,.0138498,.0138467,.0138436,.0138405,.0138373,.0138341,.0138309,.0138277,.0138244,.0138212,.0138179,.0138145,.0138112,.0138078,.0138044,.013801,.0137975,.013794,.0137905,.013787,.0137834,.0137798,.0137762,.0137726,.0137689,.0137652,.0137615,.0137577,.0137539,.0137501,.0137462,.0137424,.0137384,.0137345,.0137305,.0137265,.0137225,.0137184,.0137143,.0137102,.013706,.0137018,.0136976,.0136933,.013689,.0136847,.0136803,.0136759,.0136715,.013667,.0136625,.0136579,.0136533,.0136487,.0136441,.0136394,.0136346,.0136298,.013625,.0136202,.0136153,.0136103,.0136054,.0136004,.0135953,.0135902,.0135851,.0135799,.0135747,.0135694,.0135641,.0135587,.0135533,.0135479,.0135424,.0135368,.0135312,.0135256,.0135199,.0135142,.0135084,.0135026,.0134967,.0134907,.0134848,.0134787,.0134726,.0134665,.0134603,.0134541,.0134478,.0134414,.013435,.0134285,.013422,.0134154,.0134088,.0134021,.0133953,.0133885,.0133816,.0133747,.0133676,.0133606,.0133534,.0133462,.013339,.0133316,.0133242,.0133168,.0133092,.0133016,.013294,.0132862,.0132784,.0132705,.0132625,.0132545,.0132464,.0132382,.0132299,.0132216,.0132131,.0132046,.013196,.0131874,.0131786,.0131697,.0131608,.0131518,.0131427,.0131335,.0131242,.0131148,.0131054,.0130958,.0130861,.0130764,.0130665,.0130566,.0130465,.0130363,.0130261,.0130157,.0130052,.0129946,.0129839,.0129731,.0129622,.0129512,.01294,.0129288,.0129174,.0129059,.0128942,.0128825,.0128706,.0128586,.0128464,.0128342,.0128218,.0128092,.0127965,.0127837,.0127707,.0127576,.0127443,.0127309,.0127174,.0127036,.0126898,.0126757,.0126615,.0126472,.0126326,.0126179,.0126031,.012588,.0125728,.0125574,.0125418,.012526,.01251,.0124938,.0124774,.0124609,.0124441,.0124271,.0124099,.0123925,.0123748,.012357,.0123389,.0123205,.012302,.0122832,.0122641,.0122448,.0122252,.0122054,.0121853,.012165,.0121443,.0121234,.0121022,.0120807,.0120589,.0120368,.0120144,.0119917,.0119686,.0119452,.0119215,.0118974,.011873,.0118482,.011823,.0117975,.0117716,.0117452,.0117185,.0116914,.0116638,.0116358,.0116074,.0115785,.0115492,.0115193,.011489,.0114582,.0114269,.011395,.0113626,.0113296,.0112961,.011262,.0112273,.011192,.0111561,.0111195,.0110822,.0110442,.0110056,.0109662,.0109261,.0108852,.0108435,.0108009,.0107576,.0107133,.0106682,.0106221,.0105751,.010527,.010478,.0104278,.0103766,.0103243,.0102707,.0102159,.0101599,.0101025,.0100438,.00998358,.00992191,.00985869,.00979385,.00972732,.00965903,.00958889,.00951682,.00944272,.0093665,.00928805,.00920725,.00912399,.00903811,.00894949,.00885795,.00876332,.00866542,.00856403,.00845893,.00834985,.00823651,.0081186,.00799576,.0078676,.00773366,.00759343,.00744631,.00729164,.00712861,.00695629,.00677358,.00657914,.00637134,.00614819,.00590712,.00564485,.00535699,.0050375,.00467763,.00426389,.00377349,.0031618,.0023131,.0016762,2908e-7];
module.exports=QNMData},{}],4:[function(require,module,exports){var QNMData,linear,math,sign,sqrt;QNMData=require("./qnm.coffee");linear=require("everpolate").linear;math=require("mathjs");sqrt=math.sqrt;sign=math.sign;exports.FinalSpin0815_s=function(eta,s){"Formula to predict the final spin. Equation 3.6 arXiv:1508.07250\ns defined around Equation 3.6.";var eta2,eta3,eta4,s2,s3,s4,t1,t2,t3,t4,t5;eta2=eta*eta;eta3=eta2*eta;eta4=eta3*eta;s2=s*s;s3=s2*s;s4=s3*s;t1=3.4641016151377544*eta-4.399247300629289*eta2+9.397292189321194*eta3-13.180949901606242*eta4;t2=(1-.0850917821418767*eta-5.837029316602263*eta2)*s;t3=(.1014665242971878*eta-2.0967746996832157*eta2)*s2;t4=(-1.3546806617824356*eta+4.108962025369336*eta2)*s3;t5=(-.8676969352555539*eta+2.064046835273906*eta2)*s4;return t1+t2+t3+t4+t5};exports.FinalSpin0815=function(eta,chi1,chi2){"Wrapper function for FinalSpin0815_s.";var Seta,m1,m1s,m2,m2s,s;Seta=sqrt(1-4*eta);m1=.5*(1+Seta);m2=.5*(1-Seta);m1s=m1*m1;m2s=m2*m2;s=m1s*chi1+m2s*chi2;return exports.FinalSpin0815_s(eta,s)};exports.EradRational0815_s=function(eta,s){"Formula to predict the total radiated energy. Equation 3.7 and 3.8 arXiv:1508.07250\nInput parameter s defined around Equation 3.7 and 3.8.";var eta2,eta3,eta4,t1,t2,t3;eta2=eta*eta;eta3=eta2*eta;eta4=eta3*eta;t1=.055974469826360077*eta+.5809510763115132*eta2-.9606726679372312*eta3+3.352411249771192*eta4;t2=1+(7.7050567802399215*eta2-2.0066110851351073*eta-.0030302335878845507)*s;t3=1+(7.304676214885011*eta2-1.4756929437702908*eta-.6714403054720589)*s;return t1*t2/t3};exports.EradRational0815=function(eta,chi1,chi2){"Wrapper function for EradRational0815_s.";var Seta,m1,m1s,m2,m2s,s;Seta=sqrt(1-4*eta);m1=.5*(1+Seta);m2=.5*(1-Seta);m1s=m1*m1;m2s=m2*m2;s=(m1s*chi1+m2s*chi2)/(m1s+m2s);return exports.EradRational0815_s(eta,s)};exports.fring=function(eta,chi1,chi2,finspin){"fring is the real part of the ringdown frequency\n1508.07250 figure 9";var ifring;if(finspin>1){print("PhenomD fring function: final spin > 1.0 not supported\n")}ifring=linear(finspin,QNMData["QNMData_a"],QNMData["QNMData_fring"]);return ifring/(1-exports.EradRational0815(eta,chi1,chi2))};exports.fdamp=function(eta,chi1,chi2,finspin){"fdamp is the complex part of the ringdown frequency\n1508.07250 figure 9";var ifdamp;if(finspin>1){print("PhenomD fdamp function: final spin > 1.0 not supported\n")}ifdamp=linear(finspin,QNMData["QNMData_a"],QNMData["QNMData_fdamp"]);return ifdamp/(1-exports.EradRational0815(eta,chi1,chi2))};exports.FinalSpinIMRPhenomD_all_in_plane_spin_on_larger_BH=function(m1,m2,chip,chi1z,chi2z){"Wrapper for final-spin formula based on:\n- IMRPhenomD's FinalSpin0815() for aligned spins.\n\nWe use their convention m1>m2\nand put <b>all in-plane spin on the larger BH</b>.\n\nIn the aligned limit return the FinalSpin0815 value.\n\nm1 #/**< Mass of companion 1 (solar masses) */\nm2 #/**< Mass of companion 2 (solar masses) */\nchip #/**< chip parameter, Eq. 3.4 PhysRevD.91.024043 */\nchi1z #/**< Aligned spin of BH 1 */\nchi2z #/**< Aligned spin of BH 2 */";var M,Sperp,af,af_parallel,eta,q_factor;M=m1+m2;eta=m1*m2/(M*M);if(m1>=m2){q_factor=m1/M;af_parallel=exports.FinalSpin0815(eta,chi1z,chi2z)}else{q_factor=m2/M;af_parallel=exports.FinalSpin0815(eta,chi2z,chi1z)}Sperp=chip*q_factor*q_factor;af=sign(af_parallel)*sqrt(Sperp*Sperp+af_parallel*af_parallel);return af}},{"./qnm.coffee":3,everpolate:13,mathjs:23}],5:[function(require,module,exports){var UsefulPowers,math,pi,sqrt;math=require("mathjs");sqrt=math.sqrt;pi=math.pi;exports.Constants={MTSUN_SI:492549102554e-17,MSUN_SI:1.9885469549614615e30,MRSUN_SI:1476.6250614046494,PC_SI:0x6da012f95c9e88,LAL_PI:3.141592653589793};exports.M_eta_m1_m2=function(m1,m2){"Computes the symmetric mass-ratio (eta)\nand total mass (M) from the component masses\ninput: m1, m2\noutput: M, eta";var M,eta;M=m1+m2;eta=m1*m2/Math.pow(m1+m2,2);return[M,eta]};exports.chipn=function(eta,chi1z,chi2z){"Computes the effective spin parameter from PhenomD\ninput: eta, s1z, s2z\noutput: chi effective";var chi_a,chi_s,delta;delta=sqrt(1-4*eta);chi_s=(chi1z+chi2z)/2;chi_a=(chi1z-chi2z)/2;return chi_s*(1-eta*76/113)+delta*chi_a};exports.amp0Func=function(eta){"amplitude scaling factor defined by eq. 17 in 1508.07253";return sqrt(2/3)*sqrt(eta)/Math.pow(pi,1/6)};exports.pow_2_of=function(number){"squares input number\nhelper function from lalsimulation/src/LALSimIMRPhenomD_internals.h";return number*number};exports.pow_3_of=function(number){"cube input number\nhelper function from lalsimulation/src/LALSimIMRPhenomD_internals.h";return number*number*number};exports.pow_4_of=function(number){"fourth power of number\nhelper function from lalsimulation/src/LALSimIMRPhenomD_internals.h";var pow2;pow2=exports.pow_2_of(number);return pow2*pow2};exports.UsefulPowers=UsefulPowers=function(){"init_useful_powers from phenomD LAL code";function UsefulPowers(number){this.sixth=Math.pow(number,1/6);this.third=this.sixth*this.sixth;this.two_thirds=number/this.third;this.four_thirds=number*this.third;this.five_thirds=this.four_thirds*this.third;this.two=number*number;this.seven_thirds=this.third*this.two;this.eight_thirds=this.two_thirds*this.two;this.seven_sixths=number*this.sixth}return UsefulPowers}()},{mathjs:23}],6:[function(require,module,exports){"use strict";"use restrict";var INT_BITS=32;exports.INT_BITS=INT_BITS;exports.INT_MAX=2147483647;exports.INT_MIN=-1<<INT_BITS-1;exports.sign=function(v){return(v>0)-(v<0)};exports.abs=function(v){var mask=v>>INT_BITS-1;return(v^mask)-mask};exports.min=function(x,y){return y^(x^y)&-(x<y)};exports.max=function(x,y){return x^(x^y)&-(x<y)};exports.isPow2=function(v){return!(v&v-1)&&!!v};exports.log2=function(v){var r,shift;r=(v>65535)<<4;v>>>=r;shift=(v>255)<<3;v>>>=shift;r|=shift;shift=(v>15)<<2;v>>>=shift;r|=shift;shift=(v>3)<<1;v>>>=shift;r|=shift;return r|v>>1};exports.log10=function(v){return v>=1e9?9:v>=1e8?8:v>=1e7?7:v>=1e6?6:v>=1e5?5:v>=1e4?4:v>=1e3?3:v>=100?2:v>=10?1:0};exports.popCount=function(v){v=v-(v>>>1&1431655765);v=(v&858993459)+(v>>>2&858993459);return(v+(v>>>4)&252645135)*16843009>>>24};function countTrailingZeros(v){var c=32;v&=-v;if(v)c--;if(v&65535)c-=16;if(v&16711935)c-=8;if(v&252645135)c-=4;if(v&858993459)c-=2;if(v&1431655765)c-=1;return c}exports.countTrailingZeros=countTrailingZeros;exports.nextPow2=function(v){v+=v===0;--v;v|=v>>>1;v|=v>>>2;v|=v>>>4;v|=v>>>8;v|=v>>>16;return v+1};exports.prevPow2=function(v){v|=v>>>1;v|=v>>>2;v|=v>>>4;v|=v>>>8;v|=v>>>16;return v-(v>>>1)};exports.parity=function(v){v^=v>>>16;v^=v>>>8;v^=v>>>4;v&=15;return 27030>>>v&1};var REVERSE_TABLE=new Array(256);(function(tab){for(var i=0;i<256;++i){var v=i,r=i,s=7;for(v>>>=1;v;v>>>=1){r<<=1;r|=v&1;--s}tab[i]=r<<s&255}})(REVERSE_TABLE);exports.reverse=function(v){return REVERSE_TABLE[v&255]<<24|REVERSE_TABLE[v>>>8&255]<<16|REVERSE_TABLE[v>>>16&255]<<8|REVERSE_TABLE[v>>>24&255]};exports.interleave2=function(x,y){x&=65535;x=(x|x<<8)&16711935;x=(x|x<<4)&252645135;x=(x|x<<2)&858993459;x=(x|x<<1)&1431655765;y&=65535;y=(y|y<<8)&16711935;y=(y|y<<4)&252645135;y=(y|y<<2)&858993459;y=(y|y<<1)&1431655765;return x|y<<1};exports.deinterleave2=function(v,n){v=v>>>n&1431655765;v=(v|v>>>1)&858993459;v=(v|v>>>2)&252645135;v=(v|v>>>4)&16711935;v=(v|v>>>16)&65535;return v<<16>>16};exports.interleave3=function(x,y,z){x&=1023;x=(x|x<<16)&4278190335;x=(x|x<<8)&251719695;x=(x|x<<4)&3272356035;x=(x|x<<2)&1227133513;y&=1023;y=(y|y<<16)&4278190335;y=(y|y<<8)&251719695;y=(y|y<<4)&3272356035;y=(y|y<<2)&1227133513;x|=y<<1;z&=1023;z=(z|z<<16)&4278190335;z=(z|z<<8)&251719695;z=(z|z<<4)&3272356035;z=(z|z<<2)&1227133513;return x|z<<2};exports.deinterleave3=function(v,n){v=v>>>n&1227133513;v=(v|v>>>2)&3272356035;v=(v|v>>>4)&251719695;v=(v|v>>>8)&4278190335;v=(v|v>>>16)&1023;return v<<22>>22};exports.nextCombination=function(v){var t=v|v-1;return t+1|(~t&-~t)-1>>>countTrailingZeros(v)+1}},{}],7:[function(require,module,exports){(function(root){"use strict";var P={re:0,im:0};Math.cosh=Math.cosh||function(x){return(Math.exp(x)+Math.exp(-x))*.5};Math.sinh=Math.sinh||function(x){return(Math.exp(x)-Math.exp(-x))*.5};var parser_exit=function(){throw SyntaxError("Invalid Param")};function logHypot(a,b){var _a=Math.abs(a);var _b=Math.abs(b);if(a===0){return Math.log(_b)}if(b===0){return Math.log(_a)}if(_a<3e3&&_b<3e3){return Math.log(a*a+b*b)*.5}return Math.log(a/Math.cos(Math.atan2(b,a)))}var parse=function(a,b){if(a===undefined||a===null){P["re"]=P["im"]=0}else if(b!==undefined){P["re"]=a;P["im"]=b}else switch(typeof a){case"object":if("im"in a&&"re"in a){P["re"]=a["re"];P["im"]=a["im"]}else if("abs"in a&&"arg"in a){P["re"]=a["abs"]*Math.cos(a["arg"]);P["im"]=a["abs"]*Math.sin(a["arg"])}else if("r"in a&&"phi"in a){P["re"]=a["r"]*Math.cos(a["phi"]);P["im"]=a["r"]*Math.sin(a["phi"])}else{parser_exit()}break;case"string":P["im"]=P["re"]=0;var tokens=a.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g);var plus=1;var minus=0;if(tokens===null){parser_exit()}for(var i=0;i<tokens.length;i++){var c=tokens[i];if(c===" "||c==="\t"||c==="\n"){}else if(c==="+"){plus++}else if(c==="-"){minus++}else if(c==="i"||c==="I"){if(plus+minus===0){parser_exit()}if(tokens[i+1]!==" "&&!isNaN(tokens[i+1])){P["im"]+=parseFloat((minus%2?"-":"")+tokens[i+1]);i++}else{P["im"]+=parseFloat((minus%2?"-":"")+"1")}plus=minus=0}else{if(plus+minus===0||isNaN(c)){parser_exit()}if(tokens[i+1]==="i"||tokens[i+1]==="I"){P["im"]+=parseFloat((minus%2?"-":"")+c);i++}else{P["re"]+=parseFloat((minus%2?"-":"")+c)}plus=minus=0}}if(plus+minus>0){parser_exit()}break;case"number":P["im"]=0;P["re"]=a;break;default:parser_exit()}if(isNaN(P["re"])||isNaN(P["im"])){}};function Complex(a,b){if(!(this instanceof Complex)){return new Complex(a,b)}parse(a,b);this["re"]=P["re"];this["im"]=P["im"]}Complex.prototype={re:0,im:0,sign:function(){var abs=this["abs"]();return new Complex(this["re"]/abs,this["im"]/abs)},add:function(a,b){parse(a,b);return new Complex(this["re"]+P["re"],this["im"]+P["im"])},sub:function(a,b){parse(a,b);return new Complex(this["re"]-P["re"],this["im"]-P["im"])},mul:function(a,b){parse(a,b);if(P["im"]===0&&this["im"]===0){return new Complex(this["re"]*P["re"],0)}return new Complex(this["re"]*P["re"]-this["im"]*P["im"],this["re"]*P["im"]+this["im"]*P["re"])},div:function(a,b){parse(a,b);a=this["re"];b=this["im"];var c=P["re"];var d=P["im"];var t,x;if(0===c&&0===d){return new Complex(a!==0?a/0:0,b!==0?b/0:0)}if(0===d){return new Complex(a/c,b/c)}if(Math.abs(c)<Math.abs(d)){x=c/d;t=c*x+d;return new Complex((a*x+b)/t,(b*x-a)/t)}else{x=d/c;t=d*x+c;return new Complex((a+b*x)/t,(b-a*x)/t)}},pow:function(a,b){parse(a,b);a=this["re"];b=this["im"];if(a===0&&b===0){return new Complex(0,0)}var arg=Math.atan2(b,a);var loh=logHypot(a,b);if(P["im"]===0){if(b===0&&a>=0){return new Complex(Math.pow(a,P["re"]),0)}else if(a===0){switch(P["re"]%4){case 0:return new Complex(Math.pow(b,P["re"]),0);case 1:return new Complex(0,Math.pow(b,P["re"]));case 2:return new Complex((-Math.pow(b,P["re"])),0);case 3:return new Complex(0,(-Math.pow(b,P["re"])))}}}a=Math.exp(P["re"]*loh-P["im"]*arg);b=P["im"]*loh+P["re"]*arg;return new Complex(a*Math.cos(b),a*Math.sin(b))},sqrt:function(){var a=this["re"];var b=this["im"];var r=this["abs"]();var re,im;if(a>=0&&b===0){return new Complex(Math.sqrt(a),0)}if(a>=0){re=.5*Math.sqrt(2*(r+a))}else{re=Math.abs(b)/Math.sqrt(2*(r-a))}if(a<=0){im=.5*Math.sqrt(2*(r-a))}else{im=Math.abs(b)/Math.sqrt(2*(r+a))}return new Complex(re,b>=0?im:-im)},exp:function(){var tmp=Math.exp(this["re"]);if(this["im"]===0){}return new Complex(tmp*Math.cos(this["im"]),tmp*Math.sin(this["im"]))},log:function(){var a=this["re"];var b=this["im"];if(b===0&&a>0){}return new Complex(logHypot(a,b),Math.atan2(b,a))},abs:function(){var a=Math.abs(this["re"]);var b=Math.abs(this["im"]);if(a<3e3&&b<3e3){return Math.sqrt(a*a+b*b)}if(a<b){a=b;b=this["re"]/this["im"]}else{b=this["im"]/this["re"]}return a*Math.sqrt(1+b*b)},arg:function(){return Math.atan2(this["im"],this["re"])},sin:function(){var a=this["re"];var b=this["im"];return new Complex(Math.sin(a)*Math.cosh(b),Math.cos(a)*Math.sinh(b))},cos:function(){var a=this["re"];var b=this["im"];return new Complex(Math.cos(a)*Math.cosh(b),-Math.sin(a)*Math.sinh(b))},tan:function(){var a=2*this["re"];var b=2*this["im"];var d=Math.cos(a)+Math.cosh(b);return new Complex(Math.sin(a)/d,Math.sinh(b)/d)},cot:function(){var a=2*this["re"];var b=2*this["im"];var d=Math.cos(a)-Math.cosh(b);return new Complex(-Math.sin(a)/d,Math.sinh(b)/d)},sec:function(){var a=this["re"];var b=this["im"];var d=.5*Math.cosh(2*b)+.5*Math.cos(2*a);return new Complex(Math.cos(a)*Math.cosh(b)/d,Math.sin(a)*Math.sinh(b)/d)},csc:function(){var a=this["re"];var b=this["im"];var d=.5*Math.cosh(2*b)-.5*Math.cos(2*a);return new Complex(Math.sin(a)*Math.cosh(b)/d,-Math.cos(a)*Math.sinh(b)/d)},asin:function(){var a=this["re"];var b=this["im"];var t1=new Complex(b*b-a*a+1,-2*a*b)["sqrt"]();var t2=new Complex(t1["re"]-b,t1["im"]+a)["log"]();return new Complex(t2["im"],(-t2["re"]))},acos:function(){var a=this["re"];var b=this["im"];var t1=new Complex(b*b-a*a+1,-2*a*b)["sqrt"]();var t2=new Complex(t1["re"]-b,t1["im"]+a)["log"]();return new Complex(Math.PI/2-t2["im"],t2["re"])},atan:function(){var a=this["re"];var b=this["im"];if(a===0){if(b===1){return new Complex(0,Infinity)}if(b===-1){return new Complex(0,(-Infinity))}}var d=a*a+(1-b)*(1-b);var t1=new Complex((1-b*b-a*a)/d,-2*a/d).log();return new Complex(-.5*t1["im"],.5*t1["re"])},acot:function(){var a=this["re"];var b=this["im"];if(b===0){return new Complex(Math.atan2(1,a),0)}var d=a*a+b*b;return d!==0?new Complex(a/d,-b/d).atan():new Complex(a!==0?a/0:0,b!==0?-b/0:0).atan()},asec:function(){var a=this["re"];var b=this["im"];if(a===0&&b===0){return new Complex(0,Infinity)}var d=a*a+b*b;return d!==0?new Complex(a/d,-b/d).acos():new Complex(a!==0?a/0:0,b!==0?-b/0:0).acos()},acsc:function(){var a=this["re"];var b=this["im"];if(a===0&&b===0){return new Complex(Math.PI/2,Infinity)}var d=a*a+b*b;return d!==0?new Complex(a/d,-b/d).asin():new Complex(a!==0?a/0:0,b!==0?-b/0:0).asin()},sinh:function(){var a=this["re"];var b=this["im"];return new Complex(Math.sinh(a)*Math.cos(b),Math.cosh(a)*Math.sin(b))},cosh:function(){var a=this["re"];var b=this["im"];return new Complex(Math.cosh(a)*Math.cos(b),Math.sinh(a)*Math.sin(b))},tanh:function(){var a=2*this["re"];var b=2*this["im"];var d=Math.cosh(a)+Math.cos(b);return new Complex(Math.sinh(a)/d,Math.sin(b)/d)},coth:function(){var a=2*this["re"];var b=2*this["im"];var d=Math.cosh(a)-Math.cos(b);return new Complex(Math.sinh(a)/d,-Math.sin(b)/d)},csch:function(){var a=this["re"];var b=this["im"];var d=Math.cos(2*b)-Math.cosh(2*a);return new Complex(-2*Math.sinh(a)*Math.cos(b)/d,2*Math.cosh(a)*Math.sin(b)/d)},sech:function(){var a=this["re"];var b=this["im"];var d=Math.cos(2*b)+Math.cosh(2*a);return new Complex(2*Math.cosh(a)*Math.cos(b)/d,-2*Math.sinh(a)*Math.sin(b)/d)},asinh:function(){var tmp=this["im"];this["im"]=-this["re"];this["re"]=tmp;var res=this["asin"]();this["re"]=-this["im"];this["im"]=tmp;tmp=res["re"];res["re"]=-res["im"];res["im"]=tmp;return res},acosh:function(){var tmp;var res=this["acos"]();if(res["im"]<=0){tmp=res["re"];res["re"]=-res["im"];res["im"]=tmp}else{tmp=res["im"];res["im"]=-res["re"];res["re"]=tmp}return res},atanh:function(){var a=this["re"];var b=this["im"];var noIM=a>1&&b===0;var oneMinus=1-a;var onePlus=1+a;var d=oneMinus*oneMinus+b*b;var x=d!==0?new Complex((onePlus*oneMinus-b*b)/d,(b*oneMinus+onePlus*b)/d):new Complex(a!==-1?a/0:0,b!==0?b/0:0);var temp=x["re"];x["re"]=logHypot(x["re"],x["im"])/2;x["im"]=Math.atan2(x["im"],temp)/2;if(noIM){x["im"]=-x["im"]}return x},acoth:function(){var a=this["re"];var b=this["im"];if(a===0&&b===0){return new Complex(0,Math.PI/2)}var d=a*a+b*b;return d!==0?new Complex(a/d,-b/d).atanh():new Complex(a!==0?a/0:0,b!==0?-b/0:0).atanh()},acsch:function(){var a=this["re"];var b=this["im"];if(b===0){return new Complex(a!==0?Math.log(a+Math.sqrt(a*a+1)):Infinity,0)}var d=a*a+b*b;return d!==0?new Complex(a/d,-b/d).asinh():new Complex(a!==0?a/0:0,b!==0?-b/0:0).asinh()},asech:function(){var a=this["re"];var b=this["im"];if(a===0&&b===0){return new Complex(Infinity,0)}var d=a*a+b*b;return d!==0?new Complex(a/d,-b/d).acosh():new Complex(a!==0?a/0:0,b!==0?-b/0:0).acosh()},inverse:function(){var a=this["re"];var b=this["im"];var d=a*a+b*b;return new Complex(a!==0?a/d:0,b!==0?-b/d:0)},conjugate:function(){return new Complex(this["re"],(-this["im"]))},neg:function(){return new Complex((-this["re"]),(-this["im"]))},ceil:function(places){places=Math.pow(10,places||0);return new Complex(Math.ceil(this["re"]*places)/places,Math.ceil(this["im"]*places)/places)},floor:function(places){places=Math.pow(10,places||0);return new Complex(Math.floor(this["re"]*places)/places,Math.floor(this["im"]*places)/places)},round:function(places){places=Math.pow(10,places||0);return new Complex(Math.round(this["re"]*places)/places,Math.round(this["im"]*places)/places)},equals:function(a,b){parse(a,b);return Math.abs(P["re"]-this["re"])<=Complex["EPSILON"]&&Math.abs(P["im"]-this["im"])<=Complex["EPSILON"]},clone:function(){return new Complex(this["re"],this["im"])},toString:function(){var a=this["re"];var b=this["im"];var ret="";if(isNaN(a)||isNaN(b)){return"NaN"}if(a!==0){ret+=a}if(b!==0){if(a!==0){ret+=b<0?" - ":" + "}else if(b<0){ret+="-"}b=Math.abs(b);if(1!==b){ret+=b}ret+="i"}if(!ret)return"0";return ret},toVector:function(){return[this["re"],this["im"]]},valueOf:function(){if(this["im"]===0){return this["re"]}return null},isNaN:function(){return isNaN(this["re"])||isNaN(this["im"])}};Complex["ZERO"]=new Complex(0,0);Complex["ONE"]=new Complex(1,0);Complex["I"]=new Complex(0,1);Complex["PI"]=new Complex(Math.PI,0);Complex["E"]=new Complex(Math.E,0);Complex["EPSILON"]=1e-16;if(typeof define==="function"&&define["amd"]){define([],function(){return Complex})}else if(typeof exports==="object"){module["exports"]=Complex}else{root["Complex"]=Complex}})(this)},{}],8:[function(require,module,exports){"use strict";var createThunk=require("./lib/thunk.js");function Procedure(){this.argTypes=[];this.shimArgs=[];this.arrayArgs=[];this.arrayBlockIndices=[];this.scalarArgs=[];this.offsetArgs=[];this.offsetArgIndex=[];this.indexArgs=[];this.shapeArgs=[];this.funcName="";this.pre=null;this.body=null;this.post=null;this.debug=false}function compileCwise(user_args){var proc=new Procedure;proc.pre=user_args.pre;proc.body=user_args.body;proc.post=user_args.post;var proc_args=user_args.args.slice(0);proc.argTypes=proc_args;for(var i=0;i<proc_args.length;++i){var arg_type=proc_args[i];if(arg_type==="array"||typeof arg_type==="object"&&arg_type.blockIndices){proc.argTypes[i]="array";proc.arrayArgs.push(i);proc.arrayBlockIndices.push(arg_type.blockIndices?arg_type.blockIndices:0);proc.shimArgs.push("array"+i);if(i<proc.pre.args.length&&proc.pre.args[i].count>0){throw new Error("cwise: pre() block may not reference array args")}if(i<proc.post.args.length&&proc.post.args[i].count>0){throw new Error("cwise: post() block may not reference array args")}}else if(arg_type==="scalar"){proc.scalarArgs.push(i);proc.shimArgs.push("scalar"+i)}else if(arg_type==="index"){proc.indexArgs.push(i);if(i<proc.pre.args.length&&proc.pre.args[i].count>0){throw new Error("cwise: pre() block may not reference array index")}if(i<proc.body.args.length&&proc.body.args[i].lvalue){throw new Error("cwise: body() block may not write to array index")}if(i<proc.post.args.length&&proc.post.args[i].count>0){throw new Error("cwise: post() block may not reference array index")}}else if(arg_type==="shape"){proc.shapeArgs.push(i);if(i<proc.pre.args.length&&proc.pre.args[i].lvalue){throw new Error("cwise: pre() block may not write to array shape")}if(i<proc.body.args.length&&proc.body.args[i].lvalue){throw new Error("cwise: body() block may not write to array shape")}if(i<proc.post.args.length&&proc.post.args[i].lvalue){throw new Error("cwise: post() block may not write to array shape")}}else if(typeof arg_type==="object"&&arg_type.offset){proc.argTypes[i]="offset";proc.offsetArgs.push({array:arg_type.array,offset:arg_type.offset});proc.offsetArgIndex.push(i)}else{throw new Error("cwise: Unknown argument type "+proc_args[i])}}if(proc.arrayArgs.length<=0){throw new Error("cwise: No array arguments specified")}if(proc.pre.args.length>proc_args.length){throw new Error("cwise: Too many arguments in pre() block")}if(proc.body.args.length>proc_args.length){throw new Error("cwise: Too many arguments in body() block")}if(proc.post.args.length>proc_args.length){throw new Error("cwise: Too many arguments in post() block")}proc.debug=!!user_args.printCode||!!user_args.debug;proc.funcName=user_args.funcName||"cwise";proc.blockSize=user_args.blockSize||64;return createThunk(proc)}module.exports=compileCwise},{"./lib/thunk.js":10}],9:[function(require,module,exports){"use strict";var uniq=require("uniq");function innerFill(order,proc,body){var dimension=order.length,nargs=proc.arrayArgs.length,has_index=proc.indexArgs.length>0,code=[],vars=[],idx=0,pidx=0,i,j;for(i=0;i<dimension;++i){vars.push(["i",i,"=0"].join(""))}for(j=0;j<nargs;++j){for(i=0;i<dimension;++i){pidx=idx;idx=order[i];if(i===0){vars.push(["d",j,"s",i,"=t",j,"p",idx].join(""))}else{vars.push(["d",j,"s",i,"=(t",j,"p",idx,"-s",pidx,"*t",j,"p",pidx,")"].join(""))}}}code.push("var "+vars.join(","));for(i=dimension-1;i>=0;--i){idx=order[i];code.push(["for(i",i,"=0;i",i,"<s",idx,";++i",i,"){"].join(""))}code.push(body);for(i=0;i<dimension;++i){pidx=idx;idx=order[i];for(j=0;j<nargs;++j){code.push(["p",j,"+=d",j,"s",i].join(""))}if(has_index){if(i>0){code.push(["index[",pidx,"]-=s",pidx].join(""))}code.push(["++index[",idx,"]"].join(""))}code.push("}")}return code.join("\n")}function outerFill(matched,order,proc,body){var dimension=order.length,nargs=proc.arrayArgs.length,blockSize=proc.blockSize,has_index=proc.indexArgs.length>0,code=[];for(var i=0;i<nargs;++i){code.push(["var offset",i,"=p",i].join(""))}for(var i=matched;i<dimension;++i){code.push(["for(var j"+i+"=SS[",order[i],"]|0;j",i,">0;){"].join(""));code.push(["if(j",i,"<",blockSize,"){"].join(""));code.push(["s",order[i],"=j",i].join(""));code.push(["j",i,"=0"].join(""));code.push(["}else{s",order[i],"=",blockSize].join(""));code.push(["j",i,"-=",blockSize,"}"].join(""));if(has_index){code.push(["index[",order[i],"]=j",i].join(""))}}for(var i=0;i<nargs;++i){var indexStr=["offset"+i];for(var j=matched;j<dimension;++j){indexStr.push(["j",j,"*t",i,"p",order[j]].join(""))}code.push(["p",i,"=(",indexStr.join("+"),")"].join(""))}code.push(innerFill(order,proc,body));for(var i=matched;i<dimension;++i){code.push("}")}return code.join("\n")}function countMatches(orders){var matched=0,dimension=orders[0].length;while(matched<dimension){for(var j=1;j<orders.length;++j){if(orders[j][matched]!==orders[0][matched]){return matched}}++matched}return matched}function processBlock(block,proc,dtypes){var code=block.body;var pre=[];var post=[];for(var i=0;i<block.args.length;++i){var carg=block.args[i];if(carg.count<=0){continue}var re=new RegExp(carg.name,"g");var ptrStr="";var arrNum=proc.arrayArgs.indexOf(i);switch(proc.argTypes[i]){case"offset":var offArgIndex=proc.offsetArgIndex.indexOf(i);var offArg=proc.offsetArgs[offArgIndex];arrNum=offArg.array;ptrStr="+q"+offArgIndex;case"array":ptrStr="p"+arrNum+ptrStr;var localStr="l"+i;var arrStr="a"+arrNum;if(proc.arrayBlockIndices[arrNum]===0){if(carg.count===1){if(dtypes[arrNum]==="generic"){if(carg.lvalue){pre.push(["var ",localStr,"=",arrStr,".get(",ptrStr,")"].join(""));code=code.replace(re,localStr);post.push([arrStr,".set(",ptrStr,",",localStr,")"].join(""))}else{code=code.replace(re,[arrStr,".get(",ptrStr,")"].join(""))}}else{code=code.replace(re,[arrStr,"[",ptrStr,"]"].join(""))}}else if(dtypes[arrNum]==="generic"){pre.push(["var ",localStr,"=",arrStr,".get(",ptrStr,")"].join(""));code=code.replace(re,localStr);if(carg.lvalue){post.push([arrStr,".set(",ptrStr,",",localStr,")"].join(""))}}else{pre.push(["var ",localStr,"=",arrStr,"[",ptrStr,"]"].join(""));code=code.replace(re,localStr);if(carg.lvalue){post.push([arrStr,"[",ptrStr,"]=",localStr].join(""))}}}else{var reStrArr=[carg.name],ptrStrArr=[ptrStr];for(var j=0;j<Math.abs(proc.arrayBlockIndices[arrNum]);j++){reStrArr.push("\\s*\\[([^\\]]+)\\]");ptrStrArr.push("$"+(j+1)+"*t"+arrNum+"b"+j)}re=new RegExp(reStrArr.join(""),"g");ptrStr=ptrStrArr.join("+");if(dtypes[arrNum]==="generic"){throw new Error("cwise: Generic arrays not supported in combination with blocks!")}else{code=code.replace(re,[arrStr,"[",ptrStr,"]"].join(""))}}break;case"scalar":code=code.replace(re,"Y"+proc.scalarArgs.indexOf(i));break;case"index":code=code.replace(re,"index");break;case"shape":code=code.replace(re,"shape");break}}return[pre.join("\n"),code,post.join("\n")].join("\n").trim()}function typeSummary(dtypes){var summary=new Array(dtypes.length);var allEqual=true;for(var i=0;i<dtypes.length;++i){var t=dtypes[i];var digits=t.match(/\d+/);if(!digits){digits=""}else{digits=digits[0]}if(t.charAt(0)===0){summary[i]="u"+t.charAt(1)+digits}else{summary[i]=t.charAt(0)+digits}if(i>0){allEqual=allEqual&&summary[i]===summary[i-1]}}if(allEqual){return summary[0]}return summary.join("")}function generateCWiseOp(proc,typesig){var dimension=typesig[1].length-Math.abs(proc.arrayBlockIndices[0])|0;var orders=new Array(proc.arrayArgs.length);var dtypes=new Array(proc.arrayArgs.length);for(var i=0;i<proc.arrayArgs.length;++i){dtypes[i]=typesig[2*i];orders[i]=typesig[2*i+1]}var blockBegin=[],blockEnd=[];var loopBegin=[],loopEnd=[];var loopOrders=[];for(var i=0;i<proc.arrayArgs.length;++i){if(proc.arrayBlockIndices[i]<0){loopBegin.push(0);loopEnd.push(dimension);blockBegin.push(dimension);blockEnd.push(dimension+proc.arrayBlockIndices[i])}else{loopBegin.push(proc.arrayBlockIndices[i]);loopEnd.push(proc.arrayBlockIndices[i]+dimension);blockBegin.push(0);blockEnd.push(proc.arrayBlockIndices[i])}var newOrder=[];for(var j=0;j<orders[i].length;j++){if(loopBegin[i]<=orders[i][j]&&orders[i][j]<loopEnd[i]){newOrder.push(orders[i][j]-loopBegin[i])}}loopOrders.push(newOrder)}var arglist=["SS"];var code=["'use strict'"];var vars=[];for(var j=0;j<dimension;++j){vars.push(["s",j,"=SS[",j,"]"].join(""))}for(var i=0;i<proc.arrayArgs.length;++i){arglist.push("a"+i);arglist.push("t"+i);arglist.push("p"+i);for(var j=0;j<dimension;++j){vars.push(["t",i,"p",j,"=t",i,"[",loopBegin[i]+j,"]"].join(""))}for(var j=0;j<Math.abs(proc.arrayBlockIndices[i]);++j){vars.push(["t",i,"b",j,"=t",i,"[",blockBegin[i]+j,"]"].join(""))}}for(var i=0;i<proc.scalarArgs.length;++i){arglist.push("Y"+i)}if(proc.shapeArgs.length>0){vars.push("shape=SS.slice(0)")}if(proc.indexArgs.length>0){var zeros=new Array(dimension);for(var i=0;i<dimension;++i){zeros[i]="0"}vars.push(["index=[",zeros.join(","),"]"].join(""))}for(var i=0;i<proc.offsetArgs.length;++i){var off_arg=proc.offsetArgs[i];var init_string=[];for(var j=0;j<off_arg.offset.length;++j){if(off_arg.offset[j]===0){continue}else if(off_arg.offset[j]===1){init_string.push(["t",off_arg.array,"p",j].join(""))}else{init_string.push([off_arg.offset[j],"*t",off_arg.array,"p",j].join(""))}}if(init_string.length===0){vars.push("q"+i+"=0")}else{vars.push(["q",i,"=",init_string.join("+")].join(""))}}var thisVars=uniq([].concat(proc.pre.thisVars).concat(proc.body.thisVars).concat(proc.post.thisVars));vars=vars.concat(thisVars);code.push("var "+vars.join(","));for(var i=0;i<proc.arrayArgs.length;++i){code.push("p"+i+"|=0")}if(proc.pre.body.length>3){code.push(processBlock(proc.pre,proc,dtypes))}var body=processBlock(proc.body,proc,dtypes);var matched=countMatches(loopOrders);if(matched<dimension){code.push(outerFill(matched,loopOrders[0],proc,body))}else{code.push(innerFill(loopOrders[0],proc,body))}if(proc.post.body.length>3){code.push(processBlock(proc.post,proc,dtypes))}if(proc.debug){console.log("-----Generated cwise routine for ",typesig,":\n"+code.join("\n")+"\n----------")}var loopName=[proc.funcName||"unnamed","_cwise_loop_",orders[0].join("s"),"m",matched,typeSummary(dtypes)].join("");var f=new Function(["function ",loopName,"(",arglist.join(","),"){",code.join("\n"),"} return ",loopName].join(""));return f()}module.exports=generateCWiseOp},{uniq:521}],10:[function(require,module,exports){"use strict";var compile=require("./compile.js");function createThunk(proc){var code=["'use strict'","var CACHED={}"];var vars=[];var thunkName=proc.funcName+"_cwise_thunk";code.push(["return function ",thunkName,"(",proc.shimArgs.join(","),"){"].join(""));var typesig=[];var string_typesig=[];var proc_args=[["array",proc.arrayArgs[0],".shape.slice(",Math.max(0,proc.arrayBlockIndices[0]),proc.arrayBlockIndices[0]<0?","+proc.arrayBlockIndices[0]+")":")"].join("")];var shapeLengthConditions=[],shapeConditions=[];for(var i=0;i<proc.arrayArgs.length;++i){var j=proc.arrayArgs[i];vars.push(["t",j,"=array",j,".dtype,","r",j,"=array",j,".order"].join(""));typesig.push("t"+j);typesig.push("r"+j);string_typesig.push("t"+j);string_typesig.push("r"+j+".join()");proc_args.push("array"+j+".data");proc_args.push("array"+j+".stride");proc_args.push("array"+j+".offset|0");if(i>0){shapeLengthConditions.push("array"+proc.arrayArgs[0]+".shape.length===array"+j+".shape.length+"+(Math.abs(proc.arrayBlockIndices[0])-Math.abs(proc.arrayBlockIndices[i])));shapeConditions.push("array"+proc.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,proc.arrayBlockIndices[0])+"]===array"+j+".shape[shapeIndex+"+Math.max(0,proc.arrayBlockIndices[i])+"]")}}if(proc.arrayArgs.length>1){code.push("if (!("+shapeLengthConditions.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')");code.push("for(var shapeIndex=array"+proc.arrayArgs[0]+".shape.length-"+Math.abs(proc.arrayBlockIndices[0])+"; shapeIndex-->0;) {");code.push("if (!("+shapeConditions.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')");code.push("}")}for(var i=0;i<proc.scalarArgs.length;++i){proc_args.push("scalar"+proc.scalarArgs[i])}vars.push(["type=[",string_typesig.join(","),"].join()"].join(""));vars.push("proc=CACHED[type]");code.push("var "+vars.join(","));code.push(["if(!proc){","CACHED[type]=proc=compile([",typesig.join(","),"])}","return proc(",proc_args.join(","),")}"].join(""));if(proc.debug){console.log("-----Generated thunk:\n"+code.join("\n")+"\n----------")}var thunk=new Function("compile",code.join("\n"));return thunk(compile.bind(undefined,proc))}module.exports=createThunk},{"./compile.js":9}],11:[function(require,module,exports){(function(globalScope){"use strict";var EXP_LIMIT=9e15,MAX_DIGITS=1e9,NUMERALS="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%()*+,-./:;=?@[]^_`{|}~",LN10="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",PI="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Decimal={
precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-EXP_LIMIT,maxE:EXP_LIMIT,crypto:void 0},inexact,noConflict,quadrant,cryptoObject=typeof crypto!="undefined"?crypto:null,external=true,decimalError="[DecimalError] ",invalidArgument=decimalError+"Invalid argument: ",precisionLimitExceeded=decimalError+"Precision limit exceeded",mathfloor=Math.floor,mathpow=Math.pow,isBinary=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,isHex=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,isOctal=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,isDecimal=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,BASE=1e7,LOG_BASE=7,MAX_SAFE_INTEGER=9007199254740991,LN10_PRECISION=LN10.length-1,PI_PRECISION=PI.length-1,P={};P.absoluteValue=P.abs=function(){var x=new this.constructor(this);if(x.s<0)x.s=1;return finalise(x)};P.ceil=function(){return finalise(new this.constructor(this),this.e+1,2)};P.comparedTo=P.cmp=function(y){var i,j,xdL,ydL,x=this,xd=x.d,yd=(y=new x.constructor(y)).d,xs=x.s,ys=y.s;if(!xd||!yd){return!xs||!ys?NaN:xs!==ys?xs:xd===yd?0:!xd^xs<0?1:-1}if(!xd[0]||!yd[0])return xd[0]?xs:yd[0]?-ys:0;if(xs!==ys)return xs;if(x.e!==y.e)return x.e>y.e^xs<0?1:-1;xdL=xd.length;ydL=yd.length;for(i=0,j=xdL<ydL?xdL:ydL;i<j;++i){if(xd[i]!==yd[i])return xd[i]>yd[i]^xs<0?1:-1}return xdL===ydL?0:xdL>ydL^xs<0?1:-1};P.cosine=P.cos=function(){var pr,rm,x=this,Ctor=x.constructor;if(!x.d)return new Ctor(NaN);if(!x.d[0])return new Ctor(1);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+Math.max(x.e,x.sd())+LOG_BASE;Ctor.rounding=1;x=cosine(Ctor,toLessThanHalfPi(Ctor,x));Ctor.precision=pr;Ctor.rounding=rm;return finalise(quadrant==2||quadrant==3?x.neg():x,pr,rm,true)};P.cubeRoot=P.cbrt=function(){var e,m,n,r,rep,s,sd,t,t3,t3plusx,x=this,Ctor=x.constructor;if(!x.isFinite()||x.isZero())return new Ctor(x);external=false;s=x.s*Math.pow(x.s*x,1/3);if(!s||Math.abs(s)==1/0){n=digitsToString(x.d);e=x.e;if(s=(e-n.length+1)%3)n+=s==1||s==-2?"0":"00";s=Math.pow(n,1/3);e=mathfloor((e+1)/3)-(e%3==(e<0?-1:2));if(s==1/0){n="5e"+e}else{n=s.toExponential();n=n.slice(0,n.indexOf("e")+1)+e}r=new Ctor(n);r.s=x.s}else{r=new Ctor(s.toString())}sd=(e=Ctor.precision)+3;for(;;){t=r;t3=t.times(t).times(t);t3plusx=t3.plus(x);r=divide(t3plusx.plus(x).times(t),t3plusx.plus(t3),sd+2,1);if(digitsToString(t.d).slice(0,sd)===(n=digitsToString(r.d)).slice(0,sd)){n=n.slice(sd-3,sd+1);if(n=="9999"||!rep&&n=="4999"){if(!rep){finalise(t,e+1,0);if(t.times(t).times(t).eq(x)){r=t;break}}sd+=4;rep=1}else{if(!+n||!+n.slice(1)&&n.charAt(0)=="5"){finalise(r,e+1,1);m=!r.times(r).times(r).eq(x)}break}}}external=true;return finalise(r,e,Ctor.rounding,m)};P.decimalPlaces=P.dp=function(){var w,d=this.d,n=NaN;if(d){w=d.length-1;n=(w-mathfloor(this.e/LOG_BASE))*LOG_BASE;w=d[w];if(w)for(;w%10==0;w/=10)n--;if(n<0)n=0}return n};P.dividedBy=P.div=function(y){return divide(this,new this.constructor(y))};P.dividedToIntegerBy=P.divToInt=function(y){var x=this,Ctor=x.constructor;return finalise(divide(x,new Ctor(y),0,1,1),Ctor.precision,Ctor.rounding)};P.equals=P.eq=function(y){return this.cmp(y)===0};P.floor=function(){return finalise(new this.constructor(this),this.e+1,3)};P.greaterThan=P.gt=function(y){return this.cmp(y)>0};P.greaterThanOrEqualTo=P.gte=function(y){var k=this.cmp(y);return k==1||k===0};P.hyperbolicCosine=P.cosh=function(){var k,n,pr,rm,len,x=this,Ctor=x.constructor,one=new Ctor(1);if(!x.isFinite())return new Ctor(x.s?1/0:NaN);if(x.isZero())return one;pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+Math.max(x.e,x.sd())+4;Ctor.rounding=1;len=x.d.length;if(len<32){k=Math.ceil(len/3);n=Math.pow(4,-k).toString()}else{k=16;n="2.3283064365386962890625e-10"}x=taylorSeries(Ctor,1,x.times(n),new Ctor(1),true);var cosh2_x,i=k,d8=new Ctor(8);for(;i--;){cosh2_x=x.times(x);x=one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))))}return finalise(x,Ctor.precision=pr,Ctor.rounding=rm,true)};P.hyperbolicSine=P.sinh=function(){var k,pr,rm,len,x=this,Ctor=x.constructor;if(!x.isFinite()||x.isZero())return new Ctor(x);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+Math.max(x.e,x.sd())+4;Ctor.rounding=1;len=x.d.length;if(len<3){x=taylorSeries(Ctor,2,x,x,true)}else{k=1.4*Math.sqrt(len);k=k>16?16:k|0;x=x.times(Math.pow(5,-k));x=taylorSeries(Ctor,2,x,x,true);var sinh2_x,d5=new Ctor(5),d16=new Ctor(16),d20=new Ctor(20);for(;k--;){sinh2_x=x.times(x);x=x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))))}}Ctor.precision=pr;Ctor.rounding=rm;return finalise(x,pr,rm,true)};P.hyperbolicTangent=P.tanh=function(){var pr,rm,x=this,Ctor=x.constructor;if(!x.isFinite())return new Ctor(x.s);if(x.isZero())return new Ctor(x);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+7;Ctor.rounding=1;return divide(x.sinh(),x.cosh(),Ctor.precision=pr,Ctor.rounding=rm)};P.inverseCosine=P.acos=function(){var halfPi,x=this,Ctor=x.constructor,k=x.abs().cmp(1),pr=Ctor.precision,rm=Ctor.rounding;if(k!==-1){return k===0?x.isNeg()?getPi(Ctor,pr,rm):new Ctor(0):new Ctor(NaN)}if(x.isZero())return getPi(Ctor,pr+4,rm).times(.5);Ctor.precision=pr+6;Ctor.rounding=1;x=x.asin();halfPi=getPi(Ctor,pr+4,rm).times(.5);Ctor.precision=pr;Ctor.rounding=rm;return halfPi.minus(x)};P.inverseHyperbolicCosine=P.acosh=function(){var pr,rm,x=this,Ctor=x.constructor;if(x.lte(1))return new Ctor(x.eq(1)?0:NaN);if(!x.isFinite())return new Ctor(x);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+Math.max(Math.abs(x.e),x.sd())+4;Ctor.rounding=1;external=false;x=x.times(x).minus(1).sqrt().plus(x);external=true;Ctor.precision=pr;Ctor.rounding=rm;return x.ln()};P.inverseHyperbolicSine=P.asinh=function(){var pr,rm,x=this,Ctor=x.constructor;if(!x.isFinite()||x.isZero())return new Ctor(x);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+2*Math.max(Math.abs(x.e),x.sd())+6;Ctor.rounding=1;external=false;x=x.times(x).plus(1).sqrt().plus(x);external=true;Ctor.precision=pr;Ctor.rounding=rm;return x.ln()};P.inverseHyperbolicTangent=P.atanh=function(){var pr,rm,wpr,xsd,x=this,Ctor=x.constructor;if(!x.isFinite())return new Ctor(NaN);if(x.e>=0)return new Ctor(x.abs().eq(1)?x.s/0:x.isZero()?x:NaN);pr=Ctor.precision;rm=Ctor.rounding;xsd=x.sd();if(Math.max(xsd,pr)<2*-x.e-1)return finalise(new Ctor(x),pr,rm,true);Ctor.precision=wpr=xsd-x.e;x=divide(x.plus(1),new Ctor(1).minus(x),wpr+pr,1);Ctor.precision=pr+4;Ctor.rounding=1;x=x.ln();Ctor.precision=pr;Ctor.rounding=rm;return x.times(.5)};P.inverseSine=P.asin=function(){var halfPi,k,pr,rm,x=this,Ctor=x.constructor;if(x.isZero())return new Ctor(x);k=x.abs().cmp(1);pr=Ctor.precision;rm=Ctor.rounding;if(k!==-1){if(k===0){halfPi=getPi(Ctor,pr+4,rm).times(.5);halfPi.s=x.s;return halfPi}return new Ctor(NaN)}Ctor.precision=pr+6;Ctor.rounding=1;x=x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();Ctor.precision=pr;Ctor.rounding=rm;return x.times(2)};P.inverseTangent=P.atan=function(){var i,j,k,n,px,t,r,wpr,x2,x=this,Ctor=x.constructor,pr=Ctor.precision,rm=Ctor.rounding;if(!x.isFinite()){if(!x.s)return new Ctor(NaN);if(pr+4<=PI_PRECISION){r=getPi(Ctor,pr+4,rm).times(.5);r.s=x.s;return r}}else if(x.isZero()){return new Ctor(x)}else if(x.abs().eq(1)&&pr+4<=PI_PRECISION){r=getPi(Ctor,pr+4,rm).times(.25);r.s=x.s;return r}Ctor.precision=wpr=pr+10;Ctor.rounding=1;k=Math.min(28,wpr/LOG_BASE+2|0);for(i=k;i;--i)x=x.div(x.times(x).plus(1).sqrt().plus(1));external=false;j=Math.ceil(wpr/LOG_BASE);n=1;x2=x.times(x);r=new Ctor(x);px=x;for(;i!==-1;){px=px.times(x2);t=r.minus(px.div(n+=2));px=px.times(x2);r=t.plus(px.div(n+=2));if(r.d[j]!==void 0)for(i=j;r.d[i]===t.d[i]&&i--;);}if(k)r=r.times(2<<k-1);external=true;return finalise(r,Ctor.precision=pr,Ctor.rounding=rm,true)};P.isFinite=function(){return!!this.d};P.isInteger=P.isInt=function(){return!!this.d&&mathfloor(this.e/LOG_BASE)>this.d.length-2};P.isNaN=function(){return!this.s};P.isNegative=P.isNeg=function(){return this.s<0};P.isPositive=P.isPos=function(){return this.s>0};P.isZero=function(){return!!this.d&&this.d[0]===0};P.lessThan=P.lt=function(y){return this.cmp(y)<0};P.lessThanOrEqualTo=P.lte=function(y){return this.cmp(y)<1};P.logarithm=P.log=function(base){var isBase10,d,denominator,k,inf,num,sd,r,arg=this,Ctor=arg.constructor,pr=Ctor.precision,rm=Ctor.rounding,guard=5;if(base==null){base=new Ctor(10);isBase10=true}else{base=new Ctor(base);d=base.d;if(base.s<0||!d||!d[0]||base.eq(1))return new Ctor(NaN);isBase10=base.eq(10)}d=arg.d;if(arg.s<0||!d||!d[0]||arg.eq(1)){return new Ctor(d&&!d[0]?-1/0:arg.s!=1?NaN:d?0:1/0)}if(isBase10){if(d.length>1){inf=true}else{for(k=d[0];k%10===0;)k/=10;inf=k!==1}}external=false;sd=pr+guard;num=naturalLogarithm(arg,sd);denominator=isBase10?getLn10(Ctor,sd+10):naturalLogarithm(base,sd);r=divide(num,denominator,sd,1);if(checkRoundingDigits(r.d,k=pr,rm)){do{sd+=10;num=naturalLogarithm(arg,sd);denominator=isBase10?getLn10(Ctor,sd+10):naturalLogarithm(base,sd);r=divide(num,denominator,sd,1);if(!inf){if(+digitsToString(r.d).slice(k+1,k+15)+1==1e14){r=finalise(r,pr+1,0)}break}}while(checkRoundingDigits(r.d,k+=10,rm))}external=true;return finalise(r,pr,rm)};P.minus=P.sub=function(y){var d,e,i,j,k,len,pr,rm,xd,xe,xLTy,yd,x=this,Ctor=x.constructor;y=new Ctor(y);if(!x.d||!y.d){if(!x.s||!y.s)y=new Ctor(NaN);else if(x.d)y.s=-y.s;else y=new Ctor(y.d||x.s!==y.s?x:NaN);return y}if(x.s!=y.s){y.s=-y.s;return x.plus(y)}xd=x.d;yd=y.d;pr=Ctor.precision;rm=Ctor.rounding;if(!xd[0]||!yd[0]){if(yd[0])y.s=-y.s;else if(xd[0])y=new Ctor(x);else return new Ctor(rm===3?-0:0);return external?finalise(y,pr,rm):y}e=mathfloor(y.e/LOG_BASE);xe=mathfloor(x.e/LOG_BASE);xd=xd.slice();k=xe-e;if(k){xLTy=k<0;if(xLTy){d=xd;k=-k;len=yd.length}else{d=yd;e=xe;len=xd.length}i=Math.max(Math.ceil(pr/LOG_BASE),len)+2;if(k>i){k=i;d.length=1}d.reverse();for(i=k;i--;)d.push(0);d.reverse()}else{i=xd.length;len=yd.length;xLTy=i<len;if(xLTy)len=i;for(i=0;i<len;i++){if(xd[i]!=yd[i]){xLTy=xd[i]<yd[i];break}}k=0}if(xLTy){d=xd;xd=yd;yd=d;y.s=-y.s}len=xd.length;for(i=yd.length-len;i>0;--i)xd[len++]=0;for(i=yd.length;i>k;){if(xd[--i]<yd[i]){for(j=i;j&&xd[--j]===0;)xd[j]=BASE-1;--xd[j];xd[i]+=BASE}xd[i]-=yd[i]}for(;xd[--len]===0;)xd.pop();for(;xd[0]===0;xd.shift())--e;if(!xd[0])return new Ctor(rm===3?-0:0);y.d=xd;y.e=getBase10Exponent(xd,e);return external?finalise(y,pr,rm):y};P.modulo=P.mod=function(y){var q,x=this,Ctor=x.constructor;y=new Ctor(y);if(!x.d||!y.s||y.d&&!y.d[0])return new Ctor(NaN);if(!y.d||x.d&&!x.d[0]){return finalise(new Ctor(x),Ctor.precision,Ctor.rounding)}external=false;if(Ctor.modulo==9){q=divide(x,y.abs(),0,3,1);q.s*=y.s}else{q=divide(x,y,0,Ctor.modulo,1)}q=q.times(y);external=true;return x.minus(q)};P.naturalExponential=P.exp=function(){return naturalExponential(this)};P.naturalLogarithm=P.ln=function(){return naturalLogarithm(this)};P.negated=P.neg=function(){var x=new this.constructor(this);x.s=-x.s;return finalise(x)};P.plus=P.add=function(y){var carry,d,e,i,k,len,pr,rm,xd,yd,x=this,Ctor=x.constructor;y=new Ctor(y);if(!x.d||!y.d){if(!x.s||!y.s)y=new Ctor(NaN);else if(!x.d)y=new Ctor(y.d||x.s===y.s?x:NaN);return y}if(x.s!=y.s){y.s=-y.s;return x.minus(y)}xd=x.d;yd=y.d;pr=Ctor.precision;rm=Ctor.rounding;if(!xd[0]||!yd[0]){if(!yd[0])y=new Ctor(x);return external?finalise(y,pr,rm):y}k=mathfloor(x.e/LOG_BASE);e=mathfloor(y.e/LOG_BASE);xd=xd.slice();i=k-e;if(i){if(i<0){d=xd;i=-i;len=yd.length}else{d=yd;e=k;len=xd.length}k=Math.ceil(pr/LOG_BASE);len=k>len?k+1:len+1;if(i>len){i=len;d.length=1}d.reverse();for(;i--;)d.push(0);d.reverse()}len=xd.length;i=yd.length;if(len-i<0){i=len;d=yd;yd=xd;xd=d}for(carry=0;i;){carry=(xd[--i]=xd[i]+yd[i]+carry)/BASE|0;xd[i]%=BASE}if(carry){xd.unshift(carry);++e}for(len=xd.length;xd[--len]==0;)xd.pop();y.d=xd;y.e=getBase10Exponent(xd,e);return external?finalise(y,pr,rm):y};P.precision=P.sd=function(z){var k,x=this;if(z!==void 0&&z!==!!z&&z!==1&&z!==0)throw Error(invalidArgument+z);if(x.d){k=getPrecision(x.d);if(z&&x.e+1>k)k=x.e+1}else{k=NaN}return k};P.round=function(){var x=this,Ctor=x.constructor;return finalise(new Ctor(x),x.e+1,Ctor.rounding)};P.sine=P.sin=function(){var pr,rm,x=this,Ctor=x.constructor;if(!x.isFinite())return new Ctor(NaN);if(x.isZero())return new Ctor(x);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+Math.max(x.e,x.sd())+LOG_BASE;Ctor.rounding=1;x=sine(Ctor,toLessThanHalfPi(Ctor,x));Ctor.precision=pr;Ctor.rounding=rm;return finalise(quadrant>2?x.neg():x,pr,rm,true)};P.squareRoot=P.sqrt=function(){var m,n,sd,r,rep,t,x=this,d=x.d,e=x.e,s=x.s,Ctor=x.constructor;if(s!==1||!d||!d[0]){return new Ctor(!s||s<0&&(!d||d[0])?NaN:d?x:1/0)}external=false;s=Math.sqrt(+x);if(s==0||s==1/0){n=digitsToString(d);if((n.length+e)%2==0)n+="0";s=Math.sqrt(n);e=mathfloor((e+1)/2)-(e<0||e%2);if(s==1/0){n="1e"+e}else{n=s.toExponential();n=n.slice(0,n.indexOf("e")+1)+e}r=new Ctor(n)}else{r=new Ctor(s.toString())}sd=(e=Ctor.precision)+3;for(;;){t=r;r=t.plus(divide(x,t,sd+2,1)).times(.5);if(digitsToString(t.d).slice(0,sd)===(n=digitsToString(r.d)).slice(0,sd)){n=n.slice(sd-3,sd+1);if(n=="9999"||!rep&&n=="4999"){if(!rep){finalise(t,e+1,0);if(t.times(t).eq(x)){r=t;break}}sd+=4;rep=1}else{if(!+n||!+n.slice(1)&&n.charAt(0)=="5"){finalise(r,e+1,1);m=!r.times(r).eq(x)}break}}}external=true;return finalise(r,e,Ctor.rounding,m)};P.tangent=P.tan=function(){var pr,rm,x=this,Ctor=x.constructor;if(!x.isFinite())return new Ctor(NaN);if(x.isZero())return new Ctor(x);pr=Ctor.precision;rm=Ctor.rounding;Ctor.precision=pr+10;Ctor.rounding=1;x=x.sin();x.s=1;x=divide(x,new Ctor(1).minus(x.times(x)).sqrt(),pr+10,0);Ctor.precision=pr;Ctor.rounding=rm;return finalise(quadrant==2||quadrant==4?x.neg():x,pr,rm,true)};P.times=P.mul=function(y){var carry,e,i,k,r,rL,t,xdL,ydL,x=this,Ctor=x.constructor,xd=x.d,yd=(y=new Ctor(y)).d;y.s*=x.s;if(!xd||!xd[0]||!yd||!yd[0]){return new Ctor(!y.s||xd&&!xd[0]&&!yd||yd&&!yd[0]&&!xd?NaN:!xd||!yd?y.s/0:y.s*0)}e=mathfloor(x.e/LOG_BASE)+mathfloor(y.e/LOG_BASE);xdL=xd.length;ydL=yd.length;if(xdL<ydL){r=xd;xd=yd;yd=r;rL=xdL;xdL=ydL;ydL=rL}r=[];rL=xdL+ydL;for(i=rL;i--;)r.push(0);for(i=ydL;--i>=0;){carry=0;for(k=xdL+i;k>i;){t=r[k]+yd[i]*xd[k-i-1]+carry;r[k--]=t%BASE|0;carry=t/BASE|0}r[k]=(r[k]+carry)%BASE|0}for(;!r[--rL];)r.pop();if(carry)++e;else r.shift();for(i=r.length;!r[--i];)r.pop();y.d=r;y.e=getBase10Exponent(r,e);return external?finalise(y,Ctor.precision,Ctor.rounding):y};P.toBinary=function(sd,rm){return toStringBinary(this,2,sd,rm)};P.toDecimalPlaces=P.toDP=function(dp,rm){var x=this,Ctor=x.constructor;x=new Ctor(x);if(dp===void 0)return x;checkInt32(dp,0,MAX_DIGITS);if(rm===void 0)rm=Ctor.rounding;else checkInt32(rm,0,8);return finalise(x,dp+x.e+1,rm)};P.toExponential=function(dp,rm){var str,x=this,Ctor=x.constructor;if(dp===void 0){str=finiteToString(x,true)}else{checkInt32(dp,0,MAX_DIGITS);if(rm===void 0)rm=Ctor.rounding;else checkInt32(rm,0,8);x=finalise(new Ctor(x),dp+1,rm);str=finiteToString(x,true,dp+1)}return x.isNeg()&&!x.isZero()?"-"+str:str};P.toFixed=function(dp,rm){var str,y,x=this,Ctor=x.constructor;if(dp===void 0){str=finiteToString(x)}else{checkInt32(dp,0,MAX_DIGITS);if(rm===void 0)rm=Ctor.rounding;else checkInt32(rm,0,8);y=finalise(new Ctor(x),dp+x.e+1,rm);str=finiteToString(y,false,dp+y.e+1)}return x.isNeg()&&!x.isZero()?"-"+str:str};P.toFraction=function(maxD){var d,d0,d1,d2,e,k,n,n0,n1,pr,q,r,x=this,xd=x.d,Ctor=x.constructor;if(!xd)return new Ctor(x);n1=d0=new Ctor(1);d1=n0=new Ctor(0);d=new Ctor(d1);e=d.e=getPrecision(xd)-x.e-1;k=e%LOG_BASE;d.d[0]=mathpow(10,k<0?LOG_BASE+k:k);if(maxD==null){maxD=e>0?d:n1}else{n=new Ctor(maxD);if(!n.isInt()||n.lt(n1))throw Error(invalidArgument+n);maxD=n.gt(d)?e>0?d:n1:n}external=false;n=new Ctor(digitsToString(xd));pr=Ctor.precision;Ctor.precision=e=xd.length*LOG_BASE*2;for(;;){q=divide(n,d,0,1,1);d2=d0.plus(q.times(d1));if(d2.cmp(maxD)==1)break;d0=d1;d1=d2;d2=n1;n1=n0.plus(q.times(d2));n0=d2;d2=d;d=n.minus(q.times(d2));n=d2}d2=divide(maxD.minus(d0),d1,0,1,1);n0=n0.plus(d2.times(n1));d0=d0.plus(d2.times(d1));n0.s=n1.s=x.s;r=divide(n1,d1,e,1).minus(x).abs().cmp(divide(n0,d0,e,1).minus(x).abs())<1?[n1,d1]:[n0,d0];Ctor.precision=pr;external=true;return r};P.toHexadecimal=P.toHex=function(sd,rm){return toStringBinary(this,16,sd,rm)};P.toJSON=function(){var arr,e,i,k,len,n,r,str,x=this,isNeg=x.s<0;if(!x.d)return NUMERALS.charAt(x.s?isNeg?82:83:84);e=x.e;if(x.d.length===1&&e<4&&e>=0){n=x.d[0];if(n<2857){if(n<41)return NUMERALS.charAt(isNeg?n+41:n);n-=41;if(isNeg)n+=2816;k=n/88|0;return NUMERALS.charAt(k)+NUMERALS.charAt(n-k*88)}}str=digitsToString(x.d);r="";if(!isNeg&&e<=8&&e>=-7){k=64+e+7}else if(isNeg&&e<=4&&e>=-3){k=64+16+e+3}else if(str.length===e+1){k=32*isNeg}else{k=32*isNeg+16*(e<0);e=Math.abs(e);if(e<88){k+=1;r=NUMERALS.charAt(e)}else if(e<7744){k+=2;n=e/88|0;r=NUMERALS.charAt(n)+NUMERALS.charAt(e-n*88)}else{arr=convertBase(String(e),10,88);len=arr.length;k+=len;for(i=0;i<len;i++)r+=NUMERALS.charAt(arr[i])}}r=NUMERALS.charAt(k)+r;arr=convertBase(str,10,88);len=arr.length;for(i=0;i<len;i++)r+=NUMERALS.charAt(arr[i]);return r};P.toNearest=function(y,rm){var x=this,Ctor=x.constructor;x=new Ctor(x);if(y==null){if(!x.d)return x;y=new Ctor(1);rm=Ctor.rounding}else{y=new Ctor(y);if(rm!==void 0)checkInt32(rm,0,8);if(!x.d)return y.s?x:y;if(!y.d){if(y.s)y.s=x.s;return y}}if(y.d[0]){external=false;if(rm<4)rm=[4,5,7,8][rm];x=divide(x,y,0,rm,1).times(y);external=true;finalise(x)}else{y.s=x.s;x=y}return x};P.toNumber=function(){return+this};P.toOctal=function(sd,rm){return toStringBinary(this,8,sd,rm)};P.toPower=P.pow=function(y){var e,k,pr,r,rm,sign,yIsInt,x=this,Ctor=x.constructor,yn=+(y=new Ctor(y));if(!x.d||!y.d||!x.d[0]||!y.d[0])return new Ctor(mathpow(+x,yn));x=new Ctor(x);if(x.eq(1))return x;pr=Ctor.precision;rm=Ctor.rounding;if(y.eq(1))return finalise(x,pr,rm);e=mathfloor(y.e/LOG_BASE);k=y.d.length-1;yIsInt=e>=k;sign=x.s;if(!yIsInt){if(sign<0)return new Ctor(NaN)}else if((k=yn<0?-yn:yn)<=MAX_SAFE_INTEGER){r=intPow(Ctor,x,k,pr);return y.s<0?new Ctor(1).div(r):finalise(r,pr,rm)}sign=sign<0&&y.d[Math.max(e,k)]&1?-1:1;k=mathpow(+x,yn);e=k==0||!isFinite(k)?mathfloor(yn*(Math.log("0."+digitsToString(x.d))/Math.LN10+x.e+1)):new Ctor(k+"").e;if(e>Ctor.maxE+1||e<Ctor.minE-1)return new Ctor(e>0?sign/0:0);external=false;Ctor.rounding=x.s=1;k=Math.min(12,(e+"").length);r=naturalExponential(y.times(naturalLogarithm(x,pr+k)),pr);r=finalise(r,pr+5,1);if(checkRoundingDigits(r.d,pr,rm)){e=pr+10;r=finalise(naturalExponential(y.times(naturalLogarithm(x,e+k)),e),e+5,1);if(+digitsToString(r.d).slice(pr+1,pr+15)+1==1e14){r=finalise(r,pr+1,0)}}r.s=sign;external=true;Ctor.rounding=rm;return finalise(r,pr,rm)};P.toPrecision=function(sd,rm){var str,x=this,Ctor=x.constructor;if(sd===void 0){str=finiteToString(x,x.e<=Ctor.toExpNeg||x.e>=Ctor.toExpPos)}else{checkInt32(sd,1,MAX_DIGITS);if(rm===void 0)rm=Ctor.rounding;else checkInt32(rm,0,8);x=finalise(new Ctor(x),sd,rm);str=finiteToString(x,sd<=x.e||x.e<=Ctor.toExpNeg,sd)}return x.isNeg()&&!x.isZero()?"-"+str:str};P.toSignificantDigits=P.toSD=function(sd,rm){var x=this,Ctor=x.constructor;if(sd===void 0){sd=Ctor.precision;rm=Ctor.rounding}else{checkInt32(sd,1,MAX_DIGITS);if(rm===void 0)rm=Ctor.rounding;else checkInt32(rm,0,8)}return finalise(new Ctor(x),sd,rm)};P.toString=function(){var x=this,Ctor=x.constructor,str=finiteToString(x,x.e<=Ctor.toExpNeg||x.e>=Ctor.toExpPos);return x.isNeg()&&!x.isZero()?"-"+str:str};P.truncated=P.trunc=function(){return finalise(new this.constructor(this),this.e+1,1)};P.valueOf=function(){var x=this,Ctor=x.constructor,str=finiteToString(x,x.e<=Ctor.toExpNeg||x.e>=Ctor.toExpPos);return x.isNeg()?"-"+str:str};function digitsToString(d){var i,k,ws,indexOfLastWord=d.length-1,str="",w=d[0];if(indexOfLastWord>0){str+=w;for(i=1;i<indexOfLastWord;i++){ws=d[i]+"";k=LOG_BASE-ws.length;if(k)str+=getZeroString(k);str+=ws}w=d[i];ws=w+"";k=LOG_BASE-ws.length;if(k)str+=getZeroString(k)}else if(w===0){return"0"}for(;w%10===0;)w/=10;return str+w}function checkInt32(i,min,max){if(i!==~~i||i<min||i>max){throw Error(invalidArgument+i)}}function checkRoundingDigits(d,i,rm,repeating){var di,k,r,rd;for(k=d[0];k>=10;k/=10)--i;if(--i<0){i+=LOG_BASE;di=0}else{di=Math.ceil((i+1)/LOG_BASE);i%=LOG_BASE}k=mathpow(10,LOG_BASE-i);rd=d[di]%k|0;if(repeating==null){if(i<3){if(i==0)rd=rd/100|0;else if(i==1)rd=rd/10|0;r=rm<4&&rd==99999||rm>3&&rd==49999||rd==5e4||rd==0}else{r=(rm<4&&rd+1==k||rm>3&&rd+1==k/2)&&(d[di+1]/k/100|0)==mathpow(10,i-2)-1||(rd==k/2||rd==0)&&(d[di+1]/k/100|0)==0}}else{if(i<4){if(i==0)rd=rd/1e3|0;else if(i==1)rd=rd/100|0;else if(i==2)rd=rd/10|0;r=(repeating||rm<4)&&rd==9999||!repeating&&rm>3&&rd==4999}else{r=((repeating||rm<4)&&rd+1==k||!repeating&&rm>3&&rd+1==k/2)&&(d[di+1]/k/1e3|0)==mathpow(10,i-3)-1}}return r}function convertBase(str,baseIn,baseOut){var j,arr=[0],arrL,i=0,strL=str.length;for(;i<strL;){for(arrL=arr.length;arrL--;)arr[arrL]*=baseIn;arr[0]+=NUMERALS.indexOf(str.charAt(i++));for(j=0;j<arr.length;j++){if(arr[j]>baseOut-1){if(arr[j+1]===void 0)arr[j+1]=0;arr[j+1]+=arr[j]/baseOut|0;arr[j]%=baseOut}}}return arr.reverse()}function cosine(Ctor,x){var k,y,len=x.d.length;if(len<32){k=Math.ceil(len/3);y=Math.pow(4,-k).toString()}else{k=16;y="2.3283064365386962890625e-10"}Ctor.precision+=k;x=taylorSeries(Ctor,1,x.times(y),new Ctor(1));for(var i=k;i--;){var cos2x=x.times(x);x=cos2x.times(cos2x).minus(cos2x).times(8).plus(1)}Ctor.precision-=k;return x}var divide=function(){function multiplyInteger(x,k,base){var temp,carry=0,i=x.length;for(x=x.slice();i--;){temp=x[i]*k+carry;x[i]=temp%base|0;carry=temp/base|0}if(carry)x.unshift(carry);return x}function compare(a,b,aL,bL){var i,r;if(aL!=bL){r=aL>bL?1:-1}else{for(i=r=0;i<aL;i++){if(a[i]!=b[i]){r=a[i]>b[i]?1:-1;break}}}return r}function subtract(a,b,aL,base){var i=0;for(;aL--;){a[aL]-=i;i=a[aL]<b[aL]?1:0;a[aL]=i*base+a[aL]-b[aL]}for(;!a[0]&&a.length>1;)a.shift()}return function(x,y,pr,rm,dp,base){var cmp,e,i,k,logBase,more,prod,prodL,q,qd,rem,remL,rem0,sd,t,xi,xL,yd0,yL,yz,Ctor=x.constructor,sign=x.s==y.s?1:-1,xd=x.d,yd=y.d;if(!xd||!xd[0]||!yd||!yd[0]){return new Ctor(!x.s||!y.s||(xd?yd&&xd[0]==yd[0]:!yd)?NaN:xd&&xd[0]==0||!yd?sign*0:sign/0)}if(base){logBase=1;e=x.e-y.e}else{base=BASE;logBase=LOG_BASE;e=mathfloor(x.e/logBase)-mathfloor(y.e/logBase)}yL=yd.length;xL=xd.length;q=new Ctor(sign);qd=q.d=[];for(i=0;yd[i]==(xd[i]||0);i++);if(yd[i]>(xd[i]||0))e--;if(pr==null){sd=pr=Ctor.precision;rm=Ctor.rounding}else if(dp){sd=pr+(x.e-y.e)+1}else{sd=pr}if(sd<0){qd.push(1);more=true}else{sd=sd/logBase+2|0;i=0;if(yL==1){k=0;yd=yd[0];sd++;for(;(i<xL||k)&&sd--;i++){t=k*base+(xd[i]||0);qd[i]=t/yd|0;k=t%yd|0}more=k||i<xL}else{k=base/(yd[0]+1)|0;if(k>1){yd=multiplyInteger(yd,k,base);xd=multiplyInteger(xd,k,base);yL=yd.length;xL=xd.length}xi=yL;rem=xd.slice(0,yL);remL=rem.length;for(;remL<yL;)rem[remL++]=0;yz=yd.slice();yz.unshift(0);yd0=yd[0];if(yd[1]>=base/2)++yd0;do{k=0;cmp=compare(yd,rem,yL,remL);if(cmp<0){rem0=rem[0];if(yL!=remL)rem0=rem0*base+(rem[1]||0);k=rem0/yd0|0;if(k>1){if(k>=base)k=base-1;prod=multiplyInteger(yd,k,base);prodL=prod.length;remL=rem.length;cmp=compare(prod,rem,prodL,remL);if(cmp==1){k--;subtract(prod,yL<prodL?yz:yd,prodL,base)}}else{if(k==0)cmp=k=1;prod=yd.slice()}prodL=prod.length;if(prodL<remL)prod.unshift(0);subtract(rem,prod,remL,base);if(cmp==-1){remL=rem.length;cmp=compare(yd,rem,yL,remL);if(cmp<1){k++;subtract(rem,yL<remL?yz:yd,remL,base)}}remL=rem.length}else if(cmp===0){k++;rem=[0]}qd[i++]=k;if(cmp&&rem[0]){rem[remL++]=xd[xi]||0}else{rem=[xd[xi]];remL=1}}while((xi++<xL||rem[0]!==void 0)&&sd--);more=rem[0]!==void 0}if(!qd[0])qd.shift()}if(logBase==1){q.e=e;inexact=more}else{for(i=1,k=qd[0];k>=10;k/=10)i++;q.e=i+e*logBase-1;finalise(q,dp?pr+q.e+1:pr,rm,more)}return q}}();function finalise(x,sd,rm,isTruncated){var digits,i,j,k,rd,roundUp,w,xd,xdi,Ctor=x.constructor;out:if(sd!=null){xd=x.d;if(!xd)return x;for(digits=1,k=xd[0];k>=10;k/=10)digits++;i=sd-digits;if(i<0){i+=LOG_BASE;j=sd;w=xd[xdi=0];rd=w/mathpow(10,digits-j-1)%10|0}else{xdi=Math.ceil((i+1)/LOG_BASE);k=xd.length;if(xdi>=k){if(isTruncated){for(;k++<=xdi;)xd.push(0);w=rd=0;digits=1;i%=LOG_BASE;j=i-LOG_BASE+1}else{break out}}else{w=k=xd[xdi];for(digits=1;k>=10;k/=10)digits++;i%=LOG_BASE;j=i-LOG_BASE+digits;rd=j<0?0:w/mathpow(10,digits-j-1)%10|0}}isTruncated=isTruncated||sd<0||xd[xdi+1]!==void 0||(j<0?w:w%mathpow(10,digits-j-1));roundUp=rm<4?(rd||isTruncated)&&(rm==0||rm==(x.s<0?3:2)):rd>5||rd==5&&(rm==4||isTruncated||rm==6&&(i>0?j>0?w/mathpow(10,digits-j):0:xd[xdi-1])%10&1||rm==(x.s<0?8:7));if(sd<1||!xd[0]){xd.length=0;if(roundUp){sd-=x.e+1;xd[0]=mathpow(10,(LOG_BASE-sd%LOG_BASE)%LOG_BASE);x.e=-sd||0}else{xd[0]=x.e=0}return x}if(i==0){xd.length=xdi;k=1;xdi--}else{xd.length=xdi+1;k=mathpow(10,LOG_BASE-i);xd[xdi]=j>0?(w/mathpow(10,digits-j)%mathpow(10,j)|0)*k:0}if(roundUp){for(;;){if(xdi==0){for(i=1,j=xd[0];j>=10;j/=10)i++;j=xd[0]+=k;for(k=1;j>=10;j/=10)k++;if(i!=k){x.e++;if(xd[0]==BASE)xd[0]=1}break}else{xd[xdi]+=k;if(xd[xdi]!=BASE)break;xd[xdi--]=0;k=1}}}for(i=xd.length;xd[--i]===0;)xd.pop()}if(external){if(x.e>Ctor.maxE){x.d=null;x.e=NaN}else if(x.e<Ctor.minE){x.e=0;x.d=[0]}}return x}function finiteToString(x,isExp,sd){if(!x.isFinite())return nonFiniteToString(x);var k,e=x.e,str=digitsToString(x.d),len=str.length;if(isExp){if(sd&&(k=sd-len)>0){str=str.charAt(0)+"."+str.slice(1)+getZeroString(k)}else if(len>1){str=str.charAt(0)+"."+str.slice(1)}str=str+(x.e<0?"e":"e+")+x.e}else if(e<0){str="0."+getZeroString(-e-1)+str;if(sd&&(k=sd-len)>0)str+=getZeroString(k)}else if(e>=len){str+=getZeroString(e+1-len);if(sd&&(k=sd-e-1)>0)str=str+"."+getZeroString(k)}else{if((k=e+1)<len)str=str.slice(0,k)+"."+str.slice(k);if(sd&&(k=sd-len)>0){if(e+1===len)str+=".";str+=getZeroString(k)}}return str}function getBase10Exponent(digits,e){for(var i=1,w=digits[0];w>=10;w/=10)i++;return i+e*LOG_BASE-1}function getLn10(Ctor,sd,pr){if(sd>LN10_PRECISION){external=true;if(pr)Ctor.precision=pr;throw Error(precisionLimitExceeded)}return finalise(new Ctor(LN10),sd,1,true)}function getPi(Ctor,sd,rm){if(sd>PI_PRECISION)throw Error(precisionLimitExceeded);return finalise(new Ctor(PI),sd,rm,true)}function getPrecision(digits){var w=digits.length-1,len=w*LOG_BASE+1;w=digits[w];if(w){for(;w%10==0;w/=10)len--;for(w=digits[0];w>=10;w/=10)len++}return len}function getZeroString(k){var zs="";for(;k--;)zs+="0";return zs}function intPow(Ctor,x,n,pr){var isTruncated,r=new Ctor(1),k=Math.ceil(pr/LOG_BASE+4);external=false;for(;;){if(n%2){r=r.times(x);if(truncate(r.d,k))isTruncated=true}n=mathfloor(n/2);if(n===0){n=r.d.length-1;if(isTruncated&&r.d[n]===0)++r.d[n];break}x=x.times(x);truncate(x.d,k)}external=true;return r}function isOdd(n){return n.d[n.d.length-1]&1}function maxOrMin(Ctor,args,ltgt){var y,x=new Ctor(args[0]),i=0;for(;++i<args.length;){y=new Ctor(args[i]);if(!y.s){x=y;break}else if(x[ltgt](y)){x=y}}return x}function naturalExponential(x,sd){var denominator,guard,j,pow,sum,t,wpr,rep=0,i=0,k=0,Ctor=x.constructor,rm=Ctor.rounding,pr=Ctor.precision;if(!x.d||!x.d[0]||x.e>17){return new Ctor(x.d?!x.d[0]?1:x.s<0?0:1/0:x.s?x.s<0?0:x:0/0)}if(sd==null){external=false;wpr=pr}else{wpr=sd}t=new Ctor(.03125);while(x.e>-2){x=x.times(t);k+=5}guard=Math.log(mathpow(2,k))/Math.LN10*2+5|0;wpr+=guard;denominator=pow=sum=new Ctor(1);Ctor.precision=wpr;for(;;){pow=finalise(pow.times(x),wpr,1);denominator=denominator.times(++i);t=sum.plus(divide(pow,denominator,wpr,1));if(digitsToString(t.d).slice(0,wpr)===digitsToString(sum.d).slice(0,wpr)){j=k;while(j--)sum=finalise(sum.times(sum),wpr,1);if(sd==null){if(rep<3&&checkRoundingDigits(sum.d,wpr-guard,rm,rep)){Ctor.precision=wpr+=10;denominator=pow=t=new Ctor(1);i=0;rep++}else{return finalise(sum,Ctor.precision=pr,rm,external=true)}}else{Ctor.precision=pr;return sum}}sum=t}}function naturalLogarithm(y,sd){var c,c0,denominator,e,numerator,rep,sum,t,wpr,x1,x2,n=1,guard=10,x=y,xd=x.d,Ctor=x.constructor,rm=Ctor.rounding,pr=Ctor.precision;if(x.s<0||!xd||!xd[0]||!x.e&&xd[0]==1&&xd.length==1){return new Ctor(xd&&!xd[0]?-1/0:x.s!=1?NaN:xd?0:x)}if(sd==null){external=false;wpr=pr}else{wpr=sd}Ctor.precision=wpr+=guard;c=digitsToString(xd);c0=c.charAt(0);if(Math.abs(e=x.e)<15e14){while(c0<7&&c0!=1||c0==1&&c.charAt(1)>3){x=x.times(y);c=digitsToString(x.d);c0=c.charAt(0);n++}e=x.e;if(c0>1){x=new Ctor("0."+c);e++}else{x=new Ctor(c0+"."+c.slice(1))}}else{t=getLn10(Ctor,wpr+2,pr).times(e+"");x=naturalLogarithm(new Ctor(c0+"."+c.slice(1)),wpr-guard).plus(t);Ctor.precision=pr;return sd==null?finalise(x,pr,rm,external=true):x}x1=x;sum=numerator=x=divide(x.minus(1),x.plus(1),wpr,1);x2=finalise(x.times(x),wpr,1);denominator=3;for(;;){numerator=finalise(numerator.times(x2),wpr,1);t=sum.plus(divide(numerator,new Ctor(denominator),wpr,1));if(digitsToString(t.d).slice(0,wpr)===digitsToString(sum.d).slice(0,wpr)){sum=sum.times(2);if(e!==0)sum=sum.plus(getLn10(Ctor,wpr+2,pr).times(e+""));sum=divide(sum,new Ctor(n),wpr,1);if(sd==null){if(checkRoundingDigits(sum.d,wpr-guard,rm,rep)){Ctor.precision=wpr+=guard;t=numerator=x=divide(x1.minus(1),x1.plus(1),wpr,1);x2=finalise(x.times(x),wpr,1);denominator=rep=1}else{return finalise(sum,Ctor.precision=pr,rm,external=true)}}else{Ctor.precision=pr;return sum}}sum=t;denominator+=2}}function nonFiniteToString(x){return String(x.s*x.s/0)}function parseDecimal(x,str){var e,i,len;if((e=str.indexOf("."))>-1)str=str.replace(".","");if((i=str.search(/e/i))>0){if(e<0)e=i;e+=+str.slice(i+1);str=str.substring(0,i)}else if(e<0){e=str.length}for(i=0;str.charCodeAt(i)===48;i++);for(len=str.length;str.charCodeAt(len-1)===48;--len);str=str.slice(i,len);if(str){len-=i;x.e=e=e-i-1;x.d=[];i=(e+1)%LOG_BASE;if(e<0)i+=LOG_BASE;if(i<len){if(i)x.d.push(+str.slice(0,i));for(len-=LOG_BASE;i<len;)x.d.push(+str.slice(i,i+=LOG_BASE));str=str.slice(i);i=LOG_BASE-str.length}else{i-=len}for(;i--;)str+="0";x.d.push(+str);if(external){if(x.e>x.constructor.maxE){x.d=null;x.e=NaN}else if(x.e<x.constructor.minE){x.e=0;x.d=[0]}}}else{x.e=0;x.d=[0]}return x}function parseOther(x,str){var base,Ctor,divisor,i,isFloat,len,p,xd,xe;if(str==="Infinity"||str==="NaN"){if(!+str)x.s=NaN;x.e=NaN;x.d=null;return x}if(isHex.test(str)){base=16;str=str.toLowerCase()}else if(isBinary.test(str)){base=2}else if(isOctal.test(str)){base=8}else{throw Error(invalidArgument+str)}i=str.search(/p/i);if(i>0){p=+str.slice(i+1);str=str.substring(2,i)}else{str=str.slice(2)}i=str.indexOf(".");isFloat=i>=0;Ctor=x.constructor;if(isFloat){str=str.replace(".","");len=str.length;i=len-i;divisor=intPow(Ctor,new Ctor(base),i,i*2)}xd=convertBase(str,base,BASE);xe=xd.length-1;for(i=xe;xd[i]===0;--i)xd.pop();if(i<0)return new Ctor(x.s*0);x.e=getBase10Exponent(xd,xe);x.d=xd;external=false;if(isFloat)x=divide(x,divisor,len*4);if(p)x=x.times(Math.abs(p)<54?Math.pow(2,p):Decimal.pow(2,p));external=true;return x}function sine(Ctor,x){var k,len=x.d.length;if(len<3)return taylorSeries(Ctor,2,x,x);k=1.4*Math.sqrt(len);k=k>16?16:k|0;x=x.times(Math.pow(5,-k));x=taylorSeries(Ctor,2,x,x);var sin2_x,d5=new Ctor(5),d16=new Ctor(16),d20=new Ctor(20);for(;k--;){sin2_x=x.times(x);x=x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))))}return x}function taylorSeries(Ctor,n,x,y,isHyperbolic){var j,t,u,x2,i=1,pr=Ctor.precision,k=Math.ceil(pr/LOG_BASE);external=false;x2=x.times(x);u=new Ctor(y);for(;;){t=divide(u.times(x2),new Ctor(n++*n++),pr,1);u=isHyperbolic?y.plus(t):y.minus(t);y=divide(t.times(x2),new Ctor(n++*n++),pr,1);t=u.plus(y);if(t.d[k]!==void 0){for(j=k;t.d[j]===u.d[j]&&j--;);if(j==-1)break}j=u;u=y;y=t;t=j;i++}external=true;t.d.length=k+1;return t}function toLessThanHalfPi(Ctor,x){var t,isNeg=x.s<0,pi=getPi(Ctor,Ctor.precision,1),halfPi=pi.times(.5);x=x.abs();if(x.lte(halfPi)){quadrant=isNeg?4:1;return x}t=x.divToInt(pi);if(t.isZero()){quadrant=isNeg?3:2}else{x=x.minus(t.times(pi));if(x.lte(halfPi)){quadrant=isOdd(t)?isNeg?2:3:isNeg?4:1;return x}quadrant=isOdd(t)?isNeg?1:4:isNeg?3:2}return x.minus(pi).abs()}function toStringBinary(x,baseOut,sd,rm){var base,e,i,k,len,roundUp,str,xd,y,Ctor=x.constructor,isExp=sd!==void 0;if(isExp){checkInt32(sd,1,MAX_DIGITS);if(rm===void 0)rm=Ctor.rounding;else checkInt32(rm,0,8)}else{sd=Ctor.precision;rm=Ctor.rounding}if(!x.isFinite()){
str=nonFiniteToString(x)}else{str=finiteToString(x);i=str.indexOf(".");if(isExp){base=2;if(baseOut==16){sd=sd*4-3}else if(baseOut==8){sd=sd*3-2}}else{base=baseOut}if(i>=0){str=str.replace(".","");y=new Ctor(1);y.e=str.length-i;y.d=convertBase(finiteToString(y),10,base);y.e=y.d.length}xd=convertBase(str,10,base);e=len=xd.length;for(;xd[--len]==0;)xd.pop();if(!xd[0]){str=isExp?"0p+0":"0"}else{if(i<0){e--}else{x=new Ctor(x);x.d=xd;x.e=e;x=divide(x,y,sd,rm,0,base);xd=x.d;e=x.e;roundUp=inexact}i=xd[sd];k=base/2;roundUp=roundUp||xd[sd+1]!==void 0;roundUp=rm<4?(i!==void 0||roundUp)&&(rm===0||rm===(x.s<0?3:2)):i>k||i===k&&(rm===4||roundUp||rm===6&&xd[sd-1]&1||rm===(x.s<0?8:7));xd.length=sd;if(roundUp){for(;++xd[--sd]>base-1;){xd[sd]=0;if(!sd){++e;xd.unshift(1)}}}for(len=xd.length;!xd[len-1];--len);for(i=0,str="";i<len;i++)str+=NUMERALS.charAt(xd[i]);if(isExp){if(len>1){if(baseOut==16||baseOut==8){i=baseOut==16?4:3;for(--len;len%i;len++)str+="0";xd=convertBase(str,base,baseOut);for(len=xd.length;!xd[len-1];--len);for(i=1,str="1.";i<len;i++)str+=NUMERALS.charAt(xd[i])}else{str=str.charAt(0)+"."+str.slice(1)}}str=str+(e<0?"p":"p+")+e}else if(e<0){for(;++e;)str="0"+str;str="0."+str}else{if(++e>len)for(e-=len;e--;)str+="0";else if(e<len)str=str.slice(0,e)+"."+str.slice(e)}}str=(baseOut==16?"0x":baseOut==2?"0b":baseOut==8?"0o":"")+str}return x.s<0?"-"+str:str}function truncate(arr,len){if(arr.length>len){arr.length=len;return true}}function abs(x){return new this(x).abs()}function acos(x){return new this(x).acos()}function acosh(x){return new this(x).acosh()}function add(x,y){return new this(x).plus(y)}function asin(x){return new this(x).asin()}function asinh(x){return new this(x).asinh()}function atan(x){return new this(x).atan()}function atanh(x){return new this(x).atanh()}function atan2(y,x){y=new this(y);x=new this(x);var r,pr=this.precision,rm=this.rounding,wpr=pr+4;if(!y.s||!x.s){r=new this(NaN)}else if(!y.d&&!x.d){r=getPi(this,wpr,1).times(x.s>0?.25:.75);r.s=y.s}else if(!x.d||y.isZero()){r=x.s<0?getPi(this,pr,rm):new this(0);r.s=y.s}else if(!y.d||x.isZero()){r=getPi(this,wpr,1).times(.5);r.s=y.s}else if(x.s<0){this.precision=wpr;this.rounding=1;r=this.atan(divide(y,x,wpr,1));x=getPi(this,wpr,1);this.precision=pr;this.rounding=rm;r=y.s<0?r.minus(x):r.plus(x)}else{r=this.atan(divide(y,x,wpr,1))}return r}function cbrt(x){return new this(x).cbrt()}function ceil(x){return finalise(x=new this(x),x.e+1,2)}function config(obj){if(!obj||typeof obj!=="object")throw Error(decimalError+"Object expected");var i,p,v,ps=["precision",1,MAX_DIGITS,"rounding",0,8,"toExpNeg",-EXP_LIMIT,0,"toExpPos",0,EXP_LIMIT,"maxE",0,EXP_LIMIT,"minE",-EXP_LIMIT,0,"modulo",0,9];for(i=0;i<ps.length;i+=3){if((v=obj[p=ps[i]])!==void 0){if(mathfloor(v)===v&&v>=ps[i+1]&&v<=ps[i+2])this[p]=v;else throw Error(invalidArgument+p+": "+v)}}if(obj.hasOwnProperty(p="crypto")){if((v=obj[p])===void 0){this[p]=v}else if(v===true||v===false||v===0||v===1){this[p]=!!(v&&cryptoObject&&(cryptoObject.getRandomValues||cryptoObject.randomBytes))}else{throw Error(invalidArgument+p+": "+v)}}return this}function cos(x){return new this(x).cos()}function cosh(x){return new this(x).cosh()}function clone(obj){var i,p,ps;function Decimal(v){var e,i,t,x=this;if(!(x instanceof Decimal))return new Decimal(v);x.constructor=Decimal;if(v instanceof Decimal){x.s=v.s;x.e=v.e;x.d=(v=v.d)?v.slice():v;return}t=typeof v;if(t==="number"){if(v===0){x.s=1/v<0?-1:1;x.e=0;x.d=[0];return}if(v<0){v=-v;x.s=-1}else{x.s=1}if(v===~~v&&v<1e7){for(e=0,i=v;i>=10;i/=10)e++;x.e=e;x.d=[v];return}else if(v*0!==0){if(!v)x.s=NaN;x.e=NaN;x.d=null;return}return parseDecimal(x,v.toString())}else if(t!=="string"){throw Error(invalidArgument+v)}if(v.charCodeAt(0)===45){v=v.slice(1);x.s=-1}else{x.s=1}return isDecimal.test(v)?parseDecimal(x,v):parseOther(x,v)}Decimal.prototype=P;Decimal.ROUND_UP=0;Decimal.ROUND_DOWN=1;Decimal.ROUND_CEIL=2;Decimal.ROUND_FLOOR=3;Decimal.ROUND_HALF_UP=4;Decimal.ROUND_HALF_DOWN=5;Decimal.ROUND_HALF_EVEN=6;Decimal.ROUND_HALF_CEIL=7;Decimal.ROUND_HALF_FLOOR=8;Decimal.EUCLID=9;Decimal.config=config;Decimal.clone=clone;Decimal.abs=abs;Decimal.acos=acos;Decimal.acosh=acosh;Decimal.add=add;Decimal.asin=asin;Decimal.asinh=asinh;Decimal.atan=atan;Decimal.atanh=atanh;Decimal.atan2=atan2;Decimal.cbrt=cbrt;Decimal.ceil=ceil;Decimal.cos=cos;Decimal.cosh=cosh;Decimal.div=div;Decimal.exp=exp;Decimal.floor=floor;Decimal.fromJSON=fromJSON;Decimal.hypot=hypot;Decimal.ln=ln;Decimal.log=log;Decimal.log10=log10;Decimal.log2=log2;Decimal.max=max;Decimal.min=min;Decimal.mod=mod;Decimal.mul=mul;Decimal.pow=pow;Decimal.random=random;Decimal.round=round;Decimal.sign=sign;Decimal.sin=sin;Decimal.sinh=sinh;Decimal.sqrt=sqrt;Decimal.sub=sub;Decimal.tan=tan;Decimal.tanh=tanh;Decimal.trunc=trunc;if(obj===void 0)obj={};if(obj){ps=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"];for(i=0;i<ps.length;)if(!obj.hasOwnProperty(p=ps[i++]))obj[p]=this[p]}Decimal.config(obj);return Decimal}function div(x,y){return new this(x).div(y)}function exp(x){return new this(x).exp()}function floor(x){return finalise(x=new this(x),x.e+1,3)}function fromJSON(str){var e,isNeg,k,n;if(typeof str!=="string"||!str)throw Error(invalidArgument+str);k=str.length;n=NUMERALS.indexOf(str.charAt(0));if(k===1){return new this(n>81?[-1/0,1/0,0/0][n-82]:n>40?-(n-41):n)}else if(n&64){isNeg=n&16;e=isNeg?(n&7)-3:(n&15)-7;k=1}else if(k===2){n=n*88+NUMERALS.indexOf(str.charAt(1));return new this(n>=2816?-(n-2816)-41:n+41)}else{isNeg=n&32;if(n&31){e=n&15;k=e+1;if(e===1){e=NUMERALS.indexOf(str.charAt(1))}else if(e===2){e=NUMERALS.indexOf(str.charAt(1))*88+NUMERALS.indexOf(str.charAt(2))}else{e=+convertBase(str.slice(1,k),88,10).join("")}if(n&16)e=-e}else{str=convertBase(str.slice(1),88,10).join("");return new this(isNeg?"-"+str:str)}}str=convertBase(str.slice(k),88,10).join("");e=e-str.length+1;str=str+"e"+e;return new this(isNeg?"-"+str:str)}function hypot(){var i,n,t=new this(0);external=false;for(i=0;i<arguments.length;){n=new this(arguments[i++]);if(!n.d){if(n.s){external=true;return new this(1/0)}t=n}else if(t.d){t=t.plus(n.times(n))}}external=true;return t.sqrt()}function ln(x){return new this(x).ln()}function log(x,y){return new this(x).log(y)}function log2(x){return new this(x).log(2)}function log10(x){return new this(x).log(10)}function max(){return maxOrMin(this,arguments,"lt")}function min(){return maxOrMin(this,arguments,"gt")}function mod(x,y){return new this(x).mod(y)}function mul(x,y){return new this(x).mul(y)}function pow(x,y){return new this(x).pow(y)}function random(sd){var d,e,k,n,i=0,r=new this(1),rd=[];if(sd===void 0)sd=this.precision;else checkInt32(sd,1,MAX_DIGITS);k=Math.ceil(sd/LOG_BASE);if(this.crypto===false){for(;i<k;)rd[i++]=Math.random()*1e7|0}else if(cryptoObject&&cryptoObject.getRandomValues){d=cryptoObject.getRandomValues(new Uint32Array(k));for(;i<k;){n=d[i];if(n>=429e7){d[i]=cryptoObject.getRandomValues(new Uint32Array(1))[0]}else{rd[i++]=n%1e7}}}else if(cryptoObject&&cryptoObject.randomBytes){d=cryptoObject.randomBytes(k*=4);for(;i<k;){n=d[i]+(d[i+1]<<8)+(d[i+2]<<16)+((d[i+3]&127)<<24);if(n>=214e7){cryptoObject.randomBytes(4).copy(d,i)}else{rd.push(n%1e7);i+=4}}i=k/4}else if(this.crypto){throw Error(decimalError+"crypto unavailable")}else{for(;i<k;)rd[i++]=Math.random()*1e7|0}k=rd[--i];sd%=LOG_BASE;if(k&&sd){n=mathpow(10,LOG_BASE-sd);rd[i]=(k/n|0)*n}for(;rd[i]===0;i--)rd.pop();if(i<0){e=0;rd=[0]}else{e=-1;for(;rd[0]===0;e-=LOG_BASE)rd.shift();for(k=1,n=rd[0];n>=10;n/=10)k++;if(k<LOG_BASE)e-=LOG_BASE-k}r.e=e;r.d=rd;return r}function round(x){return finalise(x=new this(x),x.e+1,this.rounding)}function sign(x){x=new this(x);return x.d?x.d[0]?x.s:0*x.s:x.s||NaN}function sin(x){return new this(x).sin()}function sinh(x){return new this(x).sinh()}function sqrt(x){return new this(x).sqrt()}function sub(x,y){return new this(x).sub(y)}function tan(x){return new this(x).tan()}function tanh(x){return new this(x).tanh()}function trunc(x){return finalise(x=new this(x),x.e+1,1)}Decimal=clone(Decimal);LN10=new Decimal(LN10);PI=new Decimal(PI);if(typeof define=="function"&&define.amd){define(function(){return Decimal})}else if(typeof module!="undefined"&&module.exports){module.exports=Decimal;if(!cryptoObject){try{cryptoObject=require("cry"+"pto")}catch(e){}}}else{if(!globalScope){globalScope=typeof self!="undefined"&&self&&self.self==self?self:Function("return this")()}noConflict=globalScope.Decimal;Decimal.noConflict=function(){globalScope.Decimal=noConflict;return Decimal};globalScope.Decimal=Decimal}})(this)},{}],12:[function(require,module,exports){"use strict";function dupe_array(count,value,i){var c=count[i]|0;if(c<=0){return[]}var result=new Array(c),j;if(i===count.length-1){for(j=0;j<c;++j){result[j]=value}}else{for(j=0;j<c;++j){result[j]=dupe_array(count,value,i+1)}}return result}function dupe_number(count,value){var result,i;result=new Array(count);for(i=0;i<count;++i){result[i]=value}return result}function dupe(count,value){if(typeof value==="undefined"){value=0}switch(typeof count){case"number":if(count>0){return dupe_number(count|0,value)}break;case"object":if(typeof count.length==="number"){return dupe_array(count,value,0)}break}return[]}module.exports=dupe},{}],13:[function(require,module,exports){"use strict";module.exports.polynomial=require("./polynomial.js");module.exports.linear=require("./linear.js");module.exports.linearRegression=require("./linearRegression.js");module.exports.step=require("./step.js")},{"./linear.js":15,"./linearRegression.js":16,"./polynomial.js":17,"./step.js":18}],14:[function(require,module,exports){"use strict";module.exports.makeItArrayIfItsNot=function(input){return Object.prototype.toString.call(input)!=="[object Array]"?[input]:input};module.exports.findIntervalLeftBorderIndex=function(point,intervals){if(point<intervals[0])return 0;if(point>intervals[intervals.length-1])return intervals.length-1;var indexOfNumberToCompare,leftBorderIndex=0,rightBorderIndex=intervals.length-1;while(rightBorderIndex-leftBorderIndex!==1){indexOfNumberToCompare=leftBorderIndex+Math.floor((rightBorderIndex-leftBorderIndex)/2);point>=intervals[indexOfNumberToCompare]?leftBorderIndex=indexOfNumberToCompare:rightBorderIndex=indexOfNumberToCompare}return leftBorderIndex}},{}],15:[function(require,module,exports){"use strict";var help=require("./help");module.exports=evaluateLinear;function evaluateLinear(pointsToEvaluate,functionValuesX,functionValuesY){var results=[];pointsToEvaluate=help.makeItArrayIfItsNot(pointsToEvaluate);pointsToEvaluate.forEach(function(point){var index=help.findIntervalLeftBorderIndex(point,functionValuesX);if(index==functionValuesX.length-1)index--;results.push(linearInterpolation(point,functionValuesX[index],functionValuesY[index],functionValuesX[index+1],functionValuesY[index+1]))});return results}function linearInterpolation(x,x0,y0,x1,y1){var a=(y1-y0)/(x1-x0);var b=-a*x0+y0;return a*x+b}},{"./help":14}],16:[function(require,module,exports){"use strict";module.exports=linearRegression;var help=require("./help");function linearRegression(functionValuesX,functionValuesY){var regression={},x=functionValuesX,y=functionValuesY,n=y.length,sum_x=0,sum_y=0,sum_xy=0,sum_xx=0,sum_yy=0;for(var i=0;i<y.length;i++){sum_x+=x[i];sum_y+=y[i];sum_xy+=x[i]*y[i];sum_xx+=x[i]*x[i];sum_yy+=y[i]*y[i]}regression.slope=(n*sum_xy-sum_x*sum_y)/(n*sum_xx-sum_x*sum_x);regression.intercept=(sum_y-regression.slope*sum_x)/n;regression.rSquared=Math.pow((n*sum_xy-sum_x*sum_y)/Math.sqrt((n*sum_xx-sum_x*sum_x)*(n*sum_yy-sum_y*sum_y)),2);regression.evaluate=function(pointsToEvaluate){var x=help.makeItArrayIfItsNot(pointsToEvaluate),result=[],that=this;x.forEach(function(point){result.push(that.slope*point+that.intercept)});return result};return regression}},{"./help":14}],17:[function(require,module,exports){"use strict";var help=require("./help");module.exports=evaluatePolynomial;function evaluatePolynomial(pointsToEvaluate,functionValuesX,functionValuesY){var results=[];pointsToEvaluate=help.makeItArrayIfItsNot(pointsToEvaluate);pointsToEvaluate.forEach(function(point){results.push(nevillesIteratedInterpolation(point,functionValuesX,functionValuesY))});return results}function nevillesIteratedInterpolation(x,X,Y){var Q=[Y];for(var i=1;i<X.length;i++){Q.push([]);for(var j=1;j<=i;j++){Q[j][i]=((x-X[i-j])*Q[j-1][i]-(x-X[i])*Q[j-1][i-1])/(X[i]-X[i-j])}}return Q[j-1][i-1]}},{"./help":14}],18:[function(require,module,exports){"use strict";var help=require("./help");module.exports=step;function step(pointsToEvaluate,functionValuesX,functionValuesY){return help.makeItArrayIfItsNot(pointsToEvaluate).map(function(point){return functionValuesY[help.findIntervalLeftBorderIndex(point,functionValuesX)]})}},{"./help":14}],19:[function(require,module,exports){(function(root){"use strict";var MAX_CYCLE_LEN=2e3;var P={s:1,n:0,d:1};function assign(n,s){if(isNaN(n=parseInt(n,10))){throwInvalidParam()}return n*s}function throwInvalidParam(){throw"Invalid Param"}var parse=function(p1,p2){var n=0,d=1,s=1;var v=0,w=0,x=0,y=1,z=1;var A=0,B=1;var C=1,D=1;var N=1e7;var M;if(p1===undefined||p1===null){}else if(p2!==undefined){n=p1;d=p2;s=n*d}else switch(typeof p1){case"object":{if("d"in p1&&"n"in p1){n=p1["n"];d=p1["d"];if("s"in p1)n*=p1["s"]}else if(0 in p1){n=p1[0];if(1 in p1)d=p1[1]}else{throwInvalidParam()}s=n*d;break}case"number":{if(p1<0){s=p1;p1=-p1}if(p1%1===0){n=p1}else if(p1>0){if(p1>=1){z=Math.pow(10,Math.floor(1+Math.log(p1)/Math.LN10));p1/=z}while(B<=N&&D<=N){M=(A+C)/(B+D);if(p1===M){if(B+D<=N){n=A+C;d=B+D}else if(D>B){n=C;d=D}else{n=A;d=B}break}else{if(p1>M){A+=C;B+=D}else{C+=A;D+=B}if(B>N){n=C;d=D}else{n=A;d=B}}}n*=z}else if(isNaN(p1)||isNaN(p2)){d=n=NaN}break}case"string":{B=p1.match(/\d+|./g);if(B[A]==="-"){s=-1;A++}else if(B[A]==="+"){A++}if(B.length===A+1){w=assign(B[A++],s)}else if(B[A+1]==="."||B[A]==="."){if(B[A]!=="."){v=assign(B[A++],s)}A++;if(A+1===B.length||B[A+1]==="("&&B[A+3]===")"||B[A+1]==="'"&&B[A+3]==="'"){w=assign(B[A],s);y=Math.pow(10,B[A].length);A++}if(B[A]==="("&&B[A+2]===")"||B[A]==="'"&&B[A+2]==="'"){x=assign(B[A+1],s);z=Math.pow(10,B[A+1].length)-1;A+=3}}else if(B[A+1]==="/"||B[A+1]===":"){w=assign(B[A],s);y=assign(B[A+2],1);A+=3}else if(B[A+3]==="/"&&B[A+1]===" "){v=assign(B[A],s);w=assign(B[A+2],s);y=assign(B[A+4],1);A+=5}if(B.length<=A){d=y*z;s=n=x+d*v+z*w;break}}default:throwInvalidParam()}if(d===0){throw"DIV/0"}P["s"]=s<0?-1:1;P["n"]=Math.abs(n);P["d"]=Math.abs(d)};var modpow=function(b,e,m){for(var r=1;e>0;b=b*b%m,e>>=1){if(e&1){r=r*b%m}}return r};var cycleLen=function(n,d){for(;d%2===0;d/=2){}for(;d%5===0;d/=5){}if(d===1)return 0;var rem=10%d;for(var t=1;rem!==1;t++){rem=rem*10%d;if(t>MAX_CYCLE_LEN)return 0}return t};var cycleStart=function(n,d,len){var rem1=1;var rem2=modpow(10,len,d);for(var t=0;t<300;t++){if(rem1===rem2)return t;rem1=rem1*10%d;rem2=rem2*10%d}return 0};var gcd=function(a,b){if(!a)return b;if(!b)return a;while(1){a%=b;if(!a)return b;b%=a;if(!b)return a}};function Fraction(a,b){if(!(this instanceof Fraction)){return new Fraction(a,b)}parse(a,b);if(Fraction["REDUCE"]){a=gcd(P["d"],P["n"])}else{a=1}this["s"]=P["s"];this["n"]=P["n"]/a;this["d"]=P["d"]/a}Fraction["REDUCE"]=1;Fraction.prototype={s:1,n:0,d:1,abs:function(){return new Fraction(this["n"],this["d"])},neg:function(){return new Fraction(-this["s"]*this["n"],this["d"])},add:function(a,b){parse(a,b);return new Fraction(this["s"]*this["n"]*P["d"]+P["s"]*this["d"]*P["n"],this["d"]*P["d"])},sub:function(a,b){parse(a,b);return new Fraction(this["s"]*this["n"]*P["d"]-P["s"]*this["d"]*P["n"],this["d"]*P["d"])},mul:function(a,b){parse(a,b);return new Fraction(this["s"]*P["s"]*this["n"]*P["n"],this["d"]*P["d"])},div:function(a,b){parse(a,b);return new Fraction(this["s"]*P["s"]*this["n"]*P["d"],this["d"]*P["n"])},clone:function(){return new Fraction(this)},mod:function(a,b){if(isNaN(this["n"])||isNaN(this["d"])){return new Fraction(NaN)}if(a===undefined){return new Fraction(this["s"]*this["n"]%this["d"],1)}parse(a,b);if(0===P["n"]&&0===this["d"]){Fraction(0,0)}return new Fraction(this["s"]*P["d"]*this["n"]%(P["n"]*this["d"]),P["d"]*this["d"])},gcd:function(a,b){parse(a,b);return new Fraction(gcd(P["n"],this["n"]),P["d"]*this["d"]/gcd(P["d"],this["d"]))},lcm:function(a,b){parse(a,b);if(P["n"]===0&&this["n"]===0){return new Fraction}return new Fraction(P["n"]*this["n"]/gcd(P["n"],this["n"]),gcd(P["d"],this["d"]))},ceil:function(places){places=Math.pow(10,places||0);if(isNaN(this["n"])||isNaN(this["d"])){return new Fraction(NaN)}return new Fraction(Math.ceil(places*this["s"]*this["n"]/this["d"]),places)},floor:function(places){places=Math.pow(10,places||0);if(isNaN(this["n"])||isNaN(this["d"])){return new Fraction(NaN)}return new Fraction(Math.floor(places*this["s"]*this["n"]/this["d"]),places)},round:function(places){places=Math.pow(10,places||0);if(isNaN(this["n"])||isNaN(this["d"])){return new Fraction(NaN)}return new Fraction(Math.round(places*this["s"]*this["n"]/this["d"]),places)},inverse:function(){return new Fraction(this["s"]*this["d"],this["n"])},pow:function(m){if(m<0){return new Fraction(Math.pow(this["s"]*this["d"],-m),Math.pow(this["n"],-m))}else{return new Fraction(Math.pow(this["s"]*this["n"],m),Math.pow(this["d"],m))}},equals:function(a,b){parse(a,b);return this["s"]*this["n"]*P["d"]===P["s"]*P["n"]*this["d"]},compare:function(a,b){parse(a,b);var t=this["s"]*this["n"]*P["d"]-P["s"]*P["n"]*this["d"];return(0<t)-(t<0)},divisible:function(a,b){parse(a,b);return!(!(P["n"]*this["d"])||this["n"]*P["d"]%(P["n"]*this["d"]))},valueOf:function(){return this["s"]*this["n"]/this["d"]},toFraction:function(excludeWhole){var whole,str="";var n=this["n"];var d=this["d"];if(this["s"]<0){str+="-"}if(d===1){str+=n}else{if(excludeWhole&&(whole=Math.floor(n/d))>0){str+=whole;str+=" ";n%=d}str+=n;str+="/";str+=d}return str},toLatex:function(excludeWhole){var whole,str="";var n=this["n"];var d=this["d"];if(this["s"]<0){str+="-"}if(d===1){str+=n}else{if(excludeWhole&&(whole=Math.floor(n/d))>0){str+=whole;n%=d}str+="\\frac{";str+=n;str+="}{";str+=d;str+="}"}return str},toContinued:function(){var t;var a=this["n"];var b=this["d"];var res=[];do{res.push(Math.floor(a/b));t=a%b;a=b;b=t}while(a!==1);return res},toString:function(){var g;var N=this["n"];var D=this["d"];if(isNaN(N)||isNaN(D)){return"NaN"}if(!Fraction["REDUCE"]){g=gcd(N,D);N/=g;D/=g}var p=String(N).split("");var t=0;var ret=[~this["s"]?"":"-","",""];var zeros="";var cycLen=cycleLen(N,D);var cycOff=cycleStart(N,D,cycLen);var j=-1;var n=1;var length=15+cycLen+cycOff+p.length;for(var i=0;i<length;i++,t*=10){if(i<p.length){t+=Number(p[i])}else{n=2;j++}if(cycLen>0){if(j===cycOff){ret[n]+=zeros+"(";zeros=""}else if(j===cycLen+cycOff){ret[n]+=zeros+")";break}}if(t>=D){ret[n]+=zeros+(t/D|0);zeros="";t=t%D}else if(n>1){zeros+="0"}else if(ret[n]){ret[n]+="0"}}ret[0]+=ret[1]||"0";if(ret[2]){return ret[0]+"."+ret[2]}return ret[0]}};if(typeof define==="function"&&define["amd"]){define([],function(){return Fraction})}else if(typeof exports==="object"){module["exports"]=Fraction}else{root["Fraction"]=Fraction}})(this)},{}],20:[function(require,module,exports){"use strict";function iota(n){var result=new Array(n);for(var i=0;i<n;++i){result[i]=i}return result}module.exports=iota},{}],21:[function(require,module,exports){module.exports=function(obj){return obj!=null&&(isBuffer(obj)||isSlowBuffer(obj)||!!obj._isBuffer)};function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)}function isSlowBuffer(obj){return typeof obj.readFloatLE==="function"&&typeof obj.slice==="function"&&isBuffer(obj.slice(0,0))}},{}],22:[function(require,module,exports){module.exports=require("./lib/core/core")},{"./lib/core/core":25}],23:[function(require,module,exports){var core=require("./core");function create(config){var math=core.create(config);math.create=create;math["import"](require("./lib"));return math}module.exports=create()},{"./core":22,"./lib":432}],24:[function(require,module,exports){"use strict";var object=require("./utils/object");var bigConstants=require("./utils/bignumber/constants");function factory(type,config,load,typed,math){math.on("config",function(curr,prev){if(curr.number!==prev.number){factory(type,config,load,typed,math)}});math["true"]=true;math["false"]=false;math["null"]=null;math["uninitialized"]=require("./utils/array").UNINITIALIZED;if(config.number==="BigNumber"){math["Infinity"]=new type.BigNumber(Infinity);math["NaN"]=new type.BigNumber(NaN);object.lazy(math,"pi",function(){return bigConstants.pi(type.BigNumber)});object.lazy(math,"tau",function(){return bigConstants.tau(type.BigNumber)});object.lazy(math,"e",function(){return bigConstants.e(type.BigNumber)});object.lazy(math,"phi",function(){return bigConstants.phi(type.BigNumber)});object.lazy(math,"E",function(){return math.e});object.lazy(math,"LN2",function(){return new type.BigNumber(2).ln()});object.lazy(math,"LN10",function(){return new type.BigNumber(10).ln()});object.lazy(math,"LOG2E",function(){return new type.BigNumber(1).div(new type.BigNumber(2).ln())});object.lazy(math,"LOG10E",function(){return new type.BigNumber(1).div(new type.BigNumber(10).ln())});object.lazy(math,"PI",function(){return math.pi});object.lazy(math,"SQRT1_2",function(){return new type.BigNumber("0.5").sqrt()});object.lazy(math,"SQRT2",function(){return new type.BigNumber(2).sqrt()})}else{math["Infinity"]=Infinity;math["NaN"]=NaN;math.pi=Math.PI;math.tau=Math.PI*2;math.e=Math.E;math.phi=1.618033988749895;math.E=math.e;math.LN2=Math.LN2;math.LN10=Math.LN10;math.LOG2E=Math.LOG2E;math.LOG10E=Math.LOG10E;math.PI=math.pi;math.SQRT1_2=Math.SQRT1_2;math.SQRT2=Math.SQRT2}math.i=type.Complex.I;math.version=require("./version")}exports.factory=factory;exports.lazy=false;exports.math=true},{"./utils/array":486,"./utils/bignumber/constants":492,"./utils/object":509,"./version":512}],25:[function(require,module,exports){var isFactory=require("./../utils/object").isFactory;var deepExtend=require("./../utils/object").deepExtend;var typedFactory=require("./typed");var emitter=require("./../utils/emitter");var importFactory=require("./function/import");var configFactory=require("./function/config");exports.create=function create(options){if(typeof Object.create!=="function"){throw new Error("ES5 not supported by this JavaScript engine. "+"Please load the es5-shim and es5-sham library for compatibility.")}var factories=[];var instances=[];var math=emitter.mixin({});math.type={};math.expression={transform:Object.create(math)};math.typed=typedFactory.create(math.type);var _config={epsilon:1e-12,matrix:"Matrix",number:"number",precision:64,predictable:false};function load(factory){if(!isFactory(factory)){throw new Error("Factory object with properties `type`, `name`, and `factory` expected")}var index=factories.indexOf(factory);var instance;if(index===-1){if(factory.math===true){instance=factory.factory(math.type,_config,load,math.typed,math)}else{instance=factory.factory(math.type,_config,load,math.typed)}factories.push(factory);instances.push(instance)}else{instance=instances[index]}return instance}math["import"]=load(importFactory);math["config"]=load(configFactory);if(options){math.config(options)}return math}},{"./../utils/emitter":504,"./../utils/object":509,"./function/config":26,"./function/import":27,"./typed":28}],26:[function(require,module,exports){"use strict";var object=require("../../utils/object");function factory(type,config,load,typed,math){var MATRIX=["Matrix","Array"];var NUMBER=["number","BigNumber","Fraction"];function _config(options){if(options){var prev=object.clone(config);validateOption(options,"matrix",MATRIX);validateOption(options,"number",NUMBER);object.deepExtend(config,options);var curr=object.clone(config);math.emit("config",curr,prev);return curr}else{return object.clone(config)}}_config.MATRIX=MATRIX;_config.NUMBER=NUMBER;return _config}function contains(array,item){return array.indexOf(item)!==-1}function findIndex(array,item){return array.map(function(i){return i.toLowerCase()}).indexOf(item.toLowerCase())}function validateOption(options,name,values){if(options[name]!==undefined&&!contains(values,options[name])){var index=findIndex(values,options[name]);if(index!==-1){console.warn('Warning: Wrong casing for configuration option "'+name+'", should be "'+values[index]+'" instead of "'+options[name]+'".');options[name]=values[index]}else{console.warn('Warning: Unknown value "'+options[name]+'" for configuration option "'+name+'". Available options: '+values.map(JSON.stringify).join(", ")+".")}}}exports.name="config";exports.math=true;exports.factory=factory},{"../../utils/object":509}],27:[function(require,module,exports){"use strict";var lazy=require("../../utils/object").lazy;var isFactory=require("../../utils/object").isFactory;var traverse=require("../../utils/object").traverse;var extend=require("../../utils/object").extend;var ArgumentsError=require("../../error/ArgumentsError");function factory(type,config,load,typed,math){function math_import(object,options){var num=arguments.length;if(num!=1&&num!=2){throw new ArgumentsError("import",num,1,2)}if(!options){options={}}if(isFactory(object)){_importFactory(object,options)}else if(Array.isArray(object)){object.forEach(function(entry){math_import(entry,options)})}else if(typeof object==="object"){for(var name in object){if(object.hasOwnProperty(name)){var value=object[name];if(isSupportedType(value)){_import(name,value,options)}else if(isFactory(object)){_importFactory(object,options)}else{math_import(value,options)}}}}else{if(!options.silent){throw new TypeError("Factory, Object, or Array expected")}}}function _import(name,value,options){if(options.wrap&&typeof value==="function"){value=_wrap(value)}if(isTypedFunction(math[name])&&isTypedFunction(value)){if(options.override){value=typed(name,value.signatures)}else{value=typed(math[name],value)}math[name]=value;_importTransform(name,value);math.emit("import",name,function resolver(){return value});return}if(math[name]===undefined||options.override){math[name]=value;_importTransform(name,value);math.emit("import",name,function resolver(){return value});return}if(!options.silent){throw new Error('Cannot import "'+name+'": already exists')}}function _importTransform(name,value){if(value&&typeof value.transform==="function"){math.expression.transform[name]=value.transform}}function _wrap(fn){var wrapper=function wrapper(){var args=[];for(var i=0,len=arguments.length;i<len;i++){var arg=arguments[i];args[i]=arg&&arg.valueOf()}return fn.apply(math,args)};if(fn.transform){wrapper.transform=fn.transform}return wrapper}function _importFactory(factory,options){if(typeof factory.name==="string"){var name=factory.name;var namespace=factory.path?traverse(math,factory.path):math;var existing=namespace.hasOwnProperty(name)?namespace[name]:undefined;var resolver=function(){var instance=load(factory);if(isTypedFunction(existing)&&isTypedFunction(instance)){if(options.override){}else{instance=typed(existing,instance)}return instance}if(existing===undefined||options.override){return instance}if(!options.silent){throw new Error('Cannot import "'+name+'": already exists')}};if(factory.lazy!==false){lazy(namespace,name,resolver)}else{namespace[name]=resolver()}math.emit("import",name,resolver,factory.path)}else{load(factory)}}function isSupportedType(object){return typeof object=="function"||typeof object==="number"||typeof object==="string"||typeof object==="boolean"||object===null||object&&object.isUnit===true||object&&object.isComplex===true||object&&object.isBigNumber===true||object&&object.isFraction===true||object&&object.isMatrix===true||object&&Array.isArray(object)===true}function isTypedFunction(fn){return typeof fn==="function"&&typeof fn.signatures==="object"}return math_import}exports.math=true;exports.name="import";exports.factory=factory;exports.lazy=true},{"../../error/ArgumentsError":29,"../../utils/object":509}],28:[function(require,module,exports){var typedFunction=require("typed-function");var digits=require("./../utils/number").digits;var createTyped=function(){createTyped=typedFunction.create;return typedFunction};exports.create=function create(type){var typed=createTyped();typed.types=[{name:"number",test:function(x){return typeof x==="number"}},{name:"Complex",test:function(x){return x&&x.isComplex}},{name:"BigNumber",test:function(x){return x&&x.isBigNumber}},{name:"Fraction",test:function(x){return x&&x.isFraction}},{name:"Unit",test:function(x){return x&&x.isUnit}},{name:"string",test:function(x){return typeof x==="string"}},{name:"Array",test:Array.isArray},{name:"Matrix",test:function(x){return x&&x.isMatrix}},{name:"DenseMatrix",test:function(x){return x&&x.isDenseMatrix}},{name:"SparseMatrix",test:function(x){return x&&x.isSparseMatrix}},{name:"ImmutableDenseMatrix",test:function(x){return x&&x.isImmutableDenseMatrix}},{name:"Range",test:function(x){return x&&x.isRange}},{name:"Index",test:function(x){return x&&x.isIndex}},{name:"boolean",test:function(x){return typeof x==="boolean"}},{name:"ResultSet",test:function(x){return x&&x.isResultSet}},{name:"Help",test:function(x){return x&&x.isHelp}},{name:"function",test:function(x){return typeof x==="function"}},{name:"Date",test:function(x){return x instanceof Date}},{name:"RegExp",test:function(x){return x instanceof RegExp}},{name:"Object",test:function(x){return typeof x==="object"}},{name:"null",test:function(x){return x===null}},{name:"undefined",test:function(x){return x===undefined}}];typed.conversions=[{from:"number",to:"BigNumber",convert:function(x){if(digits(x)>15){throw new TypeError("Cannot implicitly convert a number with >15 significant digits to BigNumber "+"(value: "+x+"). "+"Use function bignumber(x) to convert to BigNumber.")}return new type.BigNumber(x)}},{from:"number",to:"Complex",convert:function(x){return new type.Complex(x,0)}},{from:"number",to:"string",convert:function(x){return x+""}},{from:"BigNumber",to:"Complex",convert:function(x){return new type.Complex(x.toNumber(),0)}},{from:"Fraction",to:"Complex",convert:function(x){return new type.Complex(x.valueOf(),0)}},{from:"number",to:"Fraction",convert:function(x){if(digits(x)>15){throw new TypeError("Cannot implicitly convert a number with >15 significant digits to Fraction "+"(value: "+x+"). "+"Use function fraction(x) to convert to Fraction.")}return new type.Fraction(x)}},{from:"string",to:"number",convert:function(x){var n=Number(x);if(isNaN(n)){throw new Error('Cannot convert "'+x+'" to a number')}return n}},{from:"boolean",to:"number",convert:function(x){return+x}},{from:"boolean",to:"BigNumber",convert:function(x){return new type.BigNumber((+x))}},{from:"boolean",to:"Fraction",convert:function(x){return new type.Fraction((+x))}},{from:"boolean",to:"string",convert:function(x){return+x}},{from:"null",to:"number",convert:function(){return 0}},{from:"null",to:"string",convert:function(){return"null"}},{from:"null",to:"BigNumber",convert:function(){return new type.BigNumber(0)}},{from:"null",to:"Fraction",convert:function(){return new type.Fraction(0)}},{from:"Array",to:"Matrix",convert:function(array){return new type.DenseMatrix(array)}},{from:"Matrix",to:"Array",convert:function(matrix){return matrix.valueOf()}}];return typed}},{"./../utils/number":508,"typed-function":518}],29:[function(require,module,exports){"use strict";function ArgumentsError(fn,count,min,max){if(!(this instanceof ArgumentsError)){throw new SyntaxError("Constructor must be called with the new operator")}this.fn=fn;this.count=count;this.min=min;this.max=max;this.message="Wrong number of arguments in function "+fn+" ("+count+" provided, "+min+(max!=undefined?"-"+max:"")+" expected)";this.stack=(new Error).stack}ArgumentsError.prototype=new Error;ArgumentsError.prototype.constructor=Error;ArgumentsError.prototype.name="ArgumentsError";ArgumentsError.prototype.isArgumentsError=true;module.exports=ArgumentsError},{}],30:[function(require,module,exports){
"use strict";function DimensionError(actual,expected,relation){if(!(this instanceof DimensionError)){throw new SyntaxError("Constructor must be called with the new operator")}this.actual=actual;this.expected=expected;this.relation=relation;this.message="Dimension mismatch ("+(Array.isArray(actual)?"["+actual.join(", ")+"]":actual)+" "+(this.relation||"!=")+" "+(Array.isArray(expected)?"["+expected.join(", ")+"]":expected)+")";this.stack=(new Error).stack}DimensionError.prototype=new RangeError;DimensionError.prototype.constructor=RangeError;DimensionError.prototype.name="DimensionError";DimensionError.prototype.isDimensionError=true;module.exports=DimensionError},{}],31:[function(require,module,exports){"use strict";function IndexError(index,min,max){if(!(this instanceof IndexError)){throw new SyntaxError("Constructor must be called with the new operator")}this.index=index;if(arguments.length<3){this.min=0;this.max=min}else{this.min=min;this.max=max}if(this.min!==undefined&&this.index<this.min){this.message="Index out of range ("+this.index+" < "+this.min+")"}else if(this.max!==undefined&&this.index>=this.max){this.message="Index out of range ("+this.index+" > "+(this.max-1)+")"}else{this.message="Index out of range ("+this.index+")"}this.stack=(new Error).stack}IndexError.prototype=new RangeError;IndexError.prototype.constructor=RangeError;IndexError.prototype.name="IndexError";IndexError.prototype.isIndexError=true;module.exports=IndexError},{}],32:[function(require,module,exports){"use strict";var ArgumentsError=require("./ArgumentsError");var DimensionError=require("./DimensionError");var IndexError=require("./IndexError");module.exports=[{name:"ArgumentsError",path:"error",factory:function(){return ArgumentsError}},{name:"DimensionError",path:"error",factory:function(){return DimensionError}},{name:"IndexError",path:"error",factory:function(){return IndexError}}]},{"./ArgumentsError":29,"./DimensionError":30,"./IndexError":31}],33:[function(require,module,exports){"use strict";var object=require("../utils/object");var string=require("../utils/string");function factory(type,config,load,typed){var parser=load(require("./function/parser"))();function Help(doc){if(!(this instanceof Help)){throw new SyntaxError("Constructor must be called with the new operator")}if(!doc)throw new Error('Argument "doc" missing');this.doc=doc}Help.prototype.type="Help";Help.prototype.isHelp=true;Help.prototype.toString=function(){var doc=this.doc||{};var desc="\n";if(doc.name){desc+="Name: "+doc.name+"\n\n"}if(doc.category){desc+="Category: "+doc.category+"\n\n"}if(doc.description){desc+="Description:\n "+doc.description+"\n\n"}if(doc.syntax){desc+="Syntax:\n "+doc.syntax.join("\n ")+"\n\n"}if(doc.examples){desc+="Examples:\n";for(var i=0;i<doc.examples.length;i++){var expr=doc.examples[i];desc+=" "+expr+"\n";var res;try{res=parser.eval(expr)}catch(e){res=e}if(res&&!res.isHelp){desc+=" "+string.format(res,{precision:14})+"\n"}}desc+="\n"}if(doc.seealso){desc+="See also: "+doc.seealso.join(", ")+"\n"}return desc};Help.prototype.toJSON=function(){var obj=object.clone(this.doc);obj.mathjs="Help";return obj};Help.fromJSON=function(json){var doc={};for(var prop in json){if(prop!=="mathjs"){doc[prop]=json[prop]}}return new Help(doc)};Help.prototype.valueOf=Help.prototype.toString;return Help}exports.name="Help";exports.path="type";exports.factory=factory},{"../utils/object":509,"../utils/string":510,"./function/parser":214}],34:[function(require,module,exports){"use strict";var extend=require("../utils/object").extend;function factory(type,config,load,typed,math){var _parse=load(require("./parse"));function Parser(){if(!(this instanceof Parser)){throw new SyntaxError("Constructor must be called with the new operator")}this.scope={}}Parser.prototype.type="Parser";Parser.prototype.isParser=true;Parser.prototype.parse=function(expr){throw new Error("Parser.parse is deprecated. Use math.parse instead.")};Parser.prototype.compile=function(expr){throw new Error("Parser.compile is deprecated. Use math.compile instead.")};Parser.prototype.eval=function(expr){return _parse(expr).compile().eval(this.scope)};Parser.prototype.get=function(name){return this.scope[name]};Parser.prototype.getAll=function(){return extend({},this.scope)};Parser.prototype.set=function(name,value){return this.scope[name]=value};Parser.prototype.remove=function(name){delete this.scope[name]};Parser.prototype.clear=function(){for(var name in this.scope){if(this.scope.hasOwnProperty(name)){delete this.scope[name]}}};return Parser}exports.name="Parser";exports.path="expression";exports.factory=factory;exports.math=true},{"../utils/object":509,"./parse":237}],35:[function(require,module,exports){module.exports={name:"Infinity",category:"Constants",syntax:["Infinity"],description:"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.",examples:["Infinity","1 / 0"],seealso:[]}},{}],36:[function(require,module,exports){module.exports={name:"LN10",category:"Constants",syntax:["LN10"],description:"Returns the natural logarithm of 10, approximately equal to 2.302",examples:["LN10","log(10)"],seealso:[]}},{}],37:[function(require,module,exports){module.exports={name:"LN2",category:"Constants",syntax:["LN2"],description:"Returns the natural logarithm of 2, approximately equal to 0.693",examples:["LN2","log(2)"],seealso:[]}},{}],38:[function(require,module,exports){module.exports={name:"LOG10E",category:"Constants",syntax:["LOG10E"],description:"Returns the base-10 logarithm of E, approximately equal to 0.434",examples:["LOG10E","log(e, 10)"],seealso:[]}},{}],39:[function(require,module,exports){module.exports={name:"LOG2E",category:"Constants",syntax:["LOG2E"],description:"Returns the base-2 logarithm of E, approximately equal to 1.442",examples:["LOG2E","log(e, 2)"],seealso:[]}},{}],40:[function(require,module,exports){module.exports={name:"NaN",category:"Constants",syntax:["NaN"],description:"Not a number",examples:["NaN","0 / 0"],seealso:[]}},{}],41:[function(require,module,exports){module.exports={name:"SQRT1_2",category:"Constants",syntax:["SQRT1_2"],description:"Returns the square root of 1/2, approximately equal to 0.707",examples:["SQRT1_2","sqrt(1/2)"],seealso:[]}},{}],42:[function(require,module,exports){module.exports={name:"SQRT2",category:"Constants",syntax:["SQRT2"],description:"Returns the square root of 2, approximately equal to 1.414",examples:["SQRT2","sqrt(2)"],seealso:[]}},{}],43:[function(require,module,exports){module.exports={name:"e",category:"Constants",syntax:["e"],description:"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828",examples:["e","e ^ 2","exp(2)","log(e)"],seealso:["exp"]}},{}],44:[function(require,module,exports){module.exports={name:"false",category:"Constants",syntax:["false"],description:"Boolean value false",examples:["false"],seealso:["true"]}},{}],45:[function(require,module,exports){module.exports={name:"i",category:"Constants",syntax:["i"],description:"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.",examples:["i","i * i","sqrt(-1)"],seealso:[]}},{}],46:[function(require,module,exports){module.exports={name:"null",category:"Constants",syntax:["null"],description:"Value null",examples:["null"],seealso:["true","false"]}},{}],47:[function(require,module,exports){module.exports={name:"phi",category:"Constants",syntax:["phi"],description:"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...",examples:["tau"],seealso:[]}},{}],48:[function(require,module,exports){module.exports={name:"pi",category:"Constants",syntax:["pi"],description:"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159",examples:["pi","sin(pi/2)"],seealso:["tau"]}},{}],49:[function(require,module,exports){module.exports={name:"tau",category:"Constants",syntax:["tau"],description:"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.",examples:["tau","2 * pi"],seealso:["pi"]}},{}],50:[function(require,module,exports){module.exports={name:"true",category:"Constants",syntax:["true"],description:"Boolean value true",examples:["true"],seealso:["false"]}},{}],51:[function(require,module,exports){module.exports={name:"version",category:"Constants",syntax:["version"],description:"A string with the version number of math.js",examples:["version"],seealso:[]}},{}],52:[function(require,module,exports){module.exports={name:"bignumber",category:"Construction",syntax:["bignumber(x)"],description:"Create a big number from a number or string.",examples:["0.1 + 0.2","bignumber(0.1) + bignumber(0.2)",'bignumber("7.2")','bignumber("7.2e500")',"bignumber([0.1, 0.2, 0.3])"],seealso:["boolean","complex","fraction","index","matrix","string","unit"]}},{}],53:[function(require,module,exports){module.exports={name:"boolean",category:"Construction",syntax:["x","boolean(x)"],description:"Convert a string or number into a boolean.",examples:["boolean(0)","boolean(1)","boolean(3)",'boolean("true")','boolean("false")',"boolean([1, 0, 1, 1])"],seealso:["bignumber","complex","index","matrix","number","string","unit"]}},{}],54:[function(require,module,exports){module.exports={name:"complex",category:"Construction",syntax:["complex()","complex(re, im)","complex(string)"],description:"Create a complex number.",examples:["complex()","complex(2, 3)",'complex("7 - 2i")'],seealso:["bignumber","boolean","index","matrix","number","string","unit"]}},{}],55:[function(require,module,exports){module.exports={name:"fraction",category:"Construction",syntax:["fraction(num)","fraction(num,den)"],description:"Create a fraction from a number or from a numerator and denominator.",examples:["fraction(0.125)","fraction(1, 3) + fraction(2, 5)"],seealso:["bignumber","boolean","complex","index","matrix","string","unit"]}},{}],56:[function(require,module,exports){module.exports={name:"index",category:"Construction",syntax:["[start]","[start:end]","[start:step:end]","[start1, start 2, ...]","[start1:end1, start2:end2, ...]","[start1:step1:end1, start2:step2:end2, ...]"],description:"Create an index to get or replace a subset of a matrix",examples:["[]","[1, 2, 3]","A = [1, 2, 3; 4, 5, 6]","A[1, :]","A[1, 2] = 50","A[0:2, 0:2] = ones(2, 2)"],seealso:["bignumber","boolean","complex","matrix,","number","range","string","unit"]}},{}],57:[function(require,module,exports){module.exports={name:"matrix",category:"Construction",syntax:["[]","[a1, b1, ...; a2, b2, ...]","matrix()",'matrix("dense")',"matrix([...])"],description:"Create a matrix.",examples:["[]","[1, 2, 3]","[1, 2, 3; 4, 5, 6]","matrix()","matrix([3, 4])",'matrix([3, 4; 5, 6], "sparse")','matrix([3, 4; 5, 6], "sparse", "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","sparse"]}},{}],58:[function(require,module,exports){module.exports={name:"number",category:"Construction",syntax:["x","number(x)"],description:"Create a number or convert a string or boolean into a number.",examples:["2","2e3","4.05","number(2)",'number("7.2")',"number(true)","number([true, false, true, true])",'number("52cm", "m")'],seealso:["bignumber","boolean","complex","fraction","index","matrix","string","unit"]}},{}],59:[function(require,module,exports){module.exports={name:"sparse",category:"Construction",syntax:["sparse()","sparse([a1, b1, ...; a1, b2, ...])",'sparse([a1, b1, ...; a1, b2, ...], "number")'],description:"Create a sparse matrix.",examples:["sparse()","sparse([3, 4; 5, 6])",'sparse([3, 0; 5, 0], "number")'],seealso:["bignumber","boolean","complex","index","number","string","unit","matrix"]}},{}],60:[function(require,module,exports){module.exports={name:"string",category:"Construction",syntax:['"text"',"string(x)"],description:"Create a string or convert a value to a string",examples:['"Hello World!"',"string(4.2)","string(3 + 2i)"],seealso:["bignumber","boolean","complex","index","matrix","number","unit"]}},{}],61:[function(require,module,exports){module.exports={name:"unit",category:"Construction",syntax:["value unit","unit(value, unit)","unit(string)"],description:"Create a unit.",examples:["5.5 mm","3 inch",'unit(7.1, "kilogram")','unit("23 deg")'],seealso:["bignumber","boolean","complex","index","matrix","number","string"]}},{}],62:[function(require,module,exports){module.exports={name:"config",category:"Core",syntax:["config()","config(options)"],description:"Get configuration or change configuration.",examples:["config()","1/3 + 1/4",'config({number: "Fraction"})',"1/3 + 1/4"],seealso:[]}},{}],63:[function(require,module,exports){module.exports={name:"import",category:"Core",syntax:["import(functions)","import(functions, options)"],description:"Import functions or constants from an object.",examples:["import({myFn: f(x)=x^2, myConstant: 32 })","myFn(2)","myConstant"],seealso:[]}},{}],64:[function(require,module,exports){module.exports={name:"typed",category:"Core",syntax:["typed(signatures)","typed(name, signatures)"],description:"Create a typed function.",examples:['double = typed({ "number, number": f(x)=x+x })',"double(2)",'double("hello")'],seealso:[]}},{}],65:[function(require,module,exports){module.exports={name:"lsolve",category:"Algebra",syntax:["x=lsolve(L, b)"],description:"Solves the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lsolve(a, b)"],seealso:["lup","lusolve","usolve","matrix","sparse"]}},{}],66:[function(require,module,exports){module.exports={name:"lup",category:"Algebra",syntax:["lup(m)"],description:"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U",examples:["lup([[2, 1], [1, 4]])","lup(matrix([[2, 1], [1, 4]]))","lup(sparse([[2, 1], [1, 4]]))"],seealso:["lusolve","lsolve","usolve","matrix","sparse","slu"]}},{}],67:[function(require,module,exports){module.exports={name:"lusolve",category:"Algebra",syntax:["x=lusolve(A, b)","x=lusolve(lu, b)"],description:"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.",examples:["a = [-2, 3; 2, 1]","b = [11, 9]","x = lusolve(a, b)"],seealso:["lup","slu","lsolve","usolve","matrix","sparse"]}},{}],68:[function(require,module,exports){module.exports={name:"slu",category:"Algebra",syntax:["slu(A, order, threshold)"],description:"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U",examples:["slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)"],seealso:["lusolve","lsolve","usolve","matrix","sparse","lup"]}},{}],69:[function(require,module,exports){module.exports={name:"usolve",category:"Algebra",syntax:["x=usolve(U, b)"],description:"Solves the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.",examples:["x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])"],seealso:["lup","lusolve","lsolve","matrix","sparse"]}},{}],70:[function(require,module,exports){module.exports={name:"abs",category:"Arithmetic",syntax:["abs(x)"],description:"Compute the absolute value.",examples:["abs(3.5)","abs(-4.2)"],seealso:["sign"]}},{}],71:[function(require,module,exports){module.exports={name:"add",category:"Operators",syntax:["x + y","add(x, y)"],description:"Add two values.",examples:["a = 2.1 + 3.6","a - 3.6","3 + 2i","3 cm + 2 inch",'"2.3" + "4"'],seealso:["subtract"]}},{}],72:[function(require,module,exports){module.exports={name:"cbrt",category:"Arithmetic",syntax:["cbrt(x)","cbrt(x, allRoots)"],description:"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned",examples:["cbrt(64)","cube(4)","cbrt(-8)","cbrt(2 + 3i)","cbrt(8i)","cbrt(8i, true)","cbrt(27 m^3)"],seealso:["square","sqrt","cube","multiply"]}},{}],73:[function(require,module,exports){module.exports={name:"ceil",category:"Arithmetic",syntax:["ceil(x)"],description:"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.",examples:["ceil(3.2)","ceil(3.8)","ceil(-4.2)"],seealso:["floor","fix","round"]}},{}],74:[function(require,module,exports){module.exports={name:"cube",category:"Arithmetic",syntax:["cube(x)"],description:"Compute the cube of a value. The cube of x is x * x * x.",examples:["cube(2)","2^3","2 * 2 * 2"],seealso:["multiply","square","pow"]}},{}],75:[function(require,module,exports){module.exports={name:"divide",category:"Operators",syntax:["x / y","divide(x, y)"],description:"Divide two values.",examples:["a = 2 / 3","a * 3","4.5 / 2","3 + 4 / 2","(3 + 4) / 2","18 km / 4.5"],seealso:["multiply"]}},{}],76:[function(require,module,exports){module.exports={name:"dotDivide",category:"Operators",syntax:["x ./ y","dotDivide(x, y)"],description:"Divide two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a ./ b"],seealso:["multiply","dotMultiply","divide"]}},{}],77:[function(require,module,exports){module.exports={name:"dotMultiply",category:"Operators",syntax:["x .* y","dotMultiply(x, y)"],description:"Multiply two values element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","b = [2, 1, 1; 3, 2, 5]","a .* b"],seealso:["multiply","divide","dotDivide"]}},{}],78:[function(require,module,exports){module.exports={name:"dotpow",category:"Operators",syntax:["x .^ y","dotpow(x, y)"],description:"Calculates the power of x to y element wise.",examples:["a = [1, 2, 3; 4, 5, 6]","a .^ 2"],seealso:["pow"]}},{}],79:[function(require,module,exports){module.exports={name:"exp",category:"Arithmetic",syntax:["exp(x)"],description:"Calculate the exponent of a value.",examples:["exp(1.3)","e ^ 1.3","log(exp(1.3))","x = 2.4","(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula"],seealso:["pow","log"]}},{}],80:[function(require,module,exports){module.exports={name:"fix",category:"Arithmetic",syntax:["fix(x)"],description:"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.",examples:["fix(3.2)","fix(3.8)","fix(-4.2)","fix(-4.8)"],seealso:["ceil","floor","round"]}},{}],81:[function(require,module,exports){module.exports={name:"floor",category:"Arithmetic",syntax:["floor(x)"],description:"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.",examples:["floor(3.2)","floor(3.8)","floor(-4.2)"],seealso:["ceil","fix","round"]}},{}],82:[function(require,module,exports){module.exports={name:"gcd",category:"Arithmetic",syntax:["gcd(a, b)","gcd(a, b, c, ...)"],description:"Compute the greatest common divisor.",examples:["gcd(8, 12)","gcd(-4, 6)","gcd(25, 15, -10)"],seealso:["lcm","xgcd"]}},{}],83:[function(require,module,exports){module.exports={name:"hypot",category:"Arithmetic",syntax:["hypot(a, b, c, ...)","hypot([a, b, c, ...])"],description:"Calculate the hypotenusa of a list with values. ",examples:["hypot(3, 4)","sqrt(3^2 + 4^2)","hypot(-2)","hypot([3, 4, 5])"],seealso:["abs","norm"]}},{}],84:[function(require,module,exports){module.exports={name:"lcm",category:"Arithmetic",syntax:["lcm(x, y)"],description:"Compute the least common multiple.",examples:["lcm(4, 6)","lcm(6, 21)","lcm(6, 21, 5)"],seealso:["gcd"]}},{}],85:[function(require,module,exports){module.exports={name:"log",category:"Arithmetic",syntax:["log(x)","log(x, base)"],description:"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).",examples:["log(3.5)","a = log(2.4)","exp(a)","10 ^ 4","log(10000, 10)","log(10000) / log(10)","b = log(1024, 2)","2 ^ b"],seealso:["exp","log10"]}},{}],86:[function(require,module,exports){module.exports={name:"log10",category:"Arithmetic",syntax:["log10(x)"],description:"Compute the 10-base logarithm of a value.",examples:["log10(0.00001)","log10(10000)","10 ^ 4","log(10000) / log(10)","log(10000, 10)"],seealso:["exp","log"]}},{}],87:[function(require,module,exports){module.exports={name:"mod",category:"Operators",syntax:["x % y","x mod y","mod(x, y)"],description:"Calculates the modulus, the remainder of an integer division.",examples:["7 % 3","11 % 2","10 mod 4","function isOdd(x) = x % 2","isOdd(2)","isOdd(3)"],seealso:["divide"]}},{}],88:[function(require,module,exports){module.exports={name:"multiply",category:"Operators",syntax:["x * y","multiply(x, y)"],description:"multiply two values.",examples:["a = 2.1 * 3.4","a / 3.4","2 * 3 + 4","2 * (3 + 4)","3 * 2.1 km"],seealso:["divide"]}},{}],89:[function(require,module,exports){module.exports={name:"norm",category:"Arithmetic",syntax:["norm(x)","norm(x, p)"],description:"Calculate the norm of a number, vector or matrix.",examples:["abs(-3.5)","norm(-3.5)","norm(3 - 4i))","norm([1, 2, -3], Infinity)","norm([1, 2, -3], -Infinity)","norm([3, 4], 2)","norm([[1, 2], [3, 4]], 1)","norm([[1, 2], [3, 4]], 'inf')","norm([[1, 2], [3, 4]], 'fro')"]}},{}],90:[function(require,module,exports){module.exports={name:"nthRoot",category:"Arithmetic",syntax:["nthRoot(a)","nthRoot(a, root)"],description:"Calculate the nth root of a value. "+"The principal nth root of a positive real number A, "+'is the positive real solution of the equation "x^root = A".',examples:["4 ^ 3","nthRoot(64, 3)","nthRoot(9, 2)","sqrt(9)"],seealso:["sqrt","pow"]}},{}],91:[function(require,module,exports){module.exports={name:"pow",category:"Operators",syntax:["x ^ y","pow(x, y)"],description:"Calculates the power of x to y, x^y.",examples:["2^3 = 8","2*2*2","1 + e ^ (pi * i)"],seealso:["multiply"]}},{}],92:[function(require,module,exports){module.exports={name:"round",category:"Arithmetic",syntax:["round(x)","round(x, n)"],description:"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.",examples:["round(3.2)","round(3.8)","round(-4.2)","round(-4.8)","round(pi, 3)","round(123.45678, 2)"],seealso:["ceil","floor","fix"]}},{}],93:[function(require,module,exports){module.exports={name:"sign",category:"Arithmetic",syntax:["sign(x)"],description:"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.",examples:["sign(3.5)","sign(-4.2)","sign(0)"],seealso:["abs"]}},{}],94:[function(require,module,exports){module.exports={name:"sqrt",category:"Arithmetic",syntax:["sqrt(x)"],description:"Compute the square root value. If x = y * y, then y is the square root of x.",examples:["sqrt(25)","5 * 5","sqrt(-1)"],seealso:["square","multiply"]}},{}],95:[function(require,module,exports){module.exports={name:"square",category:"Arithmetic",syntax:["square(x)"],description:"Compute the square of a value. The square of x is x * x.",examples:["square(3)","sqrt(9)","3^2","3 * 3"],seealso:["multiply","pow","sqrt","cube"]}},{}],96:[function(require,module,exports){module.exports={name:"subtract",category:"Operators",syntax:["x - y","subtract(x, y)"],description:"subtract two values.",examples:["a = 5.3 - 2","a + 2","2/3 - 1/6","2 * 3 - 3","2.1 km - 500m"],seealso:["add"]}},{}],97:[function(require,module,exports){module.exports={name:"unaryMinus",category:"Operators",syntax:["-x","unaryMinus(x)"],description:"Inverse the sign of a value. Converts booleans and strings to numbers.",examples:["-4.5","-(-5.6)",'-"22"'],seealso:["add","subtract","unaryPlus"]}},{}],98:[function(require,module,exports){module.exports={name:"unaryPlus",category:"Operators",syntax:["+x","unaryPlus(x)"],description:"Converts booleans and strings to numbers.",examples:["+true",'+"2"'],seealso:["add","subtract","unaryMinus"]}},{}],99:[function(require,module,exports){module.exports={name:"xgcd",category:"Arithmetic",syntax:["xgcd(a, b)"],description:"Calculate the extended greatest common divisor for two values",examples:["xgcd(8, 12)","gcd(8, 12)","xgcd(36163, 21199)"],seealso:["gcd","lcm"]}},{}],100:[function(require,module,exports){module.exports={name:"bitAnd",category:"Bitwise",syntax:["x & y","bitAnd(x, y)"],description:"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0",examples:["5 & 3","bitAnd(53, 131)","[1, 12, 31] & 42"],seealso:["bitNot","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},{}],101:[function(require,module,exports){module.exports={name:"bitNot",category:"Bitwise",syntax:["~x","bitNot(x)"],description:"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.",examples:["~1","~2","bitNot([2, -3, 4])"],seealso:["bitAnd","bitOr","bitXor","leftShift","rightArithShift","rightLogShift"]}},{}],102:[function(require,module,exports){module.exports={name:"bitOr",category:"Bitwise",syntax:["x | y","bitOr(x, y)"],description:"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.",examples:["5 | 3","bitOr([1, 2, 3], 4)"],seealso:["bitAnd","bitNot","bitXor","leftShift","rightArithShift","rightLogShift"]}},{}],103:[function(require,module,exports){module.exports={name:"bitXor",category:"Bitwise",syntax:["bitXor(x, y)"],description:"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.",examples:["bitOr(1, 2)","bitXor([2, 3, 4], 4)"],seealso:["bitAnd","bitNot","bitOr","leftShift","rightArithShift","rightLogShift"]}},{}],104:[function(require,module,exports){module.exports={name:"leftShift",category:"Bitwise",syntax:["x << y","leftShift(x, y)"],description:"Bitwise left logical shift of a value x by y number of bits.",examples:["4 << 1","8 >> 1"],seealso:["bitAnd","bitNot","bitOr","bitXor","rightArithShift","rightLogShift"]}},{}],105:[function(require,module,exports){module.exports={name:"rightArithShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right arithmetic shift of a value x by y number of bits.",examples:["8 >> 1","4 << 1","-12 >> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightLogShift"]}},{}],106:[function(require,module,exports){module.exports={name:"rightLogShift",category:"Bitwise",syntax:["x >> y","leftShift(x, y)"],description:"Bitwise right logical shift of a value x by y number of bits.",examples:["8 >>> 1","4 << 1","-12 >>> 2"],seealso:["bitAnd","bitNot","bitOr","bitXor","leftShift","rightArithShift"]}},{}],107:[function(require,module,exports){module.exports={name:"bellNumbers",category:"Combinatorics",syntax:["bellNumbers(n)"],description:"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["bellNumbers(3)","bellNumbers(8)"],seealso:["stirlingS2"]}},{}],108:[function(require,module,exports){module.exports={name:"catalan",category:"Combinatorics",syntax:["catalan(n)"],description:"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.",examples:["catalan(3)","catalan(8)"],seealso:["bellNumbers"]}},{}],109:[function(require,module,exports){module.exports={name:"composition",category:"Combinatorics",syntax:["composition(n, k)"],description:"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.",examples:["composition(5, 3)"],seealso:["combinations"]}},{}],110:[function(require,module,exports){module.exports={name:"stirlingS2",category:"Combinatorics",syntax:["stirlingS2(n, k)"],description:"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.",examples:["stirlingS2(5, 3)"],seealso:["bellNumbers"]}},{}],111:[function(require,module,exports){module.exports={name:"arg",category:"Complex",syntax:["arg(x)"],description:"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).",examples:["arg(2 + 2i)","atan2(3, 2)","arg(2 + 3i)"],seealso:["re","im","conj","abs"]}},{}],112:[function(require,module,exports){module.exports={name:"conj",category:"Complex",syntax:["conj(x)"],description:"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.",examples:["conj(2 + 3i)","conj(2 - 3i)","conj(-5.2i)"],seealso:["re","im","abs","arg"]}},{}],113:[function(require,module,exports){module.exports={name:"im",category:"Complex",syntax:["im(x)"],description:"Get the imaginary part of a complex number.",examples:["im(2 + 3i)","re(2 + 3i)","im(-5.2i)","im(2.4)"],seealso:["re","conj","abs","arg"]}},{}],114:[function(require,module,exports){module.exports={name:"re",category:"Complex",syntax:["re(x)"],description:"Get the real part of a complex number.",examples:["re(2 + 3i)","im(2 + 3i)","re(-5.2i)","re(2.4)"],seealso:["im","conj","abs","arg"]}},{}],115:[function(require,module,exports){module.exports={name:"eval",category:"Expression",syntax:["eval(expression)","eval([expr1, expr2, expr3, ...])"],description:"Evaluate an expression or an array with expressions.",examples:['eval("2 + 3")','eval("sqrt(" + 4 + ")")'],seealso:[]}},{}],116:[function(require,module,exports){module.exports={name:"help",category:"Expression",syntax:["help(object)","help(string)"],description:"Display documentation on a function or data type.",examples:["help(sqrt)",'help("complex")'],seealso:[]}},{}],117:[function(require,module,exports){module.exports={name:"distance",category:"Geometry",syntax:["distance([x1, y1], [x2, y2])","distance([[x1, y1], [x2, y2])"],description:"Calculates the Euclidean distance between two points.",examples:["distance([0,0], [4,4])","distance([[0,0], [4,4]])"],seealso:[]}},{}],118:[function(require,module,exports){module.exports={name:"intersect",category:"Geometry",syntax:["intersect(expr1, expr2, expr3, expr4)","intersect(expr1, expr2, expr3)"],description:"Computes the intersection point of lines and/or planes.",examples:["intersect([0, 0], [10, 10], [10, 0], [0, 10])","intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])"],seealso:[]}},{}],119:[function(require,module,exports){module.exports={name:"and",category:"Logical",syntax:["x and y","and(x, y)"],description:"Logical and. Test whether two values are both defined with a nonzero/nonempty value.",examples:["true and false","true and true","2 and 4"],seealso:["not","or","xor"]}},{}],120:[function(require,module,exports){module.exports={name:"not",category:"Logical",syntax:["not x","not(x)"],description:"Logical not. Flips the boolean value of given argument.",
examples:["not true","not false","not 2","not 0"],seealso:["and","or","xor"]}},{}],121:[function(require,module,exports){module.exports={name:"or",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical or. Test if at least one value is defined with a nonzero/nonempty value.",examples:["true or false","false or false","0 or 4"],seealso:["not","and","xor"]}},{}],122:[function(require,module,exports){module.exports={name:"xor",category:"Logical",syntax:["x or y","or(x, y)"],description:"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.",examples:["true xor false","false xor false","true xor true","0 or 4"],seealso:["not","and","or"]}},{}],123:[function(require,module,exports){module.exports={name:"concat",category:"Matrix",syntax:["concat(A, B, C, ...)","concat(A, B, C, ..., dim)"],description:"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.",examples:["A = [1, 2; 5, 6]","B = [3, 4; 7, 8]","concat(A, B)","concat(A, B, 1)","concat(A, B, 2)"],seealso:["det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},{}],124:[function(require,module,exports){module.exports={name:"cross",category:"Matrix",syntax:["cross(A, B)"],description:"Calculate the cross product for two vectors in three dimensional space.",examples:["cross([1, 1, 0], [0, 1, 1])","cross([3, -3, 1], [4, 9, 2])","cross([2, 3, 4], [5, 6, 7])"],seealso:["multiply","dot"]}},{}],125:[function(require,module,exports){module.exports={name:"det",category:"Matrix",syntax:["det(x)"],description:"Calculate the determinant of a matrix",examples:["det([1, 2; 3, 4])","det([-2, 2, 3; -1, 1, 3; 2, 0, -1])"],seealso:["concat","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},{}],126:[function(require,module,exports){module.exports={name:"diag",category:"Matrix",syntax:["diag(x)","diag(x, k)"],description:"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.",examples:["diag(1:3)","diag(1:3, 1)","a = [1, 2, 3; 4, 5, 6; 7, 8, 9]","diag(a)"],seealso:["concat","det","eye","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},{}],127:[function(require,module,exports){module.exports={name:"dot",category:"Matrix",syntax:["dot(A, B)"],description:"Calculate the dot product of two vectors. "+"The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] "+"is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn",examples:["dot([2, 4, 1], [2, 2, 3])","[2, 4, 1] * [2, 2, 3]"],seealso:["multiply","cross"]}},{}],128:[function(require,module,exports){module.exports={name:"eye",category:"Matrix",syntax:["eye(n)","eye(m, n)","eye([m, n])","eye"],description:"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.",examples:["eye(3)","eye(3, 5)","a = [1, 2, 3; 4, 5, 6]","eye(size(a))"],seealso:["concat","det","diag","inv","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},{}],129:[function(require,module,exports){module.exports={name:"filter",category:"Matrix",syntax:["filter(x, test)"],description:"Filter items in a matrix.",examples:["isPositive(x) = x > 0","filter([6, -2, -1, 4, 3], isPositive)","filter([6, -2, 0, 1, 0], x != 0)"],seealso:["sort","map","forEach"]}},{}],130:[function(require,module,exports){module.exports={name:"flatten",category:"Matrix",syntax:["flatten(x)"],description:"Flatten a multi dimensional matrix into a single dimensional matrix.",examples:["a = [1, 2, 3; 4, 5, 6]","size(a)","b = flatten(a)","size(b)"],seealso:["concat","resize","size","squeeze"]}},{}],131:[function(require,module,exports){module.exports={name:"forEach",category:"Matrix",syntax:["forEach(x, callback)"],description:"Iterates over all elements of a matrix/array, and executes the given callback function.",examples:["forEach([1, 2, 3], function(val) { console.log(val) })"],seealso:["map","sort","filter"]}},{}],132:[function(require,module,exports){module.exports={name:"inv",category:"Matrix",syntax:["inv(x)"],description:"Calculate the inverse of a matrix",examples:["inv([1, 2; 3, 4])","inv(4)","1 / 4"],seealso:["concat","det","diag","eye","ones","range","size","squeeze","subset","trace","transpose","zeros"]}},{}],133:[function(require,module,exports){module.exports={name:"map",category:"Matrix",syntax:["map(x, callback)"],description:"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.",examples:["map([1, 2, 3], function(val) { return value * value })"],seealso:["filter","forEach"]}},{}],134:[function(require,module,exports){module.exports={name:"ones",category:"Matrix",syntax:["ones(m)","ones(m, n)","ones(m, n, p, ...)","ones([m])","ones([m, n])","ones([m, n, p, ...])","ones"],description:"Create a matrix containing ones.",examples:["ones(3)","ones(3, 5)","ones([2,3]) * 4.5","a = [1, 2, 3; 4, 5, 6]","ones(size(a))"],seealso:["concat","det","diag","eye","inv","range","size","squeeze","subset","trace","transpose","zeros"]}},{}],135:[function(require,module,exports){module.exports={name:"partitionSelect",category:"Matrix",syntax:["partitionSelect(x, k)","partitionSelect(x, k, compare)"],description:"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.",examples:["partitionSelect([5, 10, 1], 2)",'partitionSelect(["C", "B", "A", "D"], 1)'],seealso:["sort"]}},{}],136:[function(require,module,exports){module.exports={name:"range",category:"Type",syntax:["start:end","start:step:end","range(start, end)","range(start, end, step)","range(string)"],description:"Create a range. Lower bound of the range is included, upper bound is excluded.",examples:["1:5","3:-1:-3","range(3, 7)","range(0, 12, 2)",'range("4:10")',"a = [1, 2, 3, 4; 5, 6, 7, 8]","a[1:2, 1:2]"],seealso:["concat","det","diag","eye","inv","ones","size","squeeze","subset","trace","transpose","zeros"]}},{}],137:[function(require,module,exports){module.exports={name:"resize",category:"Matrix",syntax:["resize(x, size)","resize(x, size, defaultValue)"],description:"Resize a matrix.",examples:["resize([1,2,3,4,5], [3])","resize([1,2,3], [5])","resize([1,2,3], [5], -1)","resize(2, [2, 3])",'resize("hello", [8], "!")'],seealso:["size","subset","squeeze"]}},{}],138:[function(require,module,exports){module.exports={name:"size",category:"Matrix",syntax:["size(x)"],description:"Calculate the size of a matrix.",examples:["size(2.3)",'size("hello world")',"a = [1, 2; 3, 4; 5, 6]","size(a)","size(1:6)"],seealso:["concat","det","diag","eye","inv","ones","range","squeeze","subset","trace","transpose","zeros"]}},{}],139:[function(require,module,exports){module.exports={name:"sort",category:"Matrix",syntax:["sort(x)","sort(x, compare)"],description:'Sort the items in a matrix. Compare can be a string "asc" or "desc", or a custom sort function.',examples:["sort([5, 10, 1])",'sort(["C", "B", "A", "D"])',"sortByLength(a, b) = size(a)[1] - size(b)[1]",'sort(["Langdon", "Tom", "Sara"], sortByLength)'],seealso:["map","filter","forEach"]}},{}],140:[function(require,module,exports){module.exports={name:"squeeze",category:"Matrix",syntax:["squeeze(x)"],description:"Remove inner and outer singleton dimensions from a matrix.",examples:["a = zeros(3,2,1)","size(squeeze(a))","b = zeros(1,1,3)","size(squeeze(b))"],seealso:["concat","det","diag","eye","inv","ones","range","size","subset","trace","transpose","zeros"]}},{}],141:[function(require,module,exports){module.exports={name:"subset",category:"Matrix",syntax:["value(index)","value(index) = replacement","subset(value, [index])","subset(value, [index], replacement)"],description:"Get or set a subset of a matrix or string. "+"Indexes are one-based. "+"Both the ranges lower-bound and upper-bound are included.",examples:["d = [1, 2; 3, 4]","e = []","e[1, 1:2] = [5, 6]","e[2, :] = [7, 8]","f = d * e","f[2, 1]","f[:, 1]"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","trace","transpose","zeros"]}},{}],142:[function(require,module,exports){module.exports={name:"trace",category:"Matrix",syntax:["trace(A)"],description:"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.",examples:["A = [1, 2, 3; -1, 2, 3; 2, 0, 3]","trace(A)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","transpose","zeros"]}},{}],143:[function(require,module,exports){module.exports={name:"transpose",category:"Matrix",syntax:["x'","transpose(x)"],description:"Transpose a matrix",examples:["a = [1, 2, 3; 4, 5, 6]","a'","transpose(a)"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","zeros"]}},{}],144:[function(require,module,exports){module.exports={name:"zeros",category:"Matrix",syntax:["zeros(m)","zeros(m, n)","zeros(m, n, p, ...)","zeros([m])","zeros([m, n])","zeros([m, n, p, ...])","zeros"],description:"Create a matrix containing zeros.",examples:["zeros(3)","zeros(3, 5)","a = [1, 2, 3; 4, 5, 6]","zeros(size(a))"],seealso:["concat","det","diag","eye","inv","ones","range","size","squeeze","subset","trace","transpose"]}},{}],145:[function(require,module,exports){module.exports={name:"combinations",category:"Probability",syntax:["combinations(n, k)"],description:"Compute the number of combinations of n items taken k at a time",examples:["combinations(7, 5)"],seealso:["permutations","factorial"]}},{}],146:[function(require,module,exports){module.exports={name:"factorial",category:"Probability",syntax:["kldivergence(x, y)"],description:"Compute the factorial of a value",examples:["5!","5 * 4 * 3 * 2 * 1","3!"],seealso:["combinations","permutations","gamma"]}},{}],147:[function(require,module,exports){module.exports={name:"gamma",category:"Probability",syntax:["gamma(n)"],description:"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.",examples:["gamma(4)","3!","gamma(1/2)","sqrt(pi)"],seealso:["factorial"]}},{}],148:[function(require,module,exports){module.exports={name:"kldivergence",category:"Probability",syntax:["n!","factorial(n)"],description:"Calculate the Kullback-Leibler (KL) divergence between two distributions.",examples:["math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])"],seealso:[]}},{}],149:[function(require,module,exports){module.exports={name:"multinomial",category:"Probability",syntax:["multinomial(A)"],description:"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai <= 0.",examples:["multinomial([1, 2, 1])"],seealso:["combinations","factorial"]}},{}],150:[function(require,module,exports){module.exports={name:"permutations",category:"Probability",syntax:["permutations(n)","permutations(n, k)"],description:"Compute the number of permutations of n items taken k at a time",examples:["permutations(5)","permutations(5, 3)"],seealso:["combinations","factorial"]}},{}],151:[function(require,module,exports){module.exports={name:"pickRandom",category:"Probability",syntax:["pickRandom(array)"],description:"Pick a random entry from a given array.",examples:["pickRandom(0:10)","pickRandom([1, 3, 1, 6])"],seealso:["random","randomInt"]}},{}],152:[function(require,module,exports){module.exports={name:"random",category:"Probability",syntax:["random()","random(max)","random(min, max)","random(size)","random(size, max)","random(size, min, max)"],description:"Return a random number.",examples:["random()","random(10, 20)","random([2, 3])"],seealso:["pickRandom","randomInt"]}},{}],153:[function(require,module,exports){module.exports={name:"randInt",category:"Probability",syntax:["randInt(max)","randInt(min, max)","randInt(size)","randInt(size, max)","randInt(size, min, max)"],description:"Return a random integer number",examples:["randInt(10, 20)","randInt([2, 3], 10)"],seealso:["pickRandom","random"]}},{}],154:[function(require,module,exports){module.exports={name:"compare",category:"Relational",syntax:["compare(x, y)"],description:"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.",examples:["compare(2, 3)","compare(3, 2)","compare(2, 2)","compare(5cm, 40mm)","compare(2, [1, 2, 3])"],seealso:["equal","unequal","smaller","smallerEq","largerEq"]}},{}],155:[function(require,module,exports){module.exports={name:"deepEqual",category:"Relational",syntax:["deepEqual(x, y)"],description:"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.",examples:["[1,3,4] == [1,3,4]","[1,3,4] == [1,3]"],seealso:["equal","unequal","smaller","larger","smallerEq","largerEq","compare"]}},{}],156:[function(require,module,exports){module.exports={name:"equal",category:"Relational",syntax:["x == y","equal(x, y)"],description:"Check equality of two values. Returns true if the values are equal, and false if not.",examples:["2+2 == 3","2+2 == 4","a = 3.2","b = 6-2.8","a == b","50cm == 0.5m"],seealso:["unequal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},{}],157:[function(require,module,exports){module.exports={name:"larger",category:"Relational",syntax:["x > y","larger(x, y)"],description:"Check if value x is larger than y. Returns true if x is larger than y, and false if not.",examples:["2 > 3","5 > 2*2","a = 3.3","b = 6-2.8","(a > b)","(b < a)","5 cm > 2 inch"],seealso:["equal","unequal","smaller","smallerEq","largerEq","compare"]}},{}],158:[function(require,module,exports){module.exports={name:"largerEq",category:"Relational",syntax:["x >= y","largerEq(x, y)"],description:"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.",examples:["2 > 1+1","2 >= 1+1","a = 3.2","b = 6-2.8","(a > b)"],seealso:["equal","unequal","smallerEq","smaller","largerEq","compare"]}},{}],159:[function(require,module,exports){module.exports={name:"smaller",category:"Relational",syntax:["x < y","smaller(x, y)"],description:"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 3","5 < 2*2","a = 3.3","b = 6-2.8","(a < b)","5 cm < 2 inch"],seealso:["equal","unequal","larger","smallerEq","largerEq","compare"]}},{}],160:[function(require,module,exports){module.exports={name:"smallerEq",category:"Relational",syntax:["x <= y","smallerEq(x, y)"],description:"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.",examples:["2 < 1+1","2 <= 1+1","a = 3.2","b = 6-2.8","(a < b)"],seealso:["equal","unequal","larger","smaller","largerEq","compare"]}},{}],161:[function(require,module,exports){module.exports={name:"unequal",category:"Relational",syntax:["x != y","unequal(x, y)"],description:"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.",examples:["2+2 != 3","2+2 != 4","a = 3.2","b = 6-2.8","a != b","50cm != 0.5m","5 cm != 2 inch"],seealso:["equal","smaller","larger","smallerEq","largerEq","compare","deepEqual"]}},{}],162:[function(require,module,exports){module.exports={name:"max",category:"Statistics",syntax:["max(a, b, c, ...)","max(A)","max(A, dim)"],description:"Compute the maximum value of a list of values.",examples:["max(2, 3, 4, 1)","max([2, 3, 4, 1])","max([2, 5; 4, 3])","max([2, 5; 4, 3], 1)","max([2, 5; 4, 3], 2)","max(2.7, 7.1, -4.5, 2.0, 4.1)","min(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["mean","median","min","prod","std","sum","var"]}},{}],163:[function(require,module,exports){module.exports={name:"mean",category:"Statistics",syntax:["mean(a, b, c, ...)","mean(A)","mean(A, dim)"],description:"Compute the arithmetic mean of a list of values.",examples:["mean(2, 3, 4, 1)","mean([2, 3, 4, 1])","mean([2, 5; 4, 3])","mean([2, 5; 4, 3], 1)","mean([2, 5; 4, 3], 2)","mean([1.0, 2.7, 3.2, 4.0])"],seealso:["max","median","min","prod","std","sum","var"]}},{}],164:[function(require,module,exports){module.exports={name:"median",category:"Statistics",syntax:["median(a, b, c, ...)","median(A)"],description:"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.",examples:["median(5, 2, 7)","median([3, -1, 5, 7])"],seealso:["max","mean","min","prod","std","sum","var"]}},{}],165:[function(require,module,exports){module.exports={name:"min",category:"Statistics",syntax:["min(a, b, c, ...)","min(A)","min(A, dim)"],description:"Compute the minimum value of a list of values.",examples:["min(2, 3, 4, 1)","min([2, 3, 4, 1])","min([2, 5; 4, 3])","min([2, 5; 4, 3], 1)","min([2, 5; 4, 3], 2)","min(2.7, 7.1, -4.5, 2.0, 4.1)","max(2.7, 7.1, -4.5, 2.0, 4.1)"],seealso:["max","mean","median","prod","std","sum","var"]}},{}],166:[function(require,module,exports){module.exports={name:"mode",category:"Statistics",syntax:["mode(a, b, c, ...)","mode(A)","mode(A, a, b, B, c, ...)"],description:"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.",examples:["mode(5, 2, 7)","mode([3, -1, 5, 7])"],seealso:["max","mean","min","median","prod","std","sum","var"]}},{}],167:[function(require,module,exports){module.exports={name:"prod",category:"Statistics",syntax:["prod(a, b, c, ...)","prod(A)"],description:"Compute the product of all values.",examples:["prod(2, 3, 4)","prod([2, 3, 4])","prod([2, 5; 4, 3])"],seealso:["max","mean","min","median","min","std","sum","var"]}},{}],168:[function(require,module,exports){module.exports={name:"quantileSeq",category:"Statistics",syntax:["quantileSeq(A, prob[, sorted])","quantileSeq(A, [prob1, prob2, ...][, sorted])","quantileSeq(A, N[, sorted])"],description:"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \n\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.",examples:["quantileSeq([3, -1, 5, 7], 0.5)","quantileSeq([3, -1, 5, 7], [1/3, 2/3])","quantileSeq([3, -1, 5, 7], 2)","quantileSeq([-1, 3, 5, 7], 0.5, true)"],seealso:["mean","median","min","max","prod","std","sum","var"]}},{}],169:[function(require,module,exports){module.exports={name:"std",category:"Statistics",syntax:["std(a, b, c, ...)","std(A)","std(A, normalization)"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["std(2, 4, 6)","std([2, 4, 6, 8])",'std([2, 4, 6, 8], "uncorrected")','std([2, 4, 6, 8], "biased")',"std([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","sum","var"]}},{}],170:[function(require,module,exports){module.exports={name:"sum",category:"Statistics",syntax:["sum(a, b, c, ...)","sum(A)"],description:"Compute the sum of all values.",examples:["sum(2, 3, 4, 1)","sum([2, 3, 4, 1])","sum([2, 5; 4, 3])"],seealso:["max","mean","median","min","prod","std","sum","var"]}},{}],171:[function(require,module,exports){module.exports={name:"var",category:"Statistics",syntax:["var(a, b, c, ...)","var(A)","var(A, normalization)"],description:'Compute the variance of all values. Optional parameter normalization can be "unbiased" (default), "uncorrected", or "biased".',examples:["var(2, 4, 6)","var([2, 4, 6, 8])",'var([2, 4, 6, 8], "uncorrected")','var([2, 4, 6, 8], "biased")',"var([1, 2, 3; 4, 5, 6])"],seealso:["max","mean","min","median","min","prod","std","sum"]}},{}],172:[function(require,module,exports){module.exports={name:"acos",category:"Trigonometry",syntax:["acos(x)"],description:"Compute the inverse cosine of a value in radians.",examples:["acos(0.5)","acos(cos(2.3))"],seealso:["cos","atan","asin"]}},{}],173:[function(require,module,exports){module.exports={name:"acosh",category:"Trigonometry",syntax:["acosh(x)"],description:"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.",examples:["acosh(1.5)"],seealso:["cosh","asinh","atanh"]}},{}],174:[function(require,module,exports){module.exports={name:"acot",category:"Trigonometry",syntax:["acot(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acot(0.5)","acot(cot(0.5))","acot(2)"],seealso:["cot","atan"]}},{}],175:[function(require,module,exports){module.exports={name:"acoth",category:"Trigonometry",syntax:["acoth(x)"],description:"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.",examples:["acoth(0.5)"],seealso:["acsch","asech"]}},{}],176:[function(require,module,exports){module.exports={name:"acsc",category:"Trigonometry",syntax:["acsc(x)"],description:"Calculate the inverse cotangent of a value.",examples:["acsc(0.5)","acsc(csc(0.5))","acsc(2)"],seealso:["csc","asin","asec"]}},{}],177:[function(require,module,exports){module.exports={name:"acsch",category:"Trigonometry",syntax:["acsch(x)"],description:"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.",examples:["acsch(0.5)"],seealso:["asech","acoth"]}},{}],178:[function(require,module,exports){module.exports={name:"asec",category:"Trigonometry",syntax:["asec(x)"],description:"Calculate the inverse secant of a value.",examples:["asec(0.5)","asec(sec(0.5))","asec(2)"],seealso:["acos","acot","acsc"]}},{}],179:[function(require,module,exports){module.exports={name:"asech",category:"Trigonometry",syntax:["asech(x)"],description:"Calculate the inverse secant of a value.",examples:["asech(0.5)"],seealso:["acsch","acoth"]}},{}],180:[function(require,module,exports){module.exports={name:"asin",category:"Trigonometry",syntax:["asin(x)"],description:"Compute the inverse sine of a value in radians.",examples:["asin(0.5)","asin(sin(2.3))"],seealso:["sin","acos","atan"]}},{}],181:[function(require,module,exports){module.exports={name:"asinh",category:"Trigonometry",syntax:["asinh(x)"],description:"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.",examples:["asinh(0.5)"],seealso:["acosh","atanh"]}},{}],182:[function(require,module,exports){module.exports={name:"atan",category:"Trigonometry",syntax:["atan(x)"],description:"Compute the inverse tangent of a value in radians.",examples:["atan(0.5)","atan(tan(2.3))"],seealso:["tan","acos","asin"]}},{}],183:[function(require,module,exports){module.exports={name:"atan2",category:"Trigonometry",syntax:["atan2(y, x)"],description:"Computes the principal value of the arc tangent of y/x in radians.",examples:["atan2(2, 2) / pi","angle = 60 deg in rad","x = cos(angle)","y = sin(angle)","atan2(y, x)"],seealso:["sin","cos","tan"]}},{}],184:[function(require,module,exports){module.exports={name:"atanh",category:"Trigonometry",syntax:["atanh(x)"],description:"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.",examples:["atanh(0.5)"],seealso:["acosh","asinh"]}},{}],185:[function(require,module,exports){module.exports={name:"cos",category:"Trigonometry",syntax:["cos(x)"],description:"Compute the cosine of x in radians.",examples:["cos(2)","cos(pi / 4) ^ 2","cos(180 deg)","cos(60 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["acos","sin","tan"]}},{}],186:[function(require,module,exports){module.exports={name:"cosh",category:"Trigonometry",syntax:["cosh(x)"],description:"Compute the hyperbolic cosine of x in radians.",examples:["cosh(0.5)"],seealso:["sinh","tanh","coth"]}},{}],187:[function(require,module,exports){module.exports={name:"cot",category:"Trigonometry",syntax:["cot(x)"],description:"Compute the cotangent of x in radians. Defined as 1/tan(x)",examples:["cot(2)","1 / tan(2)"],seealso:["sec","csc","tan"]}},{}],188:[function(require,module,exports){module.exports={name:"coth",category:"Trigonometry",syntax:["coth(x)"],description:"Compute the hyperbolic cotangent of x in radians.",examples:["coth(2)","1 / tanh(2)"],seealso:["sech","csch","tanh"]}},{}],189:[function(require,module,exports){module.exports={name:"csc",category:"Trigonometry",syntax:["csc(x)"],description:"Compute the cosecant of x in radians. Defined as 1/sin(x)",examples:["csc(2)","1 / sin(2)"],seealso:["sec","cot","sin"]}},{}],190:[function(require,module,exports){module.exports={name:"csch",category:"Trigonometry",syntax:["csch(x)"],description:"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)",examples:["csch(2)","1 / sinh(2)"],seealso:["sech","coth","sinh"]}},{}],191:[function(require,module,exports){module.exports={name:"sec",category:"Trigonometry",syntax:["sec(x)"],description:"Compute the secant of x in radians. Defined as 1/cos(x)",examples:["sec(2)","1 / cos(2)"],seealso:["cot","csc","cos"]}},{}],192:[function(require,module,exports){module.exports={name:"sech",category:"Trigonometry",syntax:["sech(x)"],description:"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)",examples:["sech(2)","1 / cosh(2)"],seealso:["coth","csch","cosh"]}},{}],193:[function(require,module,exports){module.exports={name:"sin",category:"Trigonometry",syntax:["sin(x)"],description:"Compute the sine of x in radians.",examples:["sin(2)","sin(pi / 4) ^ 2","sin(90 deg)","sin(30 deg)","sin(0.2)^2 + cos(0.2)^2"],seealso:["asin","cos","tan"]}},{}],194:[function(require,module,exports){module.exports={name:"sinh",category:"Trigonometry",syntax:["sinh(x)"],description:"Compute the hyperbolic sine of x in radians.",examples:["sinh(0.5)"],seealso:["cosh","tanh"]}},{}],195:[function(require,module,exports){module.exports={name:"tan",category:"Trigonometry",syntax:["tan(x)"],description:"Compute the tangent of x in radians.",examples:["tan(0.5)","sin(0.5) / cos(0.5)","tan(pi / 4)","tan(45 deg)"],seealso:["atan","sin","cos"]}},{}],196:[function(require,module,exports){module.exports={name:"tanh",category:"Trigonometry",syntax:["tanh(x)"],description:"Compute the hyperbolic tangent of x in radians.",examples:["tanh(0.5)","sinh(0.5) / cosh(0.5)"],seealso:["sinh","cosh"]}},{}],197:[function(require,module,exports){module.exports={name:"to",category:"Units",syntax:["x to unit","to(x, unit)"],description:"Change the unit of a value.",examples:["5 inch to cm","3.2kg to g","16 bytes in bits"],seealso:[]}},{}],198:[function(require,module,exports){module.exports={name:"clone",category:"Utils",syntax:["clone(x)"],description:"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices",examples:["clone(3.5)","clone(2 - 4i)","clone(45 deg)","clone([1, 2; 3, 4])",'clone("hello world")'],seealso:[]}},{}],199:[function(require,module,exports){module.exports={name:"format",category:"Utils",syntax:["format(value)","format(value, precision)"],description:"Format a value of any type as string.",examples:["format(2.3)","format(3 - 4i)","format([])","format(pi, 3)"],seealso:["print"]}},{}],200:[function(require,module,exports){module.exports={name:"isInteger",category:"Utils",syntax:["isInteger(x)"],description:"Test whether a value is an integer number.",examples:["isInteger(2)","isInteger(3.5)","isInteger([3, 0.5, -2])"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},{}],201:[function(require,module,exports){module.exports={name:"isNaN",category:"Utils",syntax:["isNaN(x)"],description:"Test whether a value is NaN (not a number)",examples:["isNaN(2)","isNaN(0 / 0)","isNaN(NaN)","isNaN(Infinity)"],seealso:["isNegative","isNumeric","isPositive","isZero"]}},{}],202:[function(require,module,exports){module.exports={name:"isNegative",category:"Utils",syntax:["isNegative(x)"],description:"Test whether a value is negative: smaller than zero.",examples:["isNegative(2)","isNegative(0)","isNegative(-4)","isNegative([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isPositive","isZero"]}},{}],203:[function(require,module,exports){module.exports={name:"isNumeric",category:"Utils",syntax:["isNumeric(x)"],description:"Test whether a value is a numeric value. "+"Returns true when the input is a number, BigNumber, Fraction, or boolean.",examples:["isNumeric(2)","isNumeric(0)","isNumeric(bignumber(500))","isNumeric(fraction(0.125))",'isNumeric("3")',"isNumeric(2 + 3i)",'isNumeric([2.3, "foo", false])'],seealso:["isInteger","isZero","isNegative","isPositive","isNaN"]}},{}],204:[function(require,module,exports){module.exports={name:"isPositive",category:"Utils",syntax:["isPositive(x)"],description:"Test whether a value is positive: larger than zero.",examples:["isPositive(2)","isPositive(0)","isPositive(-4)","isPositive([3, 0.5, -2])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},{}],205:[function(require,module,exports){module.exports={name:"isPrime",category:"Utils",syntax:["isPrime(x)"],description:"Test whether a value is prime: has no divisors other than itself and one.",examples:["isPrime(3)","isPrime(-2)","isPrime([2, 17, 100])"],seealso:["isInteger","isNumeric","isNegative","isZero"]}},{}],206:[function(require,module,exports){module.exports={name:"isZero",category:"Utils",syntax:["isZero(x)"],description:"Test whether a value is zero.",examples:["isZero(2)","isZero(0)","isZero(-4)","isZero([3, 0, -2, 0])"],seealso:["isInteger","isNumeric","isNegative","isPositive"]}},{}],207:[function(require,module,exports){module.exports={name:"typeof",category:"Utils",syntax:["typeof(x)"],description:"Get the type of a variable.",examples:["typeof(3.5)","typeof(2 - 4i)","typeof(45 deg)",'typeof("hello world")'],seealso:[]}},{}],208:[function(require,module,exports){function factory(construction,config,load,typed){var docs={};docs.bignumber=require("./construction/bignumber");docs["boolean"]=require("./construction/boolean");docs.complex=require("./construction/complex");docs.fraction=require("./construction/fraction");docs.index=require("./construction/index");docs.matrix=require("./construction/matrix");docs.number=require("./construction/number");docs.sparse=require("./construction/sparse");docs.string=require("./construction/string");docs.unit=require("./construction/unit");docs.e=require("./constants/e");docs.E=require("./constants/e");docs["false"]=require("./constants/false");docs.i=require("./constants/i");docs["Infinity"]=require("./constants/Infinity");docs.LN2=require("./constants/LN2");docs.LN10=require("./constants/LN10");docs.LOG2E=require("./constants/LOG2E");docs.LOG10E=require("./constants/LOG10E");docs.NaN=require("./constants/NaN");docs["null"]=require("./constants/null");docs.pi=require("./constants/pi");docs.PI=require("./constants/pi");docs.phi=require("./constants/phi");docs.SQRT1_2=require("./constants/SQRT1_2");docs.SQRT2=require("./constants/SQRT2");docs.tau=require("./constants/tau");docs["true"]=require("./constants/true");docs.version=require("./constants/version");docs.speedOfLight={description:"Speed of light in vacuum",examples:["speedOfLight"]};docs.gravitationConstant={description:"Newtonian constant of gravitation",examples:["gravitationConstant"]};docs.planckConstant={description:"Planck constant",examples:["planckConstant"]};docs.reducedPlanckConstant={description:"Reduced Planck constant",examples:["reducedPlanckConstant"]};docs.magneticConstant={description:"Magnetic constant (vacuum permeability)",
examples:["magneticConstant"]};docs.electricConstant={description:"Electric constant (vacuum permeability)",examples:["electricConstant"]};docs.vacuumImpedance={description:"Characteristic impedance of vacuum",examples:["vacuumImpedance"]};docs.coulomb={description:"Coulomb's constant",examples:["coulomb"]};docs.elementaryCharge={description:"Elementary charge",examples:["elementaryCharge"]};docs.bohrMagneton={description:"Borh magneton",examples:["bohrMagneton"]};docs.conductanceQuantum={description:"Conductance quantum",examples:["conductanceQuantum"]};docs.inverseConductanceQuantum={description:"Inverse conductance quantum",examples:["inverseConductanceQuantum"]};docs.magneticFluxQuantum={description:"Magnetic flux quantum",examples:["magneticFluxQuantum"]};docs.nuclearMagneton={description:"Nuclear magneton",examples:["nuclearMagneton"]};docs.klitzing={description:"Von Klitzing constant",examples:["klitzing"]};docs.bohrRadius={description:"Borh radius",examples:["bohrRadius"]};docs.classicalElectronRadius={description:"Classical electron radius",examples:["classicalElectronRadius"]};docs.electronMass={description:"Electron mass",examples:["electronMass"]};docs.fermiCoupling={description:"Fermi coupling constant",examples:["fermiCoupling"]};docs.fineStructure={description:"Fine-structure constant",examples:["fineStructure"]};docs.hartreeEnergy={description:"Hartree energy",examples:["hartreeEnergy"]};docs.protonMass={description:"Proton mass",examples:["protonMass"]};docs.deuteronMass={description:"Deuteron Mass",examples:["deuteronMass"]};docs.neutronMass={description:"Neutron mass",examples:["neutronMass"]};docs.quantumOfCirculation={description:"Quantum of circulation",examples:["quantumOfCirculation"]};docs.rydberg={description:"Rydberg constant",examples:["rydberg"]};docs.thomsonCrossSection={description:"Thomson cross section",examples:["thomsonCrossSection"]};docs.weakMixingAngle={description:"Weak mixing angle",examples:["weakMixingAngle"]};docs.efimovFactor={description:"Efimov factor",examples:["efimovFactor"]};docs.atomicMass={description:"Atomic mass constant",examples:["atomicMass"]};docs.avogadro={description:"Avogadro's number",examples:["avogadro"]};docs.boltzmann={description:"Boltzmann constant",examples:["boltzmann"]};docs.faraday={description:"Faraday constant",examples:["faraday"]};docs.firstRadiation={description:"First radiation constant",examples:["firstRadiation"]};docs.loschmidt={description:"Loschmidt constant at T=273.15 K and p=101.325 kPa",examples:["loschmidt"]};docs.gasConstant={description:"Gas constant",examples:["gasConstant"]};docs.molarPlanckConstant={description:"Molar Planck constant",examples:["molarPlanckConstant"]};docs.molarVolume={description:"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa",examples:["molarVolume"]};docs.sackurTetrode={description:"Sackur-Tetrode constant at T=1 K and p=101.325 kPa",examples:["sackurTetrode"]};docs.secondRadiation={description:"Second radiation constant",examples:["secondRadiation"]};docs.stefanBoltzmann={description:"Stefan-Boltzmann constant",examples:["stefanBoltzmann"]};docs.wienDisplacement={description:"Wien displacement law constant",examples:["wienDisplacement"]};docs.molarMass={description:"Molar mass constant",examples:["molarMass"]};docs.molarMassC12={description:"Molar mass constant of carbon-12",examples:["molarMassC12"]};docs.gravity={description:"Standard acceleration of gravity (standard acceleration of free-fall on Earth)",examples:["gravity"]};docs.planckLength={description:"Planck length",examples:["planckLength"]};docs.planckMass={description:"Planck mass",examples:["planckMass"]};docs.planckTime={description:"Planck time",examples:["planckTime"]};docs.planckCharge={description:"Planck charge",examples:["planckCharge"]};docs.planckTemperature={description:"Planck temperature",examples:["planckTemperature"]};docs.lsolve=require("./function/algebra/lsolve");docs.lup=require("./function/algebra/lup");docs.lusolve=require("./function/algebra/lusolve");docs.slu=require("./function/algebra/slu");docs.usolve=require("./function/algebra/usolve");docs.abs=require("./function/arithmetic/abs");docs.add=require("./function/arithmetic/add");docs.cbrt=require("./function/arithmetic/cbrt");docs.ceil=require("./function/arithmetic/ceil");docs.cube=require("./function/arithmetic/cube");docs.divide=require("./function/arithmetic/divide");docs.dotDivide=require("./function/arithmetic/dotDivide");docs.dotMultiply=require("./function/arithmetic/dotMultiply");docs.dotPow=require("./function/arithmetic/dotPow");docs.exp=require("./function/arithmetic/exp");docs.fix=require("./function/arithmetic/fix");docs.floor=require("./function/arithmetic/floor");docs.gcd=require("./function/arithmetic/gcd");docs.hypot=require("./function/arithmetic/hypot");docs.lcm=require("./function/arithmetic/lcm");docs.log=require("./function/arithmetic/log");docs.log10=require("./function/arithmetic/log10");docs.mod=require("./function/arithmetic/mod");docs.multiply=require("./function/arithmetic/multiply");docs.norm=require("./function/arithmetic/norm");docs.nthRoot=require("./function/arithmetic/nthRoot");docs.pow=require("./function/arithmetic/pow");docs.round=require("./function/arithmetic/round");docs.sign=require("./function/arithmetic/sign");docs.sqrt=require("./function/arithmetic/sqrt");docs.square=require("./function/arithmetic/square");docs.subtract=require("./function/arithmetic/subtract");docs.unaryMinus=require("./function/arithmetic/unaryMinus");docs.unaryPlus=require("./function/arithmetic/unaryPlus");docs.xgcd=require("./function/arithmetic/xgcd");docs.bitAnd=require("./function/bitwise/bitAnd");docs.bitNot=require("./function/bitwise/bitNot");docs.bitOr=require("./function/bitwise/bitOr");docs.bitXor=require("./function/bitwise/bitXor");docs.leftShift=require("./function/bitwise/leftShift");docs.rightArithShift=require("./function/bitwise/rightArithShift");docs.rightLogShift=require("./function/bitwise/rightLogShift");docs.bellNumbers=require("./function/combinatorics/bellNumbers");docs.catalan=require("./function/combinatorics/catalan");docs.composition=require("./function/combinatorics/composition");docs.stirlingS2=require("./function/combinatorics/stirlingS2");docs["config"]=require("./core/config");docs["import"]=require("./core/import");docs["typed"]=require("./core/typed");docs.arg=require("./function/complex/arg");docs.conj=require("./function/complex/conj");docs.re=require("./function/complex/re");docs.im=require("./function/complex/im");docs["eval"]=require("./function/expression/eval");docs.help=require("./function/expression/help");docs.distance=require("./function/geometry/distance");docs.intersect=require("./function/geometry/intersect");docs["and"]=require("./function/logical/and");docs["not"]=require("./function/logical/not");docs["or"]=require("./function/logical/or");docs["xor"]=require("./function/logical/xor");docs["concat"]=require("./function/matrix/concat");docs.cross=require("./function/matrix/cross");docs.det=require("./function/matrix/det");docs.diag=require("./function/matrix/diag");docs.dot=require("./function/matrix/dot");docs.eye=require("./function/matrix/eye");docs.filter=require("./function/matrix/filter");docs.flatten=require("./function/matrix/flatten");docs.forEach=require("./function/matrix/forEach");docs.inv=require("./function/matrix/inv");docs.map=require("./function/matrix/map");docs.ones=require("./function/matrix/ones");docs.partitionSelect=require("./function/matrix/partitionSelect");docs.range=require("./function/matrix/range");docs.resize=require("./function/matrix/resize");docs.size=require("./function/matrix/size");docs.sort=require("./function/matrix/sort");docs.squeeze=require("./function/matrix/squeeze");docs.subset=require("./function/matrix/subset");docs.trace=require("./function/matrix/trace");docs.transpose=require("./function/matrix/transpose");docs.zeros=require("./function/matrix/zeros");docs.combinations=require("./function/probability/combinations");docs.factorial=require("./function/probability/factorial");docs.gamma=require("./function/probability/gamma");docs.kldivergence=require("./function/probability/kldivergence");docs.multinomial=require("./function/probability/multinomial");docs.permutations=require("./function/probability/permutations");docs.pickRandom=require("./function/probability/pickRandom");docs.random=require("./function/probability/random");docs.randomInt=require("./function/probability/randomInt");docs.compare=require("./function/relational/compare");docs.deepEqual=require("./function/relational/deepEqual");docs["equal"]=require("./function/relational/equal");docs.larger=require("./function/relational/larger");docs.largerEq=require("./function/relational/largerEq");docs.smaller=require("./function/relational/smaller");docs.smallerEq=require("./function/relational/smallerEq");docs.unequal=require("./function/relational/unequal");docs.max=require("./function/statistics/max");docs.mean=require("./function/statistics/mean");docs.median=require("./function/statistics/median");docs.min=require("./function/statistics/min");docs.mode=require("./function/statistics/mode");docs.prod=require("./function/statistics/prod");docs.quantileSeq=require("./function/statistics/quantileSeq");docs.std=require("./function/statistics/std");docs.sum=require("./function/statistics/sum");docs["var"]=require("./function/statistics/var");docs.acos=require("./function/trigonometry/acos");docs.acosh=require("./function/trigonometry/acosh");docs.acot=require("./function/trigonometry/acot");docs.acoth=require("./function/trigonometry/acoth");docs.acsc=require("./function/trigonometry/acsc");docs.acsch=require("./function/trigonometry/acsch");docs.asec=require("./function/trigonometry/asec");docs.asech=require("./function/trigonometry/asech");docs.asin=require("./function/trigonometry/asin");docs.asinh=require("./function/trigonometry/asinh");docs.atan=require("./function/trigonometry/atan");docs.atanh=require("./function/trigonometry/atanh");docs.atan2=require("./function/trigonometry/atan2");docs.cos=require("./function/trigonometry/cos");docs.cosh=require("./function/trigonometry/cosh");docs.cot=require("./function/trigonometry/cot");docs.coth=require("./function/trigonometry/coth");docs.csc=require("./function/trigonometry/csc");docs.csch=require("./function/trigonometry/csch");docs.sec=require("./function/trigonometry/sec");docs.sech=require("./function/trigonometry/sech");docs.sin=require("./function/trigonometry/sin");docs.sinh=require("./function/trigonometry/sinh");docs.tan=require("./function/trigonometry/tan");docs.tanh=require("./function/trigonometry/tanh");docs.to=require("./function/units/to");docs.clone=require("./function/utils/clone");docs.format=require("./function/utils/format");docs.isNaN=require("./function/utils/isNaN");docs.isInteger=require("./function/utils/isInteger");docs.isNegative=require("./function/utils/isNegative");docs.isNumeric=require("./function/utils/isNumeric");docs.isPositive=require("./function/utils/isPositive");docs.isPrime=require("./function/utils/isPrime");docs.isZero=require("./function/utils/isZero");docs["typeof"]=require("./function/utils/typeof");return docs}exports.name="docs";exports.path="expression";exports.factory=factory},{"./constants/Infinity":35,"./constants/LN10":36,"./constants/LN2":37,"./constants/LOG10E":38,"./constants/LOG2E":39,"./constants/NaN":40,"./constants/SQRT1_2":41,"./constants/SQRT2":42,"./constants/e":43,"./constants/false":44,"./constants/i":45,"./constants/null":46,"./constants/phi":47,"./constants/pi":48,"./constants/tau":49,"./constants/true":50,"./constants/version":51,"./construction/bignumber":52,"./construction/boolean":53,"./construction/complex":54,"./construction/fraction":55,"./construction/index":56,"./construction/matrix":57,"./construction/number":58,"./construction/sparse":59,"./construction/string":60,"./construction/unit":61,"./core/config":62,"./core/import":63,"./core/typed":64,"./function/algebra/lsolve":65,"./function/algebra/lup":66,"./function/algebra/lusolve":67,"./function/algebra/slu":68,"./function/algebra/usolve":69,"./function/arithmetic/abs":70,"./function/arithmetic/add":71,"./function/arithmetic/cbrt":72,"./function/arithmetic/ceil":73,"./function/arithmetic/cube":74,"./function/arithmetic/divide":75,"./function/arithmetic/dotDivide":76,"./function/arithmetic/dotMultiply":77,"./function/arithmetic/dotPow":78,"./function/arithmetic/exp":79,"./function/arithmetic/fix":80,"./function/arithmetic/floor":81,"./function/arithmetic/gcd":82,"./function/arithmetic/hypot":83,"./function/arithmetic/lcm":84,"./function/arithmetic/log":85,"./function/arithmetic/log10":86,"./function/arithmetic/mod":87,"./function/arithmetic/multiply":88,"./function/arithmetic/norm":89,"./function/arithmetic/nthRoot":90,"./function/arithmetic/pow":91,"./function/arithmetic/round":92,"./function/arithmetic/sign":93,"./function/arithmetic/sqrt":94,"./function/arithmetic/square":95,"./function/arithmetic/subtract":96,"./function/arithmetic/unaryMinus":97,"./function/arithmetic/unaryPlus":98,"./function/arithmetic/xgcd":99,"./function/bitwise/bitAnd":100,"./function/bitwise/bitNot":101,"./function/bitwise/bitOr":102,"./function/bitwise/bitXor":103,"./function/bitwise/leftShift":104,"./function/bitwise/rightArithShift":105,"./function/bitwise/rightLogShift":106,"./function/combinatorics/bellNumbers":107,"./function/combinatorics/catalan":108,"./function/combinatorics/composition":109,"./function/combinatorics/stirlingS2":110,"./function/complex/arg":111,"./function/complex/conj":112,"./function/complex/im":113,"./function/complex/re":114,"./function/expression/eval":115,"./function/expression/help":116,"./function/geometry/distance":117,"./function/geometry/intersect":118,"./function/logical/and":119,"./function/logical/not":120,"./function/logical/or":121,"./function/logical/xor":122,"./function/matrix/concat":123,"./function/matrix/cross":124,"./function/matrix/det":125,"./function/matrix/diag":126,"./function/matrix/dot":127,"./function/matrix/eye":128,"./function/matrix/filter":129,"./function/matrix/flatten":130,"./function/matrix/forEach":131,"./function/matrix/inv":132,"./function/matrix/map":133,"./function/matrix/ones":134,"./function/matrix/partitionSelect":135,"./function/matrix/range":136,"./function/matrix/resize":137,"./function/matrix/size":138,"./function/matrix/sort":139,"./function/matrix/squeeze":140,"./function/matrix/subset":141,"./function/matrix/trace":142,"./function/matrix/transpose":143,"./function/matrix/zeros":144,"./function/probability/combinations":145,"./function/probability/factorial":146,"./function/probability/gamma":147,"./function/probability/kldivergence":148,"./function/probability/multinomial":149,"./function/probability/permutations":150,"./function/probability/pickRandom":151,"./function/probability/random":152,"./function/probability/randomInt":153,"./function/relational/compare":154,"./function/relational/deepEqual":155,"./function/relational/equal":156,"./function/relational/larger":157,"./function/relational/largerEq":158,"./function/relational/smaller":159,"./function/relational/smallerEq":160,"./function/relational/unequal":161,"./function/statistics/max":162,"./function/statistics/mean":163,"./function/statistics/median":164,"./function/statistics/min":165,"./function/statistics/mode":166,"./function/statistics/prod":167,"./function/statistics/quantileSeq":168,"./function/statistics/std":169,"./function/statistics/sum":170,"./function/statistics/var":171,"./function/trigonometry/acos":172,"./function/trigonometry/acosh":173,"./function/trigonometry/acot":174,"./function/trigonometry/acoth":175,"./function/trigonometry/acsc":176,"./function/trigonometry/acsch":177,"./function/trigonometry/asec":178,"./function/trigonometry/asech":179,"./function/trigonometry/asin":180,"./function/trigonometry/asinh":181,"./function/trigonometry/atan":182,"./function/trigonometry/atan2":183,"./function/trigonometry/atanh":184,"./function/trigonometry/cos":185,"./function/trigonometry/cosh":186,"./function/trigonometry/cot":187,"./function/trigonometry/coth":188,"./function/trigonometry/csc":189,"./function/trigonometry/csch":190,"./function/trigonometry/sec":191,"./function/trigonometry/sech":192,"./function/trigonometry/sin":193,"./function/trigonometry/sinh":194,"./function/trigonometry/tan":195,"./function/trigonometry/tanh":196,"./function/units/to":197,"./function/utils/clone":198,"./function/utils/format":199,"./function/utils/isInteger":200,"./function/utils/isNaN":201,"./function/utils/isNegative":202,"./function/utils/isNumeric":203,"./function/utils/isPositive":204,"./function/utils/isPrime":205,"./function/utils/isZero":206,"./function/utils/typeof":207}],209:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var parse=load(require("../parse"));return typed("compile",{string:function(expr){return parse(expr).compile()},"Array | Matrix":function(expr){return deepMap(expr,function(entry){return parse(entry).compile()})}})}exports.name="compile";exports.factory=factory},{"../../utils/collection/deepMap":500,"../parse":237}],210:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var parse=load(require("../parse"));return typed("compile",{string:function(expr){var scope={};return parse(expr).compile().eval(scope)},"string, Object":function(expr,scope){return parse(expr).compile().eval(scope)},"Array | Matrix":function(expr){var scope={};return deepMap(expr,function(entry){return parse(entry).compile().eval(scope)})},"Array | Matrix, Object":function(expr,scope){return deepMap(expr,function(entry){return parse(entry).compile().eval(scope)})}})}exports.name="eval";exports.factory=factory},{"../../utils/collection/deepMap":500,"../parse":237}],211:[function(require,module,exports){"use strict";function factory(type,config,load,typed,math){var docs=load(require("../docs"));return typed("help",{any:function(search){var prop;var name=search;if(typeof search!=="string"){for(prop in math){if(math.hasOwnProperty(prop)&&search===math[prop]){name=prop;break}}}var doc=docs[name];if(!doc){throw new Error('No documentation found on "'+name+'"')}return new type.Help(doc)}})}exports.math=true;exports.name="help";exports.factory=factory},{"../docs":208}],212:[function(require,module,exports){module.exports=[require("./compile"),require("./eval"),require("./help"),require("./parse"),require("./parser")]},{"./compile":209,"./eval":210,"./help":211,"./parse":213,"./parser":214}],213:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var parse=load(require("../parse"));return typed("parse",{"string | Array | Matrix":parse,"string | Array | Matrix, Object":parse})}exports.name="parse";exports.factory=factory},{"../parse":237}],214:[function(require,module,exports){"use strict";function factory(type,config,load,typed,math){var Parser=load(require("../Parser"));return typed("parser",{"":function(){return new Parser(math)}})}exports.name="parser";exports.factory=factory;exports.math=true},{"../Parser":34}],215:[function(require,module,exports){module.exports=[require("./docs"),require("./function"),require("./node"),require("./transform"),require("./Help"),require("./parse"),require("./Parser")]},{"./Help":33,"./Parser":34,"./docs":208,"./function":212,"./node":233,"./parse":237,"./transform":242}],216:[function(require,module,exports){"use strict";module.exports={end:true}},{}],217:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var Node=load(require("./Node"));var access=load(require("./utils/access"));function AccessorNode(object,index){if(!(this instanceof AccessorNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(!(object&&object.isNode)){throw new TypeError('Node expected for parameter "object"')}if(!(index&&index.isIndexNode)){throw new TypeError('IndexNode expected for parameter "index"')}this.object=object||null;this.index=index;Object.defineProperty(this,"name",{get:function(){if(this.index){return this.index.isObjectProperty()?this.index.getObjectProperty():""}else{return this.object.name||""}}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}AccessorNode.prototype=new Node;AccessorNode.prototype.type="AccessorNode";AccessorNode.prototype.isAccessorNode=true;AccessorNode.prototype._compile=function(defs,args){defs.access=access;var object=this.object._compile(defs,args);var index=this.index._compile(defs,args);if(this.index.isObjectProperty()){return object+'["'+this.index.getObjectProperty()+'"]'}else if(this.index.needsSize()){return"(function () {"+" var object = "+object+";"+" var size = math.size(object).valueOf();"+" return access(object, "+index+");"+"})()"}else{return"access("+object+", "+index+")"}};AccessorNode.prototype.forEach=function(callback){callback(this.object,"object",this);callback(this.index,"index",this)};AccessorNode.prototype.map=function(callback){return new AccessorNode(this._ifNode(callback(this.object,"object",this)),this._ifNode(callback(this.index,"index",this)))};AccessorNode.prototype.clone=function(){return new AccessorNode(this.object,this.index)};AccessorNode.prototype._toString=function(options){var object=this.object.toString(options);if(needParenthesis(this.object)){object="("+object+")"}return object+this.index.toString(options)};AccessorNode.prototype._toTex=function(options){var object=this.object.toTex(options);if(needParenthesis(this.object)){object="\\left("+object+"\\right)"}return object+this.index.toTex(options)};function needParenthesis(node){return!(node.isAccessorNode||node.isArrayNode||node.isConstantNode||node.isFunctionNode||node.isObjectNode||node.isParenthesisNode||node.isSymbolNode)}return AccessorNode}exports.name="AccessorNode";exports.path="expression.node";exports.factory=factory},{"./Node":226,"./utils/access":234}],218:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var Node=load(require("./Node"));function ArrayNode(items){if(!(this instanceof ArrayNode)){throw new SyntaxError("Constructor must be called with the new operator")}this.items=items||[];if(!Array.isArray(this.items)||!this.items.every(function(item){return item&&item.isNode})){throw new TypeError("Array containing Nodes expected")}var deprecated=function(){throw new Error("Property `ArrayNode.nodes` is deprecated, use `ArrayNode.items` instead")};Object.defineProperty(this,"nodes",{get:deprecated,set:deprecated})}ArrayNode.prototype=new Node;ArrayNode.prototype.type="ArrayNode";ArrayNode.prototype.isArrayNode=true;ArrayNode.prototype._compile=function(defs,args){var asMatrix=defs.math.config().matrix!=="Array";var items=this.items.map(function(node){return node._compile(defs,args)});return(asMatrix?"math.matrix([":"[")+items.join(",")+(asMatrix?"])":"]")};ArrayNode.prototype.forEach=function(callback){for(var i=0;i<this.items.length;i++){var node=this.items[i];callback(node,"items["+i+"]",this)}};ArrayNode.prototype.map=function(callback){var items=[];for(var i=0;i<this.items.length;i++){items[i]=this._ifNode(callback(this.items[i],"items["+i+"]",this))}return new ArrayNode(items)};ArrayNode.prototype.clone=function(){return new ArrayNode(this.items.slice(0))};ArrayNode.prototype._toString=function(options){var items=this.items.map(function(node){return node.toString(options)});return"["+items.join(", ")+"]"};ArrayNode.prototype._toTex=function(options){var s="\\begin{bmatrix}";this.items.forEach(function(node){if(node.items){s+=node.items.map(function(childNode){return childNode.toTex(options)}).join("&")}else{s+=node.toTex(options)}s+="\\\\"});s+="\\end{bmatrix}";return s};return ArrayNode}exports.name="ArrayNode";exports.path="expression.node";exports.factory=factory},{"./Node":226}],219:[function(require,module,exports){"use strict";var latex=require("../../utils/latex");function factory(type,config,load,typed){var Node=load(require("./Node"));var ArrayNode=load(require("./ArrayNode"));var matrix=load(require("../../type/matrix/function/matrix"));var assign=load(require("./utils/assign"));var access=load(require("./utils/access"));var keywords=require("../keywords");var operators=require("../operators");function AssignmentNode(object,index,value){if(!(this instanceof AssignmentNode)){throw new SyntaxError("Constructor must be called with the new operator")}this.object=object;this.index=value?index:null;this.value=value?value:index;if(!object||!(object.isSymbolNode||object.isAccessorNode)){throw new TypeError('SymbolNode or AccessorNode expected as "object"')}if(object&&object.isSymbolNode&&object.name==="end"){throw new Error('Cannot assign to symbol "end"')}if(this.index&&!this.index.isIndexNode){throw new TypeError('IndexNode expected as "index"')}if(!this.value||!this.value.isNode){throw new TypeError('Node expected as "value"')}Object.defineProperty(this,"name",{get:function(){if(this.index){return this.index.isObjectProperty()?this.index.getObjectProperty():""}else{return this.object.name||""}}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}})}AssignmentNode.prototype=new Node;AssignmentNode.prototype.type="AssignmentNode";AssignmentNode.prototype.isAssignmentNode=true;AssignmentNode.prototype._compile=function(defs,args){defs.assign=assign;defs.access=access;var size;var object=this.object._compile(defs,args);var index=this.index?this.index._compile(defs,args):null;var value=this.value._compile(defs,args);if(!this.index){if(!this.object.isSymbolNode){throw new TypeError("SymbolNode expected as object")}return'scope["'+this.object.name+'"] = '+value}else if(this.index.isObjectProperty()){return object+'["'+this.index.getObjectProperty()+'"] = '+value}else if(this.object.isSymbolNode){size=this.index.needsSize()?"var size = math.size(object).valueOf();":"";return"(function () {"+" var object = "+object+";"+" var value = "+value+";"+" "+size+' scope["'+this.object.name+'"] = assign(object, '+index+", value);"+" return value;"+"})()"}else{size=this.index.needsSize()?"var size = math.size(object).valueOf();":"";var parentObject=this.object.object._compile(defs,args);if(this.object.index.isObjectProperty()){var parentProperty='["'+this.object.index.getObjectProperty()+'"]';return"(function () {"+" var parent = "+parentObject+";"+" var object = parent"+parentProperty+";"+" var value = "+value+";"+size+" parent"+parentProperty+" = assign(object, "+index+", value);"+" return value;"+"})()"}else{var parentSize=this.object.index.needsSize()?"var size = math.size(parent).valueOf();":"";var parentIndex=this.object.index._compile(defs,args);return"(function () {"+" var parent = "+parentObject+";"+" "+parentSize+" var parentIndex = "+parentIndex+";"+" var object = access(parent, parentIndex);"+" var value = "+value+";"+" "+size+" assign(parent, parentIndex, assign(object, "+index+", value));"+" return value;"+"})()"}}};AssignmentNode.prototype.forEach=function(callback){callback(this.object,"object",this);if(this.index){callback(this.index,"index",this)}callback(this.value,"value",this)};AssignmentNode.prototype.map=function(callback){var object=this._ifNode(callback(this.object,"object",this));var index=this.index?this._ifNode(callback(this.index,"index",this)):null;var value=this._ifNode(callback(this.value,"value",this));return new AssignmentNode(object,index,value)};AssignmentNode.prototype.clone=function(){return new AssignmentNode(this.object,this.index,this.value)};function needParenthesis(node,parenthesis){if(!parenthesis){parenthesis="keep"}var precedence=operators.getPrecedence(node,parenthesis);var exprPrecedence=operators.getPrecedence(node.value,parenthesis);return parenthesis==="all"||exprPrecedence!==null&&exprPrecedence<=precedence}AssignmentNode.prototype._toString=function(options){var object=this.object.toString(options);var index=this.index?this.index.toString(options):"";var value=this.value.toString(options);if(needParenthesis(this,options&&options.parenthesis)){value="("+value+")"}return object+index+" = "+value};AssignmentNode.prototype._toTex=function(options){var object=this.object.toTex(options);var index=this.index?this.index.toTex(options):"";var value=this.value.toTex(options);if(needParenthesis(this,options&&options.parenthesis)){value="\\left("+value+"\\right)"}return object+index+":="+value};return AssignmentNode}exports.name="AssignmentNode";exports.path="expression.node";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/latex":507,"../keywords":216,"../operators":236,"./ArrayNode":218,"./Node":226,"./utils/access":234,"./utils/assign":235}],220:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var Node=load(require("./Node"));var ResultSet=load(require("../../type/resultset/ResultSet"));function BlockNode(blocks){if(!(this instanceof BlockNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(!Array.isArray(blocks))throw new Error("Array expected");this.blocks=blocks.map(function(block){var node=block&&block.node;var visible=block&&block.visible!==undefined?block.visible:true;if(!(node&&node.isNode))throw new TypeError('Property "node" must be a Node');if(typeof visible!=="boolean")throw new TypeError('Property "visible" must be a boolean');return{node:node,visible:visible}})}BlockNode.prototype=new Node;BlockNode.prototype.type="BlockNode";BlockNode.prototype.isBlockNode=true;BlockNode.prototype._compile=function(defs,args){defs.ResultSet=ResultSet;var blocks=this.blocks.map(function(param){var js=param.node._compile(defs,args);if(param.visible){return"results.push("+js+");"}else{return js+";"}});return"(function () {"+"var results = [];"+blocks.join("")+"return new ResultSet(results);"+"})()"};BlockNode.prototype.forEach=function(callback){for(var i=0;i<this.blocks.length;i++){callback(this.blocks[i].node,"blocks["+i+"].node",this)}};BlockNode.prototype.map=function(callback){var blocks=[];for(var i=0;i<this.blocks.length;i++){var block=this.blocks[i];var node=this._ifNode(callback(block.node,"blocks["+i+"].node",this));blocks[i]={node:node,visible:block.visible}}return new BlockNode(blocks)};BlockNode.prototype.clone=function(){var blocks=this.blocks.map(function(block){return{node:block.node,visible:block.visible}});return new BlockNode(blocks)};BlockNode.prototype._toString=function(options){return this.blocks.map(function(param){return param.node.toString(options)+(param.visible?"":";")}).join("\n")};BlockNode.prototype._toTex=function(options){return this.blocks.map(function(param){return param.node.toTex(options)+(param.visible?"":";")}).join("\\;\\;\n")};return BlockNode}exports.name="BlockNode";exports.path="expression.node";exports.factory=factory},{"../../type/resultset/ResultSet":476,"./Node":226}],221:[function(require,module,exports){"use strict";var latex=require("../../utils/latex");var operators=require("../operators");function factory(type,config,load,typed){var Node=load(require("./Node"));function ConditionalNode(condition,trueExpr,falseExpr){if(!(this instanceof ConditionalNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(!(condition&&condition.isNode))throw new TypeError("Parameter condition must be a Node");if(!(trueExpr&&trueExpr.isNode))throw new TypeError("Parameter trueExpr must be a Node");if(!(falseExpr&&falseExpr.isNode))throw new TypeError("Parameter falseExpr must be a Node");this.condition=condition;this.trueExpr=trueExpr;this.falseExpr=falseExpr}ConditionalNode.prototype=new Node;ConditionalNode.prototype.type="ConditionalNode";ConditionalNode.prototype.isConditionalNode=true;ConditionalNode.prototype._compile=function(defs,args){
defs.testCondition=function(condition){if(typeof condition==="number"||typeof condition==="boolean"||typeof condition==="string"){return condition?true:false}if(condition){if(condition.isBigNumber===true){return condition.isZero()?false:true}if(condition.isComplex===true){return condition.re||condition.im?true:false}if(condition.isUnit===true){return condition.value?true:false}}if(condition===null||condition===undefined){return false}throw new TypeError('Unsupported type of condition "'+defs.math["typeof"](condition)+'"')};return"testCondition("+this.condition._compile(defs,args)+") ? "+"( "+this.trueExpr._compile(defs,args)+") : "+"( "+this.falseExpr._compile(defs,args)+")"};ConditionalNode.prototype.forEach=function(callback){callback(this.condition,"condition",this);callback(this.trueExpr,"trueExpr",this);callback(this.falseExpr,"falseExpr",this)};ConditionalNode.prototype.map=function(callback){return new ConditionalNode(this._ifNode(callback(this.condition,"condition",this)),this._ifNode(callback(this.trueExpr,"trueExpr",this)),this._ifNode(callback(this.falseExpr,"falseExpr",this)))};ConditionalNode.prototype.clone=function(){return new ConditionalNode(this.condition,this.trueExpr,this.falseExpr)};ConditionalNode.prototype._toString=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var precedence=operators.getPrecedence(this,parenthesis);var condition=this.condition.toString(options);var conditionPrecedence=operators.getPrecedence(this.condition,parenthesis);if(parenthesis==="all"||this.condition.type==="OperatorNode"||conditionPrecedence!==null&&conditionPrecedence<=precedence){condition="("+condition+")"}var trueExpr=this.trueExpr.toString(options);var truePrecedence=operators.getPrecedence(this.trueExpr,parenthesis);if(parenthesis==="all"||this.trueExpr.type==="OperatorNode"||truePrecedence!==null&&truePrecedence<=precedence){trueExpr="("+trueExpr+")"}var falseExpr=this.falseExpr.toString(options);var falsePrecedence=operators.getPrecedence(this.falseExpr,parenthesis);if(parenthesis==="all"||this.falseExpr.type==="OperatorNode"||falsePrecedence!==null&&falsePrecedence<=precedence){falseExpr="("+falseExpr+")"}return condition+" ? "+trueExpr+" : "+falseExpr};ConditionalNode.prototype._toTex=function(options){return"\\begin{cases} {"+this.trueExpr.toTex(options)+"}, &\\quad{\\text{if }\\;"+this.condition.toTex(options)+"}\\\\{"+this.falseExpr.toTex(options)+"}, &\\quad{\\text{otherwise}}\\end{cases}"};return ConditionalNode}exports.name="ConditionalNode";exports.path="expression.node";exports.factory=factory},{"../../utils/latex":507,"../operators":236,"./Node":226}],222:[function(require,module,exports){"use strict";var getType=require("../../utils/types").type;function factory(type,config,load,typed){var Node=load(require("./Node"));function ConstantNode(value,valueType){if(!(this instanceof ConstantNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(valueType){if(typeof valueType!=="string"){throw new TypeError('String expected for parameter "valueType"')}if(typeof value!=="string"){throw new TypeError('String expected for parameter "value"')}this.value=value;this.valueType=valueType}else{this.value=value+"";this.valueType=getType(value)}if(!SUPPORTED_TYPES[this.valueType]){throw new TypeError('Unsupported type of value "'+this.valueType+'"')}}var SUPPORTED_TYPES={number:true,string:true,boolean:true,undefined:true,null:true};ConstantNode.prototype=new Node;ConstantNode.prototype.type="ConstantNode";ConstantNode.prototype.isConstantNode=true;ConstantNode.prototype._compile=function(defs,args){switch(this.valueType){case"number":var numConfig=defs.math.config().number;if(numConfig==="BigNumber"){return'math.bignumber("'+this.value+'")'}else if(numConfig==="Fraction"){return'math.fraction("'+this.value+'")'}else{return this.value.replace(/^(0*)[0-9]/,function(match,zeros){return match.substring(zeros.length)})}case"string":return'"'+this.value+'"';case"boolean":return this.value;case"undefined":return this.value;case"null":return this.value;default:throw new TypeError('Unsupported type of constant "'+this.valueType+'"')}};ConstantNode.prototype.forEach=function(callback){};ConstantNode.prototype.map=function(callback){return this.clone()};ConstantNode.prototype.clone=function(){return new ConstantNode(this.value,this.valueType)};ConstantNode.prototype._toString=function(options){switch(this.valueType){case"string":return'"'+this.value+'"';default:return this.value}};ConstantNode.prototype._toTex=function(options){var value=this.value,index;switch(this.valueType){case"string":return'\\mathtt{"'+value+'"}';case"number":index=value.toLowerCase().indexOf("e");if(index!==-1){return value.substring(0,index)+"\\cdot10^{"+value.substring(index+1)+"}"}return value;default:return value}};return ConstantNode}exports.name="ConstantNode";exports.path="expression.node";exports.factory=factory},{"../../utils/types":511,"./Node":226}],223:[function(require,module,exports){"use strict";var keywords=require("../keywords");var latex=require("../../utils/latex");var operators=require("../operators");function isString(x){return typeof x==="string"}function factory(type,config,load,typed){var Node=load(require("./Node"));function FunctionAssignmentNode(name,params,expr){if(!(this instanceof FunctionAssignmentNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(typeof name!=="string")throw new TypeError('String expected for parameter "name"');if(!Array.isArray(params))throw new TypeError('Array containing strings or objects expected for parameter "params"');if(!(expr&&expr.isNode))throw new TypeError('Node expected for parameter "expr"');if(name in keywords)throw new Error('Illegal function name, "'+name+'" is a reserved keyword');this.name=name;this.params=params.map(function(param){return param&&param.name||param});this.types=params.map(function(param){return param&&param.type||"any"});this.expr=expr}FunctionAssignmentNode.prototype=new Node;FunctionAssignmentNode.prototype.type="FunctionAssignmentNode";FunctionAssignmentNode.prototype.isFunctionAssignmentNode=true;FunctionAssignmentNode.prototype._compile=function(defs,args){defs.typed=typed;var childArgs=Object.create(args);this.params.forEach(function(variable){childArgs[variable]=true});var jsExpr=this.expr._compile(defs,childArgs);return'scope["'+this.name+'"] = '+" (function () {"+' var fn = typed("'+this.name+'", {'+' "'+this.types.join(",")+'": function ('+this.params.join(",")+") {"+" return "+jsExpr+""+" }"+" });"+' fn.syntax = "'+this.name+"("+this.params.join(", ")+')";'+" return fn;"+" })()"};FunctionAssignmentNode.prototype.forEach=function(callback){callback(this.expr,"expr",this)};FunctionAssignmentNode.prototype.map=function(callback){var expr=this._ifNode(callback(this.expr,"expr",this));return new FunctionAssignmentNode(this.name,this.params.slice(0),expr)};FunctionAssignmentNode.prototype.clone=function(){return new FunctionAssignmentNode(this.name,this.params.slice(0),this.expr)};function needParenthesis(node,parenthesis){var precedence=operators.getPrecedence(node,parenthesis);var exprPrecedence=operators.getPrecedence(node.expr,parenthesis);return parenthesis==="all"||exprPrecedence!==null&&exprPrecedence<=precedence}FunctionAssignmentNode.prototype._toString=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var expr=this.expr.toString(options);if(needParenthesis(this,parenthesis)){expr="("+expr+")"}return"function "+this.name+"("+this.params.join(", ")+") = "+expr};FunctionAssignmentNode.prototype._toTex=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var expr=this.expr.toTex(options);if(needParenthesis(this,parenthesis)){expr="\\left("+expr+"\\right)"}return"\\mathrm{"+this.name+"}\\left("+this.params.map(latex.toSymbol).join(",")+"\\right):="+expr};return FunctionAssignmentNode}exports.name="FunctionAssignmentNode";exports.path="expression.node";exports.factory=factory},{"../../utils/latex":507,"../keywords":216,"../operators":236,"./Node":226}],224:[function(require,module,exports){"use strict";var latex=require("../../utils/latex");function factory(type,config,load,typed,math){var Node=load(require("./Node"));var SymbolNode=load(require("./SymbolNode"));function FunctionNode(fn,args){if(!(this instanceof FunctionNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(typeof fn==="string"){console.warn("WARNING: passing a string to FunctionNode is deprecated, pass a SymbolNode instead.");fn=new SymbolNode(fn)}if(!fn||!fn.isNode)throw new TypeError('Node expected as parameter "fn"');if(!Array.isArray(args)||!args.every(function(arg){return arg&&arg.isNode})){throw new TypeError('Array containing Nodes expected for parameter "args"')}this.fn=fn;this.args=args||[];Object.defineProperty(this,"name",{get:function(){return this.fn.name||""}.bind(this),set:function(){throw new Error("Cannot assign a new name, name is read-only")}});var deprecated=function(){throw new Error("Property `FunctionNode.object` is deprecated, use `FunctionNode.fn` instead")};Object.defineProperty(this,"object",{get:deprecated,set:deprecated})}FunctionNode.prototype=new Node;FunctionNode.prototype.type="FunctionNode";FunctionNode.prototype.isFunctionNode=true;FunctionNode.prototype._compile=function(defs,args){var jsFn=this.fn._compile(defs,args);var jsArgs=this.args.map(function(arg){return arg._compile(defs,args)});var argsName;if(this.fn.isSymbolNode){var name=this.fn.name;var fn=defs.math[name];var isRaw=typeof fn==="function"&&fn.rawArgs==true;if(isRaw){argsName=this._getUniqueArgumentsName(defs);defs[argsName]=this.args;return jsFn+"("+argsName+", math, scope)"}else{return jsFn+"("+jsArgs.join(", ")+")"}}else if(this.fn.isAccessorNode&&this.fn.index.isObjectProperty()){argsName=this._getUniqueArgumentsName(defs);defs[argsName]=this.args;var jsObject=this.fn.object._compile(defs,args);var prop=this.fn.index.getObjectProperty();return"(function () {"+"var object = "+jsObject+";"+'return (object["'+prop+'"] && object["'+prop+'"].rawArgs) '+' ? object["'+prop+'"]('+argsName+", math, scope)"+' : object["'+prop+'"]('+jsArgs.join(", ")+")"+"})()"}else{argsName=this._getUniqueArgumentsName(defs);defs[argsName]=this.args;return"(function () {"+"var fn = "+jsFn+";"+"return (fn && fn.rawArgs) "+" ? fn("+argsName+", math, scope)"+" : fn("+jsArgs.join(", ")+")"+"})()"}};FunctionNode.prototype._getUniqueArgumentsName=function(defs){var argsName;var i=0;do{argsName="args"+i;i++}while(argsName in defs);return argsName};FunctionNode.prototype.forEach=function(callback){for(var i=0;i<this.args.length;i++){callback(this.args[i],"args["+i+"]",this)}};FunctionNode.prototype.map=function(callback){var fn=this.fn.map(callback);var args=[];for(var i=0;i<this.args.length;i++){args[i]=this._ifNode(callback(this.args[i],"args["+i+"]",this))}return new FunctionNode(fn,args)};FunctionNode.prototype.clone=function(){return new FunctionNode(this.fn,this.args.slice(0))};var nodeToString=FunctionNode.prototype.toString;FunctionNode.prototype.toString=function(options){var customString;var name=this.fn.toString(options);if(options&&typeof options.handler==="object"&&options.handler.hasOwnProperty(name)){customString=options.handler[name](this,options)}if(typeof customString!=="undefined"){return customString}return nodeToString.call(this,options)};FunctionNode.prototype._toString=function(options){var args=this.args.map(function(arg){return arg.toString(options)});return this.fn.toString(options)+"("+args.join(", ")+")"};function expandTemplate(template,node,options){var latex="";var regex=new RegExp("\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)","ig");var inputPos=0;var match;while((match=regex.exec(template))!==null){latex+=template.substring(inputPos,match.index);inputPos=match.index;if(match[0]==="$$"){latex+="$";inputPos++}else{inputPos+=match[0].length;var property=node[match[1]];if(!property){throw new ReferenceError("Template: Property "+match[1]+" does not exist.")}if(match[2]===undefined){switch(typeof property){case"string":latex+=property;break;case"object":if(property.isNode){latex+=property.toTex(options)}else if(Array.isArray(property)){latex+=property.map(function(arg,index){if(arg&&arg.isNode){return arg.toTex(options)}throw new TypeError("Template: "+match[1]+"["+index+"] is not a Node.")}).join(",")}else{throw new TypeError("Template: "+match[1]+" has to be a Node, String or array of Nodes")}break;default:throw new TypeError("Template: "+match[1]+" has to be a Node, String or array of Nodes")}}else{if(property[match[2]]&&property[match[2]].isNode){latex+=property[match[2]].toTex(options)}else{throw new TypeError("Template: "+match[1]+"["+match[2]+"] is not a Node.")}}}}latex+=template.slice(inputPos);return latex}var nodeToTex=FunctionNode.prototype.toTex;FunctionNode.prototype.toTex=function(options){var customTex;if(options&&typeof options.handler==="object"&&options.handler.hasOwnProperty(this.name)){customTex=options.handler[this.name](this,options)}if(typeof customTex!=="undefined"){return customTex}return nodeToTex.call(this,options)};FunctionNode.prototype._toTex=function(options){var args=this.args.map(function(arg){return arg.toTex(options)});var latexConverter;if(math[this.name]&&(typeof math[this.name].toTex==="function"||typeof math[this.name].toTex==="object"||typeof math[this.name].toTex==="string")){latexConverter=math[this.name].toTex}var customToTex;switch(typeof latexConverter){case"function":customToTex=latexConverter(this,options);break;case"string":customToTex=expandTemplate(latexConverter,this,options);break;case"object":switch(typeof latexConverter[args.length]){case"function":customToTex=latexConverter[args.length](this,options);break;case"string":customToTex=expandTemplate(latexConverter[args.length],this,options);break}}if(typeof customToTex!=="undefined"){return customToTex}return expandTemplate(latex.defaultTemplate,this,options)};FunctionNode.prototype.getIdentifier=function(){return this.type+":"+this.name};return FunctionNode}exports.name="FunctionNode";exports.path="expression.node";exports.math=true;exports.factory=factory},{"../../utils/latex":507,"./Node":226,"./SymbolNode":231}],225:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var Node=load(require("./Node"));var RangeNode=load(require("./RangeNode"));var SymbolNode=load(require("./SymbolNode"));var Range=load(require("../../type/matrix/Range"));var isArray=Array.isArray;function IndexNode(dimensions,dotNotation){if(!(this instanceof IndexNode)){throw new SyntaxError("Constructor must be called with the new operator")}this.dimensions=dimensions;this.dotNotation=dotNotation||false;if(!isArray(dimensions)||!dimensions.every(function(range){return range&&range.isNode})){throw new TypeError('Array containing Nodes expected for parameter "dimensions"')}if(this.dotNotation&&!this.isObjectProperty()){throw new Error("dotNotation only applicable for object properties")}var deprecated=function(){throw new Error("Property `IndexNode.object` is deprecated, use `IndexNode.fn` instead")};Object.defineProperty(this,"object",{get:deprecated,set:deprecated})}IndexNode.prototype=new Node;IndexNode.prototype.type="IndexNode";IndexNode.prototype.isIndexNode=true;IndexNode.prototype._compile=function(defs,args){var childArgs=Object.create(args);defs.range=function(start,end,step){return new Range(start&&start.isBigNumber===true?start.toNumber():start,end&&end.isBigNumber===true?end.toNumber():end,step&&step.isBigNumber===true?step.toNumber():step)};var dimensions=this.dimensions.map(function(range,i){if(range&&range.isRangeNode){if(range.needsEnd()){childArgs.end=true;return"(function () {"+"var end = size["+i+"]; "+"return range("+range.start._compile(defs,childArgs)+", "+range.end._compile(defs,childArgs)+", "+(range.step?range.step._compile(defs,childArgs):"1")+"); "+"})()"}else{return"range("+range.start._compile(defs,childArgs)+", "+range.end._compile(defs,childArgs)+", "+(range.step?range.step._compile(defs,childArgs):"1")+")"}}if(range.isSymbolNode&&range.name==="end"){childArgs.end=true;return"(function () {"+"var end = size["+i+"]; "+"return "+range._compile(defs,childArgs)+"; "+"})()"}else{return range._compile(defs,childArgs)}});return"math.index("+dimensions.join(", ")+")"};IndexNode.prototype.forEach=function(callback){for(var i=0;i<this.dimensions.length;i++){callback(this.dimensions[i],"dimensions["+i+"]",this)}};IndexNode.prototype.map=function(callback){var dimensions=[];for(var i=0;i<this.dimensions.length;i++){dimensions[i]=this._ifNode(callback(this.dimensions[i],"dimensions["+i+"]",this))}return new IndexNode(dimensions)};IndexNode.prototype.clone=function(){return new IndexNode(this.dimensions.slice(0))};IndexNode.prototype.isObjectProperty=function(){return this.dimensions.length===1&&this.dimensions[0].isConstantNode&&this.dimensions[0].valueType==="string"};IndexNode.prototype.getObjectProperty=function(){return this.isObjectProperty()?this.dimensions[0].value:null};IndexNode.prototype._toString=function(options){return this.dotNotation?"."+this.getObjectProperty():"["+this.dimensions.join(", ")+"]"};IndexNode.prototype._toTex=function(options){var dimensions=this.dimensions.map(function(range){return range.toTex(options)});return this.dotNotation?"."+this.getObjectProperty()+"":"_{"+dimensions.join(",")+"}"};IndexNode.prototype.needsSize=function(){return this.dimensions.some(function(range){return range.isRangeNode&&range.needsEnd()||range.isSymbolNode&&range.name==="end"})};return IndexNode}exports.name="IndexNode";exports.path="expression.node";exports.factory=factory},{"../../type/matrix/Range":454,"./Node":226,"./RangeNode":230,"./SymbolNode":231}],226:[function(require,module,exports){"use strict";var keywords=require("../keywords");var extend=require("../../utils/object").extend;function factory(type,config,load,typed,math){function Node(){if(!(this instanceof Node)){throw new SyntaxError("Constructor must be called with the new operator")}}Node.prototype.eval=function(scope){return this.compile().eval(scope)};Node.prototype.type="Node";Node.prototype.isNode=true;Node.prototype.compile=function(){if(arguments.length>0){throw new Error("Calling compile(math) is deprecated. Call the function as compile() instead.")}var defs={math:math.expression.transform,args:{},_validateScope:_validateScope};var args={};var code=this._compile(defs,args);var defsCode=Object.keys(defs).map(function(name){return" var "+name+' = defs["'+name+'"];'});var factoryCode=defsCode.join(" ")+"return {"+' "eval": function (scope) {'+" if (scope) _validateScope(scope);"+" scope = scope || {};"+" return "+code+";"+" }"+"};";var factory=new Function("defs",factoryCode);return factory(defs)};Node.prototype._compile=function(defs,args){throw new Error("Cannot compile a Node interface")};Node.prototype.forEach=function(callback){throw new Error("Cannot run forEach on a Node interface")};Node.prototype.map=function(callback){throw new Error("Cannot run map on a Node interface")};Node.prototype._ifNode=function(node){if(!(node&&node.isNode)){throw new TypeError("Callback function must return a Node")}return node};Node.prototype.traverse=function(callback){callback(this,null,null);function _traverse(node,callback){node.forEach(function(child,path,parent){callback(child,path,parent);_traverse(child,callback)})}_traverse(this,callback)};Node.prototype.transform=function(callback){function _transform(node,callback){return node.map(function(child,path,parent){var replacement=callback(child,path,parent);return _transform(replacement,callback)})}var replacement=callback(this,null,null);return _transform(replacement,callback)};Node.prototype.filter=function(callback){var nodes=[];this.traverse(function(node,path,parent){if(callback(node,path,parent)){nodes.push(node)}});return nodes};Node.prototype.find=function(){throw new Error("Function Node.find is deprecated. Use Node.filter instead.")};Node.prototype.match=function(){throw new Error("Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.")};Node.prototype.clone=function(){throw new Error("Cannot clone a Node interface")};Node.prototype.toString=function(options){var customString;if(options&&typeof options=="object"){switch(typeof options.handler){case"object":case"undefined":break;case"function":customString=options.handler(this,options);break;default:throw new TypeError("Object or function expected as callback")}}if(typeof customString!=="undefined"){return customString}return this._toString(options)};Node.prototype._toString=function(){throw new Error("_toString not implemented for "+this.type)};Node.prototype.toTex=function(options){var customTex;if(options&&typeof options=="object"){switch(typeof options.handler){case"object":case"undefined":break;case"function":customTex=options.handler(this,options);break;default:throw new TypeError("Object or function expected as callback")}}if(typeof customTex!=="undefined"){return customTex}return this._toTex(options)};Node.prototype._toTex=function(options){throw new Error("_toTex not implemented for "+this.type)};Node.prototype.getIdentifier=function(){return this.type};Node.prototype.getContent=function(){return this};function _validateScope(scope){for(var symbol in scope){if(scope.hasOwnProperty(symbol)){if(symbol in keywords){throw new Error('Scope contains an illegal symbol, "'+symbol+'" is a reserved keyword')}}}}return Node}exports.name="Node";exports.path="expression.node";exports.math=true;exports.factory=factory},{"../../utils/object":509,"../keywords":216}],227:[function(require,module,exports){"use strict";var string=require("../../utils/string");function factory(type,config,load,typed){var Node=load(require("./Node"));function ObjectNode(properties){if(!(this instanceof ObjectNode)){throw new SyntaxError("Constructor must be called with the new operator")}this.properties=properties||{};if(properties){if(!(typeof properties==="object")||Object.keys(properties).some(function(key){return!properties[key]||!properties[key].isNode})){throw new TypeError("Object containing Nodes expected")}}}ObjectNode.prototype=new Node;ObjectNode.prototype.type="ObjectNode";ObjectNode.prototype.isObjectNode=true;ObjectNode.prototype._compile=function(defs,args){var entries=[];for(var key in this.properties){if(this.properties.hasOwnProperty(key)){entries.push('"'+key+'": '+this.properties[key]._compile(defs,args))}}return"{"+entries.join(", ")+"}"};ObjectNode.prototype.forEach=function(callback){for(var key in this.properties){if(this.properties.hasOwnProperty(key)){callback(this.properties[key],'properties["'+key+'"]',this)}}};ObjectNode.prototype.map=function(callback){var properties={};for(var key in this.properties){if(this.properties.hasOwnProperty(key)){properties[key]=this._ifNode(callback(this.properties[key],'properties["'+key+'"]',this))}}return new ObjectNode(properties)};ObjectNode.prototype.clone=function(){var properties={};for(var key in this.properties){if(this.properties.hasOwnProperty(key)){properties[key]=this.properties[key]}}return new ObjectNode(properties)};ObjectNode.prototype._toString=function(options){var entries=[];for(var key in this.properties){if(this.properties.hasOwnProperty(key)){entries.push('"'+key+'": '+this.properties[key].toString(options))}}return"{"+entries.join(", ")+"}"};ObjectNode.prototype._toTex=function(options){var entries=[];for(var key in this.properties){if(this.properties.hasOwnProperty(key)){entries.push("\\mathbf{"+key+":} & "+this.properties[key].toTex(options)+"\\\\")}}return"\\left\\{\\begin{array}{ll}"+entries.join("\n")+"\\end{array}\\right\\}"};return ObjectNode}exports.name="ObjectNode";exports.path="expression.node";exports.factory=factory},{"../../utils/string":510,"./Node":226}],228:[function(require,module,exports){"use strict";var latex=require("../../utils/latex");var operators=require("../operators");function factory(type,config,load,typed,math){var Node=load(require("./Node"));var ConstantNode=load(require("./ConstantNode"));var SymbolNode=load(require("./SymbolNode"));var FunctionNode=load(require("./FunctionNode"));function OperatorNode(op,fn,args,implicit){if(!(this instanceof OperatorNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(typeof op!=="string"){throw new TypeError('string expected for parameter "op"')}if(typeof fn!=="string"){throw new TypeError('string expected for parameter "fn"')}if(!Array.isArray(args)||!args.every(function(node){return node&&node.isNode})){throw new TypeError('Array containing Nodes expected for parameter "args"')}this.implicit=implicit===true;this.op=op;this.fn=fn;this.args=args||[]}OperatorNode.prototype=new Node;OperatorNode.prototype.type="OperatorNode";OperatorNode.prototype.isOperatorNode=true;OperatorNode.prototype._compile=function(defs,args){if(!defs.math[this.fn]){throw new Error("Function "+this.fn+' missing in provided namespace "math"')}var jsArgs=this.args.map(function(arg){return arg._compile(defs,args)});return"math."+this.fn+"("+jsArgs.join(", ")+")"};OperatorNode.prototype.forEach=function(callback){for(var i=0;i<this.args.length;i++){callback(this.args[i],"args["+i+"]",this)}};OperatorNode.prototype.map=function(callback){var args=[];for(var i=0;i<this.args.length;i++){args[i]=this._ifNode(callback(this.args[i],"args["+i+"]",this))}return new OperatorNode(this.op,this.fn,args)};OperatorNode.prototype.clone=function(){return new OperatorNode(this.op,this.fn,this.args.slice(0))};function calculateNecessaryParentheses(root,parenthesis,args,latex){var precedence=operators.getPrecedence(root,parenthesis);var associativity=operators.getAssociativity(root,parenthesis);if(parenthesis==="all"||args.length>2){var parens=[];args.forEach(function(arg){switch(arg.getContent().type){case"ArrayNode":case"ConstantNode":case"SymbolNode":case"ParenthesisNode":parens.push(false);break;default:parens.push(true)}});return parens}switch(args.length){case 0:return[];case 1:var operandPrecedence=operators.getPrecedence(args[0],parenthesis);if(latex&&operandPrecedence!==null){var operandIdentifier;var rootIdentifier;if(parenthesis==="keep"){operandIdentifier=args[0].getIdentifier();rootIdentifier=root.getIdentifier()}else{operandIdentifier=args[0].getContent().getIdentifier();rootIdentifier=root.getContent().getIdentifier()}if(operators.properties[precedence][rootIdentifier].latexLeftParens===false){return[false]}if(operators.properties[operandPrecedence][operandIdentifier].latexParens===false){return[false]}}if(operandPrecedence===null){return[false]}if(operandPrecedence<=precedence){return[true]}return[false];case 2:var lhsParens;var lhsPrecedence=operators.getPrecedence(args[0],parenthesis);var assocWithLhs=operators.isAssociativeWith(root,args[0],parenthesis);if(lhsPrecedence===null){lhsParens=false}else if(lhsPrecedence===precedence&&associativity==="right"&&!assocWithLhs){lhsParens=true}else if(lhsPrecedence<precedence){lhsParens=true}else{lhsParens=false}var rhsParens;var rhsPrecedence=operators.getPrecedence(args[1],parenthesis);var assocWithRhs=operators.isAssociativeWith(root,args[1],parenthesis);if(rhsPrecedence===null){rhsParens=false}else if(rhsPrecedence===precedence&&associativity==="left"&&!assocWithRhs){rhsParens=true}else if(rhsPrecedence<precedence){rhsParens=true}else{rhsParens=false}if(latex){var rootIdentifier;var lhsIdentifier;var rhsIdentifier;if(parenthesis==="keep"){rootIdentifier=root.getIdentifier();lhsIdentifier=root.args[0].getIdentifier();rhsIdentifier=root.args[1].getIdentifier()}else{rootIdentifier=root.getContent().getIdentifier();lhsIdentifier=root.args[0].getContent().getIdentifier();rhsIdentifier=root.args[1].getContent().getIdentifier()}if(lhsPrecedence!==null){if(operators.properties[precedence][rootIdentifier].latexLeftParens===false){lhsParens=false}if(operators.properties[lhsPrecedence][lhsIdentifier].latexParens===false){lhsParens=false}}if(rhsPrecedence!==null){if(operators.properties[precedence][rootIdentifier].latexRightParens===false){rhsParens=false}if(operators.properties[rhsPrecedence][rhsIdentifier].latexParens===false){rhsParens=false}}}return[lhsParens,rhsParens]}}OperatorNode.prototype._toString=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var implicit=options&&options.implicit?options.implicit:"hide";var args=this.args;var parens=calculateNecessaryParentheses(this,parenthesis,args,false);switch(args.length){case 1:var assoc=operators.getAssociativity(this,parenthesis);var operand=args[0].toString(options);if(parens[0]){operand="("+operand+")"}if(assoc==="right"){return this.op+operand}else if(assoc==="left"){return operand+this.op}return operand+this.op;case 2:var lhs=args[0].toString(options);var rhs=args[1].toString(options);if(parens[0]){lhs="("+lhs+")"}if(parens[1]){rhs="("+rhs+")"}if(this.implicit&&this.getIdentifier()==="OperatorNode:multiply"&&implicit=="hide"){return lhs+" "+rhs}return lhs+" "+this.op+" "+rhs;default:return this.fn+"("+this.args.join(", ")+")"}};OperatorNode.prototype._toTex=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var implicit=options&&options.implicit?options.implicit:"hide";var args=this.args;var parens=calculateNecessaryParentheses(this,parenthesis,args,true);var op=latex.operators[this.fn];op=typeof op==="undefined"?this.op:op;switch(args.length){case 1:var assoc=operators.getAssociativity(this,parenthesis);var operand=args[0].toTex(options);if(parens[0]){operand="\\left("+operand+"\\right)"}if(assoc==="right"){return op+operand}else if(assoc==="left"){return operand+op}return operand+op;case 2:var lhs=args[0];var lhsTex=lhs.toTex(options);if(parens[0]){lhsTex="\\left("+lhsTex+"\\right)"}var rhs=args[1];var rhsTex=rhs.toTex(options);if(parens[1]){rhsTex="\\left("+rhsTex+"\\right)"}var lhsIdentifier;if(parenthesis==="keep"){lhsIdentifier=lhs.getIdentifier()}else{lhsIdentifier=lhs.getContent().getIdentifier()}switch(this.getIdentifier()){case"OperatorNode:divide":return op+"{"+lhsTex+"}"+"{"+rhsTex+"}";case"OperatorNode:pow":lhsTex="{"+lhsTex+"}";rhsTex="{"+rhsTex+"}";switch(lhsIdentifier){case"ConditionalNode":case"OperatorNode:divide":lhsTex="\\left("+lhsTex+"\\right)"}case"OperatorNode:multiply":if(this.implicit&&implicit==="hide"){return lhsTex+"~"+rhsTex}}return lhsTex+op+rhsTex;default:return"\\mathrm{"+this.fn+"}\\left("+args.map(function(arg){return arg.toTex(options)}).join(",")+"\\right)"}};OperatorNode.prototype.getIdentifier=function(){return this.type+":"+this.fn};return OperatorNode}exports.name="OperatorNode";exports.path="expression.node";exports.math=true;exports.factory=factory},{"../../utils/latex":507,"../operators":236,"./ConstantNode":222,"./FunctionNode":224,"./Node":226,"./SymbolNode":231}],229:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var Node=load(require("./Node"));function ParenthesisNode(content){if(!(this instanceof ParenthesisNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(!(content&&content.isNode)){throw new TypeError('Node expected for parameter "content"')}this.content=content}ParenthesisNode.prototype=new Node;ParenthesisNode.prototype.type="ParenthesisNode";ParenthesisNode.prototype.isParenthesisNode=true;ParenthesisNode.prototype._compile=function(defs,args){return this.content._compile(defs,args)};ParenthesisNode.prototype.getContent=function(){return this.content.getContent()};ParenthesisNode.prototype.forEach=function(callback){callback(this.content,"content",this)};ParenthesisNode.prototype.map=function(callback){var content=callback(this.content,"content",this);return new ParenthesisNode(content)};ParenthesisNode.prototype.clone=function(){return new ParenthesisNode(this.content);
};ParenthesisNode.prototype._toString=function(options){if(!options||options&&!options.parenthesis||options&&options.parenthesis==="keep"){return"("+this.content.toString(options)+")"}return this.content.toString(options)};ParenthesisNode.prototype._toTex=function(options){if(!options||options&&!options.parenthesis||options&&options.parenthesis==="keep"){return"\\left("+this.content.toTex(options)+"\\right)"}return this.content.toTex(options)};return ParenthesisNode}exports.name="ParenthesisNode";exports.path="expression.node";exports.factory=factory},{"./Node":226}],230:[function(require,module,exports){"use strict";var operators=require("../operators");function factory(type,config,load,typed){var Node=load(require("./Node"));function RangeNode(start,end,step){if(!(this instanceof RangeNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(!(start&&start.isNode))throw new TypeError("Node expected");if(!(end&&end.isNode))throw new TypeError("Node expected");if(step&&!(step&&step.isNode))throw new TypeError("Node expected");if(arguments.length>3)throw new Error("Too many arguments");this.start=start;this.end=end;this.step=step||null}RangeNode.prototype=new Node;RangeNode.prototype.type="RangeNode";RangeNode.prototype.isRangeNode=true;RangeNode.prototype.needsEnd=function(){var endSymbols=this.filter(function(node){return node&&node.isSymbolNode&&node.name=="end"});return endSymbols.length>0};RangeNode.prototype._compile=function(defs,args){return"math.range("+this.start._compile(defs,args)+", "+this.end._compile(defs,args)+(this.step?", "+this.step._compile(defs,args):"")+")"};RangeNode.prototype.forEach=function(callback){callback(this.start,"start",this);callback(this.end,"end",this);if(this.step){callback(this.step,"step",this)}};RangeNode.prototype.map=function(callback){return new RangeNode(this._ifNode(callback(this.start,"start",this)),this._ifNode(callback(this.end,"end",this)),this.step&&this._ifNode(callback(this.step,"step",this)))};RangeNode.prototype.clone=function(){return new RangeNode(this.start,this.end,this.step&&this.step)};function calculateNecessaryParentheses(node,parenthesis){var precedence=operators.getPrecedence(node,parenthesis);var parens={};var startPrecedence=operators.getPrecedence(node.start,parenthesis);parens.start=startPrecedence!==null&&startPrecedence<=precedence||parenthesis==="all";if(node.step){var stepPrecedence=operators.getPrecedence(node.step,parenthesis);parens.step=stepPrecedence!==null&&stepPrecedence<=precedence||parenthesis==="all"}var endPrecedence=operators.getPrecedence(node.end,parenthesis);parens.end=endPrecedence!==null&&endPrecedence<=precedence||parenthesis==="all";return parens}RangeNode.prototype._toString=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var parens=calculateNecessaryParentheses(this,parenthesis);var str;var start=this.start.toString(options);if(parens.start){start="("+start+")"}str=start;if(this.step){var step=this.step.toString(options);if(parens.step){step="("+step+")"}str+=":"+step}var end=this.end.toString(options);if(parens.end){end="("+end+")"}str+=":"+end;return str};RangeNode.prototype._toTex=function(options){var parenthesis=options&&options.parenthesis?options.parenthesis:"keep";var parens=calculateNecessaryParentheses(this,parenthesis);var str=this.start.toTex(options);if(parens.start){str="\\left("+str+"\\right)"}if(this.step){var step=this.step.toTex(options);if(parens.step){step="\\left("+step+"\\right)"}str+=":"+step}var end=this.end.toTex(options);if(parens.end){end="\\left("+end+"\\right)"}str+=":"+end;return str};return RangeNode}exports.name="RangeNode";exports.path="expression.node";exports.factory=factory},{"../operators":236,"./Node":226}],231:[function(require,module,exports){"use strict";var latex=require("../../utils/latex");function factory(type,config,load,typed,math){var Node=load(require("./Node"));var Unit=load(require("../../type/unit/Unit"));function SymbolNode(name){if(!(this instanceof SymbolNode)){throw new SyntaxError("Constructor must be called with the new operator")}if(typeof name!=="string")throw new TypeError('String expected for parameter "name"');this.name=name}SymbolNode.prototype=new Node;SymbolNode.prototype.type="SymbolNode";SymbolNode.prototype.isSymbolNode=true;SymbolNode.prototype._compile=function(defs,args){defs["undef"]=undef;defs["Unit"]=Unit;if(args[this.name]){return this.name}else if(this.name in defs.math){return'("'+this.name+'" in scope ? scope["'+this.name+'"] : math["'+this.name+'"])'}else{return"("+'"'+this.name+'" in scope ? scope["'+this.name+'"] : '+(Unit.isValuelessUnit(this.name)?'new Unit(null, "'+this.name+'")':'undef("'+this.name+'")')+")"}};SymbolNode.prototype.forEach=function(callback){};SymbolNode.prototype.map=function(callback){return this.clone()};function undef(name){throw new Error("Undefined symbol "+name)}SymbolNode.prototype.clone=function(){return new SymbolNode(this.name)};SymbolNode.prototype._toString=function(options){return this.name};SymbolNode.prototype._toTex=function(options){var isUnit=false;if(typeof math[this.name]==="undefined"&&Unit.isValuelessUnit(this.name)){isUnit=true}var symbol=latex.toSymbol(this.name,isUnit);if(symbol[0]==="\\"){return symbol}return" "+symbol};return SymbolNode}exports.name="SymbolNode";exports.path="expression.node";exports.math=true;exports.factory=factory},{"../../type/unit/Unit":479,"../../utils/latex":507,"./Node":226}],232:[function(require,module,exports){"use strict";function factory(type,config,load,typed){function UpdateNode(){throw new Error("UpdateNode is deprecated. Use AssignmentNode instead.")}return UpdateNode}exports.name="UpdateNode";exports.path="expression.node";exports.factory=factory},{}],233:[function(require,module,exports){module.exports=[require("./AccessorNode"),require("./ArrayNode"),require("./AssignmentNode"),require("./BlockNode"),require("./ConditionalNode"),require("./ConstantNode"),require("./IndexNode"),require("./FunctionAssignmentNode"),require("./FunctionNode"),require("./Node"),require("./ObjectNode"),require("./OperatorNode"),require("./ParenthesisNode"),require("./RangeNode"),require("./SymbolNode"),require("./UpdateNode")]},{"./AccessorNode":217,"./ArrayNode":218,"./AssignmentNode":219,"./BlockNode":220,"./ConditionalNode":221,"./ConstantNode":222,"./FunctionAssignmentNode":223,"./FunctionNode":224,"./IndexNode":225,"./Node":226,"./ObjectNode":227,"./OperatorNode":228,"./ParenthesisNode":229,"./RangeNode":230,"./SymbolNode":231,"./UpdateNode":232}],234:[function(require,module,exports){"use strict";var errorTransform=require("../../transform/error.transform").transform;function factory(type,config,load,typed){var subset=load(require("../../../function/matrix/subset"));var matrix=load(require("../../../type/matrix/function/matrix"));return function access(object,index){try{if(Array.isArray(object)){return matrix(object).subset(index).valueOf()}else if(object&&typeof object.subset==="function"){return object.subset(index)}else if(typeof object==="string"){return subset(object,index)}else if(typeof object==="object"){if(!index.isObjectProperty()){throw TypeError("Cannot apply a numeric index as object property")}return object[index.getObjectProperty()]}else{throw new TypeError("Cannot apply index: unsupported type of object")}}catch(err){throw errorTransform(err)}}}exports.factory=factory},{"../../../function/matrix/subset":355,"../../../type/matrix/function/matrix":458,"../../transform/error.transform":239}],235:[function(require,module,exports){"use strict";var errorTransform=require("../../transform/error.transform").transform;function factory(type,config,load,typed){var subset=load(require("../../../function/matrix/subset"));var matrix=load(require("../../../type/matrix/function/matrix"));return function assign(object,index,value){try{if(Array.isArray(object)){return matrix(object).subset(index,value).valueOf()}else if(object&&typeof object.subset==="function"){return object.subset(index,value)}else if(typeof object==="string"){return subset(object,index,value)}else if(typeof object==="object"){if(!index.isObjectProperty()){throw TypeError("Cannot apply a numeric index as object property")}object[index.getObjectProperty()]=value;return object}else{throw new TypeError("Cannot apply index: unsupported type of object")}}catch(err){throw errorTransform(err)}}}exports.factory=factory},{"../../../function/matrix/subset":355,"../../../type/matrix/function/matrix":458,"../../transform/error.transform":239}],236:[function(require,module,exports){"use strict";var properties=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:false,latexRightParens:false,latexParens:false}},{"OperatorNode:or":{associativity:"left",associativeWith:[]}},{"OperatorNode:xor":{associativity:"left",associativeWith:[]}},{"OperatorNode:and":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitOr":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitXor":{associativity:"left",associativeWith:[]}},{"OperatorNode:bitAnd":{associativity:"left",associativeWith:[]}},{"OperatorNode:equal":{associativity:"left",associativeWith:[]},"OperatorNode:unequal":{associativity:"left",associativeWith:[]},"OperatorNode:smaller":{associativity:"left",associativeWith:[]},"OperatorNode:larger":{associativity:"left",associativeWith:[]},"OperatorNode:smallerEq":{associativity:"left",associativeWith:[]},"OperatorNode:largerEq":{associativity:"left",associativeWith:[]}},{"OperatorNode:leftShift":{associativity:"left",associativeWith:[]},"OperatorNode:rightArithShift":{associativity:"left",associativeWith:[]},"OperatorNode:rightLogShift":{associativity:"left",associativeWith:[]}},{"OperatorNode:to":{associativity:"left",associativeWith:[]}},{RangeNode:{}},{"OperatorNode:add":{associativity:"left",associativeWith:["OperatorNode:add","OperatorNode:subtract"]},"OperatorNode:subtract":{associativity:"left",associativeWith:[]}},{"OperatorNode:multiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","Operator:dotMultiply","Operator:dotDivide"]},"OperatorNode:divide":{associativity:"left",associativeWith:[],latexLeftParens:false,latexRightParens:false,latexParens:false},"OperatorNode:dotMultiply":{associativity:"left",associativeWith:["OperatorNode:multiply","OperatorNode:divide","OperatorNode:dotMultiply","OperatorNode:doDivide"]},"OperatorNode:dotDivide":{associativity:"left",associativeWith:[]},"OperatorNode:mod":{associativity:"left",associativeWith:[]}},{"OperatorNode:unaryPlus":{associativity:"right"},"OperatorNode:unaryMinus":{associativity:"right"},"OperatorNode:bitNot":{associativity:"right"},"OperatorNode:not":{associativity:"right"}},{"OperatorNode:pow":{associativity:"right",associativeWith:[],latexRightParens:false},"OperatorNode:dotPow":{associativity:"right",associativeWith:[]}},{"OperatorNode:factorial":{associativity:"left"}},{"OperatorNode:transpose":{associativity:"left"}}];function getPrecedence(_node,parenthesis){var node=_node;if(parenthesis!=="keep"){node=_node.getContent()}var identifier=node.getIdentifier();for(var i=0;i<properties.length;i++){if(identifier in properties[i]){return i}}return null}function getAssociativity(_node,parenthesis){var node=_node;if(parenthesis!=="keep"){node=_node.getContent()}var identifier=node.getIdentifier();var index=getPrecedence(node,parenthesis);if(index===null){return null}var property=properties[index][identifier];if(property.hasOwnProperty("associativity")){if(property.associativity==="left"){return"left"}if(property.associativity==="right"){return"right"}throw Error("'"+identifier+"' has the invalid associativity '"+property.associativity+"'.")}return null}function isAssociativeWith(nodeA,nodeB,parenthesis){var a=nodeA;var b=nodeB;if(parenthesis!=="keep"){var a=nodeA.getContent();var b=nodeB.getContent()}var identifierA=a.getIdentifier();var identifierB=b.getIdentifier();var index=getPrecedence(a,parenthesis);if(index===null){return null}var property=properties[index][identifierA];if(property.hasOwnProperty("associativeWith")&&property.associativeWith instanceof Array){for(var i=0;i<property.associativeWith.length;i++){if(property.associativeWith[i]===identifierB){return true}}return false}return null}module.exports.properties=properties;module.exports.getPrecedence=getPrecedence;module.exports.getAssociativity=getAssociativity;module.exports.isAssociativeWith=isAssociativeWith},{}],237:[function(require,module,exports){"use strict";var ArgumentsError=require("../error/ArgumentsError");var deepMap=require("../utils/collection/deepMap");function factory(type,config,load,typed){var AccessorNode=load(require("./node/AccessorNode"));var ArrayNode=load(require("./node/ArrayNode"));var AssignmentNode=load(require("./node/AssignmentNode"));var BlockNode=load(require("./node/BlockNode"));var ConditionalNode=load(require("./node/ConditionalNode"));var ConstantNode=load(require("./node/ConstantNode"));var FunctionAssignmentNode=load(require("./node/FunctionAssignmentNode"));var IndexNode=load(require("./node/IndexNode"));var ObjectNode=load(require("./node/ObjectNode"));var OperatorNode=load(require("./node/OperatorNode"));var ParenthesisNode=load(require("./node/ParenthesisNode"));var FunctionNode=load(require("./node/FunctionNode"));var RangeNode=load(require("./node/RangeNode"));var SymbolNode=load(require("./node/SymbolNode"));function parse(expr,options){if(arguments.length!=1&&arguments.length!=2){throw new ArgumentsError("parse",arguments.length,1,2)}extra_nodes=options&&options.nodes?options.nodes:{};if(typeof expr==="string"){expression=expr;return parseStart()}else if(Array.isArray(expr)||expr instanceof type.Matrix){return deepMap(expr,function(elem){if(typeof elem!=="string")throw new TypeError("String expected");expression=elem;return parseStart()})}else{throw new TypeError("String or matrix expected")}}var TOKENTYPE={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4};var DELIMITERS={",":true,"(":true,")":true,"[":true,"]":true,"{":true,"}":true,'"':true,";":true,"+":true,"-":true,"*":true,".*":true,"/":true,"./":true,"%":true,"^":true,".^":true,"~":true,"!":true,"&":true,"|":true,"^|":true,"'":true,"=":true,":":true,"?":true,"==":true,"!=":true,"<":true,">":true,"<=":true,">=":true,"<<":true,">>":true,">>>":true};var NAMED_DELIMITERS={mod:true,to:true,in:true,and:true,xor:true,or:true,not:true};var extra_nodes={};var expression="";var index=0;var c="";var token="";var token_type=TOKENTYPE.NULL;var nesting_level=0;var conditional_level=null;function first(){index=0;c=expression.charAt(0);nesting_level=0;conditional_level=null}function next(){index++;c=expression.charAt(index)}function nextPreview(){return expression.charAt(index+1)}function nextNextPreview(){return expression.charAt(index+2)}function getToken(){token_type=TOKENTYPE.NULL;token="";while(c==" "||c=="\t"||c=="\n"&&nesting_level){next()}if(c=="#"){while(c!="\n"&&c!=""){next()}}if(c==""){token_type=TOKENTYPE.DELIMITER;return}if(c=="\n"&&!nesting_level){token_type=TOKENTYPE.DELIMITER;token=c;next();return}var c2=c+nextPreview();var c3=c2+nextNextPreview();if(c3.length==3&&DELIMITERS[c3]){token_type=TOKENTYPE.DELIMITER;token=c3;next();next();next();return}if(c2.length==2&&DELIMITERS[c2]){token_type=TOKENTYPE.DELIMITER;token=c2;next();next();return}if(DELIMITERS[c]){token_type=TOKENTYPE.DELIMITER;token=c;next();return}if(isDigitDot(c)){token_type=TOKENTYPE.NUMBER;if(c=="."){token+=c;next();if(!isDigit(c)){token_type=TOKENTYPE.UNKNOWN}}else{while(isDigit(c)){token+=c;next()}if(c=="."){token+=c;next()}}while(isDigit(c)){token+=c;next()}c2=nextPreview();if(c=="E"||c=="e"){if(isDigit(c2)||c2=="-"||c2=="+"){token+=c;next();if(c=="+"||c=="-"){token+=c;next()}if(!isDigit(c)){throw createSyntaxError('Digit expected, got "'+c+'"')}while(isDigit(c)){token+=c;next()}if(c=="."){throw createSyntaxError('Digit expected, got "'+c+'"')}}else if(c2=="."){next();throw createSyntaxError('Digit expected, got "'+c+'"')}}return}if(currentIsAlpha()){while(currentIsAlpha()||isDigit(c)){token+=c;next()}if(NAMED_DELIMITERS.hasOwnProperty(token)){token_type=TOKENTYPE.DELIMITER}else{token_type=TOKENTYPE.SYMBOL}return}token_type=TOKENTYPE.UNKNOWN;while(c!=""){token+=c;next()}throw createSyntaxError('Syntax error in part "'+token+'"')}function getTokenSkipNewline(){do{getToken()}while(token=="\n")}function openParams(){nesting_level++}function closeParams(){nesting_level--}function currentIsAlpha(){var cPrev=expression.charAt(index-1);var cNext=expression.charAt(index+1);var isValidLatinOrGreek=function(p){return/^[a-zA-Z_\u00C0-\u02AF\u0370-\u03FF]$/.test(p)};var isValidMathSymbol=function(high,low){return/^[\uD835]$/.test(high)&&/^[\uDC00-\uDFFF]$/.test(low)&&/^[^\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]$/.test(low)};return isValidLatinOrGreek(c)||isValidMathSymbol(c,cNext)||isValidMathSymbol(cPrev,c)}function isDigitDot(c){return c>="0"&&c<="9"||c=="."}function isDigit(c){return c>="0"&&c<="9"}function parseStart(){first();getToken();var node=parseBlock();if(token!=""){if(token_type==TOKENTYPE.DELIMITER){throw createError("Unexpected operator "+token)}else{throw createSyntaxError('Unexpected part "'+token+'"')}}return node}function parseBlock(){var node;var blocks=[];var visible;if(token==""){return new ConstantNode("undefined","undefined")}if(token!="\n"&&token!=";"){node=parseAssignment()}while(token=="\n"||token==";"){if(blocks.length==0&&node){visible=token!=";";blocks.push({node:node,visible:visible})}getToken();if(token!="\n"&&token!=";"&&token!=""){node=parseAssignment();visible=token!=";";blocks.push({node:node,visible:visible})}}if(blocks.length>0){return new BlockNode(blocks)}else{return node}}function parseAssignment(){var name,args,value,valid;var node=parseConditional();if(token=="="){if(node&&node.isSymbolNode){name=node.name;getTokenSkipNewline();value=parseAssignment();return new AssignmentNode(new SymbolNode(name),value)}else if(node&&node.isAccessorNode){getTokenSkipNewline();value=parseAssignment();return new AssignmentNode(node.object,node.index,value)}else if(node&&node.isFunctionNode){valid=true;args=[];name=node.name;node.args.forEach(function(arg,index){if(arg&&arg.isSymbolNode){args[index]=arg.name}else{valid=false}});if(valid){getTokenSkipNewline();value=parseAssignment();return new FunctionAssignmentNode(name,args,value)}}throw createSyntaxError("Invalid left hand side of assignment operator =")}return node}function parseConditional(){var node=parseLogicalOr();while(token=="?"){var prev=conditional_level;conditional_level=nesting_level;getTokenSkipNewline();var condition=node;var trueExpr=parseAssignment();if(token!=":")throw createSyntaxError("False part of conditional expression expected");conditional_level=null;getTokenSkipNewline();var falseExpr=parseAssignment();node=new ConditionalNode(condition,trueExpr,falseExpr);conditional_level=prev}return node}function parseLogicalOr(){var node=parseLogicalXor();while(token=="or"){getTokenSkipNewline();node=new OperatorNode("or","or",[node,parseLogicalXor()])}return node}function parseLogicalXor(){var node=parseLogicalAnd();while(token=="xor"){getTokenSkipNewline();node=new OperatorNode("xor","xor",[node,parseLogicalAnd()])}return node}function parseLogicalAnd(){var node=parseBitwiseOr();while(token=="and"){getTokenSkipNewline();node=new OperatorNode("and","and",[node,parseBitwiseOr()])}return node}function parseBitwiseOr(){var node=parseBitwiseXor();while(token=="|"){getTokenSkipNewline();node=new OperatorNode("|","bitOr",[node,parseBitwiseXor()])}return node}function parseBitwiseXor(){var node=parseBitwiseAnd();while(token=="^|"){getTokenSkipNewline();node=new OperatorNode("^|","bitXor",[node,parseBitwiseAnd()])}return node}function parseBitwiseAnd(){var node=parseRelational();while(token=="&"){getTokenSkipNewline();node=new OperatorNode("&","bitAnd",[node,parseRelational()])}return node}function parseRelational(){var node,operators,name,fn,params;node=parseShift();operators={"==":"equal","!=":"unequal","<":"smaller",">":"larger","<=":"smallerEq",">=":"largerEq"};while(token in operators){name=token;fn=operators[name];getTokenSkipNewline();params=[node,parseShift()];node=new OperatorNode(name,fn,params)}return node}function parseShift(){var node,operators,name,fn,params;node=parseConversion();operators={"<<":"leftShift",">>":"rightArithShift",">>>":"rightLogShift"};while(token in operators){name=token;fn=operators[name];getTokenSkipNewline();params=[node,parseConversion()];node=new OperatorNode(name,fn,params)}return node}function parseConversion(){var node,operators,name,fn,params;node=parseRange();operators={to:"to",in:"to"};while(token in operators){name=token;fn=operators[name];getTokenSkipNewline();if(name==="in"&&token===""){node=new OperatorNode("*","multiply",[node,new SymbolNode("in")],true)}else{params=[node,parseRange()];node=new OperatorNode(name,fn,params)}}return node}function parseRange(){var node,params=[];if(token==":"){node=new ConstantNode("1","number")}else{node=parseAddSubtract()}if(token==":"&&conditional_level!==nesting_level){params.push(node);while(token==":"&&params.length<3){getTokenSkipNewline();if(token==")"||token=="]"||token==","||token==""){params.push(new SymbolNode("end"))}else{params.push(parseAddSubtract())}}if(params.length==3){node=new RangeNode(params[0],params[2],params[1])}else{node=new RangeNode(params[0],params[1])}}return node}function parseAddSubtract(){var node,operators,name,fn,params;node=parseMultiplyDivide();operators={"+":"add","-":"subtract"};while(token in operators){name=token;fn=operators[name];getTokenSkipNewline();params=[node,parseMultiplyDivide()];node=new OperatorNode(name,fn,params)}return node}function parseMultiplyDivide(){var node,last,operators,name,fn;node=parseUnary();last=node;operators={"*":"multiply",".*":"dotMultiply","/":"divide","./":"dotDivide","%":"mod",mod:"mod"};while(true){if(token in operators){name=token;fn=operators[name];getTokenSkipNewline();last=parseUnary();node=new OperatorNode(name,fn,[node,last])}else if(token_type==TOKENTYPE.SYMBOL||token=="in"&&(node&&node.isConstantNode)||token_type==TOKENTYPE.NUMBER&&!last.isConstantNode||token=="("){last=parseUnary();node=new OperatorNode("*","multiply",[node,last],true)}else{break}}return node}function parseUnary(){var name,params;var fn={"-":"unaryMinus","+":"unaryPlus","~":"bitNot",not:"not"}[token];if(fn){name=token;getTokenSkipNewline();params=[parseUnary()];return new OperatorNode(name,fn,params)}return parsePow()}function parsePow(){var node,name,fn,params;node=parseLeftHandOperators();if(token=="^"||token==".^"){name=token;fn=name=="^"?"pow":"dotPow";getTokenSkipNewline();params=[node,parseUnary()];node=new OperatorNode(name,fn,params)}return node}function parseLeftHandOperators(){var node,operators,name,fn,params;node=parseCustomNodes();operators={"!":"factorial","'":"transpose"};while(token in operators){name=token;fn=operators[name];getToken();params=[node];node=new OperatorNode(name,fn,params);node=parseAccessors(node)}return node}function parseCustomNodes(){var params=[],handler;if(token_type==TOKENTYPE.SYMBOL&&extra_nodes[token]){handler=extra_nodes[token];getToken();if(token=="("){params=[];openParams();getToken();if(token!=")"){params.push(parseAssignment());while(token==","){getToken();params.push(parseAssignment())}}if(token!=")"){throw createSyntaxError("Parenthesis ) expected")}closeParams();getToken()}return new handler(params)}return parseSymbol()}function parseSymbol(){var node,name;if(token_type==TOKENTYPE.SYMBOL||token_type==TOKENTYPE.DELIMITER&&token in NAMED_DELIMITERS){name=token;getToken();node=new SymbolNode(name);node=parseAccessors(node);return node}return parseString()}function parseAccessors(node,types){var params;while((token=="("||token=="["||token==".")&&(!types||types.indexOf(token)!==-1)){params=[];if(token=="("){if(node.isSymbolNode||node.isAccessorNode){openParams();getToken();if(token!=")"){params.push(parseAssignment());while(token==","){getToken();params.push(parseAssignment())}}if(token!=")"){throw createSyntaxError("Parenthesis ) expected")}closeParams();getToken();node=new FunctionNode(node,params)}else{return node}}else if(token=="["){openParams();getToken();if(token!="]"){params.push(parseAssignment());while(token==","){getToken();params.push(parseAssignment())}}if(token!="]"){throw createSyntaxError("Parenthesis ] expected")}closeParams();getToken();node=new AccessorNode(node,new IndexNode(params))}else{getToken();if(token_type!=TOKENTYPE.SYMBOL){throw createSyntaxError("Property name expected after dot")}params.push(new ConstantNode(token));getToken();var dotNotation=true;node=new AccessorNode(node,new IndexNode(params,dotNotation))}}return node}function parseString(){var node,str;if(token=='"'){str=parseStringToken();node=new ConstantNode(str,"string");node=parseAccessors(node);return node}return parseMatrix()}function parseStringToken(){var str="";while(c!=""&&c!='"'){if(c=="\\"){str+=c;next()}str+=c;next()}getToken();if(token!='"'){throw createSyntaxError('End of string " expected')}getToken();return str}function parseMatrix(){var array,params,rows,cols;if(token=="["){openParams();getToken();if(token!="]"){var row=parseRow();if(token==";"){rows=1;params=[row];while(token==";"){getToken();params[rows]=parseRow();rows++}if(token!="]"){throw createSyntaxError("End of matrix ] expected")}closeParams();getToken();cols=params[0].items.length;for(var r=1;r<rows;r++){if(params[r].items.length!=cols){throw createError("Column dimensions mismatch "+"("+params[r].items.length+" != "+cols+")")}}array=new ArrayNode(params)}else{if(token!="]"){throw createSyntaxError("End of matrix ] expected")}closeParams();getToken();array=row}}else{closeParams();getToken();array=new ArrayNode([])}return parseAccessors(array)}return parseObject()}function parseRow(){var params=[parseAssignment()];var len=1;while(token==","){getToken();params[len]=parseAssignment();len++}return new ArrayNode(params)}function parseObject(){if(token=="{"){var key;var properties={};do{getToken();if(token!="}"){if(token=='"'){key=parseStringToken()}else if(token_type==TOKENTYPE.SYMBOL){key=token;getToken()}else{throw createSyntaxError("Symbol or string expected as object key")}if(token!=":"){throw createSyntaxError("Colon : expected after object key")}getToken();properties[key]=parseAssignment()}}while(token==",");if(token!="}"){throw createSyntaxError("Comma , or bracket } expected after object value")}getToken();var node=new ObjectNode(properties);node=parseAccessors(node);return node}return parseNumber()}function parseNumber(){var number;if(token_type==TOKENTYPE.NUMBER){number=token;getToken();return new ConstantNode(number,"number")}return parseParentheses()}function parseParentheses(){var node;if(token=="("){openParams();getToken();node=parseAssignment();if(token!=")"){throw createSyntaxError("Parenthesis ) expected")}closeParams();getToken();node=new ParenthesisNode(node);node=parseAccessors(node);return node}return parseEnd()}function parseEnd(){if(token==""){throw createSyntaxError("Unexpected end of expression")}else{throw createSyntaxError("Value expected")}}function col(){return index-token.length+1}function createSyntaxError(message){var c=col();var error=new SyntaxError(message+" (char "+c+")");error["char"]=c;return error}function createError(message){var c=col();var error=new SyntaxError(message+" (char "+c+")");error["char"]=c;return error}return parse}exports.name="parse";exports.path="expression";exports.factory=factory},{"../error/ArgumentsError":29,"../utils/collection/deepMap":500,"./node/AccessorNode":217,"./node/ArrayNode":218,"./node/AssignmentNode":219,"./node/BlockNode":220,"./node/ConditionalNode":221,"./node/ConstantNode":222,"./node/FunctionAssignmentNode":223,"./node/FunctionNode":224,"./node/IndexNode":225,"./node/ObjectNode":227,"./node/OperatorNode":228,"./node/ParenthesisNode":229,"./node/RangeNode":230,"./node/SymbolNode":231}],238:[function(require,module,exports){"use strict";var errorTransform=require("./error.transform").transform;function factory(type,config,load,typed){var concat=load(require("../../function/matrix/concat"));return typed("concat",{"...any":function(args){var lastIndex=args.length-1;var last=args[lastIndex];if(typeof last==="number"){args[lastIndex]=last-1}else if(last&&last.isBigNumber===true){args[lastIndex]=last.minus(1)}try{return concat.apply(null,args)}catch(err){throw errorTransform(err)}}})}exports.name="concat";exports.path="expression.transform";exports.factory=factory},{"../../function/matrix/concat":336,"./error.transform":239}],239:[function(require,module,exports){var IndexError=require("../../error/IndexError");exports.transform=function(err){if(err&&err.isIndexError){return new IndexError(err.index+1,err.min+1,err.max!==undefined?err.max+1:undefined)}return err}},{"../../error/IndexError":31}],240:[function(require,module,exports){"use strict";var maxArgumentCount=require("../../utils/function").maxArgumentCount;function factory(type,config,load,typed){var filter=load(require("../../function/matrix/filter"));var SymbolNode=load(require("../node/SymbolNode"));function filterTransform(args,math,scope){var x,test;if(args[0]){x=args[0].compile().eval(scope)}if(args[1]){if(args[1]&&args[1].isSymbolNode){test=args[1].compile().eval(scope)}else{var _scope=scope||{};var symbol=args[1].filter(function(node){return node&&node.isSymbolNode&&!(node.name in math)&&!(node.name in _scope)})[0];var sub=Object.create(_scope);var eq=args[1].compile();if(symbol){var name=symbol.name;test=function(x){sub[name]=x;return eq.eval(sub)}}else{throw new Error("No undefined variable found in filter equation")}}}return filter(x,test)}filterTransform.rawArgs=true;return filterTransform}exports.name="filter";exports.path="expression.transform";exports.factory=factory},{"../../function/matrix/filter":342,"../../utils/function":505,"../node/SymbolNode":231}],241:[function(require,module,exports){"use strict";var maxArgumentCount=require("../../utils/function").maxArgumentCount;function factory(type,config,load,typed){var forEach=load(require("../../function/matrix/forEach"));return typed("forEach",{"Array | Matrix, function":function(array,callback){var args=maxArgumentCount(callback);var recurse=function(value,index){if(Array.isArray(value)){value.forEach(function(child,i){recurse(child,index.concat(i+1))})}else{if(args===1){callback(value)}else if(args===2){callback(value,index)}else{callback(value,index,array)}}};recurse(array.valueOf(),[])}})}exports.name="forEach";exports.path="expression.transform";exports.factory=factory},{"../../function/matrix/forEach":344,"../../utils/function":505}],242:[function(require,module,exports){module.exports=[require("./concat.transform"),require("./filter.transform"),require("./forEach.transform"),require("./index.transform"),require("./map.transform"),require("./max.transform"),require("./mean.transform"),require("./min.transform"),require("./range.transform"),require("./subset.transform")]},{"./concat.transform":238,"./filter.transform":240,"./forEach.transform":241,"./index.transform":243,"./map.transform":244,"./max.transform":245,"./mean.transform":246,"./min.transform":247,"./range.transform":248,"./subset.transform":249}],243:[function(require,module,exports){"use strict";var isArray=Array.isArray;function factory(type,config,load){var indexFactory=load(require("../../type/matrix/function/index"));return function indexTransform(){var args=[];for(var i=0,ii=arguments.length;i<ii;i++){var arg=arguments[i];if(arg&&arg.isRange===true){arg.start--;arg.end-=arg.step>0?0:2}else if(arg&&arg.isSet===true){arg=arg.map(function(v){return v-1})}else if(arg&&(arg.isArray===true||arg.isMatrix)){arg=arg.map(function(v){return v-1})}else if(typeof arg==="number"){arg--}else if(arg&&arg.isBigNumber===true){
arg=arg.toNumber()-1}else if(typeof arg==="string"){}else{throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range")}args[i]=arg}var res=new type.Index;type.Index.apply(res,args);return res}}exports.name="index";exports.path="expression.transform";exports.factory=factory},{"../../type/matrix/function/index":457}],244:[function(require,module,exports){"use strict";var maxArgumentCount=require("../../utils/function").maxArgumentCount;function factory(type,config,load,typed){var map=load(require("../../function/matrix/map"));var matrix=load(require("../../type/matrix/function/matrix"));return typed("max",{"Array, function":function(x,callback){return _map(x,callback,x)},"Matrix, function":function(x,callback){return matrix(_map(x.valueOf(),callback,x))}})}function _map(array,callback,orig){var args=maxArgumentCount(callback);function recurse(value,index){if(Array.isArray(value)){return value.map(function(child,i){return recurse(child,index.concat(i+1))})}else{if(args===1){return callback(value)}else if(args===2){return callback(value,index)}else{return callback(value,index,orig)}}}return recurse(array,[])}exports.name="map";exports.path="expression.transform";exports.factory=factory},{"../../function/matrix/map":347,"../../type/matrix/function/matrix":458,"../../utils/function":505}],245:[function(require,module,exports){"use strict";var errorTransform=require("./error.transform").transform;var isCollection=require("../../utils/collection/isCollection");function factory(type,config,load,typed){var max=load(require("../../function/statistics/max"));return typed("max",{"...any":function(args){if(args.length==2&&isCollection(args[0])){var dim=args[1];if(typeof dim==="number"){args[1]=dim-1}else if(dim&&dim.isBigNumber===true){args[1]=dim.minus(1)}}try{return max.apply(null,args)}catch(err){throw errorTransform(err)}}})}exports.name="max";exports.path="expression.transform";exports.factory=factory},{"../../function/statistics/max":381,"../../utils/collection/isCollection":501,"./error.transform":239}],246:[function(require,module,exports){"use strict";var errorTransform=require("./error.transform").transform;var isCollection=require("../../utils/collection/isCollection");function factory(type,config,load,typed){var mean=load(require("../../function/statistics/mean"));return typed("mean",{"...any":function(args){if(args.length==2&&isCollection(args[0])){var dim=args[1];if(typeof dim==="number"){args[1]=dim-1}else if(dim&&dim.isBigNumber===true){args[1]=dim.minus(1)}}try{return mean.apply(null,args)}catch(err){throw errorTransform(err)}}})}exports.name="mean";exports.path="expression.transform";exports.factory=factory},{"../../function/statistics/mean":382,"../../utils/collection/isCollection":501,"./error.transform":239}],247:[function(require,module,exports){"use strict";var errorTransform=require("./error.transform").transform;var isCollection=require("../../utils/collection/isCollection");function factory(type,config,load,typed){var min=load(require("../../function/statistics/min"));return typed("min",{"...any":function(args){if(args.length==2&&isCollection(args[0])){var dim=args[1];if(typeof dim==="number"){args[1]=dim-1}else if(dim&&dim.isBigNumber===true){args[1]=dim.minus(1)}}try{return min.apply(null,args)}catch(err){throw errorTransform(err)}}})}exports.name="min";exports.path="expression.transform";exports.factory=factory},{"../../function/statistics/min":384,"../../utils/collection/isCollection":501,"./error.transform":239}],248:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var range=load(require("../../function/matrix/range"));return typed("range",{"...any":function(args){var lastIndex=args.length-1;var last=args[lastIndex];if(typeof last!=="boolean"){args.push(true)}return range.apply(null,args)}})}exports.name="range";exports.path="expression.transform";exports.factory=factory},{"../../function/matrix/range":350}],249:[function(require,module,exports){"use strict";var errorTransform=require("./error.transform").transform;function factory(type,config,load,typed){var subset=load(require("../../function/matrix/subset"));return typed("subset",{"...any":function(args){try{return subset.apply(null,args)}catch(err){throw errorTransform(err)}}})}exports.name="subset";exports.path="expression.transform";exports.factory=factory},{"../../function/matrix/subset":355,"./error.transform":239}],250:[function(require,module,exports){"use strict";var util=require("../../../utils/index");var object=util.object;function factory(type,config,load,typed){var matrix=load(require("../../../type/matrix/function/matrix"));var abs=load(require("../../arithmetic/abs"));var addScalar=load(require("../../arithmetic/addScalar"));var divideScalar=load(require("../../arithmetic/divideScalar"));var multiplyScalar=load(require("../../arithmetic/multiplyScalar"));var subtract=load(require("../../arithmetic/subtract"));var larger=load(require("../../relational/larger"));var equalScalar=load(require("../../relational/equalScalar"));var unaryMinus=load(require("../../arithmetic/unaryMinus"));var SparseMatrix=type.SparseMatrix;var DenseMatrix=type.DenseMatrix;var Spa=type.Spa;var lup=typed("lup",{DenseMatrix:function(m){return _denseLUP(m)},SparseMatrix:function(m){return _sparseLUP(m)},Array:function(a){var m=matrix(a);var r=_denseLUP(m);return{L:r.L.valueOf(),U:r.U.valueOf(),p:r.p}}});var _denseLUP=function(m){var rows=m._size[0];var columns=m._size[1];var n=Math.min(rows,columns);var data=object.clone(m._data);var ldata=[];var lsize=[rows,n];var udata=[];var usize=[n,columns];var i,j,k;var p=[];for(i=0;i<rows;i++)p[i]=i;for(j=0;j<columns;j++){if(j>0){for(i=0;i<rows;i++){var min=Math.min(i,j);var s=0;for(k=0;k<min;k++){s=addScalar(s,multiplyScalar(data[i][k],data[k][j]))}data[i][j]=subtract(data[i][j],s)}}var pi=j;var pabsv=0;var vjj=0;for(i=j;i<rows;i++){var v=data[i][j];var absv=abs(v);if(larger(absv,pabsv)){pi=i;pabsv=absv;vjj=v}}if(j!==pi){p[j]=[p[pi],p[pi]=p[j]][0];DenseMatrix._swapRows(j,pi,data)}if(j<rows){for(i=j+1;i<rows;i++){var vij=data[i][j];if(!equalScalar(vij,0)){data[i][j]=divideScalar(data[i][j],vjj)}}}}for(j=0;j<columns;j++){for(i=0;i<rows;i++){if(j===0){if(i<columns){udata[i]=[]}ldata[i]=[]}if(i<j){if(i<columns){udata[i][j]=data[i][j]}if(j<rows){ldata[i][j]=0}continue}if(i===j){if(i<columns){udata[i][j]=data[i][j]}if(j<rows){ldata[i][j]=1}continue}if(i<columns){udata[i][j]=0}if(j<rows){ldata[i][j]=data[i][j]}}}var l=new DenseMatrix({data:ldata,size:lsize});var u=new DenseMatrix({data:udata,size:usize});var pv=[];for(i=0,n=p.length;i<n;i++)pv[p[i]]=i;return{L:l,U:u,p:pv,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};var _sparseLUP=function(m){var rows=m._size[0];var columns=m._size[1];var n=Math.min(rows,columns);var values=m._values;var index=m._index;var ptr=m._ptr;var lvalues=[];var lindex=[];var lptr=[];var lsize=[rows,n];var uvalues=[];var uindex=[];var uptr=[];var usize=[n,columns];var i,j,k;var pv_co=[];var pv_oc=[];for(i=0;i<rows;i++){pv_co[i]=i;pv_oc[i]=i}var swapIndeces=function(x,y){var kx=pv_oc[x];var ky=pv_oc[y];pv_co[kx]=y;pv_co[ky]=x;pv_oc[x]=ky;pv_oc[y]=kx};for(j=0;j<columns;j++){var spa=new Spa;if(j<rows){lptr.push(lvalues.length);lvalues.push(1);lindex.push(j)}uptr.push(uvalues.length);var k0=ptr[j];var k1=ptr[j+1];for(k=k0;k<k1;k++){i=index[k];spa.set(pv_co[i],values[k])}if(j>0){spa.forEach(0,j-1,function(k,vkj){SparseMatrix._forEachRow(k,lvalues,lindex,lptr,function(i,vik){if(i>k){spa.accumulate(i,unaryMinus(multiplyScalar(vik,vkj)))}})})}var pi=j;var vjj=spa.get(j);var pabsv=abs(vjj);spa.forEach(j+1,rows-1,function(x,v){var absv=abs(v);if(larger(absv,pabsv)){pi=x;pabsv=absv;vjj=v}});if(j!==pi){SparseMatrix._swapRows(j,pi,lsize[1],lvalues,lindex,lptr);SparseMatrix._swapRows(j,pi,usize[1],uvalues,uindex,uptr);spa.swap(j,pi);swapIndeces(j,pi)}spa.forEach(0,rows-1,function(x,v){if(x<=j){uvalues.push(v);uindex.push(x)}else{v=divideScalar(v,vjj);if(!equalScalar(v,0)){lvalues.push(v);lindex.push(x)}}})}uptr.push(uvalues.length);lptr.push(lvalues.length);return{L:new SparseMatrix({values:lvalues,index:lindex,ptr:lptr,size:lsize}),U:new SparseMatrix({values:uvalues,index:uindex,ptr:uptr,size:usize}),p:pv_co,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\nP: "+this.p}}};return lup}exports.name="lup";exports.factory=factory},{"../../../type/matrix/function/matrix":458,"../../../utils/index":506,"../../arithmetic/abs":275,"../../arithmetic/addScalar":277,"../../arithmetic/divideScalar":282,"../../arithmetic/multiplyScalar":297,"../../arithmetic/subtract":305,"../../arithmetic/unaryMinus":306,"../../relational/equalScalar":373,"../../relational/larger":375}],251:[function(require,module,exports){"use strict";var util=require("../../../utils/index");var number=util.number,isInteger=number.isInteger;function factory(type,config,load,typed){var cs_sqr=load(require("../../algebra/sparse/cs_sqr"));var cs_lu=load(require("../../algebra/sparse/cs_lu"));var slu=typed("slu",{"SparseMatrix, number, number":function(a,order,threshold){if(!isInteger(order)||order<0||order>3)throw new Error("Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]");if(threshold<0||threshold>1)throw new Error("Partial pivoting threshold must be a number from 0 to 1");var s=cs_sqr(order,a,false);var f=cs_lu(a,s,threshold);return{L:f.L,U:f.U,p:f.pinv,q:s.q,toString:function(){return"L: "+this.L.toString()+"\nU: "+this.U.toString()+"\np: "+this.p.toString()+(this.q?"\nq: "+this.q.toString():"")+"\n"}}}});return slu}exports.name="slu";exports.factory=factory},{"../../../utils/index":506,"../../algebra/sparse/cs_lu":265,"../../algebra/sparse/cs_sqr":272}],252:[function(require,module,exports){module.exports=[require("./decomposition/lup"),require("./decomposition/slu"),require("./solver/lsolve"),require("./solver/lusolve"),require("./solver/usolve")]},{"./decomposition/lup":250,"./decomposition/slu":251,"./solver/lsolve":253,"./solver/lusolve":254,"./solver/usolve":255}],253:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../../type/matrix/function/matrix"));var divideScalar=load(require("../../arithmetic/divideScalar"));var multiplyScalar=load(require("../../arithmetic/multiplyScalar"));var subtract=load(require("../../arithmetic/subtract"));var equalScalar=load(require("../../relational/equalScalar"));var solveValidation=load(require("./utils/solveValidation"));var DenseMatrix=type.DenseMatrix;var lsolve=typed("lsolve",{"SparseMatrix, Array | Matrix":function(m,b){return _sparseForwardSubstitution(m,b)},"DenseMatrix, Array | Matrix":function(m,b){return _denseForwardSubstitution(m,b)},"Array, Array | Matrix":function(a,b){var m=matrix(a);var r=_denseForwardSubstitution(m,b);return r.valueOf()}});var _denseForwardSubstitution=function(m,b){b=solveValidation(m,b,true);var bdata=b._data;var rows=m._size[0];var columns=m._size[1];var x=[];var data=m._data;for(var j=0;j<columns;j++){var bj=bdata[j][0]||0;var xj;if(!equalScalar(bj,0)){var vjj=data[j][j];if(equalScalar(vjj,0)){throw new Error("Linear system cannot be solved since matrix is singular")}xj=divideScalar(bj,vjj);for(var i=j+1;i<rows;i++){bdata[i]=[subtract(bdata[i][0]||0,multiplyScalar(xj,data[i][j]))]}}else{xj=0}x[j]=[xj]}return new DenseMatrix({data:x,size:[rows,1]})};var _sparseForwardSubstitution=function(m,b){b=solveValidation(m,b,true);var bdata=b._data;var rows=m._size[0];var columns=m._size[1];var values=m._values;var index=m._index;var ptr=m._ptr;var i,k;var x=[];for(var j=0;j<columns;j++){var bj=bdata[j][0]||0;if(!equalScalar(bj,0)){var vjj=0;var jvalues=[];var jindex=[];var l=ptr[j+1];for(k=ptr[j];k<l;k++){i=index[k];if(i===j){vjj=values[k]}else if(i>j){jvalues.push(values[k]);jindex.push(i)}}if(equalScalar(vjj,0)){throw new Error("Linear system cannot be solved since matrix is singular")}var xj=divideScalar(bj,vjj);for(k=0,l=jindex.length;k<l;k++){i=jindex[k];bdata[i]=[subtract(bdata[i][0]||0,multiplyScalar(xj,jvalues[k]))]}x[j]=[xj]}else{x[j]=[0]}}return new DenseMatrix({data:x,size:[rows,1]})};return lsolve}exports.name="lsolve";exports.factory=factory},{"../../../type/matrix/function/matrix":458,"../../arithmetic/divideScalar":282,"../../arithmetic/multiplyScalar":297,"../../arithmetic/subtract":305,"../../relational/equalScalar":373,"./utils/solveValidation":256}],254:[function(require,module,exports){"use strict";var isArray=Array.isArray;function factory(type,config,load,typed){var matrix=load(require("../../../type/matrix/function/matrix"));var lup=load(require("../decomposition/lup"));var slu=load(require("../decomposition/slu"));var cs_ipvec=load(require("../sparse/cs_ipvec"));var solveValidation=load(require("./utils/solveValidation"));var usolve=load(require("./usolve"));var lsolve=load(require("./lsolve"));var lusolve=typed("lusolve",{"Array, Array | Matrix":function(a,b){a=matrix(a);var d=lup(a);var x=_lusolve(d.L,d.U,d.p,null,b);return x.valueOf()},"DenseMatrix, Array | Matrix":function(a,b){var d=lup(a);return _lusolve(d.L,d.U,d.p,null,b)},"SparseMatrix, Array | Matrix":function(a,b){var d=lup(a);return _lusolve(d.L,d.U,d.p,null,b)},"SparseMatrix, Array | Matrix, number, number":function(a,b,order,threshold){var d=slu(a,order,threshold);return _lusolve(d.L,d.U,d.p,d.q,b)},"Object, Array | Matrix":function(d,b){return _lusolve(d.L,d.U,d.p,d.q,b)}});var _toMatrix=function(a){if(a&&a.isMatrix===true)return a;if(isArray(a))return matrix(a);throw new TypeError("Invalid Matrix LU decomposition")};var _lusolve=function(l,u,p,q,b){l=_toMatrix(l);u=_toMatrix(u);b=solveValidation(l,b,false);if(p)b._data=cs_ipvec(p,b._data);var y=lsolve(l,b);var x=usolve(u,y);if(q)x._data=cs_ipvec(q,x._data);return x};return lusolve}exports.name="lusolve";exports.factory=factory},{"../../../type/matrix/function/matrix":458,"../decomposition/lup":250,"../decomposition/slu":251,"../sparse/cs_ipvec":263,"./lsolve":253,"./usolve":255,"./utils/solveValidation":256}],255:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../../type/matrix/function/matrix"));var divideScalar=load(require("../../arithmetic/divideScalar"));var multiplyScalar=load(require("../../arithmetic/multiplyScalar"));var subtract=load(require("../../arithmetic/subtract"));var equalScalar=load(require("../../relational/equalScalar"));var solveValidation=load(require("./utils/solveValidation"));var DenseMatrix=type.DenseMatrix;var usolve=typed("usolve",{"SparseMatrix, Array | Matrix":function(m,b){return _sparseBackwardSubstitution(m,b)},"DenseMatrix, Array | Matrix":function(m,b){return _denseBackwardSubstitution(m,b)},"Array, Array | Matrix":function(a,b){var m=matrix(a);var r=_denseBackwardSubstitution(m,b);return r.valueOf()}});var _denseBackwardSubstitution=function(m,b){b=solveValidation(m,b,true);var bdata=b._data;var rows=m._size[0];var columns=m._size[1];var x=[];var data=m._data;for(var j=columns-1;j>=0;j--){var bj=bdata[j][0]||0;var xj;if(!equalScalar(bj,0)){var vjj=data[j][j];if(equalScalar(vjj,0)){throw new Error("Linear system cannot be solved since matrix is singular")}xj=divideScalar(bj,vjj);for(var i=j-1;i>=0;i--){bdata[i]=[subtract(bdata[i][0]||0,multiplyScalar(xj,data[i][j]))]}}else{xj=0}x[j]=[xj]}return new DenseMatrix({data:x,size:[rows,1]})};var _sparseBackwardSubstitution=function(m,b){b=solveValidation(m,b,true);var bdata=b._data;var rows=m._size[0];var columns=m._size[1];var values=m._values;var index=m._index;var ptr=m._ptr;var i,k;var x=[];for(var j=columns-1;j>=0;j--){var bj=bdata[j][0]||0;if(!equalScalar(bj,0)){var vjj=0;var jvalues=[];var jindex=[];var f=ptr[j];var l=ptr[j+1];for(k=l-1;k>=f;k--){i=index[k];if(i===j){vjj=values[k]}else if(i<j){jvalues.push(values[k]);jindex.push(i)}}if(equalScalar(vjj,0)){throw new Error("Linear system cannot be solved since matrix is singular")}var xj=divideScalar(bj,vjj);for(k=0,l=jindex.length;k<l;k++){i=jindex[k];bdata[i]=[subtract(bdata[i][0],multiplyScalar(xj,jvalues[k]))]}x[j]=[xj]}else{x[j]=[0]}}return new DenseMatrix({data:x,size:[rows,1]})};return usolve}exports.name="usolve";exports.factory=factory},{"../../../type/matrix/function/matrix":458,"../../arithmetic/divideScalar":282,"../../arithmetic/multiplyScalar":297,"../../arithmetic/subtract":305,"../../relational/equalScalar":373,"./utils/solveValidation":256}],256:[function(require,module,exports){"use strict";var util=require("../../../../utils/index");var string=util.string;var array=util.array;var isArray=Array.isArray;function factory(type){var DenseMatrix=type.DenseMatrix;var solveValidation=function(m,b,copy){var size=m.size();if(size.length!==2)throw new RangeError("Matrix must be two dimensional (size: "+string.format(size)+")");var rows=size[0];var columns=size[1];if(rows!==columns)throw new RangeError("Matrix must be square (size: "+string.format(size)+")");var data,i,bdata;if(b&&b.isMatrix===true){var msize=b.size();if(msize.length===1){if(msize[0]!==rows)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");data=[];bdata=b._data;for(i=0;i<rows;i++){data[i]=[bdata[i]]}return new DenseMatrix({data:data,size:[rows,1],datatype:b._datatype})}if(msize.length===2){if(msize[0]!==rows||msize[1]!==1)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");if(b.isDenseMatrix===true){if(copy){data=[];bdata=b._data;for(i=0;i<rows;i++){data[i]=[bdata[i][0]]}return new DenseMatrix({data:data,size:[rows,1],datatype:b._datatype})}return b}data=[];for(i=0;i<rows;i++)data[i]=[0];var values=b._values;var index=b._index;var ptr=b._ptr;for(var k1=ptr[1],k=ptr[0];k<k1;k++){i=index[k];data[i][0]=values[k]}return new DenseMatrix({data:data,size:[rows,1],datatype:b._datatype})}throw new RangeError("Dimension mismatch. Matrix columns must match vector length.")}if(isArray(b)){var asize=array.size(b);if(asize.length===1){if(asize[0]!==rows)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");data=[];for(i=0;i<rows;i++){data[i]=[b[i]]}return new DenseMatrix({data:data,size:[rows,1]})}if(asize.length===2){if(asize[0]!==rows||asize[1]!==1)throw new RangeError("Dimension mismatch. Matrix columns must match vector length.");data=[];for(i=0;i<rows;i++){data[i]=[b[i][0]]}return new DenseMatrix({data:data,size:[rows,1]})}throw new RangeError("Dimension mismatch. Matrix columns must match vector length.")}};return solveValidation}exports.factory=factory},{"../../../../utils/index":506}],257:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_flip=load(require("./cs_flip"));var cs_fkeep=load(require("./cs_fkeep"));var cs_tdfs=load(require("./cs_tdfs"));var add=load(require("../../arithmetic/add"));var multiply=load(require("../../arithmetic/multiply"));var transpose=load(require("../../matrix/transpose"));var cs_amd=function(order,a){if(!a||order<=0||order>3)return null;var asize=a._size;var m=asize[0];var n=asize[1];var lemax=0;var dense=Math.max(16,10*Math.sqrt(n));dense=Math.min(n-2,dense);var cm=_createTargetMatrix(order,a,m,n,dense);cs_fkeep(cm,_diag,null);var cindex=cm._index;var cptr=cm._ptr;var cnz=cptr[n];var P=[];var W=[];var len=0;var nv=n+1;var next=2*(n+1);var head=3*(n+1);var elen=4*(n+1);var degree=5*(n+1);var w=6*(n+1);var hhead=7*(n+1);var last=P;var mark=_initializeQuotientGraph(n,cptr,W,len,head,last,next,hhead,nv,w,elen,degree);var nel=_initializeDegreeLists(n,cptr,W,degree,elen,w,dense,nv,head,last,next);var mindeg=0;var i,j,k,k1,k2,e,pj,ln,nvi,pk,eln,p1,p2,pn,h,d;while(nel<n){for(k=-1;mindeg<n&&(k=W[head+mindeg])==-1;mindeg++);if(W[next+k]!=-1)last[W[next+k]]=-1;W[head+mindeg]=W[next+k];var elenk=W[elen+k];var nvk=W[nv+k];nel+=nvk;var dk=0;W[nv+k]=-nvk;var p=cptr[k];var pk1=elenk===0?p:cnz;var pk2=pk1;for(k1=1;k1<=elenk+1;k1++){if(k1>elenk){e=k;pj=p;ln=W[len+k]-elenk}else{e=cindex[p++];pj=cptr[e];ln=W[len+e]}for(k2=1;k2<=ln;k2++){i=cindex[pj++];if((nvi=W[nv+i])<=0)continue;dk+=nvi;W[nv+i]=-nvi;cindex[pk2++]=i;if(W[next+i]!=-1)last[W[next+i]]=last[i];if(last[i]!=-1)W[next+last[i]]=W[next+i];else W[head+W[degree+i]]=W[next+i]}if(e!=k){cptr[e]=cs_flip(k);W[w+e]=0}}if(elenk!==0)cnz=pk2;W[degree+k]=dk;cptr[k]=pk1;W[len+k]=pk2-pk1;W[elen+k]=-2;mark=_wclear(mark,lemax,W,w,n);for(pk=pk1;pk<pk2;pk++){i=cindex[pk];if((eln=W[elen+i])<=0)continue;nvi=-W[nv+i];var wnvi=mark-nvi;for(p=cptr[i],p1=cptr[i]+eln-1;p<=p1;p++){e=cindex[p];if(W[w+e]>=mark){W[w+e]-=nvi}else if(W[w+e]!==0){W[w+e]=W[degree+e]+wnvi}}}for(pk=pk1;pk<pk2;pk++){i=cindex[pk];p1=cptr[i];p2=p1+W[elen+i]-1;pn=p1;for(h=0,d=0,p=p1;p<=p2;p++){e=cindex[p];if(W[w+e]!==0){var dext=W[w+e]-mark;if(dext>0){d+=dext;cindex[pn++]=e;h+=e}else{cptr[e]=cs_flip(k);W[w+e]=0}}}W[elen+i]=pn-p1+1;var p3=pn;var p4=p1+W[len+i];for(p=p2+1;p<p4;p++){j=cindex[p];var nvj=W[nv+j];if(nvj<=0)continue;d+=nvj;cindex[pn++]=j;h+=j}if(d===0){cptr[i]=cs_flip(k);nvi=-W[nv+i];dk-=nvi;nvk+=nvi;nel+=nvi;W[nv+i]=0;W[elen+i]=-1}else{W[degree+i]=Math.min(W[degree+i],d);cindex[pn]=cindex[p3];cindex[p3]=cindex[p1];cindex[p1]=k;W[len+i]=pn-p1+1;h=(h<0?-h:h)%n;W[next+i]=W[hhead+h];W[hhead+h]=i;last[i]=h}}W[degree+k]=dk;lemax=Math.max(lemax,dk);mark=_wclear(mark+lemax,lemax,W,w,n);for(pk=pk1;pk<pk2;pk++){i=cindex[pk];if(W[nv+i]>=0)continue;h=last[i];i=W[hhead+h];W[hhead+h]=-1;for(;i!=-1&&W[next+i]!=-1;i=W[next+i],mark++){ln=W[len+i];eln=W[elen+i];for(p=cptr[i]+1;p<=cptr[i]+ln-1;p++)W[w+cindex[p]]=mark;var jlast=i;for(j=W[next+i];j!=-1;){var ok=W[len+j]===ln&&W[elen+j]===eln;for(p=cptr[j]+1;ok&&p<=cptr[j]+ln-1;p++){if(W[w+cindex[p]]!=mark)ok=0}if(ok){cptr[j]=cs_flip(i);W[nv+i]+=W[nv+j];W[nv+j]=0;W[elen+j]=-1;j=W[next+j];W[next+jlast]=j}else{jlast=j;j=W[next+j]}}}}for(p=pk1,pk=pk1;pk<pk2;pk++){i=cindex[pk];if((nvi=-W[nv+i])<=0)continue;W[nv+i]=nvi;d=W[degree+i]+dk-nvi;d=Math.min(d,n-nel-nvi);if(W[head+d]!=-1)last[W[head+d]]=i;W[next+i]=W[head+d];last[i]=-1;W[head+d]=i;mindeg=Math.min(mindeg,d);W[degree+i]=d;cindex[p++]=i}W[nv+k]=nvk;if((W[len+k]=p-pk1)===0){cptr[k]=-1;W[w+k]=0}if(elenk!==0){cnz=p}}for(i=0;i<n;i++)cptr[i]=cs_flip(cptr[i]);for(j=0;j<=n;j++)W[head+j]=-1;for(j=n;j>=0;j--){if(W[nv+j]>0)continue;W[next+j]=W[head+cptr[j]];W[head+cptr[j]]=j}for(e=n;e>=0;e--){if(W[nv+e]<=0)continue;if(cptr[e]!=-1){W[next+e]=W[head+cptr[e]];W[head+cptr[e]]=e}}for(k=0,i=0;i<=n;i++){if(cptr[i]==-1)k=cs_tdfs(i,k,W,head,next,P,w)}P.splice(P.length-1,1);return P};var _createTargetMatrix=function(order,a,m,n,dense){var at=transpose(a);if(order===1&&n===m){return add(a,at)}if(order==2){var tindex=at._index;var tptr=at._ptr;var p2=0;for(var j=0;j<m;j++){var p=tptr[j];tptr[j]=p2;if(tptr[j+1]-p>dense)continue;for(var p1=tptr[j+1];p<p1;p++)tindex[p2++]=tindex[p]}tptr[m]=p2;a=transpose(at);return multiply(at,a)}return multiply(at,a)};var _initializeQuotientGraph=function(n,cptr,W,len,head,last,next,hhead,nv,w,elen,degree){for(var k=0;k<n;k++)W[len+k]=cptr[k+1]-cptr[k];W[len+n]=0;for(var i=0;i<=n;i++){W[head+i]=-1;last[i]=-1;W[next+i]=-1;W[hhead+i]=-1;W[nv+i]=1;W[w+i]=1;W[elen+i]=0;W[degree+i]=W[len+i]}var mark=_wclear(0,0,W,w,n);W[elen+n]=-2;cptr[n]=-1;W[w+n]=0;return mark};var _initializeDegreeLists=function(n,cptr,W,degree,elen,w,dense,nv,head,last,next){var nel=0;for(var i=0;i<n;i++){var d=W[degree+i];if(d===0){W[elen+i]=-2;nel++;cptr[i]=-1;W[w+i]=0}else if(d>dense){W[nv+i]=0;W[elen+i]=-1;nel++;cptr[i]=cs_flip(n);W[nv+n]++}else{var h=W[head+d];if(h!=-1)last[h]=i;W[next+i]=W[head+d];W[head+d]=i}}return nel};var _wclear=function(mark,lemax,W,w,n){if(mark<2||mark+lemax<0){for(var k=0;k<n;k++){if(W[w+k]!==0)W[w+k]=1}mark=2}return mark};var _diag=function(i,j){return i!=j};return cs_amd}exports.name="cs_amd";exports.path="sparse";exports.factory=factory},{"../../arithmetic/add":276,"../../arithmetic/multiply":296,"../../matrix/transpose":357,"./cs_fkeep":261,"./cs_flip":262,"./cs_tdfs":273}],258:[function(require,module,exports){"use strict";function factory(type,config,load){var transpose=load(require("../../matrix/transpose"));var cs_leaf=load(require("./cs_leaf"));var cs_counts=function(a,parent,post,ata){if(!a||!parent||!post)return null;var asize=a._size;var m=asize[0];var n=asize[1];var i,j,k,J,p,p0,p1;var s=4*n+(ata?n+m+1:0);var w=[];var ancestor=0;var maxfirst=n;var prevleaf=2*n;var first=3*n;var head=4*n;var next=5*n+1;for(k=0;k<s;k++)w[k]=-1;var colcount=[];var at=transpose(a);var tindex=at._index;var tptr=at._ptr;for(k=0;k<n;k++){j=post[k];colcount[j]=w[first+j]==-1?1:0;for(;j!=-1&&w[first+j]==-1;j=parent[j])w[first+j]=k}if(ata){for(k=0;k<n;k++)w[post[k]]=k;for(i=0;i<m;i++){for(k=n,p0=tptr[i],p1=tptr[i+1],p=p0;p<p1;p++)k=Math.min(k,w[tindex[p]]);w[next+i]=w[head+k];w[head+k]=i}}for(i=0;i<n;i++)w[ancestor+i]=i;for(k=0;k<n;k++){j=post[k];if(parent[j]!=-1)colcount[parent[j]]--;for(J=ata?w[head+k]:j;J!=-1;J=ata?w[next+J]:-1){for(p=tptr[J];p<tptr[J+1];p++){i=tindex[p];var r=cs_leaf(i,j,w,first,maxfirst,prevleaf,ancestor);if(r.jleaf>=1)colcount[j]++;if(r.jleaf==2)colcount[r.q]--}}if(parent[j]!=-1)w[ancestor+j]=parent[j]}for(j=0;j<n;j++){if(parent[j]!=-1)colcount[parent[j]]+=colcount[j]}return colcount};return cs_counts}exports.name="cs_counts";exports.path="sparse";exports.factory=factory},{"../../matrix/transpose":357,"./cs_leaf":264}],259:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_marked=load(require("./cs_marked"));var cs_mark=load(require("./cs_mark"));var cs_unflip=load(require("./cs_unflip"));var cs_dfs=function(j,g,top,xi,pinv){var index=g._index;var ptr=g._ptr;var size=g._size;var n=size[1];var i,p,p2;var head=0;xi[0]=j;while(head>=0){j=xi[head];var jnew=pinv?pinv[j]:j;if(!cs_marked(ptr,j)){cs_mark(ptr,j);xi[n+head]=jnew<0?0:cs_unflip(ptr[jnew])}var done=1;for(p=xi[n+head],p2=jnew<0?0:cs_unflip(ptr[jnew+1]);p<p2;p++){i=index[p];if(cs_marked(ptr,i))continue;xi[n+head]=p;xi[++head]=i;done=0;break}if(done){head--;xi[--top]=j}}return top};return cs_dfs}exports.name="cs_dfs";exports.path="sparse";exports.factory=factory},{"./cs_mark":266,"./cs_marked":267,"./cs_unflip":274}],260:[function(require,module,exports){"use strict";function factory(){var cs_etree=function(a,ata){if(!a)return null;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var m=asize[0];var n=asize[1];var parent=[];var w=[];var ancestor=0;var prev=n;var i,inext;if(ata){for(i=0;i<m;i++)w[prev+i]=-1}for(var k=0;k<n;k++){parent[k]=-1;w[ancestor+k]=-1;for(var p0=aptr[k],p1=aptr[k+1],p=p0;p<p1;p++){var r=aindex[p];i=ata?w[prev+r]:r;for(;i!=-1&&i<k;i=inext){inext=w[ancestor+i];w[ancestor+i]=k;if(inext==-1)parent[i]=k}if(ata)w[prev+r]=k}}return parent};return cs_etree}exports.name="cs_etree";exports.path="sparse";exports.factory=factory},{}],261:[function(require,module,exports){"use strict";function factory(){var cs_fkeep=function(a,callback,other){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var n=asize[1];var nz=0;for(var j=0;j<n;j++){var p=aptr[j];aptr[j]=nz;for(;p<aptr[j+1];p++){if(callback(aindex[p],j,avalues?avalues[p]:1,other)){aindex[nz]=aindex[p];if(avalues)avalues[nz]=avalues[p];nz++}}}aptr[n]=nz;aindex.splice(nz,aindex.length-nz);if(avalues)avalues.splice(nz,avalues.length-nz);return nz};return cs_fkeep}exports.name="cs_fkeep";exports.path="sparse";exports.factory=factory},{}],262:[function(require,module,exports){"use strict";function factory(){var cs_flip=function(i){return-i-2};return cs_flip}exports.name="cs_flip";exports.path="sparse";exports.factory=factory},{}],263:[function(require,module,exports){"use strict";function factory(){var cs_ipvec=function(p,b,n){var k;var n=b.length;var x=[];if(p){for(k=0;k<n;k++){x[p[k]]=b[k]}}else{for(k=0;k<n;k++){x[k]=b[k]}}return x};return cs_ipvec}exports.name="cs_ipvec";exports.path="sparse";exports.factory=factory},{}],264:[function(require,module,exports){"use strict";function factory(){var cs_leaf=function(i,j,w,first,maxfirst,prevleaf,ancestor){var s,sparent,jprev;var jleaf=0;var q;if(i<=j||w[first+j]<=w[maxfirst+i])return-1;w[maxfirst+i]=w[first+j];jprev=w[prevleaf+i];w[prevleaf+i]=j;if(jprev===-1){jleaf=1;q=i}else{jleaf=2;for(q=jprev;q!=w[ancestor+q];q=w[ancestor+q]);for(s=jprev;s!=q;s=sparent){sparent=w[ancestor+s];w[ancestor+s]=q}}return{jleaf:jleaf,q:q}};return cs_leaf}exports.name="cs_leaf";exports.path="sparse";exports.factory=factory},{}],265:[function(require,module,exports){"use strict";function factory(type,config,load){var abs=load(require("../../arithmetic/abs"));var divideScalar=load(require("../../arithmetic/divideScalar"));var multiply=load(require("../../arithmetic/multiply"));var larger=load(require("../../relational/larger"));var largerEq=load(require("../../relational/largerEq"));var cs_spsolve=load(require("./cs_spsolve"));var SparseMatrix=type.SparseMatrix;var cs_lu=function(m,s,tol){if(!m)return null;var size=m._size;var n=size[1];var q;var lnz=100;var unz=100;if(s){q=s.q;lnz=s.lnz||lnz;unz=s.unz||unz}var lvalues=[];var lindex=[];var lptr=[];var L=new SparseMatrix({values:lvalues,index:lindex,ptr:lptr,size:[n,n]});var uvalues=[];var uindex=[];var uptr=[];var U=new SparseMatrix({values:uvalues,index:uindex,ptr:uptr,size:[n,n]});var pinv=[];var i,p;var x=[];var xi=[];for(i=0;i<n;i++){x[i]=0;pinv[i]=-1;lptr[i+1]=0}lnz=0;unz=0;for(var k=0;k<n;k++){lptr[k]=lnz;uptr[k]=unz;var col=q?q[k]:k;var top=cs_spsolve(L,m,col,xi,x,pinv,1);var ipiv=-1;var a=-1;for(p=top;p<n;p++){i=xi[p];if(pinv[i]<0){var xabs=abs(x[i]);if(larger(xabs,a)){a=xabs;ipiv=i}}else{uindex[unz]=pinv[i];uvalues[unz++]=x[i]}}if(ipiv==-1||a<=0)return null;if(pinv[col]<0&&largerEq(abs(x[col]),multiply(a,tol)))ipiv=col;var pivot=x[ipiv];uindex[unz]=k;uvalues[unz++]=pivot;pinv[ipiv]=k;lindex[lnz]=ipiv;lvalues[lnz++]=1;for(p=top;p<n;p++){i=xi[p];if(pinv[i]<0){lindex[lnz]=i;lvalues[lnz++]=divideScalar(x[i],pivot)}x[i]=0}}lptr[n]=lnz;uptr[n]=unz;for(p=0;p<lnz;p++)lindex[p]=pinv[lindex[p]];lvalues.splice(lnz,lvalues.length-lnz);lindex.splice(lnz,lindex.length-lnz);uvalues.splice(unz,uvalues.length-unz);uindex.splice(unz,uindex.length-unz);return{L:L,U:U,pinv:pinv}};return cs_lu}exports.name="cs_lu";exports.path="sparse";exports.factory=factory},{"../../arithmetic/abs":275,"../../arithmetic/divideScalar":282,"../../arithmetic/multiply":296,"../../relational/larger":375,"../../relational/largerEq":376,"./cs_spsolve":271}],266:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_flip=load(require("./cs_flip"));var cs_mark=function(w,j){w[j]=cs_flip(w[j])};return cs_mark}exports.name="cs_mark";exports.path="sparse";exports.factory=factory},{"./cs_flip":262}],267:[function(require,module,exports){"use strict";function factory(){var cs_marked=function(w,j){return w[j]<0};return cs_marked}exports.name="cs_marked";exports.path="sparse";exports.factory=factory},{}],268:[function(require,module,exports){"use strict";function factory(type){var SparseMatrix=type.SparseMatrix;var cs_permute=function(a,pinv,q,values){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var adt=a._datatype;var m=asize[0];var n=asize[1];var cvalues=values&&a._values?[]:null;var cindex=[];var cptr=[];var nz=0;for(var k=0;k<n;k++){cptr[k]=nz;var j=q?q[k]:k;for(var t0=aptr[j],t1=aptr[j+1],t=t0;t<t1;t++){var r=pinv?pinv[aindex[t]]:aindex[t];cindex[nz]=r;if(cvalues)cvalues[nz]=avalues[t];nz++}}cptr[n]=nz;return new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[m,n],datatype:adt})};return cs_permute}exports.name="cs_permute";exports.path="sparse";exports.factory=factory},{}],269:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_tdfs=load(require("./cs_tdfs"));var cs_post=function(parent,n){if(!parent)return null;var k=0;var j;var post=[];var w=[];var head=0;var next=n;var stack=2*n;for(j=0;j<n;j++){w[head+j]=-1}for(j=n-1;j>=0;j--){if(parent[j]==-1)continue;w[next+j]=w[head+parent[j]];w[head+parent[j]]=j}for(j=0;j<n;j++){if(parent[j]!=-1)continue;
k=cs_tdfs(j,k,w,head,next,post,stack)}return post};return cs_post}exports.name="cs_post";exports.path="sparse";exports.factory=factory},{"./cs_tdfs":273}],270:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_dfs=load(require("./cs_dfs"));var cs_marked=load(require("./cs_marked"));var cs_mark=load(require("./cs_mark"));var cs_reach=function(g,b,k,xi,pinv){var gptr=g._ptr;var gsize=g._size;var bindex=b._index;var bptr=b._ptr;var n=gsize[1];var p,p0,p1;var top=n;for(p0=bptr[k],p1=bptr[k+1],p=p0;p<p1;p++){var i=bindex[p];if(!cs_marked(gptr,i)){top=cs_dfs(i,g,top,xi,pinv)}}for(p=top;p<n;p++){cs_mark(gptr,xi[p])}return top};return cs_reach}exports.name="cs_reach";exports.path="sparse";exports.factory=factory},{"./cs_dfs":259,"./cs_mark":266,"./cs_marked":267}],271:[function(require,module,exports){"use strict";function factory(type,config,load){var divideScalar=load(require("../../arithmetic/divideScalar"));var multiply=load(require("../../arithmetic/multiply"));var subtract=load(require("../../arithmetic/subtract"));var cs_reach=load(require("./cs_reach"));var cs_spsolve=function(g,b,k,xi,x,pinv,lo){var gvalues=g._values;var gindex=g._index;var gptr=g._ptr;var gsize=g._size;var n=gsize[1];var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var p,p0,p1,q;var top=cs_reach(g,b,k,xi,pinv);for(p=top;p<n;p++)x[xi[p]]=0;for(p0=bptr[k],p1=bptr[k+1],p=p0;p<p1;p++)x[bindex[p]]=bvalues[p];for(var px=top;px<n;px++){var j=xi[px];var J=pinv?pinv[j]:j;if(J<0)continue;p0=gptr[J];p1=gptr[J+1];x[j]=divideScalar(x[j],gvalues[lo?p0:p1-1]);p=lo?p0+1:p0;q=lo?p1:p1-1;for(;p<q;p++){var i=gindex[p];x[i]=subtract(x[i],multiply(gvalues[p],x[j]))}}return top};return cs_spsolve}exports.name="cs_spsolve";exports.path="sparse";exports.factory=factory},{"../../arithmetic/divideScalar":282,"../../arithmetic/multiply":296,"../../arithmetic/subtract":305,"./cs_reach":270}],272:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_amd=load(require("./cs_amd"));var cs_permute=load(require("./cs_permute"));var cs_etree=load(require("./cs_etree"));var cs_post=load(require("./cs_post"));var cs_counts=load(require("./cs_counts"));var cs_sqr=function(order,a,qr){var aptr=a._ptr;var asize=a._size;var n=asize[1];var k;var s={};s.q=cs_amd(order,a);if(order&&!s.q)return null;if(qr){var c=order?cs_permute(a,null,s.q,0):a;s.parent=cs_etree(c,1);var post=cs_post(s.parent,n);s.cp=cs_counts(c,s.parent,post,1);if(c&&s.parent&&s.cp&&_vcount(c,s)){for(s.unz=0,k=0;k<n;k++)s.unz+=s.cp[k]}}else{s.unz=4*aptr[n]+n;s.lnz=s.unz}return s};var _vcount=function(a,s){var aptr=a._ptr;var aindex=a._index;var asize=a._size;var m=asize[0];var n=asize[1];s.pinv=[];s.leftmost=[];var parent=s.parent;var pinv=s.pinv;var leftmost=s.leftmost;var w=[];var next=0;var head=m;var tail=m+n;var nque=m+2*n;var i,k,p,p0,p1;for(k=0;k<n;k++){w[head+k]=-1;w[tail+k]=-1;w[nque+k]=0}for(i=0;i<m;i++)leftmost[i]=-1;for(k=n-1;k>=0;k--){for(p0=aptr[k],p1=aptr[k+1],p=p0;p<p1;p++){leftmost[aindex[p]]=k}}for(i=m-1;i>=0;i--){pinv[i]=-1;k=leftmost[i];if(k==-1)continue;if(w[nque+k]++===0)w[tail+k]=i;w[next+i]=w[head+k];w[head+k]=i}s.lnz=0;s.m2=m;for(k=0;k<n;k++){i=w[head+k];s.lnz++;if(i<0)i=s.m2++;pinv[i]=k;if(--nque[k]<=0)continue;s.lnz+=w[nque+k];var pa=parent[k];if(pa!=-1){if(w[nque+pa]===0)w[tail+pa]=w[tail+k];w[next+w[tail+k]]=w[head+pa];w[head+pa]=w[next+i];w[nque+pa]+=w[nque+k]}}for(i=0;i<m;i++){if(pinv[i]<0)pinv[i]=k++}return true};return cs_sqr}exports.name="cs_sqr";exports.path="sparse";exports.factory=factory},{"./cs_amd":257,"./cs_counts":258,"./cs_etree":260,"./cs_permute":268,"./cs_post":269}],273:[function(require,module,exports){"use strict";function factory(){var cs_tdfs=function(j,k,w,head,next,post,stack){var top=0;w[stack]=j;while(top>=0){var p=w[stack+top];var i=w[head+p];if(i==-1){top--;post[k++]=p}else{w[head+p]=w[next+i];++top;w[stack+top]=i}}return k};return cs_tdfs}exports.name="cs_tdfs";exports.path="sparse";exports.factory=factory},{}],274:[function(require,module,exports){"use strict";function factory(type,config,load){var cs_flip=load(require("./cs_flip"));var cs_unflip=function(i){return i<0?cs_flip(i):i};return cs_unflip}exports.name="cs_unflip";exports.path="sparse";exports.factory=factory},{"./cs_flip":262}],275:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var abs=typed("abs",{number:Math.abs,Complex:function(x){return x.abs()},BigNumber:function(x){return x.abs()},Fraction:function(x){return x.abs()},"Array | Matrix":function(x){return deepMap(x,abs,true)},Unit:function(x){return x.abs()}});abs.toTex={1:"\\left|${args[0]}\\right|"};return abs}exports.name="abs";exports.factory=factory},{"../../utils/collection/deepMap":500}],276:[function(require,module,exports){"use strict";var extend=require("../../utils/object").extend;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var addScalar=load(require("./addScalar"));var latex=require("../../utils/latex.js");var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm04=load(require("../../type/matrix/utils/algorithm04"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var add=typed("add",extend({"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm04(x,y,addScalar);break;default:c=algorithm01(y,x,addScalar,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,addScalar,false);break;default:c=algorithm13(x,y,addScalar);break}break}return c},"Array, Array":function(x,y){return add(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return add(matrix(x),y)},"Matrix, Array":function(x,y){return add(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm10(x,y,addScalar,false);break;default:c=algorithm14(x,y,addScalar,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,addScalar,true);break;default:c=algorithm14(y,x,addScalar,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,addScalar,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,addScalar,true).valueOf()}},addScalar.signatures));add.toTex={2:"\\left(${args[0]}"+latex.operators["add"]+"${args[1]}\\right)"};return add}exports.name="add";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm04":464,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex.js":507,"../../utils/object":509,"./addScalar":277}],277:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var add=typed("add",{"number, number":function(x,y){return x+y},"Complex, Complex":function(x,y){return x.add(y)},"BigNumber, BigNumber":function(x,y){return x.plus(y)},"Fraction, Fraction":function(x,y){return x.add(y)},"Unit, Unit":function(x,y){if(x.value==null)throw new Error("Parameter x contains a unit with undefined value");if(y.value==null)throw new Error("Parameter y contains a unit with undefined value");if(!x.equalBase(y))throw new Error("Units do not match");var res=x.clone();res.value=add(res.value,y.value);res.fixPrefix=false;return res}});return add}exports.factory=factory},{}],278:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var unaryMinus=load(require("./unaryMinus"));var isNegative=load(require("../utils/isNegative"));var matrix=load(require("../../type/matrix/function/matrix"));var cbrt=typed("cbrt",{number:_cbrtNumber,Complex:_cbrtComplex,"Complex, boolean":_cbrtComplex,BigNumber:function(x){return x.cbrt()},Unit:_cbrtUnit,"Array | Matrix":function(x){return deepMap(x,cbrt,true)}});function _cbrtComplex(x,allRoots){var arg_3=x.arg()/3;var abs=x.abs();var principal=new type.Complex(_cbrtNumber(abs),0).mul(new type.Complex(0,arg_3).exp());if(allRoots){var all=[principal,new type.Complex(_cbrtNumber(abs),0).mul(new type.Complex(0,arg_3+Math.PI*2/3).exp()),new type.Complex(_cbrtNumber(abs),0).mul(new type.Complex(0,arg_3-Math.PI*2/3).exp())];return config.matrix==="Array"?all:matrix(all)}else{return principal}}function _cbrtUnit(x){if(x.value&&x.value.isComplex){var result=x.clone();result.value=1;result=result.pow(1/3);result.value=_cbrtComplex(x.value);return result}else{var negate=isNegative(x.value);if(negate){x.value=unaryMinus(x.value)}var third;if(x.value&&x.value.isBigNumber){third=new type.BigNumber(1).div(3)}else if(x.value&&x.value.isFraction){third=new type.Fraction(1,3)}else{third=1/3}var result=x.pow(third);if(negate){result.value=unaryMinus(result.value)}return result}}cbrt.toTex={1:"\\sqrt[3]{${args[0]}}"};return cbrt}var _cbrtNumber=Math.cbrt||function(x){if(x===0){return x}var negate=x<0;var result;if(negate){x=-x}if(isFinite(x)){result=Math.exp(Math.log(x)/3);result=(x/(result*result)+2*result)/3}else{result=x}return negate?-result:result};exports.name="cbrt";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/collection/deepMap":500,"../utils/isNegative":426,"./unaryMinus":306}],279:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var ceil=typed("ceil",{number:Math.ceil,Complex:function(x){return x.ceil()},BigNumber:function(x){return x.ceil()},Fraction:function(x){return x.ceil()},"Array | Matrix":function(x){return deepMap(x,ceil,true)}});ceil.toTex={1:"\\left\\lceil${args[0]}\\right\\rceil"};return ceil}exports.name="ceil";exports.factory=factory},{"../../utils/collection/deepMap":500}],280:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var cube=typed("cube",{number:function(x){return x*x*x},Complex:function(x){return x.mul(x).mul(x)},BigNumber:function(x){return x.times(x).times(x)},Fraction:function(x){return x.pow(3)},"Array | Matrix":function(x){return deepMap(x,cube,true)},Unit:function(x){return x.pow(3)}});cube.toTex={1:"\\left(${args[0]}\\right)^3"};return cube}exports.name="cube";exports.factory=factory},{"../../utils/collection/deepMap":500}],281:[function(require,module,exports){"use strict";var extend=require("../../utils/object").extend;function factory(type,config,load,typed){var divideScalar=load(require("./divideScalar"));var multiply=load(require("./multiply"));var inv=load(require("../matrix/inv"));var matrix=load(require("../../type/matrix/function/matrix"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var divide=typed("divide",extend({"Array | Matrix, Array | Matrix":function(x,y){return multiply(x,inv(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,divideScalar,false);break;case"dense":c=algorithm14(x,y,divideScalar,false);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,divideScalar,false).valueOf()},"any, Array | Matrix":function(x,y){return multiply(x,inv(y))}},divideScalar.signatures));divide.toTex={2:"\\frac{${args[0]}}{${args[1]}}"};return divide}exports.name="divide";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm14":474,"../../utils/object":509,"../matrix/inv":346,"./divideScalar":282,"./multiply":296}],282:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var multiplyScalar=load(require("./multiplyScalar"));var divideScalar=typed("divide",{"number, number":function(x,y){return x/y},"Complex, Complex":function(x,y){return x.div(y)},"BigNumber, BigNumber":function(x,y){return x.div(y)},"Fraction, Fraction":function(x,y){return x.div(y)},"Unit, number | Fraction | BigNumber":function(x,y){var res=x.clone();res.value=divideScalar(res.value===null?res._normalize(1):res.value,y);return res},"number | Fraction | BigNumber, Unit":function(x,y){var res=y.pow(-1);res.value=multiplyScalar(res.value===null?res._normalize(1):res.value,x);return res},"Unit, Unit":function(x,y){return x.divide(y)}});return divideScalar}exports.factory=factory},{"./multiplyScalar":297}],283:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var divideScalar=load(require("./divideScalar"));var latex=require("../../utils/latex");var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var dotDivide=typed("dotDivide",{"any, any":divideScalar,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,divideScalar,false);break;default:c=algorithm02(y,x,divideScalar,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,divideScalar,false);break;default:c=algorithm13(x,y,divideScalar);break}break}return c},"Array, Array":function(x,y){return dotDivide(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return dotDivide(matrix(x),y)},"Matrix, Array":function(x,y){return dotDivide(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,divideScalar,false);break;default:c=algorithm14(x,y,divideScalar,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,divideScalar,true);break;default:c=algorithm14(y,x,divideScalar,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,divideScalar,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,divideScalar,true).valueOf()}});dotDivide.toTex={2:"\\left(${args[0]}"+latex.operators["dotDivide"]+"${args[1]}\\right)"};return dotDivide}exports.name="dotDivide";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"./divideScalar":282}],284:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var multiplyScalar=load(require("./multiplyScalar"));var latex=require("../../utils/latex");var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm09=load(require("../../type/matrix/utils/algorithm09"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var dotMultiply=typed("dotMultiply",{"any, any":multiplyScalar,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm09(x,y,multiplyScalar,false);break;default:c=algorithm02(y,x,multiplyScalar,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm02(x,y,multiplyScalar,false);break;default:c=algorithm13(x,y,multiplyScalar);break}break}return c},"Array, Array":function(x,y){return dotMultiply(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return dotMultiply(matrix(x),y)},"Matrix, Array":function(x,y){return dotMultiply(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,multiplyScalar,false);break;default:c=algorithm14(x,y,multiplyScalar,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm11(y,x,multiplyScalar,true);break;default:c=algorithm14(y,x,multiplyScalar,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,multiplyScalar,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,multiplyScalar,true).valueOf()}});dotMultiply.toTex={2:"\\left(${args[0]}"+latex.operators["dotMultiply"]+"${args[1]}\\right)"};return dotMultiply}exports.name="dotMultiply";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm09":469,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"./multiplyScalar":297}],285:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var pow=load(require("./pow"));var latex=require("../../utils/latex");var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var dotPow=typed("dotPow",{"any, any":pow,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,pow,false);break;default:c=algorithm03(y,x,pow,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,pow,false);break;default:c=algorithm13(x,y,pow);break}break}return c},"Array, Array":function(x,y){return dotPow(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return dotPow(matrix(x),y)},"Matrix, Array":function(x,y){return dotPow(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,dotPow,false);break;default:c=algorithm14(x,y,dotPow,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,dotPow,true);break;default:c=algorithm14(y,x,dotPow,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,dotPow,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,dotPow,true).valueOf()}});dotPow.toTex={2:"\\left(${args[0]}"+latex.operators["dotPow"]+"${args[1]}\\right)"};return dotPow}exports.name="dotPow";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"./pow":300}],286:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var exp=typed("exp",{number:Math.exp,Complex:function(x){return x.exp()},BigNumber:function(x){return x.exp()},"Array | Matrix":function(x){return deepMap(x,exp)}});exp.toTex={1:"\\exp\\left(${args[0]}\\right)"};return exp}exports.name="exp";exports.factory=factory},{"../../utils/collection/deepMap":500}],287:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var fix=typed("fix",{number:function(x){return x>0?Math.floor(x):Math.ceil(x)},Complex:function(x){return new type.Complex(x.re>0?Math.floor(x.re):Math.ceil(x.re),x.im>0?Math.floor(x.im):Math.ceil(x.im))},BigNumber:function(x){return x.isNegative()?x.ceil():x.floor()},Fraction:function(x){return x.s<0?x.ceil():x.floor()},"Array | Matrix":function(x){return deepMap(x,fix,true)}});fix.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"};return fix}exports.name="fix";exports.factory=factory},{"../../utils/collection/deepMap":500}],288:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var floor=typed("floor",{number:Math.floor,Complex:function(x){return x.floor()},BigNumber:function(x){return x.floor()},Fraction:function(x){return x.floor()},"Array | Matrix":function(x){return deepMap(x,floor,true)}});floor.toTex={1:"\\left\\lfloor${args[0]}\\right\\rfloor"};return floor}exports.name="floor";exports.factory=factory},{"../../utils/collection/deepMap":500}],289:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm04=load(require("../../type/matrix/utils/algorithm04"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var gcd=typed("gcd",{"number, number":_gcd,"BigNumber, BigNumber":_gcdBigNumber,"Fraction, Fraction":function(x,y){return x.gcd(y)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm04(x,y,gcd);break;default:c=algorithm01(y,x,gcd,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,gcd,false);break;default:c=algorithm13(x,y,gcd);break}break}return c},"Array, Array":function(x,y){return gcd(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return gcd(matrix(x),y)},"Matrix, Array":function(x,y){return gcd(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm10(x,y,gcd,false);break;default:c=algorithm14(x,y,gcd,false);break}return c},"number | BigNumber, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,gcd,true);break;default:c=algorithm14(y,x,gcd,true);break}return c},"Array, number | BigNumber":function(x,y){return algorithm14(matrix(x),y,gcd,false).valueOf()},"number | BigNumber, Array":function(x,y){return algorithm14(matrix(y),x,gcd,true).valueOf()},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(a,b,args){var res=gcd(a,b);for(var i=0;i<args.length;i++){res=gcd(res,args[i])}return res}});gcd.toTex="\\gcd\\left(${args}\\right)";return gcd;function _gcdBigNumber(a,b){if(!a.isInt()||!b.isInt()){throw new Error("Parameters in function gcd must be integer numbers")}var zero=new type.BigNumber(0);while(!b.isZero()){var r=a.mod(b);a=b;b=r}return a.lt(zero)?a.neg():a}}function _gcd(a,b){if(!isInteger(a)||!isInteger(b)){throw new Error("Parameters in function gcd must be integer numbers")}var r;while(b!=0){r=a%b;a=b;b=r}return a<0?-a:a}exports.name="gcd";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm04":464,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/number":508}],290:[function(require,module,exports){"use strict";var flatten=require("../../utils/array").flatten;function factory(type,config,load,typed){var abs=load(require("./abs"));var add=load(require("./addScalar"));var divide=load(require("./divideScalar"));var multiply=load(require("./multiplyScalar"));var sqrt=load(require("./sqrt"));var smaller=load(require("../relational/smaller"));var isPositive=load(require("../utils/isPositive"));var hypot=typed("hypot",{"... number | BigNumber":_hypot,Array:function(x){return hypot.apply(hypot,flatten(x))},Matrix:function(x){return hypot.apply(hypot,flatten(x.toArray()))}});function _hypot(args){var result=0;var largest=0;for(var i=0;i<args.length;i++){var value=abs(args[i]);if(smaller(largest,value)){result=multiply(result,multiply(divide(largest,value),divide(largest,value)));result=add(result,1);largest=value}else{result=add(result,isPositive(value)?multiply(divide(value,largest),divide(value,largest)):value)}}return multiply(largest,sqrt(result))}hypot.toTex="\\hypot\\left(${args}\\right)";return hypot}exports.name="hypot";exports.factory=factory},{"../../utils/array":486,"../relational/smaller":377,"../utils/isPositive":428,"./abs":275,"./addScalar":277,"./divideScalar":282,"./multiplyScalar":297,"./sqrt":303}],291:[function(require,module,exports){module.exports=[require("./abs"),require("./add"),require("./addScalar"),require("./cbrt"),require("./ceil"),require("./cube"),require("./divide"),require("./dotDivide"),require("./dotMultiply"),require("./dotPow"),require("./exp"),require("./fix"),require("./floor"),require("./gcd"),require("./hypot"),require("./lcm"),require("./log"),require("./log10"),require("./mod"),require("./multiply"),require("./norm"),require("./nthRoot"),require("./pow"),require("./round"),require("./sign"),require("./sqrt"),require("./square"),require("./subtract"),require("./unaryMinus"),require("./unaryPlus"),require("./xgcd")]},{"./abs":275,"./add":276,"./addScalar":277,"./cbrt":278,"./ceil":279,"./cube":280,"./divide":281,"./dotDivide":283,"./dotMultiply":284,"./dotPow":285,"./exp":286,"./fix":287,"./floor":288,"./gcd":289,"./hypot":290,"./lcm":292,"./log":293,"./log10":294,"./mod":295,"./multiply":296,"./norm":298,"./nthRoot":299,"./pow":300,"./round":301,"./sign":302,"./sqrt":303,"./square":304,"./subtract":305,"./unaryMinus":306,"./unaryPlus":307,"./xgcd":308}],292:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm06=load(require("../../type/matrix/utils/algorithm06"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var lcm=typed("lcm",{"number, number":_lcm,"BigNumber, BigNumber":_lcmBigNumber,"Fraction, Fraction":function(x,y){return x.lcm(y)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm06(x,y,lcm);break;default:c=algorithm02(y,x,lcm,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm02(x,y,lcm,false);break;default:c=algorithm13(x,y,lcm);break}break}return c},"Array, Array":function(x,y){return lcm(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return lcm(matrix(x),y)},"Matrix, Array":function(x,y){return lcm(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,lcm,false);break;default:c=algorithm14(x,y,lcm,false);break}return c},"number | BigNumber, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm11(y,x,lcm,true);break;default:c=algorithm14(y,x,lcm,true);break}return c},"Array, number | BigNumber":function(x,y){return algorithm14(matrix(x),y,lcm,false).valueOf()},"number | BigNumber, Array":function(x,y){return algorithm14(matrix(y),x,lcm,true).valueOf()},"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber":function(a,b,args){var res=lcm(a,b);for(var i=0;i<args.length;i++){res=lcm(res,args[i])}return res}});lcm.toTex=undefined;return lcm;function _lcmBigNumber(a,b){if(!a.isInt()||!b.isInt()){throw new Error("Parameters in function lcm must be integer numbers")}if(a.isZero()||b.isZero()){return new type.BigNumber(0)}var prod=a.times(b);while(!b.isZero()){var t=b;b=a.mod(t);a=t}return prod.div(a).abs()}}function _lcm(a,b){if(!isInteger(a)||!isInteger(b)){throw new Error("Parameters in function lcm must be integer numbers")}if(a==0||b==0){return 0}var t;var prod=a*b;while(b!=0){t=b;b=a%t;a=t}return Math.abs(prod/a)}exports.name="lcm";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm06":466,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/number":508}],293:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var divideScalar=load(require("./divideScalar"));var log=typed("log",{number:function(x){if(x>=0||config.predictable){return Math.log(x)}else{return new type.Complex(x,0).log()}},Complex:function(x){return x.log()},BigNumber:function(x){if(!x.isNegative()||config.predictable){return x.ln()}else{return new type.Complex(x.toNumber(),0).log()}},"Array | Matrix":function(x){return deepMap(x,log)},"any, any":function(x,base){return divideScalar(log(x),log(base))}});log.toTex={1:"\\ln\\left(${args[0]}\\right)",2:"\\log_{${args[1]}}\\left(${args[0]}\\right)"};return log}exports.name="log";exports.factory=factory},{"../../utils/collection/deepMap":500,"./divideScalar":282}],294:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var log10=typed("log10",{number:function(x){if(x>=0||config.predictable){return _log10(x)}else{return new type.Complex(x,0).log().div(Math.LN10)}},Complex:function(x){return new type.Complex(x).log().div(Math.LN10)},BigNumber:function(x){if(!x.isNegative()||config.predictable){return x.log()}else{return new type.Complex(x.toNumber(),0).log().div(Math.LN10)}},"Array | Matrix":function(x){return deepMap(x,log10)}});log10.toTex={1:"\\log_{10}\\left(${args[0]}\\right)"};return log10}var _log10=Math.log10||function(x){return Math.log(x)/Math.LN10};exports.name="log10";exports.factory=factory},{"../../utils/collection/deepMap":500}],295:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var latex=require("../../utils/latex");var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm05=load(require("../../type/matrix/utils/algorithm05"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var mod=typed("mod",{"number, number":_mod,"BigNumber, BigNumber":function(x,y){return y.isZero()?x:x.mod(y)},"Fraction, Fraction":function(x,y){return x.mod(y)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm05(x,y,mod,false);break;default:c=algorithm02(y,x,mod,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,mod,false);break;default:c=algorithm13(x,y,mod);break}break}return c},"Array, Array":function(x,y){return mod(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return mod(matrix(x),y)},"Matrix, Array":function(x,y){return mod(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,mod,false);break;default:c=algorithm14(x,y,mod,false);
break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,mod,true);break;default:c=algorithm14(y,x,mod,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,mod,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,mod,true).valueOf()}});mod.toTex={2:"\\left(${args[0]}"+latex.operators["mod"]+"${args[1]}\\right)"};return mod;function _mod(x,y){if(y>0){return x-y*Math.floor(x/y)}else if(y===0){return x}else{throw new Error("Cannot calculate mod for a negative divisor")}}}exports.name="mod";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm05":465,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507}],296:[function(require,module,exports){"use strict";var extend=require("../../utils/object").extend;var array=require("../../utils/array");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var addScalar=load(require("./addScalar"));var multiplyScalar=load(require("./multiplyScalar"));var equalScalar=load(require("../relational/equalScalar"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var DenseMatrix=type.DenseMatrix;var SparseMatrix=type.SparseMatrix;var multiply=typed("multiply",extend({"Array, Array":function(x,y){_validateMatrixDimensions(array.size(x),array.size(y));var m=multiply(matrix(x),matrix(y));return m&&m.isMatrix===true?m.valueOf():m},"Matrix, Matrix":function(x,y){var xsize=x.size();var ysize=y.size();_validateMatrixDimensions(xsize,ysize);if(xsize.length===1){if(ysize.length===1){return _multiplyVectorVector(x,y,xsize[0])}return _multiplyVectorMatrix(x,y)}if(ysize.length===1){return _multiplyMatrixVector(x,y)}return _multiplyMatrixMatrix(x,y)},"Matrix, Array":function(x,y){return multiply(x,matrix(y))},"Array, Matrix":function(x,y){return multiply(matrix(x,y.storage()),y)},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,multiplyScalar,false);break;case"dense":c=algorithm14(x,y,multiplyScalar,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm11(y,x,multiplyScalar,true);break;case"dense":c=algorithm14(y,x,multiplyScalar,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,multiplyScalar,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,multiplyScalar,true).valueOf()}},multiplyScalar.signatures));var _validateMatrixDimensions=function(size1,size2){switch(size1.length){case 1:switch(size2.length){case 1:if(size1[0]!==size2[0]){throw new RangeError("Dimension mismatch in multiplication. Vectors must have the same length")}break;case 2:if(size1[0]!==size2[0]){throw new RangeError("Dimension mismatch in multiplication. Vector length ("+size1[0]+") must match Matrix rows ("+size2[0]+")")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+size2.length+" dimensions)")}break;case 2:switch(size2.length){case 1:if(size1[1]!==size2[0]){throw new RangeError("Dimension mismatch in multiplication. Matrix columns ("+size1[1]+") must match Vector length ("+size2[0]+")")}break;case 2:if(size1[1]!==size2[0]){throw new RangeError("Dimension mismatch in multiplication. Matrix A columns ("+size1[1]+") must match Matrix B rows ("+size2[0]+")")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix B has "+size2.length+" dimensions)")}break;default:throw new Error("Can only multiply a 1 or 2 dimensional matrix (Matrix A has "+size1.length+" dimensions)")}};var _multiplyVectorVector=function(a,b,n){if(n===0)throw new Error("Cannot multiply two empty vectors");var adata=a._data;var adt=a._datatype;var bdata=b._data;var bdt=b._datatype;var dt;var af=addScalar;var mf=multiplyScalar;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt])}var c=mf(adata[0],bdata[0]);for(var i=1;i<n;i++){c=af(c,mf(adata[i],bdata[i]))}return c};var _multiplyVectorMatrix=function(a,b){switch(b.storage()){case"dense":return _multiplyVectorDenseMatrix(a,b)}throw new Error("Not implemented")};var _multiplyVectorDenseMatrix=function(a,b){var adata=a._data;var asize=a._size;var adt=a._datatype;var bdata=b._data;var bsize=b._size;var bdt=b._datatype;var alength=asize[0];var bcolumns=bsize[1];var dt;var af=addScalar;var mf=multiplyScalar;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt])}var c=[];for(var j=0;j<bcolumns;j++){var sum=mf(adata[0],bdata[0][j]);for(var i=1;i<alength;i++){sum=af(sum,mf(adata[i],bdata[i][j]))}c[j]=sum}return new DenseMatrix({data:c,size:[bcolumns],datatype:dt})};var _multiplyMatrixVector=function(a,b){switch(a.storage()){case"dense":return _multiplyDenseMatrixVector(a,b);case"sparse":return _multiplySparseMatrixVector(a,b)}};var _multiplyMatrixMatrix=function(a,b){switch(a.storage()){case"dense":switch(b.storage()){case"dense":return _multiplyDenseMatrixDenseMatrix(a,b);case"sparse":return _multiplyDenseMatrixSparseMatrix(a,b)}break;case"sparse":switch(b.storage()){case"dense":return _multiplySparseMatrixDenseMatrix(a,b);case"sparse":return _multiplySparseMatrixSparseMatrix(a,b)}break}};var _multiplyDenseMatrixVector=function(a,b){var adata=a._data;var asize=a._size;var adt=a._datatype;var bdata=b._data;var bdt=b._datatype;var arows=asize[0];var acolumns=asize[1];var dt;var af=addScalar;var mf=multiplyScalar;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt])}var c=[];for(var i=0;i<arows;i++){var row=adata[i];var sum=mf(row[0],bdata[0]);for(var j=1;j<acolumns;j++){sum=af(sum,mf(row[j],bdata[j]))}c[i]=sum}return new DenseMatrix({data:c,size:[arows],datatype:dt})};var _multiplyDenseMatrixDenseMatrix=function(a,b){var adata=a._data;var asize=a._size;var adt=a._datatype;var bdata=b._data;var bsize=b._size;var bdt=b._datatype;var arows=asize[0];var acolumns=asize[1];var bcolumns=bsize[1];var dt;var af=addScalar;var mf=multiplyScalar;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt])}var c=[];for(var i=0;i<arows;i++){var row=adata[i];c[i]=[];for(var j=0;j<bcolumns;j++){var sum=mf(row[0],bdata[0][j]);for(var x=1;x<acolumns;x++){sum=af(sum,mf(row[x],bdata[x][j]))}c[i][j]=sum}}return new DenseMatrix({data:c,size:[arows,bcolumns],datatype:dt})};var _multiplyDenseMatrixSparseMatrix=function(a,b){var adata=a._data;var asize=a._size;var adt=a._datatype;var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var bsize=b._size;var bdt=b._datatype;if(!bvalues)throw new Error("Cannot multiply Dense Matrix times Pattern only Matrix");var arows=asize[0];var bcolumns=bsize[1];var dt;var af=addScalar;var mf=multiplyScalar;var eq=equalScalar;var zero=0;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt]);eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt)}var cvalues=[];var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[arows,bcolumns],datatype:dt});for(var jb=0;jb<bcolumns;jb++){cptr[jb]=cindex.length;var kb0=bptr[jb];var kb1=bptr[jb+1];if(kb1>kb0){var last=0;for(var i=0;i<arows;i++){var mark=i+1;var cij;for(var kb=kb0;kb<kb1;kb++){var ib=bindex[kb];if(last!==mark){cij=mf(adata[i][ib],bvalues[kb]);last=mark}else{cij=af(cij,mf(adata[i][ib],bvalues[kb]))}}if(last===mark&&!eq(cij,zero)){cindex.push(i);cvalues.push(cij)}}}}cptr[bcolumns]=cindex.length;return c};var _multiplySparseMatrixVector=function(a,b){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var adt=a._datatype;if(!avalues)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var bdata=b._data;var bdt=b._datatype;var arows=a._size[0];var brows=b._size[0];var cvalues=[];var cindex=[];var cptr=[];var dt;var af=addScalar;var mf=multiplyScalar;var eq=equalScalar;var zero=0;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt]);eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt)}var x=[];var w=[];cptr[0]=0;for(var ib=0;ib<brows;ib++){var vbi=bdata[ib];if(!eq(vbi,zero)){for(var ka0=aptr[ib],ka1=aptr[ib+1],ka=ka0;ka<ka1;ka++){var ia=aindex[ka];if(!w[ia]){w[ia]=true;cindex.push(ia);x[ia]=mf(vbi,avalues[ka])}else{x[ia]=af(x[ia],mf(vbi,avalues[ka]))}}}}for(var p1=cindex.length,p=0;p<p1;p++){var ic=cindex[p];cvalues[p]=x[ic]}cptr[1]=cindex.length;return new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[arows,1],datatype:dt})};var _multiplySparseMatrixDenseMatrix=function(a,b){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var adt=a._datatype;if(!avalues)throw new Error("Cannot multiply Pattern only Matrix times Dense Matrix");var bdata=b._data;var bdt=b._datatype;var arows=a._size[0];var brows=b._size[0];var bcolumns=b._size[1];var dt;var af=addScalar;var mf=multiplyScalar;var eq=equalScalar;var zero=0;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt]);eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt)}var cvalues=[];var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[arows,bcolumns],datatype:dt});var x=[];var w=[];for(var jb=0;jb<bcolumns;jb++){cptr[jb]=cindex.length;var mark=jb+1;for(var ib=0;ib<brows;ib++){var vbij=bdata[ib][jb];if(!eq(vbij,zero)){for(var ka0=aptr[ib],ka1=aptr[ib+1],ka=ka0;ka<ka1;ka++){var ia=aindex[ka];if(w[ia]!==mark){w[ia]=mark;cindex.push(ia);x[ia]=mf(vbij,avalues[ka])}else{x[ia]=af(x[ia],mf(vbij,avalues[ka]))}}}}for(var p0=cptr[jb],p1=cindex.length,p=p0;p<p1;p++){var ic=cindex[p];cvalues[p]=x[ic]}}cptr[bcolumns]=cindex.length;return c};var _multiplySparseMatrixSparseMatrix=function(a,b){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var adt=a._datatype;var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var bdt=b._datatype;var arows=a._size[0];var bcolumns=b._size[1];var values=avalues&&bvalues;var dt;var af=addScalar;var mf=multiplyScalar;if(adt&&bdt&&adt===bdt&&typeof adt==="string"){dt=adt;af=typed.find(addScalar,[dt,dt]);mf=typed.find(multiplyScalar,[dt,dt])}var cvalues=values?[]:undefined;var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[arows,bcolumns],datatype:dt});var x=values?[]:undefined;var w=[];var ka,ka0,ka1,kb,kb0,kb1,ia,ib;for(var jb=0;jb<bcolumns;jb++){cptr[jb]=cindex.length;var mark=jb+1;for(kb0=bptr[jb],kb1=bptr[jb+1],kb=kb0;kb<kb1;kb++){ib=bindex[kb];if(values){for(ka0=aptr[ib],ka1=aptr[ib+1],ka=ka0;ka<ka1;ka++){ia=aindex[ka];if(w[ia]!==mark){w[ia]=mark;cindex.push(ia);x[ia]=mf(bvalues[kb],avalues[ka])}else{x[ia]=af(x[ia],mf(bvalues[kb],avalues[ka]))}}}else{for(ka0=aptr[ib],ka1=aptr[ib+1],ka=ka0;ka<ka1;ka++){ia=aindex[ka];if(w[ia]!==mark){w[ia]=mark;cindex.push(ia)}}}}if(values){for(var p0=cptr[jb],p1=cindex.length,p=p0;p<p1;p++){var ic=cindex[p];cvalues[p]=x[ic]}}}cptr[bcolumns]=cindex.length;return c};multiply.toTex={2:"\\left(${args[0]}"+latex.operators["multiply"]+"${args[1]}\\right)"};return multiply}exports.name="multiply";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm14":474,"../../utils/array":486,"../../utils/latex":507,"../../utils/object":509,"../relational/equalScalar":373,"./addScalar":277,"./multiplyScalar":297}],297:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var multiplyScalar=typed("multiplyScalar",{"number, number":function(x,y){return x*y},"Complex, Complex":function(x,y){return x.mul(y)},"BigNumber, BigNumber":function(x,y){return x.times(y)},"Fraction, Fraction":function(x,y){return x.mul(y)},"number | Fraction | BigNumber | Complex, Unit":function(x,y){var res=y.clone();res.value=res.value===null?res._normalize(x):multiplyScalar(res.value,x);return res},"Unit, number | Fraction | BigNumber | Complex":function(x,y){var res=x.clone();res.value=res.value===null?res._normalize(y):multiplyScalar(res.value,y);return res},"Unit, Unit":function(x,y){return x.multiply(y)}});return multiplyScalar}exports.factory=factory},{}],298:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var abs=load(require("../arithmetic/abs"));var add=load(require("../arithmetic/add"));var pow=load(require("../arithmetic/pow"));var sqrt=load(require("../arithmetic/sqrt"));var multiply=load(require("../arithmetic/multiply"));var equalScalar=load(require("../relational/equalScalar"));var larger=load(require("../relational/larger"));var smaller=load(require("../relational/smaller"));var matrix=load(require("../../type/matrix/function/matrix"));var trace=load(require("../matrix/trace"));var transpose=load(require("../matrix/transpose"));var norm=typed("norm",{number:Math.abs,Complex:function(x){return x.abs()},BigNumber:function(x){return x.abs()},"boolean | null":function(x){return Math.abs(x)},Array:function(x){return _norm(matrix(x),2)},Matrix:function(x){return _norm(x,2)},"number | Complex | BigNumber | boolean | null, number | BigNumber | string":function(x){return norm(x)},"Array, number | BigNumber | string":function(x,p){return _norm(matrix(x),p)},"Matrix, number | BigNumber | string":function(x,p){return _norm(x,p)}});function _norm(x,p){var sizeX=x.size();if(sizeX.length==1){if(p===Number.POSITIVE_INFINITY||p==="inf"){var pinf=0;x.forEach(function(value){var v=abs(value);if(larger(v,pinf))pinf=v},true);return pinf}if(p===Number.NEGATIVE_INFINITY||p==="-inf"){var ninf;x.forEach(function(value){var v=abs(value);if(!ninf||smaller(v,ninf))ninf=v},true);return ninf||0}if(p==="fro"){return _norm(x,2)}if(typeof p==="number"&&!isNaN(p)){if(!equalScalar(p,0)){var n=0;x.forEach(function(value){n=add(pow(abs(value),p),n)},true);return pow(n,1/p)}return Number.POSITIVE_INFINITY}throw new Error("Unsupported parameter value")}if(sizeX.length==2){if(p===1){var c=[];var maxc=0;x.forEach(function(value,index){var j=index[1];var cj=add(c[j]||0,abs(value));if(larger(cj,maxc))maxc=cj;c[j]=cj},true);return maxc}if(p===Number.POSITIVE_INFINITY||p==="inf"){var r=[];var maxr=0;x.forEach(function(value,index){var i=index[0];var ri=add(r[i]||0,abs(value));if(larger(ri,maxr))maxr=ri;r[i]=ri},true);return maxr}if(p==="fro"){return sqrt(trace(multiply(transpose(x),x)))}if(p===2){throw new Error("Unsupported parameter value, missing implementation of matrix singular value decomposition")}throw new Error("Unsupported parameter value")}}norm.toTex={1:"\\left\\|${args[0]}\\right\\|",2:undefined};return norm}exports.name="norm";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../arithmetic/abs":275,"../arithmetic/add":276,"../arithmetic/multiply":296,"../arithmetic/pow":300,"../arithmetic/sqrt":303,"../matrix/trace":356,"../matrix/transpose":357,"../relational/equalScalar":373,"../relational/larger":375,"../relational/smaller":377}],299:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm06=load(require("../../type/matrix/utils/algorithm06"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var nthRoot=typed("nthRoot",{number:function(x){return _nthRoot(x,2)},"number, number":_nthRoot,BigNumber:function(x){return _bigNthRoot(x,new type.BigNumber(2))},Complex:function(x){return _nthComplexRoot(x,2)},"Complex, number":_nthComplexRoot,"BigNumber, BigNumber":_bigNthRoot,"Array | Matrix":function(x){return nthRoot(x,2)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":if(y.density()===1){c=algorithm06(x,y,nthRoot)}else{throw new Error("Root must be non-zero")}break;default:c=algorithm02(y,x,nthRoot,true);break}break;default:switch(y.storage()){case"sparse":if(y.density()===1){c=algorithm01(x,y,nthRoot,false)}else{throw new Error("Root must be non-zero")}break;default:c=algorithm13(x,y,nthRoot);break}break}return c},"Array, Array":function(x,y){return nthRoot(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return nthRoot(matrix(x),y)},"Matrix, Array":function(x,y){return nthRoot(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,nthRoot,false);break;default:c=algorithm14(x,y,nthRoot,false);break}return c},"number | BigNumber, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":if(y.density()===1){c=algorithm11(y,x,nthRoot,true)}else{throw new Error("Root must be non-zero")}break;default:c=algorithm14(y,x,nthRoot,true);break}return c},"Array, number | BigNumber":function(x,y){return nthRoot(matrix(x),y).valueOf()},"number | BigNumber, Array":function(x,y){return nthRoot(x,matrix(y)).valueOf()}});nthRoot.toTex={2:"\\sqrt[${args[1]}]{${args[0]}}"};return nthRoot;function _bigNthRoot(a,root){var precision=type.BigNumber.precision;var Big=type.BigNumber.clone({precision:precision+2});var zero=new type.BigNumber(0);var one=new Big(1);var inv=root.isNegative();if(inv){root=root.neg()}if(root.isZero()){throw new Error("Root must be non-zero")}if(a.isNegative()&&!root.abs().mod(2).equals(1)){throw new Error("Root must be odd when a is negative.")}if(a.isZero()){return inv?new Big(Infinity):0}if(!a.isFinite()){return inv?zero:a}var x=a.abs().pow(one.div(root));x=a.isNeg()?x.neg():x;return new type.BigNumber((inv?one.div(x):x).toPrecision(precision))}}function _nthRoot(a,root){var inv=root<0;if(inv){root=-root}if(root===0){throw new Error("Root must be non-zero")}if(a<0&&Math.abs(root)%2!=1){throw new Error("Root must be odd when a is negative.")}if(a==0){return inv?Infinity:0}if(!isFinite(a)){return inv?0:a}var x=Math.pow(Math.abs(a),1/root);x=a<0?-x:x;return inv?1/x:x}function _nthComplexRoot(a,root){if(root<0)throw new Error("Root must be greater than zero");if(root===0)throw new Error("Root must be non-zero");if(root%1!==0)throw new Error("Root must be an integer");var arg=a.arg();var abs=a.abs();var roots=[];var r=Math.pow(abs,1/root);for(var k=0;k<root;k++){roots.push({r:r,phi:(arg+2*Math.PI*k)/root})}return roots}exports.name="nthRoot";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm06":466,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474}],300:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var size=require("../../utils/array").size;function factory(type,config,load,typed){var latex=require("../../utils/latex");var eye=load(require("../matrix/eye"));var multiply=load(require("./multiply"));var matrix=load(require("../../type/matrix/function/matrix"));var fraction=load(require("../../type/fraction/function/fraction"));var number=load(require("../../type/number"));var pow=typed("pow",{"number, number":_pow,"Complex, Complex":function(x,y){return x.pow(y)},"BigNumber, BigNumber":function(x,y){if(y.isInteger()||x>=0||config.predictable){return x.pow(y)}else{return new type.Complex(x.toNumber(),0).pow(y.toNumber(),0)}},"Fraction, Fraction":function(x,y){if(y.d!==1){if(config.predictable){throw new Error("Function pow does not support non-integer exponents for fractions.")}else{return _pow(x.valueOf(),y.valueOf())}}else{return x.pow(y)}},"Array, number":_powArray,"Array, BigNumber":function(x,y){return _powArray(x,y.toNumber())},"Matrix, number":_powMatrix,"Matrix, BigNumber":function(x,y){return _powMatrix(x,y.toNumber())},"Unit, number":function(x,y){return x.pow(y)}});function _pow(x,y){if(config.predictable&&!isInteger(y)&&x<0){try{var yFrac=fraction(y);var yNum=number(yFrac);if(y===yNum||Math.abs((y-yNum)/y)<1e-14){if(yFrac.d%2===1){return(yFrac.n%2===0?1:-1)*Math.pow(-x,y)}}}catch(ex){}}if(isInteger(y)||x>=0||config.predictable){return Math.pow(x,y)}else{return new type.Complex(x,0).pow(y,0)}}function _powArray(x,y){if(!isInteger(y)||y<0){throw new TypeError("For A^b, b must be a positive integer (value is "+y+")")}var s=size(x);if(s.length!=2){throw new Error("For A^b, A must be 2 dimensional (A has "+s.length+" dimensions)")}if(s[0]!=s[1]){throw new Error("For A^b, A must be square (size is "+s[0]+"x"+s[1]+")")}var res=eye(s[0]).valueOf();var px=x;while(y>=1){if((y&1)==1){res=multiply(px,res)}y>>=1;px=multiply(px,px)}return res}function _powMatrix(x,y){return matrix(_powArray(x.valueOf(),y))}pow.toTex={2:"\\left(${args[0]}\\right)"+latex.operators["pow"]+"{${args[1]}}"};return pow}exports.name="pow";exports.factory=factory},{"../../type/fraction/function/fraction":446,"../../type/matrix/function/matrix":458,"../../type/number":475,"../../utils/array":486,"../../utils/latex":507,"../../utils/number":508,"../matrix/eye":341,"./multiply":296}],301:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var toFixed=require("../../utils/number").toFixed;var deepMap=require("../../utils/collection/deepMap");var NO_INT="Number of decimals in function round must be an integer";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var equalScalar=load(require("../relational/equalScalar"));var zeros=load(require("../matrix/zeros"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var round=typed("round",{number:Math.round,"number, number":function(x,n){if(!isInteger(n)){throw new TypeError(NO_INT)}if(n<0||n>15){throw new Error("Number of decimals in function round must be in te range of 0-15")}return _round(x,n)},Complex:function(x){return x.round()},"Complex, number":function(x,n){if(n%1){throw new TypeError(NO_INT)}return x.round(n)},"Complex, BigNumber":function(x,n){if(!n.isInteger()){throw new TypeError(NO_INT)}var _n=n.toNumber();return x.round(_n)},"number, BigNumber":function(x,n){if(!n.isInteger()){throw new TypeError(NO_INT)}return new type.BigNumber(x).toDecimalPlaces(n.toNumber())},BigNumber:function(x){return x.toDecimalPlaces(0)},"BigNumber, BigNumber":function(x,n){if(!n.isInteger()){throw new TypeError(NO_INT)}return x.toDecimalPlaces(n.toNumber())},Fraction:function(x){return x.round()},"Fraction, number":function(x,n){if(n%1){throw new TypeError(NO_INT)}return x.round(n)},"Array | Matrix":function(x){return deepMap(x,round,true)},"Matrix, number | BigNumber":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,round,false);break;default:c=algorithm14(x,y,round,false);break}return c},"number | Complex | BigNumber, Matrix":function(x,y){if(!equalScalar(x,0)){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,round,true);break;default:c=algorithm14(y,x,round,true);break}return c}return zeros(y.size(),y.storage())},"Array, number | BigNumber":function(x,y){return algorithm14(matrix(x),y,round,false).valueOf()},"number | Complex | BigNumber, Array":function(x,y){return algorithm14(matrix(y),x,round,true).valueOf()}});round.toTex={1:"\\left\\lfloor${args[0]}\\right\\rceil",2:undefined};return round}function _round(value,decimals){return parseFloat(toFixed(value,decimals))}exports.name="round";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm14":474,"../../utils/collection/deepMap":500,"../../utils/number":508,"../matrix/zeros":358,"../relational/equalScalar":373}],302:[function(require,module,exports){"use strict";var number=require("../../utils/number");var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var sign=typed("sign",{number:number.sign,Complex:function(x){return x.sign()},BigNumber:function(x){return new type.BigNumber(x.cmp(0))},Fraction:function(x){return new type.Fraction(x.s,1)},"Array | Matrix":function(x){return deepMap(x,sign,true)},Unit:function(x){return sign(x.value)}});sign.toTex={1:"\\mathrm{${name}}\\left(${args[0]}\\right)"};return sign}exports.name="sign";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],303:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var sqrt=typed("sqrt",{number:_sqrtNumber,Complex:function(x){return x.sqrt()},BigNumber:function(x){if(!x.isNegative()||config.predictable){return x.sqrt()}else{return _sqrtNumber(x.toNumber())}},"Array | Matrix":function(x){return deepMap(x,sqrt,true)},Unit:function(x){return x.pow(.5)}});function _sqrtNumber(x){if(x>=0||config.predictable){return Math.sqrt(x)}else{return new type.Complex(x,0).sqrt()}}sqrt.toTex={1:"\\sqrt{${args[0]}}"};return sqrt}exports.name="sqrt";exports.factory=factory},{"../../utils/collection/deepMap":500}],304:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var square=typed("square",{number:function(x){return x*x},Complex:function(x){return x.mul(x)},BigNumber:function(x){return x.times(x)},Fraction:function(x){return x.mul(x)},"Array | Matrix":function(x){return deepMap(x,square,true)},Unit:function(x){return x.pow(2)}});square.toTex={1:"\\left(${args[0]}\\right)^2"};return square}exports.name="square";exports.factory=factory},{"../../utils/collection/deepMap":500}],305:[function(require,module,exports){"use strict";var DimensionError=require("../../error/DimensionError");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var addScalar=load(require("./addScalar"));var unaryMinus=load(require("./unaryMinus"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm05=load(require("../../type/matrix/utils/algorithm05"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var subtract=typed("subtract",{"number, number":function(x,y){return x-y},"Complex, Complex":function(x,y){return x.sub(y)},"BigNumber, BigNumber":function(x,y){return x.minus(y)},"Fraction, Fraction":function(x,y){return x.sub(y)},"Unit, Unit":function(x,y){if(x.value==null){throw new Error("Parameter x contains a unit with undefined value")}if(y.value==null){throw new Error("Parameter y contains a unit with undefined value")}if(!x.equalBase(y)){throw new Error("Units do not match")}var res=x.clone();res.value=subtract(res.value,y.value);res.fixPrefix=false;return res},"Matrix, Matrix":function(x,y){var xsize=x.size();var ysize=y.size();if(xsize.length!==ysize.length)throw new DimensionError(xsize.length,ysize.length);var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm05(x,y,subtract);break;default:c=algorithm03(y,x,subtract,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,subtract,false);break;default:c=algorithm13(x,y,subtract);break}break}return c},"Array, Array":function(x,y){return subtract(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return subtract(matrix(x),y)},"Matrix, Array":function(x,y){return subtract(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm10(x,unaryMinus(y),addScalar);break;default:c=algorithm14(x,y,subtract);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,subtract,true);break;default:c=algorithm14(y,x,subtract,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,subtract,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,subtract,true).valueOf()}});subtract.toTex={2:"\\left(${args[0]}"+latex.operators["subtract"]+"${args[1]}\\right)"};return subtract}exports.name="subtract";exports.factory=factory},{"../../error/DimensionError":30,"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm05":465,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"./addScalar":277,"./unaryMinus":306}],306:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var latex=require("../../utils/latex");var unaryMinus=typed("unaryMinus",{number:function(x){return-x},Complex:function(x){return x.neg()},BigNumber:function(x){return x.neg()},Fraction:function(x){return x.neg()},Unit:function(x){var res=x.clone();res.value=unaryMinus(x.value);return res},"Array | Matrix":function(x){return deepMap(x,unaryMinus,true)}});unaryMinus.toTex={1:latex.operators["unaryMinus"]+"\\left(${args[0]}\\right)"};return unaryMinus}exports.name="unaryMinus";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/latex":507}],307:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var latex=require("../../utils/latex");var unaryPlus=typed("unaryPlus",{number:function(x){return x},Complex:function(x){return x},BigNumber:function(x){return x},Fraction:function(x){return x},Unit:function(x){return x.clone()},"Array | Matrix":function(x){return deepMap(x,unaryPlus,true)},"boolean | string | null":function(x){return config.number=="BigNumber"?new type.BigNumber((+x)):+x}});unaryPlus.toTex={1:latex.operators["unaryPlus"]+"\\left(${args[0]}\\right)"};return unaryPlus}exports.name="unaryPlus";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/latex":507}],308:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var xgcd=typed("xgcd",{"number, number":_xgcd,"BigNumber, BigNumber":_xgcdBigNumber});xgcd.toTex=undefined;return xgcd;function _xgcd(a,b){var t,q,r,x=0,lastx=1,y=1,lasty=0;if(!isInteger(a)||!isInteger(b)){throw new Error("Parameters in function xgcd must be integer numbers")}while(b){q=Math.floor(a/b);r=a%b;t=x;x=lastx-q*x;lastx=t;t=y;y=lasty-q*y;lasty=t;a=b;b=r}var res;if(a<0){res=[-a,-lastx,-lasty]}else{res=[a,a?lastx:0,lasty]}return config.matrix==="Array"?res:matrix(res)}function _xgcdBigNumber(a,b){var t,q,r,zero=new type.BigNumber(0),one=new type.BigNumber(1),x=zero,lastx=one,y=one,lasty=zero;if(!a.isInt()||!b.isInt()){throw new Error("Parameters in function xgcd must be integer numbers")}while(!b.isZero()){q=a.div(b).floor();r=a.mod(b);t=x;x=lastx.minus(q.times(x));lastx=t;t=y;y=lasty.minus(q.times(y));lasty=t;a=b;b=r}var res;if(a.lt(zero)){res=[a.neg(),lastx.neg(),lasty.neg()]}else{
res=[a,!a.isZero()?lastx:0,lasty]}return config.matrix==="Array"?res:matrix(res)}}exports.name="xgcd";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/number":508}],309:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var bigBitAnd=require("../../utils/bignumber/bitAnd");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm06=load(require("../../type/matrix/utils/algorithm06"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var bitAnd=typed("bitAnd",{"number, number":function(x,y){if(!isInteger(x)||!isInteger(y)){throw new Error("Integers expected in function bitAnd")}return x&y},"BigNumber, BigNumber":bigBitAnd,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm06(x,y,bitAnd,false);break;default:c=algorithm02(y,x,bitAnd,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm02(x,y,bitAnd,false);break;default:c=algorithm13(x,y,bitAnd);break}break}return c},"Array, Array":function(x,y){return bitAnd(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return bitAnd(matrix(x),y)},"Matrix, Array":function(x,y){return bitAnd(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,bitAnd,false);break;default:c=algorithm14(x,y,bitAnd,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm11(y,x,bitAnd,true);break;default:c=algorithm14(y,x,bitAnd,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,bitAnd,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,bitAnd,true).valueOf()}});bitAnd.toTex={2:"\\left(${args[0]}"+latex.operators["bitAnd"]+"${args[1]}\\right)"};return bitAnd}exports.name="bitAnd";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm06":466,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/bitAnd":487,"../../utils/latex":507,"../../utils/number":508}],310:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var bigBitNot=require("../../utils/bignumber/bitNot");var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var latex=require("../../utils/latex");var bitNot=typed("bitNot",{number:function(x){if(!isInteger(x)){throw new Error("Integer expected in function bitNot")}return~x},BigNumber:bigBitNot,"Array | Matrix":function(x){return deepMap(x,bitNot)}});bitNot.toTex={1:latex.operators["bitNot"]+"\\left(${args[0]}\\right)"};return bitNot}exports.name="bitNot";exports.factory=factory},{"../../utils/bignumber/bitNot":488,"../../utils/collection/deepMap":500,"../../utils/latex":507,"../../utils/number":508}],311:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var bigBitOr=require("../../utils/bignumber/bitOr");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm04=load(require("../../type/matrix/utils/algorithm04"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var bitOr=typed("bitOr",{"number, number":function(x,y){if(!isInteger(x)||!isInteger(y)){throw new Error("Integers expected in function bitOr")}return x|y},"BigNumber, BigNumber":bigBitOr,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm04(x,y,bitOr);break;default:c=algorithm01(y,x,bitOr,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,bitOr,false);break;default:c=algorithm13(x,y,bitOr);break}break}return c},"Array, Array":function(x,y){return bitOr(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return bitOr(matrix(x),y)},"Matrix, Array":function(x,y){return bitOr(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm10(x,y,bitOr,false);break;default:c=algorithm14(x,y,bitOr,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,bitOr,true);break;default:c=algorithm14(y,x,bitOr,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,bitOr,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,bitOr,true).valueOf()}});bitOr.toTex={2:"\\left(${args[0]}"+latex.operators["bitOr"]+"${args[1]}\\right)"};return bitOr}exports.name="bitOr";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm04":464,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/bitOr":489,"../../utils/latex":507,"../../utils/number":508}],312:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var bigBitXor=require("../../utils/bignumber/bitXor");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var bitXor=typed("bitXor",{"number, number":function(x,y){if(!isInteger(x)||!isInteger(y)){throw new Error("Integers expected in function bitXor")}return x^y},"BigNumber, BigNumber":bigBitXor,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,bitXor);break;default:c=algorithm03(y,x,bitXor,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,bitXor,false);break;default:c=algorithm13(x,y,bitXor);break}break}return c},"Array, Array":function(x,y){return bitXor(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return bitXor(matrix(x),y)},"Matrix, Array":function(x,y){return bitXor(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,bitXor,false);break;default:c=algorithm14(x,y,bitXor,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,bitXor,true);break;default:c=algorithm14(y,x,bitXor,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,bitXor,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,bitXor,true).valueOf()}});bitXor.toTex={2:"\\left(${args[0]}"+latex.operators["bitXor"]+"${args[1]}\\right)"};return bitXor}exports.name="bitXor";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/bitXor":490,"../../utils/latex":507,"../../utils/number":508}],313:[function(require,module,exports){module.exports=[require("./bitAnd"),require("./bitNot"),require("./bitOr"),require("./bitXor"),require("./leftShift"),require("./rightArithShift"),require("./rightLogShift")]},{"./bitAnd":309,"./bitNot":310,"./bitOr":311,"./bitXor":312,"./leftShift":314,"./rightArithShift":315,"./rightLogShift":316}],314:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var bigLeftShift=require("../../utils/bignumber/leftShift");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var equalScalar=load(require("../relational/equalScalar"));var zeros=load(require("../matrix/zeros"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm08=load(require("../../type/matrix/utils/algorithm08"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var leftShift=typed("leftShift",{"number, number":function(x,y){if(!isInteger(x)||!isInteger(y)){throw new Error("Integers expected in function leftShift")}return x<<y},"BigNumber, BigNumber":bigLeftShift,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm08(x,y,leftShift,false);break;default:c=algorithm02(y,x,leftShift,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,leftShift,false);break;default:c=algorithm13(x,y,leftShift);break}break}return c},"Array, Array":function(x,y){return leftShift(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return leftShift(matrix(x),y)},"Matrix, Array":function(x,y){return leftShift(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){if(!equalScalar(y,0)){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,leftShift,false);break;default:c=algorithm14(x,y,leftShift,false);break}return c}return x.clone()},"number | BigNumber, Matrix":function(x,y){if(!equalScalar(x,0)){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,leftShift,true);break;default:c=algorithm14(y,x,leftShift,true);break}return c}return zeros(y.size(),y.storage())},"Array, number | BigNumber":function(x,y){return leftShift(matrix(x),y).valueOf()},"number | BigNumber, Array":function(x,y){return leftShift(x,matrix(y)).valueOf()}});leftShift.toTex={2:"\\left(${args[0]}"+latex.operators["leftShift"]+"${args[1]}\\right)"};return leftShift}exports.name="leftShift";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm08":468,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/leftShift":494,"../../utils/latex":507,"../../utils/number":508,"../matrix/zeros":358,"../relational/equalScalar":373}],315:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var bigRightArithShift=require("../../utils/bignumber/rightArithShift");function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var equalScalar=load(require("../relational/equalScalar"));var zeros=load(require("../matrix/zeros"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm08=load(require("../../type/matrix/utils/algorithm08"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var rightArithShift=typed("rightArithShift",{"number, number":function(x,y){if(!isInteger(x)||!isInteger(y)){throw new Error("Integers expected in function rightArithShift")}return x>>y},"BigNumber, BigNumber":bigRightArithShift,"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm08(x,y,rightArithShift,false);break;default:c=algorithm02(y,x,rightArithShift,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,rightArithShift,false);break;default:c=algorithm13(x,y,rightArithShift);break}break}return c},"Array, Array":function(x,y){return rightArithShift(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return rightArithShift(matrix(x),y)},"Matrix, Array":function(x,y){return rightArithShift(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){if(!equalScalar(y,0)){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,rightArithShift,false);break;default:c=algorithm14(x,y,rightArithShift,false);break}return c}return x.clone()},"number | BigNumber, Matrix":function(x,y){if(!equalScalar(x,0)){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,rightArithShift,true);break;default:c=algorithm14(y,x,rightArithShift,true);break}return c}return zeros(y.size(),y.storage())},"Array, number | BigNumber":function(x,y){return rightArithShift(matrix(x),y).valueOf()},"number | BigNumber, Array":function(x,y){return rightArithShift(x,matrix(y)).valueOf()}});rightArithShift.toTex={2:"\\left(${args[0]}"+latex.operators["rightArithShift"]+"${args[1]}\\right)"};return rightArithShift}exports.name="rightArithShift";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm08":468,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/rightArithShift":496,"../../utils/latex":507,"../../utils/number":508,"../matrix/zeros":358,"../relational/equalScalar":373}],316:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var equalScalar=load(require("../relational/equalScalar"));var zeros=load(require("../matrix/zeros"));var algorithm01=load(require("../../type/matrix/utils/algorithm01"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm08=load(require("../../type/matrix/utils/algorithm08"));var algorithm10=load(require("../../type/matrix/utils/algorithm10"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var rightLogShift=typed("rightLogShift",{"number, number":function(x,y){if(!isInteger(x)||!isInteger(y)){throw new Error("Integers expected in function rightLogShift")}return x>>>y},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm08(x,y,rightLogShift,false);break;default:c=algorithm02(y,x,rightLogShift,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm01(x,y,rightLogShift,false);break;default:c=algorithm13(x,y,rightLogShift);break}break}return c},"Array, Array":function(x,y){return rightLogShift(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return rightLogShift(matrix(x),y)},"Matrix, Array":function(x,y){return rightLogShift(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){if(!equalScalar(y,0)){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,rightLogShift,false);break;default:c=algorithm14(x,y,rightLogShift,false);break}return c}return x.clone()},"number | BigNumber, Matrix":function(x,y){if(!equalScalar(x,0)){var c;switch(y.storage()){case"sparse":c=algorithm10(y,x,rightLogShift,true);break;default:c=algorithm14(y,x,rightLogShift,true);break}return c}return zeros(y.size(),y.storage())},"Array, number | BigNumber":function(x,y){return rightLogShift(matrix(x),y).valueOf()},"number | BigNumber, Array":function(x,y){return rightLogShift(x,matrix(y)).valueOf()}});rightLogShift.toTex={2:"\\left(${args[0]}"+latex.operators["rightLogShift"]+"${args[1]}\\right)"};return rightLogShift}exports.name="rightLogShift";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm01":461,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm08":468,"../../type/matrix/utils/algorithm10":470,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"../../utils/number":508,"../matrix/zeros":358,"../relational/equalScalar":373}],317:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var stirlingS2=load(require("./stirlingS2"));var isNegative=load(require("../utils/isNegative"));var isInteger=load(require("../utils/isInteger"));var bellNumbers=typed("bellNumbers",{"number | BigNumber":function(n){if(!isInteger(n)||isNegative(n)){throw new TypeError("Non-negative integer value expected in function bellNumbers")}var result=0;for(var i=0;i<=n;i++){result=add(result,stirlingS2(n,i))}return result}});bellNumbers.toTex={1:"\\mathrm{B}_{${args[0]}}"};return bellNumbers}exports.name="bellNumbers";exports.factory=factory},{"../arithmetic/add":276,"../utils/isInteger":424,"../utils/isNegative":426,"./stirlingS2":321}],318:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var divide=load(require("../arithmetic/divide"));var multiply=load(require("../arithmetic/multiply"));var combinations=load(require("../probability/combinations"));var isNegative=load(require("../utils/isNegative"));var isInteger=load(require("../utils/isInteger"));var catalan=typed("catalan",{"number | BigNumber":function(n){if(!isInteger(n)||isNegative(n)){throw new TypeError("Non-negative integer value expected in function catalan")}return divide(combinations(multiply(n,2),n),add(n,1))}});catalan.toTex={1:"\\mathrm{C}_{${args[0]}}"};return catalan}exports.name="catalan";exports.factory=factory},{"../arithmetic/add":276,"../arithmetic/divide":281,"../arithmetic/multiply":296,"../probability/combinations":359,"../utils/isInteger":424,"../utils/isNegative":426}],319:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var combinations=load(require("../probability/combinations"));var add=load(require("../arithmetic/addScalar"));var isPositive=load(require("../utils/isPositive"));var isInteger=load(require("../utils/isInteger"));var larger=load(require("../relational/larger"));var composition=typed("composition",{"number | BigNumber, number | BigNumber":function(n,k){if(!isInteger(n)||!isPositive(n)||!isInteger(k)||!isPositive(k)){throw new TypeError("Positive integer value expected in function composition")}else if(larger(k,n)){throw new TypeError("k must be less than or equal to n in function composition")}return combinations(add(n,-1),add(k,-1))}});composition.toTex=undefined;return composition}exports.name="composition";exports.factory=factory},{"../arithmetic/addScalar":277,"../probability/combinations":359,"../relational/larger":375,"../utils/isInteger":424,"../utils/isPositive":428}],320:[function(require,module,exports){module.exports=[require("./bellNumbers"),require("./composition"),require("./stirlingS2"),require("./catalan")]},{"./bellNumbers":317,"./catalan":318,"./composition":319,"./stirlingS2":321}],321:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var subtract=load(require("../arithmetic/subtract"));var multiply=load(require("../arithmetic/multiply"));var divide=load(require("../arithmetic/divide"));var pow=load(require("../arithmetic/pow"));var factorial=load(require("../probability/factorial"));var combinations=load(require("../probability/combinations"));var isNegative=load(require("../utils/isNegative"));var isInteger=load(require("../utils/isInteger"));var larger=load(require("../relational/larger"));var stirlingS2=typed("stirlingS2",{"number | BigNumber, number | BigNumber":function(n,k){if(!isInteger(n)||isNegative(n)||!isInteger(k)||isNegative(k)){throw new TypeError("Non-negative integer value expected in function stirlingS2")}else if(larger(k,n)){throw new TypeError("k must be less than or equal to n in function stirlingS2")}var kFactorial=factorial(k);var result=0;for(var i=0;i<=k;i++){var negativeOne=pow(-1,subtract(k,i));var kChooseI=combinations(k,i);var iPower=pow(i,n);result=add(result,multiply(multiply(kChooseI,iPower),negativeOne))}return divide(result,kFactorial)}});stirlingS2.toTex={2:"\\mathrm{S}\\left(${args}\\right)"};return stirlingS2}exports.name="stirlingS2";exports.factory=factory},{"../arithmetic/add":276,"../arithmetic/divide":281,"../arithmetic/multiply":296,"../arithmetic/pow":300,"../arithmetic/subtract":305,"../probability/combinations":359,"../probability/factorial":361,"../relational/larger":375,"../utils/isInteger":424,"../utils/isNegative":426}],322:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var arg=typed("arg",{number:function(x){return Math.atan2(0,x)},Complex:function(x){return x.arg()},"Array | Matrix":function(x){return deepMap(x,arg)}});arg.toTex={1:"\\arg\\left(${args[0]}\\right)"};return arg}exports.name="arg";exports.factory=factory},{"../../utils/collection/deepMap":500}],323:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var conj=typed("conj",{number:function(x){return x},BigNumber:function(x){return x},Complex:function(x){return x.conjugate()},"Array | Matrix":function(x){return deepMap(x,conj)}});conj.toTex={1:"\\left(${args[0]}\\right)^*"};return conj}exports.name="conj";exports.factory=factory},{"../../utils/collection/deepMap":500}],324:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var im=typed("im",{number:function(x){return 0},BigNumber:function(x){return new type.BigNumber(0)},Complex:function(x){return x.im},"Array | Matrix":function(x){return deepMap(x,im)}});im.toTex={1:"\\Im\\left\\lbrace${args[0]}\\right\\rbrace"};return im}exports.name="im";exports.factory=factory},{"../../utils/collection/deepMap":500}],325:[function(require,module,exports){module.exports=[require("./arg"),require("./conj"),require("./im"),require("./re")]},{"./arg":322,"./conj":323,"./im":324,"./re":326}],326:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var re=typed("re",{number:function(x){return x},BigNumber:function(x){return x},Complex:function(x){return x.re},"Array | Matrix":function(x){return deepMap(x,re)}});re.toTex={1:"\\Re\\left\\lbrace${args[0]}\\right\\rbrace"};return re}exports.name="re";exports.factory=factory},{"../../utils/collection/deepMap":500}],327:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var distance=typed("distance",{"Array, Array, Array":function(x,y,z){if(x.length==2&&y.length==2&&z.length==2){if(!_2d(x)){throw new TypeError("Array with 2 numbers expected for first argument")}if(!_2d(y)){throw new TypeError("Array with 2 numbers expected for second argument")}if(!_2d(z)){throw new TypeError("Array with 2 numbers expected for third argument")}var m=(z[1]-z[0])/(y[1]-y[0]);var xCoeff=m*m*y[0];var yCoeff=-1*(m*y[0]);var constant=x[1];return _distancePointLine2D(x[0],x[1],xCoeff,yCoeff,constant)}else{throw new TypeError("Invalid Arguments: Try again")}},"Object, Object, Object":function(x,y,z){if(Object.keys(x).length==2&&Object.keys(y).length==2&&Object.keys(z).length==2){if(!_2d(x)){throw new TypeError("Values of pointX and pointY should be numbers")}if(!_2d(y)){throw new TypeError("Values of lineOnePtX and lineOnePtY should be numbers")}if(!_2d(z)){throw new TypeError("Values of lineTwoPtX and lineTwoPtY should be numbers")}if(x.hasOwnProperty("pointX")&&x.hasOwnProperty("pointY")&&y.hasOwnProperty("lineOnePtX")&&y.hasOwnProperty("lineOnePtY")&&z.hasOwnProperty("lineTwoPtX")&&z.hasOwnProperty("lineTwoPtY")){var m=(z.lineTwoPtY-z.lineTwoPtX)/(y.lineOnePtY-y.lineOnePtX);var xCoeff=m*m*y.lineOnePtX;var yCoeff=-1*(m*y.lineOnePtX);var constant=x.pointX;return _distancePointLine2D(x.pointX,x.pointY,xCoeff,yCoeff,constant)}else{throw new TypeError("Key names do not match")}}else{throw new TypeError("Invalid Arguments: Try again")}},"Array, Array":function(x,y){if(x.length==2&&y.length==3){if(!_2d(x)){throw new TypeError("Array with 2 numbers expected for first argument")}if(!_3d(y)){throw new TypeError("Array with 3 numbers expected for second argument")}return _distancePointLine2D(x[0],x[1],y[0],y[1],y[2])}else if(x.length==3&&y.length==6){if(!_3d(x)){throw new TypeError("Array with 3 numbers expected for first argument")}if(!_parametricLine(y)){throw new TypeError("Array with 6 numbers expected for second argument")}return _distancePointLine3D(x[0],x[1],x[2],y[0],y[1],y[2],y[3],y[4],y[5])}else if(x.length==2&&y.length==2){if(!_2d(x)){throw new TypeError("Array with 2 numbers expected for first argument")}if(!_2d(y)){throw new TypeError("Array with 2 numbers expected for second argument")}return _distance2d(x[0],x[1],y[0],y[1])}else if(x.length==3&&y.length==3){if(!_3d(x)){throw new TypeError("Array with 3 numbers expected for first argument")}if(!_3d(y)){throw new TypeError("Array with 3 numbers expected for second argument")}return _distance3d(x[0],x[1],x[2],y[0],y[1],y[2])}else{throw new TypeError("Invalid Arguments: Try again")}},"Object, Object":function(x,y){if(Object.keys(x).length==2&&Object.keys(y).length==3){if(!_2d(x)){throw new TypeError("Values of pointX and pointY should be numbers")}if(!_3d(y)){throw new TypeError("Values of xCoeffLine, yCoeffLine and constant should be numbers")}if(x.hasOwnProperty("pointX")&&x.hasOwnProperty("pointY")&&y.hasOwnProperty("xCoeffLine")&&y.hasOwnProperty("yCoeffLine")&&y.hasOwnProperty("yCoeffLine")){return _distancePointLine2D(x.pointX,x.pointY,y.xCoeffLine,y.yCoeffLine,y.constant)}else{throw new TypeError("Key names do not match")}}else if(Object.keys(x).length==3&&Object.keys(y).length==6){if(!_3d(x)){throw new TypeError("Values of pointX, pointY and pointZ should be numbers")}if(!_parametricLine(y)){throw new TypeError("Values of x0, y0, z0, a, b and c should be numbers")}if(x.hasOwnProperty("pointX")&&x.hasOwnProperty("pointY")&&y.hasOwnProperty("x0")&&y.hasOwnProperty("y0")&&y.hasOwnProperty("z0")&&y.hasOwnProperty("a")&&y.hasOwnProperty("b")&&y.hasOwnProperty("c")){return _distancePointLine3D(x.pointX,x.pointY,x.pointZ,y.x0,y.y0,y.z0,y.a,y.b,y.c)}else{throw new TypeError("Key names do not match")}}else if(Object.keys(x).length==2&&Object.keys(y).length==2){if(!_2d(x)){throw new TypeError("Values of pointOneX and pointOneY should be numbers")}if(!_2d(y)){throw new TypeError("Values of pointTwoX and pointTwoY should be numbers")}if(x.hasOwnProperty("pointOneX")&&x.hasOwnProperty("pointOneY")&&y.hasOwnProperty("pointTwoX")&&y.hasOwnProperty("pointTwoY")){return _distance2d(x.pointOneX,x.pointOneY,y.pointTwoX,y.pointTwoY)}else{throw new TypeError("Key names do not match")}}else if(Object.keys(x).length==3&&Object.keys(y).length==3){if(!_3d(x)){throw new TypeError("Values of pointOneX, pointOneY and pointOneZ should be numbers")}if(!_3d(y)){throw new TypeError("Values of pointTwoX, pointTwoY and pointTwoZ should be numbers")}if(x.hasOwnProperty("pointOneX")&&x.hasOwnProperty("pointOneY")&&x.hasOwnProperty("pointOneZ")&&y.hasOwnProperty("pointTwoX")&&y.hasOwnProperty("pointTwoY")&&y.hasOwnProperty("pointTwoZ")){return _distance3d(x.pointOneX,x.pointOneY,x.pointOneZ,y.pointTwoX,y.pointTwoY,y.pointTwoZ)}else{throw new TypeError("Key names do not match")}}else{throw new TypeError("Invalid Arguments: Try again")}},Array:function(arr){if(!_pairwise(arr)){throw new TypeError("Incorrect array format entered for pairwise distance calculation")}return _distancePairwise(arr)}});return distance}function _2d(a){if(a.constructor!==Array){a=_objectToArray(a)}return typeof a[0]==="number"&&typeof a[1]==="number"}function _3d(a){if(a.constructor!==Array){a=_objectToArray(a)}return typeof a[0]==="number"&&typeof a[1]==="number"&&typeof a[2]==="number"}function _parametricLine(a){if(a.constructor!==Array){a=_objectToArray(a)}return typeof a[0]==="number"&&typeof a[1]==="number"&&typeof a[2]==="number"&&typeof a[3]==="number"&&typeof a[4]==="number"&&typeof a[5]==="number"}function _objectToArray(o){var keys=Object.keys(o);var a=[];for(var i=0;i<keys.length;i++){a.push(o[keys[i]])}return a}function _pairwise(a){if(a[0].length==2&&typeof a[0][0]==="number"&&typeof a[0][1]==="number"){for(var i in a){if(a[i].length!=2||typeof a[i][0]!=="number"||typeof a[i][1]!=="number"){return false}}}else if(a[0].length==3&&typeof a[0][0]==="number"&&typeof a[0][1]==="number"&&typeof a[0][2]==="number"){for(var i in a){if(a[i].length!=3||typeof a[i][0]!=="number"||typeof a[i][1]!=="number"||typeof a[i][2]!=="number"){return false}}}else{return false}return true}function _distancePointLine2D(x,y,a,b,c){var num=Math.abs(a*x+b*y+c);var den=Math.pow(a*a+b*b,.5);var result=num/den;return result}function _distancePointLine3D(x,y,z,x0,y0,z0,a,b,c){var num=[(y0-y)*c-(z0-z)*b,(z0-z)*a-(x0-x)*c,(x0-x)*b-(y0-y)*a];num=Math.pow(num[0]*num[0]+num[1]*num[1]+num[2]*num[2],.5);var den=Math.pow(a*a+b*b+c*c,.5);var result=num/den;return result}function _distance2d(x1,y1,x2,y2){var yDiff=y2-y1;var xDiff=x2-x1;var radicant=yDiff*yDiff+xDiff*xDiff;var result=Math.pow(radicant,.5);return result}function _distance3d(x1,y1,z1,x2,y2,z2){var zDiff=z2-z1;var yDiff=y2-y1;var xDiff=x2-x1;var radicant=zDiff*zDiff+yDiff*yDiff+xDiff*xDiff;var result=Math.pow(radicant,.5);return result}function _distancePairwise(a){var result=[];for(var i=0;i<a.length-1;i++){for(var j=i+1;j<a.length;j++){if(a[0].length==2){result.push(_distance2d(a[i][0],a[i][1],a[j][0],a[j][1]))}else if(a[0].length==3){result.push(_distance3d(a[i][0],a[i][1],a[i][2],a[j][0],a[j][1],a[j][2]))}}}return result}exports.name="distance";exports.factory=factory},{"../../type/matrix/function/matrix":458}],328:[function(require,module,exports){module.exports=[require("./intersect"),require("./distance")]},{"./distance":327,"./intersect":329}],329:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var abs=load(require("../arithmetic/abs"));var add=load(require("../arithmetic/add"));var matrix=load(require("../../type/matrix/function/matrix"));var multiply=load(require("../arithmetic/multiply"));var subtract=load(require("../arithmetic/subtract"));var intersect=typed("intersect",{"Array, Array, Array":function(x,y,plane){if(!_3d(x)){throw new TypeError("Array with 3 numbers expected for first argument")}if(!_3d(y)){throw new TypeError("Array with 3 numbers expected for second argument")}if(!_4d(plane)){throw new TypeError("Array with 4 numbers expected as third argument")}return _intersectLinePlane(x[0],x[1],x[2],y[0],y[1],y[2],plane[0],plane[1],plane[2],plane[3])},"Array, Array, Array, Array":function(w,x,y,z){if(w.length===2){if(!_2d(w)){throw new TypeError("Array with 2 numbers expected for first argument")}if(!_2d(x)){throw new TypeError("Array with 2 numbers expected for second argument");
}if(!_2d(y)){throw new TypeError("Array with 2 numbers expected for third argument")}if(!_2d(z)){throw new TypeError("Array with 2 numbers expected for fourth argument")}return _intersect2d(w,x,y,z)}else if(w.length===3){if(!_3d(w)){throw new TypeError("Array with 3 numbers expected for first argument")}if(!_3d(x)){throw new TypeError("Array with 3 numbers expected for second argument")}if(!_3d(y)){throw new TypeError("Array with 3 numbers expected for third argument")}if(!_3d(z)){throw new TypeError("Array with 3 numbers expected for fourth argument")}return _intersect3d(w[0],w[1],w[2],x[0],x[1],x[2],y[0],y[1],y[2],z[0],z[1],z[2])}else{throw new TypeError("Arrays with two or thee dimensional points expected")}},"Matrix, Matrix, Matrix":function(x,y,plane){return matrix(intersect(x.valueOf(),y.valueOf(),plane.valueOf()))},"Matrix, Matrix, Matrix, Matrix":function(w,x,y,z){return matrix(intersect(w.valueOf(),x.valueOf(),y.valueOf(),z.valueOf()))}});function _2d(x){return x.length===2&&typeof x[0]==="number"&&typeof x[1]==="number"}function _3d(x){return x.length===3&&typeof x[0]==="number"&&typeof x[1]==="number"&&typeof x[2]==="number"}function _4d(x){return x.length===4&&typeof x[0]==="number"&&typeof x[1]==="number"&&typeof x[2]==="number"&&typeof x[3]==="number"}function _intersect2d(p1a,p1b,p2a,p2b){var o1=p1a;var o2=p2a;var d1=subtract(o1,p1b);var d2=subtract(o2,p2b);var det=d1[0]*d2[1]-d2[0]*d1[1];if(abs(det)<config.epsilon){return null}var t=(d2[0]*o1[1]-d2[1]*o1[0]-d2[0]*o2[1]+d2[1]*o2[0])/det;return add(multiply(d1,t),o1)}function _intersect3d(x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4){var d1343=(x1-x3)*(x4-x3)+(y1-y3)*(y4-y3)+(z1-z3)*(z4-z3);var d4321=(x4-x3)*(x2-x1)+(y4-y3)*(y2-y1)+(z4-z3)*(z2-z1);var d1321=(x1-x3)*(x2-x1)+(y1-y3)*(y2-y1)+(z1-z3)*(z2-z1);var d4343=(x4-x3)*(x4-x3)+(y4-y3)*(y4-y3)+(z4-z3)*(z4-z3);var d2121=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1);var ta=(d1343*d4321-d1321*d4343)/(d2121*d4343-d4321*d4321);var tb=(d1343+ta*d4321)/d4343;var pax=x1+ta*(x2-x1);var pay=y1+ta*(y2-y1);var paz=z1+ta*(z2-z1);var pbx=x3+tb*(x4-x3);var pby=y3+tb*(y4-y3);var pbz=z3+tb*(z4-z3);if(pax===pbx&&pay===pby&&paz===pbz){return[pax,pay,paz]}else{return null}}function _intersectLinePlane(x1,y1,z1,x2,y2,z2,x,y,z,c){var t=(c-x1*x-y1*y-z1*z)/(x2*x+y2*y+z2*z-x1-y1-z1);var px=x1+t*(x2-x1);var py=y1+t*(y2-y1);var pz=z1+t*(z2-z1);return[px,py,pz]}return intersect}exports.name="intersect";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../arithmetic/abs":275,"../arithmetic/add":276,"../arithmetic/multiply":296,"../arithmetic/subtract":305}],330:[function(require,module,exports){module.exports=[require("./algebra"),require("./arithmetic"),require("./bitwise"),require("./combinatorics"),require("./complex"),require("./geometry"),require("./logical"),require("./matrix"),require("./probability"),require("./relational"),require("./statistics"),require("./string"),require("./trigonometry"),require("./unit"),require("./utils")]},{"./algebra":252,"./arithmetic":291,"./bitwise":313,"./combinatorics":320,"./complex":325,"./geometry":328,"./logical":332,"./matrix":345,"./probability":363,"./relational":374,"./statistics":380,"./string":392,"./trigonometry":413,"./unit":420,"./utils":423}],331:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var zeros=load(require("../matrix/zeros"));var not=load(require("./not"));var isZero=load(require("../utils/isZero"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm06=load(require("../../type/matrix/utils/algorithm06"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var and=typed("and",{"number, number":function(x,y){return!!(x&&y)},"Complex, Complex":function(x,y){return(x.re!==0||x.im!==0)&&(y.re!==0||y.im!==0)},"BigNumber, BigNumber":function(x,y){return!x.isZero()&&!y.isZero()&&!x.isNaN()&&!y.isNaN()},"Unit, Unit":function(x,y){return and(x.value,y.value)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm06(x,y,and,false);break;default:c=algorithm02(y,x,and,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm02(x,y,and,false);break;default:c=algorithm13(x,y,and);break}break}return c},"Array, Array":function(x,y){return and(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return and(matrix(x),y)},"Matrix, Array":function(x,y){return and(x,matrix(y))},"Matrix, any":function(x,y){if(not(y)){return zeros(x.size(),x.storage())}var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,and,false);break;default:c=algorithm14(x,y,and,false);break}return c},"any, Matrix":function(x,y){if(not(x)){return zeros(x.size(),x.storage())}var c;switch(y.storage()){case"sparse":c=algorithm11(y,x,and,true);break;default:c=algorithm14(y,x,and,true);break}return c},"Array, any":function(x,y){return and(matrix(x),y).valueOf()},"any, Array":function(x,y){return and(x,matrix(y)).valueOf()}});and.toTex={2:"\\left(${args[0]}"+latex.operators["and"]+"${args[1]}\\right)"};return and}exports.name="and";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm06":466,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"../matrix/zeros":358,"../utils/isZero":430,"./not":333}],332:[function(require,module,exports){module.exports=[require("./and"),require("./not"),require("./or"),require("./xor")]},{"./and":331,"./not":333,"./or":334,"./xor":335}],333:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var latex=require("../../utils/latex");var not=typed("not",{number:function(x){return!x},Complex:function(x){return x.re===0&&x.im===0},BigNumber:function(x){return x.isZero()||x.isNaN()},Unit:function(x){return not(x.value)},"Array | Matrix":function(x){return deepMap(x,not)}});not.toTex={1:latex.operators["not"]+"\\left(${args[0]}\\right)"};return not}exports.name="not";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/latex":507}],334:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm05=load(require("../../type/matrix/utils/algorithm05"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var or=typed("or",{"number, number":function(x,y){return!!(x||y)},"Complex, Complex":function(x,y){return x.re!==0||x.im!==0||(y.re!==0||y.im!==0)},"BigNumber, BigNumber":function(x,y){return!x.isZero()&&!x.isNaN()||!y.isZero()&&!y.isNaN()},"Unit, Unit":function(x,y){return or(x.value,y.value)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm05(x,y,or);break;default:c=algorithm03(y,x,or,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,or,false);break;default:c=algorithm13(x,y,or);break}break}return c},"Array, Array":function(x,y){return or(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return or(matrix(x),y)},"Matrix, Array":function(x,y){return or(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,or,false);break;default:c=algorithm14(x,y,or,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,or,true);break;default:c=algorithm14(y,x,or,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,or,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,or,true).valueOf()}});or.toTex={2:"\\left(${args[0]}"+latex.operators["or"]+"${args[1]}\\right)"};return or}exports.name="or";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm05":465,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507}],335:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var xor=typed("xor",{"number, number":function(x,y){return!!(!!x^!!y)},"Complex, Complex":function(x,y){return(x.re!==0||x.im!==0)!==(y.re!==0||y.im!==0)},"BigNumber, BigNumber":function(x,y){return(!x.isZero()&&!x.isNaN())!==(!y.isZero()&&!y.isNaN())},"Unit, Unit":function(x,y){return xor(x.value,y.value)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,xor);break;default:c=algorithm03(y,x,xor,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,xor,false);break;default:c=algorithm13(x,y,xor);break}break}return c},"Array, Array":function(x,y){return xor(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return xor(matrix(x),y)},"Matrix, Array":function(x,y){return xor(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,xor,false);break;default:c=algorithm14(x,y,xor,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,xor,true);break;default:c=algorithm14(y,x,xor,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,xor,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,xor,true).valueOf()}});xor.toTex={2:"\\left(${args[0]}"+latex.operators["xor"]+"${args[1]}\\right)"};return xor}exports.name="xor";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507}],336:[function(require,module,exports){"use strict";var clone=require("../../utils/object").clone;var isInteger=require("../../utils/number").isInteger;var array=require("../../utils/array");var IndexError=require("../../error/IndexError");var DimensionError=require("../../error/DimensionError");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var concat=typed("concat",{"...Array | Matrix | number | BigNumber":function(args){var i;var len=args.length;var dim=-1;var prevDim;var asMatrix=false;var matrices=[];for(i=0;i<len;i++){var arg=args[i];if(arg&&arg.isMatrix===true){asMatrix=true}if(typeof arg==="number"||arg&&arg.isBigNumber===true){if(i!==len-1){throw new Error("Dimension must be specified as last argument")}prevDim=dim;dim=arg.valueOf();if(!isInteger(dim)){throw new TypeError("Integer number expected for dimension")}if(dim<0||i>0&&dim>prevDim){throw new IndexError(dim,prevDim+1)}}else{var m=clone(arg).valueOf();var size=array.size(m);matrices[i]=m;prevDim=dim;dim=size.length-1;if(i>0&&dim!=prevDim){throw new DimensionError(prevDim+1,dim+1)}}}if(matrices.length==0){throw new SyntaxError("At least one matrix expected")}var res=matrices.shift();while(matrices.length){res=_concat(res,matrices.shift(),dim,0)}return asMatrix?matrix(res):res},"...string":function(args){return args.join("")}});concat.toTex=undefined;return concat}function _concat(a,b,concatDim,dim){if(dim<concatDim){if(a.length!=b.length){throw new DimensionError(a.length,b.length)}var c=[];for(var i=0;i<a.length;i++){c[i]=_concat(a[i],b[i],concatDim,dim+1)}return c}else{return a.concat(b)}}exports.name="concat";exports.factory=factory},{"../../error/DimensionError":30,"../../error/IndexError":31,"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/number":508,"../../utils/object":509}],337:[function(require,module,exports){"use strict";var size=require("../../utils/array").size;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var subtract=load(require("../arithmetic/subtract"));var multiply=load(require("../arithmetic/multiply"));var cross=typed("cross",{"Matrix, Matrix":function(x,y){return matrix(_cross(x.toArray(),y.toArray()))},"Matrix, Array":function(x,y){return matrix(_cross(x.toArray(),y))},"Array, Matrix":function(x,y){return matrix(_cross(x,y.toArray()))},"Array, Array":_cross});cross.toTex={2:"\\left(${args[0]}\\right)\\times\\left(${args[1]}\\right)"};return cross;function _cross(x,y){var xSize=size(x);var ySize=size(y);if(xSize.length!=1||ySize.length!=1||xSize[0]!=3||ySize[0]!=3){throw new RangeError("Vectors with length 3 expected "+"(Size A = ["+xSize.join(", ")+"], B = ["+ySize.join(", ")+"])")}return[subtract(multiply(x[1],y[2]),multiply(x[2],y[1])),subtract(multiply(x[2],y[0]),multiply(x[0],y[2])),subtract(multiply(x[0],y[1]),multiply(x[1],y[0]))]}}exports.name="cross";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../arithmetic/multiply":296,"../arithmetic/subtract":305}],338:[function(require,module,exports){"use strict";var util=require("../../utils/index");var object=util.object;var string=util.string;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var add=load(require("../arithmetic/add"));var subtract=load(require("../arithmetic/subtract"));var multiply=load(require("../arithmetic/multiply"));var unaryMinus=load(require("../arithmetic/unaryMinus"));var det=typed("det",{any:function(x){return object.clone(x)},"Array | Matrix":function det(x){var size;if(x&&x.isMatrix===true){size=x.size()}else if(Array.isArray(x)){x=matrix(x);size=x.size()}else{size=[]}switch(size.length){case 0:return object.clone(x);case 1:if(size[0]==1){return object.clone(x.valueOf()[0])}else{throw new RangeError("Matrix must be square "+"(size: "+string.format(size)+")")}case 2:var rows=size[0];var cols=size[1];if(rows==cols){return _det(x.clone().valueOf(),rows,cols)}else{throw new RangeError("Matrix must be square "+"(size: "+string.format(size)+")")}default:throw new RangeError("Matrix must be two dimensional "+"(size: "+string.format(size)+")")}}});det.toTex={1:"\\det\\left(${args[0]}\\right)"};return det;function _det(matrix,rows,cols){if(rows==1){return object.clone(matrix[0][0])}else if(rows==2){return subtract(multiply(matrix[0][0],matrix[1][1]),multiply(matrix[1][0],matrix[0][1]))}else{var compute_mu=function(matrix){var i,j;var mu=new Array(matrix.length);var sum=0;for(i=1;i<matrix.length;i++){sum=add(sum,matrix[i][i])}for(i=0;i<matrix.length;i++){mu[i]=new Array(matrix.length);mu[i][i]=unaryMinus(sum);for(j=0;j<i;j++){mu[i][j]=0}for(j=i+1;j<matrix.length;j++){mu[i][j]=matrix[i][j]}if(i+1<matrix.length){sum=subtract(sum,matrix[i+1][i+1])}}return mu};var fa=matrix;for(var i=0;i<rows-1;i++){fa=multiply(compute_mu(fa),matrix)}if(rows%2==0){return unaryMinus(fa[0][0])}else{return fa[0][0]}}}}exports.name="det";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/index":506,"../arithmetic/add":276,"../arithmetic/multiply":296,"../arithmetic/subtract":305,"../arithmetic/unaryMinus":306}],339:[function(require,module,exports){"use strict";var array=require("../../utils/array");var clone=require("../../utils/object").clone;var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var diag=typed("diag",{Array:function(x){return _diag(x,0,array.size(x),null)},"Array, number":function(x,k){return _diag(x,k,array.size(x),null)},"Array, BigNumber":function(x,k){return _diag(x,k.toNumber(),array.size(x),null)},"Array, string":function(x,format){return _diag(x,0,array.size(x),format)},"Array, number, string":function(x,k,format){return _diag(x,k,array.size(x),format)},"Array, BigNumber, string":function(x,k,format){return _diag(x,k.toNumber(),array.size(x),format)},Matrix:function(x){return _diag(x,0,x.size(),x.storage())},"Matrix, number":function(x,k){return _diag(x,k,x.size(),x.storage())},"Matrix, BigNumber":function(x,k){return _diag(x,k.toNumber(),x.size(),x.storage())},"Matrix, string":function(x,format){return _diag(x,0,x.size(),format)},"Matrix, number, string":function(x,k,format){return _diag(x,k,x.size(),format)},"Matrix, BigNumber, string":function(x,k,format){return _diag(x,k.toNumber(),x.size(),format)}});diag.toTex=undefined;return diag;function _diag(x,k,size,format){if(!isInteger(k)){throw new TypeError("Second parameter in function diag must be an integer")}var kSuper=k>0?k:0;var kSub=k<0?-k:0;switch(size.length){case 1:return _createDiagonalMatrix(x,k,format,size[0],kSub,kSuper);case 2:return _getDiagonal(x,k,format,size,kSub,kSuper)}throw new RangeError("Matrix for function diag must be 2 dimensional")}function _createDiagonalMatrix(x,k,format,l,kSub,kSuper){var ms=[l+kSub,l+kSuper];var F=type.Matrix.storage(format||"dense");var m=F.diagonal(ms,x,k);return format!==null?m:m.valueOf()}function _getDiagonal(x,k,format,s,kSub,kSuper){if(x&&x.isMatrix===true){var dm=x.diagonal(k);if(format!==null){if(format!==dm.storage())return matrix(dm,format);return dm}return dm.valueOf()}var n=Math.min(s[0]-kSub,s[1]-kSuper);var vector=[];for(var i=0;i<n;i++){vector[i]=x[i+kSub][i+kSuper]}return format!==null?matrix(vector):vector}}exports.name="diag";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/number":508,"../../utils/object":509}],340:[function(require,module,exports){"use strict";var size=require("../../utils/array").size;function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var multiply=load(require("../arithmetic/multiply"));var dot=typed("dot",{"Matrix, Matrix":function(x,y){return _dot(x.toArray(),y.toArray())},"Matrix, Array":function(x,y){return _dot(x.toArray(),y)},"Array, Matrix":function(x,y){return _dot(x,y.toArray())},"Array, Array":_dot});dot.toTex={2:"\\left(${args[0]}\\cdot${args[1]}\\right)"};return dot;function _dot(x,y){var xSize=size(x);var ySize=size(y);var len=xSize[0];if(xSize.length!==1||ySize.length!==1)throw new RangeError("Vector expected");if(xSize[0]!=ySize[0])throw new RangeError("Vectors must have equal length ("+xSize[0]+" != "+ySize[0]+")");if(len==0)throw new RangeError("Cannot calculate the dot product of empty vectors");var prod=0;for(var i=0;i<len;i++){prod=add(prod,multiply(x[i],y[i]))}return prod}}exports.name="dot";exports.factory=factory},{"../../utils/array":486,"../arithmetic/add":276,"../arithmetic/multiply":296}],341:[function(require,module,exports){"use strict";var array=require("../../utils/array");var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var eye=typed("eye",{"":function(){return config.matrix==="Matrix"?matrix([]):[]},string:function(format){return matrix(format)},"number | BigNumber":function(rows){return _eye(rows,rows,config.matrix==="Matrix"?"default":undefined)},"number | BigNumber, string":function(rows,format){return _eye(rows,rows,format)},"number | BigNumber, number | BigNumber":function(rows,cols){return _eye(rows,cols,config.matrix==="Matrix"?"default":undefined)},"number | BigNumber, number | BigNumber, string":function(rows,cols,format){return _eye(rows,cols,format)},Array:function(size){return _eyeVector(size)},"Array, string":function(size,format){return _eyeVector(size,format)},Matrix:function(size){return _eyeVector(size.valueOf(),size.storage())},"Matrix, string":function(size,format){return _eyeVector(size.valueOf(),format)}});eye.toTex=undefined;return eye;function _eyeVector(size,format){switch(size.length){case 0:return format?matrix(format):[];case 1:return _eye(size[0],size[0],format);case 2:return _eye(size[0],size[1],format);default:throw new Error("Vector containing two values expected")}}function _eye(rows,cols,format){var Big=rows&&rows.isBigNumber===true?type.BigNumber:cols&&cols.isBigNumber===true?type.BigNumber:null;if(rows&&rows.isBigNumber===true)rows=rows.toNumber();if(cols&&cols.isBigNumber===true)cols=cols.toNumber();if(!isInteger(rows)||rows<1){throw new Error("Parameters in function eye must be positive integers")}if(!isInteger(cols)||cols<1){throw new Error("Parameters in function eye must be positive integers")}var one=Big?new type.BigNumber(1):1;var defaultValue=Big?new Big(0):0;var size=[rows,cols];if(format){var F=type.Matrix.storage(format);return F.diagonal(size,one,0,defaultValue)}var res=array.resize([],size,defaultValue);var minimum=rows<cols?rows:cols;for(var d=0;d<minimum;d++){res[d][d]=one}return res}}exports.name="eye";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/number":508}],342:[function(require,module,exports){"use strict";var size=require("../../utils/array").size;var maxArgumentCount=require("../../utils/function").maxArgumentCount;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var filter=typed("filter",{"Array, function":_filterCallback,"Array, RegExp":_filterRegExp,"Matrix, function":function(x,test){return matrix(_filterCallback(x.toArray(),test))},"Matrix, RegExp":function(x,test){return matrix(_filterRegExp(x.toArray(),test))}});filter.toTex=undefined;return filter}function _filterCallback(x,callback){if(size(x).length!==1){throw new Error("Only one dimensional matrices supported")}var args=maxArgumentCount(callback);return x.filter(function(value,index,array){if(args===1){return callback(value)}else if(args===2){return callback(value,[index])}else{return callback(value,[index],array)}})}function _filterRegExp(x,regexp){if(size(x).length!==1){throw new Error("Only one dimensional matrices supported")}return x.filter(function(entry){return regexp.test(entry)})}exports.name="filter";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/function":505}],343:[function(require,module,exports){"use strict";var clone=require("../../utils/object").clone;var _flatten=require("../../utils/array").flatten;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var flatten=typed("flatten",{Array:function(x){return _flatten(clone(x))},Matrix:function(x){var flat=_flatten(clone(x.toArray()));return matrix(flat)}});flatten.toTex=undefined;return flatten}exports.name="flatten";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/object":509}],344:[function(require,module,exports){"use strict";var maxArgumentCount=require("../../utils/function").maxArgumentCount;function factory(type,config,load,typed){var forEach=typed("forEach",{"Array, function":_forEach,"Matrix, function":function(x,callback){return x.forEach(callback)}});forEach.toTex=undefined;return forEach}function _forEach(array,callback){var args=maxArgumentCount(callback);var recurse=function(value,index){if(Array.isArray(value)){value.forEach(function(child,i){recurse(child,index.concat(i))})}else{if(args===1){callback(value)}else if(args===2){callback(value,index)}else{callback(value,index,array)}}};recurse(array,[])}exports.name="forEach";exports.factory=factory},{"../../utils/function":505}],345:[function(require,module,exports){module.exports=[require("./concat"),require("./cross"),require("./det"),require("./diag"),require("./dot"),require("./eye"),require("./filter"),require("./flatten"),require("./forEach"),require("./inv"),require("./map"),require("./ones"),require("./partitionSelect"),require("./range"),require("./resize"),require("./size"),require("./sort"),require("./squeeze"),require("./subset"),require("./trace"),require("./transpose"),require("./zeros")]},{"./concat":336,"./cross":337,"./det":338,"./diag":339,"./dot":340,"./eye":341,"./filter":342,"./flatten":343,"./forEach":344,"./inv":346,"./map":347,"./ones":348,"./partitionSelect":349,"./range":350,"./resize":351,"./size":352,"./sort":353,"./squeeze":354,"./subset":355,"./trace":356,"./transpose":357,"./zeros":358}],346:[function(require,module,exports){"use strict";var util=require("../../utils/index");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var divideScalar=load(require("../arithmetic/divideScalar"));var addScalar=load(require("../arithmetic/addScalar"));var multiply=load(require("../arithmetic/multiply"));var unaryMinus=load(require("../arithmetic/unaryMinus"));var det=load(require("../matrix/det"));var eye=load(require("./eye"));var inv=typed("inv",{"Array | Matrix":function(x){var size=x.isMatrix===true?x.size():util.array.size(x);switch(size.length){case 1:if(size[0]==1){if(x.isMatrix===true){return matrix([divideScalar(1,x.valueOf()[0])])}else{return[divideScalar(1,x[0])]}}else{throw new RangeError("Matrix must be square "+"(size: "+util.string.format(size)+")")}case 2:var rows=size[0];var cols=size[1];if(rows==cols){if(x.isMatrix===true){return matrix(_inv(x.valueOf(),rows,cols),x.storage())}else{return _inv(x,rows,cols)}}else{throw new RangeError("Matrix must be square "+"(size: "+util.string.format(size)+")")}default:throw new RangeError("Matrix must be two dimensional "+"(size: "+util.string.format(size)+")")}},any:function(x){return divideScalar(1,x)}});function _inv(mat,rows,cols){var r,s,f,value,temp;if(rows==1){value=mat[0][0];if(value==0){throw Error("Cannot calculate inverse, determinant is zero")}return[[divideScalar(1,value)]]}else if(rows==2){var d=det(mat);if(d==0){throw Error("Cannot calculate inverse, determinant is zero")}return[[divideScalar(mat[1][1],d),divideScalar(unaryMinus(mat[0][1]),d)],[divideScalar(unaryMinus(mat[1][0]),d),divideScalar(mat[0][0],d)]]}else{var A=mat.concat();for(r=0;r<rows;r++){A[r]=A[r].concat()}var B=eye(rows).valueOf();for(var c=0;c<cols;c++){r=c;while(r<rows&&A[r][c]==0){r++}if(r==rows||A[r][c]==0){throw Error("Cannot calculate inverse, determinant is zero")}if(r!=c){temp=A[c];A[c]=A[r];A[r]=temp;temp=B[c];B[c]=B[r];B[r]=temp}var Ac=A[c],Bc=B[c];for(r=0;r<rows;r++){var Ar=A[r],Br=B[r];if(r!=c){if(Ar[c]!=0){f=divideScalar(unaryMinus(Ar[c]),Ac[c]);for(s=c;s<cols;s++){Ar[s]=addScalar(Ar[s],multiply(f,Ac[s]))}for(s=0;s<cols;s++){Br[s]=addScalar(Br[s],multiply(f,Bc[s]))}}}else{f=Ac[c];for(s=c;s<cols;s++){Ar[s]=divideScalar(Ar[s],f)}for(s=0;s<cols;s++){Br[s]=divideScalar(Br[s],f)}}}}return B}}inv.toTex={1:"\\left(${args[0]}\\right)^{-1}"};return inv}exports.name="inv";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/index":506,"../arithmetic/addScalar":277,"../arithmetic/divideScalar":282,"../arithmetic/multiply":296,"../arithmetic/unaryMinus":306,"../matrix/det":338,"./eye":341}],347:[function(require,module,exports){"use strict";var maxArgumentCount=require("../../utils/function").maxArgumentCount;function factory(type,config,load,typed){var map=typed("map",{"Array, function":_map,"Matrix, function":function(x,callback){return x.map(callback)}});map.toTex=undefined;return map}function _map(array,callback){var args=maxArgumentCount(callback);var recurse=function(value,index){if(Array.isArray(value)){return value.map(function(child,i){return recurse(child,index.concat(i))})}else{if(args===1){return callback(value)}else if(args===2){return callback(value,index)}else{return callback(value,index,array)}}};return recurse(array,[])}exports.name="map";exports.factory=factory},{"../../utils/function":505}],348:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var resize=require("../../utils/array").resize;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var ones=typed("ones",{"":function(){return config.matrix==="Array"?_ones([]):_ones([],"default")},"...number | BigNumber | string":function(size){var last=size[size.length-1];if(typeof last==="string"){var format=size.pop();return _ones(size,format)}else if(config.matrix==="Array"){return _ones(size)}else{return _ones(size,"default")}},Array:_ones,Matrix:function(size){var format=size.storage();return _ones(size.valueOf(),format)},"Array | Matrix, string":function(size,format){return _ones(size.valueOf(),format)}});ones.toTex=undefined;return ones;function _ones(size,format){var hasBigNumbers=_normalize(size);var defaultValue=hasBigNumbers?new type.BigNumber(1):1;_validate(size);if(format){var m=matrix(format);if(size.length>0){return m.resize(size,defaultValue)}return m}else{var arr=[];if(size.length>0){return resize(arr,size,defaultValue)}return arr}}function _normalize(size){var hasBigNumbers=false;size.forEach(function(value,index,arr){if(value&&value.isBigNumber===true){hasBigNumbers=true;arr[index]=value.toNumber()}});return hasBigNumbers}function _validate(size){size.forEach(function(value){if(typeof value!=="number"||!isInteger(value)||value<0){throw new Error("Parameters in function ones must be positive integers")}})}}exports.name="ones";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/number":508}],349:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var asc=load(require("../relational/compare"));function desc(a,b){return-asc(a,b)}return typed("partitionSelect",{"Array | Matrix, number":function(x,k){return _partitionSelect(x,k,asc)},"Array | Matrix, number, string":function(x,k,compare){if(compare==="asc"){return _partitionSelect(x,k,asc)}else if(compare==="desc"){return _partitionSelect(x,k,desc)}else{throw new Error('Compare string must be "asc" or "desc"')}},"Array | Matrix, number, function":_partitionSelect});function _partitionSelect(x,k,compare){if(!isInteger(k)||k<0){throw new Error("k must be a non-negative integer")}if(x&&x.isMatrix){var size=x.size();if(size.length>1){throw new Error("Only one dimensional matrices supported")}return quickSelect(x.valueOf(),k,compare)}if(Array.isArray(x)){return quickSelect(x,k,compare)}}function quickSelect(arr,k,compare){if(k>=arr.length){throw new Error("k out of bounds")}var from=0;var to=arr.length-1;while(from<to){var r=from;var w=to;var pivot=arr[Math.floor(Math.random()*(to-from+1))+from];while(r<w){if(compare(arr[r],pivot)>=0){var tmp=arr[w];arr[w]=arr[r];arr[r]=tmp;--w}else{++r}}if(compare(arr[r],pivot)>0){--r}if(k<=r){to=r}else{from=r+1}}return arr[k]}}exports.name="partitionSelect";exports.factory=factory},{"../../utils/number":508,"../relational/compare":370}],350:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var ZERO=new type.BigNumber(0);var ONE=new type.BigNumber(1);var range=typed("range",{string:_strRange,"string, boolean":_strRange,"number, number":function(start,end){return _out(_rangeEx(start,end,1))},"number, number, number":function(start,end,step){return _out(_rangeEx(start,end,step))},"number, number, boolean":function(start,end,includeEnd){
return includeEnd?_out(_rangeInc(start,end,1)):_out(_rangeEx(start,end,1))},"number, number, number, boolean":function(start,end,step,includeEnd){return includeEnd?_out(_rangeInc(start,end,step)):_out(_rangeEx(start,end,step))},"BigNumber, BigNumber":function(start,end){return _out(_bigRangeEx(start,end,ONE))},"BigNumber, BigNumber, BigNumber":function(start,end,step){return _out(_bigRangeEx(start,end,step))},"BigNumber, BigNumber, boolean":function(start,end,includeEnd){return includeEnd?_out(_bigRangeInc(start,end,ONE)):_out(_bigRangeEx(start,end,ONE))},"BigNumber, BigNumber, BigNumber, boolean":function(start,end,step,includeEnd){return includeEnd?_out(_bigRangeInc(start,end,step)):_out(_bigRangeEx(start,end,step))}});range.toTex=undefined;return range;function _out(arr){return config.matrix==="Array"?arr:matrix(arr)}function _strRange(str,includeEnd){var r=_parse(str);if(!r){throw new SyntaxError('String "'+str+'" is no valid range')}var fn;if(config.number==="BigNumber"){fn=includeEnd?_bigRangeInc:_bigRangeEx;return _out(fn(new type.BigNumber(r.start),new type.BigNumber(r.end),new type.BigNumber(r.step)))}else{fn=includeEnd?_rangeInc:_rangeEx;return _out(fn(r.start,r.end,r.step))}}function _rangeEx(start,end,step){var array=[],x=start;if(step>0){while(x<end){array.push(x);x+=step}}else if(step<0){while(x>end){array.push(x);x+=step}}return array}function _rangeInc(start,end,step){var array=[],x=start;if(step>0){while(x<=end){array.push(x);x+=step}}else if(step<0){while(x>=end){array.push(x);x+=step}}return array}function _bigRangeEx(start,end,step){var array=[],x=start;if(step.gt(ZERO)){while(x.lt(end)){array.push(x);x=x.plus(step)}}else if(step.lt(ZERO)){while(x.gt(end)){array.push(x);x=x.plus(step)}}return array}function _bigRangeInc(start,end,step){var array=[],x=start;if(step.gt(ZERO)){while(x.lte(end)){array.push(x);x=x.plus(step)}}else if(step.lt(ZERO)){while(x.gte(end)){array.push(x);x=x.plus(step)}}return array}function _parse(str){var args=str.split(":");var nums=args.map(function(arg){return Number(arg)});var invalid=nums.some(function(num){return isNaN(num)});if(invalid){return null}switch(nums.length){case 2:return{start:nums[0],end:nums[1],step:1};case 3:return{start:nums[0],end:nums[2],step:nums[1]};default:return null}}}exports.name="range";exports.factory=factory},{"../../type/matrix/function/matrix":458}],351:[function(require,module,exports){"use strict";var DimensionError=require("../../error/DimensionError");var ArgumentsError=require("../../error/ArgumentsError");var isInteger=require("../../utils/number").isInteger;var format=require("../../utils/string").format;var clone=require("../../utils/object").clone;var array=require("../../utils/array");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var resize=function resize(x,size,defaultValue){if(arguments.length!=2&&arguments.length!=3){throw new ArgumentsError("resize",arguments.length,2,3)}if(size&&size.isMatrix===true){size=size.valueOf()}if(size.length&&size[0]&&size[0].isBigNumber===true){size=size.map(function(value){return value&&value.isBigNumber===true?value.toNumber():value})}if(x&&x.isMatrix===true){return x.resize(size,defaultValue,true)}if(typeof x==="string"){return _resizeString(x,size,defaultValue)}var asMatrix=Array.isArray(x)?false:config.matrix!=="Array";if(size.length==0){while(Array.isArray(x)){x=x[0]}return clone(x)}else{if(!Array.isArray(x)){x=[x]}x=clone(x);var res=array.resize(x,size,defaultValue);return asMatrix?matrix(res):res}};resize.toTex=undefined;return resize;function _resizeString(str,size,defaultChar){if(defaultChar!==undefined){if(typeof defaultChar!=="string"||defaultChar.length!==1){throw new TypeError("Single character expected as defaultValue")}}else{defaultChar=" "}if(size.length!==1){throw new DimensionError(size.length,1)}var len=size[0];if(typeof len!=="number"||!isInteger(len)){throw new TypeError("Invalid size, must contain positive integers "+"(size: "+format(size)+")")}if(str.length>len){return str.substring(0,len)}else if(str.length<len){var res=str;for(var i=0,ii=len-str.length;i<ii;i++){res+=defaultChar}return res}else{return str}}}exports.name="resize";exports.factory=factory},{"../../error/ArgumentsError":29,"../../error/DimensionError":30,"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/number":508,"../../utils/object":509,"../../utils/string":510}],352:[function(require,module,exports){"use strict";var array=require("../../utils/array");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var size=typed("size",{Matrix:function(x){return matrix(x.size())},Array:array.size,string:function(x){return config.matrix==="Array"?[x.length]:matrix([x.length])},"number | Complex | BigNumber | Unit | boolean | null":function(x){return config.matrix==="Array"?[]:matrix([])}});size.toTex=undefined;return size}exports.name="size";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486}],353:[function(require,module,exports){"use strict";var size=require("../../utils/array").size;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var asc=load(require("../relational/compare"));var desc=function(a,b){return-asc(a,b)};var sort=typed("sort",{Array:function(x){_arrayIsVector(x);return x.sort(asc)},Matrix:function(x){_matrixIsVector(x);return matrix(x.toArray().sort(asc),x.storage())},"Array, function":function(x,_comparator){_arrayIsVector(x);return x.sort(_comparator)},"Matrix, function":function(x,_comparator){_matrixIsVector(x);return matrix(x.toArray().sort(_comparator),x.storage())},"Array, string":function(x,order){_arrayIsVector(x);return x.sort(_comparator(order))},"Matrix, string":function(x,order){_matrixIsVector(x);return matrix(x.toArray().sort(_comparator(order)),x.storage())}});sort.toTex=undefined;function _comparator(order){if(order==="asc"){return asc}else if(order==="desc"){return desc}else{throw new Error('String "asc" or "desc" expected')}}function _arrayIsVector(array){if(size(array).length!==1){throw new Error("One dimensional array expected")}}function _matrixIsVector(matrix){if(matrix.size().length!==1){throw new Error("One dimensional matrix expected")}}return sort}exports.name="sort";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../relational/compare":370}],354:[function(require,module,exports){"use strict";var object=require("../../utils/object");var array=require("../../utils/array");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var squeeze=typed("squeeze",{Array:function(x){return array.squeeze(object.clone(x))},Matrix:function(x){var res=array.squeeze(x.toArray());return Array.isArray(res)?matrix(res):res},any:function(x){return object.clone(x)}});squeeze.toTex=undefined;return squeeze}exports.name="squeeze";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/object":509}],355:[function(require,module,exports){"use strict";var clone=require("../../utils/object").clone;var validateIndex=require("../../utils/array").validateIndex;var DimensionError=require("../../error/DimensionError");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var subset=typed("subset",{"Array, Index":function(value,index){var m=matrix(value);var subset=m.subset(index);return subset&&subset.valueOf()},"Matrix, Index":function(value,index){return value.subset(index)},"Object, Index":_getObjectProperty,"string, Index":_getSubstring,"Array, Index, any":function(value,index,replacement){return matrix(clone(value)).subset(index,replacement,undefined).valueOf()},"Array, Index, any, any":function(value,index,replacement,defaultValue){return matrix(clone(value)).subset(index,replacement,defaultValue).valueOf()},"Matrix, Index, any":function(value,index,replacement){return value.clone().subset(index,replacement)},"Matrix, Index, any, any":function(value,index,replacement,defaultValue){return value.clone().subset(index,replacement,defaultValue)},"string, Index, string":_setSubstring,"string, Index, string, string":_setSubstring,"Object, Index, any":_setObjectProperty});subset.toTex=undefined;return subset;function _getSubstring(str,index){if(!index||index.isIndex!==true){throw new TypeError("Index expected")}if(index.size().length!=1){throw new DimensionError(index.size().length,1)}var strLen=str.length;validateIndex(index.min()[0],strLen);validateIndex(index.max()[0],strLen);var range=index.dimension(0);var substr="";range.forEach(function(v){substr+=str.charAt(v)});return substr}function _setSubstring(str,index,replacement,defaultValue){if(!index||index.isIndex!==true){throw new TypeError("Index expected")}if(index.size().length!=1){throw new DimensionError(index.size().length,1)}if(defaultValue!==undefined){if(typeof defaultValue!=="string"||defaultValue.length!==1){throw new TypeError("Single character expected as defaultValue")}}else{defaultValue=" "}var range=index.dimension(0);var len=range.size()[0];if(len!=replacement.length){throw new DimensionError(range.size()[0],replacement.length)}var strLen=str.length;validateIndex(index.min()[0]);validateIndex(index.max()[0]);var chars=[];for(var i=0;i<strLen;i++){chars[i]=str.charAt(i)}range.forEach(function(v,i){chars[v]=replacement.charAt(i[0])});if(chars.length>strLen){for(i=strLen-1,len=chars.length;i<len;i++){if(!chars[i]){chars[i]=defaultValue}}}return chars.join("")}}function _getObjectProperty(object,index){if(index.size().length!==1){throw new DimensionError(index.size(),1)}var key=index.dimension(0);if(typeof key!=="string"){throw new TypeError("String expected as index to retrieve an object property")}return object[key]}function _setObjectProperty(object,index,replacement){if(index.size().length!==1){throw new DimensionError(index.size(),1)}var key=index.dimension(0);if(typeof key!=="string"){throw new TypeError("String expected as index to retrieve an object property")}var updated=clone(object);updated[key]=replacement;return updated}exports.name="subset";exports.factory=factory},{"../../error/DimensionError":30,"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/object":509}],356:[function(require,module,exports){"use strict";var clone=require("../../utils/object").clone;var format=require("../../utils/string").format;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var add=load(require("../arithmetic/add"));var trace=typed("trace",{Array:function(x){return trace(matrix(x))},Matrix:function(x){var c;switch(x.storage()){case"dense":c=_denseTrace(x);break;case"sparse":c=_sparseTrace(x);break}return c},any:clone});var _denseTrace=function(m){var size=m._size;var data=m._data;switch(size.length){case 1:if(size[0]==1){return clone(data[0])}throw new RangeError("Matrix must be square (size: "+format(size)+")");case 2:var rows=size[0];var cols=size[1];if(rows===cols){var sum=0;for(var i=0;i<rows;i++)sum=add(sum,data[i][i]);return sum}throw new RangeError("Matrix must be square (size: "+format(size)+")");default:throw new RangeError("Matrix must be two dimensional (size: "+format(size)+")")}};var _sparseTrace=function(m){var values=m._values;var index=m._index;var ptr=m._ptr;var size=m._size;var rows=size[0];var columns=size[1];if(rows===columns){var sum=0;if(values.length>0){for(var j=0;j<columns;j++){var k0=ptr[j];var k1=ptr[j+1];for(var k=k0;k<k1;k++){var i=index[k];if(i===j){sum=add(sum,values[k]);break}if(i>j){break}}}}return sum}throw new RangeError("Matrix must be square (size: "+format(size)+")")};trace.toTex={1:"\\mathrm{tr}\\left(${args[0]}\\right)"};return trace}exports.name="trace";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/object":509,"../../utils/string":510,"../arithmetic/add":276}],357:[function(require,module,exports){"use strict";var clone=require("../../utils/object").clone;var format=require("../../utils/string").format;function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var DenseMatrix=type.DenseMatrix,SparseMatrix=type.SparseMatrix;var transpose=typed("transpose",{Array:function(x){return transpose(matrix(x)).valueOf()},Matrix:function(x){var size=x.size();var c;switch(size.length){case 1:c=x.clone();break;case 2:var rows=size[0];var columns=size[1];if(columns===0){throw new RangeError("Cannot transpose a 2D matrix with no columns (size: "+format(size)+")")}switch(x.storage()){case"dense":c=_denseTranspose(x,rows,columns);break;case"sparse":c=_sparseTranspose(x,rows,columns);break}break;default:throw new RangeError("Matrix must be a vector or two dimensional (size: "+format(this._size)+")")}return c},any:function(x){return clone(x)}});var _denseTranspose=function(m,rows,columns){var data=m._data;var transposed=[];var transposedRow;for(var j=0;j<columns;j++){transposedRow=transposed[j]=[];for(var i=0;i<rows;i++){transposedRow[i]=clone(data[i][j])}}return new DenseMatrix({data:transposed,size:[columns,rows],datatype:m._datatype})};var _sparseTranspose=function(m,rows,columns){var values=m._values;var index=m._index;var ptr=m._ptr;var cvalues=values?[]:undefined;var cindex=[];var cptr=[];var w=[];for(var x=0;x<rows;x++)w[x]=0;var p,l,j;for(p=0,l=index.length;p<l;p++){w[index[p]]++}var sum=0;for(var i=0;i<rows;i++){cptr.push(sum);sum+=w[i];w[i]=cptr[i]}cptr.push(sum);for(j=0;j<columns;j++){for(var k0=ptr[j],k1=ptr[j+1],k=k0;k<k1;k++){var q=w[index[k]]++;cindex[q]=j;if(values)cvalues[q]=clone(values[k])}}return new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[columns,rows],datatype:m._datatype})};transpose.toTex={1:"\\left(${args[0]}\\right)"+latex.operators["transpose"]};return transpose}exports.name="transpose";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/latex":507,"../../utils/object":509,"../../utils/string":510}],358:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var resize=require("../../utils/array").resize;function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var zeros=typed("zeros",{"":function(){return config.matrix==="Array"?_zeros([]):_zeros([],"default")},"...number | BigNumber | string":function(size){var last=size[size.length-1];if(typeof last==="string"){var format=size.pop();return _zeros(size,format)}else if(config.matrix==="Array"){return _zeros(size)}else{return _zeros(size,"default")}},Array:_zeros,Matrix:function(size){var format=size.storage();return _zeros(size.valueOf(),format)},"Array | Matrix, string":function(size,format){return _zeros(size.valueOf(),format)}});zeros.toTex=undefined;return zeros;function _zeros(size,format){var hasBigNumbers=_normalize(size);var defaultValue=hasBigNumbers?new type.BigNumber(0):0;_validate(size);if(format){var m=matrix(format);if(size.length>0){return m.resize(size,defaultValue)}return m}else{var arr=[];if(size.length>0){return resize(arr,size,defaultValue)}return arr}}function _normalize(size){var hasBigNumbers=false;size.forEach(function(value,index,arr){if(value&&value.isBigNumber===true){hasBigNumbers=true;arr[index]=value.toNumber()}});return hasBigNumbers}function _validate(size){size.forEach(function(value){if(typeof value!=="number"||!isInteger(value)||value<0){throw new Error("Parameters in function zeros must be positive integers")}})}}exports.name="zeros";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/number":508}],359:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var combinations=typed("combinations",{"number, number":function(n,k){var max,result,i;if(!isInteger(n)||n<0){throw new TypeError("Positive integer value expected in function combinations")}if(!isInteger(k)||k<0){throw new TypeError("Positive integer value expected in function combinations")}if(k>n){throw new TypeError("k must be less than or equal to n")}max=Math.max(k,n-k);result=1;for(i=1;i<=n-max;i++){result=result*(max+i)/i}return result},"BigNumber, BigNumber":function(n,k){var max,result,i,ii;var one=new type.BigNumber(1);if(!isPositiveInteger(n)||!isPositiveInteger(k)){throw new TypeError("Positive integer value expected in function combinations")}if(k.gt(n)){throw new TypeError("k must be less than n in function combinations")}max=n.minus(k);if(k.lt(max))max=k;result=one;for(i=one,ii=n.minus(max);i.lte(ii);i=i.plus(1)){result=result.times(max.plus(i)).dividedBy(i)}return result}});combinations.toTex={2:"\\binom{${args[0]}}{${args[1]}}"};return combinations}function isPositiveInteger(n){return n.isInteger()&&n.gte(0)}exports.name="combinations";exports.factory=factory},{"../../utils/number":508}],360:[function(require,module,exports){"use strict";var ArgumentsError=require("../../error/ArgumentsError");var isCollection=require("../../utils/collection/isCollection");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var array=require("../../utils/array");function distribution(name){if(!distributions.hasOwnProperty(name))throw new Error("Unknown distribution "+name);var args=Array.prototype.slice.call(arguments,1),distribution=distributions[name].apply(this,args);return function(distribution){var randFunctions={random:function(arg1,arg2,arg3){var size,min,max;if(arguments.length>3){throw new ArgumentsError("random",arguments.length,0,3)}else if(arguments.length===1){if(isCollection(arg1)){size=arg1}else{max=arg1}}else if(arguments.length===2){if(isCollection(arg1)){size=arg1;max=arg2}else{min=arg1;max=arg2}}else{size=arg1;min=arg2;max=arg3}if(max===undefined)max=1;if(min===undefined)min=0;if(size!==undefined){var res=_randomDataForMatrix(size.valueOf(),min,max,_random);return size&&size.isMatrix===true?matrix(res):res}else return _random(min,max)},randomInt:function(arg1,arg2,arg3){var size,min,max;if(arguments.length>3||arguments.length<1)throw new ArgumentsError("randomInt",arguments.length,1,3);else if(arguments.length===1)if(isCollection(arg1)){size=arg1}else{max=arg1}else if(arguments.length===2){if(isCollection(arg1)){size=arg1;max=arg2}else{min=arg1;max=arg2}}else{size=arg1;min=arg2;max=arg3}if(min===undefined)min=0;if(size!==undefined){var res=_randomDataForMatrix(size.valueOf(),min,max,_randomInt);return size&&size.isMatrix===true?matrix(res):res}else return _randomInt(min,max)},pickRandom:function(possibles){if(arguments.length!==1){throw new ArgumentsError("pickRandom",arguments.length,1)}if(possibles&&possibles.isMatrix===true){possibles=possibles.valueOf()}else if(!Array.isArray(possibles)){throw new TypeError("Unsupported type of value in function pickRandom")}if(array.size(possibles).length>1){throw new Error("Only one dimensional vectors supported")}return possibles[Math.floor(Math.random()*possibles.length)]}};var _random=function(min,max){return min+distribution()*(max-min)};var _randomInt=function(min,max){return Math.floor(min+distribution()*(max-min))};var _randomDataForMatrix=function(size,min,max,randFunc){var data=[],length,i;size=size.slice(0);if(size.length>1){for(i=0,length=size.shift();i<length;i++)data.push(_randomDataForMatrix(size,min,max,randFunc))}else{for(i=0,length=size.shift();i<length;i++)data.push(randFunc(min,max))}return data};return randFunctions}(distribution)}var distributions={uniform:function(){return Math.random},normal:function(){return function(){var u1,u2,picked=-1;while(picked<0||picked>1){u1=Math.random();u2=Math.random();picked=1/6*Math.pow(-2*Math.log(u1),.5)*Math.cos(2*Math.PI*u2)+.5}return picked}}};distribution.toTex=undefined;return distribution}exports.name="distribution";exports.factory=factory},{"../../error/ArgumentsError":29,"../../type/matrix/function/matrix":458,"../../utils/array":486,"../../utils/collection/isCollection":501}],361:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var gamma=load(require("./gamma"));var latex=require("../../utils/latex");var factorial=typed("factorial",{number:function(n){if(n<0){throw new Error("Value must be non-negative")}return gamma(n+1)},BigNumber:function(n){if(n.isNegative()){throw new Error("Value must be non-negative")}return gamma(n.plus(1))},"Array | Matrix":function(n){return deepMap(n,factorial)}});factorial.toTex={1:"\\left(${args[0]}\\right)"+latex.operators["factorial"]};return factorial}exports.name="factorial";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/latex":507,"./gamma":362}],362:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var multiply=load(require("../arithmetic/multiply"));var pow=load(require("../arithmetic/pow"));var gamma=typed("gamma",{number:function(n){var t,x;if(isInteger(n)){if(n<=0){return isFinite(n)?Infinity:NaN}if(n>171){return Infinity}var value=n-2;var res=n-1;while(value>1){res*=value;value--}if(res==0){res=1}return res}if(n<.5){return Math.PI/(Math.sin(Math.PI*n)*gamma(1-n))}if(n>=171.35){return Infinity}if(n>85){var twoN=n*n;var threeN=twoN*n;var fourN=threeN*n;var fiveN=fourN*n;return Math.sqrt(2*Math.PI/n)*Math.pow(n/Math.E,n)*(1+1/(12*n)+1/(288*twoN)-139/(51840*threeN)-571/(2488320*fourN)+163879/(209018880*fiveN)+5246819/(75246796800*fiveN*n))}--n;x=p[0];for(var i=1;i<p.length;++i){x+=p[i]/(n+i)}t=n+g+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,n+.5)*Math.exp(-t)*x},Complex:function(n){var t,x;if(n.im==0){return gamma(n.re)}n=new type.Complex(n.re-1,n.im);x=new type.Complex(p[0],0);for(var i=1;i<p.length;++i){var real=n.re+i;var den=real*real+n.im*n.im;if(den!=0){x.re+=p[i]*real/den;x.im+=-(p[i]*n.im)/den}else{x.re=p[i]<0?-Infinity:Infinity}}t=new type.Complex(n.re+g+.5,n.im);var twoPiSqrt=Math.sqrt(2*Math.PI);n.re+=.5;var result=pow(t,n);if(result.im==0){result.re*=twoPiSqrt}else if(result.re==0){result.im*=twoPiSqrt}else{result.re*=twoPiSqrt;result.im*=twoPiSqrt}var r=Math.exp(-t.re);t.re=r*Math.cos(-t.im);t.im=r*Math.sin(-t.im);return multiply(multiply(result,t),x)},BigNumber:function(n){if(n.isInteger()){return n.isNegative()||n.isZero()?new type.BigNumber(Infinity):bigFactorial(n.minus(1))}if(!n.isFinite()){return new type.BigNumber(n.isNegative()?NaN:Infinity)}throw new Error("Integer BigNumber expected")},"Array | Matrix":function(n){return deepMap(n,gamma)}});function bigFactorial(n){if(n.isZero()){return new type.BigNumber(1)}var precision=config.precision+(Math.log(n.toNumber())|0);var Big=type.BigNumber.clone({precision:precision});var res=new Big(n);var value=n.toNumber()-1;while(value>1){res=res.times(value);value--}return new type.BigNumber(res.toPrecision(type.BigNumber.precision))}gamma.toTex={1:"\\Gamma\\left(${args[0]}\\right)"};return gamma}var g=4.7421875;var p=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];exports.name="gamma";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508,"../arithmetic/multiply":296,"../arithmetic/pow":300}],363:[function(require,module,exports){module.exports=[require("./combinations"),require("./factorial"),require("./gamma"),require("./kldivergence"),require("./multinomial"),require("./permutations"),require("./pickRandom"),require("./random"),require("./randomInt")]},{"./combinations":359,"./factorial":361,"./gamma":362,"./kldivergence":364,"./multinomial":365,"./permutations":366,"./pickRandom":367,"./random":368,"./randomInt":369}],364:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var divide=load(require("../arithmetic/divide"));var sum=load(require("../statistics/sum"));var multiply=load(require("../arithmetic/multiply"));var dotDivide=load(require("../arithmetic/dotDivide"));var log=load(require("../arithmetic/log"));var isNumeric=load(require("../utils/isNumeric"));var kldivergence=typed("kldivergence",{"Array, Array":function(q,p){return _kldiv(matrix(q),matrix(p))},"Matrix, Array":function(q,p){return _kldiv(q,matrix(p))},"Array, Matrix":function(q,p){return _kldiv(matrix(q),p)},"Matrix, Matrix":function(q,p){return _kldiv(q,p)}});function _kldiv(q,p){var plength=p.size().length;var qlength=q.size().length;if(plength>1){throw new Error("first object must be one dimensional")}if(qlength>1){throw new Error("second object must be one dimensional")}if(plength!==qlength){throw new Error("Length of two vectors must be equal")}var sumq=sum(q);if(sumq===0){throw new Error("Sum of elements in first object must be non zero")}var sump=sum(p);if(sump===0){throw new Error("Sum of elements in second object must be non zero")}var qnorm=divide(q,sum(q));var pnorm=divide(p,sum(p));var result=sum(multiply(qnorm,log(dotDivide(qnorm,pnorm))));if(isNumeric(result)){return result}else{return Number.NaN}}return kldivergence}exports.name="kldivergence";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../arithmetic/divide":281,"../arithmetic/dotDivide":283,"../arithmetic/log":293,"../arithmetic/multiply":296,"../statistics/sum":389,"../utils/isNumeric":427}],365:[function(require,module,exports){"use strict";var deepForEach=require("../../utils/collection/deepForEach");function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var multiply=load(require("../arithmetic/multiply"));var divide=load(require("../arithmetic/divide"));var factorial=load(require("../probability/factorial"));var isInteger=load(require("../utils/isInteger"));var isPositive=load(require("../utils/isPositive"));return typed("multinomial",{"Array | Matrix":function(a){var sum=0;var denom=1;deepForEach(a,function(ai){if(!isInteger(ai)||!isPositive(ai)){throw new TypeError("Positive integer value expected in function multinomial")}sum=add(sum,ai);denom=multiply(denom,factorial(ai))});return divide(factorial(sum),denom)}})}exports.name="multinomial";exports.factory=factory},{"../../utils/collection/deepForEach":499,"../arithmetic/add":276,"../arithmetic/divide":281,"../arithmetic/multiply":296,"../probability/factorial":361,"../utils/isInteger":424,"../utils/isPositive":428}],366:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;function factory(type,config,load,typed){var factorial=load(require("./factorial"));var permutations=typed("permutations",{"number | BigNumber":factorial,"number, number":function(n,k){var result,i;if(!isInteger(n)||n<0){throw new TypeError("Positive integer value expected in function permutations")}if(!isInteger(k)||k<0){throw new TypeError("Positive integer value expected in function permutations")}if(k>n){throw new TypeError("second argument k must be less than or equal to first argument n")}result=1;for(i=n-k+1;i<=n;i++){result=result*i}return result},"BigNumber, BigNumber":function(n,k){var result,i;if(!isPositiveInteger(n)||!isPositiveInteger(k)){throw new TypeError("Positive integer value expected in function permutations")}if(k.gt(n)){throw new TypeError("second argument k must be less than or equal to first argument n")}result=new type.BigNumber(1);for(i=n.minus(k).plus(1);i.lte(n);i=i.plus(1)){result=result.times(i)}return result}});permutations.toTex=undefined;return permutations}function isPositiveInteger(n){return n.isInteger()&&n.gte(0)}exports.name="permutations";exports.factory=factory},{"../../utils/number":508,"./factorial":361}],367:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var distribution=load(require("./distribution"));var pickRandom=distribution("uniform").pickRandom;pickRandom.toTex=undefined;return pickRandom}exports.name="pickRandom";exports.factory=factory},{"./distribution":360}],368:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var distribution=load(require("./distribution"));var random=distribution("uniform").random;random.toTex=undefined;return random}exports.name="random";exports.factory=factory},{"./distribution":360}],369:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var distribution=load(require("./distribution"));var randomInt=distribution("uniform").randomInt;randomInt.toTex=undefined;return randomInt}exports.name="randomInt";exports.factory=factory},{"./distribution":360}],370:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm05=load(require("../../type/matrix/utils/algorithm05"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var compare=typed("compare",{"boolean, boolean":function(x,y){return x===y?0:x>y?1:-1},"number, number":function(x,y){return x===y||nearlyEqual(x,y,config.epsilon)?0:x>y?1:-1},"BigNumber, BigNumber":function(x,y){return x.eq(y)||bigNearlyEqual(x,y,config.epsilon)?new type.BigNumber(0):new type.BigNumber(x.cmp(y))},"Fraction, Fraction":function(x,y){return new type.Fraction(x.compare(y))},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return compare(x.value,y.value)},"string, string":function(x,y){return x===y?0:x>y?1:-1},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm05(x,y,compare);break;default:c=algorithm03(y,x,compare,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,compare,false);break;default:c=algorithm13(x,y,compare);break}break}return c},"Array, Array":function(x,y){return compare(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return compare(matrix(x),y)},"Matrix, Array":function(x,y){return compare(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,compare,false);break;default:c=algorithm14(x,y,compare,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,compare,true);break;default:c=algorithm14(y,x,compare,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,compare,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,compare,true).valueOf()}});compare.toTex=undefined;return compare}exports.name="compare";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm05":465,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/nearlyEqual":495,"../../utils/number":508}],371:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var equal=load(require("./equal"));var deepEqual=typed("deepEqual",{"any, any":function(x,y){return _deepEqual(x.valueOf(),y.valueOf())}});deepEqual.toTex=undefined;return deepEqual;function _deepEqual(x,y){
if(Array.isArray(x)){if(Array.isArray(y)){var len=x.length;if(len!==y.length){return false}for(var i=0;i<len;i++){if(!_deepEqual(x[i],y[i])){return false}}return true}else{return false}}else{if(Array.isArray(y)){return false}else{return equal(x,y)}}}}exports.name="deepEqual";exports.factory=factory},{"./equal":372}],372:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var equalScalar=load(require("./equalScalar"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var latex=require("../../utils/latex");var equal=typed("equal",{"any, any":function(x,y){if(x===null){return y===null}if(y===null){return x===null}if(x===undefined){return y===undefined}if(y===undefined){return x===undefined}return equalScalar(x,y)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,equalScalar);break;default:c=algorithm03(y,x,equalScalar,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,equalScalar,false);break;default:c=algorithm13(x,y,equalScalar);break}break}return c},"Array, Array":function(x,y){return equal(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return equal(matrix(x),y)},"Matrix, Array":function(x,y){return equal(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,equalScalar,false);break;default:c=algorithm14(x,y,equalScalar,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,equalScalar,true);break;default:c=algorithm14(y,x,equalScalar,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,equalScalar,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,equalScalar,true).valueOf()}});equal.toTex={2:"\\left(${args[0]}"+latex.operators["equal"]+"${args[1]}\\right)"};return equal}exports.name="equal";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507,"./equalScalar":373}],373:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var equalScalar=typed("equalScalar",{"boolean, boolean":function(x,y){return x===y},"number, number":function(x,y){return x===y||nearlyEqual(x,y,config.epsilon)},"BigNumber, BigNumber":function(x,y){return x.eq(y)||bigNearlyEqual(x,y,config.epsilon)},"Fraction, Fraction":function(x,y){return x.equals(y)},"Complex, Complex":function(x,y){return x.equals(y)},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return equalScalar(x.value,y.value)},"string, string":function(x,y){return x===y}});return equalScalar}exports.factory=factory},{"../../utils/bignumber/nearlyEqual":495,"../../utils/number":508}],374:[function(require,module,exports){module.exports=[require("./compare"),require("./deepEqual"),require("./equal"),require("./larger"),require("./largerEq"),require("./smaller"),require("./smallerEq"),require("./unequal")]},{"./compare":370,"./deepEqual":371,"./equal":372,"./larger":375,"./largerEq":376,"./smaller":377,"./smallerEq":378,"./unequal":379}],375:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var latex=require("../../utils/latex");var larger=typed("larger",{"boolean, boolean":function(x,y){return x>y},"number, number":function(x,y){return x>y&&!nearlyEqual(x,y,config.epsilon)},"BigNumber, BigNumber":function(x,y){return x.gt(y)&&!bigNearlyEqual(x,y,config.epsilon)},"Fraction, Fraction":function(x,y){return x.compare(y)===1},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return larger(x.value,y.value)},"string, string":function(x,y){return x>y},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,larger);break;default:c=algorithm03(y,x,larger,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,larger,false);break;default:c=algorithm13(x,y,larger);break}break}return c},"Array, Array":function(x,y){return larger(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return larger(matrix(x),y)},"Matrix, Array":function(x,y){return larger(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,larger,false);break;default:c=algorithm14(x,y,larger,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,larger,true);break;default:c=algorithm14(y,x,larger,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,larger,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,larger,true).valueOf()}});larger.toTex={2:"\\left(${args[0]}"+latex.operators["larger"]+"${args[1]}\\right)"};return larger}exports.name="larger";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/nearlyEqual":495,"../../utils/latex":507,"../../utils/number":508}],376:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var latex=require("../../utils/latex");var largerEq=typed("largerEq",{"boolean, boolean":function(x,y){return x>=y},"number, number":function(x,y){return x>=y||nearlyEqual(x,y,config.epsilon)},"BigNumber, BigNumber":function(x,y){return x.gte(y)||bigNearlyEqual(x,y,config.epsilon)},"Fraction, Fraction":function(x,y){return x.compare(y)!==-1},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return largerEq(x.value,y.value)},"string, string":function(x,y){return x>=y},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,largerEq);break;default:c=algorithm03(y,x,largerEq,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,largerEq,false);break;default:c=algorithm13(x,y,largerEq);break}break}return c},"Array, Array":function(x,y){return largerEq(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return largerEq(matrix(x),y)},"Matrix, Array":function(x,y){return largerEq(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,largerEq,false);break;default:c=algorithm14(x,y,largerEq,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,largerEq,true);break;default:c=algorithm14(y,x,largerEq,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,largerEq,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,largerEq,true).valueOf()}});largerEq.toTex={2:"\\left(${args[0]}"+latex.operators["largerEq"]+"${args[1]}\\right)"};return largerEq}exports.name="largerEq";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/nearlyEqual":495,"../../utils/latex":507,"../../utils/number":508}],377:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var latex=require("../../utils/latex");var smaller=typed("smaller",{"boolean, boolean":function(x,y){return x<y},"number, number":function(x,y){return x<y&&!nearlyEqual(x,y,config.epsilon)},"BigNumber, BigNumber":function(x,y){return x.lt(y)&&!bigNearlyEqual(x,y,config.epsilon)},"Fraction, Fraction":function(x,y){return x.compare(y)===-1},"Complex, Complex":function(x,y){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return smaller(x.value,y.value)},"string, string":function(x,y){return x<y},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,smaller);break;default:c=algorithm03(y,x,smaller,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,smaller,false);break;default:c=algorithm13(x,y,smaller);break}break}return c},"Array, Array":function(x,y){return smaller(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return smaller(matrix(x),y)},"Matrix, Array":function(x,y){return smaller(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,smaller,false);break;default:c=algorithm14(x,y,smaller,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,smaller,true);break;default:c=algorithm14(y,x,smaller,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,smaller,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,smaller,true).valueOf()}});smaller.toTex={2:"\\left(${args[0]}"+latex.operators["smaller"]+"${args[1]}\\right)"};return smaller}exports.name="smaller";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/nearlyEqual":495,"../../utils/latex":507,"../../utils/number":508}],378:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var latex=require("../../utils/latex");var smallerEq=typed("smallerEq",{"boolean, boolean":function(x,y){return x<=y},"number, number":function(x,y){return x<=y||nearlyEqual(x,y,config.epsilon)},"BigNumber, BigNumber":function(x,y){return x.lte(y)||bigNearlyEqual(x,y,config.epsilon)},"Fraction, Fraction":function(x,y){return x.compare(y)!==1},"Complex, Complex":function(){throw new TypeError("No ordering relation is defined for complex numbers")},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return smallerEq(x.value,y.value)},"string, string":function(x,y){return x<=y},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,smallerEq);break;default:c=algorithm03(y,x,smallerEq,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,smallerEq,false);break;default:c=algorithm13(x,y,smallerEq);break}break}return c},"Array, Array":function(x,y){return smallerEq(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return smallerEq(matrix(x),y)},"Matrix, Array":function(x,y){return smallerEq(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,smallerEq,false);break;default:c=algorithm14(x,y,smallerEq,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,smallerEq,true);break;default:c=algorithm14(y,x,smallerEq,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,smallerEq,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,smallerEq,true).valueOf()}});smallerEq.toTex={2:"\\left(${args[0]}"+latex.operators["smallerEq"]+"${args[1]}\\right)"};return smallerEq}exports.name="smallerEq";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/nearlyEqual":495,"../../utils/latex":507,"../../utils/number":508}],379:[function(require,module,exports){"use strict";var nearlyEqual=require("../../utils/number").nearlyEqual;var bigNearlyEqual=require("../../utils/bignumber/nearlyEqual");function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm07=load(require("../../type/matrix/utils/algorithm07"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var latex=require("../../utils/latex");var unequal=typed("unequal",{"any, any":function(x,y){if(x===null){return y!==null}if(y===null){return x!==null}if(x===undefined){return y!==undefined}if(y===undefined){return x!==undefined}return _unequal(x,y)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm07(x,y,_unequal);break;default:c=algorithm03(y,x,_unequal,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,_unequal,false);break;default:c=algorithm13(x,y,_unequal);break}break}return c},"Array, Array":function(x,y){return unequal(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return unequal(matrix(x),y)},"Matrix, Array":function(x,y){return unequal(x,matrix(y))},"Matrix, any":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm12(x,y,_unequal,false);break;default:c=algorithm14(x,y,_unequal,false);break}return c},"any, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,_unequal,true);break;default:c=algorithm14(y,x,_unequal,true);break}return c},"Array, any":function(x,y){return algorithm14(matrix(x),y,_unequal,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,_unequal,true).valueOf()}});var _unequal=typed("_unequal",{"boolean, boolean":function(x,y){return x!==y},"number, number":function(x,y){return!nearlyEqual(x,y,config.epsilon)},"BigNumber, BigNumber":function(x,y){return!bigNearlyEqual(x,y,config.epsilon)},"Fraction, Fraction":function(x,y){return!x.equals(y)},"Complex, Complex":function(x,y){return!x.equals(y)},"Unit, Unit":function(x,y){if(!x.equalBase(y)){throw new Error("Cannot compare units with different base")}return unequal(x.value,y.value)},"string, string":function(x,y){return x!==y}});unequal.toTex={2:"\\left(${args[0]}"+latex.operators["unequal"]+"${args[1]}\\right)"};return unequal}exports.name="unequal";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm07":467,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/bignumber/nearlyEqual":495,"../../utils/latex":507,"../../utils/number":508}],380:[function(require,module,exports){module.exports=[require("./max"),require("./mean"),require("./median"),require("./min"),require("./mode"),require("./prod"),require("./quantileSeq"),require("./std"),require("./sum"),require("./var")]},{"./max":381,"./mean":382,"./median":383,"./min":384,"./mode":385,"./prod":386,"./quantileSeq":387,"./std":388,"./sum":389,"./var":390}],381:[function(require,module,exports){"use strict";var deepForEach=require("../../utils/collection/deepForEach");var reduce=require("../../utils/collection/reduce");var containsCollections=require("../../utils/collection/containsCollections");function factory(type,config,load,typed){var larger=load(require("../relational/larger"));var max=typed("max",{"Array | Matrix":_max,"Array | Matrix, number | BigNumber":function(array,dim){return reduce(array,dim.valueOf(),_largest)},"...":function(args){if(containsCollections(args)){throw new TypeError("Scalar values expected in function max")}return _max(args)}});max.toTex="\\max\\left(${args}\\right)";return max;function _largest(x,y){return larger(x,y)?x:y}function _max(array){var max=undefined;deepForEach(array,function(value){if(max===undefined||larger(value,max)){max=value}});if(max===undefined){throw new Error("Cannot calculate max of an empty array")}return max}}exports.name="max";exports.factory=factory},{"../../utils/collection/containsCollections":498,"../../utils/collection/deepForEach":499,"../../utils/collection/reduce":502,"../relational/larger":375}],382:[function(require,module,exports){"use strict";var size=require("../../utils/array").size;var deepForEach=require("../../utils/collection/deepForEach");var reduce=require("../../utils/collection/reduce");var containsCollections=require("../../utils/collection/containsCollections");function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var divide=load(require("../arithmetic/divide"));var mean=typed("mean",{"Array | Matrix":_mean,"Array | Matrix, number | BigNumber":_nmean,"...":function(args){if(containsCollections(args)){throw new TypeError("Scalar values expected in function mean")}return _mean(args)}});mean.toTex=undefined;return mean;function _nmean(array,dim){var sum=reduce(array,dim,add);var s=Array.isArray(array)?size(array):array.size();return divide(sum,s[dim])}function _mean(array){var sum=0;var num=0;deepForEach(array,function(value){sum=add(sum,value);num++});if(num===0){throw new Error("Cannot calculate mean of an empty array")}return divide(sum,num)}}exports.name="mean";exports.factory=factory},{"../../utils/array":486,"../../utils/collection/containsCollections":498,"../../utils/collection/deepForEach":499,"../../utils/collection/reduce":502,"../arithmetic/add":276,"../arithmetic/divide":281}],383:[function(require,module,exports){"use strict";var flatten=require("../../utils/array").flatten;var reduce=require("../../utils/collection/reduce");var containsCollections=require("../../utils/collection/containsCollections");function factory(type,config,load,typed){var add=load(require("../arithmetic/addScalar"));var divide=load(require("../arithmetic/divideScalar"));var compare=load(require("../relational/compare"));var partitionSelect=load(require("../matrix/partitionSelect"));var median=typed("median",{"Array | Matrix":_median,"Array | Matrix, number | BigNumber":function(array,dim){throw new Error("median(A, dim) is not yet supported")},"...":function(args){if(containsCollections(args)){throw new TypeError("Scalar values expected in function median")}return _median(args)}});function _median(array){array=flatten(array.valueOf());var num=array.length;if(num==0){throw new Error("Cannot calculate median of an empty array")}if(num%2==0){var mid=num/2-1;var right=partitionSelect(array,mid+1);var left=array[mid];for(var i=0;i<mid;++i){if(compare(array[i],left)>0){left=array[i]}}return middle2(left,right)}else{var m=partitionSelect(array,(num-1)/2);return middle(m)}}var middle=typed({"number | BigNumber | Unit":function(value){return value}});var middle2=typed({"number | BigNumber | Unit, number | BigNumber | Unit":function(left,right){return divide(add(left,right),2)}});median.toTex=undefined;return median}exports.name="median";exports.factory=factory},{"../../utils/array":486,"../../utils/collection/containsCollections":498,"../../utils/collection/reduce":502,"../arithmetic/addScalar":277,"../arithmetic/divideScalar":282,"../matrix/partitionSelect":349,"../relational/compare":370}],384:[function(require,module,exports){"use strict";var deepForEach=require("../../utils/collection/deepForEach");var reduce=require("../../utils/collection/reduce");var containsCollections=require("../../utils/collection/containsCollections");function factory(type,config,load,typed){var smaller=load(require("../relational/smaller"));var min=typed("min",{"Array | Matrix":_min,"Array | Matrix, number | BigNumber":function(array,dim){return reduce(array,dim.valueOf(),_smallest)},"...":function(args){if(containsCollections(args)){throw new TypeError("Scalar values expected in function min")}return _min(args)}});min.toTex="\\min\\left(${args}\\right)";return min;function _smallest(x,y){return smaller(x,y)?x:y}function _min(array){var min=undefined;deepForEach(array,function(value){if(min===undefined||smaller(value,min)){min=value}});if(min===undefined){throw new Error("Cannot calculate min of an empty array")}return min}}exports.name="min";exports.factory=factory},{"../../utils/collection/containsCollections":498,"../../utils/collection/deepForEach":499,"../../utils/collection/reduce":502,"../relational/smaller":377}],385:[function(require,module,exports){"use strict";var flatten=require("../../utils/array").flatten;function factory(type,config,load,typed){var mode=typed("mode",{"Array | Matrix":_mode,"...":function(args){return _mode(args)}});return mode;function _mode(values){values=flatten(values.valueOf());var num=values.length;if(num==0){throw new Error("Cannot calculate mode of an empty array")}var count={},mode=[],max=0;for(var i in values){if(!(values[i]in count)){count[values[i]]=0}count[values[i]]++;if(count[values[i]]==max){mode.push(values[i])}else if(count[values[i]]>max){max=count[values[i]];mode=[values[i]]}}return mode}}exports.name="mode";exports.factory=factory},{"../../utils/array":486}],386:[function(require,module,exports){"use strict";var deepForEach=require("../../utils/collection/deepForEach");function factory(type,config,load,typed){var multiply=load(require("../arithmetic/multiplyScalar"));var prod=typed("prod",{"Array | Matrix":_prod,"Array | Matrix, number | BigNumber":function(array,dim){throw new Error("prod(A, dim) is not yet supported")},"...":function(args){return _prod(args)}});prod.toTex=undefined;return prod;function _prod(array){var prod=undefined;deepForEach(array,function(value){prod=prod===undefined?value:multiply(prod,value)});if(prod===undefined){throw new Error("Cannot calculate prod of an empty array")}return prod}}exports.name="prod";exports.factory=factory},{"../../utils/collection/deepForEach":499,"../arithmetic/multiplyScalar":297}],387:[function(require,module,exports){"use strict";var isInteger=require("../../utils/number").isInteger;var isNumber=require("../../utils/number").isNumber;var flatten=require("../../utils/array").flatten;var isCollection=require("../../utils/collection/isCollection");function factory(type,config,load,typed){var add=load(require("../arithmetic/add"));var multiply=load(require("../arithmetic/multiply"));var partitionSelect=load(require("../matrix/partitionSelect"));var compare=load(require("../relational/compare"));function quantileSeq(data,probOrN,sorted){var probArr,dataArr,one;if(arguments.length<2||arguments.length>3){throw new SyntaxError("Function quantileSeq requires two or three parameters")}if(isCollection(data)){sorted=sorted||false;if(typeof sorted==="boolean"){dataArr=data.valueOf();if(isNumber(probOrN)){if(probOrN<0){throw new Error("N/prob must be non-negative")}if(probOrN<=1){return _quantileSeq(dataArr,probOrN,sorted)}if(probOrN>1){if(!isInteger(probOrN)){throw new Error("N must be a positive integer")}var nPlusOne=probOrN+1;probArr=new Array(probOrN);for(var i=0;i<probOrN;){probArr[i]=_quantileSeq(dataArr,++i/nPlusOne,sorted)}return probArr}}if(probOrN&&probOrN.isBigNumber){if(probOrN.isNegative()){throw new Error("N/prob must be non-negative")}one=new probOrN.constructor(1);if(probOrN.lte(one)){return _quantileSeq(dataArr,probOrN,sorted)}if(probOrN.gt(one)){if(!probOrN.isInteger()){throw new Error("N must be a positive integer")}var intN=probOrN.toNumber();if(intN>4294967295){throw new Error("N must be less than or equal to 2^32-1, as that is the maximum length of an Array")}var nPlusOne=new type.BigNumber(intN+1);probArr=new Array(intN);for(var i=0;i<intN;){probArr[i]=_quantileSeq(dataArr,new type.BigNumber((++i)).div(nPlusOne),sorted)}return probArr}}if(Array.isArray(probOrN)){probArr=new Array(probOrN.length);for(var i=0;i<probArr.length;++i){var currProb=probOrN[i];if(isNumber(currProb)){if(currProb<0||currProb>1){throw new Error("Probability must be between 0 and 1, inclusive")}}else if(currProb&&currProb.isBigNumber){one=new currProb.constructor(1);if(currProb.isNegative()||currProb.gt(one)){throw new Error("Probability must be between 0 and 1, inclusive")}}else{throw new TypeError("Unexpected type of argument in function quantileSeq")}probArr[i]=_quantileSeq(dataArr,currProb,sorted)}return probArr}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}throw new TypeError("Unexpected type of argument in function quantileSeq")}function _quantileSeq(array,prob,sorted){var flat=flatten(array);var len=flat.length;if(len===0){throw new Error("Cannot calculate quantile of an empty sequence")}if(isNumber(prob)){var index=prob*(len-1);var fracPart=index%1;if(fracPart===0){var value=sorted?flat[index]:partitionSelect(flat,index);validate(value);return value}var integerPart=Math.floor(index);var left,right;if(sorted){left=flat[integerPart];right=flat[integerPart+1]}else{right=partitionSelect(flat,integerPart+1);left=flat[integerPart];for(var i=0;i<integerPart;++i){if(compare(flat[i],left)>0){left=flat[i]}}}validate(left);validate(right);return add(multiply(left,1-fracPart),multiply(right,fracPart))}var index=prob.times(len-1);if(index.isInteger()){index=index.toNumber();var value=sorted?flat[index]:partitionSelect(flat,index);validate(value);return value}var integerPart=index.floor();var fracPart=index.minus(integerPart);var integerPartNumber=integerPart.toNumber();var left,right;if(sorted){left=flat[integerPartNumber];right=flat[integerPartNumber+1]}else{right=partitionSelect(flat,integerPartNumber+1);left=flat[integerPartNumber];for(var i=0;i<integerPartNumber;++i){if(compare(flat[i],left)>0){left=flat[i]}}}validate(left);validate(right);var one=new fracPart.constructor(1);return add(multiply(left,one.minus(fracPart)),multiply(right,fracPart))}var validate=typed({"number | BigNumber | Unit":function(x){return x}});return quantileSeq}exports.name="quantileSeq";exports.factory=factory},{"../../utils/array":486,"../../utils/collection/isCollection":501,"../../utils/number":508,"../arithmetic/add":276,"../arithmetic/multiply":296,"../matrix/partitionSelect":349,"../relational/compare":370}],388:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var sqrt=load(require("../arithmetic/sqrt"));var variance=load(require("../statistics/var"));var std=typed("std",{"Array | Matrix":_std,"Array | Matrix, string":_std,"...":function(args){return _std(args)}});std.toTex=undefined;return std;function _std(array,normalization){if(array.length==0){throw new SyntaxError("Function std requires one or more parameters (0 provided)")}return sqrt(variance.apply(null,arguments))}}exports.name="std";exports.factory=factory},{"../arithmetic/sqrt":303,"../statistics/var":390}],389:[function(require,module,exports){"use strict";var deepForEach=require("../../utils/collection/deepForEach");function factory(type,config,load,typed){var add=load(require("../arithmetic/addScalar"));var sum=typed("sum",{"Array | Matrix":function(args){return _sum(args)},"Array | Matrix, number | BigNumber":function(){throw new Error("sum(A, dim) is not yet supported")},"...":function(args){return _sum(args)}});sum.toTex=undefined;return sum;function _sum(array){var sum=undefined;deepForEach(array,function(value){sum=sum===undefined?value:add(sum,value)});if(sum===undefined){switch(config.number){case"number":return 0;case"BigNumber":return new type.BigNumber(0);case"Fraction":return new type.Fraction(0);default:return 0}}return sum}}exports.name="sum";exports.factory=factory},{"../../utils/collection/deepForEach":499,"../arithmetic/addScalar":277}],390:[function(require,module,exports){"use strict";var DEFAULT_NORMALIZATION="unbiased";var deepForEach=require("../../utils/collection/deepForEach");function factory(type,config,load,typed){var add=load(require("../arithmetic/addScalar"));var subtract=load(require("../arithmetic/subtract"));var multiply=load(require("../arithmetic/multiplyScalar"));var divide=load(require("../arithmetic/divideScalar"));var variance=typed("variance",{"Array | Matrix":function(array){return _var(array,DEFAULT_NORMALIZATION)},"Array | Matrix, string":_var,"...":function(args){return _var(args,DEFAULT_NORMALIZATION)}});variance.toTex="\\mathrm{Var}\\left(${args}\\right)";return variance;function _var(array,normalization){var sum=0;var num=0;if(array.length==0){throw new SyntaxError("Function var requires one or more parameters (0 provided)")}deepForEach(array,function(value){sum=add(sum,value);num++});if(num===0)throw new Error("Cannot calculate var of an empty array");var mean=divide(sum,num);sum=0;deepForEach(array,function(value){var diff=subtract(value,mean);sum=add(sum,multiply(diff,diff))});switch(normalization){case"uncorrected":return divide(sum,num);case"biased":return divide(sum,num+1);case"unbiased":var zero=sum&&sum.isBigNumber===true?new type.BigNumber(0):0;return num==1?zero:divide(sum,num-1);default:throw new Error('Unknown normalization "'+normalization+'". '+'Choose "unbiased" (default), "uncorrected", or "biased".');
}}}exports.name="var";exports.factory=factory},{"../../utils/collection/deepForEach":499,"../arithmetic/addScalar":277,"../arithmetic/divideScalar":282,"../arithmetic/multiplyScalar":297,"../arithmetic/subtract":305}],391:[function(require,module,exports){"use strict";var string=require("../../utils/string");function factory(type,config,load,typed){var format=typed("format",{any:string.format,"any, Object | function | number":string.format});format.toTex=undefined;return format}exports.name="format";exports.factory=factory},{"../../utils/string":510}],392:[function(require,module,exports){module.exports=[require("./format"),require("./print")]},{"./format":391,"./print":393}],393:[function(require,module,exports){"use strict";var isString=require("../../utils/string").isString;var format=require("../../utils/string").format;function factory(type,config,load,typed){var print=typed("print",{"string, Object":_print,"string, Object, number":_print});print.toTex=undefined;return print}function _print(template,values,options){return template.replace(/\$([\w\.]+)/g,function(original,key){var keys=key.split(".");var value=values[keys.shift()];while(keys.length&&value!==undefined){var k=keys.shift();value=k?value[k]:value+"."}if(value!==undefined){if(!isString(value)){return format(value,options)}else{return value}}return original})}exports.name="print";exports.factory=factory},{"../../utils/string":510}],394:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acos=typed("acos",{number:function(x){if(x>=-1&&x<=1||config.predictable){return Math.acos(x)}else{return new type.Complex(x,0).acos()}},Complex:function(x){return x.acos()},BigNumber:function(x){return x.acos()},"Array | Matrix":function(x){return deepMap(x,acos)}});acos.toTex={1:"\\cos^{-1}\\left(${args[0]}\\right)"};return acos}exports.name="acos";exports.factory=factory},{"../../utils/collection/deepMap":500}],395:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acosh=typed("acosh",{number:function(x){if(x>=1||config.predictable){return _acosh(x)}if(x<=-1){return new type.Complex(Math.log(Math.sqrt(x*x-1)-x),Math.PI)}return new type.Complex(x,0).acosh()},Complex:function(x){return x.acosh()},BigNumber:function(x){return x.acosh()},"Array | Matrix":function(x){return deepMap(x,acosh)}});acosh.toTex={1:"\\cosh^{-1}\\left(${args[0]}\\right)"};return acosh}var _acosh=Math.acosh||function(x){return Math.log(Math.sqrt(x*x-1)+x)};exports.name="acosh";exports.factory=factory},{"../../utils/collection/deepMap":500}],396:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acot=typed("acot",{number:function(x){return Math.atan(1/x)},Complex:function(x){return x.acot()},BigNumber:function(x){return new type.BigNumber(1).div(x).atan()},"Array | Matrix":function(x){return deepMap(x,acot)}});acot.toTex={1:"\\cot^{-1}\\left(${args[0]}\\right)"};return acot}exports.name="acot";exports.factory=factory},{"../../utils/collection/deepMap":500}],397:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acoth=typed("acoth",{number:function(x){if(x>=1||x<=-1||config.predictable){return isFinite(x)?(Math.log((x+1)/x)+Math.log(x/(x-1)))/2:0}return new type.Complex(x,0).acoth()},Complex:function(x){return x.acoth()},BigNumber:function(x){return new type.BigNumber(1).div(x).atanh()},"Array | Matrix":function(x){return deepMap(x,acoth)}});acoth.toTex={1:"\\coth^{-1}\\left(${args[0]}\\right)"};return acoth}exports.name="acoth";exports.factory=factory},{"../../utils/collection/deepMap":500}],398:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acsc=typed("acsc",{number:function(x){if(x<=-1||x>=1||config.predictable){return Math.asin(1/x)}return new type.Complex(x,0).acsc()},Complex:function(x){return x.acsc()},BigNumber:function(x){return new type.BigNumber(1).div(x).asin()},"Array | Matrix":function(x){return deepMap(x,acsc)}});acsc.toTex={1:"\\csc^{-1}\\left(${args[0]}\\right)"};return acsc}exports.name="acsc";exports.factory=factory},{"../../utils/collection/deepMap":500}],399:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acsch=typed("acsch",{number:function(x){x=1/x;return Math.log(x+Math.sqrt(x*x+1))},Complex:function(x){return x.acsch()},BigNumber:function(x){return new type.BigNumber(1).div(x).asinh()},"Array | Matrix":function(x){return deepMap(x,acsch)}});acsch.toTex={1:"\\mathrm{csch}^{-1}\\left(${args[0]}\\right)"};return acsch}exports.name="acsch";exports.factory=factory},{"../../utils/collection/deepMap":500}],400:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var asec=typed("asec",{number:function(x){if(x<=-1||x>=1||config.predictable){return Math.acos(1/x)}return new type.Complex(x,0).asec()},Complex:function(x){return x.asec()},BigNumber:function(x){return new type.BigNumber(1).div(x).acos()},"Array | Matrix":function(x){return deepMap(x,asec)}});asec.toTex={1:"\\sec^{-1}\\left(${args[0]}\\right)"};return asec}exports.name="asec";exports.factory=factory},{"../../utils/collection/deepMap":500}],401:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var acosh=typed.find(load(require("./acosh")),["Complex"]);var asech=typed("asech",{number:function(x){if(x<=1&&x>=-1||config.predictable){x=1/x;var ret=Math.sqrt(x*x-1);if(x>0||config.predictable){return Math.log(ret+x)}return new type.Complex(Math.log(ret-x),Math.PI)}return new type.Complex(x,0).asech()},Complex:function(x){return x.asech()},BigNumber:function(x){return new type.BigNumber(1).div(x).acosh()},"Array | Matrix":function(x){return deepMap(x,asech)}});asech.toTex={1:"\\mathrm{sech}^{-1}\\left(${args[0]}\\right)"};return asech}exports.name="asech";exports.factory=factory},{"../../utils/collection/deepMap":500,"./acosh":395}],402:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var asin=typed("asin",{number:function(x){if(x>=-1&&x<=1||config.predictable){return Math.asin(x)}else{return new type.Complex(x,0).asin()}},Complex:function(x){return x.asin()},BigNumber:function(x){return x.asin()},"Array | Matrix":function(x){return deepMap(x,asin,true)}});asin.toTex={1:"\\sin^{-1}\\left(${args[0]}\\right)"};return asin}exports.name="asin";exports.factory=factory},{"../../utils/collection/deepMap":500}],403:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var asinh=typed("asinh",{number:Math.asinh||function(x){return Math.log(Math.sqrt(x*x+1)+x)},Complex:function(x){return x.asinh()},BigNumber:function(x){return x.asinh()},"Array | Matrix":function(x){return deepMap(x,asinh,true)}});asinh.toTex={1:"\\sinh^{-1}\\left(${args[0]}\\right)"};return asinh}exports.name="asinh";exports.factory=factory},{"../../utils/collection/deepMap":500}],404:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var atan=typed("atan",{number:function(x){return Math.atan(x)},Complex:function(x){return x.atan()},BigNumber:function(x){return x.atan()},"Array | Matrix":function(x){return deepMap(x,atan,true)}});atan.toTex={1:"\\tan^{-1}\\left(${args[0]}\\right)"};return atan}exports.name="atan";exports.factory=factory},{"../../utils/collection/deepMap":500}],405:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=load(require("../../type/matrix/function/matrix"));var algorithm02=load(require("../../type/matrix/utils/algorithm02"));var algorithm03=load(require("../../type/matrix/utils/algorithm03"));var algorithm09=load(require("../../type/matrix/utils/algorithm09"));var algorithm11=load(require("../../type/matrix/utils/algorithm11"));var algorithm12=load(require("../../type/matrix/utils/algorithm12"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var atan2=typed("atan2",{"number, number":Math.atan2,"BigNumber, BigNumber":function(y,x){return type.BigNumber.atan2(y,x)},"Matrix, Matrix":function(x,y){var c;switch(x.storage()){case"sparse":switch(y.storage()){case"sparse":c=algorithm09(x,y,atan2,false);break;default:c=algorithm02(y,x,atan2,true);break}break;default:switch(y.storage()){case"sparse":c=algorithm03(x,y,atan2,false);break;default:c=algorithm13(x,y,atan2);break}break}return c},"Array, Array":function(x,y){return atan2(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return atan2(matrix(x),y)},"Matrix, Array":function(x,y){return atan2(x,matrix(y))},"Matrix, number | BigNumber":function(x,y){var c;switch(x.storage()){case"sparse":c=algorithm11(x,y,atan2,false);break;default:c=algorithm14(x,y,atan2,false);break}return c},"number | BigNumber, Matrix":function(x,y){var c;switch(y.storage()){case"sparse":c=algorithm12(y,x,atan2,true);break;default:c=algorithm14(y,x,atan2,true);break}return c},"Array, number | BigNumber":function(x,y){return algorithm14(matrix(x),y,atan2,false).valueOf()},"number | BigNumber, Array":function(x,y){return algorithm14(matrix(y),x,atan2,true).valueOf()}});atan2.toTex={2:"\\mathrm{atan2}\\left(${args}\\right)"};return atan2}exports.name="atan2";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm02":462,"../../type/matrix/utils/algorithm03":463,"../../type/matrix/utils/algorithm09":469,"../../type/matrix/utils/algorithm11":471,"../../type/matrix/utils/algorithm12":472,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474}],406:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var atanh=typed("atanh",{number:function(x){if(x<=1&&x>=-1||config.predictable){return _atanh(x)}return new type.Complex(x,0).atanh()},Complex:function(x){return x.atanh()},BigNumber:function(x){return x.atanh()},"Array | Matrix":function(x){return deepMap(x,atanh,true)}});atanh.toTex={1:"\\tanh^{-1}\\left(${args[0]}\\right)"};return atanh}var _atanh=Math.atanh||function(x){return Math.log((1+x)/(1-x))/2};exports.name="atanh";exports.factory=factory},{"../../utils/collection/deepMap":500}],407:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var cos=typed("cos",{number:Math.cos,Complex:function(x){return x.cos()},BigNumber:function(x){return x.cos()},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function cos is no angle")}return cos(x.value)},"Array | Matrix":function(x){return deepMap(x,cos)}});cos.toTex={1:"\\cos\\left(${args[0]}\\right)"};return cos}exports.name="cos";exports.factory=factory},{"../../utils/collection/deepMap":500}],408:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var cosh=typed("cosh",{number:_cosh,Complex:function(x){return x.cosh()},BigNumber:function(x){return x.cosh()},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function cosh is no angle")}return cosh(x.value)},"Array | Matrix":function(x){return deepMap(x,cosh)}});cosh.toTex={1:"\\cosh\\left(${args[0]}\\right)"};return cosh}var _cosh=Math.cosh||function(x){return(Math.exp(x)+Math.exp(-x))/2};exports.name="cosh";exports.factory=factory},{"../../utils/collection/deepMap":500}],409:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var cot=typed("cot",{number:function(x){return 1/Math.tan(x)},Complex:function(x){return x.cot()},BigNumber:function(x){return new type.BigNumber(1).div(x.tan())},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function cot is no angle")}return cot(x.value)},"Array | Matrix":function(x){return deepMap(x,cot)}});cot.toTex={1:"\\cot\\left(${args[0]}\\right)"};return cot}exports.name="cot";exports.factory=factory},{"../../utils/collection/deepMap":500}],410:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var coth=typed("coth",{number:_coth,Complex:function(x){return x.coth()},BigNumber:function(x){return new type.BigNumber(1).div(x.tanh())},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function coth is no angle")}return coth(x.value)},"Array | Matrix":function(x){return deepMap(x,coth)}});coth.toTex={1:"\\coth\\left(${args[0]}\\right)"};return coth}function _coth(x){var e=Math.exp(2*x);return(e+1)/(e-1)}exports.name="coth";exports.factory=factory},{"../../utils/collection/deepMap":500}],411:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var csc=typed("csc",{number:function(x){return 1/Math.sin(x)},Complex:function(x){return x.csc()},BigNumber:function(x){return new type.BigNumber(1).div(x.sin())},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function csc is no angle")}return csc(x.value)},"Array | Matrix":function(x){return deepMap(x,csc)}});csc.toTex={1:"\\csc\\left(${args[0]}\\right)"};return csc}exports.name="csc";exports.factory=factory},{"../../utils/collection/deepMap":500}],412:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var sign=require("../../utils/number").sign;function factory(type,config,load,typed){var csch=typed("csch",{number:_csch,Complex:function(x){return x.csch()},BigNumber:function(x){return new type.BigNumber(1).div(x.sinh())},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function csch is no angle")}return csch(x.value)},"Array | Matrix":function(x){return deepMap(x,csch)}});csch.toTex={1:"\\mathrm{csch}\\left(${args[0]}\\right)"};return csch}function _csch(x){if(x==0){return Number.POSITIVE_INFINITY}else{return Math.abs(2/(Math.exp(x)-Math.exp(-x)))*sign(x)}}exports.name="csch";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],413:[function(require,module,exports){module.exports=[require("./acos"),require("./acosh"),require("./acot"),require("./acoth"),require("./acsc"),require("./acsch"),require("./asec"),require("./asech"),require("./asin"),require("./asinh"),require("./atan"),require("./atan2"),require("./atanh"),require("./cos"),require("./cosh"),require("./cot"),require("./coth"),require("./csc"),require("./csch"),require("./sec"),require("./sech"),require("./sin"),require("./sinh"),require("./tan"),require("./tanh")]},{"./acos":394,"./acosh":395,"./acot":396,"./acoth":397,"./acsc":398,"./acsch":399,"./asec":400,"./asech":401,"./asin":402,"./asinh":403,"./atan":404,"./atan2":405,"./atanh":406,"./cos":407,"./cosh":408,"./cot":409,"./coth":410,"./csc":411,"./csch":412,"./sec":414,"./sech":415,"./sin":416,"./sinh":417,"./tan":418,"./tanh":419}],414:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var sec=typed("sec",{number:function(x){return 1/Math.cos(x)},Complex:function(x){return x.sec()},BigNumber:function(x){return new type.BigNumber(1).div(x.cos())},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function sec is no angle")}return sec(x.value)},"Array | Matrix":function(x){return deepMap(x,sec)}});sec.toTex={1:"\\sec\\left(${args[0]}\\right)"};return sec}exports.name="sec";exports.factory=factory},{"../../utils/collection/deepMap":500}],415:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var sech=typed("sech",{number:_sech,Complex:function(x){return x.sech()},BigNumber:function(x){return new type.BigNumber(1).div(x.cosh())},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function sech is no angle")}return sech(x.value)},"Array | Matrix":function(x){return deepMap(x,sech)}});sech.toTex={1:"\\mathrm{sech}\\left(${args[0]}\\right)"};return sech}function _sech(x){return 2/(Math.exp(x)+Math.exp(-x))}exports.name="sech";exports.factory=factory},{"../../utils/collection/deepMap":500}],416:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var sin=typed("sin",{number:Math.sin,Complex:function(x){return x.sin()},BigNumber:function(x){return x.sin()},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function sin is no angle")}return sin(x.value)},"Array | Matrix":function(x){return deepMap(x,sin,true)}});sin.toTex={1:"\\sin\\left(${args[0]}\\right)"};return sin}exports.name="sin";exports.factory=factory},{"../../utils/collection/deepMap":500}],417:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var sinh=typed("sinh",{number:_sinh,Complex:function(x){return x.sinh()},BigNumber:function(x){return x.sinh()},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function sinh is no angle")}return sinh(x.value)},"Array | Matrix":function(x){return deepMap(x,sinh,true)}});sinh.toTex={1:"\\sinh\\left(${args[0]}\\right)"};return sinh}var _sinh=Math.sinh||function(x){return(Math.exp(x)-Math.exp(-x))/2};exports.name="sinh";exports.factory=factory},{"../../utils/collection/deepMap":500}],418:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var tan=typed("tan",{number:Math.tan,Complex:function(x){return x.tan()},BigNumber:function(x){return x.tan()},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function tan is no angle")}return tan(x.value)},"Array | Matrix":function(x){return deepMap(x,tan,true)}});tan.toTex={1:"\\tan\\left(${args[0]}\\right)"};return tan}exports.name="tan";exports.factory=factory},{"../../utils/collection/deepMap":500}],419:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var tanh=typed("tanh",{number:_tanh,Complex:function(x){return x.tanh()},BigNumber:function(x){return x.tanh()},Unit:function(x){if(!x.hasBase(type.Unit.BASE_UNITS.ANGLE)){throw new TypeError("Unit in function tanh is no angle")}return tanh(x.value)},"Array | Matrix":function(x){return deepMap(x,tanh,true)}});tanh.toTex={1:"\\tanh\\left(${args[0]}\\right)"};return tanh}var _tanh=Math.tanh||function(x){var e=Math.exp(2*x);return(e-1)/(e+1)};exports.name="tanh";exports.factory=factory},{"../../utils/collection/deepMap":500}],420:[function(require,module,exports){module.exports=[require("./to")]},{"./to":421}],421:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var latex=require("../../utils/latex");var matrix=load(require("../../type/matrix/function/matrix"));var algorithm13=load(require("../../type/matrix/utils/algorithm13"));var algorithm14=load(require("../../type/matrix/utils/algorithm14"));var to=typed("to",{"Unit, Unit | string":function(x,unit){return x.to(unit)},"Matrix, Matrix":function(x,y){return algorithm13(x,y,to)},"Array, Array":function(x,y){return to(matrix(x),matrix(y)).valueOf()},"Array, Matrix":function(x,y){return to(matrix(x),y)},"Matrix, Array":function(x,y){return to(x,matrix(y))},"Matrix, any":function(x,y){return algorithm14(x,y,to,false)},"any, Matrix":function(x,y){return algorithm14(y,x,to,true)},"Array, any":function(x,y){return algorithm14(matrix(x),y,to,false).valueOf()},"any, Array":function(x,y){return algorithm14(matrix(y),x,to,true).valueOf()}});to.toTex={2:"\\left(${args[0]}"+latex.operators["to"]+"${args[1]}\\right)"};return to}exports.name="to";exports.factory=factory},{"../../type/matrix/function/matrix":458,"../../type/matrix/utils/algorithm13":473,"../../type/matrix/utils/algorithm14":474,"../../utils/latex":507}],422:[function(require,module,exports){"use strict";var object=require("../../utils/object");function factory(type,config,load,typed){var clone=typed("clone",{any:object.clone});clone.toTex=undefined;return clone}exports.name="clone";exports.factory=factory},{"../../utils/object":509}],423:[function(require,module,exports){module.exports=[require("./clone"),require("./isInteger"),require("./isNegative"),require("./isNumeric"),require("./isPositive"),require("./isPrime"),require("./isZero"),require("./isNaN"),require("./typeof")]},{"./clone":422,"./isInteger":424,"./isNaN":425,"./isNegative":426,"./isNumeric":427,"./isPositive":428,"./isPrime":429,"./isZero":430,"./typeof":431}],424:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var number=require("../../utils/number");function factory(type,config,load,typed){var isInteger=typed("isInteger",{number:number.isInteger,BigNumber:function(x){return x.isInt()},Fraction:function(x){return x.d===1&&isFinite(x.n)},"Array | Matrix":function(x){return deepMap(x,isInteger)}});return isInteger}exports.name="isInteger";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],425:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var number=require("../../utils/number");function factory(type,config,load,typed){var isNaN=typed("isNaN",{number:function(x){return Number.isNaN(x)},BigNumber:function(x){return x.isNaN()},Fraction:function(x){return false},Complex:function(x){return Number.isNaN(x.re)&&Number.isNaN(x.im)},Unit:function(x){return Number.isNaN(x.value)},"Array | Matrix":function(x){return deepMap(x,Number.isNaN)}});return isNaN}exports.name="isNaN";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],426:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var number=require("../../utils/number");function factory(type,config,load,typed){var isNegative=typed("isNegative",{number:function(x){return x<0},BigNumber:function(x){return x.isNeg()&&!x.isZero()&&!x.isNaN()},Fraction:function(x){return x.s<0},Unit:function(x){return isNegative(x.value)},"Array | Matrix":function(x){return deepMap(x,isNegative)}});return isNegative}exports.name="isNegative";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],427:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var number=require("../../utils/number");function factory(type,config,load,typed){var isNumeric=typed("isNumeric",{"number | BigNumber | Fraction | boolean":function(){return true},"Complex | Unit | string":function(){return false},"Array | Matrix":function(x){return deepMap(x,isNumeric)}});return isNumeric}exports.name="isNumeric";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],428:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var number=require("../../utils/number");function factory(type,config,load,typed){var isPositive=typed("isPositive",{number:function(x){return x>0},BigNumber:function(x){return!x.isNeg()&&!x.isZero()&&!x.isNaN()},Fraction:function(x){return x.s>0&&x.n>0},Unit:function(x){return isPositive(x.value)},"Array | Matrix":function(x){return deepMap(x,isPositive)}});return isPositive}exports.name="isPositive";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],429:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");function factory(type,config,load,typed){var isPrime=typed("isPrime",{number:function(x){if(x<2){return false}if(x==2){return true}if(x%2==0){return false}for(var i=3;i*i<=x;i+=2){if(x%i==0){return false}}return true},BigNumber:function(x){if(x.lt(2)){return false}if(x.equals(2)){return true}if(x.mod(2).isZero()){return false}for(var i=type.BigNumber(3);i.times(i).lte(x);i=i.plus(1)){if(x.mod(i).isZero()){return false}}return true},"Array | Matrix":function(x){return deepMap(x,isPrime)}});return isPrime}exports.name="isPrime";exports.factory=factory},{"../../utils/collection/deepMap":500}],430:[function(require,module,exports){"use strict";var deepMap=require("../../utils/collection/deepMap");var number=require("../../utils/number");function factory(type,config,load,typed){var isZero=typed("isZero",{number:function(x){return x===0},BigNumber:function(x){return x.isZero()},Complex:function(x){return x.re===0&&x.im===0},Fraction:function(x){return x.d===1&&x.n===0},Unit:function(x){return isZero(x.value)},"Array | Matrix":function(x){return deepMap(x,isZero)}});return isZero}exports.name="isZero";exports.factory=factory},{"../../utils/collection/deepMap":500,"../../utils/number":508}],431:[function(require,module,exports){"use strict";var types=require("../../utils/types");function factory(type,config,load,typed){var _typeof=typed("_typeof",{any:function(x){var t=types.type(x);if(t==="Object"){if(x.isBigNumber===true)return"BigNumber";if(x.isComplex===true)return"Complex";if(x.isFraction===true)return"Fraction";if(x.isMatrix===true)return"Matrix";if(x.isUnit===true)return"Unit";if(x.isIndex===true)return"Index";if(x.isRange===true)return"Range";if(x.isChain===true)return"Chain";if(x.isHelp===true)return"Help"}return t}});_typeof.toTex=undefined;return _typeof}exports.name="typeof";exports.factory=factory},{"../../utils/types":511}],432:[function(require,module,exports){module.exports=[require("./type"),require("./constants"),require("./expression"),require("./function"),require("./json"),require("./error")]},{"./constants":24,"./error":32,"./expression":215,"./function":330,"./json":433,"./type":448}],433:[function(require,module,exports){module.exports=[require("./reviver")]},{"./reviver":434}],434:[function(require,module,exports){"use strict";function factory(type,config,load,typed){return function reviver(key,value){var constructor=type[value&&value.mathjs];if(constructor&&typeof constructor.fromJSON==="function"){return constructor.fromJSON(value)}return value}}exports.name="reviver";exports.path="json";exports.factory=factory},{}],435:[function(require,module,exports){var Decimal=require("decimal.js");function factory(type,config,load,typed,math){var BigNumber=Decimal.clone({precision:config.precision});BigNumber.prototype.type="BigNumber";BigNumber.prototype.isBigNumber=true;BigNumber.prototype.toJSON=function(){return{mathjs:"BigNumber",value:this.toString()}};BigNumber.fromJSON=function(json){return new BigNumber(json.value)};math.on("config",function(curr,prev){if(curr.precision!==prev.precision){BigNumber.config({precision:curr.precision})}});return BigNumber}exports.name="BigNumber";exports.path="type";exports.factory=factory;exports.math=true},{"decimal.js":11}],436:[function(require,module,exports){"use strict";var deepMap=require("../../../utils/collection/deepMap");function factory(type,config,load,typed){var bignumber=typed("bignumber",{"":function(){return new type.BigNumber(0)},number:function(x){return new type.BigNumber(x+"")},string:function(x){return new type.BigNumber(x)},BigNumber:function(x){return x},Fraction:function(x){return new type.BigNumber(x.n).div(x.d)},"Array | Matrix":function(x){return deepMap(x,bignumber)}});bignumber.toTex={0:"0",1:"\\left(${args[0]}\\right)"};return bignumber}exports.name="bignumber";exports.factory=factory},{"../../../utils/collection/deepMap":500}],437:[function(require,module,exports){module.exports=[require("./BigNumber"),require("./function/bignumber")]},{"./BigNumber":435,"./function/bignumber":436}],438:[function(require,module,exports){"use strict";var deepMap=require("./../utils/collection/deepMap");function factory(type,config,load,typed){var bool=typed("bool",{"":function(){return false},boolean:function(x){return x},number:function(x){return!!x},BigNumber:function(x){return!x.isZero()},string:function(x){var lcase=x.toLowerCase();if(lcase==="true"){return true}else if(lcase==="false"){return false}var num=Number(x);if(x!=""&&!isNaN(num)){return!!num}throw new Error('Cannot convert "'+x+'" to a boolean')},"Array | Matrix":function(x){return deepMap(x,bool)}});return bool}exports.name="boolean";exports.factory=factory},{"./../utils/collection/deepMap":500}],439:[function(require,module,exports){"use strict";var format=require("../../utils/string").format;var lazy=require("../../utils/object").lazy;function factory(type,config,load,typed,math){function Chain(value){if(!(this instanceof Chain)){throw new SyntaxError("Constructor must be called with the new operator")}if(value&&value.isChain){this.value=value.value}else{this.value=value}}Chain.prototype.type="Chain";Chain.prototype.isChain=true;Chain.prototype.done=function(){return this.value};Chain.prototype.valueOf=function(){return this.value};Chain.prototype.toString=function(){return format(this.value)};function createProxy(name,fn){if(typeof fn==="function"){Chain.prototype[name]=chainify(fn)}}function createLazyProxy(name,resolver){lazy(Chain.prototype,name,function outerResolver(){var fn=resolver();if(typeof fn==="function"){return chainify(fn)}return undefined})}function chainify(fn){return function(){var args=[this.value];for(var i=0;i<arguments.length;i++){args[i+1]=arguments[i]}return new Chain(fn.apply(fn,args))}}Chain.createProxy=function(arg0,arg1){if(typeof arg0==="string"){createProxy(arg0,arg1)}else{for(var prop in arg0){if(arg0.hasOwnProperty(prop)){createProxy(prop,arg0[prop])}}}};Chain.createProxy(math);math.on("import",function(name,resolver,path){if(path===undefined){createLazyProxy(name,resolver)}});return Chain}exports.name="Chain";exports.path="type";exports.factory=factory;exports.math=true;exports.lazy=false},{"../../utils/object":509,"../../utils/string":510}],440:[function(require,module,exports){"use strict";function factory(type,config,load,typed){return typed("chain",{"":function(){return new type.Chain},any:function(value){return new type.Chain(value)}})}exports.name="chain";exports.factory=factory},{}],441:[function(require,module,exports){module.exports=[require("./Chain"),require("./function/chain")]},{"./Chain":439,"./function/chain":440}],442:[function(require,module,exports){var Complex=require("complex.js");var format=require("../../utils/number").format;var isNumber=require("../../utils/number").isNumber;function factory(type,config,load,typed,math){Complex.prototype.type="Complex";Complex.prototype.isComplex=true;Complex.prototype.toJSON=function(){return{mathjs:"Complex",re:this.re,im:this.im}};Complex.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}};Complex.prototype.format=function(options){var str="";var im=this.im;var re=this.re;var strRe=format(this.re,options);var strIm=format(this.im,options);var precision=isNumber(options)?options:options?options.precision:null;if(precision!==null){var epsilon=Math.pow(10,-precision);if(Math.abs(re/im)<epsilon){re=0}if(Math.abs(im/re)<epsilon){im=0;
}}if(im==0){str=strRe}else if(re==0){if(im==1){str="i"}else if(im==-1){str="-i"}else{str=strIm+"i"}}else{if(im>0){if(im==1){str=strRe+" + i"}else{str=strRe+" + "+strIm+"i"}}else{if(im==-1){str=strRe+" - i"}else{str=strRe+" - "+strIm.substring(1)+"i"}}}return str};Complex.fromPolar=function(args){switch(arguments.length){case 1:var arg=arguments[0];if(typeof arg==="object"){return Complex(arg)}throw new TypeError("Input has to be an object with r and phi keys.");case 2:var r=arguments[0],phi=arguments[1];if(isNumber(r)){if(phi&&phi.isUnit&&phi.hasBase("ANGLE")){phi=phi.toNumber("rad")}if(isNumber(phi)){return new Complex({r:r,phi:phi})}throw new TypeError("Phi is not a number nor an angle unit.")}else{throw new TypeError("Radius r is not a number.")}default:throw new SyntaxError("Wrong number of arguments in function fromPolar")}};Complex.prototype.valueOf=Complex.prototype.toString;Complex.fromJSON=function(json){return new Complex(json)};Complex.EPSILON=config.epsilon;math.on("config",function(curr,prev){if(curr.epsilon!==prev.epsilon){Complex.EPSILON=curr.epsilon}});return Complex}exports.name="Complex";exports.path="type";exports.factory=factory;exports.math=true},{"../../utils/number":508,"complex.js":7}],443:[function(require,module,exports){"use strict";var deepMap=require("../../../utils/collection/deepMap");function factory(type,config,load,typed){var latex=require("../../../utils/latex");var complex=typed("complex",{"":function(){return type.Complex.ZERO},number:function(x){return new type.Complex(x,0)},"number, number":function(re,im){return new type.Complex(re,im)},"BigNumber, BigNumber":function(re,im){return new type.Complex(re.toNumber(),im.toNumber())},Complex:function(x){return x.clone()},string:function(x){return type.Complex(x)},Object:function(x){if("re"in x&&"im"in x){return new type.Complex(x.re,x.im)}if("r"in x&&"phi"in x){return new type.Complex(x)}throw new Error("Expected object with either properties re and im, or properties r and phi.")},"Array | Matrix":function(x){return deepMap(x,complex)}});complex.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)+"+latex.symbols["i"]+"\\cdot\\left(${args[1]}\\right)\\right)"};return complex}exports.name="complex";exports.factory=factory},{"../../../utils/collection/deepMap":500,"../../../utils/latex":507}],444:[function(require,module,exports){module.exports=[require("./Complex"),require("./function/complex")]},{"./Complex":442,"./function/complex":443}],445:[function(require,module,exports){var Fraction=require("fraction.js");Fraction.prototype.type="Fraction";Fraction.prototype.isFraction=true;Fraction.prototype.toJSON=function(){return{mathjs:"Fraction",n:this.s*this.n,d:this.d}};Fraction.fromJSON=function(json){return new Fraction(json)};function factory(type,config,load,typed){return Fraction}exports.name="Fraction";exports.path="type";exports.factory=factory},{"fraction.js":19}],446:[function(require,module,exports){"use strict";var deepMap=require("../../../utils/collection/deepMap");function factory(type,config,load,typed){var fraction=typed("fraction",{number:function(x){if(!isFinite(x)||isNaN(x)){throw new Error(x+" cannot be represented as a fraction")}return new type.Fraction(x)},string:function(x){return new type.Fraction(x)},"number, number":function(numerator,denominator){return new type.Fraction(numerator,denominator)},BigNumber:function(x){return new type.Fraction(x.toString())},Fraction:function(x){return x},Object:function(x){return new type.Fraction(x)},"Array | Matrix":function(x){return deepMap(x,fraction)}});return fraction}exports.name="fraction";exports.factory=factory},{"../../../utils/collection/deepMap":500}],447:[function(require,module,exports){module.exports=[require("./Fraction"),require("./function/fraction")]},{"./Fraction":445,"./function/fraction":446}],448:[function(require,module,exports){module.exports=[require("./bignumber"),require("./boolean"),require("./chain"),require("./complex"),require("./fraction"),require("./matrix"),require("./number"),require("./resultset"),require("./string"),require("./unit")]},{"./bignumber":437,"./boolean":438,"./chain":441,"./complex":444,"./fraction":447,"./matrix":460,"./number":475,"./resultset":477,"./string":478,"./unit":483}],449:[function(require,module,exports){"use strict";var util=require("../../utils/index");var DimensionError=require("../../error/DimensionError");var string=util.string;var array=util.array;var object=util.object;var number=util.number;var isArray=Array.isArray;var isNumber=number.isNumber;var isInteger=number.isInteger;var isString=string.isString;var validateIndex=array.validateIndex;function factory(type,config,load,typed){var Matrix=load(require("./Matrix"));function DenseMatrix(data,datatype){if(!(this instanceof DenseMatrix))throw new SyntaxError("Constructor must be called with the new operator");if(datatype&&!isString(datatype))throw new Error("Invalid datatype: "+datatype);if(data&&data.isMatrix===true){if(data.type==="DenseMatrix"){this._data=object.clone(data._data);this._size=object.clone(data._size);this._datatype=datatype||data._datatype}else{this._data=data.toArray();this._size=data.size();this._datatype=datatype||data._datatype}}else if(data&&isArray(data.data)&&isArray(data.size)){this._data=data.data;this._size=data.size;this._datatype=datatype||data.datatype}else if(isArray(data)){this._data=preprocess(data);this._size=array.size(this._data);array.validate(this._data,this._size);this._datatype=datatype}else if(data){throw new TypeError("Unsupported type of data ("+util.types.type(data)+")")}else{this._data=[];this._size=[0];this._datatype=datatype}}DenseMatrix.prototype=new Matrix;DenseMatrix.prototype.type="DenseMatrix";DenseMatrix.prototype.isDenseMatrix=true;DenseMatrix.prototype.storage=function(){return"dense"};DenseMatrix.prototype.datatype=function(){return this._datatype};DenseMatrix.prototype.create=function(data,datatype){return new DenseMatrix(data,datatype)};DenseMatrix.prototype.subset=function(index,replacement,defaultValue){switch(arguments.length){case 1:return _get(this,index);case 2:case 3:return _set(this,index,replacement,defaultValue);default:throw new SyntaxError("Wrong number of arguments")}};DenseMatrix.prototype.get=function(index){if(!isArray(index))throw new TypeError("Array expected");if(index.length!=this._size.length)throw new DimensionError(index.length,this._size.length);for(var x=0;x<index.length;x++)validateIndex(index[x],this._size[x]);var data=this._data;for(var i=0,ii=index.length;i<ii;i++){var index_i=index[i];validateIndex(index_i,data.length);data=data[index_i]}return data};DenseMatrix.prototype.set=function(index,value,defaultValue){if(!isArray(index))throw new TypeError("Array expected");if(index.length<this._size.length)throw new DimensionError(index.length,this._size.length,"<");var i,ii,index_i;var size=index.map(function(i){return i+1});_fit(this,size,defaultValue);var data=this._data;for(i=0,ii=index.length-1;i<ii;i++){index_i=index[i];validateIndex(index_i,data.length);data=data[index_i]}index_i=index[index.length-1];validateIndex(index_i,data.length);data[index_i]=value;return this};function _get(matrix,index){if(!index||index.isIndex!==true){throw new TypeError("Invalid index")}var isScalar=index.isScalar();if(isScalar){return matrix.get(index.min())}else{var size=index.size();if(size.length!=matrix._size.length){throw new DimensionError(size.length,matrix._size.length)}var min=index.min();var max=index.max();for(var i=0,ii=matrix._size.length;i<ii;i++){validateIndex(min[i],matrix._size[i]);validateIndex(max[i],matrix._size[i])}return new DenseMatrix(_getSubmatrix(matrix._data,index,size.length,0),matrix._datatype)}}function _getSubmatrix(data,index,dims,dim){var last=dim==dims-1;var range=index.dimension(dim);if(last){return range.map(function(i){return data[i]}).valueOf()}else{return range.map(function(i){var child=data[i];return _getSubmatrix(child,index,dims,dim+1)}).valueOf()}}function _set(matrix,index,submatrix,defaultValue){if(!index||index.isIndex!==true){throw new TypeError("Invalid index")}var iSize=index.size(),isScalar=index.isScalar();var sSize;if(submatrix&&submatrix.isMatrix===true){sSize=submatrix.size();submatrix=submatrix.valueOf()}else{sSize=array.size(submatrix)}if(isScalar){if(sSize.length!==0){throw new TypeError("Scalar expected")}matrix.set(index.min(),submatrix,defaultValue)}else{if(iSize.length<matrix._size.length){throw new DimensionError(iSize.length,matrix._size.length,"<")}if(sSize.length<iSize.length){var i=0;var outer=0;while(iSize[i]===1&&sSize[i]===1){i++}while(iSize[i]===1){outer++;i++}submatrix=array.unsqueeze(submatrix,iSize.length,outer,sSize)}if(!object.deepEqual(iSize,sSize)){throw new DimensionError(iSize,sSize,">")}var size=index.max().map(function(i){return i+1});_fit(matrix,size,defaultValue);var dims=iSize.length,dim=0;_setSubmatrix(matrix._data,index,submatrix,dims,dim)}return matrix}function _setSubmatrix(data,index,submatrix,dims,dim){var last=dim==dims-1,range=index.dimension(dim);if(last){range.forEach(function(dataIndex,subIndex){validateIndex(dataIndex);data[dataIndex]=submatrix[subIndex[0]]})}else{range.forEach(function(dataIndex,subIndex){validateIndex(dataIndex);_setSubmatrix(data[dataIndex],index,submatrix[subIndex[0]],dims,dim+1)})}}DenseMatrix.prototype.resize=function(size,defaultValue,copy){if(!isArray(size))throw new TypeError("Array expected");var m=copy?this.clone():this;return _resize(m,size,defaultValue)};var _resize=function(matrix,size,defaultValue){if(size.length===0){var v=matrix._data;while(isArray(v)){v=v[0]}return v}matrix._size=size.slice(0);matrix._data=array.resize(matrix._data,matrix._size,defaultValue);return matrix};function _fit(matrix,size,defaultValue){var newSize=matrix._size.slice(0),changed=false;while(newSize.length<size.length){newSize.push(0);changed=true}for(var i=0,ii=size.length;i<ii;i++){if(size[i]>newSize[i]){newSize[i]=size[i];changed=true}}if(changed){_resize(matrix,newSize,defaultValue)}}DenseMatrix.prototype.clone=function(){var m=new DenseMatrix({data:object.clone(this._data),size:object.clone(this._size),datatype:this._datatype});return m};DenseMatrix.prototype.size=function(){return this._size.slice(0)};DenseMatrix.prototype.map=function(callback){var me=this;var recurse=function(value,index){if(isArray(value)){return value.map(function(child,i){return recurse(child,index.concat(i))})}else{return callback(value,index,me)}};return new DenseMatrix({data:recurse(this._data,[]),size:object.clone(this._size),datatype:this._datatype})};DenseMatrix.prototype.forEach=function(callback){var me=this;var recurse=function(value,index){if(isArray(value)){value.forEach(function(child,i){recurse(child,index.concat(i))})}else{callback(value,index,me)}};recurse(this._data,[])};DenseMatrix.prototype.toArray=function(){return object.clone(this._data)};DenseMatrix.prototype.valueOf=function(){return this._data};DenseMatrix.prototype.format=function(options){return string.format(this._data,options)};DenseMatrix.prototype.toString=function(){return string.format(this._data)};DenseMatrix.prototype.toJSON=function(){return{mathjs:"DenseMatrix",data:this._data,size:this._size,datatype:this._datatype}};DenseMatrix.prototype.diagonal=function(k){if(k){if(k.isBigNumber===true)k=k.toNumber();if(!isNumber(k)||!isInteger(k)){throw new TypeError("The parameter k must be an integer number")}}else{k=0}var kSuper=k>0?k:0;var kSub=k<0?-k:0;var rows=this._size[0];var columns=this._size[1];var n=Math.min(rows-kSub,columns-kSuper);var data=[];for(var i=0;i<n;i++){data[i]=this._data[i+kSub][i+kSuper]}return new DenseMatrix({data:data,size:[n],datatype:this._datatype})};DenseMatrix.diagonal=function(size,value,k,defaultValue,datatype){if(!isArray(size))throw new TypeError("Array expected, size parameter");if(size.length!==2)throw new Error("Only two dimensions matrix are supported");size=size.map(function(s){if(s&&s.isBigNumber===true){s=s.toNumber()}if(!isNumber(s)||!isInteger(s)||s<1){throw new Error("Size values must be positive integers")}return s});if(k){if(k&&k.isBigNumber===true)k=k.toNumber();if(!isNumber(k)||!isInteger(k)){throw new TypeError("The parameter k must be an integer number")}}else{k=0}if(defaultValue&&isString(datatype)){defaultValue=typed.convert(defaultValue,datatype)}var kSuper=k>0?k:0;var kSub=k<0?-k:0;var rows=size[0];var columns=size[1];var n=Math.min(rows-kSub,columns-kSuper);var _value;if(isArray(value)){if(value.length!==n){throw new Error("Invalid value array length")}_value=function(i){return value[i]}}else if(value&&value.isMatrix===true){var ms=value.size();if(ms.length!==1||ms[0]!==n){throw new Error("Invalid matrix length")}_value=function(i){return value.get([i])}}else{_value=function(){return value}}if(!defaultValue){defaultValue=_value(0)&&_value(0).isBigNumber===true?new type.BigNumber(0):0}var data=[];if(size.length>0){data=array.resize(data,size,defaultValue);for(var d=0;d<n;d++){data[d+kSub][d+kSuper]=_value(d)}}return new DenseMatrix({data:data,size:[rows,columns]})};DenseMatrix.fromJSON=function(json){return new DenseMatrix(json)};DenseMatrix.prototype.swapRows=function(i,j){if(!isNumber(i)||!isInteger(i)||!isNumber(j)||!isInteger(j)){throw new Error("Row index must be positive integers")}if(this._size.length!==2){throw new Error("Only two dimensional matrix is supported")}validateIndex(i,this._size[0]);validateIndex(j,this._size[0]);DenseMatrix._swapRows(i,j,this._data);return this};DenseMatrix._swapRows=function(i,j,data){var vi=data[i];data[i]=data[j];data[j]=vi};function preprocess(data){for(var i=0,ii=data.length;i<ii;i++){var elem=data[i];if(isArray(elem)){data[i]=preprocess(elem)}else if(elem&&elem.isMatrix===true){data[i]=preprocess(elem.valueOf())}}return data}type.Matrix._storage.dense=DenseMatrix;type.Matrix._storage["default"]=DenseMatrix;return DenseMatrix}exports.name="DenseMatrix";exports.path="type";exports.factory=factory;exports.lazy=false},{"../../error/DimensionError":30,"../../utils/index":506,"./Matrix":452}],450:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var smaller=load(require("../../function/relational/smaller"));var larger=load(require("../../function/relational/larger"));var oneOverLogPhi=1/Math.log((1+Math.sqrt(5))/2);function FibonacciHeap(){if(!(this instanceof FibonacciHeap))throw new SyntaxError("Constructor must be called with the new operator");this._minimum=null;this._size=0}FibonacciHeap.prototype.type="FibonacciHeap";FibonacciHeap.prototype.isFibonacciHeap=true;FibonacciHeap.prototype.insert=function(key,value){var node={key:key,value:value,degree:0};if(this._minimum){var minimum=this._minimum;node.left=minimum;node.right=minimum.right;minimum.right=node;node.right.left=node;if(smaller(key,minimum.key)){this._minimum=node}}else{node.left=node;node.right=node;this._minimum=node}this._size++;return node};FibonacciHeap.prototype.size=function(){return this._size};FibonacciHeap.prototype.clear=function(){this._minimum=null;this._size=0};FibonacciHeap.prototype.isEmpty=function(){return!!this._minimum};FibonacciHeap.prototype.extractMinimum=function(){var node=this._minimum;if(node===null)return node;var minimum=this._minimum;var numberOfChildren=node.degree;var x=node.child;while(numberOfChildren>0){var tempRight=x.right;x.left.right=x.right;x.right.left=x.left;x.left=minimum;x.right=minimum.right;minimum.right=x;x.right.left=x;x.parent=null;x=tempRight;numberOfChildren--}node.left.right=node.right;node.right.left=node.left;if(node==node.right){minimum=null}else{minimum=node.right;minimum=_findMinimumNode(minimum,this._size)}this._size--;this._minimum=minimum;return node};FibonacciHeap.prototype.remove=function(node){this._minimum=_decreaseKey(this._minimum,node,-1);this.extractMinimum()};var _decreaseKey=function(minimum,node,key){node.key=key;var parent=node.parent;if(parent&&smaller(node.key,parent.key)){_cut(minimum,node,parent);_cascadingCut(minimum,parent)}if(smaller(node.key,minimum.key))minimum=node;return minimum};var _cut=function(minimum,node,parent){node.left.right=node.right;node.right.left=node.left;parent.degree--;if(parent.child==node)parent.child=node.right;if(parent.degree===0)parent.child=null;node.left=minimum;node.right=minimum.right;minimum.right=node;node.right.left=node;node.parent=null;node.mark=false};var _cascadingCut=function(minimum,node){var parent=node.parent;if(!parent)return;if(!node.mark){node.mark=true}else{_cut(minimum,node,parent);_cascadingCut(parent)}};var _linkNodes=function(node,parent){node.left.right=node.right;node.right.left=node.left;node.parent=parent;if(!parent.child){parent.child=node;node.right=node;node.left=node}else{node.left=parent.child;node.right=parent.child.right;parent.child.right=node;node.right.left=node}parent.degree++;node.mark=false};var _findMinimumNode=function(minimum,size){var arraySize=Math.floor(Math.log(size)*oneOverLogPhi)+1;var array=new Array(arraySize);var numRoots=0;var x=minimum;if(x){numRoots++;x=x.right;while(x!==minimum){numRoots++;x=x.right}}var y;while(numRoots>0){var d=x.degree;var next=x.right;while(true){y=array[d];if(!y)break;if(larger(x.key,y.key)){var temp=y;y=x;x=temp}_linkNodes(y,x);array[d]=null;d++}array[d]=x;x=next;numRoots--}minimum=null;for(var i=0;i<arraySize;i++){y=array[i];if(!y)continue;if(minimum){y.left.right=y.right;y.right.left=y.left;y.left=minimum;y.right=minimum.right;minimum.right=y;y.right.left=y;if(smaller(y.key,minimum.key))minimum=y}else minimum=y}return minimum};return FibonacciHeap}exports.name="FibonacciHeap";exports.path="type";exports.factory=factory},{"../../function/relational/larger":375,"../../function/relational/smaller":377}],451:[function(require,module,exports){"use strict";var util=require("../../utils/index");var string=util.string;var object=util.object;var isArray=Array.isArray;var isString=string.isString;function factory(type,config,load){var DenseMatrix=load(require("./DenseMatrix"));var smaller=load(require("../../function/relational/smaller"));function ImmutableDenseMatrix(data,datatype){if(!(this instanceof ImmutableDenseMatrix))throw new SyntaxError("Constructor must be called with the new operator");if(datatype&&!isString(datatype))throw new Error("Invalid datatype: "+datatype);if(data&&data.isMatrix===true||isArray(data)){var matrix=new DenseMatrix(data,datatype);this._data=matrix._data;this._size=matrix._size;this._datatype=matrix._datatype;this._min=null;this._max=null}else if(data&&isArray(data.data)&&isArray(data.size)){this._data=data.data;this._size=data.size;this._datatype=data.datatype;this._min=typeof data.min!=="undefined"?data.min:null;this._max=typeof data.max!=="undefined"?data.max:null}else if(data){throw new TypeError("Unsupported type of data ("+util.types.type(data)+")")}else{this._data=[];this._size=[0];this._datatype=datatype;this._min=null;this._max=null}}ImmutableDenseMatrix.prototype=new DenseMatrix;ImmutableDenseMatrix.prototype.type="ImmutableDenseMatrix";ImmutableDenseMatrix.prototype.isImmutableDenseMatrix=true;ImmutableDenseMatrix.prototype.subset=function(index){switch(arguments.length){case 1:var m=DenseMatrix.prototype.subset.call(this,index);if(m.isMatrix){return new ImmutableDenseMatrix({data:m._data,size:m._size,datatype:m._datatype})}return m;case 2:case 3:throw new Error("Cannot invoke set subset on an Immutable Matrix instance");default:throw new SyntaxError("Wrong number of arguments")}};ImmutableDenseMatrix.prototype.set=function(){throw new Error("Cannot invoke set on an Immutable Matrix instance")};ImmutableDenseMatrix.prototype.resize=function(){throw new Error("Cannot invoke resize on an Immutable Matrix instance")};ImmutableDenseMatrix.prototype.clone=function(){var m=new ImmutableDenseMatrix({data:object.clone(this._data),size:object.clone(this._size),datatype:this._datatype});return m};ImmutableDenseMatrix.prototype.toJSON=function(){return{mathjs:"ImmutableDenseMatrix",data:this._data,size:this._size,datatype:this._datatype}};ImmutableDenseMatrix.fromJSON=function(json){return new ImmutableDenseMatrix(json)};ImmutableDenseMatrix.prototype.swapRows=function(){throw new Error("Cannot invoke swapRows on an Immutable Matrix instance")};ImmutableDenseMatrix.prototype.min=function(){if(this._min===null){var m=null;this.forEach(function(v){if(m===null||smaller(v,m))m=v});this._min=m!==null?m:undefined}return this._min};ImmutableDenseMatrix.prototype.max=function(){if(this._max===null){var m=null;this.forEach(function(v){if(m===null||smaller(m,v))m=v});this._max=m!==null?m:undefined}return this._max};return ImmutableDenseMatrix}exports.name="ImmutableDenseMatrix";exports.path="type";exports.factory=factory},{"../../function/relational/smaller":377,"../../utils/index":506,"./DenseMatrix":449}],452:[function(require,module,exports){"use strict";var util=require("../../utils/index");var string=util.string;var isString=string.isString;function factory(type,config,load,typed){function Matrix(){if(!(this instanceof Matrix)){throw new SyntaxError("Constructor must be called with the new operator")}}Matrix.prototype.type="Matrix";Matrix.prototype.isMatrix=true;Matrix.storage=function(format){if(!isString(format)){throw new TypeError("format must be a string value")}var constructor=Matrix._storage[format];if(!constructor){throw new SyntaxError("Unsupported matrix storage format: "+format)}return constructor};Matrix._storage={};Matrix.prototype.storage=function(){throw new Error("Cannot invoke storage on a Matrix interface")};Matrix.prototype.datatype=function(){throw new Error("Cannot invoke datatype on a Matrix interface")};Matrix.prototype.create=function(data,datatype){throw new Error("Cannot invoke create on a Matrix interface")};Matrix.prototype.subset=function(index,replacement,defaultValue){throw new Error("Cannot invoke subset on a Matrix interface")};Matrix.prototype.get=function(index){throw new Error("Cannot invoke get on a Matrix interface")};Matrix.prototype.set=function(index,value,defaultValue){throw new Error("Cannot invoke set on a Matrix interface")};Matrix.prototype.resize=function(size,defaultValue){throw new Error("Cannot invoke resize on a Matrix interface")};Matrix.prototype.clone=function(){throw new Error("Cannot invoke clone on a Matrix interface")};Matrix.prototype.size=function(){throw new Error("Cannot invoke size on a Matrix interface")};Matrix.prototype.map=function(callback,skipZeros){throw new Error("Cannot invoke map on a Matrix interface")};Matrix.prototype.forEach=function(callback){throw new Error("Cannot invoke forEach on a Matrix interface")};Matrix.prototype.toArray=function(){throw new Error("Cannot invoke toArray on a Matrix interface")};Matrix.prototype.valueOf=function(){throw new Error("Cannot invoke valueOf on a Matrix interface")};Matrix.prototype.format=function(options){throw new Error("Cannot invoke format on a Matrix interface")};Matrix.prototype.toString=function(){throw new Error("Cannot invoke toString on a Matrix interface")};return Matrix}exports.name="Matrix";exports.path="type";exports.factory=factory},{"../../utils/index":506}],453:[function(require,module,exports){"use strict";var clone=require("../../utils/object").clone;var isInteger=require("../../utils/number").isInteger;function factory(type){function Index(ranges){if(!(this instanceof Index)){throw new SyntaxError("Constructor must be called with the new operator")}this._dimensions=[];this._isScalar=true;for(var i=0,ii=arguments.length;i<ii;i++){var arg=arguments[i];if(arg&&arg.isRange===true){this._dimensions.push(arg);this._isScalar=false}else if(arg&&(Array.isArray(arg)||arg.isMatrix===true)){var m=_createImmutableMatrix(arg.valueOf());this._dimensions.push(m);var size=m.size();if(size.length!==1||size[0]!==1){this._isScalar=false}}else if(typeof arg==="number"){this._dimensions.push(_createImmutableMatrix([arg]))}else if(typeof arg==="string"){this._dimensions.push(arg)}else{throw new TypeError("Dimension must be an Array, Matrix, number, string, or Range")}}}Index.prototype.type="Index";Index.prototype.isIndex=true;function _createImmutableMatrix(arg){for(var i=0,l=arg.length;i<l;i++){if(typeof arg[i]!=="number"||!isInteger(arg[i])){throw new TypeError("Index parameters must be positive integer numbers")}}return new type.ImmutableDenseMatrix(arg)}Index.prototype.clone=function(){var index=new Index;index._dimensions=clone(this._dimensions);index._isScalar=this._isScalar;return index};Index.create=function(ranges){var index=new Index;Index.apply(index,ranges);return index};Index.prototype.size=function(){var size=[];for(var i=0,ii=this._dimensions.length;i<ii;i++){var d=this._dimensions[i];size[i]=typeof d==="string"?1:d.size()[0]}return size};Index.prototype.max=function(){var values=[];for(var i=0,ii=this._dimensions.length;i<ii;i++){var range=this._dimensions[i];values[i]=typeof range==="string"?range:range.max()}return values};Index.prototype.min=function(){var values=[];for(var i=0,ii=this._dimensions.length;i<ii;i++){var range=this._dimensions[i];values[i]=typeof range==="string"?range:range.min()}return values};Index.prototype.forEach=function(callback){for(var i=0,ii=this._dimensions.length;i<ii;i++){callback(this._dimensions[i],i,this)}};Index.prototype.dimension=function(dim){return this._dimensions[dim]||null};Index.prototype.isObjectProperty=function(){return this._dimensions.length===1&&typeof this._dimensions[0]==="string"};Index.prototype.getObjectProperty=function(){return this.isObjectProperty()?this._dimensions[0]:null};Index.prototype.isScalar=function(){return this._isScalar};Index.prototype.toArray=function(){var array=[];for(var i=0,ii=this._dimensions.length;i<ii;i++){var dimension=this._dimensions[i];array.push(typeof dimension==="string"?dimension:dimension.toArray())}return array};Index.prototype.valueOf=Index.prototype.toArray;Index.prototype.toString=function(){var strings=[];for(var i=0,ii=this._dimensions.length;i<ii;i++){var dimension=this._dimensions[i];if(typeof dimension==="string"){strings.push(JSON.stringify(dimension))}else{strings.push(dimension.toString())}}return"["+strings.join(", ")+"]"};Index.prototype.toJSON=function(){return{mathjs:"Index",dimensions:this._dimensions}};Index.fromJSON=function(json){return Index.create(json.dimensions)};return Index}exports.name="Index";exports.path="type";exports.factory=factory},{"../../utils/number":508,"../../utils/object":509}],454:[function(require,module,exports){"use strict";var number=require("../../utils/number");function factory(type,config,load,typed){function Range(start,end,step){if(!(this instanceof Range)){throw new SyntaxError("Constructor must be called with the new operator")}if(start!=null){if(start.isBigNumber===true)start=start.toNumber();else if(typeof start!=="number")throw new TypeError("Parameter start must be a number")}if(end!=null){if(end.isBigNumber===true)end=end.toNumber();else if(typeof end!=="number")throw new TypeError("Parameter end must be a number")}if(step!=null){if(step.isBigNumber===true)step=step.toNumber();else if(typeof step!=="number")throw new TypeError("Parameter step must be a number")}this.start=start!=null?parseFloat(start):0;this.end=end!=null?parseFloat(end):0;this.step=step!=null?parseFloat(step):1}Range.prototype.type="Range";Range.prototype.isRange=true;Range.parse=function(str){if(typeof str!=="string"){return null}var args=str.split(":");var nums=args.map(function(arg){return parseFloat(arg)});var invalid=nums.some(function(num){return isNaN(num)});if(invalid){return null}switch(nums.length){case 2:return new Range(nums[0],nums[1]);case 3:return new Range(nums[0],nums[2],nums[1]);default:return null}};Range.prototype.clone=function(){return new Range(this.start,this.end,this.step)};Range.prototype.size=function(){var len=0,start=this.start,step=this.step,end=this.end,diff=end-start;if(number.sign(step)==number.sign(diff)){len=Math.ceil(diff/step)}else if(diff==0){len=0}if(isNaN(len)){len=0}return[len]};Range.prototype.min=function(){var size=this.size()[0];if(size>0){if(this.step>0){return this.start}else{return this.start+(size-1)*this.step}}else{return undefined}};Range.prototype.max=function(){var size=this.size()[0];if(size>0){if(this.step>0){return this.start+(size-1)*this.step}else{return this.start}}else{return undefined}};Range.prototype.forEach=function(callback){var x=this.start;var step=this.step;var end=this.end;var i=0;if(step>0){while(x<end){callback(x,[i],this);x+=step;i++}}else if(step<0){while(x>end){callback(x,[i],this);x+=step;i++}}};Range.prototype.map=function(callback){var array=[];this.forEach(function(value,index,obj){array[index[0]]=callback(value,index,obj)});return array};Range.prototype.toArray=function(){var array=[];this.forEach(function(value,index){array[index[0]]=value});return array};Range.prototype.valueOf=function(){return this.toArray()};Range.prototype.format=function(options){var str=number.format(this.start,options);if(this.step!=1){str+=":"+number.format(this.step,options)}str+=":"+number.format(this.end,options);return str};Range.prototype.toString=function(){return this.format()};Range.prototype.toJSON=function(){return{mathjs:"Range",start:this.start,end:this.end,step:this.step}};Range.fromJSON=function(json){return new Range(json.start,json.end,json.step)};return Range}exports.name="Range";exports.path="type";exports.factory=factory},{"../../utils/number":508}],455:[function(require,module,exports){"use strict";function factory(type,config,load){var add=load(require("../../function/arithmetic/add"));var equalScalar=load(require("../../function/relational/equalScalar"));function Spa(){if(!(this instanceof Spa))throw new SyntaxError("Constructor must be called with the new operator");this._values=[];this._heap=new type.FibonacciHeap}Spa.prototype.type="Spa";Spa.prototype.isSpa=true;Spa.prototype.set=function(i,v){if(!this._values[i]){var node=this._heap.insert(i,v);this._values[i]=node}else{this._values[i].value=v}};Spa.prototype.get=function(i){var node=this._values[i];if(node)return node.value;return 0};Spa.prototype.accumulate=function(i,v){var node=this._values[i];if(!node){node=this._heap.insert(i,v);this._values[i]=node}else{node.value=add(node.value,v)}};Spa.prototype.forEach=function(from,to,callback){var heap=this._heap;var values=this._values;var nodes=[];var node=heap.extractMinimum();if(node)nodes.push(node);while(node&&node.key<=to){if(node.key>=from){if(!equalScalar(node.value,0)){callback(node.key,node.value,this)}}node=heap.extractMinimum();if(node)nodes.push(node)}for(var i=0;i<nodes.length;i++){var n=nodes[i];node=heap.insert(n.key,n.value);values[node.key]=node}};Spa.prototype.swap=function(i,j){var nodei=this._values[i];var nodej=this._values[j];if(!nodei&&nodej){nodei=this._heap.insert(i,nodej.value);this._heap.remove(nodej);this._values[i]=nodei;this._values[j]=undefined}else if(nodei&&!nodej){nodej=this._heap.insert(j,nodei.value);this._heap.remove(nodei);this._values[j]=nodej;this._values[i]=undefined}else if(nodei&&nodej){var v=nodei.value;nodei.value=nodej.value;nodej.value=v}};return Spa}exports.name="Spa";exports.path="type";exports.factory=factory},{"../../function/arithmetic/add":276,"../../function/relational/equalScalar":373}],456:[function(require,module,exports){"use strict";var util=require("../../utils/index");var DimensionError=require("../../error/DimensionError");var array=util.array;var object=util.object;var string=util.string;var number=util.number;var isArray=Array.isArray;var isNumber=number.isNumber;var isInteger=number.isInteger;var isString=string.isString;var validateIndex=array.validateIndex;function factory(type,config,load,typed){var Matrix=load(require("./Matrix"));var equalScalar=load(require("../../function/relational/equalScalar"));function SparseMatrix(data,datatype){if(!(this instanceof SparseMatrix))throw new SyntaxError("Constructor must be called with the new operator");if(datatype&&!isString(datatype))throw new Error("Invalid datatype: "+datatype);
if(data&&data.isMatrix===true){_createFromMatrix(this,data,datatype)}else if(data&&isArray(data.index)&&isArray(data.ptr)&&isArray(data.size)){this._values=data.values;this._index=data.index;this._ptr=data.ptr;this._size=data.size;this._datatype=datatype||data.datatype}else if(isArray(data)){_createFromArray(this,data,datatype)}else if(data){throw new TypeError("Unsupported type of data ("+util.types.type(data)+")")}else{this._values=[];this._index=[];this._ptr=[0];this._size=[0,0];this._datatype=datatype}}var _createFromMatrix=function(matrix,source,datatype){if(source.type==="SparseMatrix"){matrix._values=source._values?object.clone(source._values):undefined;matrix._index=object.clone(source._index);matrix._ptr=object.clone(source._ptr);matrix._size=object.clone(source._size);matrix._datatype=datatype||source._datatype}else{_createFromArray(matrix,source.valueOf(),datatype||source._datatype)}};var _createFromArray=function(matrix,data,datatype){matrix._values=[];matrix._index=[];matrix._ptr=[];matrix._datatype=datatype;var rows=data.length;var columns=0;var eq=equalScalar;var zero=0;if(isString(datatype)){eq=typed.find(equalScalar,[datatype,datatype])||equalScalar;zero=typed.convert(0,datatype)}if(rows>0){var j=0;do{matrix._ptr.push(matrix._index.length);for(var i=0;i<rows;i++){var row=data[i];if(isArray(row)){if(j===0&&columns<row.length)columns=row.length;if(j<row.length){var v=row[j];if(!eq(v,zero)){matrix._values.push(v);matrix._index.push(i)}}}else{if(j===0&&columns<1)columns=1;if(!eq(row,zero)){matrix._values.push(row);matrix._index.push(i)}}}j++}while(j<columns)}matrix._ptr.push(matrix._index.length);matrix._size=[rows,columns]};SparseMatrix.prototype=new Matrix;SparseMatrix.prototype.type="SparseMatrix";SparseMatrix.prototype.isSparseMatrix=true;SparseMatrix.prototype.storage=function(){return"sparse"};SparseMatrix.prototype.datatype=function(){return this._datatype};SparseMatrix.prototype.create=function(data,datatype){return new SparseMatrix(data,datatype)};SparseMatrix.prototype.density=function(){var rows=this._size[0];var columns=this._size[1];return rows!==0&&columns!==0?this._index.length/(rows*columns):0};SparseMatrix.prototype.subset=function(index,replacement,defaultValue){if(!this._values)throw new Error("Cannot invoke subset on a Pattern only matrix");switch(arguments.length){case 1:return _getsubset(this,index);case 2:case 3:return _setsubset(this,index,replacement,defaultValue);default:throw new SyntaxError("Wrong number of arguments")}};var _getsubset=function(matrix,idx){if(!idx||idx.isIndex!==true){throw new TypeError("Invalid index")}var isScalar=idx.isScalar();if(isScalar){return matrix.get(idx.min())}var size=idx.size();if(size.length!=matrix._size.length){throw new DimensionError(size.length,matrix._size.length)}var i,ii,k,kk;var min=idx.min();var max=idx.max();for(i=0,ii=matrix._size.length;i<ii;i++){validateIndex(min[i],matrix._size[i]);validateIndex(max[i],matrix._size[i])}var mvalues=matrix._values;var mindex=matrix._index;var mptr=matrix._ptr;var rows=idx.dimension(0);var columns=idx.dimension(1);var w=[];var pv=[];rows.forEach(function(i,r){pv[i]=r[0];w[i]=true});var values=mvalues?[]:undefined;var index=[];var ptr=[];columns.forEach(function(j){ptr.push(index.length);for(k=mptr[j],kk=mptr[j+1];k<kk;k++){i=mindex[k];if(w[i]===true){index.push(pv[i]);if(values)values.push(mvalues[k])}}});ptr.push(index.length);return new SparseMatrix({values:values,index:index,ptr:ptr,size:size,datatype:matrix._datatype})};var _setsubset=function(matrix,index,submatrix,defaultValue){if(!index||index.isIndex!==true){throw new TypeError("Invalid index")}var iSize=index.size(),isScalar=index.isScalar();var sSize;if(submatrix&&submatrix.isMatrix===true){sSize=submatrix.size();submatrix=submatrix.toArray()}else{sSize=array.size(submatrix)}if(isScalar){if(sSize.length!==0){throw new TypeError("Scalar expected")}matrix.set(index.min(),submatrix,defaultValue)}else{if(iSize.length!==1&&iSize.length!==2){throw new DimensionError(iSize.length,matrix._size.length,"<")}if(sSize.length<iSize.length){var i=0;var outer=0;while(iSize[i]===1&&sSize[i]===1){i++}while(iSize[i]===1){outer++;i++}submatrix=array.unsqueeze(submatrix,iSize.length,outer,sSize)}if(!object.deepEqual(iSize,sSize)){throw new DimensionError(iSize,sSize,">")}var x0=index.min()[0];var y0=index.min()[1];var m=sSize[0];var n=sSize[1];for(var x=0;x<m;x++){for(var y=0;y<n;y++){var v=submatrix[x][y];matrix.set([x+x0,y+y0],v,defaultValue)}}}return matrix};SparseMatrix.prototype.get=function(index){if(!isArray(index))throw new TypeError("Array expected");if(index.length!=this._size.length)throw new DimensionError(index.length,this._size.length);if(!this._values)throw new Error("Cannot invoke get on a Pattern only matrix");var i=index[0];var j=index[1];validateIndex(i,this._size[0]);validateIndex(j,this._size[1]);var k=_getValueIndex(i,this._ptr[j],this._ptr[j+1],this._index);if(k<this._ptr[j+1]&&this._index[k]===i)return this._values[k];return 0};SparseMatrix.prototype.set=function(index,v,defaultValue){if(!isArray(index))throw new TypeError("Array expected");if(index.length!=this._size.length)throw new DimensionError(index.length,this._size.length);if(!this._values)throw new Error("Cannot invoke set on a Pattern only matrix");var i=index[0];var j=index[1];var rows=this._size[0];var columns=this._size[1];var eq=equalScalar;var zero=0;if(isString(this._datatype)){eq=typed.find(equalScalar,[this._datatype,this._datatype])||equalScalar;zero=typed.convert(0,this._datatype)}if(i>rows-1||j>columns-1){_resize(this,Math.max(i+1,rows),Math.max(j+1,columns),defaultValue);rows=this._size[0];columns=this._size[1]}validateIndex(i,rows);validateIndex(j,columns);var k=_getValueIndex(i,this._ptr[j],this._ptr[j+1],this._index);if(k<this._ptr[j+1]&&this._index[k]===i){if(!eq(v,zero)){this._values[k]=v}else{_remove(k,j,this._values,this._index,this._ptr)}}else{_insert(k,i,j,v,this._values,this._index,this._ptr)}return this};var _getValueIndex=function(i,top,bottom,index){if(bottom-top===0)return bottom;for(var r=top;r<bottom;r++){if(index[r]===i)return r}return top};var _remove=function(k,j,values,index,ptr){values.splice(k,1);index.splice(k,1);for(var x=j+1;x<ptr.length;x++)ptr[x]--};var _insert=function(k,i,j,v,values,index,ptr){values.splice(k,0,v);index.splice(k,0,i);for(var x=j+1;x<ptr.length;x++)ptr[x]++};SparseMatrix.prototype.resize=function(size,defaultValue,copy){if(!isArray(size))throw new TypeError("Array expected");if(size.length!==2)throw new Error("Only two dimensions matrix are supported");size.forEach(function(value){if(!number.isNumber(value)||!number.isInteger(value)||value<0){throw new TypeError("Invalid size, must contain positive integers "+"(size: "+string.format(size)+")")}});var m=copy?this.clone():this;return _resize(m,size[0],size[1],defaultValue)};var _resize=function(matrix,rows,columns,defaultValue){var value=defaultValue||0;var eq=equalScalar;var zero=0;if(isString(matrix._datatype)){eq=typed.find(equalScalar,[matrix._datatype,matrix._datatype])||equalScalar;zero=typed.convert(0,matrix._datatype);value=typed.convert(value,matrix._datatype)}var ins=!eq(value,zero);var r=matrix._size[0];var c=matrix._size[1];var i,j,k;if(columns>c){for(j=c;j<columns;j++){matrix._ptr[j]=matrix._values.length;if(ins){for(i=0;i<r;i++){matrix._values.push(value);matrix._index.push(i)}}}matrix._ptr[columns]=matrix._values.length}else if(columns<c){matrix._ptr.splice(columns+1,c-columns);matrix._values.splice(matrix._ptr[columns],matrix._values.length);matrix._index.splice(matrix._ptr[columns],matrix._index.length)}c=columns;if(rows>r){if(ins){var n=0;for(j=0;j<c;j++){matrix._ptr[j]=matrix._ptr[j]+n;k=matrix._ptr[j+1]+n;var p=0;for(i=r;i<rows;i++,p++){matrix._values.splice(k+p,0,value);matrix._index.splice(k+p,0,i);n++}}matrix._ptr[c]=matrix._values.length}}else if(rows<r){var d=0;for(j=0;j<c;j++){matrix._ptr[j]=matrix._ptr[j]-d;var k0=matrix._ptr[j];var k1=matrix._ptr[j+1]-d;for(k=k0;k<k1;k++){i=matrix._index[k];if(i>rows-1){matrix._values.splice(k,1);matrix._index.splice(k,1);d++}}}matrix._ptr[j]=matrix._values.length}matrix._size[0]=rows;matrix._size[1]=columns;return matrix};SparseMatrix.prototype.clone=function(){var m=new SparseMatrix({values:this._values?object.clone(this._values):undefined,index:object.clone(this._index),ptr:object.clone(this._ptr),size:object.clone(this._size),datatype:this._datatype});return m};SparseMatrix.prototype.size=function(){return this._size.slice(0)};SparseMatrix.prototype.map=function(callback,skipZeros){if(!this._values)throw new Error("Cannot invoke map on a Pattern only matrix");var me=this;var rows=this._size[0];var columns=this._size[1];var invoke=function(v,i,j){return callback(v,[i,j],me)};return _map(this,0,rows-1,0,columns-1,invoke,skipZeros)};var _map=function(matrix,minRow,maxRow,minColumn,maxColumn,callback,skipZeros){var values=[];var index=[];var ptr=[];var eq=equalScalar;var zero=0;if(isString(matrix._datatype)){eq=typed.find(equalScalar,[matrix._datatype,matrix._datatype])||equalScalar;zero=typed.convert(0,matrix._datatype)}var invoke=function(v,x,y){v=callback(v,x,y);if(!eq(v,zero)){values.push(v);index.push(x)}};for(var j=minColumn;j<=maxColumn;j++){ptr.push(values.length);var k0=matrix._ptr[j];var k1=matrix._ptr[j+1];var p=minRow;for(var k=k0;k<k1;k++){var i=matrix._index[k];if(i>=minRow&&i<=maxRow){if(!skipZeros){for(var x=p;x<i;x++)invoke(0,x-minRow,j-minColumn)}invoke(matrix._values[k],i-minRow,j-minColumn)}p=i+1}if(!skipZeros){for(var y=p;y<=maxRow;y++)invoke(0,y-minRow,j-minColumn)}}ptr.push(values.length);return new SparseMatrix({values:values,index:index,ptr:ptr,size:[maxRow-minRow+1,maxColumn-minColumn+1]})};SparseMatrix.prototype.forEach=function(callback,skipZeros){if(!this._values)throw new Error("Cannot invoke forEach on a Pattern only matrix");var me=this;var rows=this._size[0];var columns=this._size[1];for(var j=0;j<columns;j++){var k0=this._ptr[j];var k1=this._ptr[j+1];var p=0;for(var k=k0;k<k1;k++){var i=this._index[k];if(!skipZeros){for(var x=p;x<i;x++)callback(0,[x,j],me)}callback(this._values[k],[i,j],me);p=i+1}if(!skipZeros){for(var y=p;y<rows;y++)callback(0,[y,j],me)}}};SparseMatrix.prototype.toArray=function(){return _toArray(this._values,this._index,this._ptr,this._size,true)};SparseMatrix.prototype.valueOf=function(){return _toArray(this._values,this._index,this._ptr,this._size,false)};var _toArray=function(values,index,ptr,size,copy){var rows=size[0];var columns=size[1];var a=[];var i,j;for(i=0;i<rows;i++){a[i]=[];for(j=0;j<columns;j++)a[i][j]=0}for(j=0;j<columns;j++){var k0=ptr[j];var k1=ptr[j+1];for(var k=k0;k<k1;k++){i=index[k];a[i][j]=values?copy?object.clone(values[k]):values[k]:1}}return a};SparseMatrix.prototype.format=function(options){var rows=this._size[0];var columns=this._size[1];var density=this.density();var str="Sparse Matrix ["+string.format(rows,options)+" x "+string.format(columns,options)+"] density: "+string.format(density,options)+"\n";for(var j=0;j<columns;j++){var k0=this._ptr[j];var k1=this._ptr[j+1];for(var k=k0;k<k1;k++){var i=this._index[k];str+="\n ("+string.format(i,options)+", "+string.format(j,options)+") ==> "+(this._values?string.format(this._values[k],options):"X")}}return str};SparseMatrix.prototype.toString=function(){return string.format(this.toArray())};SparseMatrix.prototype.toJSON=function(){return{mathjs:"SparseMatrix",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}};SparseMatrix.prototype.diagonal=function(k){if(k){if(k.isBigNumber===true)k=k.toNumber();if(!isNumber(k)||!isInteger(k)){throw new TypeError("The parameter k must be an integer number")}}else{k=0}var kSuper=k>0?k:0;var kSub=k<0?-k:0;var rows=this._size[0];var columns=this._size[1];var n=Math.min(rows-kSub,columns-kSuper);var values=[];var index=[];var ptr=[];ptr[0]=0;for(var j=kSuper;j<columns&&values.length<n;j++){var k0=this._ptr[j];var k1=this._ptr[j+1];for(var x=k0;x<k1;x++){var i=this._index[x];if(i===j-kSuper+kSub){values.push(this._values[x]);index[values.length-1]=i-kSub;break}}}ptr.push(values.length);return new SparseMatrix({values:values,index:index,ptr:ptr,size:[n,1]})};SparseMatrix.fromJSON=function(json){return new SparseMatrix(json)};SparseMatrix.diagonal=function(size,value,k,defaultValue,datatype){if(!isArray(size))throw new TypeError("Array expected, size parameter");if(size.length!==2)throw new Error("Only two dimensions matrix are supported");size=size.map(function(s){if(s&&s.isBigNumber===true){s=s.toNumber()}if(!isNumber(s)||!isInteger(s)||s<1){throw new Error("Size values must be positive integers")}return s});if(k){if(k.isBigNumber===true)k=k.toNumber();if(!isNumber(k)||!isInteger(k)){throw new TypeError("The parameter k must be an integer number")}}else{k=0}var eq=equalScalar;var zero=0;if(isString(datatype)){eq=typed.find(equalScalar,[datatype,datatype])||equalScalar;zero=typed.convert(0,datatype)}var kSuper=k>0?k:0;var kSub=k<0?-k:0;var rows=size[0];var columns=size[1];var n=Math.min(rows-kSub,columns-kSuper);var _value;if(isArray(value)){if(value.length!==n){throw new Error("Invalid value array length")}_value=function(i){return value[i]}}else if(value&&value.isMatrix===true){var ms=value.size();if(ms.length!==1||ms[0]!==n){throw new Error("Invalid matrix length")}_value=function(i){return value.get([i])}}else{_value=function(){return value}}var values=[];var index=[];var ptr=[];for(var j=0;j<columns;j++){ptr.push(values.length);var i=j-kSuper;if(i>=0&&i<n){var v=_value(i);if(!eq(v,zero)){index.push(i+kSub);values.push(v)}}}ptr.push(values.length);return new SparseMatrix({values:values,index:index,ptr:ptr,size:[rows,columns]})};SparseMatrix.prototype.swapRows=function(i,j){if(!isNumber(i)||!isInteger(i)||!isNumber(j)||!isInteger(j)){throw new Error("Row index must be positive integers")}if(this._size.length!==2){throw new Error("Only two dimensional matrix is supported")}validateIndex(i,this._size[0]);validateIndex(j,this._size[0]);SparseMatrix._swapRows(i,j,this._size[1],this._values,this._index,this._ptr);return this};SparseMatrix._forEachRow=function(j,values,index,ptr,callback){var k0=ptr[j];var k1=ptr[j+1];for(var k=k0;k<k1;k++){callback(index[k],values[k])}};SparseMatrix._swapRows=function(x,y,columns,values,index,ptr){for(var j=0;j<columns;j++){var k0=ptr[j];var k1=ptr[j+1];var kx=_getValueIndex(x,k0,k1,index);var ky=_getValueIndex(y,k0,k1,index);if(kx<k1&&ky<k1&&index[kx]===x&&index[ky]===y){if(values){var v=values[kx];values[kx]=values[ky];values[ky]=v}continue}if(kx<k1&&index[kx]===x&&(ky>=k1||index[ky]!==y)){var vx=values?values[kx]:undefined;index.splice(ky,0,y);if(values)values.splice(ky,0,vx);index.splice(ky<=kx?kx+1:kx,1);if(values)values.splice(ky<=kx?kx+1:kx,1);continue}if(ky<k1&&index[ky]===y&&(kx>=k1||index[kx]!==x)){var vy=values?values[ky]:undefined;index.splice(kx,0,x);if(values)values.splice(kx,0,vy);index.splice(kx<=ky?ky+1:ky,1);if(values)values.splice(kx<=ky?ky+1:ky,1)}}};type.Matrix._storage.sparse=SparseMatrix;return SparseMatrix}exports.name="SparseMatrix";exports.path="type";exports.factory=factory;exports.lazy=false},{"../../error/DimensionError":30,"../../function/relational/equalScalar":373,"../../utils/index":506,"./Matrix":452}],457:[function(require,module,exports){"use strict";function factory(type,config,load,typed){return typed("index",{"...number | string | BigNumber | Range | Array | Matrix":function(args){var ranges=args.map(function(arg){if(arg&&arg.isBigNumber===true){return arg.toNumber()}else if(arg&&(Array.isArray(arg)||arg.isMatrix===true)){return arg.map(function(elem){return elem&&elem.isBigNumber===true?elem.toNumber():elem})}else{return arg}});var res=new type.Index;type.Index.apply(res,ranges);return res}})}exports.name="index";exports.factory=factory},{}],458:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var matrix=typed("matrix",{"":function(){return _create([])},string:function(format){return _create([],format)},"string, string":function(format,datatype){return _create([],format,datatype)},Array:function(data){return _create(data)},Matrix:function(data){return _create(data,data.storage())},"Array | Matrix, string":_create,"Array | Matrix, string, string":_create});matrix.toTex={0:"\\begin{bmatrix}\\end{bmatrix}",1:"\\left(${args[0]}\\right)",2:"\\left(${args[0]}\\right)"};return matrix;function _create(data,format,datatype){var M=type.Matrix.storage(format||"default");return new M(data,datatype)}}exports.name="matrix";exports.factory=factory},{}],459:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var SparseMatrix=type.SparseMatrix;var sparse=typed("sparse",{"":function(){return new SparseMatrix([])},string:function(datatype){return new SparseMatrix([],datatype)},"Array | Matrix":function(data){return new SparseMatrix(data)},"Array | Matrix, string":function(data,datatype){return new SparseMatrix(data,datatype)}});sparse.toTex={0:"\\begin{bsparse}\\end{bsparse}",1:"\\left(${args[0]}\\right)"};return sparse}exports.name="sparse";exports.factory=factory},{}],460:[function(require,module,exports){module.exports=[require("./Matrix"),require("./DenseMatrix"),require("./SparseMatrix"),require("./Spa"),require("./FibonacciHeap"),require("./ImmutableDenseMatrix"),require("./MatrixIndex"),require("./Range"),require("./function/index"),require("./function/matrix"),require("./function/sparse")]},{"./DenseMatrix":449,"./FibonacciHeap":450,"./ImmutableDenseMatrix":451,"./Matrix":452,"./MatrixIndex":453,"./Range":454,"./Spa":455,"./SparseMatrix":456,"./function/index":457,"./function/matrix":458,"./function/sparse":459}],461:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm01=function(denseMatrix,sparseMatrix,callback,inverse){var adata=denseMatrix._data;var asize=denseMatrix._size;var adt=denseMatrix._datatype;var bvalues=sparseMatrix._values;var bindex=sparseMatrix._index;var bptr=sparseMatrix._ptr;var bsize=sparseMatrix._size;var bdt=sparseMatrix._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");if(!bvalues)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var rows=asize[0];var columns=asize[1];var dt=typeof adt==="string"&&adt===bdt?adt:undefined;var cf=dt?typed.find(callback,[dt,dt]):callback;var i,j;var cdata=[];for(i=0;i<rows;i++)cdata[i]=[];var x=[];var w=[];for(j=0;j<columns;j++){var mark=j+1;for(var k0=bptr[j],k1=bptr[j+1],k=k0;k<k1;k++){i=bindex[k];x[i]=inverse?cf(bvalues[k],adata[i][j]):cf(adata[i][j],bvalues[k]);w[i]=mark}for(i=0;i<rows;i++){if(w[i]===mark){cdata[i][j]=x[i]}else{cdata[i][j]=adata[i][j]}}}return new DenseMatrix({data:cdata,size:[rows,columns],datatype:dt})};return algorithm01}exports.name="algorithm01";exports.factory=factory},{"../../../error/DimensionError":30}],462:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm02=function(denseMatrix,sparseMatrix,callback,inverse){var adata=denseMatrix._data;var asize=denseMatrix._size;var adt=denseMatrix._datatype;var bvalues=sparseMatrix._values;var bindex=sparseMatrix._index;var bptr=sparseMatrix._ptr;var bsize=sparseMatrix._size;var bdt=sparseMatrix._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");if(!bvalues)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var cvalues=[];var cindex=[];var cptr=[];for(var j=0;j<columns;j++){cptr[j]=cindex.length;for(var k0=bptr[j],k1=bptr[j+1],k=k0;k<k1;k++){var i=bindex[k];var cij=inverse?cf(bvalues[k],adata[i][j]):cf(adata[i][j],bvalues[k]);if(!eq(cij,zero)){cindex.push(i);cvalues.push(cij)}}}cptr[columns]=cindex.length;return new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt})};return algorithm02}exports.name="algorithm02";exports.factory=factory},{"../../../error/DimensionError":30,"../../../function/relational/equalScalar":373}],463:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm03=function(denseMatrix,sparseMatrix,callback,inverse){var adata=denseMatrix._data;var asize=denseMatrix._size;var adt=denseMatrix._datatype;var bvalues=sparseMatrix._values;var bindex=sparseMatrix._index;var bptr=sparseMatrix._ptr;var bsize=sparseMatrix._size;var bdt=sparseMatrix._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");if(!bvalues)throw new Error("Cannot perform operation on Dense Matrix and Pattern Sparse Matrix");var rows=asize[0];var columns=asize[1];var dt;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var cdata=[];for(var z=0;z<rows;z++){cdata[z]=[]}var x=[];var w=[];for(var j=0;j<columns;j++){var mark=j+1;for(var k0=bptr[j],k1=bptr[j+1],k=k0;k<k1;k++){var i=bindex[k];x[i]=inverse?cf(bvalues[k],adata[i][j]):cf(adata[i][j],bvalues[k]);w[i]=mark}for(var y=0;y<rows;y++){if(w[y]===mark){cdata[y][j]=x[y]}else{cdata[y][j]=inverse?cf(zero,adata[y][j]):cf(adata[y][j],zero)}}}return new DenseMatrix({data:cdata,size:[rows,columns],datatype:dt})};return algorithm03}exports.name="algorithm03";exports.factory=factory},{"../../../error/DimensionError":30}],464:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm04=function(a,b,callback){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var adt=a._datatype;var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var bsize=b._size;var bdt=b._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var cvalues=avalues&&bvalues?[]:undefined;var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt});var xa=avalues&&bvalues?[]:undefined;var xb=avalues&&bvalues?[]:undefined;var wa=[];var wb=[];var i,j,k,k0,k1;for(j=0;j<columns;j++){cptr[j]=cindex.length;var mark=j+1;for(k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){i=aindex[k];cindex.push(i);wa[i]=mark;if(xa)xa[i]=avalues[k]}for(k0=bptr[j],k1=bptr[j+1],k=k0;k<k1;k++){i=bindex[k];if(wa[i]===mark){if(xa){var v=cf(xa[i],bvalues[k]);if(!eq(v,zero)){xa[i]=v}else{wa[i]=null}}}else{cindex.push(i);wb[i]=mark;if(xb)xb[i]=bvalues[k]}}if(xa&&xb){k=cptr[j];while(k<cindex.length){i=cindex[k];if(wa[i]===mark){cvalues[k]=xa[i];k++}else if(wb[i]===mark){cvalues[k]=xb[i];k++}else{cindex.splice(k,1)}}}}cptr[columns]=cindex.length;return c};return algorithm04}exports.name="algorithm04";exports.factory=factory},{"../../../error/DimensionError":30,"../../../function/relational/equalScalar":373}],465:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm05=function(a,b,callback){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var adt=a._datatype;var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var bsize=b._size;var bdt=b._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var cvalues=avalues&&bvalues?[]:undefined;var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt});var xa=cvalues?[]:undefined;var xb=cvalues?[]:undefined;var wa=[];var wb=[];var i,j,k,k1;for(j=0;j<columns;j++){cptr[j]=cindex.length;var mark=j+1;for(k=aptr[j],k1=aptr[j+1];k<k1;k++){i=aindex[k];cindex.push(i);wa[i]=mark;if(xa)xa[i]=avalues[k]}for(k=bptr[j],k1=bptr[j+1];k<k1;k++){i=bindex[k];if(wa[i]!==mark){cindex.push(i)}wb[i]=mark;if(xb)xb[i]=bvalues[k]}if(cvalues){k=cptr[j];while(k<cindex.length){i=cindex[k];var wai=wa[i];var wbi=wb[i];if(wai===mark||wbi===mark){var va=wai===mark?xa[i]:zero;var vb=wbi===mark?xb[i]:zero;var vc=cf(va,vb);if(!eq(vc,zero)){cvalues.push(vc);k++}else{cindex.splice(k,1)}}}}}cptr[columns]=cindex.length;return c};return algorithm05}exports.name="algorithm05";exports.factory=factory},{"../../../error/DimensionError":30,"../../../function/relational/equalScalar":373}],466:[function(require,module,exports){"use strict";var scatter=require("./../../../utils/collection/scatter");var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm06=function(a,b,callback){var avalues=a._values;var asize=a._size;var adt=a._datatype;var bvalues=b._values;var bsize=b._size;var bdt=b._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var cvalues=avalues&&bvalues?[]:undefined;var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt});var x=cvalues?[]:undefined;var w=[];var u=[];for(var j=0;j<columns;j++){cptr[j]=cindex.length;var mark=j+1;scatter(a,j,w,x,u,mark,c,cf);scatter(b,j,w,x,u,mark,c,cf);if(x){var k=cptr[j];while(k<cindex.length){var i=cindex[k];if(u[i]===mark){var v=x[i];if(!eq(v,zero)){cvalues.push(v);k++}else{cindex.splice(k,1)}}else{cindex.splice(k,1)}}}else{var p=cptr[j];while(p<cindex.length){var r=cindex[p];if(u[r]!==mark){cindex.splice(p,1)}else{p++}}}}cptr[columns]=cindex.length;return c};return algorithm06}exports.name="algorithm06";exports.factory=factory},{"../../../error/DimensionError":30,"../../../function/relational/equalScalar":373,"./../../../utils/collection/scatter":503}],467:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm07=function(a,b,callback){var asize=a._size;var adt=a._datatype;var bsize=b._size;var bdt=b._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");var rows=asize[0];var columns=asize[1];var dt;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var i,j;var cdata=[];for(i=0;i<rows;i++)cdata[i]=[];var c=new DenseMatrix({data:cdata,size:[rows,columns],datatype:dt});var xa=[];var xb=[];var wa=[];var wb=[];for(j=0;j<columns;j++){var mark=j+1;_scatter(a,j,wa,xa,mark);_scatter(b,j,wb,xb,mark);for(i=0;i<rows;i++){var va=wa[i]===mark?xa[i]:zero;var vb=wb[i]===mark?xb[i]:zero;cdata[i][j]=cf(va,vb)}}return c};var _scatter=function(m,j,w,x,mark){var values=m._values;var index=m._index;var ptr=m._ptr;for(var k=ptr[j],k1=ptr[j+1];k<k1;k++){var i=index[k];w[i]=mark;x[i]=values[k]}};return algorithm07}exports.name="algorithm07";exports.factory=factory},{"../../../error/DimensionError":30}],468:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm08=function(a,b,callback){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var adt=a._datatype;var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var bsize=b._size;var bdt=b._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");if(!avalues||!bvalues)throw new Error("Cannot perform operation on Pattern Sparse Matrices");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);cf=typed.find(callback,[dt,dt])}var cvalues=[];var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt});var x=[];var w=[];var k,k0,k1,i;for(var j=0;j<columns;j++){cptr[j]=cindex.length;var mark=j+1;for(k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){i=aindex[k];w[i]=mark;x[i]=avalues[k];cindex.push(i)}for(k0=bptr[j],k1=bptr[j+1],k=k0;k<k1;k++){i=bindex[k];if(w[i]===mark){x[i]=cf(x[i],bvalues[k])}}k=cptr[j];while(k<cindex.length){i=cindex[k];var v=x[i];if(!eq(v,zero)){cvalues.push(v);k++}else{cindex.splice(k,1)}}}cptr[columns]=cindex.length;return c};return algorithm08}exports.name="algorithm08";exports.factory=factory},{"../../../error/DimensionError":30,"../../../function/relational/equalScalar":373}],469:[function(require,module,exports){"use strict";var DimensionError=require("../../../error/DimensionError");function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm09=function(a,b,callback){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var asize=a._size;var adt=a._datatype;var bvalues=b._values;var bindex=b._index;var bptr=b._ptr;var bsize=b._size;var bdt=b._datatype;if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);if(asize[0]!==bsize[0]||asize[1]!==bsize[1])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);
cf=typed.find(callback,[dt,dt])}var cvalues=avalues&&bvalues?[]:undefined;var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt});var x=cvalues?[]:undefined;var w=[];var i,j,k,k0,k1;for(j=0;j<columns;j++){cptr[j]=cindex.length;var mark=j+1;if(x){for(k0=bptr[j],k1=bptr[j+1],k=k0;k<k1;k++){i=bindex[k];w[i]=mark;x[i]=bvalues[k]}}for(k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){i=aindex[k];if(x){var vb=w[i]===mark?x[i]:zero;var vc=cf(avalues[k],vb);if(!eq(vc,zero)){cindex.push(i);cvalues.push(vc)}}else{cindex.push(i)}}}cptr[columns]=cindex.length;return c};return algorithm09}exports.name="algorithm09";exports.factory=factory},{"../../../error/DimensionError":30,"../../../function/relational/equalScalar":373}],470:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm10=function(s,b,callback,inverse){var avalues=s._values;var aindex=s._index;var aptr=s._ptr;var asize=s._size;var adt=s._datatype;if(!avalues)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var rows=asize[0];var columns=asize[1];var dt;var cf=callback;if(typeof adt==="string"){dt=adt;b=typed.convert(b,dt);cf=typed.find(callback,[dt,dt])}var cdata=[];var c=new DenseMatrix({data:cdata,size:[rows,columns],datatype:dt});var x=[];var w=[];for(var j=0;j<columns;j++){var mark=j+1;for(var k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){var r=aindex[k];x[r]=avalues[k];w[r]=mark}for(var i=0;i<rows;i++){if(j===0){cdata[i]=[]}if(w[i]===mark){cdata[i][j]=inverse?cf(b,x[i]):cf(x[i],b)}else{cdata[i][j]=b}}}return c};return algorithm10}exports.name="algorithm10";exports.factory=factory},{}],471:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var equalScalar=load(require("../../../function/relational/equalScalar"));var SparseMatrix=type.SparseMatrix;var algorithm11=function(s,b,callback,inverse){var avalues=s._values;var aindex=s._index;var aptr=s._ptr;var asize=s._size;var adt=s._datatype;if(!avalues)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var rows=asize[0];var columns=asize[1];var dt;var eq=equalScalar;var zero=0;var cf=callback;if(typeof adt==="string"){dt=adt;eq=typed.find(equalScalar,[dt,dt]);zero=typed.convert(0,dt);b=typed.convert(b,dt);cf=typed.find(callback,[dt,dt])}var cvalues=[];var cindex=[];var cptr=[];var c=new SparseMatrix({values:cvalues,index:cindex,ptr:cptr,size:[rows,columns],datatype:dt});for(var j=0;j<columns;j++){cptr[j]=cindex.length;for(var k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){var i=aindex[k];var v=inverse?cf(b,avalues[k]):cf(avalues[k],b);if(!eq(v,zero)){cindex.push(i);cvalues.push(v)}}}cptr[columns]=cindex.length;return c};return algorithm11}exports.name="algorithm11";exports.factory=factory},{"../../../function/relational/equalScalar":373}],472:[function(require,module,exports){"use strict";function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm12=function(s,b,callback,inverse){var avalues=s._values;var aindex=s._index;var aptr=s._ptr;var asize=s._size;var adt=s._datatype;if(!avalues)throw new Error("Cannot perform operation on Pattern Sparse Matrix and Scalar value");var rows=asize[0];var columns=asize[1];var dt;var cf=callback;if(typeof adt==="string"){dt=adt;b=typed.convert(b,dt);cf=typed.find(callback,[dt,dt])}var cdata=[];var c=new DenseMatrix({data:cdata,size:[rows,columns],datatype:dt});var x=[];var w=[];for(var j=0;j<columns;j++){var mark=j+1;for(var k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){var r=aindex[k];x[r]=avalues[k];w[r]=mark}for(var i=0;i<rows;i++){if(j===0){cdata[i]=[]}if(w[i]===mark){cdata[i][j]=inverse?cf(b,x[i]):cf(x[i],b)}else{cdata[i][j]=inverse?cf(b,0):cf(0,b)}}}return c};return algorithm12}exports.name="algorithm12";exports.factory=factory},{}],473:[function(require,module,exports){"use strict";var util=require("../../../utils/index");var DimensionError=require("../../../error/DimensionError");var string=util.string,isString=string.isString;function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm13=function(a,b,callback){var adata=a._data;var asize=a._size;var adt=a._datatype;var bdata=b._data;var bsize=b._size;var bdt=b._datatype;var csize=[];if(asize.length!==bsize.length)throw new DimensionError(asize.length,bsize.length);for(var s=0;s<asize.length;s++){if(asize[s]!==bsize[s])throw new RangeError("Dimension mismatch. Matrix A ("+asize+") must match Matrix B ("+bsize+")");csize[s]=asize[s]}var dt;var cf=callback;if(typeof adt==="string"&&adt===bdt){dt=adt;b=typed.convert(b,dt);cf=typed.find(callback,[dt,dt])}var cdata=csize.length>0?_iterate(cf,0,csize,csize[0],adata,bdata):[];return new DenseMatrix({data:cdata,size:csize,datatype:dt})};var _iterate=function(f,level,s,n,av,bv){var cv=[];if(level===s.length-1){for(var i=0;i<n;i++){cv[i]=f(av[i],bv[i])}}else{for(var j=0;j<n;j++){cv[j]=_iterate(f,level+1,s,s[level+1],av[j],bv[j])}}return cv};return algorithm13}exports.name="algorithm13";exports.factory=factory},{"../../../error/DimensionError":30,"../../../utils/index":506}],474:[function(require,module,exports){"use strict";var clone=require("../../../utils/object").clone;function factory(type,config,load,typed){var DenseMatrix=type.DenseMatrix;var algorithm14=function(a,b,callback,inverse){var adata=a._data;var asize=a._size;var adt=a._datatype;var dt;var cf=callback;if(typeof adt==="string"){dt=adt;b=typed.convert(b,dt);cf=typed.find(callback,[dt,dt])}var cdata=asize.length>0?_iterate(cf,0,asize,asize[0],adata,b,inverse):[];return new DenseMatrix({data:cdata,size:clone(asize),datatype:dt})};var _iterate=function(f,level,s,n,av,bv,inverse){var cv=[];if(level===s.length-1){for(var i=0;i<n;i++){cv[i]=inverse?f(bv,av[i]):f(av[i],bv)}}else{for(var j=0;j<n;j++){cv[j]=_iterate(f,level+1,s,s[level+1],av[j],bv,inverse)}}return cv};return algorithm14}exports.name="algorithm14";exports.factory=factory},{"../../../utils/object":509}],475:[function(require,module,exports){"use strict";var deepMap=require("./../utils/collection/deepMap");function factory(type,config,load,typed){var number=typed("number",{"":function(){return 0},number:function(x){return x},string:function(x){var num=Number(x);if(isNaN(num)){throw new SyntaxError('String "'+x+'" is no valid number')}return num},BigNumber:function(x){return x.toNumber()},Fraction:function(x){return x.valueOf()},Unit:function(x){throw new Error("Second argument with valueless unit expected")},"Unit, string | Unit":function(unit,valuelessUnit){return unit.toNumber(valuelessUnit)},"Array | Matrix":function(x){return deepMap(x,number)}});number.toTex={0:"0",1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"};return number}exports.name="number";exports.factory=factory},{"./../utils/collection/deepMap":500}],476:[function(require,module,exports){"use strict";function factory(type,config,load,typed){function ResultSet(entries){if(!(this instanceof ResultSet)){throw new SyntaxError("Constructor must be called with the new operator")}this.entries=entries||[]}ResultSet.prototype.type="ResultSet";ResultSet.prototype.isResultSet=true;ResultSet.prototype.valueOf=function(){return this.entries};ResultSet.prototype.toString=function(){return"["+this.entries.join(", ")+"]"};ResultSet.prototype.toJSON=function(){return{mathjs:"ResultSet",entries:this.entries}};ResultSet.fromJSON=function(json){return new ResultSet(json.entries)};return ResultSet}exports.name="ResultSet";exports.path="type";exports.factory=factory},{}],477:[function(require,module,exports){module.exports=[require("./ResultSet")]},{"./ResultSet":476}],478:[function(require,module,exports){"use strict";var deepMap=require("./../utils/collection/deepMap");var number=require("../utils/number");function factory(type,config,load,typed){var string=typed("string",{"":function(){return""},number:number.format,null:function(x){return"null"},boolean:function(x){return x+""},string:function(x){return x},"Array | Matrix":function(x){return deepMap(x,string)},any:function(x){return String(x)}});string.toTex={0:'\\mathtt{""}',1:"\\mathrm{string}\\left(${args[0]}\\right)"};return string}exports.name="string";exports.factory=factory},{"../utils/number":508,"./../utils/collection/deepMap":500}],479:[function(require,module,exports){"use strict";var endsWith=require("../../utils/string").endsWith;var clone=require("../../utils/object").clone;var constants=require("../../utils/bignumber/constants");function factory(type,config,load,typed,math){var add=load(require("../../function/arithmetic/addScalar"));var subtract=load(require("../../function/arithmetic/subtract"));var multiply=load(require("../../function/arithmetic/multiplyScalar"));var divide=load(require("../../function/arithmetic/divideScalar"));var pow=load(require("../../function/arithmetic/pow"));var abs=load(require("../../function/arithmetic/abs"));var fix=load(require("../../function/arithmetic/fix"));var equal=load(require("../../function/relational/equal"));var isNumeric=load(require("../../function/utils/isNumeric"));var format=load(require("../../function/string/format"));var getTypeOf=load(require("../../function/utils/typeof"));var toNumber=load(require("../../type/number"));var Complex=load(require("../../type/complex/Complex"));function Unit(value,name){if(!(this instanceof Unit)){throw new Error("Constructor must be called with the new operator")}if(!(value===undefined||isNumeric(value)||value.isComplex)){throw new TypeError("First parameter in Unit constructor must be number, BigNumber, Fraction, Complex, or undefined")}if(name!=undefined&&(typeof name!=="string"||name=="")){throw new TypeError("Second parameter in Unit constructor must be a string")}if(name!=undefined){var u=Unit.parse(name);this.units=u.units;this.dimensions=u.dimensions}else{this.units=[{unit:UNIT_NONE,prefix:PREFIXES.NONE,power:0}];this.dimensions=[];for(var i=0;i<BASE_DIMENSIONS.length;i++){this.dimensions[i]=0}}this.value=value!=undefined?this._normalize(value):null;this.fixPrefix=false;this.isUnitListSimplified=true}Unit.prototype.type="Unit";Unit.prototype.isUnit=true;var text,index,c;function skipWhitespace(){while(c==" "||c=="\t"){next()}}function isDigitDot(c){return c>="0"&&c<="9"||c=="."}function isDigit(c){return c>="0"&&c<="9"}function next(){index++;c=text.charAt(index)}function revert(oldIndex){index=oldIndex;c=text.charAt(index)}function parseNumber(){var number="";var oldIndex;oldIndex=index;if(c=="+"){next()}else if(c=="-"){number+=c;next()}if(!isDigitDot(c)){revert(oldIndex);return null}if(c=="."){number+=c;next();if(!isDigit(c)){revert(oldIndex);return null}}else{while(isDigit(c)){number+=c;next()}if(c=="."){number+=c;next()}}while(isDigit(c)){number+=c;next()}if(c=="E"||c=="e"){var tentativeNumber="";var tentativeIndex=index;tentativeNumber+=c;next();if(c=="+"||c=="-"){tentativeNumber+=c;next()}if(!isDigit(c)){revert(tentativeIndex);return number}number=number+tentativeNumber;while(isDigit(c)){number+=c;next()}}return number}function parseUnit(){var unitName="";var code=text.charCodeAt(index);while(code>=48&&code<=57||code>=65&&code<=90||code>=97&&code<=122){unitName+=c;next();code=text.charCodeAt(index)}code=unitName.charCodeAt(0);if(code>=65&&code<=90||code>=97&&code<=122){return unitName||null}else{return null}}function parseCharacter(toFind){if(c===toFind){next();return toFind}else{return null}}Unit.parse=function(str,options){options=options||{};text=str;index=-1;c="";if(typeof text!=="string"){throw new TypeError("Invalid argument in Unit.parse, string expected")}var unit=new Unit;unit.units=[];next();skipWhitespace();var valueStr=parseNumber();var value=null;if(valueStr){if(config.number==="BigNumber"){value=new type.BigNumber(valueStr)}else if(config.number==="Fraction"){value=new type.Fraction(valueStr)}else{value=parseFloat(valueStr)}}skipWhitespace();var powerMultiplierCurrent=1;var expectingUnit=false;var powerMultiplierStack=[];var powerMultiplierStackProduct=1;while(true){skipWhitespace();while(c==="("){powerMultiplierStack.push(powerMultiplierCurrent);powerMultiplierStackProduct*=powerMultiplierCurrent;powerMultiplierCurrent=1;next();skipWhitespace()}if(c){var oldC=c;var uStr=parseUnit();if(uStr==null){throw new SyntaxError('Unexpected "'+oldC+'" in "'+text+'" at index '+index.toString())}}else{break}var res=_findUnit(uStr);if(res==null){throw new SyntaxError('Unit "'+uStr+'" not found.')}var power=powerMultiplierCurrent*powerMultiplierStackProduct;skipWhitespace();if(parseCharacter("^")){skipWhitespace();var p=parseNumber();if(p==null){throw new SyntaxError('In "'+str+'", "^" must be followed by a floating-point number')}power*=p}unit.units.push({unit:res.unit,prefix:res.prefix,power:power});for(var i=0;i<BASE_DIMENSIONS.length;i++){unit.dimensions[i]+=(res.unit.dimensions[i]||0)*power}skipWhitespace();while(c===")"){if(powerMultiplierStack.length===0){throw new SyntaxError('Unmatched ")" in "'+text+'" at index '+index.toString())}powerMultiplierStackProduct/=powerMultiplierStack.pop();next();skipWhitespace()}expectingUnit=false;if(parseCharacter("*")){powerMultiplierCurrent=1;expectingUnit=true}else if(parseCharacter("/")){powerMultiplierCurrent=-1;expectingUnit=true}else{powerMultiplierCurrent=1}if(res.unit.base){var baseDim=res.unit.base.key;UNIT_SYSTEMS.auto[baseDim]={unit:res.unit,prefix:res.prefix}}}skipWhitespace();if(c){throw new SyntaxError('Could not parse: "'+str+'"')}if(expectingUnit){throw new SyntaxError('Trailing characters: "'+str+'"')}if(powerMultiplierStack.length!==0){throw new SyntaxError('Unmatched "(" in "'+text+'"')}if(unit.units.length==0&&!options.allowNoUnits){throw new SyntaxError('"'+str+'" contains no units')}unit.value=value!=undefined?unit._normalize(value):null;return unit};Unit.prototype.clone=function(){var unit=new Unit;unit.fixPrefix=this.fixPrefix;unit.isUnitListSimplified=this.isUnitListSimplified;unit.value=clone(this.value);unit.dimensions=this.dimensions.slice(0);unit.units=[];for(var i=0;i<this.units.length;i++){unit.units[i]={};for(var p in this.units[i]){if(this.units[i].hasOwnProperty(p)){unit.units[i][p]=this.units[i][p]}}}return unit};Unit.prototype._isDerived=function(){if(this.units.length===0){return false}return this.units.length>1||Math.abs(this.units[0].power-1)>1e-15};Unit.prototype._normalize=function(value){var unitValue,unitOffset,unitPower,unitPrefixValue;var convert;if(value==null||this.units.length===0){return value}else if(this._isDerived()){var res=value;convert=Unit._getNumberConverter(getTypeOf(value));for(var i=0;i<this.units.length;i++){unitValue=convert(this.units[i].unit.value);unitPrefixValue=convert(this.units[i].prefix.value);unitPower=convert(this.units[i].power);res=multiply(res,pow(multiply(unitValue,unitPrefixValue),unitPower))}return res}else{convert=Unit._getNumberConverter(getTypeOf(value));unitValue=convert(this.units[0].unit.value);unitOffset=convert(this.units[0].unit.offset);unitPrefixValue=convert(this.units[0].prefix.value);return multiply(add(value,unitOffset),multiply(unitValue,unitPrefixValue))}};Unit.prototype._denormalize=function(value,prefixValue){var unitValue,unitOffset,unitPower,unitPrefixValue;var convert;if(value==null||this.units.length===0){return value}else if(this._isDerived()){var res=value;convert=Unit._getNumberConverter(getTypeOf(value));for(var i=0;i<this.units.length;i++){unitValue=convert(this.units[i].unit.value);unitPrefixValue=convert(this.units[i].prefix.value);unitPower=convert(this.units[i].power);res=divide(res,pow(multiply(unitValue,unitPrefixValue),unitPower))}return res}else{convert=Unit._getNumberConverter(getTypeOf(value));unitValue=convert(this.units[0].unit.value);unitPrefixValue=convert(this.units[0].prefix.value);unitOffset=convert(this.units[0].unit.offset);if(prefixValue==undefined){return subtract(divide(divide(value,unitValue),unitPrefixValue),unitOffset)}else{return subtract(divide(divide(value,unitValue),prefixValue),unitOffset)}}};function _findUnit(str){if(UNITS.hasOwnProperty(str)){var unit=UNITS[str];var prefix=unit.prefixes[""];return{unit:unit,prefix:prefix}}for(var name in UNITS){if(UNITS.hasOwnProperty(name)){if(endsWith(str,name)){var unit=UNITS[name];var prefixLen=str.length-name.length;var prefixName=str.substring(0,prefixLen);var prefix=unit.prefixes[prefixName];if(prefix!==undefined){return{unit:unit,prefix:prefix}}}}}return null}Unit.isValuelessUnit=function(name){return _findUnit(name)!=null};Unit.prototype.hasBase=function(base){if(typeof base==="string"){base=BASE_UNITS[base]}if(!base)return false;for(var i=0;i<BASE_DIMENSIONS.length;i++){if(Math.abs((this.dimensions[i]||0)-(base.dimensions[i]||0))>1e-12){return false}}return true};Unit.prototype.equalBase=function(other){for(var i=0;i<BASE_DIMENSIONS.length;i++){if(Math.abs((this.dimensions[i]||0)-(other.dimensions[i]||0))>1e-12){return false}}return true};Unit.prototype.equals=function(other){return this.equalBase(other)&&equal(this.value,other.value)};Unit.prototype.multiply=function(other){var res=this.clone();for(var i=0;i<BASE_DIMENSIONS.length;i++){res.dimensions[i]=(this.dimensions[i]||0)+(other.dimensions[i]||0)}for(var i=0;i<other.units.length;i++){var inverted={};for(var key in other.units[i]){inverted[key]=other.units[i][key]}res.units.push(inverted)}if(this.value!=null||other.value!=null){var valThis=this.value==null?this._normalize(1):this.value;var valOther=other.value==null?other._normalize(1):other.value;res.value=multiply(valThis,valOther)}else{res.value=null}res.isUnitListSimplified=false;return getNumericIfUnitless(res)};Unit.prototype.divide=function(other){var res=this.clone();for(var i=0;i<BASE_DIMENSIONS.length;i++){res.dimensions[i]=(this.dimensions[i]||0)-(other.dimensions[i]||0)}for(var i=0;i<other.units.length;i++){var inverted={};for(var key in other.units[i]){inverted[key]=other.units[i][key]}inverted.power=-inverted.power;res.units.push(inverted)}if(this.value!=null||other.value!=null){var valThis=this.value==null?this._normalize(1):this.value;var valOther=other.value==null?other._normalize(1):other.value;res.value=divide(valThis,valOther)}else{res.value=null}res.isUnitListSimplified=false;return getNumericIfUnitless(res)};Unit.prototype.pow=function(p){var res=this.clone();for(var i=0;i<BASE_DIMENSIONS.length;i++){res.dimensions[i]=(this.dimensions[i]||0)*p}for(var i=0;i<res.units.length;i++){res.units[i].power*=p}if(res.value!=null){res.value=pow(res.value,p)}else{res.value=null}res.isUnitListSimplified=false;return getNumericIfUnitless(res)};var getNumericIfUnitless=function(unit){if(unit.equalBase(BASE_UNITS.NONE)&&unit.value!==null&&!config.predictable){return unit.value}else{return unit}};Unit.prototype.abs=function(){var ret=this.clone();ret.value=abs(ret.value);for(var i in ret.units){if(ret.units[i].unit.name==="VA"||ret.units[i].unit.name==="VAR"){ret.units[i].unit=UNITS["W"]}}return ret};Unit.prototype.to=function(valuelessUnit){var other;var value=this.value==null?this._normalize(1):this.value;if(typeof valuelessUnit==="string"){other=Unit.parse(valuelessUnit);if(!this.equalBase(other)){throw new Error("Units do not match")}if(other.value!==null){throw new Error("Cannot convert to a unit with a value")}other.value=clone(value);other.fixPrefix=true;other.isUnitListSimplified=true;return other}else if(valuelessUnit&&valuelessUnit.isUnit){if(!this.equalBase(valuelessUnit)){throw new Error("Units do not match")}if(valuelessUnit.value!==null){throw new Error("Cannot convert to a unit with a value")}other=valuelessUnit.clone();other.value=clone(value);other.fixPrefix=true;other.isUnitListSimplified=true;return other}else{throw new Error("String or Unit expected as parameter")}};Unit.prototype.toNumber=function(valuelessUnit){return toNumber(this.toNumeric(valuelessUnit))};Unit.prototype.toNumeric=function(valuelessUnit){var other=this;if(valuelessUnit){other=this.to(valuelessUnit)}if(other._isDerived()){return other._denormalize(other.value)}else{return other._denormalize(other.value,other.units[0].prefix.value)}};Unit.prototype.toString=function(){return this.format()};Unit.prototype.toJSON=function(){return{mathjs:"Unit",value:this._denormalize(this.value),unit:this.formatUnits(),fixPrefix:this.fixPrefix}};Unit.fromJSON=function(json){var unit=new Unit(json.value,json.unit);unit.fixPrefix=json.fixPrefix||false;return unit};Unit.prototype.valueOf=Unit.prototype.toString;Unit.prototype.simplifyUnitListLazy=function(){if(this.isUnitListSimplified||this.value==null){return}var proposedUnitList=[];var matchingBase;for(var key in currentUnitSystem){if(this.hasBase(BASE_UNITS[key])){matchingBase=key;break}}if(matchingBase==="NONE"){this.units=[]}else{var matchingUnit;if(matchingBase){if(currentUnitSystem.hasOwnProperty(matchingBase)){matchingUnit=currentUnitSystem[matchingBase]}}var value;var str;if(matchingUnit){this.units=[{unit:matchingUnit.unit,prefix:matchingUnit.prefix,power:1}]}else{var missingBaseDim=false;for(var i=0;i<BASE_DIMENSIONS.length;i++){var baseDim=BASE_DIMENSIONS[i];if(Math.abs(this.dimensions[i]||0)>1e-12){if(currentUnitSystem.hasOwnProperty(baseDim)){proposedUnitList.push({unit:currentUnitSystem[baseDim].unit,prefix:currentUnitSystem[baseDim].prefix,power:this.dimensions[i]||0})}else{missingBaseDim=true}}}var util=require("util");if(proposedUnitList.length<this.units.length&&!missingBaseDim){this.units=proposedUnitList}}}this.isUnitListSimplified=true};Unit.prototype.formatUnits=function(){this.simplifyUnitListLazy();var strNum="";var strDen="";var nNum=0;var nDen=0;for(var i=0;i<this.units.length;i++){if(this.units[i].power>0){nNum++;strNum+=" "+this.units[i].prefix.name+this.units[i].unit.name;if(Math.abs(this.units[i].power-1)>1e-15){strNum+="^"+this.units[i].power}}else if(this.units[i].power<0){nDen++}}if(nDen>0){for(var i=0;i<this.units.length;i++){if(this.units[i].power<0){if(nNum>0){strDen+=" "+this.units[i].prefix.name+this.units[i].unit.name;if(Math.abs(this.units[i].power+1)>1e-15){strDen+="^"+-this.units[i].power}}else{strDen+=" "+this.units[i].prefix.name+this.units[i].unit.name;strDen+="^"+this.units[i].power}}}}strNum=strNum.substr(1);strDen=strDen.substr(1);if(nNum>1&&nDen>0){strNum="("+strNum+")"}if(nDen>1&&nNum>0){strDen="("+strDen+")"}var str=strNum;if(nNum>0&&nDen>0){str+=" / "}str+=strDen;return str};Unit.prototype.format=function(options){this.simplifyUnitListLazy();var isImaginary=false;var isReal=true;if(typeof this.value!=="undefined"&&this.value!==null&&this.value.isComplex){isImaginary=Math.abs(this.value.re)<1e-14;isReal=Math.abs(this.value.im)<1e-14}for(var i in this.units){if(this.units[i].unit){if(this.units[i].unit.name==="VA"&&isImaginary){this.units[i].unit=UNITS["VAR"]}else if(this.units[i].unit.name==="VAR"&&!isImaginary){this.units[i].unit=UNITS["VA"]}}}if(this.units.length===1&&!this.fixPrefix){if(Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14){this.units[0].prefix=this._bestPrefix()}}var value=this._denormalize(this.value);var str=this.value!==null?format(value,options||{}):"";var unitStr=this.formatUnits();if(this.value&&this.value.isComplex){str="("+str+")"}if(unitStr.length>0&&str.length>0){str+=" "}str+=unitStr;return str};Unit.prototype._bestPrefix=function(){if(this.units.length!==1){throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!")}if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14){throw new Error("Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!")}var absValue=abs(this.value);var absUnitValue=abs(this.units[0].unit.value);var bestPrefix=this.units[0].prefix;if(absValue===0){return bestPrefix}var power=this.units[0].power;var bestDiff=Math.abs(Math.log(absValue/Math.pow(bestPrefix.value*absUnitValue,power))/Math.LN10-1.2);var prefixes=this.units[0].unit.prefixes;for(var p in prefixes){if(prefixes.hasOwnProperty(p)){var prefix=prefixes[p];if(prefix.scientific){var diff=Math.abs(Math.log(absValue/Math.pow(prefix.value*absUnitValue,power))/Math.LN10-1.2);if(diff<bestDiff||diff===bestDiff&&prefix.name.length<bestPrefix.name.length){bestPrefix=prefix;bestDiff=diff}}}}return bestPrefix};Unit.prototype.splitUnit=function(parts){var x=this.clone();var ret=[];for(var i=0;i<parts.length;i++){x=x.to(parts[i]);if(i==parts.length-1)break;var fixedVal=fix(x.toNumeric());var y=new Unit(fixedVal,parts[i].toString());ret.push(y);x=subtract(x,y)}ret.push(x);return ret};var PREFIXES={NONE:{"":{name:"",value:1,scientific:true}},SHORT:{"":{name:"",value:1,scientific:true},da:{name:"da",value:10,scientific:false},h:{name:"h",value:100,scientific:false},k:{name:"k",value:1e3,scientific:true},M:{name:"M",value:1e6,scientific:true},G:{name:"G",value:1e9,scientific:true},T:{name:"T",value:1e12,scientific:true},P:{name:"P",value:1e15,scientific:true},E:{name:"E",value:1e18,scientific:true},Z:{name:"Z",value:1e21,scientific:true},Y:{name:"Y",value:1e24,scientific:true},d:{name:"d",value:.1,scientific:false},c:{name:"c",value:.01,scientific:false},m:{name:"m",value:.001,scientific:true},u:{name:"u",value:1e-6,scientific:true},n:{name:"n",value:1e-9,scientific:true},p:{name:"p",value:1e-12,scientific:true},f:{name:"f",value:1e-15,scientific:true},a:{name:"a",value:1e-18,scientific:true},z:{name:"z",value:1e-21,scientific:true},y:{name:"y",value:1e-24,scientific:true}},LONG:{"":{name:"",value:1,scientific:true},deca:{name:"deca",value:10,scientific:false},hecto:{name:"hecto",value:100,scientific:false},kilo:{name:"kilo",value:1e3,scientific:true},mega:{name:"mega",value:1e6,scientific:true},giga:{name:"giga",value:1e9,scientific:true},tera:{name:"tera",value:1e12,scientific:true},peta:{name:"peta",value:1e15,scientific:true},exa:{name:"exa",value:1e18,scientific:true},zetta:{name:"zetta",value:1e21,scientific:true},yotta:{name:"yotta",value:1e24,scientific:true},deci:{name:"deci",value:.1,scientific:false},centi:{name:"centi",value:.01,scientific:false},milli:{name:"milli",value:.001,scientific:true},micro:{name:"micro",value:1e-6,scientific:true},nano:{name:"nano",value:1e-9,scientific:true},pico:{name:"pico",value:1e-12,scientific:true},femto:{name:"femto",value:1e-15,scientific:true},atto:{name:"atto",value:1e-18,scientific:true},zepto:{name:"zepto",value:1e-21,scientific:true},yocto:{name:"yocto",value:1e-24,scientific:true}},SQUARED:{"":{name:"",value:1,scientific:true},da:{name:"da",value:100,scientific:false},h:{name:"h",value:1e4,scientific:false},k:{name:"k",value:1e6,scientific:true},M:{name:"M",value:1e12,scientific:true},G:{name:"G",value:1e18,scientific:true},T:{name:"T",value:1e24,scientific:true},P:{name:"P",value:1e30,scientific:true},E:{name:"E",value:1e36,scientific:true},Z:{name:"Z",value:1e42,scientific:true},Y:{name:"Y",value:1e48,scientific:true},d:{name:"d",value:.01,scientific:false},c:{name:"c",value:1e-4,scientific:false},m:{name:"m",value:1e-6,scientific:true},u:{name:"u",value:1e-12,scientific:true},n:{name:"n",value:1e-18,scientific:true},p:{name:"p",value:1e-24,scientific:true},f:{name:"f",value:1e-30,scientific:true},a:{name:"a",value:1e-36,scientific:true},z:{name:"z",value:1e-42,scientific:true},y:{name:"y",value:1e-48,scientific:true}},CUBIC:{"":{name:"",value:1,scientific:true},da:{name:"da",value:1e3,scientific:false},h:{name:"h",value:1e6,scientific:false},k:{name:"k",value:1e9,scientific:true},M:{name:"M",value:1e18,scientific:true},G:{name:"G",value:1e27,scientific:true},T:{name:"T",value:1e36,scientific:true},P:{name:"P",value:1e45,scientific:true},E:{name:"E",value:1e54,scientific:true},Z:{name:"Z",value:1e63,scientific:true},Y:{name:"Y",value:1e72,scientific:true},d:{name:"d",value:.001,scientific:false},c:{name:"c",value:1e-6,scientific:false},m:{name:"m",value:1e-9,scientific:true},u:{name:"u",value:1e-18,scientific:true},n:{name:"n",value:1e-27,scientific:true},p:{name:"p",value:1e-36,scientific:true},f:{name:"f",value:1e-45,scientific:true},a:{name:"a",value:1e-54,scientific:true},z:{name:"z",value:1e-63,scientific:true},y:{name:"y",value:1e-72,scientific:true}},BINARY_SHORT:{"":{name:"",value:1,scientific:true},k:{name:"k",value:1e3,scientific:true},M:{name:"M",value:1e6,scientific:true},G:{name:"G",value:1e9,scientific:true},T:{name:"T",value:1e12,scientific:true},P:{name:"P",value:1e15,scientific:true},E:{name:"E",value:1e18,scientific:true},Z:{name:"Z",value:1e21,scientific:true},Y:{name:"Y",value:1e24,scientific:true},Ki:{name:"Ki",value:1024,scientific:true},Mi:{name:"Mi",value:Math.pow(1024,2),scientific:true},Gi:{name:"Gi",value:Math.pow(1024,3),scientific:true},Ti:{name:"Ti",value:Math.pow(1024,4),scientific:true},Pi:{name:"Pi",value:Math.pow(1024,5),scientific:true},Ei:{name:"Ei",value:Math.pow(1024,6),scientific:true},Zi:{name:"Zi",value:Math.pow(1024,7),scientific:true},Yi:{name:"Yi",value:Math.pow(1024,8),scientific:true}},BINARY_LONG:{"":{name:"",value:1,scientific:true},kilo:{name:"kilo",value:1e3,scientific:true},mega:{name:"mega",value:1e6,scientific:true},giga:{name:"giga",value:1e9,scientific:true},tera:{name:"tera",value:1e12,scientific:true},peta:{name:"peta",value:1e15,scientific:true},exa:{name:"exa",value:1e18,scientific:true},zetta:{name:"zetta",value:1e21,scientific:true},yotta:{name:"yotta",value:1e24,scientific:true},kibi:{name:"kibi",value:1024,scientific:true},mebi:{name:"mebi",value:Math.pow(1024,2),scientific:true},gibi:{name:"gibi",value:Math.pow(1024,3),scientific:true},tebi:{name:"tebi",value:Math.pow(1024,4),scientific:true},pebi:{name:"pebi",value:Math.pow(1024,5),scientific:true},exi:{name:"exi",value:Math.pow(1024,6),scientific:true},zebi:{name:"zebi",value:Math.pow(1024,7),scientific:true},yobi:{name:"yobi",value:Math.pow(1024,8),scientific:true}},BTU:{"":{name:"",value:1,scientific:true},MM:{name:"MM",value:1e6,scientific:true}}};PREFIXES.SHORTLONG={};for(var key in PREFIXES.SHORT){if(PREFIXES.SHORT.hasOwnProperty(key)){PREFIXES.SHORTLONG[key]=PREFIXES.SHORT[key]}}for(var key in PREFIXES.LONG){if(PREFIXES.LONG.hasOwnProperty(key)){PREFIXES.SHORTLONG[key]=PREFIXES.LONG[key]}}var BASE_DIMENSIONS=["MASS","LENGTH","TIME","CURRENT","TEMPERATURE","LUMINOUS_INTENSITY","AMOUNT_OF_SUBSTANCE","ANGLE","BIT"];var BASE_UNITS={NONE:{dimensions:[0,0,0,0,0,0,0,0,0]},MASS:{dimensions:[1,0,0,0,0,0,0,0,0]},LENGTH:{dimensions:[0,1,0,0,0,0,0,0,0]},TIME:{dimensions:[0,0,1,0,0,0,0,0,0]},CURRENT:{dimensions:[0,0,0,1,0,0,0,0,0]},TEMPERATURE:{dimensions:[0,0,0,0,1,0,0,0,0]},LUMINOUS_INTENSITY:{dimensions:[0,0,0,0,0,1,0,0,0]},AMOUNT_OF_SUBSTANCE:{dimensions:[0,0,0,0,0,0,1,0,0]},FORCE:{dimensions:[1,1,-2,0,0,0,0,0,0]},SURFACE:{dimensions:[0,2,0,0,0,0,0,0,0]},VOLUME:{dimensions:[0,3,0,0,0,0,0,0,0]},ENERGY:{dimensions:[1,2,-2,0,0,0,0,0,0]},POWER:{dimensions:[1,2,-3,0,0,0,0,0,0]},PRESSURE:{dimensions:[1,-1,-2,0,0,0,0,0,0]},ELECTRIC_CHARGE:{dimensions:[0,0,1,1,0,0,0,0,0]},ELECTRIC_CAPACITANCE:{dimensions:[-1,-2,4,2,0,0,0,0,0]},ELECTRIC_POTENTIAL:{dimensions:[1,2,-3,-1,0,0,0,0,0]},ELECTRIC_RESISTANCE:{dimensions:[1,2,-3,-2,0,0,0,0,0]},ELECTRIC_INDUCTANCE:{dimensions:[1,2,-2,-2,0,0,0,0,0]},ELECTRIC_CONDUCTANCE:{dimensions:[-1,-2,3,2,0,0,0,0,0]},MAGNETIC_FLUX:{dimensions:[1,2,-2,-1,0,0,0,0,0]},MAGNETIC_FLUX_DENSITY:{dimensions:[1,0,-2,-1,0,0,0,0,0]},FREQUENCY:{dimensions:[0,0,-1,0,0,0,0,0,0]},ANGLE:{dimensions:[0,0,0,0,0,0,0,1,0]},BIT:{dimensions:[0,0,0,0,0,0,0,0,1]}};for(var key in BASE_UNITS){BASE_UNITS[key].key=key}var BASE_UNIT_NONE={};var UNIT_NONE={name:"",base:BASE_UNIT_NONE,value:1,offset:0,dimensions:[0,0,0,0,0,0,0,0,0]};var UNITS={meter:{name:"meter",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.LONG,value:1,offset:0},inch:{name:"inch",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.0254,offset:0},foot:{name:"foot",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.3048,offset:0},yard:{name:"yard",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.9144,offset:0},mile:{name:"mile",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,
value:1609.344,offset:0},link:{name:"link",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.201168,offset:0},rod:{name:"rod",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:5.02921,offset:0},chain:{name:"chain",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:20.1168,offset:0},angstrom:{name:"angstrom",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:1e-10,offset:0},m:{name:"m",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.SHORT,value:1,offset:0},in:{name:"in",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.0254,offset:0},ft:{name:"ft",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.3048,offset:0},yd:{name:"yd",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.9144,offset:0},mi:{name:"mi",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:1609.344,offset:0},li:{name:"li",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:.201168,offset:0},rd:{name:"rd",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:5.02921,offset:0},ch:{name:"ch",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:20.1168,offset:0},mil:{name:"mil",base:BASE_UNITS.LENGTH,prefixes:PREFIXES.NONE,value:254e-7,offset:0},m2:{name:"m2",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.SQUARED,value:1,offset:0},sqin:{name:"sqin",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:64516e-8,offset:0},sqft:{name:"sqft",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:.09290304,offset:0},sqyd:{name:"sqyd",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:.83612736,offset:0},sqmi:{name:"sqmi",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:2589988.110336,offset:0},sqrd:{name:"sqrd",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:25.29295,offset:0},sqch:{name:"sqch",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:404.6873,offset:0},sqmil:{name:"sqmil",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:6.4516e-10,offset:0},acre:{name:"acre",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:4046.86,offset:0},hectare:{name:"hectare",base:BASE_UNITS.SURFACE,prefixes:PREFIXES.NONE,value:1e4,offset:0},m3:{name:"m3",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.CUBIC,value:1,offset:0},L:{name:"L",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.SHORT,value:.001,offset:0},l:{name:"l",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.SHORT,value:.001,offset:0},litre:{name:"litre",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.LONG,value:.001,offset:0},cuin:{name:"cuin",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:16387064e-12,offset:0},cuft:{name:"cuft",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.028316846592,offset:0},cuyd:{name:"cuyd",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.764554857984,offset:0},teaspoon:{name:"teaspoon",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:5e-6,offset:0},tablespoon:{name:"tablespoon",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:15e-6,offset:0},drop:{name:"drop",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:5e-8,offset:0},gtt:{name:"gtt",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:5e-8,offset:0},minim:{name:"minim",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:6.161152e-8,offset:0},fluiddram:{name:"fluiddram",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:36966911e-13,offset:0},fluidounce:{name:"fluidounce",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:2957353e-11,offset:0},gill:{name:"gill",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0001182941,offset:0},cc:{name:"cc",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:1e-6,offset:0},cup:{name:"cup",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0002365882,offset:0},pint:{name:"pint",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0004731765,offset:0},quart:{name:"quart",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0009463529,offset:0},gallon:{name:"gallon",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.003785412,offset:0},beerbarrel:{name:"beerbarrel",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.1173478,offset:0},oilbarrel:{name:"oilbarrel",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.1589873,offset:0},hogshead:{name:"hogshead",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.238481,offset:0},fldr:{name:"fldr",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:36966911e-13,offset:0},floz:{name:"floz",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:2957353e-11,offset:0},gi:{name:"gi",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0001182941,offset:0},cp:{name:"cp",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0002365882,offset:0},pt:{name:"pt",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0004731765,offset:0},qt:{name:"qt",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.0009463529,offset:0},gal:{name:"gal",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.003785412,offset:0},bbl:{name:"bbl",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.1173478,offset:0},obl:{name:"obl",base:BASE_UNITS.VOLUME,prefixes:PREFIXES.NONE,value:.1589873,offset:0},g:{name:"g",base:BASE_UNITS.MASS,prefixes:PREFIXES.SHORT,value:.001,offset:0},gram:{name:"gram",base:BASE_UNITS.MASS,prefixes:PREFIXES.LONG,value:.001,offset:0},ton:{name:"ton",base:BASE_UNITS.MASS,prefixes:PREFIXES.SHORT,value:907.18474,offset:0},tonne:{name:"tonne",base:BASE_UNITS.MASS,prefixes:PREFIXES.SHORT,value:1e3,offset:0},grain:{name:"grain",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:6479891e-11,offset:0},dram:{name:"dram",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.0017718451953125,offset:0},ounce:{name:"ounce",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.028349523125,offset:0},poundmass:{name:"poundmass",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.45359237,offset:0},hundredweight:{name:"hundredweight",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:45.359237,offset:0},stick:{name:"stick",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.115,offset:0},stone:{name:"stone",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:6.35029318,offset:0},gr:{name:"gr",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:6479891e-11,offset:0},dr:{name:"dr",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.0017718451953125,offset:0},oz:{name:"oz",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.028349523125,offset:0},lbm:{name:"lbm",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:.45359237,offset:0},cwt:{name:"cwt",base:BASE_UNITS.MASS,prefixes:PREFIXES.NONE,value:45.359237,offset:0},s:{name:"s",base:BASE_UNITS.TIME,prefixes:PREFIXES.SHORT,value:1,offset:0},min:{name:"min",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:60,offset:0},h:{name:"h",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:3600,offset:0},second:{name:"second",base:BASE_UNITS.TIME,prefixes:PREFIXES.LONG,value:1,offset:0},sec:{name:"sec",base:BASE_UNITS.TIME,prefixes:PREFIXES.LONG,value:1,offset:0},minute:{name:"minute",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:60,offset:0},hour:{name:"hour",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:3600,offset:0},day:{name:"day",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:86400,offset:0},week:{name:"week",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:7*86400,offset:0},month:{name:"month",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:2629800,offset:0},year:{name:"year",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:31557600,offset:0},decade:{name:"year",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:315576e3,offset:0},century:{name:"century",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:315576e4,offset:0},millennium:{name:"millennium",base:BASE_UNITS.TIME,prefixes:PREFIXES.NONE,value:315576e5,offset:0},hertz:{name:"Hertz",base:BASE_UNITS.FREQUENCY,prefixes:PREFIXES.LONG,value:1,offset:0,reciprocal:true},Hz:{name:"Hz",base:BASE_UNITS.FREQUENCY,prefixes:PREFIXES.SHORT,value:1,offset:0,reciprocal:true},rad:{name:"rad",base:BASE_UNITS.ANGLE,prefixes:PREFIXES.NONE,value:1,offset:0},deg:{name:"deg",base:BASE_UNITS.ANGLE,prefixes:PREFIXES.NONE,value:null,offset:0},grad:{name:"grad",base:BASE_UNITS.ANGLE,prefixes:PREFIXES.NONE,value:null,offset:0},cycle:{name:"cycle",base:BASE_UNITS.ANGLE,prefixes:PREFIXES.NONE,value:null,offset:0},arcsec:{name:"arcsec",base:BASE_UNITS.ANGLE,prefixes:PREFIXES.NONE,value:null,offset:0},arcmin:{name:"arcmin",base:BASE_UNITS.ANGLE,prefixes:PREFIXES.NONE,value:null,offset:0},A:{name:"A",base:BASE_UNITS.CURRENT,prefixes:PREFIXES.SHORT,value:1,offset:0},ampere:{name:"ampere",base:BASE_UNITS.CURRENT,prefixes:PREFIXES.LONG,value:1,offset:0},K:{name:"K",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1,offset:0},degC:{name:"degC",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1,offset:273.15},degF:{name:"degF",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1/1.8,offset:459.67},degR:{name:"degR",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1/1.8,offset:0},kelvin:{name:"kelvin",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1,offset:0},celsius:{name:"celsius",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1,offset:273.15},fahrenheit:{name:"fahrenheit",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1/1.8,offset:459.67},rankine:{name:"rankine",base:BASE_UNITS.TEMPERATURE,prefixes:PREFIXES.NONE,value:1/1.8,offset:0},mol:{name:"mol",base:BASE_UNITS.AMOUNT_OF_SUBSTANCE,prefixes:PREFIXES.SHORT,value:1,offset:0},mole:{name:"mole",base:BASE_UNITS.AMOUNT_OF_SUBSTANCE,prefixes:PREFIXES.LONG,value:1,offset:0},cd:{name:"cd",base:BASE_UNITS.LUMINOUS_INTENSITY,prefixes:PREFIXES.NONE,value:1,offset:0},candela:{name:"candela",base:BASE_UNITS.LUMINOUS_INTENSITY,prefixes:PREFIXES.NONE,value:1,offset:0},N:{name:"N",base:BASE_UNITS.FORCE,prefixes:PREFIXES.SHORT,value:1,offset:0},newton:{name:"newton",base:BASE_UNITS.FORCE,prefixes:PREFIXES.LONG,value:1,offset:0},dyn:{name:"dyn",base:BASE_UNITS.FORCE,prefixes:PREFIXES.SHORT,value:1e-5,offset:0},dyne:{name:"dyne",base:BASE_UNITS.FORCE,prefixes:PREFIXES.LONG,value:1e-5,offset:0},lbf:{name:"lbf",base:BASE_UNITS.FORCE,prefixes:PREFIXES.NONE,value:4.4482216152605,offset:0},poundforce:{name:"poundforce",base:BASE_UNITS.FORCE,prefixes:PREFIXES.NONE,value:4.4482216152605,offset:0},kip:{name:"kip",base:BASE_UNITS.FORCE,prefixes:PREFIXES.LONG,value:4448.2216,offset:0},J:{name:"J",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.SHORT,value:1,offset:0},joule:{name:"joule",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.SHORT,value:1,offset:0},erg:{name:"erg",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.NONE,value:1e-5,offset:0},Wh:{name:"Wh",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.SHORT,value:3600,offset:0},BTU:{name:"BTU",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.BTU,value:1055.05585262,offset:0},eV:{name:"eV",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.SHORT,value:1.602176565e-19,offset:0},electronvolt:{name:"electronvolt",base:BASE_UNITS.ENERGY,prefixes:PREFIXES.LONG,value:1.602176565e-19,offset:0},W:{name:"W",base:BASE_UNITS.POWER,prefixes:PREFIXES.SHORT,value:1,offset:0},watt:{name:"W",base:BASE_UNITS.POWER,prefixes:PREFIXES.LONG,value:1,offset:0},hp:{name:"hp",base:BASE_UNITS.POWER,prefixes:PREFIXES.NONE,value:745.6998715386,offset:0},VAR:{name:"VAR",base:BASE_UNITS.POWER,prefixes:PREFIXES.SHORT,value:Complex.I,offset:0},VA:{name:"VA",base:BASE_UNITS.POWER,prefixes:PREFIXES.SHORT,value:1,offset:0},Pa:{name:"Pa",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.SHORT,value:1,offset:0},psi:{name:"psi",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:6894.75729276459,offset:0},atm:{name:"atm",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:101325,offset:0},bar:{name:"bar",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:1e5,offset:0},torr:{name:"torr",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:133.322,offset:0},mmHg:{name:"mmHg",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:133.322,offset:0},mmH2O:{name:"mmH2O",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:9.80665,offset:0},cmH2O:{name:"cmH2O",base:BASE_UNITS.PRESSURE,prefixes:PREFIXES.NONE,value:98.0665,offset:0},coulomb:{name:"coulomb",base:BASE_UNITS.ELECTRIC_CHARGE,prefixes:PREFIXES.LONG,value:1,offset:0},C:{name:"C",base:BASE_UNITS.ELECTRIC_CHARGE,prefixes:PREFIXES.SHORT,value:1,offset:0},farad:{name:"farad",base:BASE_UNITS.ELECTRIC_CAPACITANCE,prefixes:PREFIXES.LONG,value:1,offset:0},F:{name:"F",base:BASE_UNITS.ELECTRIC_CAPACITANCE,prefixes:PREFIXES.SHORT,value:1,offset:0},volt:{name:"volt",base:BASE_UNITS.ELECTRIC_POTENTIAL,prefixes:PREFIXES.LONG,value:1,offset:0},V:{name:"V",base:BASE_UNITS.ELECTRIC_POTENTIAL,prefixes:PREFIXES.SHORT,value:1,offset:0},ohm:{name:"ohm",base:BASE_UNITS.ELECTRIC_RESISTANCE,prefixes:PREFIXES.SHORTLONG,value:1,offset:0},henry:{name:"henry",base:BASE_UNITS.ELECTRIC_INDUCTANCE,prefixes:PREFIXES.LONG,value:1,offset:0},H:{name:"H",base:BASE_UNITS.ELECTRIC_INDUCTANCE,prefixes:PREFIXES.SHORT,value:1,offset:0},siemens:{name:"siemens",base:BASE_UNITS.ELECTRIC_CONDUCTANCE,prefixes:PREFIXES.LONG,value:1,offset:0},S:{name:"S",base:BASE_UNITS.ELECTRIC_CONDUCTANCE,prefixes:PREFIXES.SHORT,value:1,offset:0},weber:{name:"weber",base:BASE_UNITS.MAGNETIC_FLUX,prefixes:PREFIXES.LONG,value:1,offset:0},Wb:{name:"Wb",base:BASE_UNITS.MAGNETIC_FLUX,prefixes:PREFIXES.SHORT,value:1,offset:0},tesla:{name:"tesla",base:BASE_UNITS.MAGNETIC_FLUX_DENSITY,prefixes:PREFIXES.LONG,value:1,offset:0},T:{name:"T",base:BASE_UNITS.MAGNETIC_FLUX_DENSITY,prefixes:PREFIXES.SHORT,value:1,offset:0},b:{name:"b",base:BASE_UNITS.BIT,prefixes:PREFIXES.BINARY_SHORT,value:1,offset:0},bits:{name:"bits",base:BASE_UNITS.BIT,prefixes:PREFIXES.BINARY_LONG,value:1,offset:0},B:{name:"B",base:BASE_UNITS.BIT,prefixes:PREFIXES.BINARY_SHORT,value:8,offset:0},bytes:{name:"bytes",base:BASE_UNITS.BIT,prefixes:PREFIXES.BINARY_LONG,value:8,offset:0}};var ALIASES={meters:"meter",inches:"inch",feet:"foot",yards:"yard",miles:"mile",links:"link",rods:"rod",chains:"chain",angstroms:"angstrom",lt:"l",litres:"litre",liter:"litre",liters:"litre",teaspoons:"teaspoon",tablespoons:"tablespoon",minims:"minim",fluiddrams:"fluiddram",fluidounces:"fluidounce",gills:"gill",cups:"cup",pints:"pint",quarts:"quart",gallons:"gallon",beerbarrels:"beerbarrel",oilbarrels:"oilbarrel",hogsheads:"hogshead",gtts:"gtt",grams:"gram",tons:"ton",tonnes:"tonne",grains:"grain",drams:"dram",ounces:"ounce",poundmasses:"poundmass",hundredweights:"hundredweight",sticks:"stick",lb:"lbm",lbs:"lbm",kips:"kip",acres:"acre",hectares:"hectare",sqfeet:"sqft",sqyard:"sqyd",sqmile:"sqmi",sqmiles:"sqmi",mmhg:"mmHg",mmh2o:"mmH2O",cmh2o:"cmH2O",seconds:"second",secs:"second",minutes:"minute",mins:"minute",hours:"hour",hr:"hour",hrs:"hour",days:"day",weeks:"week",months:"month",years:"year",hertz:"hertz",radians:"rad",degree:"deg",degrees:"deg",gradian:"grad",gradians:"grad",cycles:"cycle",arcsecond:"arcsec",arcseconds:"arcsec",arcminute:"arcmin",arcminutes:"arcmin",BTUs:"BTU",watts:"watt",joules:"joule",amperes:"ampere",coulombs:"coulomb",volts:"volt",ohms:"ohm",farads:"farad",webers:"weber",teslas:"tesla",electronvolts:"electronvolt",moles:"mole"};function calculateAngleValues(config){if(config.number==="BigNumber"){var pi=constants.pi(type.BigNumber);UNITS.rad.value=new type.BigNumber(1);UNITS.deg.value=pi.div(180);UNITS.grad.value=pi.div(200);UNITS.cycle.value=pi.times(2);UNITS.arcsec.value=pi.div(648e3);UNITS.arcmin.value=pi.div(10800)}else{UNITS.rad.value=1;UNITS.deg.value=Math.PI/180;UNITS.grad.value=Math.PI/200;UNITS.cycle.value=Math.PI*2;UNITS.arcsec.value=Math.PI/648e3;UNITS.arcmin.value=Math.PI/10800}}calculateAngleValues(config);math.on("config",function(curr,prev){if(curr.number!==prev.number){calculateAngleValues(curr)}});var UNIT_SYSTEMS={si:{NONE:{unit:UNIT_NONE,prefix:PREFIXES.NONE[""]},LENGTH:{unit:UNITS.m,prefix:PREFIXES.SHORT[""]},MASS:{unit:UNITS.g,prefix:PREFIXES.SHORT["k"]},TIME:{unit:UNITS.s,prefix:PREFIXES.SHORT[""]},CURRENT:{unit:UNITS.A,prefix:PREFIXES.SHORT[""]},TEMPERATURE:{unit:UNITS.K,prefix:PREFIXES.SHORT[""]},LUMINOUS_INTENSITY:{unit:UNITS.cd,prefix:PREFIXES.SHORT[""]},AMOUNT_OF_SUBSTANCE:{unit:UNITS.mol,prefix:PREFIXES.SHORT[""]},ANGLE:{unit:UNITS.rad,prefix:PREFIXES.SHORT[""]},BIT:{unit:UNITS.bit,prefix:PREFIXES.SHORT[""]},FORCE:{unit:UNITS.N,prefix:PREFIXES.SHORT[""]},ENERGY:{unit:UNITS.J,prefix:PREFIXES.SHORT[""]},POWER:{unit:UNITS.W,prefix:PREFIXES.SHORT[""]},PRESSURE:{unit:UNITS.Pa,prefix:PREFIXES.SHORT[""]},ELECTRIC_CHARGE:{unit:UNITS.C,prefix:PREFIXES.SHORT[""]},ELECTRIC_CAPACITANCE:{unit:UNITS.F,prefix:PREFIXES.SHORT[""]},ELECTRIC_POTENTIAL:{unit:UNITS.V,prefix:PREFIXES.SHORT[""]},ELECTRIC_RESISTANCE:{unit:UNITS.ohm,prefix:PREFIXES.SHORT[""]},ELECTRIC_INDUCTANCE:{unit:UNITS.H,prefix:PREFIXES.SHORT[""]},ELECTRIC_CONDUCTANCE:{unit:UNITS.S,prefix:PREFIXES.SHORT[""]},MAGNETIC_FLUX:{unit:UNITS.Wb,prefix:PREFIXES.SHORT[""]},MAGNETIC_FLUX_DENSITY:{unit:UNITS.T,prefix:PREFIXES.SHORT[""]},FREQUENCY:{unit:UNITS.Hz,prefix:PREFIXES.SHORT[""]}}};UNIT_SYSTEMS.cgs=JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));UNIT_SYSTEMS.cgs.LENGTH={unit:UNITS.m,prefix:PREFIXES.SHORT["c"]};UNIT_SYSTEMS.cgs.MASS={unit:UNITS.g,prefix:PREFIXES.SHORT[""]};UNIT_SYSTEMS.cgs.FORCE={unit:UNITS.dyn,prefix:PREFIXES.SHORT[""]};UNIT_SYSTEMS.cgs.ENERGY={unit:UNITS.erg,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.us=JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));UNIT_SYSTEMS.us.LENGTH={unit:UNITS.ft,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.us.MASS={unit:UNITS.lbm,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.us.TEMPERATURE={unit:UNITS.degF,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.us.FORCE={unit:UNITS.lbf,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.us.ENERGY={unit:UNITS.BTU,prefix:PREFIXES.BTU[""]};UNIT_SYSTEMS.us.POWER={unit:UNITS.hp,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.us.PRESSURE={unit:UNITS.psi,prefix:PREFIXES.NONE[""]};UNIT_SYSTEMS.auto=JSON.parse(JSON.stringify(UNIT_SYSTEMS.si));var currentUnitSystem=UNIT_SYSTEMS.auto;Unit.setUnitSystem=function(name){if(UNIT_SYSTEMS.hasOwnProperty(name)){currentUnitSystem=UNIT_SYSTEMS[name]}else{throw new Error("Unit system "+name+" does not exist. Choices are: "+Object.keys(UNIT_SYSTEMS).join(", "))}};Unit.getUnitSystem=function(){for(var key in UNIT_SYSTEMS){if(UNIT_SYSTEMS[key]===currentUnitSystem){return key}}};Unit.typeConverters={BigNumber:function(x){return new type.BigNumber(x+"")},Fraction:function(x){return new type.Fraction(x)},Complex:function(x){return x},number:function(x){return x}};Unit._getNumberConverter=function(type){if(!Unit.typeConverters[type]){throw new TypeError('Unsupported type "'+type+'"')}return Unit.typeConverters[type]};for(var key in UNITS){var unit=UNITS[key];unit.dimensions=unit.base.dimensions}for(var name in ALIASES){if(ALIASES.hasOwnProperty(name)){var unit=UNITS[ALIASES[name]];var alias={};for(var key in unit){if(unit.hasOwnProperty(key)){alias[key]=unit[key]}}alias.name=name;UNITS[name]=alias}}function assertUnitNameIsValid(name){for(var i=0;i<name.length;i++){var c=name.charAt(i);var isValidAlpha=function(p){return/^[a-zA-Z]$/.test(p)};var isDigit=function(c){return c>="0"&&c<="9"};if(i===0&&!isValidAlpha(c))throw new Error('Invalid unit name (must begin with alpha character): "'+name+'"');if(i>0&&!(isValidAlpha(c)||isDigit(c)))throw new Error('Invalid unit name (only alphanumeric characters are allowed): "'+name+'"')}}Unit.createUnit=function(obj,options){if(typeof obj!=="object"){throw new TypeError("createUnit expects first parameter to be of type 'Object'")}if(options&&options.override){for(var key in obj){if(obj.hasOwnProperty(key)){Unit.deleteUnit(key)}if(obj[key].aliases){console.log(obj[key].aliases);for(var i=0;i<obj[key].aliases.length;i++){Unit.deleteUnit(obj[key].aliases[i])}}}}var lastUnit;for(var key in obj){if(obj.hasOwnProperty(key)){lastUnit=Unit.createUnitSingle(key,obj[key])}}return lastUnit};Unit.createUnitSingle=function(name,obj,options){if(typeof obj==="undefined"||obj===null){obj={}}if(typeof name!=="string"){throw new TypeError("createUnitSingle expects first parameter to be of type 'string'")}if(UNITS.hasOwnProperty(name)){throw new Error('Cannot create unit "'+name+'": a unit with that name already exists')}assertUnitNameIsValid(name);var defUnit=null;var aliases=[];var offset=0;var definition;var prefixes;if(obj&&obj.type==="Unit"){defUnit=obj.clone()}else if(typeof obj==="string"){if(obj!==""){definition=obj}}else if(typeof obj==="object"){definition=obj.definition;prefixes=obj.prefixes;offset=obj.offset;aliases=obj.aliases}else{throw new TypeError('Cannot create unit "'+name+'" from "'+obj.toString()+'": expecting "string" or "Unit" or "Object"')}if(aliases){for(var i=0;i<aliases.length;i++){if(UNITS.hasOwnProperty(aliases[i])){throw new Error('Cannot create alias "'+aliases[i]+'": a unit with that name already exists')}}}if(definition&&typeof definition==="string"&&!defUnit){try{defUnit=Unit.parse(definition,{allowNoUnits:true})}catch(ex){ex.message='Could not create unit "'+name+'" from "'+definition+'": '+ex.message;throw ex}}else if(definition&&definition.type==="Unit"){defUnit=definition.clone()}aliases=aliases||[];offset=offset||0;if(prefixes&&prefixes.toUpperCase)prefixes=PREFIXES[prefixes.toUpperCase()]||PREFIXES.NONE;else prefixes=PREFIXES.NONE;var newUnit={};if(!defUnit){var baseName=name+"_STUFF";if(BASE_DIMENSIONS.indexOf(baseName)>=0){throw new Error('Cannot create new base unit "'+name+'": a base unit with that name already exists (and cannot be overridden)')}BASE_DIMENSIONS.push(baseName);for(var b in BASE_UNITS){if(BASE_UNITS.hasOwnProperty(b)){BASE_UNITS[b].dimensions[BASE_DIMENSIONS.length-1]=0}}var newBaseUnit={dimensions:[]};for(var i=0;i<BASE_DIMENSIONS.length;i++){newBaseUnit.dimensions[i]=0}newBaseUnit.dimensions[BASE_DIMENSIONS.length-1]=1;newBaseUnit.key=baseName;BASE_UNITS[baseName]=newBaseUnit;newUnit={name:name,value:1,dimensions:BASE_UNITS[baseName].dimensions.slice(0),prefixes:prefixes,offset:offset,base:baseName};currentUnitSystem[baseName]={unit:newUnit,prefix:PREFIXES.NONE[""]}}else{newUnit={name:name,value:defUnit.value,dimensions:defUnit.dimensions.slice(0),prefixes:prefixes,offset:offset};var anyMatch=false;for(var i in BASE_UNITS){if(BASE_UNITS.hasOwnProperty(i)){var match=true;for(var j=0;j<BASE_DIMENSIONS.length;j++){if(Math.abs((newUnit.dimensions[j]||0)-(BASE_UNITS[i].dimensions[j]||0))>1e-12){match=false;break}}if(match){anyMatch=true;break}}}if(!anyMatch){var baseName=name+"_STUFF";var newBaseUnit={dimensions:defUnit.dimensions.slice(0)};newBaseUnit.key=baseName;BASE_UNITS[baseName]=newBaseUnit;currentUnitSystem[baseName]={unit:newUnit,prefix:PREFIXES.NONE[""]};newUnit.base=baseName}}Unit.UNITS[name]=newUnit;for(var i=0;i<aliases.length;i++){var aliasName=aliases[i];var alias={};for(var key in newUnit){if(newUnit.hasOwnProperty(key)){alias[key]=newUnit[key]}}alias.name=aliasName;Unit.UNITS[aliasName]=alias}return new Unit(null,name)};Unit.deleteUnit=function(name){delete Unit.UNITS[name]};Unit.PREFIXES=PREFIXES;Unit.BASE_UNITS=BASE_UNITS;Unit.UNITS=UNITS;Unit.UNIT_SYSTEMS=UNIT_SYSTEMS;return Unit}exports.name="Unit";exports.path="type";exports.factory=factory;exports.math=true},{"../../function/arithmetic/abs":275,"../../function/arithmetic/addScalar":277,"../../function/arithmetic/divideScalar":282,"../../function/arithmetic/fix":287,"../../function/arithmetic/multiplyScalar":297,"../../function/arithmetic/pow":300,"../../function/arithmetic/subtract":305,"../../function/relational/equal":372,"../../function/string/format":391,"../../function/utils/isNumeric":427,"../../function/utils/typeof":431,"../../type/complex/Complex":442,"../../type/number":475,"../../utils/bignumber/constants":492,"../../utils/object":509,"../../utils/string":510,util:529}],480:[function(require,module,exports){"use strict";var deepMap=require("../../../utils/collection/deepMap");function factory(type,config,load,typed){var createUnit=typed("createUnit",{"Object, Object":function(obj,options){return type.Unit.createUnit(obj,options)},Object:function(obj){return type.Unit.createUnit(obj,{})},"string, Unit | string | Object, Object":function(name,def,options){var obj={};obj[name]=def;return type.Unit.createUnit(obj,options)},"string, Unit | string | Object":function(name,def){var obj={};obj[name]=def;return type.Unit.createUnit(obj,{})},string:function(name){var obj={};obj[name]={};return type.Unit.createUnit(obj,{})}});return createUnit}exports.name="createUnit";exports.factory=factory},{"../../../utils/collection/deepMap":500}],481:[function(require,module,exports){"use strict";var deepMap=require("../../../utils/collection/deepMap");function factory(type,config,load,typed){var splitUnit=typed("splitUnit",{"Unit, Array":function(unit,parts){return unit.splitUnit(parts)}});return splitUnit}exports.name="splitUnit";exports.factory=factory},{"../../../utils/collection/deepMap":500}],482:[function(require,module,exports){"use strict";var deepMap=require("../../../utils/collection/deepMap");function factory(type,config,load,typed){var unit=typed("unit",{Unit:function(x){return x.clone()},string:function(x){if(type.Unit.isValuelessUnit(x)){return new type.Unit(null,x)}return type.Unit.parse(x)},"number | BigNumber | Fraction | Complex, string":function(value,unit){return new type.Unit(value,unit)},"Array | Matrix":function(x){return deepMap(x,unit)}});unit.toTex={1:"\\left(${args[0]}\\right)",2:"\\left(\\left(${args[0]}\\right)${args[1]}\\right)"};return unit}exports.name="unit";exports.factory=factory},{"../../../utils/collection/deepMap":500}],483:[function(require,module,exports){module.exports=[require("./Unit"),require("./function/unit"),require("./function/createUnit"),require("./function/splitUnit"),require("./physicalConstants")]},{"./Unit":479,"./function/createUnit":480,"./function/splitUnit":481,"./function/unit":482,"./physicalConstants":484}],484:[function(require,module,exports){var lazy=require("../../utils/object").lazy;function factory(type,config,load,typed,math){function fixedUnit(str){var unit=type.Unit.parse(str);unit.fixPrefix=true;return unit}lazy(math,"speedOfLight",function(){return fixedUnit("299792458 m s^-1")});lazy(math,"gravitationConstant",function(){return fixedUnit("6.6738480e-11 m^3 kg^-1 s^-2")});lazy(math,"planckConstant",function(){return fixedUnit("6.626069311e-34 J s")});lazy(math,"reducedPlanckConstant",function(){return fixedUnit("1.05457172647e-34 J s")});lazy(math,"magneticConstant",function(){return fixedUnit("1.2566370614e-6 N A^-2")});lazy(math,"electricConstant",function(){return fixedUnit("8.854187817e-12 F m^-1")});lazy(math,"vacuumImpedance",function(){return fixedUnit("376.730313461 ohm")});lazy(math,"coulomb",function(){return fixedUnit("8.9875517873681764e9 N m^2 C^-2")});lazy(math,"elementaryCharge",function(){return fixedUnit("1.60217656535e-19 C")});lazy(math,"bohrMagneton",function(){return fixedUnit("9.2740096820e-24 J T^-1")});lazy(math,"conductanceQuantum",function(){return fixedUnit("7.748091734625e-5 S")});lazy(math,"inverseConductanceQuantum",function(){return fixedUnit("12906.403721742 ohm")});lazy(math,"magneticFluxQuantum",function(){return fixedUnit("2.06783375846e-15 Wb")});lazy(math,"nuclearMagneton",function(){return fixedUnit("5.0507835311e-27 J T^-1")});lazy(math,"klitzing",function(){return fixedUnit("25812.807443484 ohm")});lazy(math,"bohrRadius",function(){return fixedUnit("5.291772109217e-11 m")});lazy(math,"classicalElectronRadius",function(){return fixedUnit("2.817940326727e-15 m")});lazy(math,"electronMass",function(){return fixedUnit("9.1093829140e-31 kg")});lazy(math,"fermiCoupling",function(){return fixedUnit("1.1663645e-5 GeV^-2")});lazy(math,"fineStructure",function(){return.007297352569824});lazy(math,"hartreeEnergy",function(){return fixedUnit("4.3597443419e-18 J")});lazy(math,"protonMass",function(){return fixedUnit("1.67262177774e-27 kg")});lazy(math,"deuteronMass",function(){return fixedUnit("3.3435830926e-27 kg")});lazy(math,"neutronMass",function(){return fixedUnit("1.6749271613e-27 kg")});lazy(math,"quantumOfCirculation",function(){return fixedUnit("3.636947552024e-4 m^2 s^-1")});lazy(math,"rydberg",function(){return fixedUnit("10973731.56853955 m^-1")});lazy(math,"thomsonCrossSection",function(){return fixedUnit("6.65245873413e-29 m^2")});lazy(math,"weakMixingAngle",function(){return.222321});lazy(math,"efimovFactor",function(){return 22.7});lazy(math,"atomicMass",function(){return fixedUnit("1.66053892173e-27 kg")});lazy(math,"avogadro",function(){return fixedUnit("6.0221412927e23 mol^-1")});lazy(math,"boltzmann",function(){return fixedUnit("1.380648813e-23 J K^-1")});lazy(math,"faraday",function(){return fixedUnit("96485.336521 C mol^-1")});lazy(math,"firstRadiation",function(){return fixedUnit("3.7417715317e-16 W m^2")});lazy(math,"loschmidt",function(){return fixedUnit("2.686780524e25 m^-3")});lazy(math,"gasConstant",function(){return fixedUnit("8.314462175 J K^-1 mol^-1")});lazy(math,"molarPlanckConstant",function(){return fixedUnit("3.990312717628e-10 J s mol^-1")});lazy(math,"molarVolume",function(){return fixedUnit("2.241396820e-10 m^3 mol^-1")});lazy(math,"sackurTetrode",function(){return-1.164870823});lazy(math,"secondRadiation",function(){return fixedUnit("1.438777013e-2 m K")});lazy(math,"stefanBoltzmann",function(){return fixedUnit("5.67037321e-8 W m^-2 K^-4")});lazy(math,"wienDisplacement",function(){return fixedUnit("2.897772126e-3 m K")});lazy(math,"molarMass",function(){return fixedUnit("1e-3 kg mol^-1")});lazy(math,"molarMassC12",function(){return fixedUnit("1.2e-2 kg mol^-1")});lazy(math,"gravity",function(){return fixedUnit("9.80665 m s^-2")});lazy(math,"planckLength",function(){return fixedUnit("1.61619997e-35 m")});lazy(math,"planckMass",function(){return fixedUnit("2.1765113e-8 kg")});lazy(math,"planckTime",function(){return fixedUnit("5.3910632e-44 s")});lazy(math,"planckCharge",function(){return fixedUnit("1.87554595641e-18 C")});lazy(math,"planckTemperature",function(){return fixedUnit("1.41683385e+32 K")})}exports.factory=factory;exports.lazy=false;exports.math=true},{"../../utils/object":509}],485:[function(require,module,exports){"use strict";function NumberFormatter(value){var match=String(value).toLowerCase().match(/^0*?(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!match){throw new SyntaxError("Invalid number")}var sign=match[1];var coefficients=match[2];var exponent=parseFloat(match[4]||"0");var dot=coefficients.indexOf(".");exponent+=dot!==-1?dot-1:coefficients.length-1;this.sign=sign;this.coefficients=coefficients.replace(".","").replace(/^0*/,function(zeros){exponent-=zeros.length;return""}).replace(/0*$/,"").split("").map(function(d){return parseInt(d)});if(this.coefficients.length===0){this.coefficients.push(0);exponent++}this.exponent=exponent}NumberFormatter.prototype.toEngineering=function(precision){var rounded=this.roundDigits(precision);var e=rounded.exponent;var c=rounded.coefficients;var newExp=e%3===0?e:e<0?e-3-e%3:e-e%3;var significandsDiff=e>=0?e:Math.abs(newExp);if(c.length-1<significandsDiff)c=c.concat(zeros(significandsDiff-(c.length-1)));var expDiff=Math.abs(e-newExp);var decimalIdx=1;var str="";while(--expDiff>=0)decimalIdx++;var decimals=c.slice(decimalIdx).join("");var decimalVal=decimals.match(/[1-9]/)?"."+decimals:"";str=c.slice(0,decimalIdx).join("")+decimalVal;str+="e"+(e>=0?"+":"")+newExp.toString();return rounded.sign+str};NumberFormatter.prototype.toFixed=function(precision){var rounded=this.roundDigits(this.exponent+1+(precision||0));var c=rounded.coefficients;var p=rounded.exponent+1;var pp=p+(precision||0);if(c.length<pp){c=c.concat(zeros(pp-c.length))}if(p<0){c=zeros(-p+1).concat(c);p=1}if(precision){c.splice(p,0,p===0?"0.":".")}return this.sign+c.join("")};NumberFormatter.prototype.toExponential=function(precision){var rounded=precision?this.roundDigits(precision):this.clone();var c=rounded.coefficients;var e=rounded.exponent;if(c.length<precision){c=c.concat(zeros(precision-c.length))}var first=c.shift();return this.sign+first+(c.length>0?"."+c.join(""):"")+"e"+(e>=0?"+":"")+e};NumberFormatter.prototype.toPrecision=function(precision,options){var lower=options&&options.lower!==undefined?options.lower:.001;var upper=options&&options.upper!==undefined?options.upper:1e5;
var abs=Math.abs(Math.pow(10,this.exponent));if(abs<lower||abs>=upper){return this.toExponential(precision)}else{var rounded=precision?this.roundDigits(precision):this.clone();var c=rounded.coefficients;var e=rounded.exponent;if(c.length<precision){c=c.concat(zeros(precision-c.length))}c=c.concat(zeros(e-c.length+1+(c.length<precision?precision-c.length:0)));c=zeros(-e).concat(c);var dot=e>0?e:0;if(dot<c.length-1){c.splice(dot+1,0,".")}return this.sign+c.join("")}};NumberFormatter.prototype.clone=function(){var clone=new NumberFormatter("0");clone.sign=this.sign;clone.coefficients=this.coefficients.slice(0);clone.exponent=this.exponent;return clone};NumberFormatter.prototype.roundDigits=function(precision){var rounded=this.clone();var c=rounded.coefficients;while(precision<=0){c.unshift(0);rounded.exponent++;precision++}if(c.length>precision){var removed=c.splice(precision,c.length-precision);if(removed[0]>=5){var i=precision-1;c[i]++;while(c[i]===10){c.pop();if(i===0){c.unshift(0);rounded.exponent++;i++}i--;c[i]++}}}return rounded};function zeros(length){var arr=[];for(var i=0;i<length;i++){arr.push(0)}return arr}module.exports=NumberFormatter},{}],486:[function(require,module,exports){"use strict";var number=require("./number");var string=require("./string");var object=require("./object");var types=require("./types");var DimensionError=require("../error/DimensionError");var IndexError=require("../error/IndexError");exports.size=function(x){var s=[];while(Array.isArray(x)){s.push(x.length);x=x[0]}return s};function _validate(array,size,dim){var i;var len=array.length;if(len!=size[dim]){throw new DimensionError(len,size[dim])}if(dim<size.length-1){var dimNext=dim+1;for(i=0;i<len;i++){var child=array[i];if(!Array.isArray(child)){throw new DimensionError(size.length-1,size.length,"<")}_validate(array[i],size,dimNext)}}else{for(i=0;i<len;i++){if(Array.isArray(array[i])){throw new DimensionError(size.length+1,size.length,">")}}}}exports.validate=function(array,size){var isScalar=size.length==0;if(isScalar){if(Array.isArray(array)){throw new DimensionError(array.length,0)}}else{_validate(array,size,0)}};exports.validateIndex=function(index,length){if(!number.isNumber(index)||!number.isInteger(index)){throw new TypeError("Index must be an integer (value: "+index+")")}if(index<0||typeof length==="number"&&index>=length){throw new IndexError(index,length)}};exports.UNINITIALIZED={};exports.resize=function(array,size,defaultValue){if(!Array.isArray(array)||!Array.isArray(size)){throw new TypeError("Array expected")}if(size.length===0){throw new Error("Resizing to scalar is not supported")}size.forEach(function(value){if(!number.isNumber(value)||!number.isInteger(value)||value<0){throw new TypeError("Invalid size, must contain positive integers "+"(size: "+string.format(size)+")")}});var _defaultValue=defaultValue!==undefined?defaultValue:0;_resize(array,size,0,_defaultValue);return array};function _resize(array,size,dim,defaultValue){var i;var elem;var oldLen=array.length;var newLen=size[dim];var minLen=Math.min(oldLen,newLen);array.length=newLen;if(dim<size.length-1){var dimNext=dim+1;for(i=0;i<minLen;i++){elem=array[i];if(!Array.isArray(elem)){elem=[elem];array[i]=elem}_resize(elem,size,dimNext,defaultValue)}for(i=minLen;i<newLen;i++){elem=[];array[i]=elem;_resize(elem,size,dimNext,defaultValue)}}else{for(i=0;i<minLen;i++){while(Array.isArray(array[i])){array[i]=array[i][0]}}if(defaultValue!==exports.UNINITIALIZED){for(i=minLen;i<newLen;i++){array[i]=defaultValue}}}}exports.squeeze=function(array,size){var s=size||exports.size(array);while(Array.isArray(array)&&array.length===1){array=array[0];s.shift()}var dims=s.length;while(s[dims-1]===1){dims--}if(dims<s.length){array=_squeeze(array,dims,0);s.length=dims}return array};function _squeeze(array,dims,dim){var i,ii;if(dim<dims){var next=dim+1;for(i=0,ii=array.length;i<ii;i++){array[i]=_squeeze(array[i],dims,next)}}else{while(Array.isArray(array)){array=array[0]}}return array}exports.unsqueeze=function(array,dims,outer,size){var s=size||exports.size(array);if(outer){for(var i=0;i<outer;i++){array=[array];s.unshift(1)}}array=_unsqueeze(array,dims,0);while(s.length<dims){s.push(1)}return array};function _unsqueeze(array,dims,dim){var i,ii;if(Array.isArray(array)){var next=dim+1;for(i=0,ii=array.length;i<ii;i++){array[i]=_unsqueeze(array[i],dims,next)}}else{for(var d=dim;d<dims;d++){array=[array]}}return array}exports.flatten=function(array){if(!Array.isArray(array)){return array}var flat=[];array.forEach(function callback(value){if(Array.isArray(value)){value.forEach(callback)}else{flat.push(value)}});return flat};exports.isArray=Array.isArray},{"../error/DimensionError":30,"../error/IndexError":31,"./number":508,"./object":509,"./string":510,"./types":511}],487:[function(require,module,exports){var bitwise=require("./bitwise");module.exports=function bitAnd(x,y){if(x.isFinite()&&!x.isInteger()||y.isFinite()&&!y.isInteger()){throw new Error("Integers expected in function bitAnd")}var BigNumber=x.constructor;if(x.isNaN()||y.isNaN()){return new BigNumber(NaN)}if(x.isZero()||y.eq(-1)||x.eq(y)){return x}if(y.isZero()||x.eq(-1)){return y}if(!x.isFinite()||!y.isFinite()){if(!x.isFinite()&&!y.isFinite()){if(x.isNegative()==y.isNegative()){return x}return new BigNumber(0)}if(!x.isFinite()){if(y.isNegative()){return x}if(x.isNegative()){return new BigNumber(0)}return y}if(!y.isFinite()){if(x.isNegative()){return y}if(y.isNegative()){return new BigNumber(0)}return x}}return bitwise(x,y,function(a,b){return a&b})}},{"./bitwise":491}],488:[function(require,module,exports){module.exports=function bitNot(x){if(x.isFinite()&&!x.isInteger()){throw new Error("Integer expected in function bitNot")}var BigNumber=x.constructor;var prevPrec=BigNumber.precision;BigNumber.config({precision:1e9});var x=x.plus(new BigNumber(1));x.s=-x.s||null;BigNumber.config({precision:prevPrec});return x}},{}],489:[function(require,module,exports){var bitwise=require("./bitwise");module.exports=function bitOr(x,y){if(x.isFinite()&&!x.isInteger()||y.isFinite()&&!y.isInteger()){throw new Error("Integers expected in function bitOr")}var BigNumber=x.constructor;if(x.isNaN()||y.isNaN()){return new BigNumber(NaN)}var negOne=new BigNumber((-1));if(x.isZero()||y.eq(negOne)||x.eq(y)){return y}if(y.isZero()||x.eq(negOne)){return x}if(!x.isFinite()||!y.isFinite()){if(!x.isFinite()&&!x.isNegative()&&y.isNegative()||x.isNegative()&&!y.isNegative()&&!y.isFinite()){return negOne}if(x.isNegative()&&y.isNegative()){return x.isFinite()?x:y}return x.isFinite()?y:x}return bitwise(x,y,function(a,b){return a|b})}},{"./bitwise":491}],490:[function(require,module,exports){var bitwise=require("./bitwise");var bitNot=require("./bitNot");module.exports=function bitXor(x,y){if(x.isFinite()&&!x.isInteger()||y.isFinite()&&!y.isInteger()){throw new Error("Integers expected in function bitXor")}var BigNumber=x.constructor;if(x.isNaN()||y.isNaN()){return new BigNumber(NaN)}if(x.isZero()){return y}if(y.isZero()){return x}if(x.eq(y)){return new BigNumber(0)}var negOne=new BigNumber((-1));if(x.eq(negOne)){return bitNot(y)}if(y.eq(negOne)){return bitNot(x)}if(!x.isFinite()||!y.isFinite()){if(!x.isFinite()&&!y.isFinite()){return negOne}return new BigNumber(x.isNegative()==y.isNegative()?Infinity:-Infinity)}return bitwise(x,y,function(a,b){return a^b})}},{"./bitNot":488,"./bitwise":491}],491:[function(require,module,exports){var bitNot=require("./bitNot");module.exports=function bitwise(x,y,func){var BigNumber=x.constructor;var xBits,yBits;var xSign=+(x.s<0);var ySign=+(y.s<0);if(xSign){xBits=decCoefficientToBinaryString(bitNot(x));for(var i=0;i<xBits.length;++i){xBits[i]^=1}}else{xBits=decCoefficientToBinaryString(x)}if(ySign){yBits=decCoefficientToBinaryString(bitNot(y));for(var i=0;i<yBits.length;++i){yBits[i]^=1}}else{yBits=decCoefficientToBinaryString(y)}var minBits,maxBits,minSign;if(xBits.length<=yBits.length){minBits=xBits;maxBits=yBits;minSign=xSign}else{minBits=yBits;maxBits=xBits;minSign=ySign}var shortLen=minBits.length;var longLen=maxBits.length;var expFuncVal=func(xSign,ySign)^1;var outVal=new BigNumber(expFuncVal^1);var twoPower=new BigNumber(1);var two=new BigNumber(2);var prevPrec=BigNumber.precision;BigNumber.config({precision:1e9});while(shortLen>0){if(func(minBits[--shortLen],maxBits[--longLen])==expFuncVal){outVal=outVal.plus(twoPower)}twoPower=twoPower.times(two)}while(longLen>0){if(func(minSign,maxBits[--longLen])==expFuncVal){outVal=outVal.plus(twoPower)}twoPower=twoPower.times(two)}BigNumber.config({precision:prevPrec});if(expFuncVal==0){outVal.s=-outVal.s}return outVal};function decCoefficientToBinaryString(x){var a=x.d;var r=a[0]+"";for(var i=1;i<a.length;++i){var s=a[i]+"";for(var z=7-s.length;z--;){s="0"+s}r+=s}var j;for(j=r.length-1;r.charAt(j)=="0";--j);var xe=x.e;var str=r.slice(0,j+1||1);var strL=str.length;if(xe>0){if(++xe>strL){for(xe-=strL;xe--;str+="0");}else if(xe<strL){str=str.slice(0,xe)+"."+str.slice(xe)}}var arr=[0];for(var i=0;i<str.length;){for(var arrL=arr.length;arrL--;arr[arrL]*=10);arr[0]+=str.charAt(i++)<<0;for(var j=0;j<arr.length;++j){if(arr[j]>1){if(arr[j+1]==null){arr[j+1]=0}arr[j+1]+=arr[j]>>1;arr[j]&=1}}}return arr.reverse()}},{"./bitNot":488}],492:[function(require,module,exports){var memoize=require("../function").memoize;exports.e=memoize(function(BigNumber){return new BigNumber(1).exp()},hasher);exports.phi=memoize(function(BigNumber){return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2)},hasher);exports.pi=memoize(function(BigNumber){return pi=BigNumber.acos(-1)},hasher);exports.tau=memoize(function(BigNumber){return exports.pi(BigNumber).times(2)},hasher);function hasher(args){return args[0].precision}},{"../function":505}],493:[function(require,module,exports){exports.format=function(value,options){if(typeof options==="function"){return options(value)}if(!value.isFinite()){return value.isNaN()?"NaN":value.gt(0)?"Infinity":"-Infinity"}var notation="auto";var precision=undefined;if(options!==undefined){if(options.notation){notation=options.notation}if(typeof options==="number"){precision=options}else if(options.precision){precision=options.precision}}switch(notation){case"fixed":return exports.toFixed(value,precision);case"exponential":return exports.toExponential(value,precision);case"auto":var lower=.001;var upper=1e5;if(options&&options.exponential){if(options.exponential.lower!==undefined){lower=options.exponential.lower}if(options.exponential.upper!==undefined){upper=options.exponential.upper}}var oldConfig={toExpNeg:value.constructor.toExpNeg,toExpPos:value.constructor.toExpPos};value.constructor.config({toExpNeg:Math.round(Math.log(lower)/Math.LN10),toExpPos:Math.round(Math.log(upper)/Math.LN10)});if(value.isZero())return"0";var str;var abs=value.abs();if(abs.gte(lower)&&abs.lt(upper)){str=value.toSignificantDigits(precision).toFixed()}else{str=exports.toExponential(value,precision)}return str.replace(/((\.\d*?)(0+))($|e)/,function(){var digits=arguments[2];var e=arguments[4];return digits!=="."?digits+e:e});default:throw new Error('Unknown notation "'+notation+'". '+'Choose "auto", "exponential", or "fixed".')}};exports.toExponential=function(value,precision){if(precision!==undefined){return value.toExponential(precision-1)}else{return value.toExponential()}};exports.toFixed=function(value,precision){return value.toFixed(precision||0)}},{}],494:[function(require,module,exports){module.exports=function leftShift(x,y){if(x.isFinite()&&!x.isInteger()||y.isFinite()&&!y.isInteger()){throw new Error("Integers expected in function leftShift")}var BigNumber=x.constructor;if(x.isNaN()||y.isNaN()||y.isNegative()&&!y.isZero()){return new BigNumber(NaN)}if(x.isZero()||y.isZero()){return x}if(!x.isFinite()&&!y.isFinite()){return new BigNumber(NaN)}if(y.lt(55)){return x.times(Math.pow(2,y.toNumber())+"")}return x.times(new BigNumber(2).pow(y))}},{}],495:[function(require,module,exports){"use strict";module.exports=function nearlyEqual(x,y,epsilon){if(epsilon==null){return x.eq(y)}if(x.eq(y)){return true}if(x.isNaN()||y.isNaN()){return false}if(x.isFinite()&&y.isFinite()){var diff=x.minus(y).abs();if(diff.isZero()){return true}else{var max=x.constructor.max(x.abs(),y.abs());return diff.lte(max.times(epsilon))}}return false}},{}],496:[function(require,module,exports){module.exports=function rightArithShift(x,y){if(x.isFinite()&&!x.isInteger()||y.isFinite()&&!y.isInteger()){throw new Error("Integers expected in function rightArithShift")}var BigNumber=x.constructor;if(x.isNaN()||y.isNaN()||y.isNegative()&&!y.isZero()){return new BigNumber(NaN)}if(x.isZero()||y.isZero()){return x}if(!y.isFinite()){if(x.isNegative()){return new BigNumber((-1))}if(!x.isFinite()){return new BigNumber(NaN)}return new BigNumber(0)}if(y.lt(55)){return x.div(Math.pow(2,y.toNumber())+"").floor()}return x.div(new BigNumber(2).pow(y)).floor()}},{}],497:[function(require,module,exports){"use strict";exports.isBoolean=function(value){return typeof value=="boolean"}},{}],498:[function(require,module,exports){"use strict";var isCollection=require("./isCollection");module.exports=function containsCollections(array){for(var i=0;i<array.length;i++){if(isCollection(array[i])){return true}}return false}},{"./isCollection":501}],499:[function(require,module,exports){"use strict";module.exports=function deepForEach(array,callback){if(array&&array.isMatrix===true){array=array.valueOf()}for(var i=0,ii=array.length;i<ii;i++){var value=array[i];if(Array.isArray(value)){deepForEach(value,callback)}else{callback(value)}}}},{}],500:[function(require,module,exports){"use strict";module.exports=function deepMap(array,callback,skipZeros){if(array&&typeof array.map==="function"){return array.map(function(x){return deepMap(x,callback,skipZeros)})}else{return callback(array)}}},{}],501:[function(require,module,exports){"use strict";module.exports=function isCollection(x){return Array.isArray(x)||x&&x.isMatrix===true}},{}],502:[function(require,module,exports){"use strict";var arraySize=require("../array").size;var IndexError=require("../../error/IndexError");module.exports=function(mat,dim,callback){var size=Array.isArray(mat)?arraySize(mat):mat.size();if(dim<0||dim>=size.length){throw new IndexError(dim,size.length)}if(mat&&mat.isMatrix===true){return mat.create(_reduce(mat.valueOf(),dim,callback))}else{return _reduce(mat,dim,callback)}};function _reduce(mat,dim,callback){var i,ret,val,tran;if(dim<=0){if(!Array.isArray(mat[0])){val=mat[0];for(i=1;i<mat.length;i++){val=callback(val,mat[i])}return val}else{tran=_switch(mat);ret=[];for(i=0;i<tran.length;i++){ret[i]=_reduce(tran[i],dim-1,callback)}return ret}}else{ret=[];for(i=0;i<mat.length;i++){ret[i]=_reduce(mat[i],dim-1,callback)}return ret}}function _switch(mat){var I=mat.length;var J=mat[0].length;var i,j;var ret=[];for(j=0;j<J;j++){var tmp=[];for(i=0;i<I;i++){tmp.push(mat[i][j])}ret.push(tmp)}return ret}},{"../../error/IndexError":31,"../array":486}],503:[function(require,module,exports){"use strict";module.exports=function scatter(a,j,w,x,u,mark,c,f,inverse,update,value){var avalues=a._values;var aindex=a._index;var aptr=a._ptr;var cindex=c._index;var k,k0,k1,i;if(x){for(k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){i=aindex[k];if(w[i]!==mark){w[i]=mark;cindex.push(i);if(update){x[i]=inverse?f(avalues[k],value):f(value,avalues[k]);u[i]=mark}else{x[i]=avalues[k]}}else{x[i]=inverse?f(avalues[k],x[i]):f(x[i],avalues[k]);u[i]=mark}}}else{for(k0=aptr[j],k1=aptr[j+1],k=k0;k<k1;k++){i=aindex[k];if(w[i]!==mark){w[i]=mark;cindex.push(i)}else{u[i]=mark}}}}},{}],504:[function(require,module,exports){var Emitter=require("tiny-emitter");exports.mixin=function(obj){var emitter=new Emitter;obj.on=emitter.on.bind(emitter);obj.off=emitter.off.bind(emitter);obj.once=emitter.once.bind(emitter);obj.emit=emitter.emit.bind(emitter);return obj}},{"tiny-emitter":517}],505:[function(require,module,exports){exports.memoize=function(fn,hasher){return function memoize(){if(typeof memoize.cache!=="object"){memoize.cache={}}var args=[];for(var i=0;i<arguments.length;i++){args[i]=arguments[i]}var hash=hasher?hasher(args):JSON.stringify(args);if(!(hash in memoize.cache)){return memoize.cache[hash]=fn.apply(fn,args)}return memoize.cache[hash]}};exports.maxArgumentCount=function(fn){return Object.keys(fn.signatures||{}).reduce(function(args,signature){var count=(signature.match(/,/g)||[]).length+1;return Math.max(args,count)},-1)}},{}],506:[function(require,module,exports){"use strict";exports.array=require("./array");exports["boolean"]=require("./boolean");exports["function"]=require("./function");exports.number=require("./number");exports.object=require("./object");exports.string=require("./string");exports.types=require("./types");exports.emitter=require("./emitter")},{"./array":486,"./boolean":497,"./emitter":504,"./function":505,"./number":508,"./object":509,"./string":510,"./types":511}],507:[function(require,module,exports){"use strict";exports.symbols={Alpha:"A",alpha:"\\alpha",Beta:"B",beta:"\\beta",Gamma:"\\Gamma",gamma:"\\gamma",Delta:"\\Delta",delta:"\\delta",Epsilon:"E",epsilon:"\\epsilon",varepsilon:"\\varepsilon",Zeta:"Z",zeta:"\\zeta",Eta:"H",eta:"\\eta",Theta:"\\Theta",theta:"\\theta",vartheta:"\\vartheta",Iota:"I",iota:"\\iota",Kappa:"K",kappa:"\\kappa",varkappa:"\\varkappa",Lambda:"\\Lambda",lambda:"\\lambda",Mu:"M",mu:"\\mu",Nu:"N",nu:"\\nu",Xi:"\\Xi",xi:"\\xi",Omicron:"O",omicron:"o",Pi:"\\Pi",pi:"\\pi",varpi:"\\varpi",Rho:"P",rho:"\\rho",varrho:"\\varrho",Sigma:"\\Sigma",sigma:"\\sigma",varsigma:"\\varsigma",Tau:"T",tau:"\\tau",Upsilon:"\\Upsilon",upsilon:"\\upsilon",Phi:"\\Phi",phi:"\\phi",varphi:"\\varphi",Chi:"X",chi:"\\chi",Psi:"\\Psi",psi:"\\psi",Omega:"\\Omega",omega:"\\omega",true:"\\mathrm{True}",false:"\\mathrm{False}",i:"i",inf:"\\infty",Inf:"\\infty",infinity:"\\infty",Infinity:"\\infty",oo:"\\infty",lim:"\\lim",undefined:"\\mathbf{?}"};exports.operators={transpose:"^\\top",factorial:"!",pow:"^",dotPow:".^\\wedge",unaryPlus:"+",unaryMinus:"-",bitNot:"~",not:"\\neg",multiply:"\\cdot",divide:"\\frac",dotMultiply:".\\cdot",dotDivide:".:",mod:"\\mod",add:"+",subtract:"-",to:"\\rightarrow",leftShift:"<<",rightArithShift:">>",rightLogShift:">>>",equal:"=",unequal:"\\neq",smaller:"<",larger:">",smallerEq:"\\leq",largerEq:"\\geq",bitAnd:"\\&",bitXor:"\\underline{|}",bitOr:"|",and:"\\wedge",xor:"\\veebar",or:"\\vee"};exports.defaultTemplate="\\mathrm{${name}}\\left(${args}\\right)";var units={deg:"^\\circ"};exports.toSymbol=function(name,isUnit){isUnit=typeof isUnit==="undefined"?false:isUnit;if(isUnit){if(units.hasOwnProperty(name)){return units[name]}return"\\mathrm{"+name+"}"}if(exports.symbols.hasOwnProperty(name)){return exports.symbols[name]}else if(name.indexOf("_")!==-1){var index=name.indexOf("_");return exports.toSymbol(name.substring(0,index))+"_{"+exports.toSymbol(name.substring(index+1))+"}"}return name}},{}],508:[function(require,module,exports){"use strict";var NumberFormatter=require("./NumberFormatter");exports.isNumber=function(value){return typeof value==="number"};exports.isInteger=function(value){return isFinite(value)?value==Math.round(value):false};exports.sign=Math.sign||function(x){if(x>0){return 1}else if(x<0){return-1}else{return 0}};exports.format=function(value,options){if(typeof options==="function"){return options(value)}if(value===Infinity){return"Infinity"}else if(value===-Infinity){return"-Infinity"}else if(isNaN(value)){return"NaN"}var notation="auto";var precision=undefined;if(options){if(options.notation){notation=options.notation}if(exports.isNumber(options)){precision=options}else if(options.precision){precision=options.precision}}switch(notation){case"fixed":return exports.toFixed(value,precision);case"exponential":return exports.toExponential(value,precision);case"engineering":return exports.toEngineering(value,precision);case"auto":return exports.toPrecision(value,precision,options&&options.exponential).replace(/((\.\d*?)(0+))($|e)/,function(){var digits=arguments[2];var e=arguments[4];return digits!=="."?digits+e:e});default:throw new Error('Unknown notation "'+notation+'". '+'Choose "auto", "exponential", or "fixed".')}};exports.toExponential=function(value,precision){return new NumberFormatter(value).toExponential(precision)};exports.toEngineering=function(value,precision){return new NumberFormatter(value).toEngineering(precision)};exports.toFixed=function(value,precision){return new NumberFormatter(value).toFixed(precision)};exports.toPrecision=function(value,precision,options){return new NumberFormatter(value).toPrecision(precision,options)};exports.digits=function(value){return value.toExponential().replace(/e.*$/,"").replace(/^0\.?0*|\./,"").length};exports.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16;exports.nearlyEqual=function(x,y,epsilon){if(epsilon==null){return x==y}if(x==y){return true}if(isNaN(x)||isNaN(y)){return false}if(isFinite(x)&&isFinite(y)){var diff=Math.abs(x-y);if(diff<exports.DBL_EPSILON){return true}else{return diff<=Math.max(Math.abs(x),Math.abs(y))*epsilon}}return false}},{"./NumberFormatter":485}],509:[function(require,module,exports){"use strict";exports.clone=function clone(x){var type=typeof x;if(type==="number"||type==="string"||type==="boolean"||x===null||x===undefined){return x}if(typeof x.clone==="function"){return x.clone()}if(Array.isArray(x)){return x.map(function(value){return clone(value)})}if(x instanceof Number)return new Number(x.valueOf());if(x instanceof String)return new String(x.valueOf());if(x instanceof Boolean)return new Boolean(x.valueOf());if(x instanceof Date)return new Date(x.valueOf());if(x&&x.isBigNumber===true)return x;if(x instanceof RegExp)throw new TypeError("Cannot clone "+x);var m={};for(var key in x){if(x.hasOwnProperty(key)){m[key]=clone(x[key])}}return m};exports.extend=function(a,b){for(var prop in b){if(b.hasOwnProperty(prop)){a[prop]=b[prop]}}return a};exports.deepExtend=function deepExtend(a,b){if(Array.isArray(b)){throw new TypeError("Arrays are not supported by deepExtend")}for(var prop in b){if(b.hasOwnProperty(prop)){if(b[prop]&&b[prop].constructor===Object){if(a[prop]===undefined){a[prop]={}}if(a[prop].constructor===Object){deepExtend(a[prop],b[prop])}else{a[prop]=b[prop]}}else if(Array.isArray(b[prop])){throw new TypeError("Arrays are not supported by deepExtend")}else{a[prop]=b[prop]}}}return a};exports.deepEqual=function deepEqual(a,b){var prop,i,len;if(Array.isArray(a)){if(!Array.isArray(b)){return false}if(a.length!=b.length){return false}for(i=0,len=a.length;i<len;i++){if(!exports.deepEqual(a[i],b[i])){return false}}return true}else if(a instanceof Object){if(Array.isArray(b)||!(b instanceof Object)){return false}for(prop in a){if(!exports.deepEqual(a[prop],b[prop])){return false}}for(prop in b){if(!exports.deepEqual(a[prop],b[prop])){return false}}return true}else{return typeof a===typeof b&&a==b}};exports.canDefineProperty=function(){try{if(Object.defineProperty){Object.defineProperty({},"x",{get:function(){}});return true}}catch(e){}return false};exports.lazy=function(object,prop,fn){if(exports.canDefineProperty()){var _uninitialized=true;var _value;Object.defineProperty(object,prop,{get:function(){if(_uninitialized){_value=fn();_uninitialized=false}return _value},set:function(value){_value=value;_uninitialized=false},configurable:true,enumerable:true})}else{object[prop]=fn()}};exports.traverse=function(object,path){var obj=object;if(path){var names=path.split(".");for(var i=0;i<names.length;i++){var name=names[i];if(!(name in obj)){obj[name]={}}obj=obj[name]}}return obj};exports.isFactory=function(object){return object&&typeof object.factory==="function"}},{}],510:[function(require,module,exports){"use strict";var formatNumber=require("./number").format;var formatBigNumber=require("./bignumber/formatter").format;exports.isString=function(value){return typeof value==="string"};exports.endsWith=function(text,search){var start=text.length-search.length;var end=text.length;return text.substring(start,end)===search};exports.format=function(value,options){if(typeof value==="number"){return formatNumber(value,options)}if(value&&value.isBigNumber===true){return formatBigNumber(value,options)}if(value&&value.isFraction===true){if(!options||options.fraction!=="decimal"){return value.s*value.n+"/"+value.d}else{return value.toString()}}if(Array.isArray(value)){return formatArray(value,options)}if(exports.isString(value)){return'"'+value+'"'}if(typeof value==="function"){return value.syntax?String(value.syntax):"function"}if(value&&typeof value==="object"){if(typeof value.format==="function"){return value.format(options)}else if(value&&value.toString()!=={}.toString()){return value.toString()}else{var entries=[];for(var key in value){if(value.hasOwnProperty(key)){entries.push('"'+key+'": '+exports.format(value[key],options))}}return"{"+entries.join(", ")+"}"}}return String(value)};function formatArray(array,options){if(Array.isArray(array)){var str="[";var len=array.length;for(var i=0;i<len;i++){if(i!=0){str+=", "}str+=formatArray(array[i],options)}str+="]";return str}else{return exports.format(array,options)}}},{"./bignumber/formatter":493,"./number":508}],511:[function(require,module,exports){"use strict";exports.type=function(x){var type=typeof x;if(type==="object"){if(x===null)return"null";if(x instanceof Boolean)return"boolean";if(x instanceof Number)return"number";if(x instanceof String)return"string";if(Array.isArray(x))return"Array";if(x instanceof Date)return"Date";if(x instanceof RegExp)return"RegExp";return"Object"}if(type==="function")return"Function";return type};exports.isScalar=function(x){return!(x&&x.isMatrix||Array.isArray(x))}},{}],512:[function(require,module,exports){module.exports="3.4.1"},{}],513:[function(require,module,exports){"use strict";var ops=require("ndarray-ops");var ndarray=require("ndarray");var pool=require("typedarray-pool");var fftm=require("./lib/fft-matrix.js");function ndfft(dir,x,y){var shape=x.shape,d=shape.length,size=1,stride=new Array(d),pad=0,i,j;for(i=d-1;i>=0;--i){stride[i]=size;size*=shape[i];pad=Math.max(pad,fftm.scratchMemory(shape[i]));if(x.shape[i]!==y.shape[i]){throw new Error("Shape mismatch, real and imaginary arrays must have same size")}}var buf_size=4*size+pad;var buffer;if(x.dtype==="array"||x.dtype==="float64"||x.dtype==="custom"){buffer=pool.mallocDouble(buf_size)}else{buffer=pool.mallocFloat(buf_size)}var x1=ndarray(buffer,shape.slice(0),stride,0),y1=ndarray(buffer,shape.slice(0),stride.slice(0),size),x2=ndarray(buffer,shape.slice(0),stride.slice(0),2*size),y2=ndarray(buffer,shape.slice(0),stride.slice(0),3*size),tmp,n,s1,s2,scratch_ptr=4*size;ops.assign(x1,x);ops.assign(y1,y);for(i=d-1;i>=0;--i){fftm(dir,size/shape[i],shape[i],buffer,x1.offset,y1.offset,scratch_ptr);if(i===0){break}n=1;s1=x2.stride;s2=y2.stride;for(j=i-1;j<d;++j){s2[j]=s1[j]=n;n*=shape[j]}for(j=i-2;j>=0;--j){s2[j]=s1[j]=n;n*=shape[j]}ops.assign(x2,x1);ops.assign(y2,y1);tmp=x1;x1=x2;x2=tmp;tmp=y1;y1=y2;y2=tmp}ops.assign(x,x1);ops.assign(y,y1);pool.free(buffer)}module.exports=ndfft},{"./lib/fft-matrix.js":514,ndarray:516,"ndarray-ops":515,"typedarray-pool":519}],514:[function(require,module,exports){var bits=require("bit-twiddle");function fft(dir,nrows,ncols,buffer,x_ptr,y_ptr,scratch_ptr){dir|=0;nrows|=0;ncols|=0;x_ptr|=0;y_ptr|=0;if(bits.isPow2(ncols)){fftRadix2(dir,nrows,ncols,buffer,x_ptr,y_ptr)}else{fftBluestein(dir,nrows,ncols,buffer,x_ptr,y_ptr,scratch_ptr)}}module.exports=fft;function scratchMemory(n){if(bits.isPow2(n)){return 0}return 2*n+4*bits.nextPow2(2*n+1)}module.exports.scratchMemory=scratchMemory;function fftRadix2(dir,nrows,ncols,buffer,x_ptr,y_ptr){dir|=0;nrows|=0;ncols|=0;x_ptr|=0;y_ptr|=0;var nn,m,i,i1,j,k,i2,l,l1,l2;var c1,c2,t,t1,t2,u1,u2,z,row,a,b,c,d,k1,k2,k3;nn=ncols;m=bits.log2(nn);for(row=0;row<nrows;++row){i2=nn>>1;j=0;for(i=0;i<nn-1;i++){if(i<j){t=buffer[x_ptr+i];buffer[x_ptr+i]=buffer[x_ptr+j];buffer[x_ptr+j]=t;t=buffer[y_ptr+i];buffer[y_ptr+i]=buffer[y_ptr+j];buffer[y_ptr+j]=t}k=i2;while(k<=j){j-=k;k>>=1}j+=k}c1=-1;c2=0;l2=1;for(l=0;l<m;l++){l1=l2;l2<<=1;u1=1;u2=0;for(j=0;j<l1;j++){for(i=j;i<nn;i+=l2){i1=i+l1;a=buffer[x_ptr+i1];b=buffer[y_ptr+i1];c=buffer[x_ptr+i];d=buffer[y_ptr+i];k1=u1*(a+b);k2=a*(u2-u1);k3=b*(u1+u2);t1=k1-k3;t2=k1+k2;buffer[x_ptr+i1]=c-t1;buffer[y_ptr+i1]=d-t2;buffer[x_ptr+i]+=t1;buffer[y_ptr+i]+=t2}k1=c1*(u1+u2);k2=u1*(c2-c1);k3=u2*(c1+c2);u1=k1-k3;u2=k1+k2}c2=Math.sqrt((1-c1)/2);if(dir<0){c2=-c2}c1=Math.sqrt((1+c1)/2)}if(dir<0){var scale_f=1/nn;for(i=0;i<nn;i++){buffer[x_ptr+i]*=scale_f;buffer[y_ptr+i]*=scale_f}}x_ptr+=ncols;y_ptr+=ncols}}function fftBluestein(dir,nrows,ncols,buffer,x_ptr,y_ptr,scratch_ptr){dir|=0;nrows|=0;ncols|=0;x_ptr|=0;y_ptr|=0;scratch_ptr|=0;var m=bits.nextPow2(2*ncols+1),cos_ptr=scratch_ptr,sin_ptr=cos_ptr+ncols,xs_ptr=sin_ptr+ncols,ys_ptr=xs_ptr+m,cft_ptr=ys_ptr+m,sft_ptr=cft_ptr+m,w=-dir*Math.PI/ncols,row,a,b,c,d,k1,k2,k3,i;for(i=0;i<ncols;++i){a=w*(i*i%(ncols*2));c=Math.cos(a);d=Math.sin(a);buffer[cft_ptr+(m-i)]=buffer[cft_ptr+i]=buffer[cos_ptr+i]=c;buffer[sft_ptr+(m-i)]=buffer[sft_ptr+i]=buffer[sin_ptr+i]=d}for(i=ncols;i<=m-ncols;++i){buffer[cft_ptr+i]=0}for(i=ncols;i<=m-ncols;++i){buffer[sft_ptr+i]=0}fftRadix2(1,1,m,buffer,cft_ptr,sft_ptr);if(dir<0){w=1/ncols}else{w=1}for(row=0;row<nrows;++row){for(i=0;i<ncols;++i){a=buffer[x_ptr+i];b=buffer[y_ptr+i];c=buffer[cos_ptr+i];d=-buffer[sin_ptr+i];k1=c*(a+b);k2=a*(d-c);k3=b*(c+d);buffer[xs_ptr+i]=k1-k3;buffer[ys_ptr+i]=k1+k2}for(i=ncols;i<m;++i){buffer[xs_ptr+i]=0}for(i=ncols;i<m;++i){buffer[ys_ptr+i]=0}fftRadix2(1,1,m,buffer,xs_ptr,ys_ptr);for(i=0;i<m;++i){a=buffer[xs_ptr+i];b=buffer[ys_ptr+i];c=buffer[cft_ptr+i];d=buffer[sft_ptr+i];k1=c*(a+b);k2=a*(d-c);k3=b*(c+d);buffer[xs_ptr+i]=k1-k3;buffer[ys_ptr+i]=k1+k2}fftRadix2(-1,1,m,buffer,xs_ptr,ys_ptr);for(i=0;i<ncols;++i){a=buffer[xs_ptr+i];b=buffer[ys_ptr+i];c=buffer[cos_ptr+i];d=-buffer[sin_ptr+i];k1=c*(a+b);k2=a*(d-c);k3=b*(c+d);buffer[x_ptr+i]=w*(k1-k3);buffer[y_ptr+i]=w*(k1+k2)}x_ptr+=ncols;y_ptr+=ncols}}},{"bit-twiddle":6}],515:[function(require,module,exports){"use strict";var compile=require("cwise-compiler");var EmptyProc={body:"",args:[],thisVars:[],localVars:[]};function fixup(x){if(!x){return EmptyProc}for(var i=0;i<x.args.length;++i){var a=x.args[i];if(i===0){x.args[i]={name:a,lvalue:true,rvalue:!!x.rvalue,count:x.count||1}}else{x.args[i]={name:a,lvalue:false,rvalue:true,count:1}}}if(!x.thisVars){x.thisVars=[]}if(!x.localVars){x.localVars=[]}return x}function pcompile(user_args){return compile({args:user_args.args,pre:fixup(user_args.pre),body:fixup(user_args.body),post:fixup(user_args.proc),funcName:user_args.funcName})}function makeOp(user_args){var args=[];for(var i=0;i<user_args.args.length;++i){args.push("a"+i)}var wrapper=new Function("P",["return function ",user_args.funcName,"_ndarrayops(",args.join(","),") {P(",args.join(","),");return a0}"].join(""));return wrapper(pcompile(user_args))}var assign_ops={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var id in assign_ops){var op=assign_ops[id];exports[id]=makeOp({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+op+"c"},funcName:id});exports[id+"eq"]=makeOp({args:["array","array"],body:{args:["a","b"],body:"a"+op+"=b"},rvalue:true,funcName:id+"eq"});exports[id+"s"]=makeOp({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+op+"s"},funcName:id+"s"});exports[id+"seq"]=makeOp({args:["array","scalar"],body:{args:["a","s"],body:"a"+op+"=s"},rvalue:true,funcName:id+"seq"})}})();var unary_ops={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var id in unary_ops){var op=unary_ops[id];exports[id]=makeOp({args:["array","array"],body:{args:["a","b"],body:"a="+op+"b"},funcName:id});exports[id+"eq"]=makeOp({args:["array"],body:{args:["a"],body:"a="+op+"a"},rvalue:true,count:2,funcName:id+"eq"})}})();var binary_ops={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){
for(var id in binary_ops){var op=binary_ops[id];exports[id]=makeOp({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+op+"c"},funcName:id});exports[id+"s"]=makeOp({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+op+"s"},funcName:id+"s"});exports[id+"eq"]=makeOp({args:["array","array"],body:{args:["a","b"],body:"a=a"+op+"b"},rvalue:true,count:2,funcName:id+"eq"});exports[id+"seq"]=makeOp({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+op+"s"},rvalue:true,count:2,funcName:id+"seq"})}})();var math_unary=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var i=0;i<math_unary.length;++i){var f=math_unary[i];exports[f]=makeOp({args:["array","array"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:f});exports[f+"eq"]=makeOp({args:["array"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:true,count:2,funcName:f+"eq"})}})();var math_comm=["max","min","atan2","pow"];(function(){for(var i=0;i<math_comm.length;++i){var f=math_comm[i];exports[f]=makeOp({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:f});exports[f+"s"]=makeOp({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:f+"s"});exports[f+"eq"]=makeOp({args:["array","array"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:true,count:2,funcName:f+"eq"});exports[f+"seq"]=makeOp({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:true,count:2,funcName:f+"seq"})}})();var math_noncomm=["atan2","pow"];(function(){for(var i=0;i<math_noncomm.length;++i){var f=math_noncomm[i];exports[f+"op"]=makeOp({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:f+"op"});exports[f+"ops"]=makeOp({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:f+"ops"});exports[f+"opeq"]=makeOp({args:["array","array"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:true,count:2,funcName:f+"opeq"});exports[f+"opseq"]=makeOp({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+f,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:true,count:2,funcName:f+"opseq"})}})();exports.any=compile({args:["array"],pre:EmptyProc,body:{args:[{name:"a",lvalue:false,rvalue:true,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});exports.all=compile({args:["array"],pre:EmptyProc,body:{args:[{name:"x",lvalue:false,rvalue:true,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});exports.sum=compile({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:false,rvalue:true,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});exports.prod=compile({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:false,rvalue:true,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});exports.norm2squared=compile({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:false,rvalue:true,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});exports.norm2=compile({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:false,rvalue:true,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});exports.norminf=compile({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:false,rvalue:true,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});exports.norm1=compile({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:false,rvalue:true,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});exports.sup=compile({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:false,rvalue:true,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});exports.inf=compile({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:false,rvalue:true,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});exports.argmin=compile({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:false,rvalue:false,count:0},{name:"_inline_0_arg1_",lvalue:false,rvalue:false,count:0},{name:"_inline_0_arg2_",lvalue:false,rvalue:true,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:false,rvalue:true,count:2},{name:"_inline_1_arg1_",lvalue:false,rvalue:true,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});exports.argmax=compile({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:false,rvalue:false,count:0},{name:"_inline_0_arg1_",lvalue:false,rvalue:false,count:0},{name:"_inline_0_arg2_",lvalue:false,rvalue:true,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:false,rvalue:true,count:2},{name:"_inline_1_arg1_",lvalue:false,rvalue:true,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});exports.random=makeOp({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});exports.assign=makeOp({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});exports.assigns=makeOp({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});exports.equals=compile({args:["array","array"],pre:EmptyProc,body:{args:[{name:"x",lvalue:false,rvalue:true,count:1},{name:"y",lvalue:false,rvalue:true,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})},{"cwise-compiler":8}],516:[function(require,module,exports){var iota=require("iota-array");var isBuffer=require("is-buffer");var hasTypedArrays=typeof Float64Array!=="undefined";function compare1st(a,b){return a[0]-b[0]}function order(){var stride=this.stride;var terms=new Array(stride.length);var i;for(i=0;i<terms.length;++i){terms[i]=[Math.abs(stride[i]),i]}terms.sort(compare1st);var result=new Array(terms.length);for(i=0;i<result.length;++i){result[i]=terms[i][1]}return result}function compileConstructor(dtype,dimension){var className=["View",dimension,"d",dtype].join("");if(dimension<0){className="View_Nil"+dtype}var useGetters=dtype==="generic";if(dimension===-1){var code="function "+className+"(a){this.data=a;};var proto="+className+".prototype;proto.dtype='"+dtype+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+className+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+className+"(a){return new "+className+"(a);}";var procedure=new Function(code);return procedure()}else if(dimension===0){var code="function "+className+"(a,d) {this.data = a;this.offset = d};var proto="+className+".prototype;proto.dtype='"+dtype+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+className+"_copy() {return new "+className+"(this.data,this.offset)};proto.pick=function "+className+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+className+"_get(){return "+(useGetters?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+className+"_set(v){return "+(useGetters?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+className+"(a,b,c,d){return new "+className+"(a,d)}";var procedure=new Function("TrivialArray",code);return procedure(CACHED_CONSTRUCTORS[dtype][0])}var code=["'use strict'"];var indices=iota(dimension);var args=indices.map(function(i){return"i"+i});var index_str="this.offset+"+indices.map(function(i){return"this.stride["+i+"]*i"+i}).join("+");var shapeArg=indices.map(function(i){return"b"+i}).join(",");var strideArg=indices.map(function(i){return"c"+i}).join(",");code.push("function "+className+"(a,"+shapeArg+","+strideArg+",d){this.data=a","this.shape=["+shapeArg+"]","this.stride=["+strideArg+"]","this.offset=d|0}","var proto="+className+".prototype","proto.dtype='"+dtype+"'","proto.dimension="+dimension);code.push("Object.defineProperty(proto,'size',{get:function "+className+"_size(){return "+indices.map(function(i){return"this.shape["+i+"]"}).join("*"),"}})");if(dimension===1){code.push("proto.order=[0]")}else{code.push("Object.defineProperty(proto,'order',{get:");if(dimension<4){code.push("function "+className+"_order(){");if(dimension===2){code.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})")}else if(dimension===3){code.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")}}else{code.push("ORDER})")}}code.push("proto.set=function "+className+"_set("+args.join(",")+",v){");if(useGetters){code.push("return this.data.set("+index_str+",v)}")}else{code.push("return this.data["+index_str+"]=v}")}code.push("proto.get=function "+className+"_get("+args.join(",")+"){");if(useGetters){code.push("return this.data.get("+index_str+")}")}else{code.push("return this.data["+index_str+"]}")}code.push("proto.index=function "+className+"_index(",args.join(),"){return "+index_str+"}");code.push("proto.hi=function "+className+"_hi("+args.join(",")+"){return new "+className+"(this.data,"+indices.map(function(i){return["(typeof i",i,"!=='number'||i",i,"<0)?this.shape[",i,"]:i",i,"|0"].join("")}).join(",")+","+indices.map(function(i){return"this.stride["+i+"]"}).join(",")+",this.offset)}");var a_vars=indices.map(function(i){return"a"+i+"=this.shape["+i+"]"});var c_vars=indices.map(function(i){return"c"+i+"=this.stride["+i+"]"});code.push("proto.lo=function "+className+"_lo("+args.join(",")+"){var b=this.offset,d=0,"+a_vars.join(",")+","+c_vars.join(","));for(var i=0;i<dimension;++i){code.push("if(typeof i"+i+"==='number'&&i"+i+">=0){d=i"+i+"|0;b+=c"+i+"*d;a"+i+"-=d}")}code.push("return new "+className+"(this.data,"+indices.map(function(i){return"a"+i}).join(",")+","+indices.map(function(i){return"c"+i}).join(",")+",b)}");code.push("proto.step=function "+className+"_step("+args.join(",")+"){var "+indices.map(function(i){return"a"+i+"=this.shape["+i+"]"}).join(",")+","+indices.map(function(i){return"b"+i+"=this.stride["+i+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var i=0;i<dimension;++i){code.push("if(typeof i"+i+"==='number'){d=i"+i+"|0;if(d<0){c+=b"+i+"*(a"+i+"-1);a"+i+"=ceil(-a"+i+"/d)}else{a"+i+"=ceil(a"+i+"/d)}b"+i+"*=d}")}code.push("return new "+className+"(this.data,"+indices.map(function(i){return"a"+i}).join(",")+","+indices.map(function(i){return"b"+i}).join(",")+",c)}");var tShape=new Array(dimension);var tStride=new Array(dimension);for(var i=0;i<dimension;++i){tShape[i]="a[i"+i+"]";tStride[i]="b[i"+i+"]"}code.push("proto.transpose=function "+className+"_transpose("+args+"){"+args.map(function(n,idx){return n+"=("+n+"===undefined?"+idx+":"+n+"|0)"}).join(";"),"var a=this.shape,b=this.stride;return new "+className+"(this.data,"+tShape.join(",")+","+tStride.join(",")+",this.offset)}");code.push("proto.pick=function "+className+"_pick("+args+"){var a=[],b=[],c=this.offset");for(var i=0;i<dimension;++i){code.push("if(typeof i"+i+"==='number'&&i"+i+">=0){c=(c+this.stride["+i+"]*i"+i+")|0}else{a.push(this.shape["+i+"]);b.push(this.stride["+i+"])}")}code.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}");code.push("return function construct_"+className+"(data,shape,stride,offset){return new "+className+"(data,"+indices.map(function(i){return"shape["+i+"]"}).join(",")+","+indices.map(function(i){return"stride["+i+"]"}).join(",")+",offset)}");var procedure=new Function("CTOR_LIST","ORDER",code.join("\n"));return procedure(CACHED_CONSTRUCTORS[dtype],order)}function arrayDType(data){if(isBuffer(data)){return"buffer"}if(hasTypedArrays){switch(Object.prototype.toString.call(data)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped"}}if(Array.isArray(data)){return"array"}return"generic"}var CACHED_CONSTRUCTORS={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};(function(){for(var id in CACHED_CONSTRUCTORS){CACHED_CONSTRUCTORS[id].push(compileConstructor(id,-1))}});function wrappedNDArrayCtor(data,shape,stride,offset){if(data===undefined){var ctor=CACHED_CONSTRUCTORS.array[0];return ctor([])}else if(typeof data==="number"){data=[data]}if(shape===undefined){shape=[data.length]}var d=shape.length;if(stride===undefined){stride=new Array(d);for(var i=d-1,sz=1;i>=0;--i){stride[i]=sz;sz*=shape[i]}}if(offset===undefined){offset=0;for(var i=0;i<d;++i){if(stride[i]<0){offset-=(shape[i]-1)*stride[i]}}}var dtype=arrayDType(data);var ctor_list=CACHED_CONSTRUCTORS[dtype];while(ctor_list.length<=d+1){ctor_list.push(compileConstructor(dtype,ctor_list.length-1))}var ctor=ctor_list[d+1];return ctor(data,shape,stride,offset)}module.exports=wrappedNDArrayCtor},{"iota-array":20,"is-buffer":21}],517:[function(require,module,exports){function E(){}E.prototype={on:function(name,callback,ctx){var e=this.e||(this.e={});(e[name]||(e[name]=[])).push({fn:callback,ctx:ctx});return this},once:function(name,callback,ctx){var self=this;function listener(){self.off(name,listener);callback.apply(ctx,arguments)}listener._=callback;return this.on(name,listener,ctx)},emit:function(name){var data=[].slice.call(arguments,1);var evtArr=((this.e||(this.e={}))[name]||[]).slice();var i=0;var len=evtArr.length;for(i;i<len;i++){evtArr[i].fn.apply(evtArr[i].ctx,data)}return this},off:function(name,callback){var e=this.e||(this.e={});var evts=e[name];var liveEvents=[];if(evts&&callback){for(var i=0,len=evts.length;i<len;i++){if(evts[i].fn!==callback&&evts[i].fn._!==callback)liveEvents.push(evts[i])}}liveEvents.length?e[name]=liveEvents:delete e[name];return this}};module.exports=E},{}],518:[function(require,module,exports){"use strict";(function(root,factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.typed=factory()}})(this,function(){function create(){function getTypeTest(name){var test;for(var i=0;i<typed.types.length;i++){var entry=typed.types[i];if(entry.name===name){test=entry.test;break}}if(!test){var hint;for(i=0;i<typed.types.length;i++){entry=typed.types[i];if(entry.name.toLowerCase()==name.toLowerCase()){hint=entry.name;break}}throw new Error('Unknown type "'+name+'"'+(hint?'. Did you mean "'+hint+'"?':""))}return test}function getName(fns){var name="";for(var i=0;i<fns.length;i++){var fn=fns[i];if(fn.signatures&&fn.name!=""){if(name==""){name=fn.name}else if(name!=fn.name){var err=new Error("Function names do not match (expected: "+name+", actual: "+fn.name+")");err.data={actual:fn.name,expected:name};throw err}}}return name}function createError(fn,argCount,index,actual,expected){var actualType=getTypeOf(actual);var _expected=expected?expected.split(","):null;var _fn=fn||"unnamed";var anyType=_expected&&contains(_expected,"any");var message;var data={fn:fn,index:index,actual:actual,expected:_expected};if(_expected){if(argCount>index&&!anyType){message="Unexpected type of argument in function "+_fn+" (expected: "+_expected.join(" or ")+", actual: "+actualType+", index: "+index+")"}else{message="Too few arguments in function "+_fn+" (expected: "+_expected.join(" or ")+", index: "+index+")"}}else{message="Too many arguments in function "+_fn+" (expected: "+index+", actual: "+argCount+")"}var err=new TypeError(message);err.data=data;return err}function Refs(name){this.name=name||"refs";this.categories={}}Refs.prototype.add=function(fn,category){var cat=category||"fn";if(!this.categories[cat])this.categories[cat]=[];var index=this.categories[cat].indexOf(fn);if(index==-1){index=this.categories[cat].length;this.categories[cat].push(fn)}return cat+index};Refs.prototype.toCode=function(){var code=[];var path=this.name+".categories";var categories=this.categories;for(var cat in categories){if(categories.hasOwnProperty(cat)){var category=categories[cat];for(var i=0;i<category.length;i++){code.push("var "+cat+i+" = "+path+"['"+cat+"']["+i+"];")}}}return code.join("\n")};function Param(types,varArgs){if(typeof types==="string"){var _types=types.trim();var _varArgs=_types.substr(0,3)==="...";if(_varArgs){_types=_types.substr(3)}if(_types===""){this.types=["any"]}else{this.types=_types.split("|");for(var i=0;i<this.types.length;i++){this.types[i]=this.types[i].trim()}}}else if(Array.isArray(types)){this.types=types}else if(types instanceof Param){return types.clone()}else{throw new Error("String or Array expected")}this.conversions=[];this.varArgs=_varArgs||varArgs||false;this.anyType=this.types.indexOf("any")!==-1}Param.compare=function(a,b){if(a.anyType)return 1;if(b.anyType)return-1;if(contains(a.types,"Object"))return 1;if(contains(b.types,"Object"))return-1;if(a.hasConversions()){if(b.hasConversions()){var i,ac,bc;for(i=0;i<a.conversions.length;i++){if(a.conversions[i]!==undefined){ac=a.conversions[i];break}}for(i=0;i<b.conversions.length;i++){if(b.conversions[i]!==undefined){bc=b.conversions[i];break}}return typed.conversions.indexOf(ac)-typed.conversions.indexOf(bc)}else{return 1}}else{if(b.hasConversions()){return-1}else{var ai,bi;for(i=0;i<typed.types.length;i++){if(typed.types[i].name===a.types[0]){ai=i;break}}for(i=0;i<typed.types.length;i++){if(typed.types[i].name===b.types[0]){bi=i;break}}return ai-bi}}};Param.prototype.overlapping=function(other){for(var i=0;i<this.types.length;i++){if(contains(other.types,this.types[i])){return true}}return false};Param.prototype.clone=function(){var param=new Param(this.types.slice(),this.varArgs);param.conversions=this.conversions.slice();return param};Param.prototype.hasConversions=function(){return this.conversions.length>0};Param.prototype.contains=function(types){for(var i=0;i<this.types.length;i++){if(types[this.types[i]]){return true}}return false};Param.prototype.toString=function(toConversion){var types=[];var keys={};for(var i=0;i<this.types.length;i++){var conversion=this.conversions[i];var type=toConversion&&conversion?conversion.to:this.types[i];if(!(type in keys)){keys[type]=true;types.push(type)}}return(this.varArgs?"...":"")+types.join("|")};function Signature(params,fn){var _params;if(typeof params==="string"){_params=params!==""?params.split(","):[]}else if(Array.isArray(params)){_params=params}else{throw new Error("string or Array expected")}this.params=new Array(_params.length);for(var i=0;i<_params.length;i++){var param=new Param(_params[i]);this.params[i]=param;if(i===_params.length-1){this.varArgs=param.varArgs}else{if(param.varArgs){throw new SyntaxError('Unexpected variable arguments operator "..."')}}}this.fn=fn}Signature.prototype.clone=function(){return new Signature(this.params.slice(),this.fn)};Signature.prototype.expand=function(){var signatures=[];function recurse(signature,path){if(path.length<signature.params.length){var i,newParam,conversion;var param=signature.params[path.length];if(param.varArgs){newParam=param.clone();for(i=0;i<typed.conversions.length;i++){conversion=typed.conversions[i];if(!contains(param.types,conversion.from)&&contains(param.types,conversion.to)){var j=newParam.types.length;newParam.types[j]=conversion.from;newParam.conversions[j]=conversion}}recurse(signature,path.concat(newParam))}else{for(i=0;i<param.types.length;i++){recurse(signature,path.concat(new Param(param.types[i])))}for(i=0;i<typed.conversions.length;i++){conversion=typed.conversions[i];if(!contains(param.types,conversion.from)&&contains(param.types,conversion.to)){newParam=new Param(conversion.from);newParam.conversions[0]=conversion;recurse(signature,path.concat(newParam))}}}}else{signatures.push(new Signature(path,signature.fn))}}recurse(this,[]);return signatures};Signature.compare=function(a,b){if(a.params.length>b.params.length)return 1;if(a.params.length<b.params.length)return-1;var i;var len=a.params.length;var ac=0;var bc=0;for(i=0;i<len;i++){if(a.params[i].hasConversions())ac++;if(b.params[i].hasConversions())bc++}if(ac>bc)return 1;if(ac<bc)return-1;for(i=0;i<a.params.length;i++){var cmp=Param.compare(a.params[i],b.params[i]);if(cmp!==0){return cmp}}return 0};Signature.prototype.hasConversions=function(){for(var i=0;i<this.params.length;i++){if(this.params[i].hasConversions()){return true}}return false};Signature.prototype.ignore=function(){var types={};for(var i=0;i<typed.ignore.length;i++){types[typed.ignore[i]]=true}for(i=0;i<this.params.length;i++){if(this.params[i].contains(types)){return true}}return false};Signature.prototype.toCode=function(refs,prefix){var code=[];var args=new Array(this.params.length);for(var i=0;i<this.params.length;i++){var param=this.params[i];var conversion=param.conversions[0];if(param.varArgs){args[i]="varArgs"}else if(conversion){args[i]=refs.add(conversion.convert,"convert")+"(arg"+i+")"}else{args[i]="arg"+i}}var ref=this.fn?refs.add(this.fn,"signature"):undefined;if(ref){return prefix+"return "+ref+"("+args.join(", ")+"); // signature: "+this.params.join(", ")}return code.join("\n")};Signature.prototype.toString=function(){return this.params.join(", ")};function Node(path,signature,childs){this.path=path||[];this.param=path[path.length-1]||null;this.signature=signature||null;this.childs=childs||[]}Node.prototype.toCode=function(refs,prefix,anyType){var code=[];if(this.param){var index=this.path.length-1;var conversion=this.param.conversions[0];var comment="// type: "+(conversion?conversion.from+" (convert to "+conversion.to+")":this.param);if(this.param.varArgs){if(this.param.anyType){code.push(prefix+"if (arguments.length > "+index+") {");code.push(prefix+" var varArgs = [];");code.push(prefix+" for (var i = "+index+"; i < arguments.length; i++) {");code.push(prefix+" varArgs.push(arguments[i]);");code.push(prefix+" }");code.push(this.signature.toCode(refs,prefix+" "));code.push(prefix+"}")}else{var getTests=function(types,arg){var tests=[];for(var i=0;i<types.length;i++){tests[i]=refs.add(getTypeTest(types[i]),"test")+"("+arg+")"}return tests.join(" || ")}.bind(this);var allTypes=this.param.types;var exactTypes=[];for(var i=0;i<allTypes.length;i++){if(this.param.conversions[i]===undefined){exactTypes.push(allTypes[i])}}code.push(prefix+"if ("+getTests(allTypes,"arg"+index)+") { "+comment);code.push(prefix+" var varArgs = [arg"+index+"];");code.push(prefix+" for (var i = "+(index+1)+"; i < arguments.length; i++) {");code.push(prefix+" if ("+getTests(exactTypes,"arguments[i]")+") {");code.push(prefix+" varArgs.push(arguments[i]);");for(var i=0;i<allTypes.length;i++){var conversion_i=this.param.conversions[i];if(conversion_i){var test=refs.add(getTypeTest(allTypes[i]),"test");var convert=refs.add(conversion_i.convert,"convert");code.push(prefix+" }");code.push(prefix+" else if ("+test+"(arguments[i])) {");code.push(prefix+" varArgs.push("+convert+"(arguments[i]));")}}code.push(prefix+" } else {");code.push(prefix+" throw createError(name, arguments.length, i, arguments[i], '"+exactTypes.join(",")+"');");code.push(prefix+" }");code.push(prefix+" }");code.push(this.signature.toCode(refs,prefix+" "));code.push(prefix+"}")}}else{if(this.param.anyType){code.push(prefix+"// type: any");code.push(this._innerCode(refs,prefix,anyType))}else{var type=this.param.types[0];var test=type!=="any"?refs.add(getTypeTest(type),"test"):null;code.push(prefix+"if ("+test+"(arg"+index+")) { "+comment);code.push(this._innerCode(refs,prefix+" ",anyType));code.push(prefix+"}")}}}else{code.push(this._innerCode(refs,prefix,anyType))}return code.join("\n")};Node.prototype._innerCode=function(refs,prefix,anyType){var code=[];var i;if(this.signature){code.push(prefix+"if (arguments.length === "+this.path.length+") {");code.push(this.signature.toCode(refs,prefix+" "));code.push(prefix+"}")}var nextAnyType;for(i=0;i<this.childs.length;i++){if(this.childs[i].param.anyType){nextAnyType=this.childs[i];break}}for(i=0;i<this.childs.length;i++){code.push(this.childs[i].toCode(refs,prefix,nextAnyType))}if(anyType&&!this.param.anyType){code.push(anyType.toCode(refs,prefix,nextAnyType))}var exceptions=this._exceptions(refs,prefix);if(exceptions){code.push(exceptions)}return code.join("\n")};Node.prototype._exceptions=function(refs,prefix){var index=this.path.length;if(this.childs.length===0){return[prefix+"if (arguments.length > "+index+") {",prefix+" throw createError(name, arguments.length, "+index+", arguments["+index+"]);",prefix+"}"].join("\n")}else{var keys={};var types=[];for(var i=0;i<this.childs.length;i++){var node=this.childs[i];if(node.param){for(var j=0;j<node.param.types.length;j++){var type=node.param.types[j];if(!(type in keys)&&!node.param.conversions[j]){keys[type]=true;types.push(type)}}}}return prefix+"throw createError(name, arguments.length, "+index+", arguments["+index+"], '"+types.join(",")+"');"}};function parseSignatures(rawSignatures){var signature;var keys={};var signatures=[];var i;for(var types in rawSignatures){if(rawSignatures.hasOwnProperty(types)){var fn=rawSignatures[types];signature=new Signature(types,fn);if(signature.ignore()){continue}var expanded=signature.expand();for(i=0;i<expanded.length;i++){var signature_i=expanded[i];var key=signature_i.toString();var existing=keys[key];if(!existing){keys[key]=signature_i}else{var cmp=Signature.compare(signature_i,existing);if(cmp<0){keys[key]=signature_i}else if(cmp===0){throw new Error('Signature "'+key+'" is defined twice')}}}}}for(key in keys){if(keys.hasOwnProperty(key)){signatures.push(keys[key])}}signatures.sort(function(a,b){return Signature.compare(a,b)});for(i=0;i<signatures.length;i++){signature=signatures[i];if(signature.varArgs){var index=signature.params.length-1;var param=signature.params[index];var t=0;while(t<param.types.length){if(param.conversions[t]){var type=param.types[t];for(var j=0;j<signatures.length;j++){var other=signatures[j];var p=other.params[index];if(other!==signature&&p&&contains(p.types,type)&&!p.conversions[index]){param.types.splice(t,1);param.conversions.splice(t,1);t--;break}}}t++}}}return signatures}function mapSignatures(signatures){var normalized={};for(var i=0;i<signatures.length;i++){var signature=signatures[i];if(signature.fn&&!signature.hasConversions()){var params=signature.params.join(",");normalized[params]=signature.fn}}return normalized}function parseTree(signatures,path){var i,signature;var index=path.length;var nodeSignature;var filtered=[];for(i=0;i<signatures.length;i++){signature=signatures[i];if(signature.params.length===index&&!nodeSignature){nodeSignature=signature}if(signature.params[index]!=undefined){filtered.push(signature)}}filtered.sort(function(a,b){return Param.compare(a.params[index],b.params[index])});var entries=[];for(i=0;i<filtered.length;i++){signature=filtered[i];var param=signature.params[index];var existing=entries.filter(function(entry){return entry.param.overlapping(param)})[0];if(existing){if(existing.param.varArgs){throw new Error('Conflicting types "'+existing.param+'" and "'+param+'"')}existing.signatures.push(signature)}else{entries.push({param:param,signatures:[signature]})}}var childs=new Array(entries.length);for(i=0;i<entries.length;i++){var entry=entries[i];childs[i]=parseTree(entry.signatures,path.concat(entry.param))}return new Node(path,nodeSignature,childs)}function getArgs(count){var args=[];for(var i=0;i<count;i++){args[i]="arg"+i}return args}function _typed(name,signatures){var refs=new Refs;var _signatures=parseSignatures(signatures);if(_signatures.length==0){throw new Error("No signatures provided")}var node=parseTree(_signatures,[]);var code=[];var _name=name||"";var _args=getArgs(maxParams(_signatures));code.push("function "+_name+"("+_args.join(", ")+") {");code.push(' "use strict";');code.push(" var name = '"+_name+"';");code.push(node.toCode(refs," "));code.push("}");var body=[refs.toCode(),"return "+code.join("\n")].join("\n");var factory=new Function(refs.name,"createError",body);var fn=factory(refs,createError);fn.signatures=mapSignatures(_signatures);return fn}function maxParams(signatures){var max=0;for(var i=0;i<signatures.length;i++){var len=signatures[i].params.length;if(len>max){max=len}}return max}function getTypeOf(x){var obj;for(var i=0;i<typed.types.length;i++){var entry=typed.types[i];if(entry.name==="Object"){obj=entry}else{if(entry.test(x))return entry.name}}if(obj&&obj.test(x))return obj.name;return"unknown"}function contains(array,entry){return array.indexOf(entry)!==-1}var types=[{name:"number",test:function(x){return typeof x==="number"}},{name:"string",test:function(x){return typeof x==="string"}},{name:"boolean",test:function(x){return typeof x==="boolean"}},{name:"Function",test:function(x){return typeof x==="function"}},{name:"Array",test:Array.isArray},{name:"Date",test:function(x){
return x instanceof Date}},{name:"RegExp",test:function(x){return x instanceof RegExp}},{name:"Object",test:function(x){return typeof x==="object"}},{name:"null",test:function(x){return x===null}},{name:"undefined",test:function(x){return x===undefined}}];var config={};var conversions=[];var ignore=[];var typed={config:config,types:types,conversions:conversions,ignore:ignore};typed=_typed("typed",{Object:function(signatures){var fns=[];for(var signature in signatures){if(signatures.hasOwnProperty(signature)){fns.push(signatures[signature])}}var name=getName(fns);return _typed(name,signatures)},"string, Object":_typed,"...Function":function(fns){var err;var name=getName(fns);var signatures={};for(var i=0;i<fns.length;i++){var fn=fns[i];if(!(typeof fn.signatures==="object")){err=new TypeError("Function is no typed-function (index: "+i+")");err.data={index:i};throw err}for(var signature in fn.signatures){if(fn.signatures.hasOwnProperty(signature)){if(signatures.hasOwnProperty(signature)){if(fn.signatures[signature]!==signatures[signature]){err=new Error('Signature "'+signature+'" is defined twice');err.data={signature:signature};throw err}}else{signatures[signature]=fn.signatures[signature]}}}}return _typed(name,signatures)}});function find(fn,signature){if(!fn.signatures){throw new TypeError("Function is no typed-function")}var arr;if(typeof signature==="string"){arr=signature.split(",");for(var i=0;i<arr.length;i++){arr[i]=arr[i].trim()}}else if(Array.isArray(signature)){arr=signature}else{throw new TypeError("String array or a comma separated string expected")}var str=arr.join(",");var match=fn.signatures[str];if(match){return match}throw new TypeError("Signature not found (signature: "+(fn.name||"unnamed")+"("+arr.join(", ")+"))")}function convert(value,type){var from=getTypeOf(value);if(type===from){return value}for(var i=0;i<typed.conversions.length;i++){var conversion=typed.conversions[i];if(conversion.from===from&&conversion.to===type){return conversion.convert(value)}}throw new Error("Cannot convert from "+from+" to "+type)}typed.config=config;typed.types=types;typed.conversions=conversions;typed.ignore=ignore;typed.create=create;typed.find=find;typed.convert=convert;typed.addType=function(type){if(!type||typeof type.name!=="string"||typeof type.test!=="function"){throw new TypeError("Object with properties {name: string, test: function} expected")}typed.types.push(type)};typed.addConversion=function(conversion){if(!conversion||typeof conversion.from!=="string"||typeof conversion.to!=="string"||typeof conversion.convert!=="function"){throw new TypeError("Object with properties {from: string, to: string, convert: function} expected")}typed.conversions.push(conversion)};return typed}return create()})},{}],519:[function(require,module,exports){(function(global,Buffer){"use strict";var bits=require("bit-twiddle");var dup=require("dup");if(!global.__TYPEDARRAY_POOL){global.__TYPEDARRAY_POOL={UINT8:dup([32,0]),UINT16:dup([32,0]),UINT32:dup([32,0]),INT8:dup([32,0]),INT16:dup([32,0]),INT32:dup([32,0]),FLOAT:dup([32,0]),DOUBLE:dup([32,0]),DATA:dup([32,0]),UINT8C:dup([32,0]),BUFFER:dup([32,0])}}var hasUint8C=typeof Uint8ClampedArray!=="undefined";var POOL=global.__TYPEDARRAY_POOL;if(!POOL.UINT8C){POOL.UINT8C=dup([32,0])}if(!POOL.BUFFER){POOL.BUFFER=dup([32,0])}var DATA=POOL.DATA,BUFFER=POOL.BUFFER;exports.free=function free(array){if(Buffer.isBuffer(array)){BUFFER[bits.log2(array.length)].push(array)}else{if(Object.prototype.toString.call(array)!=="[object ArrayBuffer]"){array=array.buffer}if(!array){return}var n=array.length||array.byteLength;var log_n=bits.log2(n)|0;DATA[log_n].push(array)}};function freeArrayBuffer(buffer){if(!buffer){return}var n=buffer.length||buffer.byteLength;var log_n=bits.log2(n);DATA[log_n].push(buffer)}function freeTypedArray(array){freeArrayBuffer(array.buffer)}exports.freeUint8=exports.freeUint16=exports.freeUint32=exports.freeInt8=exports.freeInt16=exports.freeInt32=exports.freeFloat32=exports.freeFloat=exports.freeFloat64=exports.freeDouble=exports.freeUint8Clamped=exports.freeDataView=freeTypedArray;exports.freeArrayBuffer=freeArrayBuffer;exports.freeBuffer=function freeBuffer(array){BUFFER[bits.log2(array.length)].push(array)};exports.malloc=function malloc(n,dtype){if(dtype===undefined||dtype==="arraybuffer"){return mallocArrayBuffer(n)}else{switch(dtype){case"uint8":return mallocUint8(n);case"uint16":return mallocUint16(n);case"uint32":return mallocUint32(n);case"int8":return mallocInt8(n);case"int16":return mallocInt16(n);case"int32":return mallocInt32(n);case"float":case"float32":return mallocFloat(n);case"double":case"float64":return mallocDouble(n);case"uint8_clamped":return mallocUint8Clamped(n);case"buffer":return mallocBuffer(n);case"data":case"dataview":return mallocDataView(n);default:return null}}return null};function mallocArrayBuffer(n){var n=bits.nextPow2(n);var log_n=bits.log2(n);var d=DATA[log_n];if(d.length>0){return d.pop()}return new ArrayBuffer(n)}exports.mallocArrayBuffer=mallocArrayBuffer;function mallocUint8(n){return new Uint8Array(mallocArrayBuffer(n),0,n)}exports.mallocUint8=mallocUint8;function mallocUint16(n){return new Uint16Array(mallocArrayBuffer(2*n),0,n)}exports.mallocUint16=mallocUint16;function mallocUint32(n){return new Uint32Array(mallocArrayBuffer(4*n),0,n)}exports.mallocUint32=mallocUint32;function mallocInt8(n){return new Int8Array(mallocArrayBuffer(n),0,n)}exports.mallocInt8=mallocInt8;function mallocInt16(n){return new Int16Array(mallocArrayBuffer(2*n),0,n)}exports.mallocInt16=mallocInt16;function mallocInt32(n){return new Int32Array(mallocArrayBuffer(4*n),0,n)}exports.mallocInt32=mallocInt32;function mallocFloat(n){return new Float32Array(mallocArrayBuffer(4*n),0,n)}exports.mallocFloat32=exports.mallocFloat=mallocFloat;function mallocDouble(n){return new Float64Array(mallocArrayBuffer(8*n),0,n)}exports.mallocFloat64=exports.mallocDouble=mallocDouble;function mallocUint8Clamped(n){if(hasUint8C){return new Uint8ClampedArray(mallocArrayBuffer(n),0,n)}else{return mallocUint8(n)}}exports.mallocUint8Clamped=mallocUint8Clamped;function mallocDataView(n){return new DataView(mallocArrayBuffer(n),0,n)}exports.mallocDataView=mallocDataView;function mallocBuffer(n){n=bits.nextPow2(n);var log_n=bits.log2(n);var cache=BUFFER[log_n];if(cache.length>0){return cache.pop()}return new Buffer(n)}exports.mallocBuffer=mallocBuffer;exports.clearCache=function clearCache(){for(var i=0;i<32;++i){POOL.UINT8[i].length=0;POOL.UINT16[i].length=0;POOL.UINT32[i].length=0;POOL.INT8[i].length=0;POOL.INT16[i].length=0;POOL.INT32[i].length=0;POOL.FLOAT[i].length=0;POOL.DOUBLE[i].length=0;POOL.UINT8C[i].length=0;DATA[i].length=0;BUFFER[i].length=0}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("buffer").Buffer)},{"bit-twiddle":6,buffer:523,dup:12}],520:[function(require,module,exports){(function(){var root=this;var previousUnderscore=root._;var ArrayProto=Array.prototype,ObjProto=Object.prototype,FuncProto=Function.prototype;var push=ArrayProto.push,slice=ArrayProto.slice,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty;var nativeIsArray=Array.isArray,nativeKeys=Object.keys,nativeBind=FuncProto.bind,nativeCreate=Object.create;var Ctor=function(){};var _=function(obj){if(obj instanceof _)return obj;if(!(this instanceof _))return new _(obj);this._wrapped=obj};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=_}exports._=_}else{root._=_}_.VERSION="1.8.3";var optimizeCb=function(func,context,argCount){if(context===void 0)return func;switch(argCount==null?3:argCount){case 1:return function(value){return func.call(context,value)};case 2:return function(value,other){return func.call(context,value,other)};case 3:return function(value,index,collection){return func.call(context,value,index,collection)};case 4:return function(accumulator,value,index,collection){return func.call(context,accumulator,value,index,collection)}}return function(){return func.apply(context,arguments)}};var cb=function(value,context,argCount){if(value==null)return _.identity;if(_.isFunction(value))return optimizeCb(value,context,argCount);if(_.isObject(value))return _.matcher(value);return _.property(value)};_.iteratee=function(value,context){return cb(value,context,Infinity)};var createAssigner=function(keysFunc,undefinedOnly){return function(obj){var length=arguments.length;if(length<2||obj==null)return obj;for(var index=1;index<length;index++){var source=arguments[index],keys=keysFunc(source),l=keys.length;for(var i=0;i<l;i++){var key=keys[i];if(!undefinedOnly||obj[key]===void 0)obj[key]=source[key]}}return obj}};var baseCreate=function(prototype){if(!_.isObject(prototype))return{};if(nativeCreate)return nativeCreate(prototype);Ctor.prototype=prototype;var result=new Ctor;Ctor.prototype=null;return result};var property=function(key){return function(obj){return obj==null?void 0:obj[key]}};var MAX_ARRAY_INDEX=Math.pow(2,53)-1;var getLength=property("length");var isArrayLike=function(collection){var length=getLength(collection);return typeof length=="number"&&length>=0&&length<=MAX_ARRAY_INDEX};_.each=_.forEach=function(obj,iteratee,context){iteratee=optimizeCb(iteratee,context);var i,length;if(isArrayLike(obj)){for(i=0,length=obj.length;i<length;i++){iteratee(obj[i],i,obj)}}else{var keys=_.keys(obj);for(i=0,length=keys.length;i<length;i++){iteratee(obj[keys[i]],keys[i],obj)}}return obj};_.map=_.collect=function(obj,iteratee,context){iteratee=cb(iteratee,context);var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length,results=Array(length);for(var index=0;index<length;index++){var currentKey=keys?keys[index]:index;results[index]=iteratee(obj[currentKey],currentKey,obj)}return results};function createReduce(dir){function iterator(obj,iteratee,memo,keys,index,length){for(;index>=0&&index<length;index+=dir){var currentKey=keys?keys[index]:index;memo=iteratee(memo,obj[currentKey],currentKey,obj)}return memo}return function(obj,iteratee,memo,context){iteratee=optimizeCb(iteratee,context,4);var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length,index=dir>0?0:length-1;if(arguments.length<3){memo=obj[keys?keys[index]:index];index+=dir}return iterator(obj,iteratee,memo,keys,index,length)}}_.reduce=_.foldl=_.inject=createReduce(1);_.reduceRight=_.foldr=createReduce(-1);_.find=_.detect=function(obj,predicate,context){var key;if(isArrayLike(obj)){key=_.findIndex(obj,predicate,context)}else{key=_.findKey(obj,predicate,context)}if(key!==void 0&&key!==-1)return obj[key]};_.filter=_.select=function(obj,predicate,context){var results=[];predicate=cb(predicate,context);_.each(obj,function(value,index,list){if(predicate(value,index,list))results.push(value)});return results};_.reject=function(obj,predicate,context){return _.filter(obj,_.negate(cb(predicate)),context)};_.every=_.all=function(obj,predicate,context){predicate=cb(predicate,context);var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length;for(var index=0;index<length;index++){var currentKey=keys?keys[index]:index;if(!predicate(obj[currentKey],currentKey,obj))return false}return true};_.some=_.any=function(obj,predicate,context){predicate=cb(predicate,context);var keys=!isArrayLike(obj)&&_.keys(obj),length=(keys||obj).length;for(var index=0;index<length;index++){var currentKey=keys?keys[index]:index;if(predicate(obj[currentKey],currentKey,obj))return true}return false};_.contains=_.includes=_.include=function(obj,item,fromIndex,guard){if(!isArrayLike(obj))obj=_.values(obj);if(typeof fromIndex!="number"||guard)fromIndex=0;return _.indexOf(obj,item,fromIndex)>=0};_.invoke=function(obj,method){var args=slice.call(arguments,2);var isFunc=_.isFunction(method);return _.map(obj,function(value){var func=isFunc?method:value[method];return func==null?func:func.apply(value,args)})};_.pluck=function(obj,key){return _.map(obj,_.property(key))};_.where=function(obj,attrs){return _.filter(obj,_.matcher(attrs))};_.findWhere=function(obj,attrs){return _.find(obj,_.matcher(attrs))};_.max=function(obj,iteratee,context){var result=-Infinity,lastComputed=-Infinity,value,computed;if(iteratee==null&&obj!=null){obj=isArrayLike(obj)?obj:_.values(obj);for(var i=0,length=obj.length;i<length;i++){value=obj[i];if(value>result){result=value}}}else{iteratee=cb(iteratee,context);_.each(obj,function(value,index,list){computed=iteratee(value,index,list);if(computed>lastComputed||computed===-Infinity&&result===-Infinity){result=value;lastComputed=computed}})}return result};_.min=function(obj,iteratee,context){var result=Infinity,lastComputed=Infinity,value,computed;if(iteratee==null&&obj!=null){obj=isArrayLike(obj)?obj:_.values(obj);for(var i=0,length=obj.length;i<length;i++){value=obj[i];if(value<result){result=value}}}else{iteratee=cb(iteratee,context);_.each(obj,function(value,index,list){computed=iteratee(value,index,list);if(computed<lastComputed||computed===Infinity&&result===Infinity){result=value;lastComputed=computed}})}return result};_.shuffle=function(obj){var set=isArrayLike(obj)?obj:_.values(obj);var length=set.length;var shuffled=Array(length);for(var index=0,rand;index<length;index++){rand=_.random(0,index);if(rand!==index)shuffled[index]=shuffled[rand];shuffled[rand]=set[index]}return shuffled};_.sample=function(obj,n,guard){if(n==null||guard){if(!isArrayLike(obj))obj=_.values(obj);return obj[_.random(obj.length-1)]}return _.shuffle(obj).slice(0,Math.max(0,n))};_.sortBy=function(obj,iteratee,context){iteratee=cb(iteratee,context);return _.pluck(_.map(obj,function(value,index,list){return{value:value,index:index,criteria:iteratee(value,index,list)}}).sort(function(left,right){var a=left.criteria;var b=right.criteria;if(a!==b){if(a>b||a===void 0)return 1;if(a<b||b===void 0)return-1}return left.index-right.index}),"value")};var group=function(behavior){return function(obj,iteratee,context){var result={};iteratee=cb(iteratee,context);_.each(obj,function(value,index){var key=iteratee(value,index,obj);behavior(result,value,key)});return result}};_.groupBy=group(function(result,value,key){if(_.has(result,key))result[key].push(value);else result[key]=[value]});_.indexBy=group(function(result,value,key){result[key]=value});_.countBy=group(function(result,value,key){if(_.has(result,key))result[key]++;else result[key]=1});_.toArray=function(obj){if(!obj)return[];if(_.isArray(obj))return slice.call(obj);if(isArrayLike(obj))return _.map(obj,_.identity);return _.values(obj)};_.size=function(obj){if(obj==null)return 0;return isArrayLike(obj)?obj.length:_.keys(obj).length};_.partition=function(obj,predicate,context){predicate=cb(predicate,context);var pass=[],fail=[];_.each(obj,function(value,key,obj){(predicate(value,key,obj)?pass:fail).push(value)});return[pass,fail]};_.first=_.head=_.take=function(array,n,guard){if(array==null)return void 0;if(n==null||guard)return array[0];return _.initial(array,array.length-n)};_.initial=function(array,n,guard){return slice.call(array,0,Math.max(0,array.length-(n==null||guard?1:n)))};_.last=function(array,n,guard){if(array==null)return void 0;if(n==null||guard)return array[array.length-1];return _.rest(array,Math.max(0,array.length-n))};_.rest=_.tail=_.drop=function(array,n,guard){return slice.call(array,n==null||guard?1:n)};_.compact=function(array){return _.filter(array,_.identity)};var flatten=function(input,shallow,strict,startIndex){var output=[],idx=0;for(var i=startIndex||0,length=getLength(input);i<length;i++){var value=input[i];if(isArrayLike(value)&&(_.isArray(value)||_.isArguments(value))){if(!shallow)value=flatten(value,shallow,strict);var j=0,len=value.length;output.length+=len;while(j<len){output[idx++]=value[j++]}}else if(!strict){output[idx++]=value}}return output};_.flatten=function(array,shallow){return flatten(array,shallow,false)};_.without=function(array){return _.difference(array,slice.call(arguments,1))};_.uniq=_.unique=function(array,isSorted,iteratee,context){if(!_.isBoolean(isSorted)){context=iteratee;iteratee=isSorted;isSorted=false}if(iteratee!=null)iteratee=cb(iteratee,context);var result=[];var seen=[];for(var i=0,length=getLength(array);i<length;i++){var value=array[i],computed=iteratee?iteratee(value,i,array):value;if(isSorted){if(!i||seen!==computed)result.push(value);seen=computed}else if(iteratee){if(!_.contains(seen,computed)){seen.push(computed);result.push(value)}}else if(!_.contains(result,value)){result.push(value)}}return result};_.union=function(){return _.uniq(flatten(arguments,true,true))};_.intersection=function(array){var result=[];var argsLength=arguments.length;for(var i=0,length=getLength(array);i<length;i++){var item=array[i];if(_.contains(result,item))continue;for(var j=1;j<argsLength;j++){if(!_.contains(arguments[j],item))break}if(j===argsLength)result.push(item)}return result};_.difference=function(array){var rest=flatten(arguments,true,true,1);return _.filter(array,function(value){return!_.contains(rest,value)})};_.zip=function(){return _.unzip(arguments)};_.unzip=function(array){var length=array&&_.max(array,getLength).length||0;var result=Array(length);for(var index=0;index<length;index++){result[index]=_.pluck(array,index)}return result};_.object=function(list,values){var result={};for(var i=0,length=getLength(list);i<length;i++){if(values){result[list[i]]=values[i]}else{result[list[i][0]]=list[i][1]}}return result};function createPredicateIndexFinder(dir){return function(array,predicate,context){predicate=cb(predicate,context);var length=getLength(array);var index=dir>0?0:length-1;for(;index>=0&&index<length;index+=dir){if(predicate(array[index],index,array))return index}return-1}}_.findIndex=createPredicateIndexFinder(1);_.findLastIndex=createPredicateIndexFinder(-1);_.sortedIndex=function(array,obj,iteratee,context){iteratee=cb(iteratee,context,1);var value=iteratee(obj);var low=0,high=getLength(array);while(low<high){var mid=Math.floor((low+high)/2);if(iteratee(array[mid])<value)low=mid+1;else high=mid}return low};function createIndexFinder(dir,predicateFind,sortedIndex){return function(array,item,idx){var i=0,length=getLength(array);if(typeof idx=="number"){if(dir>0){i=idx>=0?idx:Math.max(idx+length,i)}else{length=idx>=0?Math.min(idx+1,length):idx+length+1}}else if(sortedIndex&&idx&&length){idx=sortedIndex(array,item);return array[idx]===item?idx:-1}if(item!==item){idx=predicateFind(slice.call(array,i,length),_.isNaN);return idx>=0?idx+i:-1}for(idx=dir>0?i:length-1;idx>=0&&idx<length;idx+=dir){if(array[idx]===item)return idx}return-1}}_.indexOf=createIndexFinder(1,_.findIndex,_.sortedIndex);_.lastIndexOf=createIndexFinder(-1,_.findLastIndex);_.range=function(start,stop,step){if(stop==null){stop=start||0;start=0}step=step||1;var length=Math.max(Math.ceil((stop-start)/step),0);var range=Array(length);for(var idx=0;idx<length;idx++,start+=step){range[idx]=start}return range};var executeBound=function(sourceFunc,boundFunc,context,callingContext,args){if(!(callingContext instanceof boundFunc))return sourceFunc.apply(context,args);var self=baseCreate(sourceFunc.prototype);var result=sourceFunc.apply(self,args);if(_.isObject(result))return result;return self};_.bind=function(func,context){if(nativeBind&&func.bind===nativeBind)return nativeBind.apply(func,slice.call(arguments,1));if(!_.isFunction(func))throw new TypeError("Bind must be called on a function");var args=slice.call(arguments,2);var bound=function(){return executeBound(func,bound,context,this,args.concat(slice.call(arguments)))};return bound};_.partial=function(func){var boundArgs=slice.call(arguments,1);var bound=function(){var position=0,length=boundArgs.length;var args=Array(length);for(var i=0;i<length;i++){args[i]=boundArgs[i]===_?arguments[position++]:boundArgs[i]}while(position<arguments.length)args.push(arguments[position++]);return executeBound(func,bound,this,this,args)};return bound};_.bindAll=function(obj){var i,length=arguments.length,key;if(length<=1)throw new Error("bindAll must be passed function names");for(i=1;i<length;i++){key=arguments[i];obj[key]=_.bind(obj[key],obj)}return obj};_.memoize=function(func,hasher){var memoize=function(key){var cache=memoize.cache;var address=""+(hasher?hasher.apply(this,arguments):key);if(!_.has(cache,address))cache[address]=func.apply(this,arguments);return cache[address]};memoize.cache={};return memoize};_.delay=function(func,wait){var args=slice.call(arguments,2);return setTimeout(function(){return func.apply(null,args)},wait)};_.defer=_.partial(_.delay,_,1);_.throttle=function(func,wait,options){var context,args,result;var timeout=null;var previous=0;if(!options)options={};var later=function(){previous=options.leading===false?0:_.now();timeout=null;result=func.apply(context,args);if(!timeout)context=args=null};return function(){var now=_.now();if(!previous&&options.leading===false)previous=now;var remaining=wait-(now-previous);context=this;args=arguments;if(remaining<=0||remaining>wait){if(timeout){clearTimeout(timeout);timeout=null}previous=now;result=func.apply(context,args);if(!timeout)context=args=null}else if(!timeout&&options.trailing!==false){timeout=setTimeout(later,remaining)}return result}};_.debounce=function(func,wait,immediate){var timeout,args,context,timestamp,result;var later=function(){var last=_.now()-timestamp;if(last<wait&&last>=0){timeout=setTimeout(later,wait-last)}else{timeout=null;if(!immediate){result=func.apply(context,args);if(!timeout)context=args=null}}};return function(){context=this;args=arguments;timestamp=_.now();var callNow=immediate&&!timeout;if(!timeout)timeout=setTimeout(later,wait);if(callNow){result=func.apply(context,args);context=args=null}return result}};_.wrap=function(func,wrapper){return _.partial(wrapper,func)};_.negate=function(predicate){return function(){return!predicate.apply(this,arguments)}};_.compose=function(){var args=arguments;var start=args.length-1;return function(){var i=start;var result=args[start].apply(this,arguments);while(i--)result=args[i].call(this,result);return result}};_.after=function(times,func){return function(){if(--times<1){return func.apply(this,arguments)}}};_.before=function(times,func){var memo;return function(){if(--times>0){memo=func.apply(this,arguments)}if(times<=1)func=null;return memo}};_.once=_.partial(_.before,2);var hasEnumBug=!{toString:null}.propertyIsEnumerable("toString");var nonEnumerableProps=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];function collectNonEnumProps(obj,keys){var nonEnumIdx=nonEnumerableProps.length;var constructor=obj.constructor;var proto=_.isFunction(constructor)&&constructor.prototype||ObjProto;var prop="constructor";if(_.has(obj,prop)&&!_.contains(keys,prop))keys.push(prop);while(nonEnumIdx--){prop=nonEnumerableProps[nonEnumIdx];if(prop in obj&&obj[prop]!==proto[prop]&&!_.contains(keys,prop)){keys.push(prop)}}}_.keys=function(obj){if(!_.isObject(obj))return[];if(nativeKeys)return nativeKeys(obj);var keys=[];for(var key in obj)if(_.has(obj,key))keys.push(key);if(hasEnumBug)collectNonEnumProps(obj,keys);return keys};_.allKeys=function(obj){if(!_.isObject(obj))return[];var keys=[];for(var key in obj)keys.push(key);if(hasEnumBug)collectNonEnumProps(obj,keys);return keys};_.values=function(obj){var keys=_.keys(obj);var length=keys.length;var values=Array(length);for(var i=0;i<length;i++){values[i]=obj[keys[i]]}return values};_.mapObject=function(obj,iteratee,context){iteratee=cb(iteratee,context);var keys=_.keys(obj),length=keys.length,results={},currentKey;for(var index=0;index<length;index++){currentKey=keys[index];results[currentKey]=iteratee(obj[currentKey],currentKey,obj)}return results};_.pairs=function(obj){var keys=_.keys(obj);var length=keys.length;var pairs=Array(length);for(var i=0;i<length;i++){pairs[i]=[keys[i],obj[keys[i]]]}return pairs};_.invert=function(obj){var result={};var keys=_.keys(obj);for(var i=0,length=keys.length;i<length;i++){result[obj[keys[i]]]=keys[i]}return result};_.functions=_.methods=function(obj){var names=[];for(var key in obj){if(_.isFunction(obj[key]))names.push(key)}return names.sort()};_.extend=createAssigner(_.allKeys);_.extendOwn=_.assign=createAssigner(_.keys);_.findKey=function(obj,predicate,context){predicate=cb(predicate,context);var keys=_.keys(obj),key;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(predicate(obj[key],key,obj))return key}};_.pick=function(object,oiteratee,context){var result={},obj=object,iteratee,keys;if(obj==null)return result;if(_.isFunction(oiteratee)){keys=_.allKeys(obj);iteratee=optimizeCb(oiteratee,context)}else{keys=flatten(arguments,false,false,1);iteratee=function(value,key,obj){return key in obj};obj=Object(obj)}for(var i=0,length=keys.length;i<length;i++){var key=keys[i];var value=obj[key];if(iteratee(value,key,obj))result[key]=value}return result};_.omit=function(obj,iteratee,context){if(_.isFunction(iteratee)){iteratee=_.negate(iteratee)}else{var keys=_.map(flatten(arguments,false,false,1),String);iteratee=function(value,key){return!_.contains(keys,key)}}return _.pick(obj,iteratee,context)};_.defaults=createAssigner(_.allKeys,true);_.create=function(prototype,props){var result=baseCreate(prototype);if(props)_.extendOwn(result,props);return result};_.clone=function(obj){if(!_.isObject(obj))return obj;return _.isArray(obj)?obj.slice():_.extend({},obj)};_.tap=function(obj,interceptor){interceptor(obj);return obj};_.isMatch=function(object,attrs){var keys=_.keys(attrs),length=keys.length;if(object==null)return!length;var obj=Object(object);for(var i=0;i<length;i++){var key=keys[i];if(attrs[key]!==obj[key]||!(key in obj))return false}return true};var eq=function(a,b,aStack,bStack){if(a===b)return a!==0||1/a===1/b;if(a==null||b==null)return a===b;if(a instanceof _)a=a._wrapped;if(b instanceof _)b=b._wrapped;var className=toString.call(a);if(className!==toString.call(b))return false;switch(className){case"[object RegExp]":case"[object String]":return""+a===""+b;case"[object Number]":if(+a!==+a)return+b!==+b;return+a===0?1/+a===1/b:+a===+b;case"[object Date]":case"[object Boolean]":return+a===+b}var areArrays=className==="[object Array]";if(!areArrays){if(typeof a!="object"||typeof b!="object")return false;var aCtor=a.constructor,bCtor=b.constructor;if(aCtor!==bCtor&&!(_.isFunction(aCtor)&&aCtor instanceof aCtor&&_.isFunction(bCtor)&&bCtor instanceof bCtor)&&("constructor"in a&&"constructor"in b)){return false}}aStack=aStack||[];bStack=bStack||[];var length=aStack.length;while(length--){if(aStack[length]===a)return bStack[length]===b}aStack.push(a);bStack.push(b);if(areArrays){length=a.length;if(length!==b.length)return false;while(length--){if(!eq(a[length],b[length],aStack,bStack))return false}}else{var keys=_.keys(a),key;length=keys.length;if(_.keys(b).length!==length)return false;while(length--){key=keys[length];if(!(_.has(b,key)&&eq(a[key],b[key],aStack,bStack)))return false}}aStack.pop();bStack.pop();return true};_.isEqual=function(a,b){return eq(a,b)};_.isEmpty=function(obj){if(obj==null)return true;if(isArrayLike(obj)&&(_.isArray(obj)||_.isString(obj)||_.isArguments(obj)))return obj.length===0;return _.keys(obj).length===0};_.isElement=function(obj){return!!(obj&&obj.nodeType===1)};_.isArray=nativeIsArray||function(obj){return toString.call(obj)==="[object Array]"};_.isObject=function(obj){var type=typeof obj;return type==="function"||type==="object"&&!!obj};_.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(name){_["is"+name]=function(obj){return toString.call(obj)==="[object "+name+"]"}});if(!_.isArguments(arguments)){_.isArguments=function(obj){return _.has(obj,"callee")}}if(typeof/./!="function"&&typeof Int8Array!="object"){_.isFunction=function(obj){return typeof obj=="function"||false}}_.isFinite=function(obj){return isFinite(obj)&&!isNaN(parseFloat(obj))};_.isNaN=function(obj){return _.isNumber(obj)&&obj!==+obj};_.isBoolean=function(obj){return obj===true||obj===false||toString.call(obj)==="[object Boolean]"};_.isNull=function(obj){return obj===null};_.isUndefined=function(obj){return obj===void 0};_.has=function(obj,key){return obj!=null&&hasOwnProperty.call(obj,key)};_.noConflict=function(){root._=previousUnderscore;return this};_.identity=function(value){return value};_.constant=function(value){return function(){return value}};_.noop=function(){};_.property=property;_.propertyOf=function(obj){return obj==null?function(){}:function(key){return obj[key]}};_.matcher=_.matches=function(attrs){attrs=_.extendOwn({},attrs);return function(obj){return _.isMatch(obj,attrs)}};_.times=function(n,iteratee,context){var accum=Array(Math.max(0,n));iteratee=optimizeCb(iteratee,context,1);for(var i=0;i<n;i++)accum[i]=iteratee(i);return accum};_.random=function(min,max){if(max==null){max=min;min=0}return min+Math.floor(Math.random()*(max-min+1))};_.now=Date.now||function(){return(new Date).getTime()};var escapeMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"};var unescapeMap=_.invert(escapeMap);var createEscaper=function(map){var escaper=function(match){return map[match]};var source="(?:"+_.keys(map).join("|")+")";var testRegexp=RegExp(source);var replaceRegexp=RegExp(source,"g");return function(string){string=string==null?"":""+string;return testRegexp.test(string)?string.replace(replaceRegexp,escaper):string}};_.escape=createEscaper(escapeMap);_.unescape=createEscaper(unescapeMap);_.result=function(object,property,fallback){var value=object==null?void 0:object[property];if(value===void 0){value=fallback}return _.isFunction(value)?value.call(object):value};var idCounter=0;_.uniqueId=function(prefix){var id=++idCounter+"";return prefix?prefix+id:id};_.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var noMatch=/(.)^/;var escapes={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"};var escaper=/\\|'|\r|\n|\u2028|\u2029/g;var escapeChar=function(match){return"\\"+escapes[match]};_.template=function(text,settings,oldSettings){if(!settings&&oldSettings)settings=oldSettings;settings=_.defaults({},settings,_.templateSettings);var matcher=RegExp([(settings.escape||noMatch).source,(settings.interpolate||noMatch).source,(settings.evaluate||noMatch).source].join("|")+"|$","g");var index=0;var source="__p+='";text.replace(matcher,function(match,escape,interpolate,evaluate,offset){source+=text.slice(index,offset).replace(escaper,escapeChar);index=offset+match.length;if(escape){source+="'+\n((__t=("+escape+"))==null?'':_.escape(__t))+\n'"}else if(interpolate){source+="'+\n((__t=("+interpolate+"))==null?'':__t)+\n'"}else if(evaluate){source+="';\n"+evaluate+"\n__p+='"}return match});source+="';\n";if(!settings.variable)source="with(obj||{}){\n"+source+"}\n";source="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+source+"return __p;\n";try{var render=new Function(settings.variable||"obj","_",source)}catch(e){e.source=source;throw e}var template=function(data){return render.call(this,data,_)};var argument=settings.variable||"obj";template.source="function("+argument+"){\n"+source+"}";return template};_.chain=function(obj){var instance=_(obj);instance._chain=true;return instance};var result=function(instance,obj){return instance._chain?_(obj).chain():obj};_.mixin=function(obj){_.each(_.functions(obj),function(name){var func=_[name]=obj[name];_.prototype[name]=function(){var args=[this._wrapped];push.apply(args,arguments);return result(this,func.apply(_,args))}})};_.mixin(_);_.each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){var obj=this._wrapped;method.apply(obj,arguments);if((name==="shift"||name==="splice")&&obj.length===0)delete obj[0];return result(this,obj)}});_.each(["concat","join","slice"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){return result(this,method.apply(this._wrapped,arguments));
}});_.prototype.value=function(){return this._wrapped};_.prototype.valueOf=_.prototype.toJSON=_.prototype.value;_.prototype.toString=function(){return""+this._wrapped};if(typeof define==="function"&&define.amd){define("underscore",[],function(){return _})}}).call(this)},{}],521:[function(require,module,exports){"use strict";function unique_pred(list,compare){var ptr=1,len=list.length,a=list[0],b=list[0];for(var i=1;i<len;++i){b=a;a=list[i];if(compare(a,b)){if(i===ptr){ptr++;continue}list[ptr++]=a}}list.length=ptr;return list}function unique_eq(list){var ptr=1,len=list.length,a=list[0],b=list[0];for(var i=1;i<len;++i,b=a){b=a;a=list[i];if(a!==b){if(i===ptr){ptr++;continue}list[ptr++]=a}}list.length=ptr;return list}function unique(list,compare,sorted){if(list.length===0){return list}if(compare){if(!sorted){list.sort(compare)}return unique_pred(list,compare)}if(!sorted){list.sort()}return unique_eq(list)}module.exports=unique},{}],522:[function(require,module,exports){"use strict";exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;function init(){var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i}revLookup["-".charCodeAt(0)]=62;revLookup["_".charCodeAt(0)]=63}init();function toByteArray(b64){var i,j,l,tmp,placeHolders,arr;var len=b64.length;if(len%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}placeHolders=b64[len-2]==="="?2:b64[len-1]==="="?1:0;arr=new Arr(len*3/4-placeHolders);l=placeHolders>0?len-4:len;var L=0;for(i=0,j=0;i<l;i+=4,j+=3){tmp=revLookup[b64.charCodeAt(i)]<<18|revLookup[b64.charCodeAt(i+1)]<<12|revLookup[b64.charCodeAt(i+2)]<<6|revLookup[b64.charCodeAt(i+3)];arr[L++]=tmp>>16&255;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&255}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;i<end;i+=3){tmp=(uint8[i]<<16)+(uint8[i+1]<<8)+uint8[i+2];output.push(tripletToBase64(tmp))}return output.join("")}function fromByteArray(uint8){var tmp;var len=uint8.length;var extraBytes=len%3;var output="";var parts=[];var maxChunkLength=16383;for(var i=0,len2=len-extraBytes;i<len2;i+=maxChunkLength){parts.push(encodeChunk(uint8,i,i+maxChunkLength>len2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&63];output+="=="}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&63];output+=lookup[tmp<<2&63];output+="="}parts.push(output);return parts.join("")}},{}],523:[function(require,module,exports){(function(global){"use strict";var base64=require("base64-js");var ieee754=require("ieee754");var isArray=require("isarray");exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;Buffer.TYPED_ARRAY_SUPPORT=global.TYPED_ARRAY_SUPPORT!==undefined?global.TYPED_ARRAY_SUPPORT:typedArraySupport();exports.kMaxLength=kMaxLength();function typedArraySupport(){try{var arr=new Uint8Array(1);arr.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}};return arr.foo()===42&&typeof arr.subarray==="function"&&arr.subarray(1,1).byteLength===0}catch(e){return false}}function kMaxLength(){return Buffer.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(that,length){if(kMaxLength()<length){throw new RangeError("Invalid typed array length")}if(Buffer.TYPED_ARRAY_SUPPORT){that=new Uint8Array(length);that.__proto__=Buffer.prototype}else{if(that===null){that=new Buffer(length)}that.length=length}return that}function Buffer(arg,encodingOrOffset,length){if(!Buffer.TYPED_ARRAY_SUPPORT&&!(this instanceof Buffer)){return new Buffer(arg,encodingOrOffset,length)}if(typeof arg==="number"){if(typeof encodingOrOffset==="string"){throw new Error("If encoding is specified then the first argument must be a string")}return allocUnsafe(this,arg)}return from(this,arg,encodingOrOffset,length)}Buffer.poolSize=8192;Buffer._augment=function(arr){arr.__proto__=Buffer.prototype;return arr};function from(that,value,encodingOrOffset,length){if(typeof value==="number"){throw new TypeError('"value" argument must not be a number')}if(typeof ArrayBuffer!=="undefined"&&value instanceof ArrayBuffer){return fromArrayBuffer(that,value,encodingOrOffset,length)}if(typeof value==="string"){return fromString(that,value,encodingOrOffset)}return fromObject(that,value)}Buffer.from=function(value,encodingOrOffset,length){return from(null,value,encodingOrOffset,length)};if(Buffer.TYPED_ARRAY_SUPPORT){Buffer.prototype.__proto__=Uint8Array.prototype;Buffer.__proto__=Uint8Array;if(typeof Symbol!=="undefined"&&Symbol.species&&Buffer[Symbol.species]===Buffer){Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:true})}}function assertSize(size){if(typeof size!=="number"){throw new TypeError('"size" argument must be a number')}}function alloc(that,size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(that,size)}if(fill!==undefined){return typeof encoding==="string"?createBuffer(that,size).fill(fill,encoding):createBuffer(that,size).fill(fill)}return createBuffer(that,size)}Buffer.alloc=function(size,fill,encoding){return alloc(null,size,fill,encoding)};function allocUnsafe(that,size){assertSize(size);that=createBuffer(that,size<0?0:checked(size)|0);if(!Buffer.TYPED_ARRAY_SUPPORT){for(var i=0;i<size;++i){that[i]=0}}return that}Buffer.allocUnsafe=function(size){return allocUnsafe(null,size)};Buffer.allocUnsafeSlow=function(size){return allocUnsafe(null,size)};function fromString(that,string,encoding){if(typeof encoding!=="string"||encoding===""){encoding="utf8"}if(!Buffer.isEncoding(encoding)){throw new TypeError('"encoding" must be a valid string encoding')}var length=byteLength(string,encoding)|0;that=createBuffer(that,length);var actual=that.write(string,encoding);if(actual!==length){that=that.slice(0,actual)}return that}function fromArrayLike(that,array){var length=checked(array.length)|0;that=createBuffer(that,length);for(var i=0;i<length;i+=1){that[i]=array[i]&255}return that}function fromArrayBuffer(that,array,byteOffset,length){array.byteLength;if(byteOffset<0||array.byteLength<byteOffset){throw new RangeError("'offset' is out of bounds")}if(array.byteLength<byteOffset+(length||0)){throw new RangeError("'length' is out of bounds")}if(byteOffset===undefined&&length===undefined){array=new Uint8Array(array)}else if(length===undefined){array=new Uint8Array(array,byteOffset)}else{array=new Uint8Array(array,byteOffset,length)}if(Buffer.TYPED_ARRAY_SUPPORT){that=array;that.__proto__=Buffer.prototype}else{that=fromArrayLike(that,array)}return that}function fromObject(that,obj){if(Buffer.isBuffer(obj)){var len=checked(obj.length)|0;that=createBuffer(that,len);if(that.length===0){return that}obj.copy(that,0,0,len);return that}if(obj){if(typeof ArrayBuffer!=="undefined"&&obj.buffer instanceof ArrayBuffer||"length"in obj){if(typeof obj.length!=="number"||isnan(obj.length)){return createBuffer(that,0)}return fromArrayLike(that,obj)}if(obj.type==="Buffer"&&isArray(obj.data)){return fromArrayLike(that,obj.data)}}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function checked(length){if(length>=kMaxLength()){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+kMaxLength().toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return!!(b!=null&&b._isBuffer)};Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError("Arguments must be Buffers")}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i<len;++i){if(a[i]!==b[i]){x=a[i];y=b[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return true;default:return false}};Buffer.concat=function concat(list,length){if(!isArray(list)){throw new TypeError('"list" argument must be an Array of Buffers')}if(list.length===0){return Buffer.alloc(0)}var i;if(length===undefined){length=0;for(i=0;i<list.length;++i){length+=list[i].length}}var buffer=Buffer.allocUnsafe(length);var pos=0;for(i=0;i<list.length;++i){var buf=list[i];if(!Buffer.isBuffer(buf)){throw new TypeError('"list" argument must be an Array of Buffers')}buf.copy(buffer,pos);pos+=buf.length}return buffer};function byteLength(string,encoding){if(Buffer.isBuffer(string)){return string.length}if(typeof ArrayBuffer!=="undefined"&&typeof ArrayBuffer.isView==="function"&&(ArrayBuffer.isView(string)||string instanceof ArrayBuffer)){return string.byteLength}if(typeof string!=="string"){string=""+string}var len=string.length;if(len===0)return 0;var loweredCase=false;for(;;){switch(encoding){case"ascii":case"latin1":case"binary":return len;case"utf8":case"utf-8":case undefined:return utf8ToBytes(string).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return len*2;case"hex":return len>>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(var i=0;i<len;i+=2){swap(this,i,i+1)}return this};Buffer.prototype.swap32=function swap32(){var len=this.length;if(len%4!==0){throw new RangeError("Buffer size must be a multiple of 32-bits")}for(var i=0;i<len;i+=4){swap(this,i,i+3);swap(this,i+1,i+2)}return this};Buffer.prototype.swap64=function swap64(){var len=this.length;if(len%8!==0){throw new RangeError("Buffer size must be a multiple of 64-bits")}for(var i=0;i<len;i+=8){swap(this,i,i+7);swap(this,i+1,i+6);swap(this,i+2,i+5);swap(this,i+3,i+4)}return this};Buffer.prototype.toString=function toString(){var length=this.length|0;if(length===0)return"";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");if(this===b)return true;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function inspect(){var str="";var max=exports.INSPECT_MAX_BYTES;if(this.length>0){str=this.toString("hex",0,max).match(/.{2}/g).join(" ");if(this.length>max)str+=" ... "}return"<Buffer "+str+">"};Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(!Buffer.isBuffer(target)){throw new TypeError("Argument must be a Buffer")}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i<len;++i){if(thisCopy[i]!==targetCopy[i]){x=thisCopy[i];y=targetCopy[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){if(buffer.length===0)return-1;if(typeof byteOffset==="string"){encoding=byteOffset;byteOffset=0}else if(byteOffset>2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(isNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(Buffer.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;i<arrLength;i++){if(read(arr,i)===read(val,foundIndex===-1?0:i-foundIndex)){if(foundIndex===-1)foundIndex=i;if(i-foundIndex+1===valLength)return foundIndex*indexSize}else{if(foundIndex!==-1)i-=i-foundIndex;foundIndex=-1}}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;j<valLength;j++){if(read(arr,i+j)!==read(val,j)){found=false;break}}if(found)return i}}return-1}Buffer.prototype.includes=function includes(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1};Buffer.prototype.indexOf=function indexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,true)};Buffer.prototype.lastIndexOf=function lastIndexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,false)};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;var remaining=buf.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}var strLen=string.length;if(strLen%2!==0)throw new TypeError("Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;i<length;++i){var parsed=parseInt(string.substr(i*2,2),16);if(isNaN(parsed))return i;buf[offset+i]=parsed}return i}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length)}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length)}function latin1Write(buf,string,offset,length){return asciiWrite(buf,string,offset,length)}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length)}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length)}Buffer.prototype.write=function write(string,offset,length,encoding){if(offset===undefined){encoding="utf8";length=this.length;offset=0}else if(length===undefined&&typeof offset==="string"){encoding=offset;length=this.length;offset=0}else if(isFinite(offset)){offset=offset|0;if(isFinite(length)){length=length|0;if(encoding===undefined)encoding="utf8"}else{encoding=length;length=undefined}}else{throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported")}var remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"latin1":case"binary":return latin1Write(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i<end){var firstByte=buf[i];var codePoint=null;var bytesPerSequence=firstByte>239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(i<len){res+=String.fromCharCode.apply(String,codePoints.slice(i,i+=MAX_ARGUMENTS_LENGTH))}return res}function asciiSlice(buf,start,end){var ret="";end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i]&127)}return ret}function latin1Slice(buf,start,end){var ret="";end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i])}return ret}function hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;var out="";for(var i=start;i<end;++i){out+=toHex(buf[i])}return out}function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var res="";for(var i=0;i<bytes.length;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}return res}Buffer.prototype.slice=function slice(start,end){var len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0}else if(start>len){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(end<start)end=start;var newBuf;if(Buffer.TYPED_ARRAY_SUPPORT){newBuf=this.subarray(start,end);newBuf.__proto__=Buffer.prototype}else{var sliceLen=end-start;newBuf=new Buffer(sliceLen,undefined);for(var i=0;i<sliceLen;++i){newBuf[i]=this[i+start]}}return newBuf};function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw new RangeError("offset is not uint");if(offset+ext>length)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}return val};Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert){checkOffset(offset,byteLength,this.length)}var val=this[offset+--byteLength];var mul=1;while(byteLength>0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||value<min)throw new RangeError('"value" argument is out of bounds');if(offset+ext>buf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var mul=1;var i=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var i=byteLength-1;var mul=1;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,255,0);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);this[offset]=value&255;return offset+1};function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=65535+value+1;for(var i=0,j=Math.min(buf.length-offset,2);i<j;++i){buf[offset+i]=(value&255<<8*(littleEndian?i:1-i))>>>(littleEndian?i:1-i)*8}}Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=4294967295+value+1;for(var i=0,j=Math.min(buf.length-offset,4);i<j;++i){buf[offset+i]=value>>>(littleEndian?i:3-i)*8&255}}Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){if(value<0&&sub===0&&this[offset+i-1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e38,-3.4028234663852886e38)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157e308,-1.7976931348623157e308)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;if(end===start)return 0;if(target.length===0||this.length===0)return 0;if(targetStart<0){throw new RangeError("targetStart out of bounds")}if(start<0||start>=this.length)throw new RangeError("sourceStart out of bounds");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart<end-start){end=target.length-targetStart+start}var len=end-start;var i;if(this===target&&start<targetStart&&targetStart<end){for(i=len-1;i>=0;--i){target[i+targetStart]=this[i+start]}}else if(len<1e3||!Buffer.TYPED_ARRAY_SUPPORT){for(i=0;i<len;++i){target[i+targetStart]=this[i+start]}}else{Uint8Array.prototype.set.call(target,this.subarray(start,start+len),targetStart);
}return len};Buffer.prototype.fill=function fill(val,start,end,encoding){if(typeof val==="string"){if(typeof start==="string"){encoding=start;start=0;end=this.length}else if(typeof end==="string"){encoding=end;end=this.length}if(val.length===1){var code=val.charCodeAt(0);if(code<256){val=code}}if(encoding!==undefined&&typeof encoding!=="string"){throw new TypeError("encoding must be a string")}if(typeof encoding==="string"&&!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}}else if(typeof val==="number"){val=val&255}if(start<0||this.length<start||this.length<end){throw new RangeError("Out of range index")}if(end<=start){return this}start=start>>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==="number"){for(i=start;i<end;++i){this[i]=val}}else{var bytes=Buffer.isBuffer(val)?val:utf8ToBytes(new Buffer(val,encoding).toString());var len=bytes.length;for(i=0;i<end-start;++i){this[i+start]=bytes[i%len]}}return this};var INVALID_BASE64_RE=/[^+\/0-9A-Za-z-_]/g;function base64clean(str){str=stringtrim(str).replace(INVALID_BASE64_RE,"");if(str.length<2)return"";while(str.length%4!==0){str=str+"="}return str}function stringtrim(str){if(str.trim)return str.trim();return str.replace(/^\s+|\s+$/g,"")}function toHex(n){if(n<16)return"0"+n.toString(16);return n.toString(16)}function utf8ToBytes(string,units){units=units||Infinity;var codePoint;var length=string.length;var leadSurrogate=null;var bytes=[];for(var i=0;i<length;++i){codePoint=string.charCodeAt(i);if(codePoint>55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;++i){byteArray.push(str.charCodeAt(i)&255)}return byteArray}function utf16leToBytes(str,units){var c,hi,lo;var byteArray=[];for(var i=0;i<str.length;++i){if((units-=2)<0)break;c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i<length;++i){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isnan(val){return val!==val}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"base64-js":522,ieee754:524,isarray:526}],524:[function(require,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],525:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],526:[function(require,module,exports){var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)=="[object Array]"}},{}],527:[function(require,module,exports){var process=module.exports={};var cachedSetTimeout;var cachedClearTimeout;(function(){try{cachedSetTimeout=setTimeout}catch(e){cachedSetTimeout=function(){throw new Error("setTimeout is not defined")}}try{cachedClearTimeout=clearTimeout}catch(e){cachedClearTimeout=function(){throw new Error("clearTimeout is not defined")}}})();function runTimeout(fun){if(cachedSetTimeout===setTimeout){return setTimeout(fun,0)}try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){return clearTimeout(marker)}try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run()}}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;runClearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],528:[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],529:[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i<arguments.length;i++){objects.push(inspect(arguments[i]))}return objects.join(" ")}var i=1;var args=arguments;var len=args.length;var str=String(f).replace(formatRegExp,function(x){if(x==="%%")return"%";if(i>=len)return x;switch(x){case"%s":return String(args[i++]);case"%d":return Number(args[i++]);case"%j":try{return JSON.stringify(args[i++])}catch(_){return"[Circular]"}default:return x}});for(var x=args[i];i<len;x=args[++i]){if(isNull(x)||!isObject(x)){str+=" "+x}else{str+=" "+inspect(x)}}return str};exports.deprecate=function(fn,msg){if(isUndefined(global.process)){return function(){return exports.deprecate(fn,msg).apply(this,arguments)}}if(process.noDeprecation===true){return fn}var warned=false;function deprecated(){if(!warned){if(process.throwDeprecation){throw new Error(msg)}else if(process.traceDeprecation){console.trace(msg)}else{console.error(msg)}warned=true}return fn.apply(this,arguments)}return deprecated};var debugs={};var debugEnviron;exports.debuglog=function(set){if(isUndefined(debugEnviron))debugEnviron=process.env.NODE_DEBUG||"";set=set.toUpperCase();if(!debugs[set]){if(new RegExp("\\b"+set+"\\b","i").test(debugEnviron)){var pid=process.pid;debugs[set]=function(){var msg=exports.format.apply(exports,arguments);console.error("%s %d: %s",set,pid,msg)}}else{debugs[set]=function(){}}}return debugs[set]};function inspect(obj,opts){var ctx={seen:[],stylize:stylizeNoColor};if(arguments.length>=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i<l;++i){if(hasOwnProperty(value,String(i))){output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,String(i),true))}else{output.push("")}}keys.forEach(function(key){if(!key.match(/^\d+$/)){output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,key,true))}});return output}function formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){var name,str,desc;desc=Object.getOwnPropertyDescriptor(value,key)||{value:value[key]};if(desc.get){if(desc.set){str=ctx.stylize("[Getter/Setter]","special")}else{str=ctx.stylize("[Getter]","special")}}else{if(desc.set){str=ctx.stylize("[Setter]","special")}}if(!hasOwnProperty(visibleKeys,key)){name="["+key+"]"}if(!str){if(ctx.seen.indexOf(desc.value)<0){if(isNull(recurseTimes)){str=formatValue(ctx,desc.value,null)}else{str=formatValue(ctx,desc.value,recurseTimes-1)}if(str.indexOf("\n")>-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":528,_process:527,inherits:525}]},{},[1])(1)});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment