class_docstr: TestTubeHolder objective function.
  
  This class defines the TestTubeHolder [1]_ global optimization problem. This
  is a multimodal minimization problem defined as follows:
  
  .. math::
  
      f_{\text{TestTubeHolder}}(x) = - 4 \left | {e^{\left|{\cos 
      \left(\frac{1}{200} x_{1}^{2} + \frac{1}{200} x_{2}^{2}\right)}
      \right|}\sin\left(x_{1}\right) \cos\left(x_{2}\right)}\right|
  
  
  with :math:`x_i \in [-10, 10]` for :math:`i = 1, 2`.
  
  *Global optimum*: :math:`f(x) = -10.872299901558` for
  :math:`x= [-\pi/2, 0]`
  
  .. [1] Mishra, S. Global Optimization by Differential Evolution and
  Particle Swarm Methods: Evaluation on Some Benchmark Functions.
  Munich Personal RePEc Archive, 2006, 1005
  
  TODO Jamil#148 has got incorrect equation, missing an abs around the square
  brackets
code: def fun(self, x, *args):
      self.nfev += 1
  
      u = sin(x[0]) * cos(x[1])
      v = (x[0] ** 2 + x[1] ** 2) / 200
      return -4 * abs(u * exp(abs(cos(v))))
  
imports: from numpy import abs, asarray, cos, exp, arange, pi, sin, sum, atleast_2d
  from .go_benchmark import Benchmark
label_desc: Use image node_id 2 for calling the TestTubeHolder obj's underlying member method code with example usage: obj.fun(x) and returns: unknown