The tangents of the sphere

I have this sphere implementation:


float x = (float) (cos(phi) * cos(theta));
float y = (float) sin(phi);
float z = (float) (cos(phi) * sin(theta));

taken from a source code.
I read: to calculate sphere tangents i must do the partial derivative of x, y, z (in respec to theta). So i should have:


tx = -cos(phi)*sin(theta)
ty = 0
tz = cos(phi)*cos(theta)

if i’m right. But reading the code, here is the adopted solution:


float tx = (float) (sin(phi) * sin(theta));
float ty = (float) -cos(phi);
float tz = (float) (sin(phi) * cos(theta));

Why?

Thank you for the answers and sorry for my english!