def METHOD_NAME(self, x1: Tensor, x2: Tensor) -> Tensor:
    """
    Parameters
    --------------------
    x1 : Tensor
        Feature data of shape (batch_size, history_length, num_features).
    x2 : Tensor
        Feature data of shape (batch_size, history_length, num_features).
    Returns
    --------------------
    Tensor
        Periodic kernel matrix of shape (batch_size, history_length,
        history_length).
    """
    self._compute_square_dist(self.F, x1, x2)
    return self.F.broadcast_mul(
        self.amplitude,
        self.F.exp(
            self.F.broadcast_div(
                -2
                * self.F.sin(
                    self.F.broadcast_mul(
                        self.frequency,
                        math.pi
                        * self.F.sqrt(self.F.abs(self.square_dist)),
                    )
                )
                ** 2,
                self.length_scale**2,
            )
        ),
    )