or download this
$z = -(0x10000000000000000 - $i) if 0x8000000000000000 & $i;
# line 115
Integer overflow in hexadecimal number at ./testgen line 115 (#1) (W o
+verflow) The hexadecimal, octal or binary number you have specified e
+ither as a literal or as an argument to hex() or oct() is too big for
+ your architecture, and has been converted to a floating point number
+. On a 32-bit architecture the largest hexadecimal, octal or binary n
+umber representable without overflow is 0xFFFFFFFF, 037777777777, or
+0b11111111111111111111111111111111 respectively. Note that Perl tran
+sparently promotes all numbers to a floating point representation in
+ternally--subject to loss of precision errors in subsequent operation
+s.