Implementation of numbers in the language interp/compiler I really like Go's typeless constants. i.e. compile-time numbers are arbitrary precision. It is only when we write them into the executable that a size must be set. So we need a data structure that can hold any number, whether integer or float, with complete decimal or binary precision. A large integer together with large binary and decimal exponents would do it. How large do we make the integer? An array of integers? How precise do we make division? Go doesn't try too hard. We could keep a rational number. So large-int for numerator and denominator, and 'int' for exponent and power. Then we need add, subtract, multiply, GCD, divide for large-int, and add, subtract, multiply, divide for scaled rational.