#include <iostream>
#include <complex>
using namespace std;

complex<double> P3(complex<double> x){
  return x*x*x-3.*x*x+3.*x-5.;
}

int main(){

  complex<double> xi[3], Q[3];
  complex<double> x;

  //Initial values from Wikipedia
  xi[0]=complex<double>(1.,0.);
  xi[1]=complex<double>(0.4,0.9);
  xi[2]=complex<double>(-0.65,0.72);
    
cout<<0<<"\t"<<xi[0]<<"\t"<<xi[1]<<"\t"<<xi[2]<<"\n";

  for(int i=1; i<=6; i++){
    Q[0]=(xi[0]-xi[1])*(xi[0]-xi[2]);
    Q[1]=(xi[1]-xi[2])*(xi[1]-xi[0]);
    Q[2]=(xi[2]-xi[0])*(xi[2]-xi[1]);

    xi[0]=xi[0]-P3(xi[0])/Q[0];
    xi[1]=xi[1]-P3(xi[1])/Q[1];
    xi[2]=xi[2]-P3(xi[2])/Q[2];

    cout<<i<<"\t"<<xi[0]<<"\t"<<xi[1]<<"\t"<<xi[2]<<"\n";
  }

  return 0;
}
