UNPKG

ant-utils

Version:
3 lines (2 loc) 2.01 kB
function convertToRoman(t){"number"!=typeof t&&(t=t.toNumber()),t=Math.floor(t);const e={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};let i="";for(const s of Object.keys(e)){const m=Math.floor(t/e[s]);t-=m*e[s],i+=s.repeat(m)}return i}function solveEquation(t,e,i,s){if(t.abs().lt(Number.EPSILON)){if(t=e,e=i,i=s,t.abs().lt(Number.EPSILON))return t=e,e=i,t.abs().lt(Number.EPSILON)?[]:[e.times(-1).div(t)];const m=e.pow(2).minus(t.times(i).times(4));return m.abs().lt(Number.EPSILON)?[e.times(-1).div(t.times(2))]:m.gt(0)?[m.sqrt().minus(e).div(t.times(2)),m.sqrt().plus(e).times(-1).div(t.times(2))]:[]}return solveCubic(t,e,i,s)}function solveCubic(t,e,i,s){const m=t.times(i).times(3).minus(e.pow(2)).div(3).div(t).div(t),n=e.pow(3).times(2).minus(t.times(e).times(i).times(9)).plus(t.times(t).times(s).times(27)).div(t.pow(3).times(27));let o;if(m.abs().lt(Number.EPSILON))o=[n.times(-1).cbrt()];else if(n.abs().lt(Number.EPSILON))o=[new Decimal(0)].concat(m.lt(0)?[m.times(-1).sqrt(),m.times(-1).sqrt().times(-1)]:[]);else{const e=n.pow(2).div(4).plus(m.pow(3).div(27));if(e.abs().lt(Number.EPSILON))o=[n.times(-1.5).div(m),new Decimal(3).times(n).div(m)];else if(e.gt(0)){const i=n.times(-.5),r=e.sqrt(),u=i.minus(r);if(0===u.toNumber())return[s.div(t.abs()).cbrt()];const c=Decimal.cbrt(u);o=[c.minus(m.div(c.times(3)))]}else{const t=new Decimal(2).times(Decimal.sqrt(m.times(-1).div(3)));let e=new Decimal(n);if((e=(e=(e=e.div(m)).div(t)).times(3)).lt(-1))return[];const i=Decimal.max(Decimal.min(e,1),-1).toNumber(),s=new Decimal(Math.acos(i)/3),r=new Decimal(2).times(Math.PI).div(3);o=[t.times(Math.cos(s.toNumber())),t.times(Math.cos(s.minus(r).toNumber())),t.times(Math.cos(s.minus(r.times(2)).toNumber()))]}}for(let i=0;i<o.length;i++)o[i]=o[i].minus(e.div(t.times(3)));return o}function random(t=new Decimal(0),e=new Decimal(1)){return t.plus(e.minus(t).times(Math.random()))}export{convertToRoman,solveEquation,random}; //# sourceMappingURL=index.esm.min.js.map