This is really just first-year High School Algebra. The basic formula is:

Output = K1 * e^{K2 * Input}Assuming you be reading the Input using 'analogRead' (returns 0-1023) and writing the Output using 'analogWrite' (takes 0-255), then you just need to choose the proper values for K1 and K2. Start with an Input of 0 and set K1 so that Output is sufficiently small (technically it can never be 0). Then use that K1 with an Input of 1023 to set K2 to give 255. Since digitalWrite only takes whole values, you'd round the Output from the formula to the nearest integer.

I would not do the computation in your code on the fly since exp() and floating point math is computationally expensive on an 8-bit AVR. Rather, I'd make a lookup table using Excel, Matlab, etc. Store these values in an array (in PROGMEM if you like) and index them by the value from analogRead. You could probably divide the input value by 2 and make the table half as big without appreciable degradation.

Here's a plot (rounded to integers) of Output vs Input for K1 = 0.4 and K2 = 0.0063124.