finish second derivative and q8
gradient()
add vector version of q8
hessian() and newton direction iteration