#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

double Pn(int n, double x)
{
    if (n == -1) return 1;
    if (n == 0)  return 1;
    return (2*n+1)*Pn(n-1,x)+ n*n*x*x*Pn(n-2,x);
}

double Qn(int n, double x)
{
    if (n==-1) return 0;
    if (n == 0)  return 1;
    return (2*n+1)*Qn(n-1,x)+ n*n*x*x*Qn(n-2,x);
}

double ratn(double x, int n)
{
    return x*Qn(n,x)/Pn(n,x);
}

double atan(double x, double eps)
{
    double res = 0;
    for(int n=2;;n++)
    {
        double res2 = ratn(x,n);
        if (fabs(res-res2) < eps) return res2;
        res = res2;
    }
}

int main(int argc, const char * argv[])
{
    for(double x = 0; x < 1.5; x += 0.1)
        cout << setw(10) << x << setw(10) << left << atan(x) << setw(10) << left << atan(x,0.00001) << endl;
}
