function has a real-valued output, we treat functions with complex
   output in a special way. For these functions, gradcheck is applied
   to two real-valued functions corresponding to taking the real
   components of the complex outputs for the first, and taking the
   imaginary components of the complex outputs for the second. For
   more details, check out Autograd for Complex Numbers.
Note:
 The default values are designed for "input" of double precision.
 This check will likely fail if "input" is of less precision,
 e.g., "FloatTensor".

Warning:
 If any checked tensor in "input" has overlapping memory, i.e.,
 different indices pointing to the same memory address (e.g., from
 "torch.expand()"), this check will likely fail because the
 numerical gradients computed by point perturbation at such
 indices will change values at all other indices that share the
 same memory address.

Parameters: