code: def mobius_add(x, y, c):
      """Element-wise Mobius addition.
  
      Args:
        x: Tensor of size B x dimension representing hyperbolic points.
        y: Tensor of size B x dimension representing hyperbolic points.
        c: Tensor of size 1 representing the absolute hyperbolic curvature.
  
      Returns:
        Tensor of shape B x dimension representing the element-wise Mobius addition
        of x and y.
      """
      cx2 = c * tf.reduce_sum(x * x, axis=-1, keepdims=True)
      cy2 = c * tf.reduce_sum(y * y, axis=-1, keepdims=True)
      cxy = c * tf.reduce_sum(x * y, axis=-1, keepdims=True)
      num = (1 + 2 * cxy + cy2) * x + (1 - cx2) * y
      denom = 1 + 2 * cxy + cx2 * cy2
      return project(num / tf.maximum(denom, MIN_NORM), c)
  
file_path: neural-structured-learning/research/kg_hyp_emb/utils/hyperbolic.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
label_desc: Use image node_id 6 for calling a global function with example usage: mobius_add(x, y, c) and returns: project