code: def gradients_X(self, dL_dK, X, X2=None):
          
          if use_stationary_cython:
              return self._gradients_X_cython(dL_dK, X, X2)
          else:
              return self._gradients_X_pure(dL_dK, X, X2)
docs: Given the derivative of the objective wrt K (dL_dK), compute the derivative wrt X