Naruyoko / OmegaNum.js

A huge number library holding up to 10{1000}9e15. A basement for planned {10,x,1,2}.
https://naruyoko.github.io/OmegaNum.js/index.html
MIT License
32 stars 15 forks source link

Wrong results in tetr and arrow #17

Closed hypcos closed 4 years ago

hypcos commented 5 years ago
OmegaNum(10).tetr(1e16).tetr(1e16).toString()
"10^^1e16"
OmegaNum(10).tetr(1e17).tetr(1e16).toString()
"10^^1e16"
OmegaNum(10).arrow(3)(1e16).arrow(3)(1e16).toString()
"10^^^1e16"
OmegaNum(10).arrow(3)(1e17).arrow(3)(1e16).toString()
"10^^^1e16"

I put them in one issue because their points might be identical. You might forget when the "base number" affects result of a hyper-operation. If the base number is large enough, it affects the "top layer" value and thus affects the amount of "layers". For instance, (10^^1e16)^^1e16 = (10^^1e16)^(10^^1e16)^...^(10^^1e16)^(10^^1e16) (1e16-1 single arrows) > 10^10^...10^(10^^1e16) = 10^10^...10^10^10^...10^10 (2e16-1 10's in total).

The correct answer of those four should be around 10^^2e16, 10^^1.1e17, 10^^^2e16, 10^^^1.1e17, respectively.

Naruyoko commented 4 years ago

α 1.0.2

James103 commented 4 years ago

Expected result:

OmegaNum(10).tetr(1e16).tetr(1e16).toString()
"10^^2e16"
OmegaNum(10).tetr(1e17).tetr(1e16).toString()
"10^^1.1e17"
OmegaNum(10).arrow(3)(1e16).arrow(3)(1e16).toString()
"10^^^2e16"
OmegaNum(10).arrow(3)(1e17).arrow(3)(1e16).toString()
"10^^^1.1e17"

My testing from https://naruyoko.github.io/OmegaNum.js/index.html:

OmegaNum(10).tetr(1e16).tetr(1e16).toString()
"10^^2.0000000000000004e16"
OmegaNum(10).tetr(1e17).tetr(1e16).toString()
"10^^1.1000000000000008e17"
OmegaNum(10).arrow(3)(1e16).arrow(3)(1e16).toString()
"10^^^2.0000000000000004e16"
OmegaNum(10).arrow(3)(1e17).arrow(3)(1e16).toString()
"10^^^1.1000000000000008e17"

Results are accurate (to last decimal place).