A method of generating soft bit values in a wireless communication receiver comprising: receiving concurrent symbols across a number of data streams incoming to the receiver; computing a combined symbol vector of symbol estimates for the concurrent symbols; generating an estimate of inter-stream interference for the data streams; characterized by determining soft bit values for given symbols received in any given one of the data streams according to a fast joint detection process comprising, for each of one or more given symbols in the given data stream: computing a likelihood metric for each combination of possible symbol values for the given symbol and all but a remaining one of the concurrent symbols, according to one or more sets of possible symbol values, wherein, for each combination, the possible symbol value for the remaining one concurrent symbol is fixed to an intermediate conditionally best value, and the likelihood metric is computed as a function of the combined symbol vector, the estimate of inter-stream interference, and the possible symbol values included in the combination; storing in a data structure best ones of the likelihood metrics corresponding to particular values of each bit position in the given symbol; and calculating soft bit values for the bit positions of the given symbol as a function of the best likelihood metrics stored in the data structure for those bit positions. receiving concurrent symbols across a number of data streams incoming to the receiver; computing a combined symbol vector of symbol estimates for the concurrent symbols; generating an estimate of inter-stream interference for the data streams; characterized by determining soft bit values for given symbols received in any given one of the data streams according to a fast joint detection process comprising, for each of one or more given symbols in the given data stream: computing a likelihood metric for each combination of possible symbol values for the given symbol and all but a remaining one of the concurrent symbols, according to one or more sets of possible symbol values, wherein, for each combination, the possible symbol value for the remaining one concurrent symbol is fixed to an intermediate conditionally best value, and the likelihood metric is computed as a function of the combined symbol vector, the estimate of inter-stream interference, and the possible symbol values included in the combination; storing in a data structure best ones of the likelihood metrics corresponding to particular values of each bit position in the given symbol; and calculating soft bit values for the bit positions of the given symbol as a function of the best likelihood metrics stored in the data structure for those bit positions. computing a likelihood metric for each combination of possible symbol values for the given symbol and all but a remaining one of the concurrent symbols, according to one or more sets of possible symbol values, wherein, for each combination, the possible symbol value for the remaining one concurrent symbol is fixed to an intermediate conditionally best value, and the likelihood metric is computed as a function of the combined symbol vector, the estimate of inter-stream interference, and the possible symbol values included in the combination; storing in a data structure best ones of the likelihood metrics corresponding to particular values of each bit position in the given symbol; and calculating soft bit values for the bit positions of the given symbol as a function of the best likelihood metrics stored in the data structure for those bit positions.