class_docstr: Corana objective function.
  
  This class defines the Corana [1]_ global optimization problem. This
  is a multimodal minimization problem defined as follows:
  
  .. math::
  
      f_{\text{Corana}}(x) = \begin{cases} \sum_{i=1}^n 0.15 d_i
      [z_i - 0.05\textrm{sgn}(z_i)]^2 & \textrm{if }|x_i-z_i| < 0.05 \\
      d_ix_i^2 & \textrm{otherwise}\end{cases}
  
  
  Where, in this exercise:
  
  .. math::
  
      z_i = 0.2 \lfloor |x_i/s_i|+0.49999\rfloor\textrm{sgn}(x_i),
      d_i=(1,1000,10,100, ...)
  
  
  with :math:`x_i \in [-5, 5]` for :math:`i = 1, ..., 4`.
  
  *Global optimum*: :math:`f(x) = 0` for :math:`x_i = 0` for
  :math:`i = 1, ..., 4`
  
  ..[1] Gavana, A. Global Optimization Benchmarks and AMPGO retrieved 2015
code: def fun(self, x, *args):
      self.nfev += 1
  
      d = [1.0, 1000.0, 10.0, 100.0]
      r = 0
      for j in range(4):
          zj = floor(abs(x[j] / 0.2) + 0.49999) * sign(x[j]) * 0.2
          if abs(x[j] - zj) < 0.05:
              r += 0.15 * ((zj - 0.05 * sign(zj)) ** 2) * d[j]
          else:
              r += d[j] * x[j] * x[j]
      return r
  
imports: import numpy
  from numpy import abs, asarray, cos, exp, floor, pi, sign, sin, sqrt, sum, size, tril, isnan, atleast_2d, repeat
  from numpy.testing import assert_almost_equal
  from .go_benchmark import Benchmark
label_desc: Use image node_id 2 for calling the Corana obj's underlying member method code with example usage: obj.fun(x) and returns: r