Rotation data from 4x4 Matrix

HI, I was wondering if someone knows which of these two methods is more accurate for extracting yaw rotation data:

ofMatrix4x4 mat;  

    ofVec3f translation;    
    ofQuaternion rotation;    
    ofVec3f scale;    
    ofQuaternion so;    
	  
    mat.decompose(translation, rotation, scale, so);    
	  
    float f;      
    ofVec3f v;      
    rotation.getRotate(f, v);      
    cout << v.y * f  << endl;

or

ofMatrix4x4 mat;  

    ofVec3f translation;    
    ofQuaternion rotation;    
    ofVec3f scale;    
    ofQuaternion so;    

mat.decompose(translation, rotation, scale, so);   

**double** yaw = asin(-2*(rotation.x()*rotation.z()-rotation.w()*rotation.y()));