{"_id":"@art-suite/art-core-math","_rev":"5-2e81a4d0b4d40cb84bac4af7415025e7","name":"@art-suite/art-core-math","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@art-suite/art-core-math","version":"0.1.0","author":{"name":"Shane Brinkman-Davis Delamore"},"license":"ISC","_id":"@art-suite/art-core-math@0.1.0","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-foundations","bugs":{"url":"https://github.com/art-suite/art-suite-foundations/issues"},"dist":{"shasum":"598b4f3c9d66f814c5b29ee91227f72ab71358f8","tarball":"https://registry.npmjs.org/@art-suite/art-core-math/-/art-core-math-0.1.0.tgz","fileCount":12,"integrity":"sha512-OUv7i4f6eZzxb8/uCbhX4wz5l0dr/IJM7Jae36NJ2mJedkDe1kWUoyfFbihcEoe7Dk1FJ++gDisZ6UC4RbSOsQ==","signatures":[{"sig":"MEUCIGVyijofhzosu/qWhwNwm+cU0EOqNz1mOqOFUBiCdnBVAiEApK2DeGJW67PhF3uaOYGGApGjuWMqLZU85dSth+Z125U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36653},"jest":{"verbose":true,"testEnvironment":"node","collectCoverageFrom":["build/**/*.js","!build/test/**/*.js"],"testPathIgnorePatterns":["/node_modules/","<rootDir>/test"],"coveragePathIgnorePatterns":["/index.js$","/namespace.js$"]},"main":"./build","watch":{"build":{"quiet":false,"patterns":["source"],"extensions":["caf","coffee"]}},"exports":{".":{"import":"./index.mjs","require":"./build/index.js"}},"gitHead":"c6420897fc5e0c6e6d2704f4de06f7a1c1bfdb49","scripts":{"nn":"nn build/* ","test":"jest","build":"rsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build/\ncoffee -m --output build --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn","clean":"rm -rf build/*","test-watch":"jest --watch","build-clean":"# BUILD CLEAN START\n#   - building into: build-temp\n#\nrm -rf ./__build-old__\nrsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build-temp/\ncoffee -m --output build-temp --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build-temp --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn\n\nnn build-temp/*\n\n# BUILD CLEAN FINIALIZING\n#  - replace old build in:   build\n#  - with new build from:    build-temp\n#\nmv build __build-old__\nmv build-temp build\nrm -rf ./__build-old__","build-watch":"nodemon -e js,ts,jsx,tsx,caf,coffee,json -w \"source/**\" -x npm run build"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-foundations.git","type":"git"},"_npmVersion":"10.9.0","description":"The Standard Library for JavaScript that aught to be.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"caffeine-script-runtime":"^1.14.0","neptune-namespaces-runtime":"^3.2.14"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","art-testbench":"^3.2.17","art-build-configurator":"^1.30.4","@art-suite/standard-package-builder":"^1.2.7"},"_npmOperationalInternal":{"tmp":"tmp/art-core-math_0.1.0_1746722606045_0.9785806788291673","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@art-suite/art-core-math","version":"0.1.1","author":{"name":"Shane Brinkman-Davis Delamore"},"license":"ISC","_id":"@art-suite/art-core-math@0.1.1","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-foundations","bugs":{"url":"https://github.com/art-suite/art-suite-foundations/issues"},"dist":{"shasum":"7ff43fda0af8cb047f4bab00ac807e70bc42593d","tarball":"https://registry.npmjs.org/@art-suite/art-core-math/-/art-core-math-0.1.1.tgz","fileCount":12,"integrity":"sha512-vVGwBEdqSJTTEVWUI5twbNVUKwJBD98TGBSdYSUOOY2wcscVLRNsoIG9kEbxIgNLlPFa6LINFHx+htJR7wO3qQ==","signatures":[{"sig":"MEYCIQDdE7jprT7w76HNXJmtqKy20CLnmoj5HLdEIj4xZONctAIhAM85XfGaiXJGWPPWxOshFEll4bZx7T65WubncCiP05D2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36653},"jest":{"verbose":true,"testEnvironment":"node","collectCoverageFrom":["build/**/*.js","!build/test/**/*.js"],"testPathIgnorePatterns":["/node_modules/","<rootDir>/test"],"coveragePathIgnorePatterns":["/index.js$","/namespace.js$"]},"main":"./build","watch":{"build":{"quiet":false,"patterns":["source"],"extensions":["caf","coffee"]}},"exports":{".":{"import":"./index.mjs","require":"./build/index.js"}},"gitHead":"bedd81435373af9778e14146163a6077d4fdcc81","scripts":{"nn":"nn build/* ","test":"jest","build":"rsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build/\ncoffee -m --output build --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn","clean":"rm -rf build/*","test-watch":"jest --watch","build-clean":"# BUILD CLEAN START\n#   - building into: build-temp\n#\nrm -rf ./__build-old__\nrsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build-temp/\ncoffee -m --output build-temp --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build-temp --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn\n\nnn build-temp/*\n\n# BUILD CLEAN FINIALIZING\n#  - replace old build in:   build\n#  - with new build from:    build-temp\n#\nmv build __build-old__\nmv build-temp build\nrm -rf ./__build-old__","build-watch":"nodemon -e js,ts,jsx,tsx,caf,coffee,json -w \"source/**\" -x npm run build"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-foundations.git","type":"git"},"_npmVersion":"10.9.0","description":"The Standard Library for JavaScript that aught to be.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"caffeine-script-runtime":"^1.14.0","neptune-namespaces-runtime":"^3.2.14"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","art-testbench":"^3.2.17","art-build-configurator":"^1.30.4","@art-suite/standard-package-builder":"^1.2.7"},"_npmOperationalInternal":{"tmp":"tmp/art-core-math_0.1.1_1746783863704_0.7793892233440411","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@art-suite/art-core-math","version":"0.1.2","author":{"name":"Shane Brinkman-Davis Delamore"},"license":"ISC","_id":"@art-suite/art-core-math@0.1.2","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-foundations","bugs":{"url":"https://github.com/art-suite/art-suite-foundations/issues"},"dist":{"shasum":"30e336d6ef1849c8c37609226a20e49256734bda","tarball":"https://registry.npmjs.org/@art-suite/art-core-math/-/art-core-math-0.1.2.tgz","fileCount":12,"integrity":"sha512-JuJQbMemjc7xNfgZuCXR86UgTO8Sk8sGldaZx++ek6a9OOC6U+itdEqNMn3m2kw1eBmC8uM51bkLPeEBc51yXQ==","signatures":[{"sig":"MEYCIQDGzJ27950IQvAfLeG5F50hTLqUlJ18Ux6NNQdrEf5QKAIhAL8X0VY16eNpZkeiFfwgtl8TyqF6KUprHIZKwotQTnOe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36653},"jest":{"verbose":true,"testEnvironment":"node","collectCoverageFrom":["build/**/*.js","!build/test/**/*.js"],"testPathIgnorePatterns":["/node_modules/","<rootDir>/test"],"coveragePathIgnorePatterns":["/index.js$","/namespace.js$"]},"main":"./build","watch":{"build":{"quiet":false,"patterns":["source"],"extensions":["caf","coffee"]}},"exports":{".":{"import":"./index.mjs","require":"./build/index.js"}},"gitHead":"a94165479e2a1bce1798e54eabcb679c47599240","scripts":{"nn":"nn build/* ","test":"jest","build":"rsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build/\ncoffee -m --output build --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn","clean":"rm -rf build/*","test-watch":"jest --watch","build-clean":"# BUILD CLEAN START\n#   - building into: build-temp\n#\nrm -rf ./__build-old__\nrsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build-temp/\ncoffee -m --output build-temp --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build-temp --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn\n\nnn build-temp/*\n\n# BUILD CLEAN FINIALIZING\n#  - replace old build in:   build\n#  - with new build from:    build-temp\n#\nmv build __build-old__\nmv build-temp build\nrm -rf ./__build-old__","build-watch":"nodemon -e js,ts,jsx,tsx,caf,coffee,json -w \"source/**\" -x npm run build"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-foundations.git","type":"git"},"_npmVersion":"10.9.0","description":"The Standard Library for JavaScript that aught to be.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"caffeine-script-runtime":"^1.14.0","neptune-namespaces-runtime":"^3.2.14"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","art-testbench":"^3.2.17","art-build-configurator":"^1.30.4","@art-suite/standard-package-builder":"^1.2.7"},"_npmOperationalInternal":{"tmp":"tmp/art-core-math_0.1.2_1746786913539_0.6017885812576362","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@art-suite/art-core-math","version":"0.1.3","author":{"name":"Shane Brinkman-Davis Delamore"},"license":"ISC","_id":"@art-suite/art-core-math@0.1.3","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"homepage":"https://github.com/art-suite/art-suite-foundations","bugs":{"url":"https://github.com/art-suite/art-suite-foundations/issues"},"dist":{"shasum":"45b9b1d29f1c03552a99a34c912bcab2ba4e6ac1","tarball":"https://registry.npmjs.org/@art-suite/art-core-math/-/art-core-math-0.1.3.tgz","fileCount":12,"integrity":"sha512-Jslj+AdYVLx0MMAs2dXQoqXUEsdeOrUj/1mMNSjYX2DoqNEPvvC9OvYgVyd5Q3JF4HiPG/9T4vrQdiylSY5uPg==","signatures":[{"sig":"MEUCIQCFinAAqttyDvAcE0ys1GiHjfb3kC7AyeFkioxK6SA40gIgawn50/pAAQC+aIuxAy8Ts/R89xOPwY2ALQFHZh+zYfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36684},"jest":{"verbose":true,"testEnvironment":"node","collectCoverageFrom":["build/**/*.js","!build/test/**/*.js"],"testPathIgnorePatterns":["/node_modules/","<rootDir>/test"],"coveragePathIgnorePatterns":["/index.js$","/namespace.js$"]},"main":"./build","watch":{"build":{"quiet":false,"patterns":["source"],"extensions":["caf","coffee"]}},"exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./build/index.js"}},"gitHead":"a94165479e2a1bce1798e54eabcb679c47599240","scripts":{"nn":"nn build/* ","test":"jest","build":"rsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build/\ncoffee -m --output build --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn","clean":"rm -rf build/*","test-watch":"jest --watch","build-clean":"# BUILD CLEAN START\n#   - building into: build-temp\n#\nrm -rf ./__build-old__\nrsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build-temp/\ncoffee -m --output build-temp --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build-temp --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn\n\nnn build-temp/*\n\n# BUILD CLEAN FINIALIZING\n#  - replace old build in:   build\n#  - with new build from:    build-temp\n#\nmv build __build-old__\nmv build-temp build\nrm -rf ./__build-old__","build-watch":"nodemon -e js,ts,jsx,tsx,caf,coffee,json -w \"source/**\" -x npm run build"},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"repository":{"url":"git+https://github.com/art-suite/art-suite-foundations.git","type":"git"},"_npmVersion":"10.9.0","description":"The Standard Library for JavaScript that aught to be.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"caffeine-script-runtime":"^1.14.0","neptune-namespaces-runtime":"^3.2.14"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^7.2.0","art-testbench":"^3.2.17","art-build-configurator":"^1.30.4","@art-suite/standard-package-builder":"^1.2.7"},"_npmOperationalInternal":{"tmp":"tmp/art-core-math_0.1.3_1746787423066_0.7998676428268561","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"author":{"name":"Shane Brinkman-Davis Delamore"},"bugs":{"url":"https://github.com/art-suite/art-suite-foundations/issues"},"dependencies":{"caffeine-script-runtime":"^1.14.0","neptune-namespaces-runtime":"^3.2.15"},"description":"The Standard Library for JavaScript that aught to be.","devDependencies":{"@art-suite/standard-package-builder":"^1.2.8","art-build-configurator":"^1.30.5","art-testbench":"^3.2.18","mocha":"^7.2.0"},"exports":{".":{"import":"./index.mjs","require":"./build/index.js","types":"./index.d.ts"}},"homepage":"https://github.com/art-suite/art-suite-foundations","jest":{"collectCoverageFrom":["build/**/*.js","!build/test/**/*.js"],"coveragePathIgnorePatterns":["/index.js$","/namespace.js$"],"testEnvironment":"node","testPathIgnorePatterns":["/node_modules/","<rootDir>/test"],"verbose":true},"license":"ISC","main":"./build","name":"@art-suite/art-core-math","repository":{"type":"git","url":"git+https://github.com/art-suite/art-suite-foundations.git"},"scripts":{"build":"rsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build/\ncoffee -m --output build --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn","build-clean":"# BUILD CLEAN START\n#   - building into: build-temp\n#\nrm -rf ./__build-old__\nrsync -av --exclude='*.caf' --exclude='*.coffee' ./source/ ./build-temp/\ncoffee -m --output build-temp --compile source &\nCOFFEE_PID=$!\ncaf -m -c source -o build-temp --require coffee-script/register&\nCAF_PID=$!\nwait $COFFEE_PID || exit 1\nwait $CAF_PID || exit 1\nnpm run nn\n\nnn build-temp/*\n\n# BUILD CLEAN FINIALIZING\n#  - replace old build in:   build\n#  - with new build from:    build-temp\n#\nmv build __build-old__\nmv build-temp build\nrm -rf ./__build-old__","build-watch":"nodemon -e js,ts,jsx,tsx,caf,coffee,json -w \"source/**\" -x npm run build","clean":"rm -rf build/*","nn":"nn build/* ","test":"jest","test-watch":"jest --watch"},"version":"0.1.4","watch":{"build":{"extensions":["caf","coffee"],"patterns":["source"],"quiet":false}},"gitHead":"3140bf828cabdf379d7c25fc877c26c1608c2409","_id":"@art-suite/art-core-math@0.1.4","_nodeVersion":"24.10.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-g/6y15t0ej64g287xoL9zvEnvbeniRRNbQ1JdaUfNEwWJ1kHNdnFM1gaA9UMYAoKZi0Cd2A2PA21LqJVppTsEQ==","shasum":"7e0ba86c5c219cfcf6382739aa9d21cbe7ef645c","tarball":"https://registry.npmjs.org/@art-suite/art-core-math/-/art-core-math-0.1.4.tgz","fileCount":12,"unpackedSize":36684,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAfQ8uTTgx3wBHvbwaEEeI+GoExiC5VEkb5Oi3cH9dJNAiEA2NU2fMY8A/3JCnz+4DZ3NyF1BesvAK0f1Voe5l6NiyA="}]},"_npmUser":{"name":"shanebdavis","email":"shanebdavis@gmail.com"},"directories":{},"maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/art-core-math_0.1.4_1762507601247_0.7911279020409467"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-08T16:43:25.956Z","modified":"2025-11-07T09:26:41.963Z","0.1.0":"2025-05-08T16:43:26.217Z","0.1.1":"2025-05-09T09:44:23.891Z","0.1.2":"2025-05-09T10:35:13.742Z","0.1.3":"2025-05-09T10:43:43.234Z","0.1.4":"2025-11-07T09:26:41.473Z"},"bugs":{"url":"https://github.com/art-suite/art-suite-foundations/issues"},"author":{"name":"Shane Brinkman-Davis Delamore"},"license":"ISC","homepage":"https://github.com/art-suite/art-suite-foundations","repository":{"type":"git","url":"git+https://github.com/art-suite/art-suite-foundations.git"},"description":"The Standard Library for JavaScript that aught to be.","maintainers":[{"name":"shanebdavis","email":"shanebdavis@gmail.com"}],"readme":"# @art-suite/art-core-math\n\nA high-performance utility library for mathematical operations with a focus on precision management and practical use cases.\n\n## Features\n\n- Consistent handling of floating-point precision issues\n- Specialized comparisons for both absolute and relative values\n- Random number generation utilities with seeding capabilities\n- TypeScript definitions for complete type safety\n\n## Installation\n\n```bash\nnpm install @art-suite/art-core-math\n```\n\n## API Overview\n\n### Basic Math Operations\n\nCore mathematical functions that provide consistent behavior across platforms:\n\n```typescript\n// Absolute value\nabs(value: number): number\n\n// Rounding operations\nfloor(value: number): number\nceil(value: number): number\nround(value: number, decimalPlaces?: number): number\n\n// Integer and fractional parts\niPart(value: number): number   // Integer part\nfPart(value: number): number   // Fractional part\n\n// Min/Max operations\nmin(...values: number[]): number\nmax(...values: number[]): number\nminMagnitude(...values: number[]): number  // Returns value with smallest absolute value\nmaxMagnitude(...values: number[]): number  // Returns value with largest absolute value\n\n// Modulo that works correctly with negative numbers\nmodulo(dividend: number, divisor: number): number  // Unlike % operator, always returns positive result\n```\n\n### Floating-Point Precision Handling\n\nFunctions that deal with floating-point precision issues, which can cause unexpected comparison results:\n\n```typescript\n// Constants for precision thresholds\nfloat32Precision: number  // Precision for 32-bit floats\nfloat64Precision: number  // Precision for 64-bit floats\n\n// Float32 comparison (for 32-bit floating point operations)\nfloat32Eq(a: number, b: number): boolean    // Equal within float32 precision\nfloat32Eq0(value: number): boolean          // Equal to zero within float32 precision\nfloat32Gt(a: number, b: number): boolean    // Greater than, accounting for precision\nfloat32Gte(a: number, b: number): boolean   // Greater than or equal, accounting for precision\nfloat32Lt(a: number, b: number): boolean    // Less than, accounting for precision\nfloat32Lte(a: number, b: number): boolean   // Less than or equal, accounting for precision\nfloat32True0(value: number): number         // Returns 0 if within float32 precision of 0\n\n// Float64 comparison (for standard JavaScript numbers)\nfloatEq(a: number, b: number): boolean      // Equal within float64 precision\nfloatEq0(value: number): boolean            // Equal to zero within float64 precision\nfloatGt(a: number, b: number): boolean      // Greater than, accounting for precision\nfloatGte(a: number, b: number): boolean     // Greater than or equal, accounting for precision\nfloatLt(a: number, b: number): boolean      // Less than, accounting for precision\nfloatLte(a: number, b: number): boolean     // Less than or equal, accounting for precision\nfloatTrue0(value: number): number           // Returns 0 if within float64 precision of 0\n```\n\n### Absolute Value Comparisons\n\nConvenience functions for comparing the absolute values directly:\n\n```typescript\nabsGt(a: number, b: number): boolean     // |a| > b\nabsGte(a: number, b: number): boolean    // |a| >= b\nabsLt(a: number, b: number): boolean     // |a| < b\nabsLte(a: number, b: number): boolean    // |a| <= b\n```\n\n### Value Constraints and Transformations\n\nFunctions for constraining or transforming numeric values:\n\n```typescript\n// Constrain a value between min and max\nbound(value: number, min: number, max: number): number\n\n// Limit the amount a value can change\nmaxChange(value: number, targetValue: number, maxChange: number): number\n\n// Very large number handling\nnearInfinity(): number            // Returns a very large number just below infinity\nnearInfinityResult: number        // Pre-computed result of nearInfinity()\n```\n\n### Random Number Generation\n\nUtilities for generating random values:\n\n```typescript\n// Basic random generation\nrandom(): number                                    // Random number between 0 and 1\nboolRand(): boolean                                // Random boolean (true or false)\nintRand(min: number, max: number): number          // Random integer between min and max inclusive\n\n// Seeded random generation for reproducible sequences\nseededRandomNumberGenerator(seed: number): () => number  // Creates a random generator with a specific seed\n```\n\n### Number Formatting and Conversion\n\nFunctions for formatting numbers as strings and converting between formats:\n\n```typescript\n// String formatting\ncommaize(value: number): string                // Adds commas as thousands separators\nnumberToTightString(value: number): string     // Compact string representation without unnecessary digits\nsimplifyNum(value: number): number             // Removes trailing zeros and decimal point if possible\n\n// Conversion\nstringToNumberArray(str: string): number[]     // Converts a string of numbers to an array of numbers\n```\n\n### Special Utilities\n\nOther mathematical utilities for specific use cases:\n\n```typescript\n// Sequence generator\ncyclingSequenceFunction(sequence: any[]): () => any  // Creates a function that cycles through a sequence\n```\n\n## Examples\n\n### Dealing with Floating-Point Precision\n\n```typescript\nimport { floatEq, floatTrue0 } from \"@art-suite/art-core-math\";\n\n// Floating-point precision issues\n0.1 + 0.2 === 0.3; // false! (equals 0.30000000000000004)\nfloatEq(0.1 + 0.2, 0.3); // true\n\n// Clean up small floating-point errors\nfloatTrue0(1e-16); // 0\n```\n\n### Bounded Values for Animation\n\n```typescript\nimport { bound, maxChange } from \"@art-suite/art-core-math\";\n\n// Ensure value stays within range\nbound(velocity, -maxSpeed, maxSpeed); // Clamping a velocity\n\n// Smooth transitions\nlet currentPosition = 0;\nconst targetPosition = 100;\n\n// Each frame, move toward target with limited change rate\nfunction animationFrame() {\n  currentPosition = maxChange(currentPosition, targetPosition, 5);\n  // This ensures we move at most 5 units per frame\n}\n```\n\n### Consistent Modulo\n\n```typescript\nimport { modulo } from \"@art-suite/art-core-math\";\n\n// JavaScript % operator doesn't behave as expected with negative numbers\n-5 % 12; // -5\nmodulo(-5, 12); // 7 (always gives positive result, better for cyclic values)\n```\n\n### Random Number Generation\n\n```typescript\nimport {\n  random,\n  intRand,\n  seededRandomNumberGenerator,\n} from \"@art-suite/art-core-math\";\n\n// Random value between 0 and 1\nconst probability = random();\n\n// Random integer (inclusive range)\nconst diceRoll = intRand(1, 6);\n\n// Reproducible random sequence\nconst seededRandom = seededRandomNumberGenerator(12345);\nconst value1 = seededRandom(); // Same value every time with seed 12345\nconst value2 = seededRandom(); // Same second value every time\n```\n\n### Number Formatting\n\n```typescript\nimport { commaize, numberToTightString } from \"@art-suite/art-core-math\";\n\n// Add thousands separators\ncommaize(1234567); // \"1,234,567\"\n\n// Compact representation\nnumberToTightString(123.0); // \"123\"\nnumberToTightString(123.45); // \"123.45\"\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}