If you're not changing the ADC's reference voltage with analogReference(), it'll use either 5V or 3.3V depending on exactly which Arduino you've got. That's far above the range the sensor needs, but never mind.
Let's say it's 25 degrees, assume the reference is 5V, and walk through it. 25 degrees will give a voltage of 0.75V, which is 0.15 of the full 5V range, so analogRead will return 153. Dividing that by 1024 gives 0.149. Multiplying by 100 and subtracting 50 gives -35. This is clearly wrong, so there is definitely a problem in the code.
I think your mistake is assuming that tmpVolt is the voltage in volts. It isn't: it's the proportion of the reference voltage. To get the actual voltage, you need to multiply it by 5 (if that's what the reference is). After that, it should work.
Once it's working, it's worth looking at a lower reference voltage. 5V/1024 = 4.88mV, so you're only getting about half a degree per step (with any non-linearity or noise meaning actual performance is less). If you can get 1.25V onto the AREF pin, call AnalogReference(EXTERNAL), and multiply tmpVolt by 1.25 instead of 5, you'll get just over 0.1 degree per step, and still be able to measure temperatures up to 75 degrees.