3 ms·
Potentially, lots! Whenever your computation allows for some small error, or is performed on fractional values (e.g. floating-point) - you could instead imagine
by einpoklum 3y ago
Potentially, lots! Whenever your computation allows for some small error, or is performed on fractional values (e.g. floating-point) - you could instead imagine doing it analogically. Think of the possibilities of zero-cost atomic addition in parallel, for example. Think about having "semi-real" neuronal responses instead of simulating neural network layers via precise binary computations. And then you can go into more exotic things like computing by wave interference patterns and such.
- bee_rider 3y agoIs an analog computer more like a floating point operation, or more like a fixed-point operation (that is; not necessarily one without any decimal place, but maybe one without an exponent field)? IMO it is surprising fixed-point values don’t come up more often… I think we’ve accidentally translated a hardware detail into our software. Floats are only necessary if we have huge dynamic range.
- einpoklum 3y ago> more like a floating point ... or more like a fixed-point ... ? It really depends on what kind of analog hardware you use. Not exactly like either. You would different causes for error: Thermal, inherent indeterminism of interactions, decay/drift of value over time, boundary breaches with values near extrema, etc. > IMO it is surprising fixed-point values don’t come up more often The C++ standard committee has seen a paper on adding those to the language, as a library feature: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0037r6.html https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p00... There's a kind-of-popular fixed-point-math library for the language: https://github.com/MikeLankamp/fpm https://github.com/MikeLankamp/fpm and I'm sure they have received some attention in other languages.
- dahart 3y ago> Floats are only necessary if we have huge dynamic range. Oh it’s not so surprising if you’ve used both floats and fixed a lot. There are very good reasons floats are much more widely used today, and fixed point predates floats so if fixed was better it would come up more often. With fixed point, you always have to think about both the range and the resolution you want to represent, and that’s often a hassle and might require doing difficult analysis (or more likely throwing away precision for safety). Fixed point numbers also have a non-uniform relative precision - the ratio between steps changes across it’s range, and this can be a disadvantage for a lot of computations. The relative precision of fixed is actually kind-of opposite of what most people need, it gets higher the larger the magnitude. Floats are much easier because the relative precision is roughly constant, you always know you have ~7 decimal digits worth of mantissa, and because the range is huge so most people don’t have to worry about overflow or underflow (especially for intermediate results!), and the range goes really small as well, which is useful. Float precision, unlike fixed point, is kind-of scale invariant within the float’s range. It’s not an accident at all that float usage dominates hardware and software, it’s very intentional and people like it. There are good uses for fixed-point too, and they’re used all the time, and it makes use of integer hardware, but on the whole fixed point numbers are much more difficult to use casually than floats.