This may be a case of intermediary math issues, where the program is storing theresults as the wrong type as it calculates the answer.
To explain what I’m speaking of, think of how that end result is PROCESSED.
z = 7 ^ 19
Somewhere in our math processors, the computer will take those two numbers (7 and 19) and then process them according to the operator between them…
z is an INTEGER64, as you’ve defined it, but what are 7 and 19?? I’m thinking they’re probably SINGLE values, since that’s what QB64 types are by default. If so, what do you think the internal registers use to store the result of a SINGLE raised to a SINGLE?
I’d imagine that intermediate step would store the math result in a SINGLE, and your end result is so large you lose perfect precision.
I’m not at a PC right now (and my ipad can’t compile QB64 programs), but see what the results look like if you specify 7 and 19 as INT64 values:
z = 7&& ^ 19&&
It may end up making a world of difference!