I don't this cannot be defined in in an objective and satisfactory way.
We can talk about the behavior of a program as more memory is added to a computer, or more computing time is given. Since we actually contruct proofs about behavior based on the semantics of the language, this is entirely objective. (note that this is not computable, so it cannot be checked entirely autonomously by a computer, but it is still objective and a computer could verify a proof artifact.)
However when it comes to things like floating point precision regardless of how much memory you have a single precision float will always be 4 bytes. This is a semantic property of the language. And ifeven variable length floating point numbers can never represent values beyond binary fractions. If we want to talk about the idealized version of the program we need to decide what semantic changes can be made.
Ideas of the algorithms at play behind any piece of code are inherently subjective. It is up to the humans involved to decide if a correct algorithm is actually represented or if something funny is going on.
If you don't want this subjectivity you can state the ranges required (possibly infinite) that must be supported in the challenge. But I do think that it is okay to let a little subjectivity in. I don't think it is likely that two people in good faith will disagree over the algorithm behind a piece of code. And at that point it is better to take it on a case by case basis instead of trying to create a general rule.