Sorry to see Ryster go. I'm world's worst programmer in that I have very little understanding sometimes as to why somethings work and why some don't work. The issue Ryster raised I have come across before - clueless as to why it worked in Qbasic and not QB64x64, so just threw different things at it until I found the Round function solved my problem. I was hoping this thread would give some more insight and walla the "specific system architecture" was raised.
So is that referring to the OS of Windows, Apple, Android etc, or Hardware installed in a computer, or is that referring to how QB64 deals with 32 bit values or 64 bit values applying the same operation (ie 10 x 354 is handled differently if using QB64x32 v's using QB64x64).
At the end of the day, QB64 just translates BAS code to C code. mingw is the compiler we use to then compile that C code to an EXE.
GENERALLY SPEAKING: *
G++ 32-bit uses the 80-bit precision X87 FPU math processors by default.
G++ 64-bit uses 64-bit precision SSE2 math processors by default, as they’re much faster.
That gives us a noticeable difference in results as the precision limits are different. Usually this is a difference of something like 0.000000002 or such, and it’s hardly noticeable — BUT when rounding it can cause a huge change in values.
INT(15.9999999999999999) = 15
INT(16.0000000000000001) = 16
Only .0000000000000002 difference in those values, but their INT value is quite different.
* You notice I mentioned GENERALLY SPEAKING above?? That’s because various machines and OSes have different architecture that they default to. From what I’ve heard, Mac OS X and up all use 64-bit SSE2 processing — even on 32-bit Macs...
If one wants to alter these type of default behaviors, they usually just need to set the proper flags to tell the compiler ”I want the slower, 80-bit FPU math, rather than the faster 64-bit SSE2 math”.