Aha, you're thinking like me.
That's why I thought I might incorporate surreal numbers into a toy language early on in the compute chain (before even a "normal"/"traditional" numeric implementation) but I've already run into the problem that the naive recursive plus op implementation is pathologically slow in regular cases so I had to hack the surreal integer case to make it faster.
I don't want the entirety of symbolic math, I just want a sufficiently decent implementation of a useful part of it! The surreal numbers interest me because they are said to be able to represent infinitesimals and infinities …
“A computer can't represent reals (or even all rationals you care about) with a finite number of bits.”
This is where my thinking is on this. Because surreal numbers only give you the dyadic rationals exactly it forces you to think about what it means to represent not just exotic numbers like i, √2, π, and e but also non-exotic rationals like the vulgar fraction ⅓. My thinking is that the algorithm(s) that produce ever greater precision for non-exact representations are finite and recursive which means that the more precise you want something you specify how long you want that algorithm to pump out ever more precise values or you specify a number of bits constraint. Not fixed point, not floating point, flexi-point? If you have π to 100 binary places as a dyadic fraction that's a precision above and beyond what anyone would ever need in practice. I'm thinking that when manipulating symbols that the algorithm is manipulated, not the numeric representation!