  Precoding has been conventionally considered as an effective means of
mitigating the interference and efficiently exploiting the available in the
multiantenna downlink channel, where multiple users are simultaneously served
with independent information over the same channel resources. The early works
in this area were focused on transmitting an individual information stream to
each user by constructing weighted linear combinations of symbol blocks
(codewords). However, more recent works have moved beyond this traditional view
by: i) transmitting distinct data streams to groups of users and ii) applying
precoding on a symbol-per-symbol basis. In this context, the current survey
presents a unified view and classification of precoding techniques with respect
to two main axes: i) the switching rate of the precoding weights, leading to
the classes of block- and symbol-level precoding, ii) the number of users that
each stream is addressed to, hence unicast-/multicast-/broadcast- precoding.
Furthermore, the classified techniques are compared through representative
numerical results to demonstrate their relative performance and uncover
fundamental insights. Finally, a list of open theoretical problems and
practical challenges are presented to inspire further research in this area.
