Question: printf returns error

the follow is a code that I've started.  This code is from working template that I created previously. that works and iterates as expected, but this equations with these parameters gives me the pintf error in bold at the bottom. 
Can you please help with the error at the bottom of code that is in bold????
 
> restart;
> Digits := 14;
14
> f := proc (x) options operator, arrow; 3-x-x*exp(r*(1-x))-x*exp(r*(2-x-x*exp(r*(1-x)))) end proc;
 
 x -> 3 - x - x exp(r (1 - x)) - x exp(r (2 - x - x exp(r (1 - x))))

> r := 4.3;
4.3
> plot(f(x), x = 0. .. 3.0, thickness = 3);

> f(1);
0.
> plot(f(x), x = 0. .. 0.2e-1, thickness = 3);

> plot(f(x), x = 0.2e-1 .. .2, thickness = 3);

> x0 := 0.4e-2;
0.004
> y0 := f(x0);
-3.4368107918966
>
> Maxits := 20;
20
> TOL := 10^(-4);
1
-----
10000
> printf("\n iter x |f(x)| \n");
 printf("-----------------------------------------------------\n"); 
for n to Maxits while abs(f(x0)) > TOL do
 y0 := f(x0); 
yp := fp(x0); 
x1 := x0-y0/yp; 
printf(" %4d    %15.14f    %18.14e\n", n, x1, abs(f(x1))); x0 := x1 end do;

iter x |f(x)|
-----------------------------------------------------
1

Error, (in fprintf) number expected for floating point format
>
 
Please Wait...