encode_real_double
- encode_real_double(n)
- Returns a string of raw bytes representing the given number encoded in IEEE 754 double precision format.
COPY- /// encode_real_double(n)
- //
- // Returns a string of raw bytes representing the given
- // number encoded in IEEE 754 double precision format.
- //
- // n number, real
- //
- /// gmlscripts.pro/license
- {
- var n, str, c, byte, E, M;
- n = argument0;
- if (n == 0) {
- return string_repeat(chr(0),8);
- }
- byte[0] = 0;
- byte[7] = 0;
- if (n < 0) {
- n *= -1;
- byte[7] = byte[7] | $80;
- }
- E = floor(log2(n));
- M = n / power(2,E) - 1;
- E += 1023;
- var i;
- i = 0;
- while (i < 11) {
- if (i < 4) {
- byte[6] = byte[6] | ((E & (1<<i)) << 4);
- } else {
- byte[7] = byte[7] | ((E & (1<<i)) >> 4);
- }
- i += 1;
- }
- i = 51;
- while (i >= 0) {
- M *= 2;
- if (M >= 1) {
- byte[i div 8] = byte[i div 8] | (1<<(i mod 8));
- M -= 1;
- }
- i -= 1;
- }
- str = "";
- for (i = 7; i >= 0; i -= 1) {
- str += chr(byte[i]);
- }
- return str;
- }
Contributors: Yourself
GitHub: View · Commits · Blame · Raw