Map() function for curve

SouthernAtHeart:
Thanks. I think I will need to do it with variables though, as my high and low limits can change, depending on other factors (READING is from neutralVal to MaxVal rather than 0 to 1024) .

For a range of NeutralVal to MaxVal I would try something like this:

unsigned long NeutralVal, MaxVal;
unsigned long SQmax = (MaxVal-NeutralVal) * (MaxVal-NeutralVal);

unsigned long reading = analogRead(inputPin) - NeutralVal; 
reading = reading * reading; 
reading = reading / (SQmax / 799);

Of course if your 'reading' ever goes below NeutralVal you will cause an underflow (trying to store a negative number in an unsigned variable).