def METHOD_NAME(x1,v1,x2,v2,u,order=1):
    """Returns the derivative of a hermite curve with control points
    x1, v1, x2, v2 at the parameter u in [0,1].  If order > 1, higher
    order derivatives are returned."""
    assert len(x1)==len(v1)
    assert len(x1)==len(x2)
    assert len(x1)==len(v2)
    if order == 1:
        u2 = u*u
        dcx1 = (6.0*u2-6.0*u)
        dcx2 = (-6.0*u2+6.0*u)
        dcv1 = 3.0*u2-4.0*u+1.0
        dcv2 = 3.0*u2-2.0*u
        dx = [0]*len(x1)
        for i in range(len(x1)):
            dx[i] = dcx1*x1[i] + dcx2*x2[i] + dcv1*v1[i] + dcv2*v2[i];
        return dx
    elif order == 2:
        ddcx1 = 12*u-6.0
        ddcx2 = -12.0*u+6.0
        ddcv1 = 6.0*u-4.0
        ddcv2 = 6.0*u-2.0
        ddx = [0]*len(x1)
        for i in range(len(x1)):
            ddx[i] = ddcx1*x1[i] + ddcx2*x2[i] + ddcv1*v1[i] + ddcv2*v2[i]
        return ddx
    elif order == 3:
        cx1 = 12
        cx2 = -12.0
        cv1 = 6.0
        cv2 = 6.0
        dddx = [0]*len(x1)
        for i in range(len(x1)):
            dddx[i] = cx1*x1[i] + cx2*x2[i] + cv1*v1[i] + cv2*v2[i]
        return dddx
    elif order == 0:
        return hermite_eval(x1,v1,x2,v2,u)
    else:
        return [0]*len(x1)