code: def test_CF(self):
      # quartimax
      out = self.get_quartimax_example_derivative_free()
      A, table_required, L_required = out
      vgQ = lambda L=None, A=None, T=None: CF_objective(
          L=L,
          A=A,
          T=T,
          kappa=0,
          rotation_method="orthogonal",
          return_gradient=True,
      )
      L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method="orthogonal")
      self.assertTrue(np.allclose(L, L_required, atol=1e-05))
      # quartimax derivative free
      ff = lambda L=None, A=None, T=None: CF_objective(
          L=L,
          A=A,
          T=T,
          kappa=0,
          rotation_method="orthogonal",
          return_gradient=False,
      )
      L, phi, T, table = GPA(A, ff=ff, rotation_method="orthogonal")
      self.assertTrue(np.allclose(L, L_required, atol=1e-05))
      # varimax
      p, k = A.shape
      vgQ = lambda L=None, A=None, T=None: orthomax_objective(
          L=L, A=A, T=T, gamma=1, return_gradient=True
      )
      L_vm, phi, T, table = GPA(
          A, vgQ=vgQ, rotation_method="orthogonal"
      )
      vgQ = lambda L=None, A=None, T=None: CF_objective(
          L=L,
          A=A,
          T=T,
          kappa=1 / p,
          rotation_method="orthogonal",
          return_gradient=True,
      )
      L_CF, phi, T, table = GPA(
          A, vgQ=vgQ, rotation_method="orthogonal"
      )
      ff = lambda L=None, A=None, T=None: CF_objective(
          L=L,
          A=A,
          T=T,
          kappa=1 / p,
          rotation_method="orthogonal",
          return_gradient=False,
      )
      L_CF_df, phi, T, table = GPA(
          A, ff=ff, rotation_method="orthogonal"
      )
      self.assertTrue(np.allclose(L_vm, L_CF, atol=1e-05))
      self.assertTrue(np.allclose(L_CF, L_CF_df, atol=1e-05))
  
imports: import unittest
  import numpy
  from statsmodels.multivariate.factor_rotation._wrappers import rotate_factors
  from statsmodels.multivariate.factor_rotation._gpa_rotation import ff_partial_target, vgQ_partial_target, ff_target, vgQ_target, CF_objective, orthomax_objective, oblimin_objective, GPA
  from statsmodels.multivariate.factor_rotation._analytic_rotation import target_rotation
label_desc: Use image node_id 12 for calling the TestGPARotation obj's underlying member method code with example usage: obj.test_CF() without return types