Zero a function using the Davidon-Fletcher-Powell method

I have a problem with this code. I need to find a zero of a function using the Davidon-Fletcher-Powell method, known as the quasi-Newton method of finding a zero of a function. This is the given function f (x, y, z) = (Cos (xy)) – z, Sin (xz) – y, x – 2 * y * z) and I need to zero this function with an accuracy of 8 Find decimal places.

f({x_, y_, z_}) = {Cos(x*y) - z, Sin(x*z) - y, x - 2*y*z};
df({x_, y_, z_}) = {D(f({x, y, z}), x), D(f({x, y, z}), y), 
D(f({x, y, z}), z)};
 x = {0, 0, 0};
  k = 0;
    eps = 0.0001;
B = IdentityMatrix(3);
Print("x0=", N(x));
 While(Norm(df(x)) >= eps, p = -Inverse(B).df(x);
 fi(alfa_) = f(x + alfa*p);
 a = alfa /. Minimize(fi(alfa), {alfa})((2))((1));
 xnovo = x + a*p;
 s = xnovo - x;
  y = df(xnovo) - df(x);
 B = B - (Outer(Times, B.s, s.B))/(s.B.s) + (Outer(Times, y, y))/(s.y);
 k = k + 1;
 x = xnovo;
 Print("x", k, "=", N(x)))