A number of alternative possibilities exist as to how this frequency domain spreading can take place, such as by using a long PN code and multiplying each data symbol, di, on a subcarrier by a chip from the PN code, ci, or by using short PN codes and spreading each data symbol by an individual PN code — i.e. di is multiplied by each ci and the resulting vector is placed on Nfreq subcarriers, where Nfreq is the PN code length.