/*
** ************************************************
** hArtes/POLIBA SCILAB2C
** Contact: raffaele.nutricato@tiscali.it
** ************************************************
*/
 
 
/*
** ----------------- 
** --- Includes. --- 
** ----------------- 
*/
#include "main.h"
/*
** --------------------- 
** --- End Includes. --- 
** --------------------- 
*/
 
 
 
/*
** -------------------------------------
** --- Global Variables Declaration. ---
** -------------------------------------
*/
 
 
/*
** -----------------------------------------
** --- End Global Variables Declaration. ---
** -----------------------------------------
*/
 
/*
  SCI2C: ------------------------------------------------------------------
  SCI2C: //SCI2C: DEFAULT_PRECISION= DOUBLE
  SCI2C: 
  SCI2C: function mainfunction()
  SCI2C: ------------------------------------------------------------------
*/
SCI2Cint main()
{
/*
** -----------------------------
** --- Variable Declaration. ---
** -----------------------------
*/
 
   double __temp1[1][2];
   SCI2Cint ____temp1Size[2] = {1,2};
 
   double __temp2[1][3];
   SCI2Cint ____temp2Size[2] = {1,3};
 
   double __temp3[1][4];
   SCI2Cint ____temp3Size[2] = {1,4};
 
   double __temp4[1][5];
   SCI2Cint ____temp4Size[2] = {1,5};
 
   double Volume[1][6];
   SCI2Cint __VolumeSize[2] = {1,6};
 
   double __temp5[1][2];
   SCI2Cint ____temp5Size[2] = {1,2};
 
   double __temp6[1][3];
   SCI2Cint ____temp6Size[2] = {1,3};
 
   double __temp7[1][4];
   SCI2Cint ____temp7Size[2] = {1,4};
 
   double __temp8[1][5];
   SCI2Cint ____temp8Size[2] = {1,5};
 
   double Pressure[1][6];
   SCI2Cint __PressureSize[2] = {1,6};
 
   double x[1][6];
   SCI2Cint __xSize[2] = {1,6};
 
   double y[1][6];
   SCI2Cint __ySize[2] = {1,6};
 
   double __temp9;
 
   double __temp10[1][6];
   SCI2Cint ____temp10Size[2] = {1,6};
 
   double __temp11;
 
   double __temp12;
 
   double __temp13;
 
   double __temp14[1][6];
   SCI2Cint ____temp14Size[2] = {1,6};
 
   double __temp15;
 
   double __temp16;
 
   double __temp17;
 
   double __temp18;
 
   double __temp19[1][6];
   SCI2Cint ____temp19Size[2] = {1,6};
 
   double __temp20;
 
   double __temp21;
 
   double __temp22;
 
   double __temp23;
 
   double __temp24;
 
   double __temp25;
 
   double a;
 
   double __temp26;
 
   double __temp27[1][6];
   SCI2Cint ____temp27Size[2] = {1,6};
 
   double __temp28;
 
   double __temp29;
 
   double __temp30;
 
   double __temp31;
 
   double __temp32;
 
   double __temp33;
 
   double __temp34;
 
   double __temp35[1][6];
   SCI2Cint ____temp35Size[2] = {1,6};
 
   double __temp36;
 
   double __temp37;
 
   double __temp38;
 
   double __temp39;
 
   double __temp40;
 
   double __temp41;
 
   double b;
 
   double __temp42;
 
   double __temp43[1][6];
   SCI2Cint ____temp43Size[2] = {1,6};
 
   double __temp44;
 
   double __temp45[1][6];
   SCI2Cint ____temp45Size[2] = {1,6};
 
   double __temp46[1][6];
   SCI2Cint ____temp46Size[2] = {1,6};
 
   double __temp47;
 
   double __temp48;
 
   double __temp49[1][6];
   SCI2Cint ____temp49Size[2] = {1,6};
 
   double __temp50[1][6];
   SCI2Cint ____temp50Size[2] = {1,6};
 
   double __temp51;
 
   double beq;
 
   double __temp52;
 
   double __temp53;
 
   double __temp54;
 
   double aeq;
 
   double C;
 
   double gamma;
 
   char __temp55[1][2] = {"C"};
   SCI2Cint ____temp55Size[2] = {1,2};
 
   double ans1;
 
   double ans2;
 
   char __temp56[1][6] = {"gamma"};
   SCI2Cint ____temp56Size[2] = {1,6};
 
   double ans3;
 
   double ans4;
 
   char __temp57[1][6] = {"a-aeq"};
   SCI2Cint ____temp57Size[2] = {1,6};
 
   double ans5;
 
   double __temp58;
 
   double ans6;
 
   char __temp59[1][6] = {"b-beq"};
   SCI2Cint ____temp59Size[2] = {1,6};
 
   double ans7;
 
   double __temp60;
 
   double ans8;
 
 
 
 
/*
** ---------------------------------
** --- End Variable Declaration. ---
** ---------------------------------
*/
/*
** ---------------
** --- C code. ---
** ---------------
*/
 
   /*SCI2C: ##################################################################
     SCI2C: 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // Knowing that 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // (1) P * (V^gamma) = C
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // Where
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // P = Pressure
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // V = Volume
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // gamma,C = constants depending on the particular gas used.
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // (2) log10(P) = log10(C) - gamma*log10(V)
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // (3) x = log10(V) 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // (4) y = log10(P)
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // than (2) becomes:
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // y = a + b*x;
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // Where
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // a = log10(C)
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // b = -gamma
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // Then thanks to this transformation it is possible to perform 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // a linear regression to estimate gamma and C!
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: Volume   = [54.3 61.8 72.4 88.7 118.6 194.0];
     SCI2C: ##################################################################*/
   d0d0OpRcd2(54.3,61.8,(double* )__temp1);
   d2d0OpRcd2((double* )__temp1,  ____temp1Size,72.4,(double* )__temp2);
   d2d0OpRcd2((double* )__temp2,  ____temp2Size,88.7,(double* )__temp3);
   d2d0OpRcd2((double* )__temp3,  ____temp3Size,118.6,(double* )__temp4);
   d2d0OpRcd2((double* )__temp4,  ____temp4Size,194,(double* )Volume);
 
   /*SCI2C: ##################################################################
     SCI2C: Pressure = [61.2 49.5 37.6 28.4 19.2 10.1];
     SCI2C: ##################################################################*/
   d0d0OpRcd2(61.2,49.5,(double* )__temp5);
   d2d0OpRcd2((double* )__temp5,  ____temp5Size,37.6,(double* )__temp6);
   d2d0OpRcd2((double* )__temp6,  ____temp6Size,28.4,(double* )__temp7);
   d2d0OpRcd2((double* )__temp7,  ____temp7Size,19.2,(double* )__temp8);
   d2d0OpRcd2((double* )__temp8,  ____temp8Size,10.1,(double* )Pressure);
 
   /*SCI2C: ##################################################################
     SCI2C: x = log10(Volume);
     SCI2C: ##################################################################*/
   d2log10d2((double* )Volume,  __VolumeSize,(double* )x);
 
   /*SCI2C: ##################################################################
     SCI2C: y = log10(Pressure);
     SCI2C: ##################################################################*/
   d2log10d2((double* )Pressure,  __PressureSize,(double* )y);
 
   /*SCI2C: ##################################################################
     SCI2C: 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: a = (sum(y)*sum(x.^2)-sum(x)*sum(x.*y))./(length(x)*sum(x.^2)-sum(x).*sum(x));
     SCI2C: ##################################################################*/
   __temp9 = d2sumd0((double* )y,  __ySize);
   d2d0OpDotHatd2((double* )x,  __xSize,2,(double* )__temp10);
   __temp11 = d2sumd0((double* )__temp10,  ____temp10Size);
   __temp12 = d0d0OpStard0(__temp9,__temp11);
   __temp13 = d2sumd0((double* )x,  __xSize);
   d2d2OpDotStard2((double* )x,  __xSize,(double* )y,  __ySize,(double* )__temp14);
   __temp15 = d2sumd0((double* )__temp14,  ____temp14Size);
   __temp16 = d0d0OpStard0(__temp13,__temp15);
   __temp17 = d0d0OpMinusd0(__temp12,__temp16);
   __temp18 = d2lengthd0((double* )x,  __xSize);
   d2d0OpDotHatd2((double* )x,  __xSize,2,(double* )__temp19);
   __temp20 = d2sumd0((double* )__temp19,  ____temp19Size);
   __temp21 = d0d0OpStard0(__temp18,__temp20);
   __temp22 = d2sumd0((double* )x,  __xSize);
   __temp23 = d2sumd0((double* )x,  __xSize);
   __temp24 = d0d0OpDotStard0(__temp22,__temp23);
   __temp25 = d0d0OpMinusd0(__temp21,__temp24);
   a = d0d0OpDotSlashd0(__temp17,__temp25);
 
   /*SCI2C: ##################################################################
     SCI2C: b = (length(x)*sum(x.*y)-sum(x)*sum(y))./(length(x)*sum(x.^2)-sum(x).*sum(x));
     SCI2C: ##################################################################*/
   __temp26 = d2lengthd0((double* )x,  __xSize);
   d2d2OpDotStard2((double* )x,  __xSize,(double* )y,  __ySize,(double* )__temp27);
   __temp28 = d2sumd0((double* )__temp27,  ____temp27Size);
   __temp29 = d0d0OpStard0(__temp26,__temp28);
   __temp30 = d2sumd0((double* )x,  __xSize);
   __temp31 = d2sumd0((double* )y,  __ySize);
   __temp32 = d0d0OpStard0(__temp30,__temp31);
   __temp33 = d0d0OpMinusd0(__temp29,__temp32);
   __temp34 = d2lengthd0((double* )x,  __xSize);
   d2d0OpDotHatd2((double* )x,  __xSize,2,(double* )__temp35);
   __temp36 = d2sumd0((double* )__temp35,  ____temp35Size);
   __temp37 = d0d0OpStard0(__temp34,__temp36);
   __temp38 = d2sumd0((double* )x,  __xSize);
   __temp39 = d2sumd0((double* )x,  __xSize);
   __temp40 = d0d0OpDotStard0(__temp38,__temp39);
   __temp41 = d0d0OpMinusd0(__temp37,__temp40);
   b = d0d0OpDotSlashd0(__temp33,__temp41);
 
   /*SCI2C: ##################################################################
     SCI2C: 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // Other way to compute a and b
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: beq = sum((x-mean(x)).*(y-mean(y)))./sum((x-mean(x)).^2);
     SCI2C: ##################################################################*/
   __temp42 = d2meand0((double* )x,  __xSize);
   d2d0OpMinusd2((double* )x,  __xSize,__temp42,(double* )__temp43);
   __temp44 = d2meand0((double* )y,  __ySize);
   d2d0OpMinusd2((double* )y,  __ySize,__temp44,(double* )__temp45);
   d2d2OpDotStard2((double* )__temp43,  ____temp43Size,(double* )__temp45,  ____temp45Size,(double* )__temp46);
   __temp47 = d2sumd0((double* )__temp46,  ____temp46Size);
   __temp48 = d2meand0((double* )x,  __xSize);
   d2d0OpMinusd2((double* )x,  __xSize,__temp48,(double* )__temp49);
   d2d0OpDotHatd2((double* )__temp49,  ____temp49Size,2,(double* )__temp50);
   __temp51 = d2sumd0((double* )__temp50,  ____temp50Size);
   beq = d0d0OpDotSlashd0(__temp47,__temp51);
 
   /*SCI2C: ##################################################################
     SCI2C: aeq = mean(y)-mean(x)*beq;
     SCI2C: ##################################################################*/
   __temp52 = d2meand0((double* )y,  __ySize);
   __temp53 = d2meand0((double* )x,  __xSize);
   __temp54 = d0d0OpStard0(__temp53,beq);
   aeq = d0d0OpMinusd0(__temp52,__temp54);
 
   /*SCI2C: ##################################################################
     SCI2C: 
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: C = 10 .^a;
     SCI2C: ##################################################################*/
   C = d0d0OpDotHatd0(10,a);
 
   /*SCI2C: ##################################################################
     SCI2C: gamma = -b;
     SCI2C: ##################################################################*/
   gamma = d0OpMinusd0(b);
 
   /*SCI2C: ##################################################################
     SCI2C: disp('C')
     SCI2C: ##################################################################*/
   ans1 = g2dispd0((char* )__temp55,  ____temp55Size);
 
   /*SCI2C: ##################################################################
     SCI2C: disp(C)
     SCI2C: ##################################################################*/
   ans2 = d0dispd0(C);
 
   /*SCI2C: ##################################################################
     SCI2C: disp('gamma');
     SCI2C: ##################################################################*/
   ans3 = g2dispd0((char* )__temp56,  ____temp56Size);
 
   /*SCI2C: ##################################################################
     SCI2C: disp(gamma);
     SCI2C: ##################################################################*/
   ans4 = d0dispd0(gamma);
 
   /*SCI2C: ##################################################################
     SCI2C: disp('a-aeq');
     SCI2C: ##################################################################*/
   ans5 = g2dispd0((char* )__temp57,  ____temp57Size);
 
   /*SCI2C: ##################################################################
     SCI2C: disp(a-aeq)
     SCI2C: ##################################################################*/
   __temp58 = d0d0OpMinusd0(a,aeq);
   ans6 = d0dispd0(__temp58);
 
   /*SCI2C: ##################################################################
     SCI2C: disp('b-beq')
     SCI2C: ##################################################################*/
   ans7 = g2dispd0((char* )__temp59,  ____temp59Size);
 
   /*SCI2C: ##################################################################
     SCI2C: disp(b-beq)
     SCI2C: ##################################################################*/
   __temp60 = d0d0OpMinusd0(b,beq);
   ans8 = d0dispd0(__temp60);
 
   /*SCI2C: ##################################################################
     SCI2C: // plot(Volume,Pressure);
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: // plot(Volume,(C ./(Volume.^gamma)),'r')
     SCI2C: ##################################################################*/
 
   /*SCI2C: ##################################################################
     SCI2C: endfunction
     SCI2C: ##################################################################*/
 
   /*
   ** --------------------- 
   ** --- Free Section. --- 
   ** --------------------- 
   */
   /*
   ** ------------------------- 
   ** --- End Free Section. --- 
   ** ------------------------- 
   */
 
   return(0);
 
   /*SCI2C: ##################################################################
     SCI2C: 
     SCI2C: ##################################################################*/
}