#include <stdio.h>
#include <stdlib.h>
#define _USE_MATH_DEFINES
#include <math.h>
#define f(x) log10(1+x)*sin(10*x) //함수 나중에 바꿔줘야 함
double T[20],R[20][20],h[20],a,b;
int n;
int main() {
double sum;
int i,k,j;
printf("구간 값 a(적분 밑에 있는 값):"); scanf("%lf",&a);
//printf("구간 값 b:"); //scanf("%lf",&b);
b=2*M_PI;
//printf("b:%lf\n",b);
printf("구하고자 하는 R(n,n)에서의 n : "); scanf("%d",&n);
h[1]=b-a;
printf("h[1]:%lf\n",h[1]);
printf("f(b):%lf\n",f(b));
printf("log(1+2PI):%lf\n",log(1+b));
T[1]=h[1]/2*(f(a)+f(b));
printf("T[1]:%lf\n",T[1]);
R[1][1]=T[1];
printf("R[1][1]:%lf\n",R[1][1]);
for(i=2;i<=n;i++)
{
h[i]=h[i-1]*0.5;
printf("h[%d]:%lf\n",i,h[i]);
sum=0;
for(k=1;k<=pow(2,i-2);k++)
{
sum=sum+f(a+(2*k-1)*h[i]);
}
T[i]=0.5*T[i-1]+h[i]*sum;
printf("T[%d]:%lf\n",i,T[i]);
R[i][1]=T[i];
//printf("R[%d][1]:%lf\n",i,R[i][1]);
for(j=2;j<=i;j++)
{
R[i][j]=((pow(4,j-1)*R[i][j-1])-R[i-1][j-1])/(pow(4,j-1)-1);
//printf("first:%lf\n",pow(4,j-1)*R[i][j-1]);
//printf("second:%lf\n",R[i-1][j-1]);
//printf("pow(4,j-1):%lf\n",pow(4,j-1)-1);
//printf("R[%d][%d]:%lf\n",i,j,R[i][j]);
}
//printf("h[3]:%lf\t R[3][1]:%lf\n",h[3],R[3][1]);
}
printf("R11:%lf\n",R[1][1]);
printf("R31:%lf\t R21:%lf\n",R[3][1],R[2][1]);
printf("R32:%lf \t R22:%lf\n",R[3][2],R[2][2]);
printf("n값에서의 R[n][n]:%lf\n",R[n][n]);
}