P.S Sorry, I botched a use case, saying x where I meant y:
```
long x = …, y = a*x*x + b*x + c;
double xf = x, yf = a*xf*xf + b*xf + c;
double yc = clamp(yf, Long.MIN_VALUE, Long.MAX_VALUE);
boolean saturated = false;
if (yc != yf) { // error processing
saturated = true; // or throw an exception
y = yc; // saturate towards the required magnitude
}
```
