def dmp_add_term(f, c, i, u, K):
 if (not u):
  return dup_add_term(f, c, i, K)
 v = (u - 1)
 if dmp_zero_p(c, v):
  return f
 n = len(f)
 m = ((n - i) - 1)
 if (i == (n - 1)):
  return dmp_strip(([dmp_add(f[0], c, v, K)] + f[1:]), u)
 elif (i >= n):
  return (([c] + dmp_zeros((i - n), v, K)) + f)
 else:
  return ((f[:m] + [dmp_add(f[m], c, v, K)]) + f[(m + 1):])

def dmp_add_term ( f , c , i , u , K ) : if ( not u ) : return dup_add_term ( f , c , i , K ) v = ( u - 1 ) if dmp_zero_p ( c , v ) : return f n = len ( f ) m = ( ( n - i ) - 1 ) if ( i == ( n - 1 ) ) : return dmp_strip ( ( [ dmp_add ( f [ 0 ] , c , v , K ) ] + f [ 1 : ] ) , u ) elif ( i >= n ) : return ( ( [ c ] + dmp_zeros ( ( i - n ) , v , K ) ) + f ) else : return ( ( f [ : m ] + [ dmp_add ( f [ m ] , c , v , K ) ] ) + f [ ( m + 1 ) : ] )
add c*x_0**i to f in k[x] .