What would be a simple way to model a curved funnel? I'd like to model a surface like this curved funnel (pic from Wolfram Math World):



So far I've tried starting with a cone, subdividing it and scaling down successive rings of vertices, but it's a bit fiddly and the result wasn't great. Ideally I'd like a solution which doesn't involve too much vertex selection, so that I can implement it via the API.

Can anyone think of a better way?
You could make a bent line in the XY plane for example (1), a subdivision surface modifier and use a screw modifier (2) with 


screw : 0
steps : as you like 
angle : 360


(1)


(2)