herta
Version:
Advanced mathematics framework for scientific, engineering, and financial applications
1 lines • 468 kB
JavaScript
!function(r,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.herta=t():r.herta=t()}(this,(()=>{return r={268:r=>{function t(r,t){if(t<0||t>r)return 0;if(0===t||t===r)return 1;for(var n=1,e=1;e<=t;e++)n*=r-(t-e),n/=e;return n}r.exports={fibonacci:function(r){var t=[0,1];if(r<=0)return[];if(1===r)return[0];for(var n=2;n<r;n++)t.push(t[n-1]+t[n-2]);return t},primes:function(r){var t=Array(r+1).fill(!0);t[0]=t[1]=!1;for(var n=2;n*n<=r;n++)if(t[n])for(var e=n*n;e<=r;e+=n)t[e]=!1;for(var o=[],i=2;i<=r;i++)t[i]&&o.push(i);return o},arithmeticSequence:function(r,t,n){for(var e=[],o=0;o<n;o++)e.push(r+o*t);return e},geometricSequence:function(r,t,n){for(var e=[],o=0;o<n;o++)e.push(r*Math.pow(t,o));return e},triangularNumbers:function(r){for(var t=[],n=1;n<=r;n++)t.push(n*(n+1)/2);return t},squareNumbers:function(r){for(var t=[],n=1;n<=r;n++)t.push(n*n);return t},cubicNumbers:function(r){for(var t=[],n=1;n<=r;n++)t.push(n*n*n);return t},tetrahedralNumbers:function(r){for(var t=[],n=1;n<=r;n++)t.push(n*(n+1)*(n+2)/6);return t},pascalsTriangle:function(r){for(var t=[],n=0;n<r;n++){for(var e=[],o=0;o<=n;o++)0===o||o===n?e.push(1):e.push(t[n-1][o-1]+t[n-1][o]);t.push(e)}return t},catalanNumbers:function(r){for(var t=[1],n=1;n<r;n++)t.push(t[n-1]*(4*n-2)/(n+1));return t},bellNumbers:function(r){if(r<=0)return[];if(1===r)return[1];for(var n=[1],e=1;e<r;e++){for(var o=0,i=0;i<e;i++)o+=t(e-1,i)*n[i];n.push(o)}return n},bernoulliNumbers:function(r){if(r<=0)return[];for(var n=[1],e=1;e<r;e++){for(var o=0,i=0;i<e;i++)o+=t(e,i)*n[i]/(e-i+1);n.push(-o)}return r>1&&(n[1]=-.5),n},collatzSequence:function(r){if(r<=0||!Number.isInteger(r))throw new Error("Starting number must be a positive integer");for(var t=[r],n=r;1!==n;)n%2==0?n/=2:n=3*n+1,t.push(n);return t},lookAndSaySequence:function(r){for(var t=[(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1).toString()],n=1;n<r;n++){for(var e=t[n-1],o="",i=1,a=0;a<e.length;a++)a+1<e.length&&e[a]===e[a+1]?i++:(o+=i+e[a],i=1);t.push(o)}return t},binomialCoefficient:t}},300:(r,t,n)=>{function e(r,t){var n="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!n){if(Array.isArray(r)||(n=function(r,t){if(r){if("string"==typeof r)return o(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(r,t):void 0}}(r))||t&&r&&"number"==typeof r.length){n&&(r=n);var e=0,i=function(){};return{s:i,n:function(){return e>=r.length?{done:!0}:{done:!1,value:r[e++]}},e:function(r){throw r},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){n=n.call(r)},n:function(){var r=n.next();return u=r.done,r},e:function(r){c=!0,a=r},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw a}}}}function o(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}n(3110),n(5389);var i={solve:function(r,t){if("string"==typeof r&&(r=[r]),"string"==typeof t&&(t=[t]),1===r.length&&1===t.length)return function(r,t){var n=r.split("=");if(2!==n.length)throw new Error("Invalid equation format. Must contain exactly one equals sign.");var o,i=n[0].trim(),a=n[1].trim(),u=new RegExp("([+-]?\\s*\\d*\\.?\\d*)\\s*\\*?\\s*".concat(t),"g"),c=i.match(u)||[],s=0,f=e(c);try{for(f.s();!(o=f.n()).done;){var l=o.value.replace(t,"").replace("*","").trim();s+=""===l?1:"-"===l?-1:parseFloat(l)}}catch(r){f.e(r)}finally{f.f()}var h,v=0,m=e(i.replace(u,"").match(/[+-]?\s*\d+\.?\d*/g)||[]);try{for(m.s();!(h=m.n()).done;){var p=h.value;v+=parseFloat(p)}}catch(r){m.e(r)}finally{m.f()}var d,y=0,g=e(a.match(/[+-]?\s*\d+\.?\d*/g)||[]);try{for(g.s();!(d=g.n()).done;){var w=d.value;y+=parseFloat(w)}}catch(r){g.e(r)}finally{g.f()}var b=(y-v)/s,M={};return M[t]=b,M}(r[0],t[0]);if(r.length===t.length)return function(r,t){var n={};return t.forEach((function(r){n[r]=0})),n}(0,t);throw new Error("Unsupported equation type or mismatch between equations and variables")},simplify:function(r){return r.replace(/\s+/g,"").replace(/\+\-/g,"-").replace(/\-\+/g,"-").replace(/\-\-/g,"+").replace(/\+\+/g,"+").replace(/\+0/g,"").replace(/\-0/g,"").replace(/\*1/g,"").replace(/\/1/g,"")},expand:function(r){return r},factor:function(r){return r},gcd:function(r,t){for(r=Math.abs(r),t=Math.abs(t);0!==t;){var n=t;t=r%t,r=n}return r},lcm:function(r,t){return Math.abs(r*t)/i.gcd(r,t)},polynomial:function(r){return{coefficients:r,evaluate:function(r){for(var t=0,n=0;n<this.coefficients.length;n++)t+=this.coefficients[n]*Math.pow(r,this.coefficients.length-n-1);return t},derivative:function(){for(var r=[],t=0;t<this.coefficients.length-1;t++)r.push(this.coefficients[t]*(this.coefficients.length-t-1));return i.polynomial(r)},roots:function(){return[]},toString:function(){for(var r="",t=0;t<this.coefficients.length;t++){var n=this.coefficients[t],e=this.coefficients.length-t-1;0!==n&&(""!==r&&n>0&&(r+="+"),1===n&&0!==e||(r+=n),e>0&&(r+="x",e>1&&(r+="^".concat(e))))}return r||"0"}}}};r.exports=i},326:(r,t,n)=>{function e(r){return function(r){if(Array.isArray(r))return o(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(r){if("string"==typeof r)return o(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(r,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}n(1499),n(1426),n(2758);var i={epsilonGreedyBandit:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.epsilon||.1,i=n.initialValue||0,a=Array(t).fill(i),u=Array(t).fill(0);return{actionValues:a,actionCounts:u,totalReward:0,selectAction:function(){if(Math.random()<o)return Math.floor(Math.random()*t);for(var r=0,n=a[0],e=1;e<t;e++)a[e]>n&&(n=a[e],r=e);return r},step:function(){var t=this.selectAction(),n=r(t);u[t]++;var o=1/u[t];return a[t]+=o*(n-a[t]),this.totalReward+=n,{action:t,reward:n,actionValues:e(a),totalReward:this.totalReward}},run:function(r){for(var t=[],n=0;n<r;n++)t.push(this.step());return t}}},ucbBandit:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.confidenceLevel||2,i=n.initialValue||0,a=Array(t).fill(i),u=Array(t).fill(0),c=0;return{actionValues:a,actionCounts:u,totalReward:0,selectAction:function(){for(var r=0;r<t;r++)if(0===u[r])return r;for(var n=a.map((function(r,t){return r+o*Math.sqrt(Math.log(c)/u[t])})),e=0,i=n[0],s=1;s<t;s++)n[s]>i&&(i=n[s],e=s);return e},step:function(){c++;var t=this.selectAction(),n=r(t);u[t]++;var o=1/u[t];return a[t]+=o*(n-a[t]),this.totalReward+=n,{action:t,reward:n,actionValues:e(a),totalReward:this.totalReward}},run:function(r){for(var t=[],n=0;n<r;n++)t.push(this.step());return t}}},GridWorld:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},e=n.defaultReward||-.1,o=n.terminals||[],i=n.obstacles||[];return{width:r,height:t,terminals:o,obstacles:i,agentPosition:n.start||{x:0,y:0},getValidActions:function(){var n=this.agentPosition,e=n.x,o=n.y,i=[];return o>0&&!this.isObstacle(e,o-1)&&i.push("up"),o<t-1&&!this.isObstacle(e,o+1)&&i.push("down"),e>0&&!this.isObstacle(e-1,o)&&i.push("left"),e<r-1&&!this.isObstacle(e+1,o)&&i.push("right"),i},isObstacle:function(r,t){return i.some((function(n){return n.x===r&&n.y===t}))},isTerminal:function(r,t){return o.some((function(n){return n.x===r&&n.y===t}))},getReward:function(r,t){var n=o.find((function(n){return n.x===r&&n.y===t}));return n?n.reward:e},step:function(n){var e=this.agentPosition,o=e.x,i=e.y,a=o,u=i;switch(n){case"up":u=Math.max(0,i-1);break;case"down":u=Math.min(t-1,i+1);break;case"left":a=Math.max(0,o-1);break;case"right":a=Math.min(r-1,o+1);break;default:throw new Error("Invalid action: ".concat(n))}this.isObstacle(a,u)&&(a=o,u=i);var c=this.getReward(a,u),s=this.isTerminal(a,u);return this.agentPosition={x:a,y:u},{state:{x:a,y:u},reward:c,done:s}},reset:function(){return this.agentPosition=n.start||{x:0,y:0},this.agentPosition}}},QLearning:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.learningRate||.1,e=t.discountFactor||.99,o=t.epsilon||.1,i=t.epsilonDecay||1,a=t.minEpsilon||.01,u={},c=function(r){return"".concat(r.x,",").concat(r.y)},s=["up","down","left","right"],f=function(r){var t=c(r);u[t]||(u[t]={},s.forEach((function(r){u[t][r]=0})))};return{qTable:u,currentEpsilon:o,chooseAction:function(t){var n=c(t);f(t);var e=r.getValidActions();if(Math.random()<this.currentEpsilon)return e[Math.floor(Math.random()*e.length)];for(var o=e[0],i=u[n][o]||0,a=1;a<e.length;a++){var s=e[a],l=u[n][s]||0;l>i&&(i=l,o=s)}return o},update:function(r,t,o,i){var a=c(r),l=c(i);f(r),f(i);var h=-1/0;s.forEach((function(r){u[l][r]>h&&(h=u[l][r])}));var v=u[a][t],m=o+e*h;u[a][t]=v+n*(m-v)},decayEpsilon:function(){this.currentEpsilon=Math.max(a,this.currentEpsilon*i)},trainEpisode:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3,n=r.reset(),e=0,o=0;o<t;){var i=this.chooseAction(n),a=r.step(i),u=a.state,c=a.reward,s=a.done;if(this.update(n,i,c,u),e+=c,n=u,o++,s)break}return this.decayEpsilon(),{steps:o,totalReward:e}},train:function(r){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,n=[],e=0;e<r;e++){var o=this.trainEpisode(t);n.push({episode:e+1,steps:o.steps,totalReward:o.totalReward,epsilon:this.currentEpsilon})}return n},getPolicy:function(){var r={};for(var t in u){var n=null,e=-1/0;for(var o in u[t]){var i=u[t][o];i>e&&(e=i,n=o)}r[t]=n}return r},getValueFunction:function(){var r={};for(var t in u){var n=-1/0;for(var e in u[t]){var o=u[t][e];o>n&&(n=o)}r[t]=n}return r}}},SARSA:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.learningRate||.1,e=t.discountFactor||.99,o=t.epsilon||.1,i=t.epsilonDecay||1,a=t.minEpsilon||.01,u={},c=function(r){return"".concat(r.x,",").concat(r.y)},s=["up","down","left","right"],f=function(r){var t=c(r);u[t]||(u[t]={},s.forEach((function(r){u[t][r]=0})))};return{qTable:u,currentEpsilon:o,chooseAction:function(t){var n=c(t);f(t);var e=r.getValidActions();if(Math.random()<this.currentEpsilon)return e[Math.floor(Math.random()*e.length)];for(var o=e[0],i=u[n][o]||0,a=1;a<e.length;a++){var s=e[a],l=u[n][s]||0;l>i&&(i=l,o=s)}return o},update:function(r,t,o,i,a){var s=c(r),l=c(i);f(r),f(i);var h=u[s][t],v=u[l][a];u[s][t]=h+n*(o+e*v-h)},decayEpsilon:function(){this.currentEpsilon=Math.max(a,this.currentEpsilon*i)},trainEpisode:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3,n=r.reset(),e=this.chooseAction(n),o=0,i=0;i<t;){var a=r.step(e),u=a.state,c=a.reward,s=a.done,f=this.chooseAction(u);if(this.update(n,e,c,u,f),o+=c,n=u,e=f,i++,s)break}return this.decayEpsilon(),{steps:i,totalReward:o}},train:function(r){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,n=[],e=0;e<r;e++){var o=this.trainEpisode(t);n.push({episode:e+1,steps:o.steps,totalReward:o.totalReward,epsilon:this.currentEpsilon})}return n},getPolicy:function(){var r={};for(var t in u){var n=null,e=-1/0;for(var o in u[t]){var i=u[t][o];i>e&&(e=i,n=o)}r[t]=n}return r},getValueFunction:function(){var r={};for(var t in u){var n=-1/0;for(var e in u[t]){var o=u[t][e];o>n&&(n=o)}r[t]=n}return r}}},monteCarloEvaluation:function(r,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).discountFactor||.99,e={},o={},i=function(r){return"".concat(r.x,",").concat(r.y)};return{valueFunction:e,stateVisits:o,runEpisode:function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3,e=[],o=r.reset(),a=0;a<n;){var u=i(o),c=t(o),s=r.step(c),f=s.state,l=s.reward,h=s.done;if(e.push({state:u,action:c,reward:l}),o=f,a++,h)break}return e},updateValueFunction:function(r){for(var t=new Set,i=0,a=r.length-1;a>=0;a--){var u=r[a],c=u.state,s=u.reward;i=n*i+s,t.has(c)||(t.add(c),o[c]=(o[c]||0)+1,e[c]=(e[c]||0)+1/o[c]*(i-(e[c]||0)))}},evaluate:function(r){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,n=0;n<r;n++){var e=this.runEpisode(t);this.updateValueFunction(e)}return this.valueFunction}}},DQN:function(r){throw new Error("DQN implementation requires a neural network library and is not available in the current version")}};r.exports=i},386:(r,t,n)=>{function e(r){return function(r){if(Array.isArray(r))return o(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(r){if("string"==typeof r)return o(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(r,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}n(1426),n(5782);var i={futureValue:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return r*Math.pow(1+t/e,e*n)},presentValue:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return r/Math.pow(1+t/e,e*n)},continuousCompounding:function(r,t,n){return r*Math.exp(t*n)},annuityPresentValue:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return Math.abs(t)<1e-10?r*n:r*((1-1/Math.pow(1+t,n))/t)*(e?1+t:1)},annuityFutureValue:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return Math.abs(t)<1e-10?r*n:r*((Math.pow(1+t,n)-1)/t)*(e?1+t:1)},annuityPayment:function(r,t,n,e){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(Math.abs(n)<1e-10)return(r+t)/e;var i=(1-1/Math.pow(1+n,e))/n;return Math.pow(1+n,e),(r+t/Math.pow(1+n,e))/(i*(o?1+n:1))},npv:function(r,t){for(var n=0,e=0;e<t.length;e++)n+=t[e]/Math.pow(1+r,e);return n},irr:function(r){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.maxIterations||100,e=t.tolerance||1e-10,o=t.guess||.1,i=function(t){for(var n=0,e=0;e<r.length;e++)n+=r[e]/Math.pow(1+t,e);return n},a=function(t){for(var n=0,e=1;e<r.length;e++)n-=e*r[e]/Math.pow(1+t,e+1);return n},u=0;u<n;u++){var c=i(o);if(Math.abs(c)<e)return o;var s=a(o);if(Math.abs(s)<1e-10)break;(o-=c/s)<=-1&&(o=-.9999)}var f=-.999,l=1,h=i(f);if(h*i(l)>0)return NaN;for(var v=0;v<n;v++){var m=(f+l)/2,p=i(m);if(Math.abs(p)<e)return m;p*h<0?l=m:f=m}return(f+l)/2},mirr:function(r,t,n){for(var e=0,o=0,i=r.length-1,a=0;a<=i;a++)r[a]<0?e+=r[a]*Math.pow(1+t,-a):o+=r[a]*Math.pow(1+n,i-a);return(e=-e)<=0||o<=0?NaN:Math.pow(o/e,1/i)-1},amortizationSchedule:function(r,t,n){for(var e=t/(arguments.length>3&&void 0!==arguments[3]?arguments[3]:12),o=r*e/(1-Math.pow(1+e,-n)),i=[],a=r,u=0,c=1;c<=n;c++){var s=a*e,f=o-s;a-=f,u+=s,i.push({period:c,payment:o,principal:f,interest:s,totalInterest:u,balance:Math.max(0,a)})}return{schedule:i,summary:{loanAmount:r,payment:o,totalPayments:o*n,totalInterest:u}}},blackScholes:function(r,t,n,e,o,i){function a(r){var t=r<0?-1:1,n=1/(1+.3275911*(r=Math.abs(r)/Math.sqrt(2)));return.5*(1+t*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-r*r)))}function u(r){return Math.exp(-.5*r*r)/Math.sqrt(2*Math.PI)}var c,s,f,l,h=(Math.log(t/n)+(e+o*o/2)*i)/(o*Math.sqrt(i)),v=h-o*Math.sqrt(i);if("call"===r.toLowerCase())c=t*a(h)-n*Math.exp(-e*i)*a(v),s=a(h),l=n*i*Math.exp(-e*i)*a(v)/100,f=(-t*o*u(h)/(2*Math.sqrt(i))-e*n*Math.exp(-e*i)*a(v))/365;else{if("put"!==r.toLowerCase())throw new Error('Option type must be "call" or "put"');c=n*Math.exp(-e*i)*a(-v)-t*a(-h),s=a(h)-1,l=-n*i*Math.exp(-e*i)*a(-v)/100,f=(-t*o*u(h)/(2*Math.sqrt(i))+e*n*Math.exp(-e*i)*a(-v))/365}return{price:c,delta:s,gamma:u(h)/(t*o*Math.sqrt(i)),theta:f,vega:t*Math.sqrt(i)*u(h)/100,rho:l}},binomialOptionPricing:function(r,t,n,e,o,i){for(var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:50,u=i/a,c=Math.exp(o*Math.sqrt(u)),s=1/c,f=(Math.exp(e*u)-s)/(c-s),l=new Array(a+1),h=0;h<=a;h++)l[h]=t*Math.pow(c,h)*Math.pow(s,a-h);var v=new Array(a+1);if("call"===r.toLowerCase())for(var m=0;m<=a;m++)v[m]=Math.max(0,l[m]-n);else{if("put"!==r.toLowerCase())throw new Error('Option type must be "call" or "put"');for(var p=0;p<=a;p++)v[p]=Math.max(0,n-l[p])}for(var d=a-1;d>=0;d--)for(var y=0;y<=d;y++)v[y]=Math.exp(-e*u)*(f*v[y+1]+(1-f)*v[y]);return v[0]},sharpeRatio:function(r,t,n){return(r-t)/n},beta:function(r,t){if(r.length!==t.length)throw new Error("Asset and benchmark return series must have the same length");for(var n=r.length,e=0,o=0,i=0;i<n;i++)e+=r[i]/n,o+=t[i]/n;for(var a=0,u=0,c=0;c<n;c++)a+=(r[c]-e)*(t[c]-o)/n,u+=Math.pow(t[c]-o,2)/n;return a/u},valueAtRisk:function(r,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,i=e(r).sort((function(r,t){return r-t}));return n*(-i[Math.floor((1-t)*i.length)]*Math.sqrt(o))},bondDuration:function(r,t,n,e){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,i=t/o,a=r*n/o,u=e*o,c=0,s=0,f=1;f<=u;f++){var l=f/o,h=Math.pow(1+i,-f);c+=a*h,s+=l*a*h}c+=n*Math.pow(1+i,-u);var v=(s+=e*n*Math.pow(1+i,-u))/c;return{macaulayDuration:v,modifiedDuration:v/(1+i),presentValue:c}},bondConvexity:function(r,t,n,e){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,i=t/o,a=r*n/o,u=e*o,c=0,s=0,f=1;f<=u;f++){var l=f/o,h=Math.pow(1+i,-f);c+=a*h,s+=l*(l+1)*a*h}return c+=n*Math.pow(1+i,-u),(s+=e*(e+1)*n*Math.pow(1+i,-u))/(c*Math.pow(1+i,2))}};r.exports=i},501:(r,t,n)=>{n(1499),n(2692);var e={constants:{G:66743e-15,c:299792458,solarMass:1.989e30,schwarzschildRadius:function(r){return 2*this.G*r/(this.c*this.c)}},schwarzschildRadius:function(r){return 2*this.constants.G*r/(this.constants.c*this.constants.c)},gravitationalTimeDilation:function(r,t){var n=this.schwarzschildRadius(r);if(t<=n)throw new Error("Distance must be greater than the Schwarzschild radius");return Math.sqrt(1-n/t)},gravitationalRedshift:function(r,t,n){var e=this.schwarzschildRadius(r);if(t<=e)throw new Error("Emission point must be outside the Schwarzschild radius");var o=Math.sqrt(1-e/t);return Math.sqrt(1-e/n)/o-1},orbitalVelocity:function(r,t){return Math.sqrt(this.constants.G*r/t)},orbitalPrecession:function(r,t,n){var e=this.schwarzschildRadius(r);return 6*Math.PI*e/(t*(1-n*n))},innermost_stable_circular_orbit:function(r,t){if(t<0||t>1)throw new Error("Spin parameter must be between 0 and 1");var n=1+Math.pow(1-t*t,1/3)*(Math.pow(1+t,1/3)+Math.pow(1-t,1/3)),e=Math.sqrt(3*t*t+n*n),o=3+e-Math.sqrt((3-n)*(3+n+2*e)),i=3+e+Math.sqrt((3-n)*(3+n+2*e)),a=this.schwarzschildRadius(r),u=o*a/2,c=i*a/2,s=this.constants.c*Math.sqrt(1/o),f=this.constants.c*Math.sqrt(1/i);return{prograde:{radius:u,velocity:s,angularMomentum:s*u},retrograde:{radius:c,velocity:f,angularMomentum:f*c}}},gravitationalWaveFrequency:function(r,t,n){var e=r+t;return 1/(2*Math.PI)*Math.sqrt(this.constants.G*e/Math.pow(n,3))*2},gravitationalWaveStrain:function(r,t,n,e){var o=Math.pow(r*t,.6)/Math.pow(r+t,.2);return 4/n*Math.pow(this.constants.G*o/Math.pow(this.constants.c,2),5/3)*Math.pow(Math.PI*e,2/3)},timeToMerger:function(r,t,n){var e=Math.pow(r*t,.6)/Math.pow(r+t,.2);return 5/256*Math.pow(n,4)/Math.pow(this.constants.G*e/Math.pow(this.constants.c,2),5/3)},kerrMetric:function(r,t,n,e){var o=this.schwarzschildRadius(r),i=t*o/2,a=n*n-o*n+i*i,u=n*n+i*i*Math.pow(Math.cos(e),2);return Math.pow(n*n+i*i,2),Math.pow(Math.sin(e),2),{gtt:-(1-o*n/u),gtphi:-o*n*i*Math.pow(Math.sin(e),2)/u,grr:u/a,gthth:u,gphiphi:(n*n+i*i+o*n*i*i*Math.pow(Math.sin(e),2)/u)*Math.pow(Math.sin(e),2)}},effectivePotential:function(r,t,n,e,o){var i=this.schwarzschildRadius(r),a=t*i/2,u=o*o-i*o+a*a;return Math.pow(n*(o*o+a*a)-e*a,2)/(o*o*u)-1-u*(1+Math.pow(e-n*a,2)/o/o)/o/o},photonRing:function(r,t){var n=this.schwarzschildRadius(r);return Math.abs(t)<1e-10?{prograde:1.5*n,retrograde:1.5*n}:{prograde:2*r*(1+Math.cos(2/3*Math.acos(-t))),retrograde:2*r*(1+Math.cos(2/3*Math.acos(t)))}},gravitationalLensing:function(r,t){return this.schwarzschildRadius(r),4*this.constants.G*r/(this.constants.c*this.constants.c*t)},einsteinRingRadius:function(r,t,n){var e=n+t;return Math.sqrt(4*this.constants.G*r*t/(this.constants.c*this.constants.c*e)*n)},shapiroDelay:function(r,t){var n=this.schwarzschildRadius(r);return 2*this.constants.G*r/(this.constants.c*this.constants.c*this.constants.c)*Math.log(4*t*t/n/t)},relativisticDoppler:function(r,t){var n=r/this.constants.c;return t*(1/Math.sqrt(1-n*n))*(1-n)},blackHoleShadowSize:function(r,t){return 2.6*this.schwarzschildRadius(r)/2*2/t},accretionDiskEmission:function(r,t,n){var e=this.schwarzschildRadius(r);if(n<3*e)throw new Error("Radius must be outside the innermost stable circular orbit");return.1*t*this.constants.c*this.constants.c*3/(8*Math.PI*n*n)*(1-Math.sqrt(3*e/n))},hawkingTemperature:function(r){return 10545718e-41*this.constants.c*this.constants.c*this.constants.c/(8*Math.PI*this.constants.G*r*1380649e-29)},blackHoleEntropy:function(r){return 4*Math.PI*Math.pow(this.schwarzschildRadius(r),2)*1380649e-29*this.constants.c*this.constants.c*this.constants.c/(4*this.constants.G*10545718e-41)},frameDraggingPrecession:function(r,t,n,e){var o=this.schwarzschildRadius(r),i=t*r*this.constants.c*o/2;return 2*this.constants.G*i/(this.constants.c*this.constants.c*Math.pow(n,3))*Math.cos(e)},gravitationalWaveLuminosity:function(r,t,n){var e=r*t/(r+t),o=r+t,i=Math.sqrt(this.constants.G*o/Math.pow(n,3));return 6.4*Math.pow(this.constants.G,4/3)*Math.pow(e,2)*Math.pow(o,2/3)*Math.pow(i,10/3)/Math.pow(this.constants.c,5)},geodeticPrecession:function(r,t,n){var e=Math.sqrt(this.constants.G*r/Math.pow(t,3));return 3*this.constants.G*r*e/(2*this.constants.c*this.constants.c*t)*(1/Math.sqrt(1-n*n))}};r.exports=e},573:(r,t,n)=>{function e(r){return function(r){if(Array.isArray(r))return o(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(r){if("string"==typeof r)return o(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(r,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}function i(r){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},i(r)}var a=n(3110),u=n(5389),c={isNumber:function(r){return"number"==typeof r||"string"==typeof r&&!isNaN(r)&&!isNaN(parseFloat(r))},isComplex:function(r){return r instanceof u},isMatrix:function(r){return Array.isArray(r)&&r.length>0&&Array.isArray(r[0])},isTensor:function(r){return!(!Array.isArray(r)||0===r.length)&&!!Array.isArray(r[0])&&r[0].some((function(r){return Array.isArray(r)}))},format:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:14;return"number"==typeof r?new a(r).toPrecision(t):String(r)},clone:function(r){if(null===r||"object"!==i(r))return r;if(r instanceof Date)return new Date(r);if(r instanceof u)return new u(r);if(Array.isArray(r))return r.map((function(r){return c.clone(r)}));var t={};for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=c.clone(r[n]));return t},approxEqual:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-12;if(c.isComplex(r)||c.isComplex(t)){var e=c.isComplex(r)?r:new u(r),o=c.isComplex(t)?t:new u(t);return Math.abs(e.re-o.re)<n&&Math.abs(e.im-o.im)<n}return Math.abs(r-t)<n},range:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,e=[];if(0===n)throw new Error("Step cannot be zero");if(n>0&&r>t||n<0&&r<t)return e;for(var o=r;n>0?o<=t:o>=t;o+=n)e.push(o);return e},toRadians:function(r){return r*(Math.PI/180)},toDegrees:function(r){return r*(180/Math.PI)},parseExpression:function(r){return{type:"expression",value:r}},isPrime:function(r){if(r<=1)return!1;if(r<=3)return!0;if(r%2==0||r%3==0)return!1;for(var t=Math.sqrt(r),n=5;n<=t;n+=6)if(r%n===0||r%(n+2)===0)return!1;return!0},factorial:function(r){if(r<0)throw new Error("Factorial is not defined for negative numbers");if(0===r||1===r)return 1;for(var t=1,n=2;n<=r;n++)t*=n;return t},binomial:function(r,t){if(t<0||t>r)return 0;if(0===t||t===r)return 1;t=Math.min(t,r-t);for(var n=1,e=1;e<=t;e++)n*=r-(e-1),n/=e;return n},gcd:function(r,t){for(r=Math.abs(r),t=Math.abs(t);0!==t;){var n=t;t=r%t,r=n}return r},lcm:function(r,t){return Math.abs(r*t)/c.gcd(r,t)},mean:function(r){if(!Array.isArray(r)||0===r.length)throw new Error("Input must be a non-empty array");return r.reduce((function(r,t){return r+t}),0)/r.length},median:function(r){if(!Array.isArray(r)||0===r.length)throw new Error("Input must be a non-empty array");var t=e(r).sort((function(r,t){return r-t})),n=Math.floor(t.length/2);return t.length%2==0?(t[n-1]+t[n])/2:t[n]},variance:function(r){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!Array.isArray(r)||0===r.length)throw new Error("Input must be a non-empty array");var n=c.mean(r);return r.map((function(r){return Math.pow(r-n,2)})).reduce((function(r,t){return r+t}),0)/(r.length-(t?1:0))},standardDeviation:function(r){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Math.sqrt(c.variance(r,t))},covariance:function(r,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!Array.isArray(r)||!Array.isArray(t)||0===r.length||0===t.length)throw new Error("Inputs must be non-empty arrays");if(r.length!==t.length)throw new Error("Arrays must have the same length");for(var e=c.mean(r),o=c.mean(t),i=0,a=0;a<r.length;a++)i+=(r[a]-e)*(t[a]-o);return i/(r.length-(n?1:0))},correlation:function(r,t){var n=c.standardDeviation(r),e=c.standardDeviation(t);return 0===n||0===e?0:c.covariance(r,t)/(n*e)},integrate:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100;if("function"!=typeof r)throw new Error("First argument must be a function");if(t>=n)throw new Error("Upper bound must be greater than lower bound");for(var o=(n-t)/e,i=.5*(r(t)+r(n)),a=1;a<e;a++)i+=r(t+a*o);return o*i},findRoot:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1e-10,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:100;if("function"!=typeof r||"function"!=typeof t)throw new Error("First two arguments must be functions");for(var i=n,a=0;a<o;){var u=r(i);if(Math.abs(u)<e)return i;var c=t(i);if(0===c)throw new Error("Derivative is zero, cannot continue");var s=i-u/c;if(Math.abs(s-i)<e)return s;i=s,a++}throw new Error("Method did not converge after ".concat(o," iterations"))},normalPDF:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n<=0)throw new Error("Standard deviation must be positive");var e=1/(n*Math.sqrt(2*Math.PI)),o=-Math.pow(r-t,2)/(2*Math.pow(n,2));return e*Math.exp(o)},normalCDF:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n<=0)throw new Error("Standard deviation must be positive");var e=(r-t)/(n*Math.sqrt(2));return.5*(1+c.erf(e))},erf:function(r){var t=r<0?-1:1,n=1/(1+.3275911*(r=Math.abs(r)));return t*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-r*r))},interpolate:function(r,t){if(!Array.isArray(r)||!Array.isArray(t))throw new Error("Inputs must be arrays");if(r.length!==t.length)throw new Error("Arrays must have the same length");if(0===r.length)throw new Error("Arrays cannot be empty");return function(n){for(var e=0,o=0;o<r.length;o++){for(var i=t[o],a=0;a<r.length;a++)a!==o&&(i*=(n-r[a])/(r[o]-r[a]));e+=i}return e}}};r.exports=c},704:(r,t,n)=>{function e(r){return function(r){if(Array.isArray(r))return i(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||o(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(r,t){if(r){if("string"==typeof r)return i(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(r,t):void 0}}function i(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}n(1499),n(1426);var a={factorial:function(r){if(r<0||!Number.isInteger(r))throw new Error("Factorial requires a non-negative integer");if(0===r||1===r)return 1;for(var t=1,n=2;n<=r;n++)t*=n;return t},binomialCoefficient:function(r,t){if(t<0||r<t||!Number.isInteger(r)||!Number.isInteger(t))throw new Error("Binomial coefficient requires integers with 0 ≤ k ≤ n");t>r-t&&(t=r-t);for(var n=1,e=0;e<t;e++)n*=(r-e)/(e+1);return Math.round(n)},binomialPMF:function(r,t,n){if(r<0||r>t||!Number.isInteger(r)||!Number.isInteger(t))throw new Error("Binomial PMF requires integers with 0 ≤ k ≤ n");if(n<0||n>1)throw new Error("Probability p must be between 0 and 1");return this.binomialCoefficient(t,r)*Math.pow(n,r)*Math.pow(1-n,t-r)},binomialCDF:function(r,t,n){for(var e=0,o=0;o<=r;o++)e+=this.binomialPMF(o,t,n);return e},poissonPMF:function(r,t){if(r<0||!Number.isInteger(r))throw new Error("Poisson PMF requires non-negative integer k");if(t<=0)throw new Error("Lambda must be positive");return Math.exp(-t)*Math.pow(t,r)/this.factorial(r)},poissonCDF:function(r,t){for(var n=0,e=0;e<=r;e++)n+=this.poissonPMF(e,t);return n},normalPDF:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n<=0)throw new Error("Standard deviation must be positive");var e=(r-t)/n;return Math.exp(-.5*e*e)/(n*Math.sqrt(2*Math.PI))},normalCDF:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(n<=0)throw new Error("Standard deviation must be positive");var e=(r-t)/n;return.5*(1+this.erf(e/Math.sqrt(2)))},erf:function(r){var t=r>=0?1:-1,n=1/(1+.3275911*Math.abs(r));return t*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-r*r))},exponentialPDF:function(r,t){if(t<=0)throw new Error("Rate parameter must be positive");return r<0?0:t*Math.exp(-t*r)},exponentialCDF:function(r,t){if(t<=0)throw new Error("Rate parameter must be positive");return r<0?0:1-Math.exp(-t*r)},normalQuantile:function(r){var t,n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(r<0||r>1)throw new Error("Probability p must be between 0 and 1");if(o<=0)throw new Error("Standard deviation must be positive");if(0===r)return-1/0;if(1===r)return 1/0;r<.5?(t=r,n=-1):(t=1-r,n=1);var i=Math.sqrt(-2*Math.log(t));return e+o*n*(i-(2.515517+.802853*i+.010328*i*i)/(1+1.432788*i+.189269*i*i+.001308*i*i*i))},normalRandom:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(r<=0||!Number.isInteger(r))throw new Error("Number of samples must be a positive integer");if(n<=0)throw new Error("Standard deviation must be positive");for(var e=[],o=0;o<r;o+=2){var i=Math.random(),a=Math.random(),u=Math.sqrt(-2*Math.log(i))*Math.cos(2*Math.PI*a);if(e.push(t+n*u),o+1<r){var c=Math.sqrt(-2*Math.log(i))*Math.sin(2*Math.PI*a);e.push(t+n*c)}}return e},exponentialRandom:function(r,t){if(r<=0||!Number.isInteger(r))throw new Error("Number of samples must be a positive integer");if(t<=0)throw new Error("Rate parameter must be positive");for(var n=[],e=0;e<r;e++){var o=Math.random();n.push(-Math.log(1-o)/t)}return n},monteCarloIntegration:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1e4;if(t.length!==n.length)throw new Error("Lower and upper bounds must have the same dimension");if(e<=0||!Number.isInteger(e))throw new Error("Number of samples must be a positive integer");for(var o=t.length,i=0,a=0,u=1,c=0;c<o;c++)u*=n[c]-t[c];for(var s=0;s<e;s++){for(var f=[],l=0;l<o;l++)f.push(t[l]+Math.random()*(n[l]-t[l]));var h=r.apply(void 0,f);i+=h,a+=h*h}var v=i/e*u,m=(a/e-Math.pow(i/e,2))*u*u/e;return{estimate:v,error:Math.sqrt(m)}},sampleStatistics:function(r){if(!Array.isArray(r)||0===r.length)throw new Error("Data must be a non-empty array");var t,n=r.length,i=r.reduce((function(r,t){return r+t}),0)/n,a=0,u=0,c=0,s=function(r,t){var n="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!n){if(Array.isArray(r)||(n=o(r))||t&&r&&"number"==typeof r.length){n&&(r=n);var e=0,i=function(){};return{s:i,n:function(){return e>=r.length?{done:!0}:{done:!1,value:r[e++]}},e:function(r){throw r},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){n=n.call(r)},n:function(){var r=n.next();return u=r.done,r},e:function(r){c=!0,a=r},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw a}}}}(r);try{for(s.s();!(t=s.n()).done;){var f=t.value-i,l=f*f;a+=l,u+=l*f,c+=l*l}}catch(r){s.e(r)}finally{s.f()}a/=n-1;var h=Math.sqrt(a),v=u/n/Math.pow(h,3),m=c/n/Math.pow(a,2),p=e(r).sort((function(r,t){return r-t}));return{n,mean:i,variance:a,stdDev:h,skewness:v,kurtosis:m,median:n%2==0?(p[n/2-1]+p[n/2])/2:p[Math.floor(n/2)],q1:p[Math.floor(n/4)],q3:p[Math.floor(3*n/4)],min:p[0],max:p[n-1]}},correlation:function(r,t){if(!Array.isArray(r)||!Array.isArray(t)||r.length!==t.length||0===r.length)throw new Error("Inputs must be arrays of the same non-zero length");for(var n=r.length,e=r.reduce((function(r,t){return r+t}),0)/n,o=t.reduce((function(r,t){return r+t}),0)/n,i=0,a=0,u=0,c=0;c<n;c++){var s=r[c]-e,f=t[c]-o;i+=s*f,a+=s*s,u+=f*f}return i/Math.sqrt(a*u)},tTest:function(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},e=n.alternative,o=void 0===e?"two-sided":e,i=n.alpha,a=void 0===i?.05:i;if(!Array.isArray(r)||r.length<2)throw new Error("Data must be an array with at least two elements");if(!["two-sided","less","greater"].includes(o))throw new Error('Alternative must be "two-sided", "less", or "greater"');var u,c=this.sampleStatistics(r),s=c.n,f=c.stdDev/Math.sqrt(s),l=(c.mean-t)/f;u="two-sided"===o?2*(1-this.normalCDF(Math.abs(l))):"greater"===o?1-this.normalCDF(l):this.normalCDF(l);var h=this.normalQuantile(1-a/2)*f;return{statistic:l,pValue:u,rejectNull:u<a,confidenceInterval:[c.mean-h,c.mean+h],sampleMean:c.mean,sampleStdDev:c.stdDev,standardError:f}},linearRegression:function(r,t){if(!Array.isArray(r)||!Array.isArray(t)||r.length!==t.length||r.length<2)throw new Error("Inputs must be arrays of the same length (at least 2)");for(var n=r.length,e=r.reduce((function(r,t){return r+t}),0)/n,o=t.reduce((function(r,t){return r+t}),0)/n,i=0,a=0,u=0;u<n;u++){var c=r[u]-e;i+=c*(t[u]-o),a+=c*c}var s=i/a,f=o-s*e,l=r.map((function(r){return f+s*r})),h=t.map((function(r,t){return r-l[t]})),v=t.reduce((function(r,t){return r+Math.pow(t-o,2)}),0),m=h.reduce((function(r,t){return r+t*t}),0);return{slope:s,intercept:f,rSquared:1-m/v,predictions:l,residuals:h}}};r.exports=a},978:(r,t,n)=>{var e=n(573),o={};o.normal={pdf:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return e.normalPDF(r,t,n)},cdf:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return e.normalCDF(r,t,n)},sample:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=Math.random(),e=Math.random();return r+t*(Math.sqrt(-2*Math.log(n))*Math.cos(2*Math.PI*e))},inverse:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(r<=0||r>=1)throw new Error("Probability must be between 0 and 1 (exclusive)");return t+n*(Math.sqrt(2)*function(r){var t=Math.log(1-r*r),n=2/(.147*Math.PI)+t/2;return Math.sign(r)*Math.sqrt(Math.sqrt(n*n-t/.147)-n)}(2*r-1))}},o.binomial={pmf:function(r,t,n){if(r<0||r>t)return 0;if(n<0||n>1)throw new Error("Probability must be between 0 and 1");return e.binomial(t,r)*Math.pow(n,r)*Math.pow(1-n,t-r)},cdf:function(r,t,n){if(r<0)return 0;if(r>=t)return 1;if(n<0||n>1)throw new Error("Probability must be between 0 and 1");for(var e=0,o=0;o<=r;o++)e+=this.pmf(o,t,n);return e},mean:function(r,t){return r*t},variance:function(r,t){return r*t*(1-t)},sample:function(r,t){for(var n=0,e=0;e<r;e++)Math.random()<t&&n++;return n}},o.poisson={pmf:function(r,t){if(r<0||!Number.isInteger(r))return 0;if(t<=0)throw new Error("Lambda must be positive");return Math.pow(t,r)*Math.exp(-t)/e.factorial(r)},cdf:function(r,t){if(r<0)return 0;if(t<=0)throw new Error("Lambda must be positive");for(var n=0,e=Math.floor(r),o=0;o<=e;o++)n+=this.pmf(o,t);return n},mean:function(r){return r},variance:function(r){return r},sample:function(r){if(r<=0)throw new Error("Lambda must be positive");var t=Math.exp(-r),n=0,e=1;do{n++,e*=Math.random()}while(e>t);return n-1}},o.exponential={pdf:function(r,t){if(r<0)return 0;if(t<=0)throw new Error("Lambda must be positive");return t*Math.exp(-t*r)},cdf:function(r,t){if(r<0)return 0;if(t<=0)throw new Error("Lambda must be positive");return 1-Math.exp(-t*r)},mean:function(r){if(r<=0)throw new Error("Lambda must be positive");return 1/r},variance:function(r){if(r<=0)throw new Error("Lambda must be positive");return 1/(r*r)},sample:function(r){if(r<=0)throw new Error("Lambda must be positive");var t=Math.random();return-Math.log(1-t)/r},inverse:function(r,t){if(r<0||r>=1)throw new Error("Probability must be between 0 and 1");if(t<=0)throw new Error("Lambda must be positive");return-Math.log(1-r)/t}},o.uniform={pdf:function(r,t,n){if(t>=n)throw new Error("Upper bound must be greater than lower bound");return r<t||r>n?0:1/(n-t)},cdf:function(r,t,n){if(t>=n)throw new Error("Upper bound must be greater than lower bound");return r<t?0:r>n?1:(r-t)/(n-t)},mean:function(r,t){if(r>=t)throw new Error("Upper bound must be greater than lower bound");return(r+t)/2},variance:function(r,t){if(r>=t)throw new Error("Upper bound must be greater than lower bound");return Math.pow(t-r,2)/12},sample:function(r,t){if(r>=t)throw new Error("Upper bound must be greater than lower bound");return r+Math.random()*(t-r)},inverse:function(r,t,n){if(r<0||r>1)throw new Error("Probability must be between 0 and 1");if(t>=n)throw new Error("Upper bound must be greater than lower bound");return t+r*(n-t)}},r.exports=o},1023:(r,t)=>{r.exports=t.default=function r(t,n,e,o){const i=o.length,a=[];if(1===i)for(let r=0;r<n;r++)a.push([r]);else{const t=o.slice(0,i-1).reduce(r,[]);for(let r=0;r<t.length;r++)for(let e=0;e<n;e++)a.push(t[r].concat(e))}return a}},1163:(r,t,n)=>{function e(r,t){return function(r){if(Array.isArray(r))return r}(r)||function(r,t){var n=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=n){var e,o,i,a,u=[],c=!0,s=!1;try{if(i=(n=n.call(r)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(e=i.call(n)).done)&&(u.push(e.value),u.length!==t);c=!0);}catch(r){s=!0,o=r}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw o}}return u}}(r,t)||a(r,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(r){return function(r){if(Array.isArray(r))return u(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||a(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(r,t){var n="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!n){if(Array.isArray(r)||(n=a(r))||t&&r&&"number"==typeof r.length){n&&(r=n);var e=0,o=function(){};return{s:o,n:function(){return e>=r.length?{done:!0}:{done:!1,value:r[e++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,c=!1;return{s:function(){n=n.call(r)},n:function(){var r=n.next();return u=r.done,r},e:function(r){c=!0,i=r},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw i}}}}function a(r,t){if(r){if("string"==typeof r)return u(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(r,t):void 0}}function u(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n<t;n++)e[n]=r[n];return e}n(1499),n(1426),n(2692);var c={createGroup:function(r,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).identity||r[0];if(!this.isGroup(r,t,n))throw new Error("The specified set and operation do not form a group");return{elements:r,operation:t,identity:n,inverse:function(e){var o,a=i(r);try{for(a.s();!(o=a.n()).done;){var u=o.value;if(t(e,u)===n&&t(u,e)===n)return u}}catch(r){a.e(r)}finally{a.f()}throw new Error("Inverse not found")},apply:function(r,n){return t(r,n)},contains:function(t){return r.includes(t)},orderOf:function(e){if(!this.contains(e))throw new Error("Element not in group");for(var o=e,i=1;o!==n;)if(o=t(o,e),++i>r.length)throw new Error("Group operation is not associative");return i},power:function(r,e){if(!this.contains(r))throw new Error("Element not in group");if(0===e)return n;e<0&&(r=this.inverse(r),e=-e);for(var o=r,i=1;i<e;i++)o=t(o,r);return o}}},isGroup:function(r,t,n){var e,o=i(r);try{for(o.s();!(e=o.n()).done;){var a,u=e.value,c=i(r);try{for(c.s();!(a=c.n()).done;){var s=t(u,a.value);if(!r.includes(s))return!1}}catch(r){c.e(r)}finally{c.f()}}}catch(r){o.e(r)}finally{o.f()}var f,l=i(r);try{for(l.s();!(f=l.n()).done;){var h,v=f.value,m=i(r);try{for(m.s();!(h=m.n()).done;){var p,d=h.value,y=i(r);try{for(y.s();!(p=y.n()).done;){var g=p.value;if(t(t(v,d),g)!==t(v,t(d,g)))return!1}}catch(r){y.e(r)}finally{y.f()}}}catch(r){m.e(r)}finally{m.f()}}}catch(r){l.e(r)}finally{l.f()}if(!r.includes(n))return!1;var w,b=i(r);try{for(b.s();!(w=b.n()).done;){var M=w.value;if(t(M,n)!==M||t(n,M)!==M)return!1}}catch(r){b.e(r)}finally{b.f()}var A,S=i(r);try{for(S.s();!(A=S.n()).done;){var x,E=A.value,I=!1,P=i(r);try{for(P.s();!(x=P.n()).done;){var j=x.value;if(t(E,j)===n&&t(j,E)===n){I=!0;break}}}catch(r){P.e(r)}finally{P.f()}if(!I)return!1}}catch(r){S.e(r)}finally{S.f()}return!0},createRing:function(r,t,n){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.addIdentity||r[0],a=e.multIdentity;if(!this.isRing(r,t,n,o))throw new Error("The specified set and operations do not form a ring");var u={elements:r,addition:t,multiplication:n,addIdentity:o,additiveInverse:function(n){var e,a=i(r);try{for(a.s();!(e=a.n()).done;){var u=e.value;if(t(n,u)===o&&t(u,n)===o)return u}}catch(r){a.e(r)}finally{a.f()}throw new Error("Additive inverse not found")},add:function(r,n){return t(r,n)},multiply:function(r,t){return n(r,t)},contains:function(t){return r.includes(t)}};return a&&(u.multIdentity=a,this.isField(r,t,n,o,a)&&(u.isField=!0,u.multiplicativeInverse=function(t){if(t===o)throw new Error("Zero has no multiplicative inverse");var e,u=i(r);try{for(u.s();!(e=u.n()).done;){var c=e.value;if(n(t,c)===a&&n(c,t)===a)return c}}catch(r){u.e(r)}finally{u.f()}throw new Error("Multiplicative inverse not found")},u.divide=function(r,t){if(t===o)throw new Error("Division by zero");return n(r,this.multiplicativeInverse(t))})),u},isRing:function(r,t,n,e){if(!this.isGroup(r,t,e))return!1;var o,a=i(r);try{for(a.s();!(o=a.n()).done;){var u,c=o.value,s=i(r);try{for(s.s();!(u=s.n()).done;){var f=u.value;if(t(c,f)!==t(f,c))return!1}}catch(r){s.e(r)}finally{s.f()}}}catch(r){a.e(r)}finally{a.f()}var l,h=i(r);try{for(h.s();!(l=h.n()).done;){var v,m=l.value,p=i(r);try{for(p.s();!(v=p.n()).done;){var d,y=v.value,g=i(r);try{for(g.s();!(d=g.n()).done;){var w=d.value;if(n(n(m,y),w)!==n(m,n(y,w)))return!1}}catch(r){g.e(r)}finally{g.f()}}}catch(r){p.e(r)}finally{p.f()}}}catch(r){h.e(r)}finally{h.f()}var b,M=i(r);try{for(M.s();!(b=M.n()).done;){var A,S=b.value,x=i(r);try{for(x.s();!(A=x.n()).done;){var E=n(S,A.value);if(!r.includes(E))return!1}}catch(r){x.e(r)}finally{x.f()}}}catch(r){M.e(r)}finally{M.f()}var I,P=i(r);try{for(P.s();!(I=P.n()).done;){var j,O=I.value,k=i(r);try{for(k.s();!(j=k.n()).done;){var N,q=j.value,C=i(r);try{for(C.s();!(N=C.n()).done;){var T=N.value,D=n(O,t(q,T)),F=t(n(O,q),n(O,T)),R=n(t(O,q),T),z=t(n(O,T),n(q,T));if(D!==F||R!==z)return!1}}catch(r){C.e(r)}finally{C.f()}}}catch(r){k.e(r)}finally{k.f()}}}catch(r){P.e(r)}finally{P.f()}return!0},isField:function(r,t,n,e,o){if(!this.isRing(r,t,n,e))return!1;if(!r.includes(o)||o===e)return!1;var a,u=i(r);try{for(u.s();!(a=u.n()).done;){var c=a.value;if(n(c,o)!==c||n(o,c)!==c)return!1}}catch(r){u.e(r)}finally{u.f()}var s,f=i(r);try{for(f.s();!(s=f.n()).done;){var l,h=s.value,v=i(r);try{for(v.s();!(l=v.n()).done;){var m=l.value;if(n(h,m)!==n(m,h))return!1}}catch(r){v.e(r)}finally{v.f()}}}catch(r){f.e(r)}finally{f.f()}var p,d=i(r);try{for(d.s();!(p=d.n()).done;){var y=p.value;if(y!==e){var g,w=!1,b=i(r);try{for(b.s();!(g=b.n()).done;){var M=g.value;if(n(y,M)===o&&n(M,y)===o){w=!0;break}}}catch(r){b.e(r)}finally{b.f()}if(!w)return!1}}}catch(r){d.e(r)}finally{d.f()}return!0},createPolynomial:function(r,t){for(;r.length>1&&r[r.length-1]===t.addIdentity;)r.pop();return{coefficients:o(r),structure:t,degree:function(){return this.coefficients.length-1},evaluate:function(r){var n,e=t.addIdentity,o=t.multIdentity,a=i(this.coefficients);try{for(a.s();!(n=a.n()).done;){var u=n.value,c=t.multiply(u,o);e=t.add(e,c),o=t.multiply(o,r)}}catch(r){a.e(r)}finally{a.f()}return e},add:function(r){for(var n=Math.max(this.coefficients.length,r.coefficients.length),e=[],o=0;o<n;o++){var i=o<this.coefficients.length?this.coefficients[o]:t.addIdentity,a=o<r.coefficients.length?r.coefficients[o]:t.addIdentity;e.push(t.add(i,a))}return c.createPolynomial(e,t)},multiply:function(r){for(var n=Array(this.coefficients.length+r.coefficients.length-1).fill(t.addIdentity),e=0;e<this.coefficients.length;e++)for(var o=0;o<r.coefficients.length;o++){var i=t.multiply(this.coefficients[e],r.coefficients[o]);n[e+o]=t.add(n[e+o],i)}return c.createPolynomial(n,t)}}},polynomialDivision:function(r,t){if(!t.structure.isField)throw new Error("Polynomial division requires coefficients from a field");if(t.degree()<0)throw new Error("Cannot divide by zero polynomial");var n=r.structure,e=r.coefficients,i=t.coefficients,a=r.degree(),u=t.degree();if(a<u)return{quotient:c.createPolynomial([n.addIdentity],n),remainder:r};for(var s=Array(a-u+1).fill(n.addIdentity),f=o(e),l=a;l>=u;l--){var h=n.divide(f[l],i[u]);s[l-u]=h;for(var v=0;v<=u;v++)f[l-u+v]=n.add(f[l-u+v],n.additiveInverse(n.multiply(h,i[v])))}for(;f.length>1&&f[f.length-1]===n.addIdentity;)f.pop();return{quotient:c.createPolynomial(s,n),remainder:c.createPolynomial(f,n)}},polynomialGCD:function(r,t){if(!r.structure.isField)throw new Error("Polynomial GCD requires coefficients from a field");if(t.degree()>r.degree()){var n=[t,r];r=n[0],t=n[1]}if(t.degree()<0)return r;for(;t.degree()>=0;){var e=this.polynomialDivision(r,t);r=t,t=e.remainder}return r},createMatrixAlgebra:function(r){var t,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).dimension||r[0].length,e=i(r);try{for(e.s();!(t=e.n()).done;){var o=t.value;if(o.length!==n||o.some((function(r){return r.length!==n})))throw new Error("All matrices must have the same dimension")}}catch(r){e.e(r)}finally{e.f()}return{matrices:r,dimension:n,add:function(r,t){return r.map((function(r,n){return r.map((function(r,e){return r+t[n][e]}))}))},multiply:function(r,t){for(var e=Array(n).fill().map((function(){return Array(n).fill(0)})),o=0;o<n;o++)for(var i=0;i<n;i++)for(var a=0;a<n;a++)e[o][i]+=r[o][a]*t[a][i];return e},scalarMultiply:function(r,t){return t.map((function(t){return t.map((function(t){return r*t}))}))},determinant:function(r){if(1===n)return r[0][0];if(2===n)return r[0][0]*r[1][1]-r[0][1]*r[1][0];for(var t=0,e=0;e<n;e++){for(var o=[],i=1;i<n;i++){for(var a=[],u=0;u<n;u++)u!==e&&a.push(r[i][u]);o.push(a)}t+=(e%2==0?1:-1)*r[0][e]*this.determinant(o)}return t},inverse:function(r){var t=this.determinant(r);if(0===t)throw new Error("Matrix is not invertible");if(1===n)return[[1/r[0][0]]];for(var e=Array(n).fill().map((function(){return Array(n).fill(0)})),o=0;o<n;o++)for(var i=0;i<n;i++){for(var a=[],u=0;u<n;u++)if(u!==o){for(var c=[],s=0;s<n;s++)s!==i&&c.push(r[u][s]);a.push(c)}var f=(o+i)%2==0?1:-