https://www.wired.com/1997/01/did-gates-really-say-640k-is-e...
Then why x86-64 integer instructions default to 32-bit register size when REX prefix byte is not present?
You can double x86 FP throughput using 32-bit floats versus 64 bit ones.
For GPUs, the performance 32-bit float performance advantage can be more than 4-10x (sometimes a lot more).
https://en.wikipedia.org/wiki/Half-precision_floating-point_...
If your algorithm is not stable then even 64-bit won't help you.
Compare Euler vs Verlet - https://en.wikipedia.org/wiki/Verlet_integration
Tn = U_{n-1} * U_{n-2} * .... * U_0 * T_0
After a while,your matrix accumulates errors, but it's easy to just start and take a fresh one.
It really depends on the algorithms in question and the error tolerances.
sometimes as few as 8 bits are needed
It doesn't matter how much resource limits increase, people are going to keep hitting them. And when they hit them, using a smaller data type will always help.
Tell us more about this strange "2018" place!
Unfortunately, it doesn't tend to get used automatically in languages like C. The result of rsqrtss is slightly different from 1/sqrtf(x) as two seperate operations, so it cannot be applied as an optimization.
If the rules for floating point optimization are loosened by passing -ffast-math to GCC, the compiler will use it. That being said, -ffast-math is a shotgun that affects a lot of things. If you need signed zeros, Infs, NaNs or denormals that flag may break your program.
Both reciprocal (inverse) square root SSE SIMD instructions were available in Intel Pentium III, released in 1999.
https://software.intel.com/en-us/articles/reference-implemen...
inverse of the square root (which is just the squaring operation), or
the inverse of some other binary operator, like addition or anything else...
> it could also be interpreted as ... [the] inverse of the square root (which is just the squaring operation)
Since the other obvious interpretation is not very useful and has a clearer name—i.e. “the square”—the term “inverse square root” has only one useful meaning, which is therefore how it’s interpreted. (I don’t follow the second option about binary operators.) Mathematical terminology and notation in general are full of ambiguities which are resolved by extensive contextual knowledge. As noted by a sibling comment, calling it the reciprocal square root would be clearer.
f_inv(f(x)) = x for all x in Domain(f)
g(x) = 1 / sqrt(x) is not the inverse of f(x) = sqrt(x) in this sense.E.g. Puls from 2009: https://www.pouet.net/prod.php?which=53816 (check the youtube link if you don't have an MS-DOS ready)
I understand little about extreme sizecoding, but I suspect it's a similarly obsessed mathy story as this blog post, to double use the same bytes as code and content in a way that things actually work and look great.
What is it: implicit surfaces raymarching using binary search. The shapes get "blown up" according to step size, which fakes the ambient occlusion feel (also necessary for the bisection to work). Color is the number of missed probes minus log(last step size), which had the most bearable artifacts.
- implicit surfaces are surfaces defined as the solution of an equation f(x,y,z)=0
- raymarching is a raytracing technique where you advance step by step along the ray, it is a very common technique for sizecoding. The rest of the description detail the rendering tricks used for shading and coloring.
The "content" does not "use the same byte as code", it is code, in the form of the implicit surface equation.