fix: resolve 32-bit truncation overflow in BigInt coordinate math

- Replaced 32-bit bitwise shifts (<<) with Math.pow() and BigInt shifts to support large nsides without modulo overflow.
- Recalculated compress_bits and spread_bits to explicitly loop 64-bit indexes rather than truncating with 8-bit Uint16Array table lookups (ctab/utab).
- Restored original C/C++ geographic precision boundaries allowing the engine to successfully encode and decode high-precision pixels natively up to Order 52.
This commit is contained in:
2026-03-06 20:40:18 +00:00
parent b19b253e68
commit 8419cae71b
4 changed files with 795 additions and 650 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ node_modules/
.npmrc
*.log
.DS_Store
dist

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gkucmierz/healpixjs-bigint",
"version": "1.0.0",
"version": "1.0.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@gkucmierz/healpixjs-bigint",
"version": "1.0.0",
"version": "1.0.2",
"license": "MIT"
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@gkucmierz/healpixjs-bigint",
"version": "1.0.1",
"version": "1.0.2",
"description": "True BigInt port of healpixjs supporting orders beyond the 32-bit (<=14) limit",
"keywords": [
"healpix",
@@ -31,4 +31,4 @@
},
"author": "Grzegorz Kućmierz",
"license": "MIT"
}
}

File diff suppressed because it is too large Load Diff