code: def f_df_nc(self,x):
          '''
          Wrapper of the derivative of *f*: takes an input x with size of the not
          fixed dimensions expands it and evaluates the gradient of the entire function.
          '''
          x = np.atleast_2d(x)
          xx = self.context_manager._expand_vector(x)
          f_nocontext_xx , df_nocontext_xx = self.f_df(xx)
          df_nocontext_xx = df_nocontext_xx[:,np.array(self.context_manager.noncontext_index)]
          return f_nocontext_xx, df_nocontext_xf f_df_nc(self,x):
          '''
          Wrapper of the derivative of *f*: takes an input x with size of the not
          fixed dimensions expands it and evaluates the gradient of the entire function.
          '''
          x = np.atleast_2d(x)
          xx = self.context_manager._expand_vector(x)
          f_nocontext_xx , df_nocontext_xx = self.f_df(xx)
          df_nocontext_xx = df_nocontext_xx[:,np.array(self.context_manager.noncontext_index)]
          return f_nocontext_xx, df_nocontext_xx
docs: Wrapper of the derivative of *f*: takes an input x with size of the not
          fixed dimensions expands it and evaluates the gradient of the entire function.