code: def max_power_point(photocurrent, saturation_current, resistance_series,
                      resistance_shunt, nNsVth, method='brentq'):
      
      i_mp, v_mp, p_mp = _singlediode.bishop88_mpp(
          photocurrent, saturation_current, resistance_series,
          resistance_shunt, nNsVth, method=method.lower()
      )
      if isinstance(photocurrent, pd.Series):
          ivp = {'i_mp': i_mp, 'v_mp': v_mp, 'p_mp': p_mp}
          out = pd.DataFrame(ivp, index=photocurrent.index)
      else:
          out = OrderedDict()
          out['i_mp'] = i_mp
          out['v_mp'] = v_mp
          out['p_mp'] = p_mp
      return out
docs: Given the single diode equation coefficients, calculates the maximum power
      point (MPP).
  
      Parameters
      ----------
      photocurrent : numeric
          photo-generated current [A]
      saturation_current : numeric
          diode reverse saturation current [A]
      resistance_series : numeric
          series resitance [ohms]
      resistance_shunt : numeric
          shunt resitance [ohms]
      nNsVth : numeric
          product of thermal voltage ``Vth`` [V], diode ideality factor ``n``,
          and number of serices cells ``Ns``
      method : str
          either ``'newton'`` or ``'brentq'``
  
      Returns
      -------
      OrderedDict or pandas.Datafrane
          ``(i_mp, v_mp, p_mp)``
  
      Notes
      -----
      Use this function when you only want to find the maximum power point. Use
      :func:`singlediode` when you need to find additional points on the IV
      curve. This function uses Brent's method by default because it is
      guaranteed to converge.