Also, I notice this in your current code. It is always safe to call MatConjugate(), the function will just do nothing if not using complex.
src/svd/interface/svdsetup.c- ierr = MatTranspose(svd->OP,MAT_INITIAL_MATRIX,&svd->AT);CHKERRQ(ierr);
src/svd/interface/svdsetup.c-#if defined(PETSC_USE_COMPLEX)
src/svd/interface/svdsetup.c: ierr = MatConjugate(svd->AT);CHKERRQ(ierr);
src/svd/interface/svdsetup.c-#endif
src/svd/interface/svdsetup.c- } else {
src/svd/interface/svdsetup.c- ierr = MatTranspose(svd->OP,MAT_INITIAL_MATRIX,&svd->A);CHKERRQ(ierr);
src/svd/interface/svdsetup.c-#if defined(PETSC_USE_COMPLEX)
src/svd/interface/svdsetup.c: ierr = MatConjugate(svd->A);CHKERRQ(ierr);
src/svd/interface/svdsetup.c-#endif