code: def from_euler_with_small_angles_approximation(
      angles: type_alias.TensorLike, name: str = "quaternion_from_euler"
  ) -> tf.Tensor:
      r"""Converts small Euler angles to quaternions.
  
      Under the small angle assumption, $$\sin(x)$$ and $$\cos(x)$$ can be
      approximated by their second order Taylor expansions, where
      $$\sin(x) \approx x$$ and $$\cos(x) \approx 1 - \frac{x^2}{2}$$.
      In the current implementation, the smallness of the angles is not verified.
  
      Note:
        Uses the z-y-x rotation convention (Tait-Bryan angles).
  
      Note:
        In the following, A1 to An are optional batch dimensions.
  
      Args:
       angles: A tensor of shape `[A1, ..., An, 3]`, where the last dimension
         represents the three Euler angles. `[..., 0]` is the angle about `x` in
         radians, `[..., 1]` is the angle about `y` in radians and `[..., 2]` is the
         angle about `z` in radians.
        name: A name for this op that defaults to "quaternion_from_euler".
  
      Returns:
        A tensor of shape `[A1, ..., An, 4]`, where the last dimension represents
        a normalized quaternion.
  
      Raises:
        ValueError: If the shape of `angles` is not supported.
      """
      with tf.name_scope(name):
          angles = tf.convert_to_tensor(value=angles)
  
          shape.check_static(
              tensor=angles,
              tensor_name="angles",
              has_dim_equals=(-1, 3),
          )
  
          half_angles = angles / 2.0
          cos_half_angles = 1.0 - 0.5 * half_angles * half_angles
          sin_half_angles = half_angles
          quaternion = _build_quaternion_from_sines_and_cosines(
              sin_half_angles, cos_half_angles
          )
          # We need to normalize the quaternion due to the small angle approximation.
          return tf.nn.l2_normalize(quaternion, axis=-1)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from typing import List
  from six.moves import range
  import tensorflow
  from tensorflow_graphics.geometry.transformation import rotation_matrix_3d
  from tensorflow_graphics.math import vector
  from tensorflow_graphics.util import asserts
  from tensorflow_graphics.util import export_api
  from tensorflow_graphics.util import safe_ops
  from tensorflow_graphics.util import shape
  from tensorflow_graphics.util import type_alias
label_desc: Use image node_id 6 for calling a global function with example usage: from_euler_with_small_angles_approximation(angles, name) and returns: tf