We've established its a power law with the power potentially varying from 0.5 to 1.5 at least, controlled by an 8 bit variable called speedcurveValue.
float x = analogRead (inpin) / 1024.0 ;
float y = pow (x, speedcurveValue / 128.0) ; // assume speedcurveValue is 128 * the power
analogWrite (outpin, (int) (y * 255)) ;
Is the sort of thing I believe to flesh out previous answer.