#include<stdio.h>
#include<math.h>
#define N 30
double bxy(double mean_x,double mean_y,double x[],double y[],int n)
{

    double a=0,c=0,b_xy=0;
    for(int i=0; i<n; i++)
    {
        a+=(x[i]-mean_x)*(y[i]-mean_y);
        c+=pow((y[i]-mean_y),2);
    }
    b_xy=a/c;

    return b_xy;
}

double byx(double mean_x,double mean_y,double x[],double y[],int n)
{

    double a=0,c=0,b_yx=0;
    for(int i=0; i<n; i++)
    {
        a+=(x[i]-mean_x)*(y[i]-mean_y);

        c+=pow((x[i]-mean_x),2);
    }
    b_yx=a/c;

    return b_yx;
}
int main()
{
    double x[N],y[N],sum_x=0,sum_y=0,mean_x,mean_y,r;
    int n;
    printf("Enter the no of observations : ");
    scanf("%d",&n);
    printf("Enter the observations for x-series\n");
    for(int i=0; i<n; i++)
    {
        printf("\nObservation no [%d] = ",i+1);
        scanf("%lf",&x[i]);
        sum_x+=x[i];
    }
    printf("\nEnter the observations for y-series\n");
    for(int i=0; i<n; i++)
    {
        printf("\nObservation no [%d] = ",i+1);
        scanf("%lf",&y[i]);
        sum_y+=y[i];
    }
    mean_x=sum_x/n;
    mean_y=sum_y/n;
    // printf("mean of x and y is %lf and %lf",mean_x,mean_y);

    r=sqrt(bxy(mean_x,mean_y,x,y,n)* byx(mean_x,mean_y,x,y,n));
    printf("x\ty\t(x-xbar)\t(y-ybar)\t(x-xbar)sqr\t(y-ybar)sqr\t(x-xbar)(y-ybar)\n");
    for (int i=0;i<n;i++)
    {
        printf("%.0f\t%.0f\t%f\t%f\t%f\t%f\t%f\n",x[i],y[i],x[i]-mean_x,y[i]-mean_y,(x[i]-mean_x)*(x[i]-mean_x),(y[i]-mean_y)*(y[i]-mean_y),(x[i]-mean_x)*(y[i]-mean_y));
    }

    printf("\nThe regression coefficients of series are %.4lf and %.4lf \n",bxy(mean_x,mean_y,x,y,n), byx(mean_x,mean_y,x,y,n));
    printf("The equation of regression of y on x is y = %.3f x + %lf\n",byx(mean_x,mean_y,x,y,n),- byx(mean_x,mean_y,x,y,n)*mean_x+mean_y);
      printf("The equation of regression of x on y is x = %.3f y + %lf\n",bxy(mean_x,mean_y,x,y,n),- bxy(mean_x,mean_y,x,y,n)*mean_y+mean_x);
printf("The correlation coefficient r is %lf ",r);
    return 0;
}