the maximum a posteriori ( map ) algorithm for decoding linear codes was published by bahl , cocke , jelinek , and raviv , as cited hereinabove . basically , this algorithm calculates the a posteriori probability of each state in a trellis corresponding to a received code word conditioned on the entire received code word . a variation of this algorithm calculates the a posteriori probability of each state transition in a trellis corresponding to a received code word conditioned on the received code word . since this variation is of particular interest when decoding recursive systematic convolutional codes , which are typically utilized in turbo coding , the description of the invention will be built around this form of the algorithm . however , the invention also applies to the version of the map algorithm that calculates a posteriori state probabilities in a straightforward manner . consider the simple communication system block diagram of fig1 for the purpose of describing the map algorithm . the source 10 is a discrete - time , finite - state markov process , shown as comprising a source 11 , an encoder 12 , and a mapping device 13 . as shown , the markov source &# 39 ; s output at time t is x t and the corresponding channel 14 output is y t , which is provided as the input to a decoder 16 . the following definitions are also needed to describe the map algorithm . let m = the index of the markov source &# 39 ; s states { 0 , 1 , . . . , m - 1 }; s t = state of the markov source at time t ; s t u = s t , s t + 1 , . . . s u , the state sequence of the markov source from time t to time u ; x t u = x t , x t + 1 , . . . x u , the output sequence of the markov source from time t to time u ; y t u = y t , y t + 1 , . . . y u , the output sequence of the channel from time t to time u , and l = the length of the markov source &# 39 ; s output sequence . furthermore , it is assumed that the source &# 39 ; s initial state s 0 = 0 and its final state s l = 0 . the channel is noisy and memoryless so that a sequence of the source &# 39 ; s output symbols x t u is transformed into a sequence of channel outputs y t u according to the following channel transition probabilities . pr { y . sub . t . sup . u | x . sub . t . sup . u }= pr { y . sub . t | x . sub . t } pr { y . sub . t + 1 | x . sub . t + 1 }. . . pr { y . sub . u | x . sub . u }( 1 ) the decoder examines the received channel output sequence and estimates the a posteriori probabilities of the markov source &# 39 ; s states or state transitions . the state a posteriori probabilities pr { s t = m | y 1 l } can be written as using the definition of conditional probability . our notation is as follows : pr { a | b } means the conditional probability of event a given event b , and pr { a ; b } means the joint probability of events a and b . similarly , the source &# 39 ; s state transition a posteriori probabilities can be written as pr { s . sub . t - 1 = m &# 39 ;; s . sub . t = m | y . sub . 1 . sup . l }= pr { s . sub . t - 1 = m &# 39 ;; s . sub . t = m ; y . sub . 1 . sup . l }/ pr { y . sub . 1 . sup . l }. ( 3 ) it turns out that it is easier to derive an algorithm to calculate the joint probabilities on the right - hand sides of equations ( 2 ) and ( 3 ). the desired conditional probabilities can then be obtained by simply dividing these joint probabilities by the constant pr { y 1 l }. to clarify the derivation , bahl et al . defined the following probability functions . pr { s . sub . t - 1 = m &# 39 ;; s . sub . t = m ; y . sub . 1 . sup . l }= α . sub . t - 1 ( m &# 39 ;) γ . sub . t ( m &# 39 ;, m ) β . sub . t ( m ) ( 8 ) so all that remains is to calculate the values of α t ( m ) γ t ( m &# 39 ;, m ) and β t ( m ) for all values of m and t . it can be shown that for t = 1 , 2 , . . . , l , α t ( m ) can be calculated recursively as follows . ## equ1 ## for t = 0 , the boundary conditions are α 0 ( 0 )= 1 and α 0 ( m )= 0 for all m ≠ 0 . similarly , β t ( m ) can be calculated recursively for t = 1 , 2 , . . . , l - 1 . ## equ2 ## for t = l , the boundary conditions are β l ( 0 )= 1 and β l ( m )= 0 for all m ≠ 0 . ## equ3 ## for the cases of interest to us , the source &# 39 ; s mapping of state transitions to output symbols is deterministic ; i . e . there is only one possible output symbol x for each state transition , so that pr { x t | s t = m ; s t - 1 = m &# 39 ;}= 1 and γ t ( m &# 39 ;, m ) can be written as the calculation of pr { s t - 1 = m &# 39 ;; s t = m ; y 1 l } using the algorithm of bahl et al . can be summarized as follows . 2 . as soon as y t is received , the decoder computes γ t ( m &# 39 ;, m ) using equation ( 11 ) and α t ( m ) using equation ( 9 ). the calculated values of α t ( m ) are stored for all t and m . the calculated values of γ t ( m &# 39 ;, m ) are stored for all t and all transitions ( m &# 39 ;, m ). 3 . after the complete sequence of channel outputs γ 1 l is received , the decoder recursively computes β t ( m ) using equation ( 10 ). when all of the β t ( m ) have been computed , they can be multiplied by the appropriate α t - 1 ( m &# 39 ;) and γ t ( m &# 39 ;, m ) to obtain pr { s t - 1 = m &# 39 ;; s t = m ; y 1 l } as in equation ( 8 ). when decoding trellis codes , the markov source of fig1 can be modeled as comprising a source of information bits , an encoder for the error correcting trellis code , and a mapping device that converts the encoder &# 39 ; s output into symbols x t , which are transmitted over the channel . the term pr { s t = m | s t - 1 = m &# 39 ;}, the encoder &# 39 ; s conditional state probability , in equation ( 12 ) is calculated as ## equ4 ## for an ( n , k , v ) code where pr { d i = a i ( m &# 39 ;, m )} is the a priori probability that d i = a i ( m &# 39 ;, m ) and a i ( m &# 39 ;, m ) is the i th bit of the sequence a ( m &# 39 ;, m ) of k bits that drives the encoder from state m &# 39 ; to state m . this equation holds when the code &# 39 ; s trellis does not have parallel branches . ( if the code &# 39 ; s trellis does have parallel branches , then pr { s t = m | s t - 1 = m &# 39 ;} is calculated as the sum of products of bit a priori probabilities in which the sum is over the all of the sequences of source bits a ( m &# 39 ;, m ) that drive the encoder from state m &# 39 ; to state m .) in the decoder , we are interested in event likelihood ratios ; specifically , we are interested in pr { d . sub . τ = 1 | y 1 l }/ pr { d . sub . τ = 0 | y 1 l }, where pr { d . sub . τ = i | y 1 l } represents the a posteriori probability that data bit d . sub . τ from the source is equal to iε { 0 , 1 }. ## equ5 ## in the equation above a t ( τ ) is the set of all state transitions ( m &# 39 ;, m ) in the encoder which terminate at time t due to an information bit d . sub . τ = 0 . recall that in general there are k source bits encoded into each n - bit encoder output symbol so that d . sub . τ for indices τ =( t - 1 ) k + 1 , ( t - 1 ) k + 2 , . . . , tk are associated with the state transition s t - 1 to s t . ## equ6 ## in the equation above b t ( τ ) is the set of all state transitions ( m &# 39 ;, m ) in the encoder which terminate at trellis level t due to an information bit d . sub . τ = 1 . since we are working with the likelihood ratio pr { d . sub . τ = 1 | y 1 l }/ pr { d . sub . τ = 0 | y 1 l }, it is not necessary to calculate pr { s t - 1 = m &# 39 ;; s t = m | y 1 l }; we may use pr { s t - 1 = m &# 39 ;; s t = m ; y 1 l } directly since pr { y 1 l } is common to the numerator and denominator . therefore , the desired likelihood ratio from the decoder is ## equ7 ## since the joint probability pr { s t - 1 = m &# 39 ;; s t = m ; y 1 l } is used often herein , the following notation from bahl et al is introduced for brevity . when the encoder &# 39 ; s input symbols are binary , i . e . k = 1 , equations ( 13 ) through ( 16 ) can be simplified since τ = t in this case . the simplified equations are presented below . a ( m &# 39 ;, m )= the bit value that drives the encoder from state m &# 39 ; to state m . ## equ8 ## a t = the set of all state transitions ( m &# 39 ;, m ) which terminate at level t in the encoder due to an information bit d t = 0 . ## equ9 ## b t = the set of all state transitions ( m &# 39 ;, m ) which terminate at trellis level t in the encoder due to an information bit d t = 1 . ## equ10 ## the map decoder algorithm presented earlier requires a large number of multiplications . for some implementations wherein a large number of multiplications may be impractical , e . g ., integrated circuit implementations , a logarithmic version of the map algorithm has been derived that eliminates all multiplication operations . the log - map algorithm primarily uses additions , table look - ups , and some simple logic functions . in an integrated circuit implementation of a decoder for trellis codes , the replacement of multiplications with additions enables large savings in gate count ( die area ) and significant increases in decoding speed . the following is a summary of the basic log - map algorithm . ln pr { s . sub . t - 1 = m &# 39 ;; s . sub . t = m ; y . sub . 1 . sup . l }= ln σ . sub . t ( m &# 39 ;, m )= ln α . sub . t - 1 ( m &# 39 ;)+ ln γ . sub . t ( m &# 39 ;, m )+ ln β . sub . t ( m ),( 23 ) ## equ11 ## equations ( 24 ) and ( 25 ) are derived from equations ( 9 ) and ( 10 ), respectively , by applying the identity to the product terms . for example , equation ( 24 ) is derived as follows : ## equ12 ## the boundary conditions are now ln α 0 ( 0 )= 0 and ln α 0 ( m )=-∞ for all m ≠ 0 . similarly , ln β l ( 0 )= 0 and ln β l ( m )=-∞ for all m ≠ 0 . in a practical implementation , a large negative number is substituted for -∞. the sum of exponential terms can be computed by applying the following identity . computational complexity can be significantly reduced by storing a table of values for the function ln [ 1 + exp (-| a - b |)] and applying equation ( 33 ). experimentation has shown that 8 or 16 values of this function provide sufficient resolution to prevent performance degradation . the log - likelihood ratio is calculated using the identity of equation ( 26 ) as follows : ## equ13 ## turbo codes involve a parallel concatenation of two or more systematic codes . decoding turbo codes is an iterative operation such that the work in decoding one component code is used as a priori information for decoding another component code . iterations proceed a finite number of times with the passing of information between decoders comprising feedback in the decoding process . as set forth in the summary of the map decoding algorithm set forth hereinabove , some of the fundamental terms in a map decoding algorithm are forward and backward state probabilities , commonly known as the alpha and beta functions , and a posteriori state transition probabilities , commonly known as the sigma functions . calculations of these probabilities ( i . e ., the alpha , beta and sigma functions ) require symbol transition probabilities , i . e ., the gamma functions . from bahl , cocke , jelinek , and raviv in &# 34 ; optimal decoding of linear codes for minimizing symbol error rate &# 34 ;, cited hereinabove , ## equ14 ## where t is the symbol index and ## equ15 ## where j is the number of bits comprising an encoder output symbol , assuming binary signaling . in a recursive systematic code , a single transition ( m &# 39 ;, m ) determines a specific channel symbol xd & amp ; so that the summation in equation 22 is eliminated and the function q t ( x t | m &# 39 ;, m ) is identically equal to one . also , for a ( 2 , 1 ) code , the channel transition probabilities are computed as the product of two one - dimensional transition probabilities for the information and parity bits ; that is , furthermore , in the turbo decoding procedure , the conditional state probabilities are determined by the a priori bit probabilities as follows : the time index has been omitted in equations ( 27 ) and ( 28 ) for brevity . the output of a map component decoder is an a posteriori probability estimate of the systematic symbols . these a posteriori estimates are used as the a priori probabilities ap t ( 0 ) and ap t ( 1 ) for decoding another component code . the a posteriori probability of bit t being equal to 1 ( 0 ) is found by summing all σ t ( m &# 39 ;, m ) over the state transition pairs ( m &# 39 ;, m ) which correspond to a 1 ( 0 ) being transmitted where thus , for each time interval a vector σ t ={ σ t ( m &# 39 ;, m ); all ( m &# 39 ;, m )} is computed . the calculation of the α values requires a forward recursion while the calculation of the β values requires a backward recursion . according to preferred embodiments of the present invention , both forward and backward recursions are performed simultaneously , i . e ., in parallel . moreover , only the first half of the calculated α and β values need to be stored in memory . two σ vectors per recursion step may be computed once half the α and β values have been computed . see fig2 for a time - line representation of the parallel calculation of the α and β values , illustrating how the σ values are computed when the α and β values &# 34 ; meet &# 34 ;. after the half - way point has been reached , i . e ., the first half of the a values have been computed and the recursion is proceeding to the right half of the time - line ( as illustrated in fig2 and 3 ), σ vectors may be computed from the current α values and the corresponding β values which were previously computed and stored in memory . likewise , as the β recursion proceeds to the left half of the time - line ( as illustrated in fig2 ), σ vectors may be computed from the current β values and the corresponding α values which were previously computed and stored in memory . calculations of the γ values do not involve recursions , as is apparent from the equations for γ set forth hereinabove . in accordance with the processes herein , the γ values need not be calculated separately for every calculation . instead , previously calculated γ values which were used in the α and β calculations may be used to calculated the present values of γ . such dual - use addressing for γ values reduces memory access time and further reduces the computational burden . alternatively , it may be desirable to use modified γ values in which case new γ values would be calculated . fig4 and 5 comprise a flow chart illustrating parallel processing of α , β , and σ values in accordance with preferred embodiments of the present invention . in step 30 , the trellis level index t is set equal to zero , and the final trellis level index t f is set to represent the number of levels in the trellis . in the next step 32 , α 0 and β tf are initialized . as soon as the last symbol in the received code word y tf is received ( step 34 ), the following operations take place in step 36 : v = int { t . sub . f / 2 }, where int { x } comprises the integer part of x , and w = v + 1 . then , in step 38 , the decoder computes γ t ( m &# 39 ;, m ) using ( 12 ) and α t ( m ) using ( 9 ) for t = 1 , 2 , . . . t f - 1 , beginning with t = 1 . simultaneously , it computes γ u + 1 ( m , m &# 39 ;) using ( 12 ) and β u ( m ) using ( 10 ) for u =( t f - 1 ), ( t f - 2 ), . . . , 1 , beginning with u =( t f - 1 ). the calculated values of α t ( m ) are stored for t = 1 , 2 , . . . , ( t f / 2 ) and all m . the calculated values of β u ( m ) are stored for u =( t f - 1 ), ( t f - 2 ), . . . , t f -( t f / 2 ) and all m . to clarify the discussion , let α t =[ α t ( 0 ), α t ( 1 ), . . . α t ( m - 1 )] and β u =[ β u ( 0 ), β u ( 1 ), . . . β u ( m - 1 )]. the recursive calculation of α t and β u continues until at least two sets of joint state transition probabilities can be calculated ( step 40 ). then , calculate σ tf / 2 ) ( m &# 39 ;, m ) and σ . sub . ( t . sbsb . sf / 2 )+ 1 ( m &# 39 ;, m ) are calculated using equation ( 17 ) ( step 42 ). the calculation of these two state transition probabilities utilizes the two most recently calculated α and β vectors . for the remaining α and β recursions , two state transition probabilities are calculated . in calculating this pair , the current α t and β u vectors are used so that they do not need to be stored . the other α and β vectors required are read from memory . therefore , when α t . sbsb . f and β 1 are calculated , the last two sets of state transition probabilities in this code word segment ( α 1 ( m &# 39 ;, m ) and σ t . sbsb . f ( m &# 39 ;, m )) are immediately computed . the discussion above assumes that t f is an even number . if t f is an odd number , σ 0 ( m &# 39 ;, m ) are not needed . they may be discarded or not computed . in step 43 , a function ( e . g . λ t ( m &# 39 ;, m )) of the selected probabilities is calculated as the map decoder &# 39 ; s soft - decision . in step 44 , v is decremented by 1 and w is incremented by 1 . then , a test is made in step 46 to determine whether t = t f - 1 . if not , then in step 48 , t is incremented by 1 and u is decremented by 1 , and the process returns to step 38 . but , if the answer to the test of step 46 is positive , then operation proceeds to step 56 where a decision is made as to whether hard - decision or soft - decision decoding is selected . if hard - decision decoding is selected ( step 56 ), apply the soft - decision values ( e . g . λ t ( m &# 39 ;, m )) corresponding to the information bits to a decision device ( step 57 ) and output hard - decision values for the decoded information bits ( step 58 ). if not , output soft - decision values that are some function of the computed σ t ( m &# 39 ;, m ) ( step 59 ). while the preferred embodiments of the present invention have been shown and described herein , it will be obvious that such embodiments are provided by way of example only . numerous variations , changes and substitutions will occur to those of skill in the art without departing from the invention herein . accordingly , it is intended that the invention be limited only by the spirit and scope of the appended claims .