GPUs do math in fp32 at best, and new gens can run at fp16 modes.
The data returned from the API you can obtain in 32 bit float binary by using the base64 return type from embeddings. It’s about 7 significant digits.
A 32-bit floating-point number is represented according to the IEEE 754 standard. This standard specifies that the 32 bits are divided into three parts: 1 bit for the sign, 8 bits for the exponent, and 23 bits for the fraction, also known as the significand or mantissa.
The number of significant decimal digits that can be represented by a 32-bit float is derived from the number of bits in the fraction part. This is because the fraction part carries the precision of the floating-point number.
The formula to convert the bit length to decimal digit length is D = \log_{10}(2^B), where D is the number of decimal digits and B is the number of binary digits, or bits.
If we substitute B=23 into the formula (since there are 23 bits in the fraction part), we get D = \log_{10}(2^{23}).
Calculating this expression, we find that D is approximately 6.924. A 32-bit float can represent approximately 6.92 significant decimal digits.
(-gpt4)
more math fun
A 32-bit floating-point number is represented according to the IEEE 754 standard. This standard specifies that the 32 bits are divided into three parts: 1 bit for the sign, 8 bits for the exponent, and 23 bits for the fraction, also known as the significand or mantissa.
The floating-point representation is essentially a form of scientific notation, base 2. A number is represented as 1.f \times 2^e, where f is the fraction and e is the exponent. The fraction is a binary fraction, and the exponent is a power of 2.
Even when the fraction part is very short (or even just 1), the resulting decimal number can be irrational. This is because the conversion from a binary fraction to a decimal fraction can result in an infinite repeating decimal.
For example, consider the simple binary fraction 0.1 (in binary). This is equivalent to 1/2 in decimal. But if we consider a binary fraction like 0.01, this is equivalent to 1/4 in decimal. And a binary fraction like 0.001 is equivalent to 1/8 in decimal.
As you can see, each successive binary fraction corresponds to a decimal fraction that is a power of 2. But not all powers of 2 can be represented as finite decimal fractions. For example, 1/10 in binary is an infinite repeating fraction, 0.00011001100110011… and so on.
Therefore, even a simple binary fraction can result in an irrational decimal number when converted.
(the AI kind of lost the plan here…)