@performant-software/geospatial 3.1.25-beta.0 → 3.1.25-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs100.js +1 -1
- package/dist/index.cjs101.js +1 -1
- package/dist/index.cjs102.js +1 -1
- package/dist/index.cjs103.js +1 -1
- package/dist/index.cjs104.js +1 -1
- package/dist/index.cjs105.js +1 -1
- package/dist/index.cjs106.js +1 -1
- package/dist/index.cjs107.js +1 -1
- package/dist/index.cjs108.js +1 -1
- package/dist/index.cjs111.js +1 -1
- package/dist/index.cjs112.js +1 -1
- package/dist/index.cjs114.js +1 -1
- package/dist/index.cjs115.js +1 -1
- package/dist/index.cjs116.js +1 -1
- package/dist/index.cjs117.js +1 -1
- package/dist/index.cjs12.js +1 -1
- package/dist/index.cjs12.js.map +1 -1
- package/dist/index.cjs122.js +1 -1
- package/dist/index.cjs123.js +1 -1
- package/dist/index.cjs124.js +1 -1
- package/dist/index.cjs125.js +1 -1
- package/dist/index.cjs128.js +1 -1
- package/dist/index.cjs129.js +1 -1
- package/dist/index.cjs13.js +1 -1
- package/dist/index.cjs13.js.map +1 -1
- package/dist/index.cjs130.js +1 -1
- package/dist/index.cjs134.js +1 -1
- package/dist/index.cjs137.js +1 -1
- package/dist/index.cjs141.js +1 -1
- package/dist/index.cjs144.js +1 -1
- package/dist/index.cjs152.js +1 -1
- package/dist/index.cjs153.js +1 -1
- package/dist/index.cjs154.js +1 -1
- package/dist/index.cjs155.js +1 -1
- package/dist/index.cjs156.js +1 -1
- package/dist/index.cjs157.js +1 -1
- package/dist/index.cjs158.js +1 -1
- package/dist/index.cjs16.js +1 -1
- package/dist/index.cjs160.js +1 -1
- package/dist/index.cjs161.js +1 -1
- package/dist/index.cjs162.js +1 -1
- package/dist/index.cjs163.js +1 -1
- package/dist/index.cjs164.js +1 -1
- package/dist/index.cjs165.js +1 -1
- package/dist/index.cjs166.js +1 -1
- package/dist/index.cjs167.js +1 -1
- package/dist/index.cjs168.js +1 -1
- package/dist/index.cjs17.js +1 -1
- package/dist/index.cjs171.js +1 -1
- package/dist/index.cjs172.js +1 -1
- package/dist/index.cjs174.js +1 -1
- package/dist/index.cjs175.js +1 -1
- package/dist/index.cjs176.js +1 -1
- package/dist/index.cjs177.js +1 -1
- package/dist/index.cjs178.js +1 -1
- package/dist/index.cjs179.js +1 -1
- package/dist/index.cjs18.js +1 -1
- package/dist/index.cjs180.js +1 -1
- package/dist/index.cjs181.js +1 -1
- package/dist/index.cjs187.js +1 -1
- package/dist/index.cjs188.js +1 -1
- package/dist/index.cjs189.js +1 -1
- package/dist/index.cjs19.js +1 -1
- package/dist/index.cjs190.js +1 -1
- package/dist/index.cjs191.js +1 -1
- package/dist/index.cjs194.js +1 -1
- package/dist/index.cjs194.js.map +1 -1
- package/dist/index.cjs195.js +1 -1
- package/dist/index.cjs195.js.map +1 -1
- package/dist/index.cjs196.js +1 -1
- package/dist/index.cjs196.js.map +1 -1
- package/dist/index.cjs197.js +1 -1
- package/dist/index.cjs197.js.map +1 -1
- package/dist/index.cjs198.js +1 -1
- package/dist/index.cjs198.js.map +1 -1
- package/dist/index.cjs199.js +1 -1
- package/dist/index.cjs199.js.map +1 -1
- package/dist/index.cjs20.js +1 -1
- package/dist/index.cjs200.js +1 -1
- package/dist/index.cjs200.js.map +1 -1
- package/dist/index.cjs201.js +1 -1
- package/dist/index.cjs201.js.map +1 -1
- package/dist/index.cjs202.js +1 -1
- package/dist/index.cjs202.js.map +1 -1
- package/dist/index.cjs203.js +1 -1
- package/dist/index.cjs203.js.map +1 -1
- package/dist/index.cjs204.js +1 -1
- package/dist/index.cjs204.js.map +1 -1
- package/dist/index.cjs205.js +1 -1
- package/dist/index.cjs205.js.map +1 -1
- package/dist/index.cjs206.js +1 -1
- package/dist/index.cjs206.js.map +1 -1
- package/dist/index.cjs207.js +1 -1
- package/dist/index.cjs207.js.map +1 -1
- package/dist/index.cjs208.js +1 -1
- package/dist/index.cjs208.js.map +1 -1
- package/dist/index.cjs209.js +1 -1
- package/dist/index.cjs209.js.map +1 -1
- package/dist/index.cjs21.js +1 -1
- package/dist/index.cjs210.js +1 -1
- package/dist/index.cjs210.js.map +1 -1
- package/dist/index.cjs211.js +1 -1
- package/dist/index.cjs211.js.map +1 -1
- package/dist/index.cjs212.js +1 -1
- package/dist/index.cjs212.js.map +1 -1
- package/dist/index.cjs213.js +1 -1
- package/dist/index.cjs213.js.map +1 -1
- package/dist/index.cjs214.js +1 -1
- package/dist/index.cjs214.js.map +1 -1
- package/dist/index.cjs215.js +1 -1
- package/dist/index.cjs215.js.map +1 -1
- package/dist/index.cjs216.js +1 -1
- package/dist/index.cjs216.js.map +1 -1
- package/dist/index.cjs217.js +1 -1
- package/dist/index.cjs217.js.map +1 -1
- package/dist/index.cjs218.js +1 -1
- package/dist/index.cjs218.js.map +1 -1
- package/dist/index.cjs219.js +1 -1
- package/dist/index.cjs219.js.map +1 -1
- package/dist/index.cjs22.js +1 -1
- package/dist/index.cjs220.js +1 -1
- package/dist/index.cjs220.js.map +1 -1
- package/dist/index.cjs221.js +1 -1
- package/dist/index.cjs221.js.map +1 -1
- package/dist/index.cjs222.js +1 -1
- package/dist/index.cjs222.js.map +1 -1
- package/dist/index.cjs223.js +1 -1
- package/dist/index.cjs223.js.map +1 -1
- package/dist/index.cjs224.js +1 -1
- package/dist/index.cjs224.js.map +1 -1
- package/dist/index.cjs225.js +1 -1
- package/dist/index.cjs225.js.map +1 -1
- package/dist/index.cjs226.js +1 -1
- package/dist/index.cjs226.js.map +1 -1
- package/dist/index.cjs227.js +1 -1
- package/dist/index.cjs227.js.map +1 -1
- package/dist/index.cjs228.js +1 -1
- package/dist/index.cjs228.js.map +1 -1
- package/dist/index.cjs229.js +1 -1
- package/dist/index.cjs229.js.map +1 -1
- package/dist/index.cjs23.js +1 -1
- package/dist/index.cjs230.js +1 -1
- package/dist/index.cjs230.js.map +1 -1
- package/dist/index.cjs231.js +1 -1
- package/dist/index.cjs231.js.map +1 -1
- package/dist/index.cjs232.js +1 -1
- package/dist/index.cjs232.js.map +1 -1
- package/dist/index.cjs233.js +1 -1
- package/dist/index.cjs233.js.map +1 -1
- package/dist/index.cjs234.js +1 -1
- package/dist/index.cjs234.js.map +1 -1
- package/dist/index.cjs235.js +1 -1
- package/dist/index.cjs235.js.map +1 -1
- package/dist/index.cjs236.js +1 -1
- package/dist/index.cjs236.js.map +1 -1
- package/dist/index.cjs237.js +1 -1
- package/dist/index.cjs237.js.map +1 -1
- package/dist/index.cjs238.js +1 -1
- package/dist/index.cjs238.js.map +1 -1
- package/dist/index.cjs239.js +1 -1
- package/dist/index.cjs239.js.map +1 -1
- package/dist/index.cjs24.js +1 -1
- package/dist/index.cjs240.js +1 -1
- package/dist/index.cjs240.js.map +1 -1
- package/dist/index.cjs241.js +1 -1
- package/dist/index.cjs241.js.map +1 -1
- package/dist/index.cjs242.js +1 -1
- package/dist/index.cjs242.js.map +1 -1
- package/dist/index.cjs243.js +1 -1
- package/dist/index.cjs243.js.map +1 -1
- package/dist/index.cjs244.js +1 -1
- package/dist/index.cjs244.js.map +1 -1
- package/dist/index.cjs245.js +1 -1
- package/dist/index.cjs245.js.map +1 -1
- package/dist/index.cjs246.js +1 -1
- package/dist/index.cjs246.js.map +1 -1
- package/dist/index.cjs247.js +1 -1
- package/dist/index.cjs247.js.map +1 -1
- package/dist/index.cjs248.js +1 -1
- package/dist/index.cjs248.js.map +1 -1
- package/dist/index.cjs249.js +1 -1
- package/dist/index.cjs249.js.map +1 -1
- package/dist/index.cjs25.js +1 -1
- package/dist/index.cjs250.js +1 -7
- package/dist/index.cjs250.js.map +1 -1
- package/dist/index.cjs251.js +1 -1
- package/dist/index.cjs251.js.map +1 -1
- package/dist/index.cjs252.js +1 -1
- package/dist/index.cjs252.js.map +1 -1
- package/dist/index.cjs253.js +1 -1
- package/dist/index.cjs253.js.map +1 -1
- package/dist/index.cjs254.js +1 -1
- package/dist/index.cjs254.js.map +1 -1
- package/dist/index.cjs255.js +1 -1
- package/dist/index.cjs255.js.map +1 -1
- package/dist/index.cjs256.js +1 -1
- package/dist/index.cjs256.js.map +1 -1
- package/dist/index.cjs257.js +1 -1
- package/dist/index.cjs257.js.map +1 -1
- package/dist/index.cjs258.js +1 -1
- package/dist/index.cjs258.js.map +1 -1
- package/dist/index.cjs259.js +1 -1
- package/dist/index.cjs259.js.map +1 -1
- package/dist/index.cjs26.js +1 -1
- package/dist/index.cjs260.js +1 -1
- package/dist/index.cjs260.js.map +1 -1
- package/dist/index.cjs261.js +1 -1
- package/dist/index.cjs261.js.map +1 -1
- package/dist/index.cjs262.js +1 -1
- package/dist/index.cjs262.js.map +1 -1
- package/dist/index.cjs263.js +1 -1
- package/dist/index.cjs263.js.map +1 -1
- package/dist/index.cjs264.js +1 -1
- package/dist/index.cjs264.js.map +1 -1
- package/dist/index.cjs265.js +1 -1
- package/dist/index.cjs265.js.map +1 -1
- package/dist/index.cjs266.js +1 -1
- package/dist/index.cjs266.js.map +1 -1
- package/dist/index.cjs267.js +1 -1
- package/dist/index.cjs267.js.map +1 -1
- package/dist/index.cjs268.js +1 -1
- package/dist/index.cjs268.js.map +1 -1
- package/dist/index.cjs269.js +1 -1
- package/dist/index.cjs269.js.map +1 -1
- package/dist/index.cjs27.js +1 -1
- package/dist/index.cjs270.js +1 -1
- package/dist/index.cjs270.js.map +1 -1
- package/dist/index.cjs271.js +1 -1
- package/dist/index.cjs271.js.map +1 -1
- package/dist/index.cjs272.js +7 -1
- package/dist/index.cjs272.js.map +1 -1
- package/dist/index.cjs273.js +1 -1
- package/dist/index.cjs273.js.map +1 -1
- package/dist/index.cjs274.js +1 -1
- package/dist/index.cjs274.js.map +1 -1
- package/dist/index.cjs275.js +1 -1
- package/dist/index.cjs275.js.map +1 -1
- package/dist/index.cjs276.js +2 -0
- package/dist/index.cjs276.js.map +1 -0
- package/dist/index.cjs277.js +2 -0
- package/dist/index.cjs277.js.map +1 -0
- package/dist/index.cjs278.js +2 -0
- package/dist/index.cjs278.js.map +1 -0
- package/dist/index.cjs279.js +2 -0
- package/dist/index.cjs279.js.map +1 -0
- package/dist/index.cjs280.js +2 -0
- package/dist/index.cjs280.js.map +1 -0
- package/dist/index.cjs281.js +2 -0
- package/dist/index.cjs281.js.map +1 -0
- package/dist/index.cjs282.js +2 -0
- package/dist/index.cjs282.js.map +1 -0
- package/dist/index.cjs283.js +2 -0
- package/dist/index.cjs283.js.map +1 -0
- package/dist/index.cjs284.js +2 -0
- package/dist/index.cjs284.js.map +1 -0
- package/dist/index.cjs285.js +2 -0
- package/dist/index.cjs285.js.map +1 -0
- package/dist/index.cjs286.js +2 -0
- package/dist/index.cjs286.js.map +1 -0
- package/dist/index.cjs287.js +2 -0
- package/dist/index.cjs287.js.map +1 -0
- package/dist/index.cjs288.js +2 -0
- package/dist/index.cjs288.js.map +1 -0
- package/dist/index.cjs289.js +2 -0
- package/dist/index.cjs289.js.map +1 -0
- package/dist/index.cjs290.js +2 -0
- package/dist/index.cjs290.js.map +1 -0
- package/dist/index.cjs291.js +2 -0
- package/dist/index.cjs291.js.map +1 -0
- package/dist/index.cjs292.js +2 -0
- package/dist/index.cjs292.js.map +1 -0
- package/dist/index.cjs293.js +2 -0
- package/dist/index.cjs293.js.map +1 -0
- package/dist/index.cjs294.js +2 -0
- package/dist/index.cjs294.js.map +1 -0
- package/dist/index.cjs295.js +2 -0
- package/dist/index.cjs295.js.map +1 -0
- package/dist/index.cjs296.js +2 -0
- package/dist/index.cjs296.js.map +1 -0
- package/dist/index.cjs297.js +2 -0
- package/dist/index.cjs297.js.map +1 -0
- package/dist/index.cjs298.js +2 -0
- package/dist/index.cjs298.js.map +1 -0
- package/dist/index.cjs299.js +2 -0
- package/dist/index.cjs299.js.map +1 -0
- package/dist/index.cjs300.js +2 -0
- package/dist/index.cjs300.js.map +1 -0
- package/dist/index.cjs301.js +2 -0
- package/dist/index.cjs301.js.map +1 -0
- package/dist/index.cjs302.js +2 -0
- package/dist/index.cjs302.js.map +1 -0
- package/dist/index.cjs303.js +2 -0
- package/dist/index.cjs303.js.map +1 -0
- package/dist/index.cjs304.js +2 -0
- package/dist/index.cjs304.js.map +1 -0
- package/dist/index.cjs305.js +2 -0
- package/dist/index.cjs305.js.map +1 -0
- package/dist/index.cjs306.js +2 -0
- package/dist/index.cjs306.js.map +1 -0
- package/dist/index.cjs307.js +2 -0
- package/dist/index.cjs307.js.map +1 -0
- package/dist/index.cjs308.js +47 -0
- package/dist/index.cjs308.js.map +1 -0
- package/dist/index.cjs309.js +212 -0
- package/dist/index.cjs309.js.map +1 -0
- package/dist/index.cjs310.js +62 -0
- package/dist/index.cjs310.js.map +1 -0
- package/dist/index.cjs311.js +60 -0
- package/dist/index.cjs311.js.map +1 -0
- package/dist/index.cjs312.js +46 -0
- package/dist/index.cjs312.js.map +1 -0
- package/dist/index.cjs313.js +52 -0
- package/dist/index.cjs313.js.map +1 -0
- package/dist/index.cjs314.js +308 -0
- package/dist/index.cjs314.js.map +1 -0
- package/dist/index.cjs315.js +293 -0
- package/dist/index.cjs315.js.map +1 -0
- package/dist/index.cjs316.js +6 -0
- package/dist/index.cjs316.js.map +1 -0
- package/dist/index.cjs317.js +2 -0
- package/dist/index.cjs317.js.map +1 -0
- package/dist/index.cjs318.js +2 -0
- package/dist/index.cjs318.js.map +1 -0
- package/dist/index.cjs319.js +2 -0
- package/dist/index.cjs319.js.map +1 -0
- package/dist/index.cjs320.js +2 -0
- package/dist/index.cjs320.js.map +1 -0
- package/dist/index.cjs321.js +2 -0
- package/dist/index.cjs321.js.map +1 -0
- package/dist/index.cjs322.js +2 -0
- package/dist/index.cjs322.js.map +1 -0
- package/dist/index.cjs323.js +2 -0
- package/dist/index.cjs323.js.map +1 -0
- package/dist/index.cjs324.js +2 -0
- package/dist/index.cjs324.js.map +1 -0
- package/dist/index.cjs325.js +2 -0
- package/dist/index.cjs325.js.map +1 -0
- package/dist/index.cjs326.js +2 -0
- package/dist/index.cjs326.js.map +1 -0
- package/dist/index.cjs327.js +2 -0
- package/dist/index.cjs327.js.map +1 -0
- package/dist/index.cjs328.js +2 -0
- package/dist/index.cjs328.js.map +1 -0
- package/dist/index.cjs329.js +2 -0
- package/dist/index.cjs329.js.map +1 -0
- package/dist/index.cjs330.js +2 -0
- package/dist/index.cjs330.js.map +1 -0
- package/dist/index.cjs331.js +2 -0
- package/dist/index.cjs331.js.map +1 -0
- package/dist/index.cjs332.js +2 -0
- package/dist/index.cjs332.js.map +1 -0
- package/dist/index.cjs333.js +2 -0
- package/dist/index.cjs333.js.map +1 -0
- package/dist/index.cjs334.js +5 -0
- package/dist/index.cjs334.js.map +1 -0
- package/dist/index.cjs335.js +6 -0
- package/dist/index.cjs335.js.map +1 -0
- package/dist/index.cjs336.js +2 -0
- package/dist/index.cjs336.js.map +1 -0
- package/dist/index.cjs337.js +2 -0
- package/dist/index.cjs337.js.map +1 -0
- package/dist/index.cjs338.js +2 -0
- package/dist/index.cjs338.js.map +1 -0
- package/dist/index.cjs339.js +2 -0
- package/dist/index.cjs339.js.map +1 -0
- package/dist/index.cjs340.js +2 -0
- package/dist/index.cjs340.js.map +1 -0
- package/dist/index.cjs341.js +2 -0
- package/dist/index.cjs341.js.map +1 -0
- package/dist/index.cjs342.js +2 -0
- package/dist/index.cjs342.js.map +1 -0
- package/dist/index.cjs343.js +2 -0
- package/dist/index.cjs343.js.map +1 -0
- package/dist/index.cjs344.js +2 -0
- package/dist/index.cjs344.js.map +1 -0
- package/dist/index.cjs345.js +2 -0
- package/dist/index.cjs345.js.map +1 -0
- package/dist/index.cjs346.js +2 -0
- package/dist/index.cjs346.js.map +1 -0
- package/dist/index.cjs347.js +2 -0
- package/dist/index.cjs347.js.map +1 -0
- package/dist/index.cjs348.js +5 -0
- package/dist/index.cjs348.js.map +1 -0
- package/dist/index.cjs349.js +2 -0
- package/dist/index.cjs349.js.map +1 -0
- package/dist/index.cjs350.js +2 -0
- package/dist/index.cjs350.js.map +1 -0
- package/dist/index.cjs351.js +2 -0
- package/dist/index.cjs351.js.map +1 -0
- package/dist/index.cjs352.js +2 -0
- package/dist/index.cjs352.js.map +1 -0
- package/dist/index.cjs353.js +2 -0
- package/dist/index.cjs353.js.map +1 -0
- package/dist/index.cjs354.js +2 -0
- package/dist/index.cjs354.js.map +1 -0
- package/dist/index.cjs355.js +2 -0
- package/dist/index.cjs355.js.map +1 -0
- package/dist/index.cjs356.js +2 -0
- package/dist/index.cjs356.js.map +1 -0
- package/dist/index.cjs357.js +2 -0
- package/dist/index.cjs357.js.map +1 -0
- package/dist/index.cjs358.js +2 -0
- package/dist/index.cjs358.js.map +1 -0
- package/dist/index.cjs359.js +2 -0
- package/dist/index.cjs359.js.map +1 -0
- package/dist/index.cjs360.js +2 -0
- package/dist/index.cjs360.js.map +1 -0
- package/dist/index.cjs361.js +2 -0
- package/dist/index.cjs361.js.map +1 -0
- package/dist/index.cjs362.js +2 -0
- package/dist/index.cjs362.js.map +1 -0
- package/dist/index.cjs363.js +2 -0
- package/dist/index.cjs363.js.map +1 -0
- package/dist/index.cjs364.js +2 -0
- package/dist/index.cjs364.js.map +1 -0
- package/dist/index.cjs365.js +2 -0
- package/dist/index.cjs365.js.map +1 -0
- package/dist/index.cjs366.js +2 -0
- package/dist/index.cjs366.js.map +1 -0
- package/dist/index.cjs367.js +2 -0
- package/dist/index.cjs367.js.map +1 -0
- package/dist/index.cjs368.js +2 -0
- package/dist/index.cjs368.js.map +1 -0
- package/dist/index.cjs369.js +2 -0
- package/dist/index.cjs369.js.map +1 -0
- package/dist/index.cjs370.js +2 -0
- package/dist/index.cjs370.js.map +1 -0
- package/dist/index.cjs371.js +2 -0
- package/dist/index.cjs371.js.map +1 -0
- package/dist/index.cjs372.js +2 -0
- package/dist/index.cjs372.js.map +1 -0
- package/dist/index.cjs373.js +2 -0
- package/dist/index.cjs373.js.map +1 -0
- package/dist/index.cjs374.js +2 -0
- package/dist/index.cjs374.js.map +1 -0
- package/dist/index.cjs375.js +2 -0
- package/dist/index.cjs375.js.map +1 -0
- package/dist/index.cjs376.js +2 -0
- package/dist/index.cjs376.js.map +1 -0
- package/dist/index.cjs377.js +2 -0
- package/dist/index.cjs377.js.map +1 -0
- package/dist/index.cjs378.js +2 -0
- package/dist/index.cjs378.js.map +1 -0
- package/dist/index.cjs379.js +2 -0
- package/dist/index.cjs379.js.map +1 -0
- package/dist/index.cjs38.js +1 -1
- package/dist/index.cjs380.js +2 -0
- package/dist/index.cjs380.js.map +1 -0
- package/dist/index.cjs381.js +2 -0
- package/dist/index.cjs381.js.map +1 -0
- package/dist/index.cjs382.js +2 -0
- package/dist/index.cjs382.js.map +1 -0
- package/dist/index.cjs383.js +2 -0
- package/dist/index.cjs383.js.map +1 -0
- package/dist/index.cjs384.js +2 -0
- package/dist/index.cjs384.js.map +1 -0
- package/dist/index.cjs385.js +2 -0
- package/dist/index.cjs385.js.map +1 -0
- package/dist/index.cjs386.js +2 -0
- package/dist/index.cjs386.js.map +1 -0
- package/dist/index.cjs387.js +2 -0
- package/dist/index.cjs387.js.map +1 -0
- package/dist/index.cjs388.js +2 -0
- package/dist/index.cjs388.js.map +1 -0
- package/dist/index.cjs389.js +2 -0
- package/dist/index.cjs389.js.map +1 -0
- package/dist/index.cjs39.js +1 -1
- package/dist/index.cjs390.js +2 -0
- package/dist/index.cjs390.js.map +1 -0
- package/dist/index.cjs391.js +2 -0
- package/dist/index.cjs391.js.map +1 -0
- package/dist/index.cjs392.js +2 -0
- package/dist/index.cjs392.js.map +1 -0
- package/dist/index.cjs393.js +2 -0
- package/dist/index.cjs393.js.map +1 -0
- package/dist/index.cjs394.js +2 -0
- package/dist/index.cjs394.js.map +1 -0
- package/dist/index.cjs395.js +2 -0
- package/dist/index.cjs395.js.map +1 -0
- package/dist/index.cjs396.js +2 -0
- package/dist/index.cjs396.js.map +1 -0
- package/dist/index.cjs397.js +2 -0
- package/dist/index.cjs397.js.map +1 -0
- package/dist/index.cjs398.js +2 -0
- package/dist/index.cjs398.js.map +1 -0
- package/dist/index.cjs399.js +2 -0
- package/dist/index.cjs399.js.map +1 -0
- package/dist/index.cjs40.js +1 -1
- package/dist/index.cjs400.js +2 -0
- package/dist/index.cjs400.js.map +1 -0
- package/dist/index.cjs401.js +2 -0
- package/dist/index.cjs401.js.map +1 -0
- package/dist/index.cjs402.js +2 -0
- package/dist/index.cjs402.js.map +1 -0
- package/dist/index.cjs403.js +2 -0
- package/dist/index.cjs403.js.map +1 -0
- package/dist/index.cjs404.js +2 -0
- package/dist/index.cjs404.js.map +1 -0
- package/dist/index.cjs405.js +2 -0
- package/dist/index.cjs405.js.map +1 -0
- package/dist/index.cjs406.js +2 -0
- package/dist/index.cjs406.js.map +1 -0
- package/dist/index.cjs407.js +2 -0
- package/dist/index.cjs407.js.map +1 -0
- package/dist/index.cjs408.js +2 -0
- package/dist/index.cjs408.js.map +1 -0
- package/dist/index.cjs409.js +2 -0
- package/dist/index.cjs409.js.map +1 -0
- package/dist/index.cjs410.js +2 -0
- package/dist/index.cjs410.js.map +1 -0
- package/dist/index.cjs411.js +2 -0
- package/dist/index.cjs411.js.map +1 -0
- package/dist/index.cjs412.js +2 -0
- package/dist/index.cjs412.js.map +1 -0
- package/dist/index.cjs413.js +2 -0
- package/dist/index.cjs413.js.map +1 -0
- package/dist/index.cjs414.js +2 -0
- package/dist/index.cjs414.js.map +1 -0
- package/dist/index.cjs415.js +2 -0
- package/dist/index.cjs415.js.map +1 -0
- package/dist/index.cjs416.js +2 -0
- package/dist/index.cjs416.js.map +1 -0
- package/dist/index.cjs417.js +2 -0
- package/dist/index.cjs417.js.map +1 -0
- package/dist/index.cjs418.js +2 -0
- package/dist/index.cjs418.js.map +1 -0
- package/dist/index.cjs419.js +2 -0
- package/dist/index.cjs419.js.map +1 -0
- package/dist/index.cjs42.js +1 -1
- package/dist/index.cjs420.js +2 -0
- package/dist/index.cjs420.js.map +1 -0
- package/dist/index.cjs421.js +2 -0
- package/dist/index.cjs421.js.map +1 -0
- package/dist/index.cjs422.js +2 -0
- package/dist/index.cjs422.js.map +1 -0
- package/dist/index.cjs423.js +2 -0
- package/dist/index.cjs423.js.map +1 -0
- package/dist/index.cjs424.js +2 -0
- package/dist/index.cjs424.js.map +1 -0
- package/dist/index.cjs425.js +2 -0
- package/dist/index.cjs425.js.map +1 -0
- package/dist/index.cjs426.js +2 -0
- package/dist/index.cjs426.js.map +1 -0
- package/dist/index.cjs427.js +2 -0
- package/dist/index.cjs427.js.map +1 -0
- package/dist/index.cjs428.js +2 -0
- package/dist/index.cjs428.js.map +1 -0
- package/dist/index.cjs429.js +2 -0
- package/dist/index.cjs429.js.map +1 -0
- package/dist/index.cjs43.js +1 -1
- package/dist/index.cjs430.js +2 -0
- package/dist/index.cjs430.js.map +1 -0
- package/dist/index.cjs431.js +2 -0
- package/dist/index.cjs431.js.map +1 -0
- package/dist/index.cjs432.js +2 -0
- package/dist/index.cjs432.js.map +1 -0
- package/dist/index.cjs433.js +2 -0
- package/dist/index.cjs433.js.map +1 -0
- package/dist/index.cjs434.js +2 -0
- package/dist/index.cjs434.js.map +1 -0
- package/dist/index.cjs435.js +2 -0
- package/dist/index.cjs435.js.map +1 -0
- package/dist/index.cjs436.js +2 -0
- package/dist/index.cjs436.js.map +1 -0
- package/dist/index.cjs437.js +2 -0
- package/dist/index.cjs437.js.map +1 -0
- package/dist/index.cjs438.js +2 -0
- package/dist/index.cjs438.js.map +1 -0
- package/dist/index.cjs439.js +2 -0
- package/dist/index.cjs439.js.map +1 -0
- package/dist/index.cjs44.js +1 -1
- package/dist/index.cjs440.js +2 -0
- package/dist/index.cjs440.js.map +1 -0
- package/dist/index.cjs441.js +2 -0
- package/dist/index.cjs441.js.map +1 -0
- package/dist/index.cjs442.js +2 -0
- package/dist/index.cjs442.js.map +1 -0
- package/dist/index.cjs443.js +2 -0
- package/dist/index.cjs443.js.map +1 -0
- package/dist/index.cjs444.js +2 -0
- package/dist/index.cjs444.js.map +1 -0
- package/dist/index.cjs445.js +2 -0
- package/dist/index.cjs445.js.map +1 -0
- package/dist/index.cjs446.js +2 -0
- package/dist/index.cjs446.js.map +1 -0
- package/dist/index.cjs447.js +2 -0
- package/dist/index.cjs447.js.map +1 -0
- package/dist/index.cjs448.js +2 -0
- package/dist/index.cjs448.js.map +1 -0
- package/dist/index.cjs449.js +2 -0
- package/dist/index.cjs449.js.map +1 -0
- package/dist/index.cjs450.js +2 -0
- package/dist/index.cjs450.js.map +1 -0
- package/dist/index.cjs451.js +2 -0
- package/dist/index.cjs451.js.map +1 -0
- package/dist/index.cjs452.js +2 -0
- package/dist/index.cjs452.js.map +1 -0
- package/dist/index.cjs453.js +2 -0
- package/dist/index.cjs453.js.map +1 -0
- package/dist/index.cjs454.js +2 -0
- package/dist/index.cjs454.js.map +1 -0
- package/dist/index.cjs455.js +2 -0
- package/dist/index.cjs455.js.map +1 -0
- package/dist/index.cjs456.js +2 -0
- package/dist/index.cjs456.js.map +1 -0
- package/dist/index.cjs457.js +2 -0
- package/dist/index.cjs457.js.map +1 -0
- package/dist/index.cjs458.js +2 -0
- package/dist/index.cjs458.js.map +1 -0
- package/dist/index.cjs459.js +2 -0
- package/dist/index.cjs459.js.map +1 -0
- package/dist/index.cjs46.js +1 -1
- package/dist/index.cjs460.js +2 -0
- package/dist/index.cjs460.js.map +1 -0
- package/dist/index.cjs461.js +2 -0
- package/dist/index.cjs461.js.map +1 -0
- package/dist/index.cjs462.js +2 -0
- package/dist/index.cjs462.js.map +1 -0
- package/dist/index.cjs463.js +2 -0
- package/dist/index.cjs463.js.map +1 -0
- package/dist/index.cjs464.js +2 -0
- package/dist/index.cjs464.js.map +1 -0
- package/dist/index.cjs465.js +2 -0
- package/dist/index.cjs465.js.map +1 -0
- package/dist/index.cjs466.js +2 -0
- package/dist/index.cjs466.js.map +1 -0
- package/dist/index.cjs467.js +2 -0
- package/dist/index.cjs467.js.map +1 -0
- package/dist/index.cjs468.js +2 -0
- package/dist/index.cjs468.js.map +1 -0
- package/dist/index.cjs469.js +2 -0
- package/dist/index.cjs469.js.map +1 -0
- package/dist/index.cjs47.js +1 -1
- package/dist/index.cjs470.js +2 -0
- package/dist/index.cjs470.js.map +1 -0
- package/dist/index.cjs471.js +2 -0
- package/dist/index.cjs471.js.map +1 -0
- package/dist/index.cjs472.js +2 -0
- package/dist/index.cjs472.js.map +1 -0
- package/dist/index.cjs473.js +2 -0
- package/dist/index.cjs473.js.map +1 -0
- package/dist/index.cjs474.js +2 -0
- package/dist/index.cjs474.js.map +1 -0
- package/dist/index.cjs475.js +2 -0
- package/dist/index.cjs475.js.map +1 -0
- package/dist/index.cjs476.js +2 -0
- package/dist/index.cjs476.js.map +1 -0
- package/dist/index.cjs477.js +2 -0
- package/dist/index.cjs477.js.map +1 -0
- package/dist/index.cjs478.js +2 -0
- package/dist/index.cjs478.js.map +1 -0
- package/dist/index.cjs479.js +2 -0
- package/dist/index.cjs479.js.map +1 -0
- package/dist/index.cjs48.js +1 -1
- package/dist/index.cjs480.js +2 -0
- package/dist/index.cjs480.js.map +1 -0
- package/dist/index.cjs481.js +2 -0
- package/dist/index.cjs481.js.map +1 -0
- package/dist/index.cjs482.js +2 -0
- package/dist/index.cjs482.js.map +1 -0
- package/dist/index.cjs483.js +2 -0
- package/dist/index.cjs483.js.map +1 -0
- package/dist/index.cjs484.js +2 -0
- package/dist/index.cjs484.js.map +1 -0
- package/dist/index.cjs485.js +2 -0
- package/dist/index.cjs485.js.map +1 -0
- package/dist/index.cjs486.js +2 -0
- package/dist/index.cjs486.js.map +1 -0
- package/dist/index.cjs487.js +2 -0
- package/dist/index.cjs487.js.map +1 -0
- package/dist/index.cjs488.js +2 -0
- package/dist/index.cjs488.js.map +1 -0
- package/dist/index.cjs489.js +2 -0
- package/dist/index.cjs489.js.map +1 -0
- package/dist/index.cjs490.js +2 -0
- package/dist/index.cjs490.js.map +1 -0
- package/dist/index.cjs491.js +2 -0
- package/dist/index.cjs491.js.map +1 -0
- package/dist/index.cjs492.js +2 -0
- package/dist/index.cjs492.js.map +1 -0
- package/dist/index.cjs493.js +2 -0
- package/dist/index.cjs493.js.map +1 -0
- package/dist/index.cjs494.js +2 -0
- package/dist/index.cjs494.js.map +1 -0
- package/dist/index.cjs495.js +2 -0
- package/dist/index.cjs495.js.map +1 -0
- package/dist/index.cjs496.js +2 -0
- package/dist/index.cjs496.js.map +1 -0
- package/dist/index.cjs497.js +2 -0
- package/dist/index.cjs497.js.map +1 -0
- package/dist/index.cjs498.js +2 -0
- package/dist/index.cjs498.js.map +1 -0
- package/dist/index.cjs499.js +2 -0
- package/dist/index.cjs499.js.map +1 -0
- package/dist/index.cjs50.js +1 -1
- package/dist/index.cjs500.js +2 -0
- package/dist/index.cjs500.js.map +1 -0
- package/dist/index.cjs501.js +2 -0
- package/dist/index.cjs501.js.map +1 -0
- package/dist/index.cjs502.js +2 -0
- package/dist/index.cjs502.js.map +1 -0
- package/dist/index.cjs503.js +2 -0
- package/dist/index.cjs503.js.map +1 -0
- package/dist/index.cjs504.js +2 -0
- package/dist/index.cjs504.js.map +1 -0
- package/dist/index.cjs505.js +2 -0
- package/dist/index.cjs505.js.map +1 -0
- package/dist/index.cjs506.js +2 -0
- package/dist/index.cjs506.js.map +1 -0
- package/dist/index.cjs507.js +2 -0
- package/dist/index.cjs507.js.map +1 -0
- package/dist/index.cjs508.js +2 -0
- package/dist/index.cjs508.js.map +1 -0
- package/dist/index.cjs509.js +2 -0
- package/dist/index.cjs509.js.map +1 -0
- package/dist/index.cjs51.js +1 -1
- package/dist/index.cjs510.js +2 -0
- package/dist/index.cjs510.js.map +1 -0
- package/dist/index.cjs511.js +2 -0
- package/dist/index.cjs511.js.map +1 -0
- package/dist/index.cjs512.js +2 -0
- package/dist/index.cjs512.js.map +1 -0
- package/dist/index.cjs513.js +2 -0
- package/dist/index.cjs513.js.map +1 -0
- package/dist/index.cjs514.js +2 -0
- package/dist/index.cjs514.js.map +1 -0
- package/dist/index.cjs515.js +2 -0
- package/dist/index.cjs515.js.map +1 -0
- package/dist/index.cjs516.js +2 -0
- package/dist/index.cjs516.js.map +1 -0
- package/dist/index.cjs517.js +2 -0
- package/dist/index.cjs517.js.map +1 -0
- package/dist/index.cjs518.js +2 -0
- package/dist/index.cjs518.js.map +1 -0
- package/dist/index.cjs519.js +2 -0
- package/dist/index.cjs519.js.map +1 -0
- package/dist/index.cjs52.js +1 -1
- package/dist/index.cjs520.js +2 -0
- package/dist/index.cjs520.js.map +1 -0
- package/dist/index.cjs521.js +2 -0
- package/dist/index.cjs521.js.map +1 -0
- package/dist/index.cjs522.js +2 -0
- package/dist/index.cjs522.js.map +1 -0
- package/dist/index.cjs523.js +2 -0
- package/dist/index.cjs523.js.map +1 -0
- package/dist/index.cjs524.js +2 -0
- package/dist/index.cjs524.js.map +1 -0
- package/dist/index.cjs525.js +2 -0
- package/dist/index.cjs525.js.map +1 -0
- package/dist/index.cjs526.js +2 -0
- package/dist/index.cjs526.js.map +1 -0
- package/dist/index.cjs527.js +2 -0
- package/dist/index.cjs527.js.map +1 -0
- package/dist/index.cjs528.js +2 -0
- package/dist/index.cjs528.js.map +1 -0
- package/dist/index.cjs529.js +2 -0
- package/dist/index.cjs529.js.map +1 -0
- package/dist/index.cjs530.js +2 -0
- package/dist/index.cjs530.js.map +1 -0
- package/dist/index.cjs531.js +2 -0
- package/dist/index.cjs531.js.map +1 -0
- package/dist/index.cjs532.js +2 -0
- package/dist/index.cjs532.js.map +1 -0
- package/dist/index.cjs533.js +2 -0
- package/dist/index.cjs533.js.map +1 -0
- package/dist/index.cjs534.js +2 -0
- package/dist/index.cjs534.js.map +1 -0
- package/dist/index.cjs535.js +2 -0
- package/dist/index.cjs535.js.map +1 -0
- package/dist/index.cjs536.js +2 -0
- package/dist/index.cjs536.js.map +1 -0
- package/dist/index.cjs537.js +2 -0
- package/dist/index.cjs537.js.map +1 -0
- package/dist/index.cjs538.js +2 -0
- package/dist/index.cjs538.js.map +1 -0
- package/dist/index.cjs539.js +2 -0
- package/dist/index.cjs539.js.map +1 -0
- package/dist/index.cjs540.js +2 -0
- package/dist/index.cjs540.js.map +1 -0
- package/dist/index.cjs541.js +2 -0
- package/dist/index.cjs541.js.map +1 -0
- package/dist/index.cjs542.js +2 -0
- package/dist/index.cjs542.js.map +1 -0
- package/dist/index.cjs543.js +2 -0
- package/dist/index.cjs543.js.map +1 -0
- package/dist/index.cjs544.js +2 -0
- package/dist/index.cjs544.js.map +1 -0
- package/dist/index.cjs545.js +2 -0
- package/dist/index.cjs545.js.map +1 -0
- package/dist/index.cjs546.js +2 -0
- package/dist/index.cjs546.js.map +1 -0
- package/dist/index.cjs547.js +2 -0
- package/dist/index.cjs547.js.map +1 -0
- package/dist/index.cjs548.js +2 -0
- package/dist/index.cjs548.js.map +1 -0
- package/dist/index.cjs549.js +2 -0
- package/dist/index.cjs549.js.map +1 -0
- package/dist/index.cjs550.js +2 -0
- package/dist/index.cjs550.js.map +1 -0
- package/dist/index.cjs551.js +2 -0
- package/dist/index.cjs551.js.map +1 -0
- package/dist/index.cjs552.js +2 -0
- package/dist/index.cjs552.js.map +1 -0
- package/dist/index.cjs553.js +2 -0
- package/dist/index.cjs553.js.map +1 -0
- package/dist/index.cjs554.js +2 -0
- package/dist/index.cjs554.js.map +1 -0
- package/dist/index.cjs555.js +2 -0
- package/dist/index.cjs555.js.map +1 -0
- package/dist/index.cjs556.js +2 -0
- package/dist/index.cjs556.js.map +1 -0
- package/dist/index.cjs557.js +2 -0
- package/dist/index.cjs557.js.map +1 -0
- package/dist/index.cjs558.js +2 -0
- package/dist/index.cjs558.js.map +1 -0
- package/dist/index.cjs559.js +2 -0
- package/dist/index.cjs559.js.map +1 -0
- package/dist/index.cjs56.js +1 -1
- package/dist/index.cjs560.js +2 -0
- package/dist/index.cjs560.js.map +1 -0
- package/dist/index.cjs561.js +2 -0
- package/dist/index.cjs561.js.map +1 -0
- package/dist/index.cjs562.js +2 -0
- package/dist/index.cjs562.js.map +1 -0
- package/dist/index.cjs563.js +2 -0
- package/dist/index.cjs563.js.map +1 -0
- package/dist/index.cjs564.js +9 -0
- package/dist/index.cjs564.js.map +1 -0
- package/dist/index.cjs565.js +2 -0
- package/dist/index.cjs565.js.map +1 -0
- package/dist/index.cjs566.js +2 -0
- package/dist/index.cjs566.js.map +1 -0
- package/dist/index.cjs567.js +2 -0
- package/dist/index.cjs567.js.map +1 -0
- package/dist/index.cjs568.js +2 -0
- package/dist/index.cjs568.js.map +1 -0
- package/dist/index.cjs569.js +2 -0
- package/dist/index.cjs569.js.map +1 -0
- package/dist/index.cjs57.js +1 -1
- package/dist/index.cjs570.js +2 -0
- package/dist/index.cjs570.js.map +1 -0
- package/dist/index.cjs571.js +2 -0
- package/dist/index.cjs571.js.map +1 -0
- package/dist/index.cjs572.js +2 -0
- package/dist/index.cjs572.js.map +1 -0
- package/dist/index.cjs573.js +2 -0
- package/dist/index.cjs573.js.map +1 -0
- package/dist/index.cjs574.js +2 -0
- package/dist/index.cjs574.js.map +1 -0
- package/dist/index.cjs575.js +2 -0
- package/dist/index.cjs575.js.map +1 -0
- package/dist/index.cjs576.js +2 -0
- package/dist/index.cjs576.js.map +1 -0
- package/dist/index.cjs577.js +2 -0
- package/dist/index.cjs577.js.map +1 -0
- package/dist/index.cjs578.js +2 -0
- package/dist/index.cjs578.js.map +1 -0
- package/dist/index.cjs579.js +2 -0
- package/dist/index.cjs579.js.map +1 -0
- package/dist/index.cjs58.js +1 -1
- package/dist/index.cjs580.js +2 -0
- package/dist/index.cjs580.js.map +1 -0
- package/dist/index.cjs581.js +2 -0
- package/dist/index.cjs581.js.map +1 -0
- package/dist/index.cjs582.js +2 -0
- package/dist/index.cjs582.js.map +1 -0
- package/dist/index.cjs583.js +2 -0
- package/dist/index.cjs583.js.map +1 -0
- package/dist/index.cjs584.js +2 -0
- package/dist/index.cjs584.js.map +1 -0
- package/dist/index.cjs585.js +2 -0
- package/dist/index.cjs585.js.map +1 -0
- package/dist/index.cjs586.js +2 -0
- package/dist/index.cjs586.js.map +1 -0
- package/dist/index.cjs587.js +2 -0
- package/dist/index.cjs587.js.map +1 -0
- package/dist/index.cjs588.js +2 -0
- package/dist/index.cjs588.js.map +1 -0
- package/dist/index.cjs589.js +2 -0
- package/dist/index.cjs589.js.map +1 -0
- package/dist/index.cjs590.js +2 -0
- package/dist/index.cjs590.js.map +1 -0
- package/dist/index.cjs591.js +2 -0
- package/dist/index.cjs591.js.map +1 -0
- package/dist/index.cjs592.js +2 -0
- package/dist/index.cjs592.js.map +1 -0
- package/dist/index.cjs593.js +2 -0
- package/dist/index.cjs593.js.map +1 -0
- package/dist/index.cjs594.js +2 -0
- package/dist/index.cjs594.js.map +1 -0
- package/dist/index.cjs595.js +2 -0
- package/dist/index.cjs595.js.map +1 -0
- package/dist/index.cjs596.js +2 -0
- package/dist/index.cjs596.js.map +1 -0
- package/dist/index.cjs597.js +2 -0
- package/dist/index.cjs597.js.map +1 -0
- package/dist/index.cjs598.js +2 -0
- package/dist/index.cjs598.js.map +1 -0
- package/dist/index.cjs599.js +2 -0
- package/dist/index.cjs599.js.map +1 -0
- package/dist/index.cjs60.js +1 -1
- package/dist/index.cjs600.js +2 -0
- package/dist/index.cjs600.js.map +1 -0
- package/dist/index.cjs601.js +2 -0
- package/dist/index.cjs601.js.map +1 -0
- package/dist/index.cjs602.js +2 -0
- package/dist/index.cjs602.js.map +1 -0
- package/dist/index.cjs603.js +2 -0
- package/dist/index.cjs603.js.map +1 -0
- package/dist/index.cjs604.js +2 -0
- package/dist/index.cjs604.js.map +1 -0
- package/dist/index.cjs605.js +2 -0
- package/dist/index.cjs605.js.map +1 -0
- package/dist/index.cjs606.js +2 -0
- package/dist/index.cjs606.js.map +1 -0
- package/dist/index.cjs607.js +2 -0
- package/dist/index.cjs607.js.map +1 -0
- package/dist/index.cjs608.js +2 -0
- package/dist/index.cjs608.js.map +1 -0
- package/dist/index.cjs609.js +2 -0
- package/dist/index.cjs609.js.map +1 -0
- package/dist/index.cjs61.js +1 -1
- package/dist/index.cjs610.js +2 -0
- package/dist/index.cjs610.js.map +1 -0
- package/dist/index.cjs611.js +2 -0
- package/dist/index.cjs611.js.map +1 -0
- package/dist/index.cjs612.js +2 -0
- package/dist/index.cjs612.js.map +1 -0
- package/dist/index.cjs613.js +2 -0
- package/dist/index.cjs613.js.map +1 -0
- package/dist/index.cjs614.js +2 -0
- package/dist/index.cjs614.js.map +1 -0
- package/dist/index.cjs615.js +2 -0
- package/dist/index.cjs615.js.map +1 -0
- package/dist/index.cjs616.js +4 -0
- package/dist/index.cjs616.js.map +1 -0
- package/dist/index.cjs617.js +2 -0
- package/dist/index.cjs617.js.map +1 -0
- package/dist/index.cjs618.js +2 -0
- package/dist/index.cjs618.js.map +1 -0
- package/dist/index.cjs619.js +2 -0
- package/dist/index.cjs619.js.map +1 -0
- package/dist/index.cjs620.js +2 -0
- package/dist/index.cjs620.js.map +1 -0
- package/dist/index.cjs621.js +2 -0
- package/dist/index.cjs621.js.map +1 -0
- package/dist/index.cjs622.js +61 -0
- package/dist/index.cjs622.js.map +1 -0
- package/dist/index.cjs623.js +2 -0
- package/dist/index.cjs623.js.map +1 -0
- package/dist/index.cjs624.js +2 -0
- package/dist/index.cjs624.js.map +1 -0
- package/dist/index.cjs625.js +2 -0
- package/dist/index.cjs625.js.map +1 -0
- package/dist/index.cjs626.js +2 -0
- package/dist/index.cjs626.js.map +1 -0
- package/dist/index.cjs627.js +2 -0
- package/dist/index.cjs627.js.map +1 -0
- package/dist/index.cjs628.js +2 -0
- package/dist/index.cjs628.js.map +1 -0
- package/dist/index.cjs629.js +2 -0
- package/dist/index.cjs629.js.map +1 -0
- package/dist/index.cjs63.js +1 -1
- package/dist/index.cjs630.js +4 -0
- package/dist/index.cjs630.js.map +1 -0
- package/dist/index.cjs631.js +2 -0
- package/dist/index.cjs631.js.map +1 -0
- package/dist/index.cjs632.js +2 -0
- package/dist/index.cjs632.js.map +1 -0
- package/dist/index.cjs67.js +1 -1
- package/dist/index.cjs67.js.map +1 -1
- package/dist/index.cjs68.js +1 -440
- package/dist/index.cjs68.js.map +1 -1
- package/dist/index.cjs69.js +1 -1
- package/dist/index.cjs69.js.map +1 -1
- package/dist/index.cjs70.js.map +1 -1
- package/dist/index.cjs71.js.map +1 -1
- package/dist/index.cjs72.js.map +1 -1
- package/dist/index.cjs73.js +1 -1
- package/dist/index.cjs73.js.map +1 -1
- package/dist/index.cjs74.js +1 -1
- package/dist/index.cjs74.js.map +1 -1
- package/dist/index.cjs75.js +1 -1
- package/dist/index.cjs75.js.map +1 -1
- package/dist/index.cjs76.js +1 -1
- package/dist/index.cjs76.js.map +1 -1
- package/dist/index.cjs77.js.map +1 -1
- package/dist/index.cjs78.js.map +1 -1
- package/dist/index.cjs93.js +1 -1
- package/dist/index.es100.js +1 -1
- package/dist/index.es101.js +1 -1
- package/dist/index.es102.js +1 -1
- package/dist/index.es103.js +1 -1
- package/dist/index.es104.js +1 -1
- package/dist/index.es105.js +1 -1
- package/dist/index.es106.js +1 -1
- package/dist/index.es107.js +1 -1
- package/dist/index.es108.js +1 -1
- package/dist/index.es111.js +1 -1
- package/dist/index.es112.js +1 -1
- package/dist/index.es114.js +3 -3
- package/dist/index.es115.js +1 -1
- package/dist/index.es116.js +2 -2
- package/dist/index.es117.js +1 -1
- package/dist/index.es12.js +6 -7
- package/dist/index.es12.js.map +1 -1
- package/dist/index.es122.js +1 -1
- package/dist/index.es123.js +1 -1
- package/dist/index.es124.js +1 -1
- package/dist/index.es125.js +1 -1
- package/dist/index.es128.js +2 -2
- package/dist/index.es129.js +2 -2
- package/dist/index.es13.js +8 -8
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es130.js +1 -1
- package/dist/index.es134.js +2 -2
- package/dist/index.es137.js +1 -1
- package/dist/index.es141.js +1 -1
- package/dist/index.es144.js +1 -1
- package/dist/index.es152.js +1 -1
- package/dist/index.es153.js +1 -1
- package/dist/index.es154.js +1 -1
- package/dist/index.es155.js +2 -2
- package/dist/index.es156.js +1 -1
- package/dist/index.es157.js +1 -1
- package/dist/index.es158.js +1 -1
- package/dist/index.es16.js +4 -4
- package/dist/index.es160.js +2 -2
- package/dist/index.es161.js +2 -2
- package/dist/index.es162.js +1 -1
- package/dist/index.es163.js +1 -1
- package/dist/index.es164.js +1 -1
- package/dist/index.es165.js +1 -1
- package/dist/index.es166.js +2 -2
- package/dist/index.es167.js +2 -2
- package/dist/index.es168.js +1 -1
- package/dist/index.es17.js +3 -3
- package/dist/index.es171.js +2 -2
- package/dist/index.es172.js +2 -2
- package/dist/index.es174.js +2 -2
- package/dist/index.es175.js +1 -1
- package/dist/index.es176.js +2 -2
- package/dist/index.es177.js +1 -1
- package/dist/index.es178.js +2 -2
- package/dist/index.es179.js +1 -1
- package/dist/index.es18.js +3 -3
- package/dist/index.es180.js +1 -1
- package/dist/index.es181.js +1 -1
- package/dist/index.es187.js +1 -1
- package/dist/index.es188.js +2 -2
- package/dist/index.es189.js +1 -1
- package/dist/index.es19.js +1 -1
- package/dist/index.es190.js +1 -1
- package/dist/index.es191.js +1 -1
- package/dist/index.es194.js +14 -1
- package/dist/index.es194.js.map +1 -1
- package/dist/index.es195.js +199 -239
- package/dist/index.es195.js.map +1 -1
- package/dist/index.es196.js +8 -42
- package/dist/index.es196.js.map +1 -1
- package/dist/index.es197.js +7 -3
- package/dist/index.es197.js.map +1 -1
- package/dist/index.es198.js +5 -11
- package/dist/index.es198.js.map +1 -1
- package/dist/index.es199.js +3 -13
- package/dist/index.es199.js.map +1 -1
- package/dist/index.es20.js +1 -1
- package/dist/index.es200.js +3 -33
- package/dist/index.es200.js.map +1 -1
- package/dist/index.es201.js +34 -12
- package/dist/index.es201.js.map +1 -1
- package/dist/index.es202.js +3 -7
- package/dist/index.es202.js.map +1 -1
- package/dist/index.es203.js +22 -7
- package/dist/index.es203.js.map +1 -1
- package/dist/index.es204.js +2 -7
- package/dist/index.es204.js.map +1 -1
- package/dist/index.es205.js +3 -6
- package/dist/index.es205.js.map +1 -1
- package/dist/index.es206.js +2 -5
- package/dist/index.es206.js.map +1 -1
- package/dist/index.es207.js +31 -3
- package/dist/index.es207.js.map +1 -1
- package/dist/index.es208.js +13 -9
- package/dist/index.es208.js.map +1 -1
- package/dist/index.es209.js +13 -18
- package/dist/index.es209.js.map +1 -1
- package/dist/index.es21.js +1 -1
- package/dist/index.es210.js +8 -20
- package/dist/index.es210.js.map +1 -1
- package/dist/index.es211.js +61 -12
- package/dist/index.es211.js.map +1 -1
- package/dist/index.es212.js +61 -13
- package/dist/index.es212.js.map +1 -1
- package/dist/index.es213.js +37 -6
- package/dist/index.es213.js.map +1 -1
- package/dist/index.es214.js +476 -7
- package/dist/index.es214.js.map +1 -1
- package/dist/index.es215.js +164 -6
- package/dist/index.es215.js.map +1 -1
- package/dist/index.es216.js +70 -20
- package/dist/index.es216.js.map +1 -1
- package/dist/index.es217.js +48 -8
- package/dist/index.es217.js.map +1 -1
- package/dist/index.es218.js +380 -9
- package/dist/index.es218.js.map +1 -1
- package/dist/index.es219.js +19 -6
- package/dist/index.es219.js.map +1 -1
- package/dist/index.es22.js +1 -1
- package/dist/index.es220.js +124 -11
- package/dist/index.es220.js.map +1 -1
- package/dist/index.es221.js +355 -8
- package/dist/index.es221.js.map +1 -1
- package/dist/index.es222.js +218 -21
- package/dist/index.es222.js.map +1 -1
- package/dist/index.es223.js +23 -11
- package/dist/index.es223.js.map +1 -1
- package/dist/index.es224.js +58 -17
- package/dist/index.es224.js.map +1 -1
- package/dist/index.es225.js +106 -4
- package/dist/index.es225.js.map +1 -1
- package/dist/index.es226.js +29 -18
- package/dist/index.es226.js.map +1 -1
- package/dist/index.es227.js +29 -12
- package/dist/index.es227.js.map +1 -1
- package/dist/index.es228.js +96 -3
- package/dist/index.es228.js.map +1 -1
- package/dist/index.es229.js +35 -5
- package/dist/index.es229.js.map +1 -1
- package/dist/index.es23.js +1 -1
- package/dist/index.es230.js +18 -148
- package/dist/index.es230.js.map +1 -1
- package/dist/index.es231.js +52 -6
- package/dist/index.es231.js.map +1 -1
- package/dist/index.es232.js +7 -5
- package/dist/index.es232.js.map +1 -1
- package/dist/index.es233.js +529 -3
- package/dist/index.es233.js.map +1 -1
- package/dist/index.es234.js +28 -3
- package/dist/index.es234.js.map +1 -1
- package/dist/index.es235.js +6 -34
- package/dist/index.es235.js.map +1 -1
- package/dist/index.es236.js +7 -3
- package/dist/index.es236.js.map +1 -1
- package/dist/index.es237.js +4 -23
- package/dist/index.es237.js.map +1 -1
- package/dist/index.es238.js +5 -2
- package/dist/index.es238.js.map +1 -1
- package/dist/index.es239.js +5 -3
- package/dist/index.es239.js.map +1 -1
- package/dist/index.es24.js +1 -1
- package/dist/index.es240.js +11 -2
- package/dist/index.es240.js.map +1 -1
- package/dist/index.es241.js +17 -29
- package/dist/index.es241.js.map +1 -1
- package/dist/index.es242.js +21 -13
- package/dist/index.es242.js.map +1 -1
- package/dist/index.es243.js +12 -13
- package/dist/index.es243.js.map +1 -1
- package/dist/index.es244.js +14 -8
- package/dist/index.es244.js.map +1 -1
- package/dist/index.es245.js +5 -20
- package/dist/index.es245.js.map +1 -1
- package/dist/index.es246.js +7 -22
- package/dist/index.es246.js.map +1 -1
- package/dist/index.es247.js +6 -7
- package/dist/index.es247.js.map +1 -1
- package/dist/index.es248.js +21 -2
- package/dist/index.es248.js.map +1 -1
- package/dist/index.es249.js +8 -4
- package/dist/index.es249.js.map +1 -1
- package/dist/index.es25.js +1 -1
- package/dist/index.es250.js +9 -7507
- package/dist/index.es250.js.map +1 -1
- package/dist/index.es251.js +4 -2
- package/dist/index.es251.js.map +1 -1
- package/dist/index.es252.js +10 -24
- package/dist/index.es252.js.map +1 -1
- package/dist/index.es253.js +7 -16
- package/dist/index.es253.js.map +1 -1
- package/dist/index.es254.js +20 -30
- package/dist/index.es254.js.map +1 -1
- package/dist/index.es255.js +10 -21
- package/dist/index.es255.js.map +1 -1
- package/dist/index.es256.js +16 -73
- package/dist/index.es256.js.map +1 -1
- package/dist/index.es257.js +4 -21
- package/dist/index.es257.js.map +1 -1
- package/dist/index.es258.js +16 -39
- package/dist/index.es258.js.map +1 -1
- package/dist/index.es259.js +11 -49
- package/dist/index.es259.js.map +1 -1
- package/dist/index.es26.js +2 -2
- package/dist/index.es260.js +3 -7
- package/dist/index.es260.js.map +1 -1
- package/dist/index.es261.js +4 -20
- package/dist/index.es261.js.map +1 -1
- package/dist/index.es262.js +242 -65
- package/dist/index.es262.js.map +1 -1
- package/dist/index.es263.js +40 -40
- package/dist/index.es263.js.map +1 -1
- package/dist/index.es264.js +3 -64
- package/dist/index.es264.js.map +1 -1
- package/dist/index.es265.js +9 -7
- package/dist/index.es265.js.map +1 -1
- package/dist/index.es266.js +10 -3
- package/dist/index.es266.js.map +1 -1
- package/dist/index.es267.js +29 -11
- package/dist/index.es267.js.map +1 -1
- package/dist/index.es268.js +12 -58
- package/dist/index.es268.js.map +1 -1
- package/dist/index.es269.js +4 -49
- package/dist/index.es269.js.map +1 -1
- package/dist/index.es27.js +2 -2
- package/dist/index.es270.js +22 -2
- package/dist/index.es270.js.map +1 -1
- package/dist/index.es271.js +20 -15
- package/dist/index.es271.js.map +1 -1
- package/dist/index.es272.js +7506 -4
- package/dist/index.es272.js.map +1 -1
- package/dist/index.es273.js +2 -70
- package/dist/index.es273.js.map +1 -1
- package/dist/index.es274.js +3 -4
- package/dist/index.es274.js.map +1 -1
- package/dist/index.es275.js +268 -21
- package/dist/index.es275.js.map +1 -1
- package/dist/index.es276.js +11 -0
- package/dist/index.es276.js.map +1 -0
- package/dist/index.es277.js +9 -0
- package/dist/index.es277.js.map +1 -0
- package/dist/index.es278.js +24 -0
- package/dist/index.es278.js.map +1 -0
- package/dist/index.es279.js +26 -0
- package/dist/index.es279.js.map +1 -0
- package/dist/index.es280.js +28 -0
- package/dist/index.es280.js.map +1 -0
- package/dist/index.es281.js +20 -0
- package/dist/index.es281.js.map +1 -0
- package/dist/index.es282.js +34 -0
- package/dist/index.es282.js.map +1 -0
- package/dist/index.es283.js +25 -0
- package/dist/index.es283.js.map +1 -0
- package/dist/index.es284.js +78 -0
- package/dist/index.es284.js.map +1 -0
- package/dist/index.es285.js +24 -0
- package/dist/index.es285.js.map +1 -0
- package/dist/index.es286.js +44 -0
- package/dist/index.es286.js.map +1 -0
- package/dist/index.es287.js +53 -0
- package/dist/index.es287.js.map +1 -0
- package/dist/index.es288.js +11 -0
- package/dist/index.es288.js.map +1 -0
- package/dist/index.es289.js +24 -0
- package/dist/index.es289.js.map +1 -0
- package/dist/index.es290.js +69 -0
- package/dist/index.es290.js.map +1 -0
- package/dist/index.es291.js +46 -0
- package/dist/index.es291.js.map +1 -0
- package/dist/index.es292.js +67 -0
- package/dist/index.es292.js.map +1 -0
- package/dist/index.es293.js +12 -0
- package/dist/index.es293.js.map +1 -0
- package/dist/index.es294.js +7 -0
- package/dist/index.es294.js.map +1 -0
- package/dist/index.es295.js +16 -0
- package/dist/index.es295.js.map +1 -0
- package/dist/index.es296.js +63 -0
- package/dist/index.es296.js.map +1 -0
- package/dist/index.es297.js +53 -0
- package/dist/index.es297.js.map +1 -0
- package/dist/index.es298.js +418 -0
- package/dist/index.es298.js.map +1 -0
- package/dist/index.es299.js +80 -0
- package/dist/index.es299.js.map +1 -0
- package/dist/index.es300.js +246 -0
- package/dist/index.es300.js.map +1 -0
- package/dist/index.es301.js +33 -0
- package/dist/index.es301.js.map +1 -0
- package/dist/index.es302.js +157 -0
- package/dist/index.es302.js.map +1 -0
- package/dist/index.es303.js +21 -0
- package/dist/index.es303.js.map +1 -0
- package/dist/index.es304.js +17 -0
- package/dist/index.es304.js.map +1 -0
- package/dist/index.es305.js +565 -0
- package/dist/index.es305.js.map +1 -0
- package/dist/index.es306.js +354 -0
- package/dist/index.es306.js.map +1 -0
- package/dist/index.es307.js +67 -0
- package/dist/index.es307.js.map +1 -0
- package/dist/index.es308.js +50 -0
- package/dist/index.es308.js.map +1 -0
- package/dist/index.es309.js +215 -0
- package/dist/index.es309.js.map +1 -0
- package/dist/index.es310.js +65 -0
- package/dist/index.es310.js.map +1 -0
- package/dist/index.es311.js +63 -0
- package/dist/index.es311.js.map +1 -0
- package/dist/index.es312.js +49 -0
- package/dist/index.es312.js.map +1 -0
- package/dist/index.es313.js +55 -0
- package/dist/index.es313.js.map +1 -0
- package/dist/index.es314.js +329 -0
- package/dist/index.es314.js.map +1 -0
- package/dist/index.es315.js +314 -0
- package/dist/index.es315.js.map +1 -0
- package/dist/index.es316.js +259 -0
- package/dist/index.es316.js.map +1 -0
- package/dist/index.es317.js +60 -0
- package/dist/index.es317.js.map +1 -0
- package/dist/index.es318.js +218 -0
- package/dist/index.es318.js.map +1 -0
- package/dist/index.es319.js +204 -0
- package/dist/index.es319.js.map +1 -0
- package/dist/index.es320.js +20 -0
- package/dist/index.es320.js.map +1 -0
- package/dist/index.es321.js +30 -0
- package/dist/index.es321.js.map +1 -0
- package/dist/index.es322.js +204 -0
- package/dist/index.es322.js.map +1 -0
- package/dist/index.es323.js +9 -0
- package/dist/index.es323.js.map +1 -0
- package/dist/index.es324.js +89 -0
- package/dist/index.es324.js.map +1 -0
- package/dist/index.es325.js +62 -0
- package/dist/index.es325.js.map +1 -0
- package/dist/index.es326.js +17 -0
- package/dist/index.es326.js.map +1 -0
- package/dist/index.es327.js +107 -0
- package/dist/index.es327.js.map +1 -0
- package/dist/index.es328.js +19 -0
- package/dist/index.es328.js.map +1 -0
- package/dist/index.es329.js +30 -0
- package/dist/index.es329.js.map +1 -0
- package/dist/index.es330.js +132 -0
- package/dist/index.es330.js.map +1 -0
- package/dist/index.es331.js +20 -0
- package/dist/index.es331.js.map +1 -0
- package/dist/index.es332.js +8 -0
- package/dist/index.es332.js.map +1 -0
- package/dist/index.es333.js +69 -0
- package/dist/index.es333.js.map +1 -0
- package/dist/index.es334.js +164 -0
- package/dist/index.es334.js.map +1 -0
- package/dist/index.es335.js +142 -0
- package/dist/index.es335.js.map +1 -0
- package/dist/index.es336.js +31 -0
- package/dist/index.es336.js.map +1 -0
- package/dist/index.es337.js +6 -0
- package/dist/index.es337.js.map +1 -0
- package/dist/index.es338.js +8 -0
- package/dist/index.es338.js.map +1 -0
- package/dist/index.es339.js +73 -0
- package/dist/index.es339.js.map +1 -0
- package/dist/index.es340.js +19 -0
- package/dist/index.es340.js.map +1 -0
- package/dist/index.es341.js +65 -0
- package/dist/index.es341.js.map +1 -0
- package/dist/index.es342.js +47 -0
- package/dist/index.es342.js.map +1 -0
- package/dist/index.es343.js +25 -0
- package/dist/index.es343.js.map +1 -0
- package/dist/index.es344.js +11 -0
- package/dist/index.es344.js.map +1 -0
- package/dist/index.es345.js +40 -0
- package/dist/index.es345.js.map +1 -0
- package/dist/index.es346.js +132 -0
- package/dist/index.es346.js.map +1 -0
- package/dist/index.es347.js +48 -0
- package/dist/index.es347.js.map +1 -0
- package/dist/index.es348.js +223 -0
- package/dist/index.es348.js.map +1 -0
- package/dist/index.es349.js +40 -0
- package/dist/index.es349.js.map +1 -0
- package/dist/index.es350.js +286 -0
- package/dist/index.es350.js.map +1 -0
- package/dist/index.es351.js +63 -0
- package/dist/index.es351.js.map +1 -0
- package/dist/index.es352.js +54 -0
- package/dist/index.es352.js.map +1 -0
- package/dist/index.es353.js +251 -0
- package/dist/index.es353.js.map +1 -0
- package/dist/index.es354.js +30 -0
- package/dist/index.es354.js.map +1 -0
- package/dist/index.es355.js +7 -0
- package/dist/index.es355.js.map +1 -0
- package/dist/index.es356.js +7 -0
- package/dist/index.es356.js.map +1 -0
- package/dist/index.es357.js +28 -0
- package/dist/index.es357.js.map +1 -0
- package/dist/index.es358.js +261 -0
- package/dist/index.es358.js.map +1 -0
- package/dist/index.es359.js +108 -0
- package/dist/index.es359.js.map +1 -0
- package/dist/index.es360.js +206 -0
- package/dist/index.es360.js.map +1 -0
- package/dist/index.es361.js +45 -0
- package/dist/index.es361.js.map +1 -0
- package/dist/index.es362.js +18 -0
- package/dist/index.es362.js.map +1 -0
- package/dist/index.es363.js +11 -0
- package/dist/index.es363.js.map +1 -0
- package/dist/index.es364.js +64 -0
- package/dist/index.es364.js.map +1 -0
- package/dist/index.es365.js +50 -0
- package/dist/index.es365.js.map +1 -0
- package/dist/index.es366.js +45 -0
- package/dist/index.es366.js.map +1 -0
- package/dist/index.es367.js +92 -0
- package/dist/index.es367.js.map +1 -0
- package/dist/index.es368.js +89 -0
- package/dist/index.es368.js.map +1 -0
- package/dist/index.es369.js +57 -0
- package/dist/index.es369.js.map +1 -0
- package/dist/index.es370.js +61 -0
- package/dist/index.es370.js.map +1 -0
- package/dist/index.es371.js +58 -0
- package/dist/index.es371.js.map +1 -0
- package/dist/index.es372.js +147 -0
- package/dist/index.es372.js.map +1 -0
- package/dist/index.es373.js +58 -0
- package/dist/index.es373.js.map +1 -0
- package/dist/index.es374.js +85 -0
- package/dist/index.es374.js.map +1 -0
- package/dist/index.es375.js +9 -0
- package/dist/index.es375.js.map +1 -0
- package/dist/index.es376.js +48 -0
- package/dist/index.es376.js.map +1 -0
- package/dist/index.es377.js +13 -0
- package/dist/index.es377.js.map +1 -0
- package/dist/index.es378.js +35 -0
- package/dist/index.es378.js.map +1 -0
- package/dist/index.es379.js +31 -0
- package/dist/index.es379.js.map +1 -0
- package/dist/index.es38.js +1 -1
- package/dist/index.es380.js +1360 -0
- package/dist/index.es380.js.map +1 -0
- package/dist/index.es381.js +9 -0
- package/dist/index.es381.js.map +1 -0
- package/dist/index.es382.js +12 -0
- package/dist/index.es382.js.map +1 -0
- package/dist/index.es383.js +10 -0
- package/dist/index.es383.js.map +1 -0
- package/dist/index.es384.js +120 -0
- package/dist/index.es384.js.map +1 -0
- package/dist/index.es385.js +105 -0
- package/dist/index.es385.js.map +1 -0
- package/dist/index.es386.js +23 -0
- package/dist/index.es386.js.map +1 -0
- package/dist/index.es387.js +95 -0
- package/dist/index.es387.js.map +1 -0
- package/dist/index.es388.js +68 -0
- package/dist/index.es388.js.map +1 -0
- package/dist/index.es389.js +16 -0
- package/dist/index.es389.js.map +1 -0
- package/dist/index.es39.js +1 -1
- package/dist/index.es390.js +61 -0
- package/dist/index.es390.js.map +1 -0
- package/dist/index.es391.js +55 -0
- package/dist/index.es391.js.map +1 -0
- package/dist/index.es392.js +23 -0
- package/dist/index.es392.js.map +1 -0
- package/dist/index.es393.js +34 -0
- package/dist/index.es393.js.map +1 -0
- package/dist/index.es394.js +47 -0
- package/dist/index.es394.js.map +1 -0
- package/dist/index.es395.js +35 -0
- package/dist/index.es395.js.map +1 -0
- package/dist/index.es396.js +59 -0
- package/dist/index.es396.js.map +1 -0
- package/dist/index.es397.js +62 -0
- package/dist/index.es397.js.map +1 -0
- package/dist/index.es398.js +32 -0
- package/dist/index.es398.js.map +1 -0
- package/dist/index.es399.js +53 -0
- package/dist/index.es399.js.map +1 -0
- package/dist/index.es40.js +2 -2
- package/dist/index.es400.js +128 -0
- package/dist/index.es400.js.map +1 -0
- package/dist/index.es401.js +44 -0
- package/dist/index.es401.js.map +1 -0
- package/dist/index.es402.js +29 -0
- package/dist/index.es402.js.map +1 -0
- package/dist/index.es403.js +37 -0
- package/dist/index.es403.js.map +1 -0
- package/dist/index.es404.js +28 -0
- package/dist/index.es404.js.map +1 -0
- package/dist/index.es405.js +69 -0
- package/dist/index.es405.js.map +1 -0
- package/dist/index.es406.js +49 -0
- package/dist/index.es406.js.map +1 -0
- package/dist/index.es407.js +27 -0
- package/dist/index.es407.js.map +1 -0
- package/dist/index.es408.js +48 -0
- package/dist/index.es408.js.map +1 -0
- package/dist/index.es409.js +19 -0
- package/dist/index.es409.js.map +1 -0
- package/dist/index.es410.js +38 -0
- package/dist/index.es410.js.map +1 -0
- package/dist/index.es411.js +49 -0
- package/dist/index.es411.js.map +1 -0
- package/dist/index.es412.js +35 -0
- package/dist/index.es412.js.map +1 -0
- package/dist/index.es413.js +37 -0
- package/dist/index.es413.js.map +1 -0
- package/dist/index.es414.js +29 -0
- package/dist/index.es414.js.map +1 -0
- package/dist/index.es415.js +68 -0
- package/dist/index.es415.js.map +1 -0
- package/dist/index.es416.js +105 -0
- package/dist/index.es416.js.map +1 -0
- package/dist/index.es417.js +27 -0
- package/dist/index.es417.js.map +1 -0
- package/dist/index.es418.js +111 -0
- package/dist/index.es418.js.map +1 -0
- package/dist/index.es419.js +50 -0
- package/dist/index.es419.js.map +1 -0
- package/dist/index.es42.js +2 -2
- package/dist/index.es420.js +36 -0
- package/dist/index.es420.js.map +1 -0
- package/dist/index.es421.js +56 -0
- package/dist/index.es421.js.map +1 -0
- package/dist/index.es422.js +174 -0
- package/dist/index.es422.js.map +1 -0
- package/dist/index.es423.js +61 -0
- package/dist/index.es423.js.map +1 -0
- package/dist/index.es424.js +62 -0
- package/dist/index.es424.js.map +1 -0
- package/dist/index.es425.js +87 -0
- package/dist/index.es425.js.map +1 -0
- package/dist/index.es426.js +26 -0
- package/dist/index.es426.js.map +1 -0
- package/dist/index.es427.js +56 -0
- package/dist/index.es427.js.map +1 -0
- package/dist/index.es428.js +55 -0
- package/dist/index.es428.js.map +1 -0
- package/dist/index.es429.js +8 -0
- package/dist/index.es429.js.map +1 -0
- package/dist/index.es43.js +2 -2
- package/dist/index.es430.js +8 -0
- package/dist/index.es430.js.map +1 -0
- package/dist/index.es431.js +23 -0
- package/dist/index.es431.js.map +1 -0
- package/dist/index.es432.js +7 -0
- package/dist/index.es432.js.map +1 -0
- package/dist/index.es433.js +11 -0
- package/dist/index.es433.js.map +1 -0
- package/dist/index.es434.js +10 -0
- package/dist/index.es434.js.map +1 -0
- package/dist/index.es435.js +7 -0
- package/dist/index.es435.js.map +1 -0
- package/dist/index.es436.js +5 -0
- package/dist/index.es436.js.map +1 -0
- package/dist/index.es437.js +9 -0
- package/dist/index.es437.js.map +1 -0
- package/dist/index.es438.js +13 -0
- package/dist/index.es438.js.map +1 -0
- package/dist/index.es439.js +8 -0
- package/dist/index.es439.js.map +1 -0
- package/dist/index.es44.js +2 -2
- package/dist/index.es440.js +7 -0
- package/dist/index.es440.js.map +1 -0
- package/dist/index.es441.js +6 -0
- package/dist/index.es441.js.map +1 -0
- package/dist/index.es442.js +7 -0
- package/dist/index.es442.js.map +1 -0
- package/dist/index.es443.js +9 -0
- package/dist/index.es443.js.map +1 -0
- package/dist/index.es444.js +11 -0
- package/dist/index.es444.js.map +1 -0
- package/dist/index.es445.js +8 -0
- package/dist/index.es445.js.map +1 -0
- package/dist/index.es446.js +10 -0
- package/dist/index.es446.js.map +1 -0
- package/dist/index.es447.js +9 -0
- package/dist/index.es447.js.map +1 -0
- package/dist/index.es448.js +12 -0
- package/dist/index.es448.js.map +1 -0
- package/dist/index.es449.js +8 -0
- package/dist/index.es449.js.map +1 -0
- package/dist/index.es450.js +10 -0
- package/dist/index.es450.js.map +1 -0
- package/dist/index.es451.js +10 -0
- package/dist/index.es451.js.map +1 -0
- package/dist/index.es452.js +8 -0
- package/dist/index.es452.js.map +1 -0
- package/dist/index.es453.js +13 -0
- package/dist/index.es453.js.map +1 -0
- package/dist/index.es454.js +10 -0
- package/dist/index.es454.js.map +1 -0
- package/dist/index.es455.js +21 -0
- package/dist/index.es455.js.map +1 -0
- package/dist/index.es456.js +15 -0
- package/dist/index.es456.js.map +1 -0
- package/dist/index.es457.js +7 -0
- package/dist/index.es457.js.map +1 -0
- package/dist/index.es458.js +9 -0
- package/dist/index.es458.js.map +1 -0
- package/dist/index.es459.js +19 -0
- package/dist/index.es459.js.map +1 -0
- package/dist/index.es46.js +1 -1
- package/dist/index.es460.js +11 -0
- package/dist/index.es460.js.map +1 -0
- package/dist/index.es461.js +44 -0
- package/dist/index.es461.js.map +1 -0
- package/dist/index.es462.js +80 -0
- package/dist/index.es462.js.map +1 -0
- package/dist/index.es463.js +108 -0
- package/dist/index.es463.js.map +1 -0
- package/dist/index.es464.js +34 -0
- package/dist/index.es464.js.map +1 -0
- package/dist/index.es465.js +25 -0
- package/dist/index.es465.js.map +1 -0
- package/dist/index.es466.js +14 -0
- package/dist/index.es466.js.map +1 -0
- package/dist/index.es467.js +721 -0
- package/dist/index.es467.js.map +1 -0
- package/dist/index.es468.js +26 -0
- package/dist/index.es468.js.map +1 -0
- package/dist/index.es469.js +24 -0
- package/dist/index.es469.js.map +1 -0
- package/dist/index.es47.js +2 -2
- package/dist/index.es470.js +178 -0
- package/dist/index.es470.js.map +1 -0
- package/dist/index.es471.js +24 -0
- package/dist/index.es471.js.map +1 -0
- package/dist/index.es472.js +241 -0
- package/dist/index.es472.js.map +1 -0
- package/dist/index.es473.js +11 -0
- package/dist/index.es473.js.map +1 -0
- package/dist/index.es474.js +13 -0
- package/dist/index.es474.js.map +1 -0
- package/dist/index.es475.js +9 -0
- package/dist/index.es475.js.map +1 -0
- package/dist/index.es476.js +18 -0
- package/dist/index.es476.js.map +1 -0
- package/dist/index.es477.js +26 -0
- package/dist/index.es477.js.map +1 -0
- package/dist/index.es478.js +12 -0
- package/dist/index.es478.js.map +1 -0
- package/dist/index.es479.js +8 -0
- package/dist/index.es479.js.map +1 -0
- package/dist/index.es48.js +2 -2
- package/dist/index.es480.js +118 -0
- package/dist/index.es480.js.map +1 -0
- package/dist/index.es481.js +90 -0
- package/dist/index.es481.js.map +1 -0
- package/dist/index.es482.js +78 -0
- package/dist/index.es482.js.map +1 -0
- package/dist/index.es483.js +13 -0
- package/dist/index.es483.js.map +1 -0
- package/dist/index.es484.js +158 -0
- package/dist/index.es484.js.map +1 -0
- package/dist/index.es485.js +160 -0
- package/dist/index.es485.js.map +1 -0
- package/dist/index.es486.js +18 -0
- package/dist/index.es486.js.map +1 -0
- package/dist/index.es487.js +19 -0
- package/dist/index.es487.js.map +1 -0
- package/dist/index.es488.js +9 -0
- package/dist/index.es488.js.map +1 -0
- package/dist/index.es489.js +10 -0
- package/dist/index.es489.js.map +1 -0
- package/dist/index.es490.js +10 -0
- package/dist/index.es490.js.map +1 -0
- package/dist/index.es491.js +29 -0
- package/dist/index.es491.js.map +1 -0
- package/dist/index.es492.js +9 -0
- package/dist/index.es492.js.map +1 -0
- package/dist/index.es493.js +43 -0
- package/dist/index.es493.js.map +1 -0
- package/dist/index.es494.js +10 -0
- package/dist/index.es494.js.map +1 -0
- package/dist/index.es495.js +11 -0
- package/dist/index.es495.js.map +1 -0
- package/dist/index.es496.js +9 -0
- package/dist/index.es496.js.map +1 -0
- package/dist/index.es497.js +9 -0
- package/dist/index.es497.js.map +1 -0
- package/dist/index.es498.js +6 -0
- package/dist/index.es498.js.map +1 -0
- package/dist/index.es499.js +42 -0
- package/dist/index.es499.js.map +1 -0
- package/dist/index.es50.js +1 -1
- package/dist/index.es500.js +6 -0
- package/dist/index.es500.js.map +1 -0
- package/dist/index.es501.js +16 -0
- package/dist/index.es501.js.map +1 -0
- package/dist/index.es502.js +8 -0
- package/dist/index.es502.js.map +1 -0
- package/dist/index.es503.js +12 -0
- package/dist/index.es503.js.map +1 -0
- package/dist/index.es504.js +5 -0
- package/dist/index.es504.js.map +1 -0
- package/dist/index.es505.js +33 -0
- package/dist/index.es505.js.map +1 -0
- package/dist/index.es506.js +19 -0
- package/dist/index.es506.js.map +1 -0
- package/dist/index.es507.js +8 -0
- package/dist/index.es507.js.map +1 -0
- package/dist/index.es508.js +6 -0
- package/dist/index.es508.js.map +1 -0
- package/dist/index.es509.js +9 -0
- package/dist/index.es509.js.map +1 -0
- package/dist/index.es51.js +1 -1
- package/dist/index.es510.js +9 -0
- package/dist/index.es510.js.map +1 -0
- package/dist/index.es511.js +9 -0
- package/dist/index.es511.js.map +1 -0
- package/dist/index.es512.js +7 -0
- package/dist/index.es512.js.map +1 -0
- package/dist/index.es513.js +7 -0
- package/dist/index.es513.js.map +1 -0
- package/dist/index.es514.js +7 -0
- package/dist/index.es514.js.map +1 -0
- package/dist/index.es515.js +7 -0
- package/dist/index.es515.js.map +1 -0
- package/dist/index.es516.js +7 -0
- package/dist/index.es516.js.map +1 -0
- package/dist/index.es517.js +18 -0
- package/dist/index.es517.js.map +1 -0
- package/dist/index.es518.js +11 -0
- package/dist/index.es518.js.map +1 -0
- package/dist/index.es519.js +7 -0
- package/dist/index.es519.js.map +1 -0
- package/dist/index.es52.js +1 -1
- package/dist/index.es520.js +15 -0
- package/dist/index.es520.js.map +1 -0
- package/dist/index.es521.js +9 -0
- package/dist/index.es521.js.map +1 -0
- package/dist/index.es522.js +7 -0
- package/dist/index.es522.js.map +1 -0
- package/dist/index.es523.js +8 -0
- package/dist/index.es523.js.map +1 -0
- package/dist/index.es524.js +9 -0
- package/dist/index.es524.js.map +1 -0
- package/dist/index.es525.js +10 -0
- package/dist/index.es525.js.map +1 -0
- package/dist/index.es526.js +9 -0
- package/dist/index.es526.js.map +1 -0
- package/dist/index.es527.js +9 -0
- package/dist/index.es527.js.map +1 -0
- package/dist/index.es528.js +11 -0
- package/dist/index.es528.js.map +1 -0
- package/dist/index.es529.js +14 -0
- package/dist/index.es529.js.map +1 -0
- package/dist/index.es530.js +28 -0
- package/dist/index.es530.js.map +1 -0
- package/dist/index.es531.js +8 -0
- package/dist/index.es531.js.map +1 -0
- package/dist/index.es532.js +9 -0
- package/dist/index.es532.js.map +1 -0
- package/dist/index.es533.js +11 -0
- package/dist/index.es533.js.map +1 -0
- package/dist/index.es534.js +7 -0
- package/dist/index.es534.js.map +1 -0
- package/dist/index.es535.js +7 -0
- package/dist/index.es535.js.map +1 -0
- package/dist/index.es536.js +7 -0
- package/dist/index.es536.js.map +1 -0
- package/dist/index.es537.js +7 -0
- package/dist/index.es537.js.map +1 -0
- package/dist/index.es538.js +7 -0
- package/dist/index.es538.js.map +1 -0
- package/dist/index.es539.js +8 -0
- package/dist/index.es539.js.map +1 -0
- package/dist/index.es540.js +9 -0
- package/dist/index.es540.js.map +1 -0
- package/dist/index.es541.js +12 -0
- package/dist/index.es541.js.map +1 -0
- package/dist/index.es542.js +8 -0
- package/dist/index.es542.js.map +1 -0
- package/dist/index.es543.js +9 -0
- package/dist/index.es543.js.map +1 -0
- package/dist/index.es544.js +8 -0
- package/dist/index.es544.js.map +1 -0
- package/dist/index.es545.js +7 -0
- package/dist/index.es545.js.map +1 -0
- package/dist/index.es546.js +14 -0
- package/dist/index.es546.js.map +1 -0
- package/dist/index.es547.js +34 -0
- package/dist/index.es547.js.map +1 -0
- package/dist/index.es548.js +83 -0
- package/dist/index.es548.js.map +1 -0
- package/dist/index.es549.js +20 -0
- package/dist/index.es549.js.map +1 -0
- package/dist/index.es550.js +50 -0
- package/dist/index.es550.js.map +1 -0
- package/dist/index.es551.js +227 -0
- package/dist/index.es551.js.map +1 -0
- package/dist/index.es552.js +21 -0
- package/dist/index.es552.js.map +1 -0
- package/dist/index.es553.js +14 -0
- package/dist/index.es553.js.map +1 -0
- package/dist/index.es554.js +9 -0
- package/dist/index.es554.js.map +1 -0
- package/dist/index.es555.js +8 -0
- package/dist/index.es555.js.map +1 -0
- package/dist/index.es556.js +8 -0
- package/dist/index.es556.js.map +1 -0
- package/dist/index.es557.js +9 -0
- package/dist/index.es557.js.map +1 -0
- package/dist/index.es558.js +10 -0
- package/dist/index.es558.js.map +1 -0
- package/dist/index.es559.js +10 -0
- package/dist/index.es559.js.map +1 -0
- package/dist/index.es56.js +2 -2
- package/dist/index.es560.js +10 -0
- package/dist/index.es560.js.map +1 -0
- package/dist/index.es561.js +10 -0
- package/dist/index.es561.js.map +1 -0
- package/dist/index.es562.js +17 -0
- package/dist/index.es562.js.map +1 -0
- package/dist/index.es563.js +12 -0
- package/dist/index.es563.js.map +1 -0
- package/dist/index.es564.js +3029 -0
- package/dist/index.es564.js.map +1 -0
- package/dist/index.es565.js +5 -0
- package/dist/index.es565.js.map +1 -0
- package/dist/index.es566.js +11 -0
- package/dist/index.es566.js.map +1 -0
- package/dist/index.es567.js +10 -0
- package/dist/index.es567.js.map +1 -0
- package/dist/index.es568.js +21 -0
- package/dist/index.es568.js.map +1 -0
- package/dist/index.es569.js +14 -0
- package/dist/index.es569.js.map +1 -0
- package/dist/index.es57.js +3 -3
- package/dist/index.es570.js +8 -0
- package/dist/index.es570.js.map +1 -0
- package/dist/index.es571.js +7 -0
- package/dist/index.es571.js.map +1 -0
- package/dist/index.es572.js +7 -0
- package/dist/index.es572.js.map +1 -0
- package/dist/index.es573.js +21 -0
- package/dist/index.es573.js.map +1 -0
- package/dist/index.es574.js +8 -0
- package/dist/index.es574.js.map +1 -0
- package/dist/index.es575.js +8 -0
- package/dist/index.es575.js.map +1 -0
- package/dist/index.es576.js +7 -0
- package/dist/index.es576.js.map +1 -0
- package/dist/index.es577.js +7 -0
- package/dist/index.es577.js.map +1 -0
- package/dist/index.es578.js +18 -0
- package/dist/index.es578.js.map +1 -0
- package/dist/index.es579.js +10 -0
- package/dist/index.es579.js.map +1 -0
- package/dist/index.es58.js +1 -1
- package/dist/index.es580.js +11 -0
- package/dist/index.es580.js.map +1 -0
- package/dist/index.es581.js +9 -0
- package/dist/index.es581.js.map +1 -0
- package/dist/index.es582.js +9 -0
- package/dist/index.es582.js.map +1 -0
- package/dist/index.es583.js +9 -0
- package/dist/index.es583.js.map +1 -0
- package/dist/index.es584.js +9 -0
- package/dist/index.es584.js.map +1 -0
- package/dist/index.es585.js +9 -0
- package/dist/index.es585.js.map +1 -0
- package/dist/index.es586.js +9 -0
- package/dist/index.es586.js.map +1 -0
- package/dist/index.es587.js +10 -0
- package/dist/index.es587.js.map +1 -0
- package/dist/index.es588.js +41 -0
- package/dist/index.es588.js.map +1 -0
- package/dist/index.es589.js +46 -0
- package/dist/index.es589.js.map +1 -0
- package/dist/index.es590.js +37 -0
- package/dist/index.es590.js.map +1 -0
- package/dist/index.es591.js +8 -0
- package/dist/index.es591.js.map +1 -0
- package/dist/index.es592.js +8 -0
- package/dist/index.es592.js.map +1 -0
- package/dist/index.es593.js +7 -0
- package/dist/index.es593.js.map +1 -0
- package/dist/index.es594.js +21 -0
- package/dist/index.es594.js.map +1 -0
- package/dist/index.es595.js +9 -0
- package/dist/index.es595.js.map +1 -0
- package/dist/index.es596.js +47 -0
- package/dist/index.es596.js.map +1 -0
- package/dist/index.es597.js +6 -0
- package/dist/index.es597.js.map +1 -0
- package/dist/index.es598.js +25 -0
- package/dist/index.es598.js.map +1 -0
- package/dist/index.es599.js +37 -0
- package/dist/index.es599.js.map +1 -0
- package/dist/index.es60.js +1 -1
- package/dist/index.es600.js +174 -0
- package/dist/index.es600.js.map +1 -0
- package/dist/index.es601.js +31 -0
- package/dist/index.es601.js.map +1 -0
- package/dist/index.es602.js +7 -0
- package/dist/index.es602.js.map +1 -0
- package/dist/index.es603.js +13 -0
- package/dist/index.es603.js.map +1 -0
- package/dist/index.es604.js +9 -0
- package/dist/index.es604.js.map +1 -0
- package/dist/index.es605.js +8 -0
- package/dist/index.es605.js.map +1 -0
- package/dist/index.es606.js +9 -0
- package/dist/index.es606.js.map +1 -0
- package/dist/index.es607.js +6 -0
- package/dist/index.es607.js.map +1 -0
- package/dist/index.es608.js +7 -0
- package/dist/index.es608.js.map +1 -0
- package/dist/index.es609.js +8 -0
- package/dist/index.es609.js.map +1 -0
- package/dist/index.es61.js +1 -1
- package/dist/index.es610.js +8 -0
- package/dist/index.es610.js.map +1 -0
- package/dist/index.es611.js +14 -0
- package/dist/index.es611.js.map +1 -0
- package/dist/index.es612.js +10 -0
- package/dist/index.es612.js.map +1 -0
- package/dist/index.es613.js +10 -0
- package/dist/index.es613.js.map +1 -0
- package/dist/index.es614.js +8 -0
- package/dist/index.es614.js.map +1 -0
- package/dist/index.es615.js +215 -0
- package/dist/index.es615.js.map +1 -0
- package/dist/index.es616.js +246 -0
- package/dist/index.es616.js.map +1 -0
- package/dist/index.es617.js +39 -0
- package/dist/index.es617.js.map +1 -0
- package/dist/index.es618.js +18 -0
- package/dist/index.es618.js.map +1 -0
- package/dist/index.es619.js +567 -0
- package/dist/index.es619.js.map +1 -0
- package/dist/index.es620.js +59 -0
- package/dist/index.es620.js.map +1 -0
- package/dist/index.es621.js +338 -0
- package/dist/index.es621.js.map +1 -0
- package/dist/index.es622.js +1103 -0
- package/dist/index.es622.js.map +1 -0
- package/dist/index.es623.js +41 -0
- package/dist/index.es623.js.map +1 -0
- package/dist/index.es624.js +39 -0
- package/dist/index.es624.js.map +1 -0
- package/dist/index.es625.js +51 -0
- package/dist/index.es625.js.map +1 -0
- package/dist/index.es626.js +65 -0
- package/dist/index.es626.js.map +1 -0
- package/dist/index.es627.js +11 -0
- package/dist/index.es627.js.map +1 -0
- package/dist/index.es628.js +6 -0
- package/dist/index.es628.js.map +1 -0
- package/dist/index.es629.js +298 -0
- package/dist/index.es629.js.map +1 -0
- package/dist/index.es63.js +1 -1
- package/dist/index.es630.js +27 -0
- package/dist/index.es630.js.map +1 -0
- package/dist/index.es631.js +53 -0
- package/dist/index.es631.js.map +1 -0
- package/dist/index.es632.js +9 -0
- package/dist/index.es632.js.map +1 -0
- package/dist/index.es67.js +10 -6
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +163 -13731
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +1 -1
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +15 -15
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +1 -1
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +4 -4
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +10 -10
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es93.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es564.js","sources":["../../../node_modules/ml-matrix/matrix.js"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nfunction isAnyArray(value) {\n const tag = toString.call(value);\n return tag.endsWith('Array]') && !tag.includes('Big');\n}\n\n/**\n * Computes the maximum of the given values.\n *\n * @param input\n * @param options\n */\nfunction max(input, options = {}) {\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n const { fromIndex = 0, toIndex = input.length } = options;\n if (fromIndex < 0 ||\n fromIndex >= input.length ||\n !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n if (toIndex <= fromIndex ||\n toIndex > input.length ||\n !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n let maxValue = input[fromIndex];\n for (let i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] > maxValue)\n maxValue = input[i];\n }\n return maxValue;\n}\n\n/**\n * Computes the minimum of the given values.\n */\nfunction min(input, options = {}) {\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n const { fromIndex = 0, toIndex = input.length } = options;\n if (fromIndex < 0 ||\n fromIndex >= input.length ||\n !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n if (toIndex <= fromIndex ||\n toIndex > input.length ||\n !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n let minValue = input[fromIndex];\n for (let i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] < minValue)\n minValue = input[i];\n }\n return minValue;\n}\n\n/**\n * Rescale an array into a range.\n */\nfunction rescale(input, options = {}) {\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n else if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n let output;\n if (options.output !== undefined) {\n if (!isAnyArray(options.output)) {\n throw new TypeError('output option must be an array if specified');\n }\n output = options.output;\n }\n else {\n output = new Array(input.length);\n }\n const currentMin = min(input);\n const currentMax = max(input);\n if (currentMin === currentMax) {\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n }\n const { min: minValue = options.autoMinMax ? currentMin : 0, max: maxValue = options.autoMinMax ? currentMax : 1, } = options;\n if (minValue >= maxValue) {\n throw new RangeError('min option must be smaller than max option');\n }\n const factor = (maxValue - minValue) / (currentMax - currentMin);\n for (let i = 0; i < input.length; i++) {\n output[i] = (input[i] - currentMin) * factor + minValue;\n }\n return output;\n}\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n const {\n maxRows = 15,\n maxColumns = 10,\n maxNumSize = 8,\n padMinus = 'auto',\n } = options;\n return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n const { rows, columns } = matrix;\n const maxI = Math.min(rows, maxRows);\n const maxJ = Math.min(columns, maxColumns);\n const result = [];\n\n if (padMinus === 'auto') {\n padMinus = false;\n loop: for (let i = 0; i < maxI; i++) {\n for (let j = 0; j < maxJ; j++) {\n if (matrix.get(i, j) < 0) {\n padMinus = true;\n break loop;\n }\n }\n }\n }\n\n for (let i = 0; i < maxI; i++) {\n let line = [];\n for (let j = 0; j < maxJ; j++) {\n line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n }\n result.push(`${line.join(' ')}`);\n }\n if (maxJ !== columns) {\n result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n }\n if (maxI !== rows) {\n result.push(`... ${rows - maxRows} more rows`);\n }\n return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n return (\n num >= 0 && padMinus\n ? ` ${formatNumber2(num, maxNumSize - 1)}`\n : formatNumber2(num, maxNumSize)\n ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n // small.length numbers should be as is\n let str = num.toString();\n if (str.length <= len) return str;\n\n // (7)'0.00123' is better then (7)'1.23e-2'\n // (8)'0.000123' is worse then (7)'1.23e-3',\n let fix = num.toFixed(len);\n if (fix.length > len) {\n fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n }\n if (\n fix.length <= len &&\n !fix.startsWith('0.000') &&\n !fix.startsWith('-0.000')\n ) {\n return fix;\n }\n\n // well, if it's still too long the user should've used longer numbers\n let exp = num.toExponential(len);\n if (exp.length > len) {\n exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n }\n return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n AbstractMatrix.prototype.add = function add(value) {\n if (typeof value === 'number') return this.addS(value);\n return this.addM(value);\n };\n\n AbstractMatrix.prototype.addS = function addS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.addM = function addM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.add = function add(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.add(value);\n };\n\n AbstractMatrix.prototype.sub = function sub(value) {\n if (typeof value === 'number') return this.subS(value);\n return this.subM(value);\n };\n\n AbstractMatrix.prototype.subS = function subS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.subM = function subM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.sub = function sub(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sub(value);\n };\n AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n AbstractMatrix.subtract = AbstractMatrix.sub;\n\n AbstractMatrix.prototype.mul = function mul(value) {\n if (typeof value === 'number') return this.mulS(value);\n return this.mulM(value);\n };\n\n AbstractMatrix.prototype.mulS = function mulS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.mulM = function mulM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mul = function mul(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mul(value);\n };\n AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n AbstractMatrix.multiply = AbstractMatrix.mul;\n\n AbstractMatrix.prototype.div = function div(value) {\n if (typeof value === 'number') return this.divS(value);\n return this.divM(value);\n };\n\n AbstractMatrix.prototype.divS = function divS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.divM = function divM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.div = function div(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.div(value);\n };\n AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n AbstractMatrix.divide = AbstractMatrix.div;\n\n AbstractMatrix.prototype.mod = function mod(value) {\n if (typeof value === 'number') return this.modS(value);\n return this.modM(value);\n };\n\n AbstractMatrix.prototype.modS = function modS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.modM = function modM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mod = function mod(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mod(value);\n };\n AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n AbstractMatrix.modulus = AbstractMatrix.mod;\n\n AbstractMatrix.prototype.and = function and(value) {\n if (typeof value === 'number') return this.andS(value);\n return this.andM(value);\n };\n\n AbstractMatrix.prototype.andS = function andS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.andM = function andM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.and = function and(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.and(value);\n };\n\n AbstractMatrix.prototype.or = function or(value) {\n if (typeof value === 'number') return this.orS(value);\n return this.orM(value);\n };\n\n AbstractMatrix.prototype.orS = function orS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.orM = function orM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.or = function or(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.or(value);\n };\n\n AbstractMatrix.prototype.xor = function xor(value) {\n if (typeof value === 'number') return this.xorS(value);\n return this.xorM(value);\n };\n\n AbstractMatrix.prototype.xorS = function xorS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.xorM = function xorM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.xor = function xor(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.xor(value);\n };\n\n AbstractMatrix.prototype.leftShift = function leftShift(value) {\n if (typeof value === 'number') return this.leftShiftS(value);\n return this.leftShiftM(value);\n };\n\n AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.leftShift = function leftShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.leftShift(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n return this.signPropagatingRightShiftM(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.signPropagatingRightShift(value);\n };\n\n AbstractMatrix.prototype.rightShift = function rightShift(value) {\n if (typeof value === 'number') return this.rightShiftS(value);\n return this.rightShiftM(value);\n };\n\n AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.rightShift = function rightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.rightShift(value);\n };\n AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n AbstractMatrix.prototype.not = function not() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, ~(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.not = function not(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.not();\n };\n\n AbstractMatrix.prototype.abs = function abs() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.abs(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.abs = function abs(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.abs();\n };\n\n AbstractMatrix.prototype.acos = function acos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acos = function acos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acos();\n };\n\n AbstractMatrix.prototype.acosh = function acosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acosh = function acosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acosh();\n };\n\n AbstractMatrix.prototype.asin = function asin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asin = function asin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asin();\n };\n\n AbstractMatrix.prototype.asinh = function asinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asinh = function asinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asinh();\n };\n\n AbstractMatrix.prototype.atan = function atan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atan = function atan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atan();\n };\n\n AbstractMatrix.prototype.atanh = function atanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atanh = function atanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atanh();\n };\n\n AbstractMatrix.prototype.cbrt = function cbrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cbrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cbrt = function cbrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cbrt();\n };\n\n AbstractMatrix.prototype.ceil = function ceil() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.ceil(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.ceil = function ceil(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.ceil();\n };\n\n AbstractMatrix.prototype.clz32 = function clz32() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.clz32(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.clz32 = function clz32(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.clz32();\n };\n\n AbstractMatrix.prototype.cos = function cos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cos = function cos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cos();\n };\n\n AbstractMatrix.prototype.cosh = function cosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cosh = function cosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cosh();\n };\n\n AbstractMatrix.prototype.exp = function exp() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.exp(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.exp = function exp(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.exp();\n };\n\n AbstractMatrix.prototype.expm1 = function expm1() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.expm1(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.expm1 = function expm1(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.expm1();\n };\n\n AbstractMatrix.prototype.floor = function floor() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.floor(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.floor = function floor(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.floor();\n };\n\n AbstractMatrix.prototype.fround = function fround() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.fround(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.fround = function fround(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.fround();\n };\n\n AbstractMatrix.prototype.log = function log() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log = function log(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log();\n };\n\n AbstractMatrix.prototype.log1p = function log1p() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log1p(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log1p = function log1p(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log1p();\n };\n\n AbstractMatrix.prototype.log10 = function log10() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log10(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log10 = function log10(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log10();\n };\n\n AbstractMatrix.prototype.log2 = function log2() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log2(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log2 = function log2(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log2();\n };\n\n AbstractMatrix.prototype.round = function round() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.round(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.round = function round(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.round();\n };\n\n AbstractMatrix.prototype.sign = function sign() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sign(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sign = function sign(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sign();\n };\n\n AbstractMatrix.prototype.sin = function sin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sin = function sin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sin();\n };\n\n AbstractMatrix.prototype.sinh = function sinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sinh = function sinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sinh();\n };\n\n AbstractMatrix.prototype.sqrt = function sqrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sqrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sqrt = function sqrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sqrt();\n };\n\n AbstractMatrix.prototype.tan = function tan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tan = function tan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tan();\n };\n\n AbstractMatrix.prototype.tanh = function tanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tanh = function tanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tanh();\n };\n\n AbstractMatrix.prototype.trunc = function trunc() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.trunc(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.trunc = function trunc(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.trunc();\n };\n\n AbstractMatrix.pow = function pow(matrix, arg0) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.pow(arg0);\n };\n\n AbstractMatrix.prototype.pow = function pow(value) {\n if (typeof value === 'number') return this.powS(value);\n return this.powM(value);\n };\n\n AbstractMatrix.prototype.powS = function powS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ** value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.powM = function powM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n }\n }\n return this;\n };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n let max = outer ? matrix.rows : matrix.rows - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Row index out of range');\n }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n let max = outer ? matrix.columns : matrix.columns - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Column index out of range');\n }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError(\n 'vector size must be the same as the number of columns',\n );\n }\n return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.rows) {\n throw new RangeError('vector size must be the same as the number of rows');\n }\n return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n if (!isAnyArray(rowIndices)) {\n throw new TypeError('row indices must be an array');\n }\n\n for (let i = 0; i < rowIndices.length; i++) {\n if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n throw new RangeError('row indices are out of range');\n }\n }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n if (!isAnyArray(columnIndices)) {\n throw new TypeError('column indices must be an array');\n }\n\n for (let i = 0; i < columnIndices.length; i++) {\n if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n throw new RangeError('column indices are out of range');\n }\n }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) {\n throw new RangeError('expected 4 arguments');\n }\n checkNumber('startRow', startRow);\n checkNumber('endRow', endRow);\n checkNumber('startColumn', startColumn);\n checkNumber('endColumn', endColumn);\n if (\n startRow > endRow ||\n startColumn > endColumn ||\n startRow < 0 ||\n startRow >= matrix.rows ||\n endRow < 0 ||\n endRow >= matrix.rows ||\n startColumn < 0 ||\n startColumn >= matrix.columns ||\n endColumn < 0 ||\n endColumn >= matrix.columns\n ) {\n throw new RangeError('Submatrix indices are out of range');\n }\n}\n\nfunction newArray(length, value = 0) {\n let array = [];\n for (let i = 0; i < length; i++) {\n array.push(value);\n }\n return array;\n}\n\nfunction checkNumber(name, value) {\n if (typeof value !== 'number') {\n throw new TypeError(`${name} must be a number`);\n }\n}\n\nfunction checkNonEmpty(matrix) {\n if (matrix.isEmpty()) {\n throw new Error('Empty matrix has no elements to index');\n }\n}\n\nfunction sumByRow(matrix) {\n let sum = newArray(matrix.rows);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumByColumn(matrix) {\n let sum = newArray(matrix.columns);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumAll(matrix) {\n let v = 0;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction productByRow(matrix) {\n let sum = newArray(matrix.rows, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productByColumn(matrix) {\n let sum = newArray(matrix.columns, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productAll(matrix) {\n let v = 1;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v *= matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let i = 0; i < rows; i++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean[i];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n }\n }\n return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let j = 0; j < cols; j++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n x = matrix.get(i, j) - mean[j];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n }\n }\n return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const size = rows * cols;\n\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean;\n sum1 += x;\n sum2 += x * x;\n }\n }\n if (unbiased) {\n return (sum2 - (sum1 * sum1) / size) / (size - 1);\n } else {\n return (sum2 - (sum1 * sum1) / size) / size;\n }\n}\n\nfunction centerByRow(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[i]);\n }\n }\n}\n\nfunction centerByColumn(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[j]);\n }\n }\n}\n\nfunction centerAll(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean);\n }\n }\n}\n\nfunction getScaleByRow(matrix) {\n const scale = [];\n for (let i = 0; i < matrix.rows; i++) {\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[i]);\n }\n }\n}\n\nfunction getScaleByColumn(matrix) {\n const scale = [];\n for (let j = 0; j < matrix.columns; j++) {\n let sum = 0;\n for (let i = 0; i < matrix.rows; i++) {\n sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[j]);\n }\n }\n}\n\nfunction getScaleAll(matrix) {\n const divider = matrix.size - 1;\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n for (let i = 0; i < matrix.rows; i++) {\n sum += matrix.get(i, j) ** 2 / divider;\n }\n }\n return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale);\n }\n }\n}\n\nclass AbstractMatrix {\n static from1DArray(newRows, newColumns, newData) {\n let length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('data length does not match given dimensions');\n }\n let newMatrix = new Matrix(newRows, newColumns);\n for (let row = 0; row < newRows; row++) {\n for (let column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n static rowVector(newData) {\n let vector = new Matrix(1, newData.length);\n for (let i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n static columnVector(newData) {\n let vector = new Matrix(newData.length, 1);\n for (let i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n static zeros(rows, columns) {\n return new Matrix(rows, columns);\n }\n\n static ones(rows, columns) {\n return new Matrix(rows, columns).fill(1);\n }\n\n static rand(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { random = Math.random } = options;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.set(i, j, random());\n }\n }\n return matrix;\n }\n\n static randInt(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1000, random = Math.random } = options;\n if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let interval = max - min;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n let value = min + Math.round(random() * interval);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n let min = Math.min(rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n static diag(data, rows, columns) {\n let l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n let min = Math.min(l, rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new this(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static checkMatrix(value) {\n return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n }\n\n static isMatrix(value) {\n return value != null && value.klass === 'Matrix';\n }\n\n get size() {\n return this.rows * this.columns;\n }\n\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n to1DArray() {\n let array = [];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n array.push(this.get(i, j));\n }\n }\n return array;\n }\n\n to2DArray() {\n let copy = [];\n for (let i = 0; i < this.rows; i++) {\n copy.push([]);\n for (let j = 0; j < this.columns; j++) {\n copy[i].push(this.get(i, j));\n }\n }\n return copy;\n }\n\n toJSON() {\n return this.to2DArray();\n }\n\n isRowVector() {\n return this.rows === 1;\n }\n\n isColumnVector() {\n return this.columns === 1;\n }\n\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n\n isSquare() {\n return this.rows === this.columns;\n }\n\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n\n isSymmetric() {\n if (this.isSquare()) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j <= i; j++) {\n if (this.get(i, j) !== this.get(j, i)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n isDistance() {\n if (!this.isSymmetric()) return false;\n\n for (let i = 0; i < this.rows; i++) {\n if (this.get(i, i) !== 0) return false;\n }\n\n return true;\n }\n\n isEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isEchelonForm = true;\n let checked = false;\n while (i < this.rows && isEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isEchelonForm = false;\n checked = true;\n }\n }\n i++;\n }\n return isEchelonForm;\n }\n\n isReducedEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isReducedEchelonForm = true;\n let checked = false;\n while (i < this.rows && isReducedEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isReducedEchelonForm = false;\n checked = true;\n }\n }\n for (let k = j + 1; k < this.rows; k++) {\n if (this.get(i, k) !== 0) {\n isReducedEchelonForm = false;\n }\n }\n i++;\n }\n return isReducedEchelonForm;\n }\n\n echelonForm() {\n let result = this.clone();\n let h = 0;\n let k = 0;\n while (h < result.rows && k < result.columns) {\n let iMax = h;\n for (let i = h; i < result.rows; i++) {\n if (result.get(i, k) > result.get(iMax, k)) {\n iMax = i;\n }\n }\n if (result.get(iMax, k) === 0) {\n k++;\n } else {\n result.swapRows(h, iMax);\n let tmp = result.get(h, k);\n for (let j = k; j < result.columns; j++) {\n result.set(h, j, result.get(h, j) / tmp);\n }\n for (let i = h + 1; i < result.rows; i++) {\n let factor = result.get(i, k) / result.get(h, k);\n result.set(i, k, 0);\n for (let j = k + 1; j < result.columns; j++) {\n result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n }\n }\n h++;\n k++;\n }\n }\n return result;\n }\n\n reducedEchelonForm() {\n let result = this.echelonForm();\n let m = result.columns;\n let n = result.rows;\n let h = n - 1;\n while (h >= 0) {\n if (result.maxRow(h) === 0) {\n h--;\n } else {\n let p = 0;\n let pivot = false;\n while (p < n && pivot === false) {\n if (result.get(h, p) === 1) {\n pivot = true;\n } else {\n p++;\n }\n }\n for (let i = 0; i < h; i++) {\n let factor = result.get(i, p);\n for (let j = p; j < m; j++) {\n let tmp = result.get(i, j) - factor * result.get(h, j);\n result.set(i, j, tmp);\n }\n }\n h--;\n }\n }\n return result;\n }\n\n set() {\n throw new Error('set method is unimplemented');\n }\n\n get() {\n throw new Error('get method is unimplemented');\n }\n\n repeat(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { rows = 1, columns = 1 } = options;\n if (!Number.isInteger(rows) || rows <= 0) {\n throw new TypeError('rows must be a positive integer');\n }\n if (!Number.isInteger(columns) || columns <= 0) {\n throw new TypeError('columns must be a positive integer');\n }\n let matrix = new Matrix(this.rows * rows, this.columns * columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n fill(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n neg() {\n return this.mulS(-1);\n }\n\n getRow(index) {\n checkRowIndex(this, index);\n let row = [];\n for (let i = 0; i < this.columns; i++) {\n row.push(this.get(index, i));\n }\n return row;\n }\n\n getRowVector(index) {\n return Matrix.rowVector(this.getRow(index));\n }\n\n setRow(index, array) {\n checkRowIndex(this, index);\n array = checkRowVector(this, array);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n swapRows(row1, row2) {\n checkRowIndex(this, row1);\n checkRowIndex(this, row2);\n for (let i = 0; i < this.columns; i++) {\n let temp = this.get(row1, i);\n this.set(row1, i, this.get(row2, i));\n this.set(row2, i, temp);\n }\n return this;\n }\n\n getColumn(index) {\n checkColumnIndex(this, index);\n let column = [];\n for (let i = 0; i < this.rows; i++) {\n column.push(this.get(i, index));\n }\n return column;\n }\n\n getColumnVector(index) {\n return Matrix.columnVector(this.getColumn(index));\n }\n\n setColumn(index, array) {\n checkColumnIndex(this, index);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n swapColumns(column1, column2) {\n checkColumnIndex(this, column1);\n checkColumnIndex(this, column2);\n for (let i = 0; i < this.rows; i++) {\n let temp = this.get(i, column1);\n this.set(i, column1, this.get(i, column2));\n this.set(i, column2, temp);\n }\n return this;\n }\n\n addRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[j]);\n }\n }\n return this;\n }\n\n subRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[j]);\n }\n }\n return this;\n }\n\n mulRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[j]);\n }\n }\n return this;\n }\n\n divRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[j]);\n }\n }\n return this;\n }\n\n addColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[i]);\n }\n }\n return this;\n }\n\n subColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[i]);\n }\n }\n return this;\n }\n\n mulColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[i]);\n }\n }\n return this;\n }\n\n divColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[i]);\n }\n }\n return this;\n }\n\n mulRow(index, value) {\n checkRowIndex(this, index);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n mulColumn(index, value) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n max(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n switch (by) {\n case 'row': {\n const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[row]) {\n max[row] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case 'column': {\n const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[column]) {\n max[column] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case undefined: {\n let max = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max) {\n max = this.get(row, column);\n }\n }\n }\n return max;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n maxIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n min(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n\n switch (by) {\n case 'row': {\n const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[row]) {\n min[row] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case 'column': {\n const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[column]) {\n min[column] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case undefined: {\n let min = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min) {\n min = this.get(row, column);\n }\n }\n }\n return min;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n minIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n maxRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n maxRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n minRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n minRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n maxColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n maxColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n minColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n minColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n diag() {\n let min = Math.min(this.rows, this.columns);\n let diag = [];\n for (let i = 0; i < min; i++) {\n diag.push(this.get(i, i));\n }\n return diag;\n }\n\n norm(type = 'frobenius') {\n switch (type) {\n case 'max':\n return this.max();\n case 'frobenius':\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${type}`);\n }\n }\n\n cumulativeSum() {\n let sum = 0;\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n sum += this.get(i, j);\n this.set(i, j, sum);\n }\n }\n return this;\n }\n\n dot(vector2) {\n if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n let vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n let dot = 0;\n for (let i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n mmul(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.columns;\n\n let result = new Matrix(m, p);\n\n let Bcolj = new Float64Array(n);\n for (let j = 0; j < p; j++) {\n for (let k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (let i = 0; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * Bcolj[k];\n }\n\n result.set(i, j, s);\n }\n }\n return result;\n }\n\n gram() {\n const rows = this.rows;\n const n = this.columns;\n\n // The Gram matrix `thisᵀ · this` is symmetric, so only its upper triangle is\n // accumulated (then mirrored) and the transpose is never materialized.\n // Row-streaming rank-1 updates read each row of `this` contiguously and skip\n // zero entries, so the cost scales with the number of non-zeros: it is as\n // fast as the dense version on dense matrices (the skip never fires) and far\n // faster on sparse ones.\n const gramData = new Float64Array(n * n);\n for (let r = 0; r < rows; r++) {\n for (let i = 0; i < n; i++) {\n const value = this.get(r, i);\n if (value === 0) continue;\n const offset = i * n;\n for (let j = i; j < n; j++) {\n gramData[offset + j] += value * this.get(r, j);\n }\n }\n }\n\n const result = new Matrix(n, n);\n for (let i = 0; i < n; i++) {\n const offset = i * n;\n for (let j = i; j < n; j++) {\n const value = gramData[offset + j];\n result.set(i, j, value);\n result.set(j, i, value);\n }\n }\n return result;\n }\n\n mmulByTranspose(scale) {\n let m = this.rows;\n let n = this.columns;\n\n if (scale !== undefined && scale.length !== n) {\n throw new RangeError('scale must have one value per column');\n }\n\n let result = new Matrix(m, m);\n\n // result = this · diag(scale) · thisᵀ is symmetric, so only the upper\n // triangle is computed and mirrored, and the transpose is never\n // materialized. `scale` (one factor per column) is folded into one operand.\n let rowj = new Float64Array(n);\n for (let j = 0; j < m; j++) {\n if (scale === undefined) {\n for (let k = 0; k < n; k++) {\n rowj[k] = this.get(j, k);\n }\n } else {\n for (let k = 0; k < n; k++) {\n rowj[k] = scale[k] * this.get(j, k);\n }\n }\n\n for (let i = j; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * rowj[k];\n }\n\n result.set(i, j, s);\n result.set(j, i, s);\n }\n }\n return result;\n }\n\n mpow(scalar) {\n if (!this.isSquare()) {\n throw new RangeError('Matrix must be square');\n }\n if (!Number.isInteger(scalar) || scalar < 0) {\n throw new RangeError('Exponent must be a non-negative integer');\n }\n // Russian Peasant exponentiation, i.e. exponentiation by squaring\n let result = Matrix.eye(this.rows);\n let bb = this;\n // Note: Don't bit shift. In JS, that would truncate at 32 bits\n for (let e = scalar; e >= 1; e /= 2) {\n if ((e & 1) !== 0) {\n result = result.mmul(bb);\n }\n bb = bb.mmul(bb);\n }\n return result;\n }\n\n strassen2x2(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(2, 2);\n const a11 = this.get(0, 0);\n const b11 = other.get(0, 0);\n const a12 = this.get(0, 1);\n const b12 = other.get(0, 1);\n const a21 = this.get(1, 0);\n const b21 = other.get(1, 0);\n const a22 = this.get(1, 1);\n const b22 = other.get(1, 1);\n\n // Compute intermediate values.\n const m1 = (a11 + a22) * (b11 + b22);\n const m2 = (a21 + a22) * b11;\n const m3 = a11 * (b12 - b22);\n const m4 = a22 * (b21 - b11);\n const m5 = (a11 + a12) * b22;\n const m6 = (a21 - a11) * (b11 + b12);\n const m7 = (a12 - a22) * (b21 + b22);\n\n // Combine intermediate values into the output.\n const c00 = m1 + m4 - m5 + m7;\n const c01 = m3 + m5;\n const c10 = m2 + m4;\n const c11 = m1 - m2 + m3 + m6;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n return result;\n }\n\n strassen3x3(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(3, 3);\n\n const a00 = this.get(0, 0);\n const a01 = this.get(0, 1);\n const a02 = this.get(0, 2);\n const a10 = this.get(1, 0);\n const a11 = this.get(1, 1);\n const a12 = this.get(1, 2);\n const a20 = this.get(2, 0);\n const a21 = this.get(2, 1);\n const a22 = this.get(2, 2);\n\n const b00 = other.get(0, 0);\n const b01 = other.get(0, 1);\n const b02 = other.get(0, 2);\n const b10 = other.get(1, 0);\n const b11 = other.get(1, 1);\n const b12 = other.get(1, 2);\n const b20 = other.get(2, 0);\n const b21 = other.get(2, 1);\n const b22 = other.get(2, 2);\n\n const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n const m2 = (a00 - a10) * (-b01 + b11);\n const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n const m5 = (a10 + a11) * (-b00 + b01);\n const m6 = a00 * b00;\n const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n const m8 = (-a00 + a20) * (b02 - b12);\n const m9 = (a20 + a21) * (-b00 + b02);\n const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n const m13 = (a02 - a22) * (b11 - b21);\n const m14 = a02 * b20;\n const m15 = (a21 + a22) * (-b20 + b21);\n const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n const m17 = (a02 - a12) * (b12 - b22);\n const m18 = (a11 + a12) * (-b20 + b22);\n const m19 = a01 * b10;\n const m20 = a12 * b21;\n const m21 = a10 * b02;\n const m22 = a20 * b01;\n const m23 = a22 * b22;\n\n const c00 = m6 + m14 + m19;\n const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n const c11 = m2 + m4 + m5 + m6 + m20;\n const c12 = m14 + m16 + m17 + m18 + m21;\n const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n const c21 = m12 + m13 + m14 + m15 + m22;\n const c22 = m6 + m7 + m8 + m9 + m23;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(0, 2, c02);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n result.set(1, 2, c12);\n result.set(2, 0, c20);\n result.set(2, 1, c21);\n result.set(2, 2, c22);\n return result;\n }\n\n mmulStrassen(y) {\n y = Matrix.checkMatrix(y);\n let x = this.clone();\n let r1 = x.rows;\n let c1 = x.columns;\n let r2 = y.rows;\n let c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(\n `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n );\n }\n\n // Put a matrix into the top left of a matrix of zeros.\n // `rows` and `cols` are the dimensions of the output matrix.\n function embed(mat, rows, cols) {\n let r = mat.rows;\n let c = mat.columns;\n if (r === rows && c === cols) {\n return mat;\n } else {\n let resultat = AbstractMatrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\n }\n\n // Make sure both matrices are the same size.\n // This is exclusively for simplicity:\n // this algorithm can be implemented with matrices of different sizes.\n\n let r = Math.max(r1, r2);\n let c = Math.max(c1, c2);\n x = embed(x, r, c);\n y = embed(y, r, c);\n\n // Our recursive multiplication function.\n function blockMult(a, b, rows, cols) {\n // For small matrices, resort to naive multiplication.\n if (rows <= 512 || cols <= 512) {\n return a.mmul(b); // a is equivalent to this\n }\n\n // Apply dynamic padding.\n if (rows % 2 === 1 && cols % 2 === 1) {\n a = embed(a, rows + 1, cols + 1);\n b = embed(b, rows + 1, cols + 1);\n } else if (rows % 2 === 1) {\n a = embed(a, rows + 1, cols);\n b = embed(b, rows + 1, cols);\n } else if (cols % 2 === 1) {\n a = embed(a, rows, cols + 1);\n b = embed(b, rows, cols + 1);\n }\n\n let halfRows = parseInt(a.rows / 2, 10);\n let halfCols = parseInt(a.columns / 2, 10);\n // Subdivide input matrices.\n let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n let m1 = blockMult(\n AbstractMatrix.add(a11, a22),\n AbstractMatrix.add(b11, b22),\n halfRows,\n halfCols,\n );\n let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n let m6 = blockMult(\n AbstractMatrix.sub(a21, a11),\n AbstractMatrix.add(b11, b12),\n halfRows,\n halfCols,\n );\n let m7 = blockMult(\n AbstractMatrix.sub(a12, a22),\n AbstractMatrix.add(b21, b22),\n halfRows,\n halfCols,\n );\n\n // Combine intermediate values into the output.\n let c11 = AbstractMatrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n let c12 = AbstractMatrix.add(m3, m5);\n let c21 = AbstractMatrix.add(m2, m4);\n let c22 = AbstractMatrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n // Crop output to the desired size (undo dynamic padding).\n let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n result = result.setSubMatrix(c11, 0, 0);\n result = result.setSubMatrix(c12, c11.rows, 0);\n result = result.setSubMatrix(c21, 0, c11.columns);\n result = result.setSubMatrix(c22, c11.rows, c11.columns);\n return result.subMatrix(0, rows - 1, 0, cols - 1);\n }\n\n return blockMult(x, y, r, c);\n }\n\n scaleRows(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const row = this.getRow(i);\n if (row.length > 0) {\n rescale(row, { min, max, output: row });\n }\n newMatrix.setRow(i, row);\n }\n return newMatrix;\n }\n\n scaleColumns(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const column = this.getColumn(i);\n if (column.length) {\n rescale(column, {\n min,\n max,\n output: column,\n });\n }\n newMatrix.setColumn(i, column);\n }\n return newMatrix;\n }\n\n flipRows() {\n const middle = Math.ceil(this.columns / 2);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < middle; j++) {\n let first = this.get(i, j);\n let last = this.get(i, this.columns - 1 - j);\n this.set(i, j, last);\n this.set(i, this.columns - 1 - j, first);\n }\n }\n return this;\n }\n\n flipColumns() {\n const middle = Math.ceil(this.rows / 2);\n for (let j = 0; j < this.columns; j++) {\n for (let i = 0; i < middle; i++) {\n let first = this.get(i, j);\n let last = this.get(this.rows - 1 - i, j);\n this.set(i, j, last);\n this.set(this.rows - 1 - i, j, first);\n }\n }\n return this;\n }\n\n kroneckerProduct(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.rows;\n let q = other.columns;\n\n let result = new Matrix(m * p, n * q);\n for (let i = 0; i < m; i++) {\n for (let j = 0; j < n; j++) {\n for (let k = 0; k < p; k++) {\n for (let l = 0; l < q; l++) {\n result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n }\n }\n }\n }\n return result;\n }\n\n kroneckerSum(other) {\n other = Matrix.checkMatrix(other);\n if (!this.isSquare() || !other.isSquare()) {\n throw new Error('Kronecker Sum needs two Square Matrices');\n }\n let m = this.rows;\n let n = other.rows;\n let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n return AxI.add(IxB);\n }\n\n transpose() {\n let result = new Matrix(this.columns, this.rows);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n sortRows(compareFunction = compareNumbers) {\n for (let i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n sortColumns(compareFunction = compareNumbers) {\n for (let i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n subMatrix(startRow, endRow, startColumn, endColumn) {\n checkRange(this, startRow, endRow, startColumn, endColumn);\n let newMatrix = new Matrix(\n endRow - startRow + 1,\n endColumn - startColumn + 1,\n );\n for (let i = startRow; i <= endRow; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n }\n }\n return newMatrix;\n }\n\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if (\n startColumn > endColumn ||\n startColumn < 0 ||\n startColumn >= this.columns ||\n endColumn < 0 ||\n endColumn >= this.columns\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n if (indices[i] < 0 || indices[i] >= this.rows) {\n throw new RangeError(`Row index out of range: ${indices[i]}`);\n }\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n }\n }\n return newMatrix;\n }\n\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if (\n startRow > endRow ||\n startRow < 0 ||\n startRow >= this.rows ||\n endRow < 0 ||\n endRow >= this.rows\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startRow; j <= endRow; j++) {\n if (indices[i] < 0 || indices[i] >= this.columns) {\n throw new RangeError(`Column index out of range: ${indices[i]}`);\n }\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n }\n }\n return newMatrix;\n }\n\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n return this;\n }\n let endRow = startRow + matrix.rows - 1;\n let endColumn = startColumn + matrix.columns - 1;\n checkRange(this, startRow, endRow, startColumn, endColumn);\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n this.set(startRow + i, startColumn + j, matrix.get(i, j));\n }\n }\n return this;\n }\n\n selection(rowIndices, columnIndices) {\n checkRowIndices(this, rowIndices);\n checkColumnIndices(this, columnIndices);\n let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n for (let i = 0; i < rowIndices.length; i++) {\n let rowIndex = rowIndices[i];\n for (let j = 0; j < columnIndices.length; j++) {\n let columnIndex = columnIndices[j];\n newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n }\n }\n return newMatrix;\n }\n\n trace() {\n let min = Math.min(this.rows, this.columns);\n let trace = 0;\n for (let i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n clone() {\n return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n }\n\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(from, to) {\n for (const [row, column, value] of from.entries()) {\n to.set(row, column, value);\n }\n\n return to;\n }\n\n sum(by) {\n switch (by) {\n case 'row':\n return sumByRow(this);\n case 'column':\n return sumByColumn(this);\n case undefined:\n return sumAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n product(by) {\n switch (by) {\n case 'row':\n return productByRow(this);\n case 'column':\n return productByColumn(this);\n case undefined:\n return productAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n mean(by) {\n const sum = this.sum(by);\n switch (by) {\n case 'row': {\n for (let i = 0; i < this.rows; i++) {\n sum[i] /= this.columns;\n }\n return sum;\n }\n case 'column': {\n for (let i = 0; i < this.columns; i++) {\n sum[i] /= this.rows;\n }\n return sum;\n }\n case undefined:\n return sum / this.size;\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n variance(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { unbiased = true, mean = this.mean(by) } = options;\n if (typeof unbiased !== 'boolean') {\n throw new TypeError('unbiased must be a boolean');\n }\n switch (by) {\n case 'row': {\n if (!isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByRow(this, unbiased, mean);\n }\n case 'column': {\n if (!isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByColumn(this, unbiased, mean);\n }\n case undefined: {\n if (typeof mean !== 'number') {\n throw new TypeError('mean must be a number');\n }\n return varianceAll(this, unbiased, mean);\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n standardDeviation(by, options) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n const variance = this.variance(by, options);\n if (by === undefined) {\n return Math.sqrt(variance);\n } else {\n for (let i = 0; i < variance.length; i++) {\n variance[i] = Math.sqrt(variance[i]);\n }\n return variance;\n }\n }\n\n center(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { center = this.mean(by) } = options;\n switch (by) {\n case 'row': {\n if (!isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByRow(this, center);\n return this;\n }\n case 'column': {\n if (!isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByColumn(this, center);\n return this;\n }\n case undefined: {\n if (typeof center !== 'number') {\n throw new TypeError('center must be a number');\n }\n centerAll(this, center);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n scale(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n let scale = options.scale;\n switch (by) {\n case 'row': {\n if (scale === undefined) {\n scale = getScaleByRow(this);\n } else if (!isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByRow(this, scale);\n return this;\n }\n case 'column': {\n if (scale === undefined) {\n scale = getScaleByColumn(this);\n } else if (!isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByColumn(this, scale);\n return this;\n }\n case undefined: {\n if (scale === undefined) {\n scale = getScaleAll(this);\n } else if (typeof scale !== 'number') {\n throw new TypeError('scale must be a number');\n }\n scaleAll(this, scale);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n toString(options) {\n return inspectMatrixWithOptions(this, options);\n }\n\n [Symbol.iterator]() {\n return this.entries();\n }\n\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let row = 0; row < this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n yield [row, col, this.get(row, col)];\n }\n }\n }\n\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let row = 0; row < this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n yield this.get(row, col);\n }\n }\n }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n return array.every((element) => {\n return typeof element === 'number';\n });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n /**\n * @type {Float64Array[]}\n */\n data;\n\n /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\n #initData(nRows, nColumns) {\n this.data = [];\n\n if (Number.isInteger(nColumns) && nColumns >= 0) {\n for (let i = 0; i < nRows; i++) {\n this.data.push(new Float64Array(nColumns));\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n\n this.rows = nRows;\n this.columns = nColumns;\n }\n\n constructor(nRows, nColumns) {\n super();\n if (Matrix.isMatrix(nRows)) {\n this.#initData(nRows.rows, nRows.columns);\n Matrix.copy(nRows, this);\n } else if (Number.isInteger(nRows) && nRows >= 0) {\n this.#initData(nRows, nColumns);\n } else if (isAnyArray(nRows)) {\n // Copy the values from the 2D array\n const arrayData = nRows;\n nRows = arrayData.length;\n nColumns = nRows ? arrayData[0].length : 0;\n if (typeof nColumns !== 'number') {\n throw new TypeError(\n 'Data must be a 2D array with at least one element',\n );\n }\n this.data = [];\n\n for (let i = 0; i < nRows; i++) {\n if (arrayData[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n if (!isArrayOfNumbers(arrayData[i])) {\n throw new TypeError('Input data contains non-numeric values');\n }\n this.data.push(Float64Array.from(arrayData[i]));\n }\n\n this.rows = nRows;\n this.columns = nColumns;\n } else {\n throw new TypeError(\n 'First argument must be a positive number or an array',\n );\n }\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n\n removeRow(index) {\n checkRowIndex(this, index);\n this.data.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n checkRowIndex(this, index, true);\n array = Float64Array.from(checkRowVector(this, array));\n this.data.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n removeColumn(index) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns - 1);\n for (let j = 0; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n for (let j = index + 1; j < this.columns; j++) {\n newRow[j - 1] = this.data[i][j];\n }\n this.data[i] = newRow;\n }\n this.columns -= 1;\n return this;\n }\n\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n checkColumnIndex(this, index, true);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns + 1);\n let j = 0;\n for (; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n newRow[j++] = array[i];\n for (; j < this.columns + 1; j++) {\n newRow[j] = this.data[i][j - 1];\n }\n this.data[i] = newRow;\n }\n this.columns += 1;\n return this;\n }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n /** @type {Matrix} */\n #matrix;\n\n get size() {\n return this.#matrix.size;\n }\n\n get rows() {\n return this.#matrix.rows;\n }\n\n get columns() {\n return this.#matrix.columns;\n }\n\n get diagonalSize() {\n return this.rows;\n }\n\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(value) {\n return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n }\n\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(diagonalSize) {\n return new this(diagonalSize);\n }\n\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(diagonalSize) {\n return new this(diagonalSize).fill(1);\n }\n\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(diagonalSize) {\n super();\n\n if (Matrix.isMatrix(diagonalSize)) {\n if (!diagonalSize.isSymmetric()) {\n throw new TypeError('not symmetric data');\n }\n\n this.#matrix = Matrix.copy(\n diagonalSize,\n new Matrix(diagonalSize.rows, diagonalSize.rows),\n );\n } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n this.#matrix = new Matrix(diagonalSize, diagonalSize);\n } else {\n this.#matrix = new Matrix(diagonalSize);\n\n if (!this.isSymmetric()) {\n throw new TypeError('not symmetric data');\n }\n }\n }\n\n clone() {\n const matrix = new SymmetricMatrix(this.diagonalSize);\n\n for (const [row, col, value] of this.upperRightEntries()) {\n matrix.set(row, col, value);\n }\n\n return matrix;\n }\n\n toMatrix() {\n return new Matrix(this);\n }\n\n get(rowIndex, columnIndex) {\n return this.#matrix.get(rowIndex, columnIndex);\n }\n set(rowIndex, columnIndex, value) {\n // symmetric set\n this.#matrix.set(rowIndex, columnIndex, value);\n this.#matrix.set(columnIndex, rowIndex, value);\n\n return this;\n }\n\n removeCross(index) {\n // symmetric remove side\n this.#matrix.removeRow(index);\n this.#matrix.removeColumn(index);\n\n return this;\n }\n\n addCross(index, array) {\n if (array === undefined) {\n array = index;\n index = this.diagonalSize;\n }\n\n const row = array.slice();\n row.splice(index, 1);\n\n this.#matrix.addRow(index, row);\n this.#matrix.addColumn(index, array);\n\n return this;\n }\n\n /**\n * @param {Mask[]} mask\n */\n applyMask(mask) {\n if (mask.length !== this.diagonalSize) {\n throw new RangeError('Mask size do not match with matrix size');\n }\n\n // prepare sides to remove from matrix from mask\n /** @type {number[]} */\n const sidesToRemove = [];\n for (const [index, passthroughs] of mask.entries()) {\n if (passthroughs) continue;\n sidesToRemove.push(index);\n }\n // to remove from highest to lowest for no mutation shifting\n sidesToRemove.reverse();\n\n // remove sides\n for (const sideIndex of sidesToRemove) {\n this.removeCross(sideIndex);\n }\n\n return this;\n }\n\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize } = this;\n\n /** @type {number[]} */\n const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n compact[index] = this.get(row, col);\n\n if (++col >= diagonalSize) col = ++row;\n }\n\n return compact;\n }\n\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(compact) {\n const compactSize = compact.length;\n // compactSize = (sideSize * (sideSize + 1)) / 2\n // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n if (!Number.isInteger(diagonalSize)) {\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n compact,\n )}`,\n );\n }\n\n const matrix = new SymmetricMatrix(diagonalSize);\n for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n matrix.set(col, row, compact[index]);\n if (++col >= diagonalSize) col = ++row;\n }\n\n return matrix;\n }\n\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n const value = this.get(row, col);\n\n yield [row, col, value];\n\n // at the end of row, move cursor to next row at diagonal position\n if (++col >= this.diagonalSize) col = ++row;\n }\n }\n\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n const value = this.get(row, col);\n\n yield value;\n\n // at the end of row, move cursor to next row at diagonal position\n if (++col >= this.diagonalSize) col = ++row;\n }\n }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(value) {\n return (\n SymmetricMatrix.isSymmetricMatrix(value) &&\n value.klassSubType === 'DistanceMatrix'\n );\n }\n\n constructor(sideSize) {\n super(sideSize);\n\n if (!this.isDistance()) {\n throw new TypeError('Provided arguments do no produce a distance matrix');\n }\n }\n\n set(rowIndex, columnIndex, value) {\n // distance matrix diagonal is 0\n if (rowIndex === columnIndex) value = 0;\n\n return super.set(rowIndex, columnIndex, value);\n }\n\n addCross(index, array) {\n if (array === undefined) {\n array = index;\n index = this.diagonalSize;\n }\n\n // ensure distance\n array = array.slice();\n array[index] = 0;\n\n return super.addCross(index, array);\n }\n\n toSymmetricMatrix() {\n return new SymmetricMatrix(this);\n }\n\n clone() {\n const matrix = new DistanceMatrix(this.diagonalSize);\n\n for (const [row, col, value] of this.upperRightEntries()) {\n if (row === col) continue;\n matrix.set(row, col, value);\n }\n\n return matrix;\n }\n\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize } = this;\n const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n /** @type {number[]} */\n const compact = new Array(compactLength);\n for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n compact[index] = this.get(row, col);\n\n if (++col >= diagonalSize) col = ++row + 1;\n }\n\n return compact;\n }\n\n /**\n * @param {number[]} compact\n */\n static fromCompact(compact) {\n const compactSize = compact.length;\n\n if (compactSize === 0) {\n return new this(0);\n }\n\n // compactSize in Natural integer range ]0;∞]\n // compactSize = (sideSize * (sideSize - 1)) / 2\n // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n if (!Number.isInteger(diagonalSize)) {\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n compact,\n )}`,\n );\n }\n\n const matrix = new this(diagonalSize);\n for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n matrix.set(col, row, compact[index]);\n if (++col >= diagonalSize) col = ++row + 1;\n }\n\n return matrix;\n }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n constructor(matrix, rows, columns) {\n super();\n this.matrix = matrix;\n this.rows = rows;\n this.columns = columns;\n }\n}\n\nclass MatrixColumnView extends BaseView {\n constructor(matrix, column) {\n checkColumnIndex(matrix, column);\n super(matrix, matrix.rows, 1);\n this.column = column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.column, value);\n return this;\n }\n\n get(rowIndex) {\n return this.matrix.get(rowIndex, this.column);\n }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n constructor(matrix, columnIndices) {\n checkColumnIndices(matrix, columnIndices);\n super(matrix, matrix.rows, columnIndices.length);\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n }\n}\n\nclass MatrixFlipRowView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n }\n}\n\nclass MatrixRowView extends BaseView {\n constructor(matrix, row) {\n checkRowIndex(matrix, row);\n super(matrix, 1, matrix.columns);\n this.row = row;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.row, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.row, columnIndex);\n }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n constructor(matrix, rowIndices) {\n checkRowIndices(matrix, rowIndices);\n super(matrix, rowIndices.length, matrix.columns);\n this.rowIndices = rowIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n }\n}\n\nclass MatrixSelectionView extends BaseView {\n constructor(matrix, rowIndices, columnIndices) {\n checkRowIndices(matrix, rowIndices);\n checkColumnIndices(matrix, columnIndices);\n super(matrix, rowIndices.length, columnIndices.length);\n this.rowIndices = rowIndices;\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n );\n }\n}\n\nclass MatrixSubView extends BaseView {\n constructor(matrix, startRow, endRow, startColumn, endColumn) {\n checkRange(matrix, startRow, endRow, startColumn, endColumn);\n super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n this.startRow = startRow;\n this.startColumn = startColumn;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n );\n }\n}\n\nclass MatrixTransposeView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.columns, matrix.rows);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(columnIndex, rowIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(columnIndex, rowIndex);\n }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n constructor(data, options = {}) {\n const { rows = 1 } = options;\n\n if (data.length % rows !== 0) {\n throw new Error('the data length is not divisible by the number of rows');\n }\n super();\n this.rows = rows;\n this.columns = data.length / rows;\n this.data = data;\n }\n\n set(rowIndex, columnIndex, value) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n this.data[index] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n return this.data[index];\n }\n\n _calculateIndex(row, column) {\n return row * this.columns + column;\n }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n constructor(data) {\n super();\n this.data = data;\n this.rows = data.length;\n this.columns = data[0].length;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n}\n\nfunction wrap(array, options) {\n if (isAnyArray(array)) {\n if (array[0] && isAnyArray(array[0])) {\n return new WrapperMatrix2D(array);\n } else {\n return new WrapperMatrix1D(array, options);\n }\n } else {\n throw new Error('the argument is not an array');\n }\n}\n\nclass LuDecomposition {\n constructor(matrix) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n let lu = matrix.clone();\n let rows = lu.rows;\n let columns = lu.columns;\n let pivotVector = new Float64Array(rows);\n let pivotSign = 1;\n let i, j, k, p, s, t, v;\n let LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Float64Array(rows);\n\n for (j = 0; j < columns; j++) {\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu.get(i, j);\n }\n\n for (i = 0; i < rows; i++) {\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += lu.get(i, k) * LUcolj[k];\n }\n LUcolj[i] -= s;\n lu.set(i, j, LUcolj[i]);\n }\n\n p = j;\n for (i = j + 1; i < rows; i++) {\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n p = i;\n }\n }\n\n if (p !== j) {\n for (k = 0; k < columns; k++) {\n t = lu.get(p, k);\n lu.set(p, k, lu.get(j, k));\n lu.set(j, k, t);\n }\n\n v = pivotVector[p];\n pivotVector[p] = pivotVector[j];\n pivotVector[j] = v;\n\n pivotSign = -pivotSign;\n }\n\n if (j < rows && lu.get(j, j) !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n }\n\n isSingular() {\n let data = this.LU;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n if (data.get(j, j) === 0) {\n return true;\n }\n }\n return false;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let lu = this.LU;\n let rows = lu.rows;\n\n if (rows !== value.rows) {\n throw new Error('Invalid matrix dimensions');\n }\n if (this.isSingular()) {\n throw new Error('LU matrix is singular');\n }\n\n let count = value.columns;\n let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n let columns = lu.columns;\n let i, j, k;\n\n for (k = 0; k < columns; k++) {\n for (i = k + 1; i < columns; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / lu.get(k, k));\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n return X;\n }\n\n get determinant() {\n let data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n let determinant = this.pivotSign;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n determinant *= data.get(j, j);\n }\n return determinant;\n }\n\n get lowerTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i > j) {\n X.set(i, j, data.get(i, j));\n } else if (i === j) {\n X.set(i, j, 1);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get upperTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i <= j) {\n X.set(i, j, data.get(i, j));\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\n\n/**\n * Transpose a square matrix in place, without allocating a copy.\n * Used to restore the logical layout of decomposition outputs that were\n * accumulated in transposed storage for cache-sequential inner loops.\n * @param {import('../matrix').default} matrix - square matrix, mutated in place\n * @returns {import('../matrix').default} the same matrix\n */\nfunction transposeSquareInPlace(matrix) {\n const data = matrix.data;\n const n = matrix.rows;\n for (let i = 0; i < n; i++) {\n const rowI = data[i];\n for (let j = i + 1; j < n; j++) {\n const tmp = rowI[j];\n rowI[j] = data[j][i];\n data[j][i] = tmp;\n }\n }\n return matrix;\n}\n\nfunction hypotenuse(a, b) {\n let r = 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n return Math.abs(a) * Math.sqrt(1 + r * r);\n }\n if (b !== 0) {\n r = a / b;\n return Math.abs(b) * Math.sqrt(1 + r * r);\n }\n return 0;\n}\n\nclass QrDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let qr = value.clone();\n let m = value.rows;\n let n = value.columns;\n let rdiag = new Float64Array(n);\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n let nrm = 0;\n for (i = k; i < m; i++) {\n nrm = hypotenuse(nrm, qr.get(i, k));\n }\n if (nrm !== 0) {\n if (qr.get(k, k) < 0) {\n nrm = -nrm;\n }\n for (i = k; i < m; i++) {\n qr.set(i, k, qr.get(i, k) / nrm);\n }\n qr.set(k, k, qr.get(k, k) + 1);\n for (j = k + 1; j < n; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * qr.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n rdiag[k] = -nrm;\n }\n\n this.QR = qr;\n this.Rdiag = rdiag;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let qr = this.QR;\n let m = qr.rows;\n\n if (value.rows !== m) {\n throw new Error('Matrix row dimensions must agree');\n }\n if (!this.isFullRank()) {\n throw new Error('Matrix is rank deficient');\n }\n\n let count = value.columns;\n let X = value.clone();\n let n = qr.columns;\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n for (j = 0; j < count; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n for (k = n - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n }\n }\n }\n\n return X.subMatrix(0, n - 1, 0, count - 1);\n }\n\n isFullRank() {\n let columns = this.QR.columns;\n for (let i = 0; i < columns; i++) {\n if (this.Rdiag[i] === 0) {\n return false;\n }\n }\n return true;\n }\n\n get upperTriangularMatrix() {\n let qr = this.QR;\n let n = qr.columns;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i < j) {\n X.set(i, j, qr.get(i, j));\n } else if (i === j) {\n X.set(i, j, this.Rdiag[i]);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get orthogonalMatrix() {\n let qr = this.QR;\n let rows = qr.rows;\n let columns = qr.columns;\n let X = new Matrix(rows, columns);\n let i, j, k, s;\n\n for (k = columns - 1; k >= 0; k--) {\n for (i = 0; i < rows; i++) {\n X.set(i, k, 0);\n }\n X.set(k, k, 1);\n for (j = k; j < columns; j++) {\n if (qr.get(k, k) !== 0) {\n s = 0;\n for (i = k; i < rows; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n\n s = -s / qr.get(k, k);\n\n for (i = k; i < rows; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n }\n return X;\n }\n}\n\nclass SingularValueDecomposition {\n constructor(value, options = {}) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n if (value.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let m = value.rows;\n let n = value.columns;\n\n const {\n computeLeftSingularVectors = true,\n computeRightSingularVectors = true,\n autoTranspose = false,\n } = options;\n\n let wantu = Boolean(computeLeftSingularVectors);\n let wantv = Boolean(computeRightSingularVectors);\n\n // Work on the transpose of the input so the hot inner loops (which iterate\n // over rows for a fixed column) scan memory sequentially in the row-major\n // backing store. `at` holds the transpose: at.get(j, i) === a.get(i, j)\n // where `a` is the logical m x n working matrix.\n let swapped = false;\n let at;\n if (m < n) {\n if (!autoTranspose) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n );\n at = value.transpose();\n } else {\n at = value.clone();\n m = value.columns;\n n = value.rows;\n swapped = true;\n let aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n at = value.transpose();\n }\n\n let nu = Math.min(m, n);\n let ni = Math.min(m + 1, n);\n let s = new Float64Array(ni);\n // U and V are stored transposed during the computation so the inner loops\n // (which always vary the row index) scan memory sequentially. They are\n // transposed back to their logical layout before being returned.\n // Ut.get(j, i) === U.get(i, j) and Vt.get(j, i) === V.get(i, j).\n let U = new Matrix(nu, m);\n let V = new Matrix(n, n);\n\n let e = new Float64Array(n);\n let work = new Float64Array(m);\n\n let si = new Float64Array(ni);\n for (let i = 0; i < ni; i++) si[i] = i;\n\n let nct = Math.min(m - 1, n);\n let nrt = Math.max(0, Math.min(n - 2, m));\n let mrc = Math.max(nct, nrt);\n\n for (let k = 0; k < mrc; k++) {\n if (k < nct) {\n s[k] = 0;\n for (let i = k; i < m; i++) {\n s[k] = hypotenuse(s[k], at.get(k, i));\n }\n if (s[k] !== 0) {\n if (at.get(k, k) < 0) {\n s[k] = -s[k];\n }\n for (let i = k; i < m; i++) {\n at.set(k, i, at.get(k, i) / s[k]);\n }\n at.set(k, k, at.get(k, k) + 1);\n }\n s[k] = -s[k];\n }\n\n for (let j = k + 1; j < n; j++) {\n if (k < nct && s[k] !== 0) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += at.get(k, i) * at.get(j, i);\n }\n t = -t / at.get(k, k);\n for (let i = k; i < m; i++) {\n at.set(j, i, at.get(j, i) + t * at.get(k, i));\n }\n }\n e[j] = at.get(j, k);\n }\n\n if (wantu && k < nct) {\n for (let i = k; i < m; i++) {\n U.set(k, i, at.get(k, i));\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (let i = k + 1; i < n; i++) {\n e[k] = hypotenuse(e[k], e[i]);\n }\n if (e[k] !== 0) {\n if (e[k + 1] < 0) {\n e[k] = 0 - e[k];\n }\n for (let i = k + 1; i < n; i++) {\n e[i] /= e[k];\n }\n e[k + 1] += 1;\n }\n e[k] = -e[k];\n if (k + 1 < m && e[k] !== 0) {\n for (let i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < n; j++) {\n work[i] += e[j] * at.get(j, i);\n }\n }\n for (let j = k + 1; j < n; j++) {\n let t = -e[j] / e[k + 1];\n for (let i = k + 1; i < m; i++) {\n at.set(j, i, at.get(j, i) + t * work[i]);\n }\n }\n }\n if (wantv) {\n for (let i = k + 1; i < n; i++) {\n V.set(k, i, e[i]);\n }\n }\n }\n }\n\n let p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = at.get(nct, nct);\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = at.get(p - 1, nrt);\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (let j = nct; j < nu; j++) {\n for (let i = 0; i < m; i++) {\n U.set(j, i, 0);\n }\n U.set(j, j, 1);\n }\n for (let k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (let j = k + 1; j < nu; j++) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += U.get(k, i) * U.get(j, i);\n }\n t = -t / U.get(k, k);\n for (let i = k; i < m; i++) {\n U.set(j, i, U.get(j, i) + t * U.get(k, i));\n }\n }\n for (let i = k; i < m; i++) {\n U.set(k, i, -U.get(k, i));\n }\n U.set(k, k, 1 + U.get(k, k));\n for (let i = 0; i < k - 1; i++) {\n U.set(k, i, 0);\n }\n } else {\n for (let i = 0; i < m; i++) {\n U.set(k, i, 0);\n }\n U.set(k, k, 1);\n }\n }\n }\n\n if (wantv) {\n for (let k = n - 1; k >= 0; k--) {\n if (k < nrt && e[k] !== 0) {\n for (let j = k + 1; j < n; j++) {\n let t = 0;\n for (let i = k + 1; i < n; i++) {\n t += V.get(k, i) * V.get(j, i);\n }\n t = -t / V.get(k, k + 1);\n for (let i = k + 1; i < n; i++) {\n V.set(j, i, V.get(j, i) + t * V.get(k, i));\n }\n }\n }\n for (let i = 0; i < n; i++) {\n V.set(k, i, 0);\n }\n V.set(k, k, 1);\n }\n }\n\n let pp = p - 1;\n let eps = Number.EPSILON;\n while (p > 0) {\n let k, kase;\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n const alpha =\n Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n let ks;\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n let t =\n (ks !== p ? Math.abs(e[ks]) : 0) +\n (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n if (Math.abs(s[ks]) <= eps * t) {\n s[ks] = 0;\n break;\n }\n }\n if (ks === k) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n k = ks;\n }\n }\n\n k++;\n\n switch (kase) {\n case 1: {\n let f = e[p - 2];\n e[p - 2] = 0;\n for (let j = p - 2; j >= k; j--) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n if (j !== k) {\n f = -sn * e[j - 1];\n e[j - 1] = cs * e[j - 1];\n }\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(j, i) + sn * V.get(p - 1, i);\n V.set(p - 1, i, -sn * V.get(j, i) + cs * V.get(p - 1, i));\n V.set(j, i, t);\n }\n }\n }\n break;\n }\n case 2: {\n let f = e[k - 1];\n e[k - 1] = 0;\n for (let j = k; j < p; j++) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(j, i) + sn * U.get(k - 1, i);\n U.set(k - 1, i, -sn * U.get(j, i) + cs * U.get(k - 1, i));\n U.set(j, i, t);\n }\n }\n }\n break;\n }\n case 3: {\n const scale = Math.max(\n Math.abs(s[p - 1]),\n Math.abs(s[p - 2]),\n Math.abs(e[p - 2]),\n Math.abs(s[k]),\n Math.abs(e[k]),\n );\n const sp = s[p - 1] / scale;\n const spm1 = s[p - 2] / scale;\n const epm1 = e[p - 2] / scale;\n const sk = s[k] / scale;\n const ek = e[k] / scale;\n const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n const c = sp * epm1 * (sp * epm1);\n let shift = 0;\n if (b !== 0 || c !== 0) {\n if (b < 0) {\n shift = 0 - Math.sqrt(b * b + c);\n } else {\n shift = Math.sqrt(b * b + c);\n }\n shift = c / (b + shift);\n }\n let f = (sk + sp) * (sk - sp) + shift;\n let g = sk * ek;\n for (let j = k; j < p - 1; j++) {\n let t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n let cs = f / t;\n let sn = g / t;\n if (j !== k) {\n e[j - 1] = t;\n }\n f = cs * s[j] + sn * e[j];\n e[j] = cs * e[j] - sn * s[j];\n g = sn * s[j + 1];\n s[j + 1] = cs * s[j + 1];\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(j, i) + sn * V.get(j + 1, i);\n V.set(j + 1, i, -sn * V.get(j, i) + cs * V.get(j + 1, i));\n V.set(j, i, t);\n }\n }\n t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n cs = f / t;\n sn = g / t;\n s[j] = t;\n f = cs * e[j] + sn * s[j + 1];\n s[j + 1] = -sn * e[j] + cs * s[j + 1];\n g = sn * e[j + 1];\n e[j + 1] = cs * e[j + 1];\n if (wantu && j < m - 1) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(j, i) + sn * U.get(j + 1, i);\n U.set(j + 1, i, -sn * U.get(j, i) + cs * U.get(j + 1, i));\n U.set(j, i, t);\n }\n }\n }\n e[p - 2] = f;\n break;\n }\n case 4: {\n if (s[k] <= 0) {\n s[k] = s[k] < 0 ? -s[k] : 0;\n if (wantv) {\n for (let i = 0; i <= pp; i++) {\n V.set(k, i, -V.get(k, i));\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n let t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && k < n - 1) {\n for (let i = 0; i < n; i++) {\n t = V.get(k + 1, i);\n V.set(k + 1, i, V.get(k, i));\n V.set(k, i, t);\n }\n }\n if (wantu && k < m - 1) {\n for (let i = 0; i < m; i++) {\n t = U.get(k + 1, i);\n U.set(k + 1, i, U.get(k, i));\n U.set(k, i, t);\n }\n }\n k++;\n }\n p--;\n break;\n }\n // no default\n }\n }\n\n // Restore the logical (row-major) layout of the singular vectors, which were\n // accumulated in transposed storage for cache-sequential inner loops. V is\n // always square and U is square whenever the input is, so this is done in\n // place (no allocation) in the common case.\n U = U.isSquare() ? transposeSquareInPlace(U) : U.transpose();\n V = transposeSquareInPlace(V);\n\n if (swapped) {\n let tmp = V;\n V = U;\n U = tmp;\n }\n\n this.m = m;\n this.n = n;\n this.s = s;\n this.U = U;\n this.V = V;\n }\n\n solve(value) {\n let Y = value;\n let e = this.threshold;\n let scols = this.s.length;\n let Ls = Matrix.zeros(scols, scols);\n\n for (let i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls.set(i, i, 0);\n } else {\n Ls.set(i, i, 1 / this.s[i]);\n }\n }\n\n let U = this.U;\n let V = this.rightSingularVectors;\n\n let VL = V.mmul(Ls);\n let vrows = V.rows;\n let urows = U.rows;\n let VLU = Matrix.zeros(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < scols; k++) {\n sum += VL.get(i, k) * U.get(j, k);\n }\n VLU.set(i, j, sum);\n }\n }\n\n return VLU.mmul(Y);\n }\n\n solveForDiagonal(value) {\n return this.solve(Matrix.diag(value));\n }\n\n inverse() {\n let V = this.V;\n let e = this.threshold;\n let vrows = V.rows;\n let vcols = V.columns;\n let X = new Matrix(vrows, this.s.length);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X.set(i, j, V.get(i, j) / this.s[j]);\n }\n }\n }\n\n let U = this.U;\n\n let urows = U.rows;\n let ucols = U.columns;\n let Y = new Matrix(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < ucols; k++) {\n sum += X.get(i, k) * U.get(j, k);\n }\n Y.set(i, j, sum);\n }\n }\n\n return Y;\n }\n\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n\n get norm2() {\n return this.s[0];\n }\n\n get rank() {\n let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n let r = 0;\n let s = this.s;\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n }\n\n get diagonal() {\n return Array.from(this.s);\n }\n\n get threshold() {\n return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n }\n\n get leftSingularVectors() {\n return this.U;\n }\n\n get rightSingularVectors() {\n return this.V;\n }\n\n get diagonalMatrix() {\n return Matrix.diag(this.s);\n }\n}\n\nfunction inverse(matrix, useSVD = false) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (useSVD) {\n return new SingularValueDecomposition(matrix).inverse();\n } else {\n return solve(matrix, Matrix.eye(matrix.rows));\n }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n if (useSVD) {\n return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n } else {\n return leftHandSide.isSquare()\n ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n : new QrDecomposition(leftHandSide).solve(rightHandSide);\n }\n}\n\nfunction determinant(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isSquare()) {\n if (matrix.columns === 0) {\n return 1;\n }\n\n let a, b, c, d;\n if (matrix.columns === 2) {\n // 2 x 2 matrix\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(1, 0);\n d = matrix.get(1, 1);\n\n return a * d - b * c;\n } else if (matrix.columns === 3) {\n // 3 x 3 matrix\n let subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(0, 2);\n\n return (\n a * determinant(subMatrix0) -\n b * determinant(subMatrix1) +\n c * determinant(subMatrix2)\n );\n } else {\n // general purpose determinant using the LU decomposition\n return new LuDecomposition(matrix).determinant;\n }\n } else {\n throw Error('determinant can only be calculated for a square matrix');\n }\n}\n\nfunction xrange(n, exception) {\n let range = [];\n for (let i = 0; i < n; i++) {\n if (i !== exception) {\n range.push(i);\n }\n }\n return range;\n}\n\nfunction dependenciesOneRow(\n error,\n matrix,\n index,\n thresholdValue = 10e-10,\n thresholdError = 10e-10,\n) {\n if (error > thresholdError) {\n return new Array(matrix.rows + 1).fill(0);\n } else {\n let returnArray = matrix.addRow(index, [0]);\n for (let i = 0; i < returnArray.rows; i++) {\n if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n returnArray.set(i, 0, 0);\n }\n }\n return returnArray.to1DArray();\n }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n matrix = Matrix.checkMatrix(matrix);\n\n let n = matrix.rows;\n let results = new Matrix(n, n);\n\n for (let i = 0; i < n; i++) {\n let b = Matrix.columnVector(matrix.getRow(i));\n let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n let svd = new SingularValueDecomposition(Abis);\n let x = svd.solve(b);\n let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n results.setRow(\n i,\n dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n );\n }\n return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n // (0xn)*(nx0)*(0xn) = 0xn\n // (nx0)*(0xn)*(nx0) = nx0\n return matrix.transpose();\n }\n let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n let U = svdSolution.leftSingularVectors;\n let V = svdSolution.rightSingularVectors;\n let s = svdSolution.diagonal;\n\n for (let i = 0; i < s.length; i++) {\n if (Math.abs(s[i]) > threshold) {\n s[i] = 1.0 / s[i];\n } else {\n s[i] = 0.0;\n }\n }\n\n return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n const { center = true } = options;\n if (center) {\n xMatrix = xMatrix.center('column');\n if (!yIsSame) {\n yMatrix = yMatrix.center('column');\n }\n }\n const cov = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < cov.rows; i++) {\n for (let j = 0; j < cov.columns; j++) {\n cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n }\n }\n return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n\n const { center = true, scale = true } = options;\n if (center) {\n xMatrix.center('column');\n if (!yIsSame) {\n yMatrix.center('column');\n }\n }\n if (scale) {\n xMatrix.scale('column');\n if (!yIsSame) {\n yMatrix.scale('column');\n }\n }\n\n const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n const sdy = yIsSame\n ? sdx\n : yMatrix.standardDeviation('column', { unbiased: true });\n\n const corr = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < corr.rows; i++) {\n for (let j = 0; j < corr.columns; j++) {\n corr.set(\n i,\n j,\n corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n );\n }\n }\n return corr;\n}\n\nclass EigenvalueDecomposition {\n constructor(matrix, options = {}) {\n const { assumeSymmetric = false } = options;\n\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (!matrix.isSquare()) {\n throw new Error('Matrix is not a square matrix');\n }\n\n if (matrix.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let n = matrix.columns;\n let V = new Matrix(n, n);\n let d = new Float64Array(n);\n let e = new Float64Array(n);\n let value = matrix;\n let i, j;\n\n let isSymmetric = false;\n if (assumeSymmetric) {\n isSymmetric = true;\n } else {\n isSymmetric = matrix.isSymmetric();\n }\n\n if (isSymmetric) {\n // tred2/tql2 access V almost exclusively down columns (the row index\n // varies in the hot loops). Storing V transposed turns those into\n // sequential row scans of the row-major backing store; we transpose it\n // back to the logical layout before returning. V.get(j, i) holds the\n // logical V(i, j).\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(j, i, value.get(i, j));\n }\n }\n tred2(n, e, d, V);\n tql2(n, e, d, V);\n // V is square; restore the logical layout in place (no allocation).\n transposeSquareInPlace(V);\n } else {\n // The non-symmetric path (orthes/hqr2) has two O(n^3) phases with opposite\n // memory-layout preferences (the QR sweep favours column-major eigenvectors\n // while the back-transform favours row-major), so a single transposed\n // storage cannot help both. It is left in the original row-major layout.\n let H = new Matrix(n, n);\n let ort = new Float64Array(n);\n for (j = 0; j < n; j++) {\n for (i = 0; i < n; i++) {\n H.set(i, j, value.get(i, j));\n }\n }\n orthes(n, H, ort, V);\n hqr2(n, e, d, V, H);\n }\n\n this.n = n;\n this.e = e;\n this.d = d;\n this.V = V;\n }\n\n get realEigenvalues() {\n return Array.from(this.d);\n }\n\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n\n get eigenvectorMatrix() {\n return this.V;\n }\n\n get diagonalMatrix() {\n let n = this.n;\n let e = this.e;\n let d = this.d;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n X.set(i, j, 0);\n }\n X.set(i, i, d[i]);\n if (e[i] > 0) {\n X.set(i, i + 1, e[i]);\n } else if (e[i] < 0) {\n X.set(i, i - 1, e[i]);\n }\n }\n return X;\n }\n}\n\nfunction tred2(n, e, d, V) {\n let f, g, h, i, j, k, hh, scale;\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(j, n - 1);\n }\n\n for (i = n - 1; i > 0; i--) {\n scale = 0;\n h = 0;\n for (k = 0; k < i; k++) {\n scale = scale + Math.abs(d[k]);\n }\n\n if (scale === 0) {\n e[i] = d[i - 1];\n for (j = 0; j < i; j++) {\n d[j] = V.get(j, i - 1);\n V.set(j, i, 0);\n V.set(i, j, 0);\n }\n } else {\n for (k = 0; k < i; k++) {\n d[k] /= scale;\n h += d[k] * d[k];\n }\n\n f = d[i - 1];\n g = Math.sqrt(h);\n if (f > 0) {\n g = -g;\n }\n\n e[i] = scale * g;\n h = h - f * g;\n d[i - 1] = f - g;\n for (j = 0; j < i; j++) {\n e[j] = 0;\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n V.set(i, j, f);\n g = e[j] + V.get(j, j) * f;\n for (k = j + 1; k <= i - 1; k++) {\n g += V.get(j, k) * d[k];\n e[k] += V.get(j, k) * f;\n }\n e[j] = g;\n }\n\n f = 0;\n for (j = 0; j < i; j++) {\n e[j] /= h;\n f += e[j] * d[j];\n }\n\n hh = f / (h + h);\n for (j = 0; j < i; j++) {\n e[j] -= hh * d[j];\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n g = e[j];\n for (k = j; k <= i - 1; k++) {\n V.set(j, k, V.get(j, k) - (f * e[k] + g * d[k]));\n }\n d[j] = V.get(j, i - 1);\n V.set(j, i, 0);\n }\n }\n d[i] = h;\n }\n\n for (i = 0; i < n - 1; i++) {\n V.set(i, n - 1, V.get(i, i));\n V.set(i, i, 1);\n h = d[i + 1];\n if (h !== 0) {\n for (k = 0; k <= i; k++) {\n d[k] = V.get(i + 1, k) / h;\n }\n\n for (j = 0; j <= i; j++) {\n g = 0;\n for (k = 0; k <= i; k++) {\n g += V.get(i + 1, k) * V.get(j, k);\n }\n for (k = 0; k <= i; k++) {\n V.set(j, k, V.get(j, k) - g * d[k]);\n }\n }\n }\n\n for (k = 0; k <= i; k++) {\n V.set(i + 1, k, 0);\n }\n }\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(j, n - 1);\n V.set(j, n - 1, 0);\n }\n\n V.set(n - 1, n - 1, 1);\n e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n for (i = 1; i < n; i++) {\n e[i - 1] = e[i];\n }\n\n e[n - 1] = 0;\n\n let f = 0;\n let tst1 = 0;\n let eps = Number.EPSILON;\n\n for (l = 0; l < n; l++) {\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n m = l;\n while (m < n) {\n if (Math.abs(e[m]) <= eps * tst1) {\n break;\n }\n m++;\n }\n\n if (m > l) {\n do {\n\n g = d[l];\n p = (d[l + 1] - g) / (2 * e[l]);\n r = hypotenuse(p, 1);\n if (p < 0) {\n r = -r;\n }\n\n d[l] = e[l] / (p + r);\n d[l + 1] = e[l] * (p + r);\n dl1 = d[l + 1];\n h = g - d[l];\n for (i = l + 2; i < n; i++) {\n d[i] -= h;\n }\n\n f = f + h;\n\n p = d[m];\n c = 1;\n c2 = c;\n c3 = c;\n el1 = e[l + 1];\n s = 0;\n s2 = 0;\n for (i = m - 1; i >= l; i--) {\n c3 = c2;\n c2 = c;\n s2 = s;\n g = c * e[i];\n h = c * p;\n r = hypotenuse(p, e[i]);\n e[i + 1] = s * r;\n s = e[i] / r;\n c = p / r;\n p = c * d[i] - s * g;\n d[i + 1] = h + s * (c * g + s * d[i]);\n\n for (k = 0; k < n; k++) {\n h = V.get(i + 1, k);\n V.set(i + 1, k, s * V.get(i, k) + c * h);\n V.set(i, k, c * V.get(i, k) - s * h);\n }\n }\n\n p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n e[l] = s * p;\n d[l] = c * p;\n } while (Math.abs(e[l]) > eps * tst1);\n }\n d[l] = d[l] + f;\n e[l] = 0;\n }\n\n for (i = 0; i < n - 1; i++) {\n k = i;\n p = d[i];\n for (j = i + 1; j < n; j++) {\n if (d[j] < p) {\n k = j;\n p = d[j];\n }\n }\n\n if (k !== i) {\n d[k] = d[i];\n d[i] = p;\n for (j = 0; j < n; j++) {\n p = V.get(i, j);\n V.set(i, j, V.get(k, j));\n V.set(k, j, p);\n }\n }\n }\n}\n\nfunction orthes(n, H, ort, V) {\n let low = 0;\n let high = n - 1;\n let f, g, h, i, j, m;\n let scale;\n\n for (m = low + 1; m <= high - 1; m++) {\n scale = 0;\n for (i = m; i <= high; i++) {\n scale = scale + Math.abs(H.get(i, m - 1));\n }\n\n if (scale !== 0) {\n h = 0;\n for (i = high; i >= m; i--) {\n ort[i] = H.get(i, m - 1) / scale;\n h += ort[i] * ort[i];\n }\n\n g = Math.sqrt(h);\n if (ort[m] > 0) {\n g = -g;\n }\n\n h = h - ort[m] * g;\n ort[m] = ort[m] - g;\n\n for (j = m; j < n; j++) {\n f = 0;\n for (i = high; i >= m; i--) {\n f += ort[i] * H.get(i, j);\n }\n\n f = f / h;\n for (i = m; i <= high; i++) {\n H.set(i, j, H.get(i, j) - f * ort[i]);\n }\n }\n\n for (i = 0; i <= high; i++) {\n f = 0;\n for (j = high; j >= m; j--) {\n f += ort[j] * H.get(i, j);\n }\n\n f = f / h;\n for (j = m; j <= high; j++) {\n H.set(i, j, H.get(i, j) - f * ort[j]);\n }\n }\n\n ort[m] = scale * ort[m];\n H.set(m, m - 1, scale * g);\n }\n }\n\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, i === j ? 1 : 0);\n }\n }\n\n for (m = high - 1; m >= low + 1; m--) {\n if (H.get(m, m - 1) !== 0) {\n for (i = m + 1; i <= high; i++) {\n ort[i] = H.get(i, m - 1);\n }\n\n for (j = m; j <= high; j++) {\n g = 0;\n for (i = m; i <= high; i++) {\n g += ort[i] * V.get(i, j);\n }\n\n g = g / ort[m] / H.get(m, m - 1);\n for (i = m; i <= high; i++) {\n V.set(i, j, V.get(i, j) + g * ort[i]);\n }\n }\n }\n }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n let n = nn - 1;\n let low = 0;\n let high = nn - 1;\n let eps = Number.EPSILON;\n let exshift = 0;\n let norm = 0;\n let p = 0;\n let q = 0;\n let r = 0;\n let s = 0;\n let z = 0;\n let iter = 0;\n let i, j, k, l, m, t, w, x, y;\n let ra, sa, vr, vi;\n let notlast, cdivres;\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n d[i] = H.get(i, i);\n e[i] = 0;\n }\n\n for (j = Math.max(i - 1, 0); j < nn; j++) {\n norm = norm + Math.abs(H.get(i, j));\n }\n }\n\n while (n >= low) {\n l = n;\n while (l > low) {\n s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n if (s === 0) {\n s = norm;\n }\n if (Math.abs(H.get(l, l - 1)) < eps * s) {\n break;\n }\n l--;\n }\n\n if (l === n) {\n H.set(n, n, H.get(n, n) + exshift);\n d[n] = H.get(n, n);\n e[n] = 0;\n n--;\n iter = 0;\n } else if (l === n - 1) {\n w = H.get(n, n - 1) * H.get(n - 1, n);\n p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n q = p * p + w;\n z = Math.sqrt(Math.abs(q));\n H.set(n, n, H.get(n, n) + exshift);\n H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n x = H.get(n, n);\n\n if (q >= 0) {\n z = p >= 0 ? p + z : p - z;\n d[n - 1] = x + z;\n d[n] = d[n - 1];\n if (z !== 0) {\n d[n] = x - w / z;\n }\n e[n - 1] = 0;\n e[n] = 0;\n x = H.get(n, n - 1);\n s = Math.abs(x) + Math.abs(z);\n p = x / s;\n q = z / s;\n r = Math.sqrt(p * p + q * q);\n p = p / r;\n q = q / r;\n\n for (j = n - 1; j < nn; j++) {\n z = H.get(n - 1, j);\n H.set(n - 1, j, q * z + p * H.get(n, j));\n H.set(n, j, q * H.get(n, j) - p * z);\n }\n\n for (i = 0; i <= n; i++) {\n z = H.get(i, n - 1);\n H.set(i, n - 1, q * z + p * H.get(i, n));\n H.set(i, n, q * H.get(i, n) - p * z);\n }\n\n for (i = low; i <= high; i++) {\n z = V.get(i, n - 1);\n V.set(i, n - 1, q * z + p * V.get(i, n));\n V.set(i, n, q * V.get(i, n) - p * z);\n }\n } else {\n d[n - 1] = x + p;\n d[n] = x + p;\n e[n - 1] = z;\n e[n] = -z;\n }\n\n n = n - 2;\n iter = 0;\n } else {\n x = H.get(n, n);\n y = 0;\n w = 0;\n if (l < n) {\n y = H.get(n - 1, n - 1);\n w = H.get(n, n - 1) * H.get(n - 1, n);\n }\n\n if (iter === 10) {\n exshift += x;\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - x);\n }\n s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n // eslint-disable-next-line no-multi-assign\n x = y = 0.75 * s;\n w = -0.4375 * s * s;\n }\n\n if (iter === 30) {\n s = (y - x) / 2;\n s = s * s + w;\n if (s > 0) {\n s = Math.sqrt(s);\n if (y < x) {\n s = -s;\n }\n s = x - w / ((y - x) / 2 + s);\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - s);\n }\n exshift += s;\n // eslint-disable-next-line no-multi-assign\n x = y = w = 0.964;\n }\n }\n\n iter = iter + 1;\n\n m = n - 2;\n while (m >= l) {\n z = H.get(m, m);\n r = x - z;\n s = y - z;\n p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n q = H.get(m + 1, m + 1) - z - r - s;\n r = H.get(m + 2, m + 1);\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n p = p / s;\n q = q / s;\n r = r / s;\n if (m === l) {\n break;\n }\n if (\n Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n eps *\n (Math.abs(p) *\n (Math.abs(H.get(m - 1, m - 1)) +\n Math.abs(z) +\n Math.abs(H.get(m + 1, m + 1))))\n ) {\n break;\n }\n m--;\n }\n\n for (i = m + 2; i <= n; i++) {\n H.set(i, i - 2, 0);\n if (i > m + 2) {\n H.set(i, i - 3, 0);\n }\n }\n\n for (k = m; k <= n - 1; k++) {\n notlast = k !== n - 1;\n if (k !== m) {\n p = H.get(k, k - 1);\n q = H.get(k + 1, k - 1);\n r = notlast ? H.get(k + 2, k - 1) : 0;\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n if (x !== 0) {\n p = p / x;\n q = q / x;\n r = r / x;\n }\n }\n\n if (x === 0) {\n break;\n }\n\n s = Math.sqrt(p * p + q * q + r * r);\n if (p < 0) {\n s = -s;\n }\n\n if (s !== 0) {\n if (k !== m) {\n H.set(k, k - 1, -s * x);\n } else if (l !== m) {\n H.set(k, k - 1, -H.get(k, k - 1));\n }\n\n p = p + s;\n x = p / s;\n y = q / s;\n z = r / s;\n q = q / p;\n r = r / p;\n\n for (j = k; j < nn; j++) {\n p = H.get(k, j) + q * H.get(k + 1, j);\n if (notlast) {\n p = p + r * H.get(k + 2, j);\n H.set(k + 2, j, H.get(k + 2, j) - p * z);\n }\n\n H.set(k, j, H.get(k, j) - p * x);\n H.set(k + 1, j, H.get(k + 1, j) - p * y);\n }\n\n for (i = 0; i <= Math.min(n, k + 3); i++) {\n p = x * H.get(i, k) + y * H.get(i, k + 1);\n if (notlast) {\n p = p + z * H.get(i, k + 2);\n H.set(i, k + 2, H.get(i, k + 2) - p * r);\n }\n\n H.set(i, k, H.get(i, k) - p);\n H.set(i, k + 1, H.get(i, k + 1) - p * q);\n }\n\n for (i = low; i <= high; i++) {\n p = x * V.get(i, k) + y * V.get(i, k + 1);\n if (notlast) {\n p = p + z * V.get(i, k + 2);\n V.set(i, k + 2, V.get(i, k + 2) - p * r);\n }\n\n V.set(i, k, V.get(i, k) - p);\n V.set(i, k + 1, V.get(i, k + 1) - p * q);\n }\n }\n }\n }\n }\n\n if (norm === 0) {\n return;\n }\n\n for (n = nn - 1; n >= 0; n--) {\n p = d[n];\n q = e[n];\n\n if (q === 0) {\n l = n;\n H.set(n, n, 1);\n for (i = n - 1; i >= 0; i--) {\n w = H.get(i, i) - p;\n r = 0;\n for (j = l; j <= n; j++) {\n r = r + H.get(i, j) * H.get(j, n);\n }\n\n if (e[i] < 0) {\n z = w;\n s = r;\n } else {\n l = i;\n if (e[i] === 0) {\n H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n t = (x * s - z * r) / q;\n H.set(i, n, t);\n H.set(\n i + 1,\n n,\n Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n );\n }\n\n t = Math.abs(H.get(i, n));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n } else if (q < 0) {\n l = n - 1;\n\n if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n H.set(n - 1, n - 1, q / H.get(n, n - 1));\n H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n } else {\n cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n H.set(n - 1, n - 1, cdivres[0]);\n H.set(n - 1, n, cdivres[1]);\n }\n\n H.set(n, n - 1, 0);\n H.set(n, n, 1);\n for (i = n - 2; i >= 0; i--) {\n ra = 0;\n sa = 0;\n for (j = l; j <= n; j++) {\n ra = ra + H.get(i, j) * H.get(j, n - 1);\n sa = sa + H.get(i, j) * H.get(j, n);\n }\n\n w = H.get(i, i) - p;\n\n if (e[i] < 0) {\n z = w;\n r = ra;\n s = sa;\n } else {\n l = i;\n if (e[i] === 0) {\n cdivres = cdiv(-ra, -sa, w, q);\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n vi = (d[i] - p) * 2 * q;\n if (vr === 0 && vi === 0) {\n vr =\n eps *\n norm *\n (Math.abs(w) +\n Math.abs(q) +\n Math.abs(x) +\n Math.abs(y) +\n Math.abs(z));\n }\n cdivres = cdiv(\n x * r - z * ra + q * sa,\n x * s - z * sa - q * ra,\n vr,\n vi,\n );\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n H.set(\n i + 1,\n n - 1,\n (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n );\n H.set(\n i + 1,\n n,\n (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n );\n } else {\n cdivres = cdiv(\n -r - y * H.get(i, n - 1),\n -s - y * H.get(i, n),\n z,\n q,\n );\n H.set(i + 1, n - 1, cdivres[0]);\n H.set(i + 1, n, cdivres[1]);\n }\n }\n\n t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n - 1, H.get(j, n - 1) / t);\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n }\n }\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n for (j = i; j < nn; j++) {\n V.set(i, j, H.get(i, j));\n }\n }\n }\n\n for (j = nn - 1; j >= low; j--) {\n for (i = low; i <= high; i++) {\n z = 0;\n for (k = low; k <= Math.min(j, high); k++) {\n z = z + V.get(i, k) * H.get(k, j);\n }\n V.set(i, j, z);\n }\n }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n let r, d;\n if (Math.abs(yr) > Math.abs(yi)) {\n r = yi / yr;\n d = yr + r * yi;\n return [(xr + r * xi) / d, (xi - r * xr) / d];\n } else {\n r = yr / yi;\n d = yi + r * yr;\n return [(r * xr + xi) / d, (r * xi - xr) / d];\n }\n}\n\nclass CholeskyDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n if (!value.isSymmetric()) {\n throw new Error('Matrix is not symmetric');\n }\n\n let a = value;\n let dimension = a.rows;\n let l = new Matrix(dimension, dimension);\n let positiveDefinite = true;\n let i, j, k;\n\n for (j = 0; j < dimension; j++) {\n let d = 0;\n for (k = 0; k < j; k++) {\n let s = 0;\n for (i = 0; i < k; i++) {\n s += l.get(k, i) * l.get(j, i);\n }\n s = (a.get(j, k) - s) / l.get(k, k);\n l.set(j, k, s);\n d = d + s * s;\n }\n\n d = a.get(j, j) - d;\n\n positiveDefinite &&= d > 0;\n l.set(j, j, Math.sqrt(Math.max(d, 0)));\n for (k = j + 1; k < dimension; k++) {\n l.set(j, k, 0);\n }\n }\n\n this.L = l;\n this.positiveDefinite = positiveDefinite;\n }\n\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n\n solve(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let l = this.L;\n let dimension = l.rows;\n\n if (value.rows !== dimension) {\n throw new Error('Matrix dimensions do not match');\n }\n if (this.isPositiveDefinite() === false) {\n throw new Error('Matrix is not positive definite');\n }\n\n let count = value.columns;\n let B = value.clone();\n let i, j, k;\n\n for (k = 0; k < dimension; k++) {\n for (j = 0; j < count; j++) {\n for (i = 0; i < k; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n for (k = dimension - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n for (i = k + 1; i < dimension; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n return B;\n }\n\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\n\nclass nipals {\n constructor(X, options = {}) {\n X = WrapperMatrix2D.checkMatrix(X);\n let { Y } = options;\n const {\n scaleScores = false,\n maxIterations = 1000,\n terminationCriteria = 1e-10,\n } = options;\n\n let u;\n if (Y) {\n if (isAnyArray(Y) && typeof Y[0] === 'number') {\n Y = Matrix.columnVector(Y);\n } else {\n Y = WrapperMatrix2D.checkMatrix(Y);\n }\n if (Y.rows !== X.rows) {\n throw new Error('Y should have the same number of rows as X');\n }\n u = Y.getColumnVector(0);\n } else {\n u = X.getColumnVector(0);\n }\n\n let diff = 1;\n let t, q, w, tOld;\n\n for (\n let counter = 0;\n counter < maxIterations && diff > terminationCriteria;\n counter++\n ) {\n w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n w = w.div(w.norm());\n\n t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n if (counter > 0) {\n diff = t.clone().sub(tOld).pow(2).sum();\n }\n tOld = t.clone();\n\n if (Y) {\n q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n q = q.div(q.norm());\n\n u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n } else {\n u = t;\n }\n }\n\n if (Y) {\n let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n p = p.div(p.norm());\n let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n let yResidual = Y.clone().sub(\n t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n );\n\n this.t = t;\n this.p = p.transpose();\n this.w = w.transpose();\n this.q = q;\n this.u = u;\n this.s = t.transpose().mmul(t);\n this.xResidual = xResidual;\n this.yResidual = yResidual;\n this.betas = residual;\n } else {\n this.w = w.transpose();\n this.s = t.transpose().mmul(t).sqrt();\n if (scaleScores) {\n this.t = t.clone().div(this.s.get(0, 0));\n } else {\n this.t = t;\n }\n this.xResidual = X.sub(t.mmul(w.transpose()));\n }\n }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n//# sourceMappingURL=matrix.js.map\n"],"names":["matrix","toString","isAnyArray","value","tag","max","input","options","fromIndex","toIndex","maxValue","i","min","minValue","rescale","output","currentMin","currentMax","factor","indent","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","inspectData","rows","columns","maxI","maxJ","result","loop","j","line","formatNumber","num","formatNumber2","len","str","fix","exp","installMathOperations","AbstractMatrix","Matrix","arg0","checkRowIndex","index","outer","checkColumnIndex","checkRowVector","vector","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","length","array","name","checkNonEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","x","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","newRows","newColumns","newData","newMatrix","row","column","random","interval","data","l","matrix1","matrix2","callback","copy","previousColumn","isEchelonForm","checked","isReducedEchelonForm","k","h","iMax","tmp","m","n","p","pivot","row1","row2","temp","column1","column2","by","idx","diag","type","vector2","vector1","dot","other","Bcolj","s","gramData","offset","rowj","scalar","bb","e","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","y","r1","c1","r2","c2","embed","mat","r","c","resultat","blockMult","a","b","halfRows","halfCols","middle","first","last","q","AxI","IxB","compareFunction","compareNumbers","indices","rowIndex","columnIndex","trace","from","to","center","col","isArrayOfNumbers","element","#initData","nRows","nColumns","arrayData","newRow","SymmetricMatrix","#matrix","diagonalSize","mask","sidesToRemove","passthroughs","sideIndex","compact","compactSize","DistanceMatrix","sideSize","compactLength","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","count","X","determinant","transposeSquareInPlace","rowI","hypotenuse","QrDecomposition","qr","rdiag","nrm","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","wantv","swapped","at","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","kase","alpha","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","g","Y","scols","Ls","VL","vrows","urows","VLU","vcols","ucols","tol","ii","inverse","useSVD","solve","leftHandSide","rightHandSide","d","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","pseudoInverse","threshold","svdSolution","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","isSymmetric","tred2","tql2","H","ort","orthes","hqr2","hh","dl1","c3","el1","s2","tst1","low","high","nn","exshift","norm","z","iter","w","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","B","nipals","scaleScores","maxIterations","terminationCriteria","u","diff","tOld","counter","xResidual","residual","yResidual"],"mappings":"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","x_google_ignoreList":[0]}
|