I'm looking for an authoritative definition of the ETSI basic operation L_sub_c, specifically the sense of the Carry flag on input and output. I have the AMR codec reference C code, but L_sub_c is commented as subtracting input carry and then does the opposite (i.e. subtracts invertse of input carry). Also I would expect to use two L_sub_c's in the obvious way to do a 64-bit subtraction, but doing this requires inverting the carry flag in between! So the reference implementation has either carry-in or carry-out inverted from what it should be. Since the reference AMR codec doesn't use L_sub_c (or L_msuNs), it wouldn't be sensitive to any faults in the L_sub_c implementation. Is there some more comprehensive test, or test vectors, for the ops? While we're here, is it permitted for negate, abs_s etc. to disturb Overflow, i.e. by implementing negate(x) as sub(0,x)? The reference implementation doesn't set Overflow so it seems not to be required, but is it permitted, as other (fielded) implementations suggest?

# ETSI basic operation: meaning of L_sub_c

Started by ●January 2, 2008