This program inputs an exponential expression such as s x 2^e where s = significand is a qword double and e is an integer in the range -16383 <= e <= +16384.
For computational purposes this program uses the FPU registers, which are 80-bit floating point registers with the following characteristics:
Register size = 80 bits
Exponent size = 15 bits
Significand size = 64 bits
Bias number = 16383 = (2^14)-1
Base number = -16382
Positive infinity = 2^16384
Prototype of the function written in X86:
When C++ is the caller: extern "C" long int exponentialnumbers();
When C is the caller: extern long int exponentialnumbers();
When X86 is the caller: global exponentialnumbers
mov rax, 0
call exponentialnumbers
Interesting aspect: Run the program and input an extremely large positive exponent or an extremely small negative exponent. Check out the remarkable outcome.