parameters: (lhs, rhs, fn_array, fn_scalar, lfn_scalar, rfn_scalar=None)
docstring: Helper function for element-wise operation.
      The function will perform numpy-like broadcasting if needed and call different functions.
  
      Parameters
      --------
      lhs : NDArray or numeric value
          Left-hand side operand.
  
      rhs : NDArray or numeric value
          Right-hand operand,
  
      fn_array : function
          Function to be called if both lhs and rhs are of ``NDArray`` type.
  
      fn_scalar : function
          Function to be called if both lhs and rhs are numeric values.
  
      lfn_scalar : function
          Function to be called if lhs is ``NDArray`` while rhs is numeric value
  
      rfn_scalar : function
          Function to be called if lhs is numeric value while rhs is ``NDArray``;
          if none is provided, then the function is commutative, so rfn_scalar is equal to lfn_scalar
  
      Returns
      --------
      NDArray
          result array
docstring_summary: Helper function for element-wise operation.
      The function will perform numpy-like broadcasting if needed and call different functions.
docstring_tokens: Helper function for element - wise operation . The function will perform numpy - like broadcasting if needed and call different functions .
function: def _ufunc_helper(lhs, rhs, fn_array, fn_scalar, lfn_scalar, rfn_scalar=None):
      """ Helper function for element-wise operation.
      The function will perform numpy-like broadcasting if needed and call different functions.
  
      Parameters
      --------
      lhs : NDArray or numeric value
          Left-hand side operand.
  
      rhs : NDArray or numeric value
          Right-hand operand,
  
      fn_array : function
          Function to be called if both lhs and rhs are of ``NDArray`` type.
  
      fn_scalar : function
          Function to be called if both lhs and rhs are numeric values.
  
      lfn_scalar : function
          Function to be called if lhs is ``NDArray`` while rhs is numeric value
  
      rfn_scalar : function
          Function to be called if lhs is numeric value while rhs is ``NDArray``;
          if none is provided, then the function is commutative, so rfn_scalar is equal to lfn_scalar
  
      Returns
      --------
      NDArray
          result array
      """
      if isinstance(lhs, numeric_types):
          if isinstance(rhs, numeric_types):
              return fn_scalar(lhs, rhs)
          else:
              if rfn_scalar is None:
                  # commutative function
                  return lfn_scalar(rhs, float(lhs))
              else:
                  return rfn_scalar(rhs, float(lhs))
      elif isinstance(rhs, numeric_types):
          return lfn_scalar(lhs, float(rhs))
      elif isinstance(rhs, NDArray):
          return fn_array(lhs, rhs)
      else:
          raise TypeError('type %s not supported' % str(type(rhs)))
function_tokens: def _ufunc_helper ( lhs , rhs , fn_array , fn_scalar , lfn_scalar , rfn_scalar = None ) : if isinstance ( lhs , numeric_types ) : if isinstance ( rhs , numeric_types ) : return fn_scalar ( lhs , rhs ) else : if rfn_scalar is None : # commutative function return lfn_scalar ( rhs , float ( lhs ) ) else : return rfn_scalar ( rhs , float ( lhs ) ) elif isinstance ( rhs , numeric_types ) : return lfn_scalar ( lhs , float ( rhs ) ) elif isinstance ( rhs , NDArray ) : return fn_array ( lhs , rhs ) else : raise TypeError ( 'type %s not supported' % str ( type ( rhs ) ) )