473,511 Members | 15,624 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

error in compling C code (warning: assignment from incompatible pointer type)

3 New Member
I have C code. On compliation it shows error,
warning: assignment from incompatible pointer type
Actually I wanted to evaluate integral then sum all the integrals. I would be glad if anyone could help me. Thanks

Expand|Select|Wrap|Line Numbers
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <gsl/gsl_errno.h>
  4. #include <gsl/gsl_math.h>
  5. #include <gsl/gsl_vector.h>
  6. #include <gsl/gsl_multiroots.h>
  7. #include <gsl/gsl_integration.h>
  8.  
  9.  
  10.  
  11. struct rparams
  12. {
  13.     double mu;
  14.     double Lambda;
  15.     double G;
  16.     double H;
  17. };
  18.  
  19. struct params2
  20. {
  21.     double mu;
  22.     double Lambda;
  23.     double H;
  24.     double G;
  25.     double Delta;
  26.     double mue;
  27.     double mu8;
  28. };
  29.  
  30. int rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f);
  31. double EQ1 (double Delta, double mue, double mu8, void *params);
  32. double EQ2 (double Delta, double mue, double mu8, void *params);
  33. double EQ3 (double Delta, double mue, double mu8, void *params);
  34. double Part1 (double p, void *params);
  35. double Part2 (double p, void *params);
  36. double Part3 (double p, void *params);
  37. double Part4 (double p, void *params);
  38. double Part5 (double p, void *params);
  39. double Part6 (double p, void *params); 
  40. double Sum1 (double p, void *params);
  41. double Sum2 (double p, void *params);
  42. double Sum3 (double p, void *params);
  43. double Sum4 (double p, void *params);
  44. double Sum5 (double p, void *params); 
  45. double Sum6 (double p, void *params); 
  46. double function (int i, double p3, void *params, int n);
  47. double newfunction( double p3, void *params, int n);
  48. double integra_fv(int i, double Delta, double mue, double mu8, void *params);
  49. double Integrate (int i, double Delta, double mue, double mu8, void *params);
  50. double lowerlimit(double Delta, double mue, double mu8, void *params, int n);
  51. double upperlimit(double Delta, double mue, double mu8, void *params, int n);
  52. double Integralp1p2(int i, double Delta, double mue, double mu8, void *params, int n);
  53. int main (int argc, char *argv[])
  54. {
  55.     int status;
  56.     double Delta, mue, mu8, mu, H;
  57.     size_t iter=0;
  58.     char name[1000];
  59.  
  60.     const size_t n= 3;
  61.     FILE *out;
  62.     if(argc==3)
  63.     {
  64.         sprintf (name,"2SC_mu%sH%snnonzero.dat2", argv[1], argv[2]);
  65.  
  66.     mu=atof(argv[1]);
  67.     H=atof(argv[2]);
  68.  
  69.     }else{
  70.         printf ("as user:\n run mu H\n");
  71.         return 1;
  72.           }
  73.  
  74.     if ((out=fopen(name, "w"))==NULL) {
  75.        printf( "Error in opening the outputfile\n");
  76.            return 1;
  77.     }
  78.  
  79.     const gsl_multiroot_fsolver_type *T;
  80.     gsl_multiroot_fsolver *s;
  81.  
  82.     struct rparams p= {mu, 653.0, 3.76E-6, H};
  83.  
  84.     printf("H=%g mu=%g\n", H, mu);
  85.     gsl_multiroot_function f= {&rosenbrock_f, n, &p};
  86.  
  87.     double x_init[3]= {70.0, 150.0, 18.0};
  88.  
  89.     gsl_vector *x = gsl_vector_alloc (n);
  90.     gsl_vector_set (x, 0, x_init[0]);
  91.     gsl_vector_set (x, 1, x_init[1]);
  92.     gsl_vector_set (x, 2, x_init[2]);
  93.  
  94.     T= gsl_multiroot_fsolver_hybrids;
  95.     s=gsl_multiroot_fsolver_alloc (T, 3);
  96.     gsl_multiroot_fsolver_set (s, &f, x);
  97.  
  98.     // print_state (iter, s);
  99.  
  100.     do
  101.     {
  102.  
  103.            iter++;
  104.         printf ("iter= %3u x = % .3f % .3f % .3f" "f(x)= % .3e % .3e % .3e\n",
  105.  
  106.             iter,
  107.             gsl_vector_get (s->x, 0),
  108.             gsl_vector_get (s->x, 1),
  109.             gsl_vector_get (s->x, 2),
  110.             gsl_vector_get (s->f, 0),
  111.             gsl_vector_get (s->f, 1),
  112.             gsl_vector_get (s->f, 2));  status = 
  113.     gsl_multiroot_fsolver_iterate (s);
  114.  
  115.         //            print_state (iter, s);
  116.         if (status)
  117.             break;
  118.         status =
  119.         gsl_multiroot_test_residual (s->f, 1e-7);
  120.     }
  121.     while (status == GSL_CONTINUE && iter < 10000);
  122.  
  123.     printf ("status = %s\n", gsl_strerror (status));
  124.     Delta =gsl_vector_get (s->x,0);
  125.     mue =gsl_vector_get (s->x, 1);
  126.     mu8 =gsl_vector_get (s->x, 2);
  127.  
  128.     fprintf(out, "%g %g %g %g %g\n", p.mu, H, Delta, mue, mu8);
  129.  
  130.     fclose (out);
  131.     return 0;
  132.       }
  133.  
  134.      int rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f)
  135.      {
  136.      const double x0 = gsl_vector_get (x, 0);
  137.      const double x1 = gsl_vector_get (x, 1);
  138.      const double x2 = gsl_vector_get (x, 2);
  139.  
  140.      const double y0 = EQ1(x0, x1, x2, params);
  141.      const double y1 = EQ2(x0, x1, x2, params);
  142.      const double y2 = EQ3(x0, x1, x2, params);
  143.  
  144.      gsl_vector_set (f, 0, y0);
  145.      gsl_vector_set (f, 1, y1);
  146.      gsl_vector_set (f, 2, y2);
  147.  
  148.      return GSL_SUCCESS;
  149.      }
  150. double EQ1 (double Delta, double mue, double mu8, void *params)
  151. {
  152.     double G = ((struct rparams *) params)->G;
  153.         double mu = ((struct rparams *) params)->mu;
  154.     double H = ((struct rparams *) params)->H;
  155.  
  156.     int  nmax;
  157.     int n;
  158.     double Pi=M_PI;
  159.     double avemu= mu-1.0/6.0*mue+1.0/3.0*mu8;
  160.     double P1, P2, P3, P4, f;
  161.  
  162.     P1= -(Delta*H)/(2.0*Pi*Pi)*Integrate(1, Delta, mue, mu8, params); /* from 0 to infty for n equal to zero */
  163.     P2= -(Delta*H)/(Pi*Pi)* integra_fv(1, Delta, mue, mu8, params); /* from 0 to infty for n not equal to zero */
  164.     P3= -(Delta*H)/(2*Pi*Pi)* Integrate(4, Delta, mue, mu8, params); /* from p2 to infty for n not equal to zero  */ 
  165.         P4= +(Delta*H)/(2.0*Pi*Pi)*integra_fv(4, Delta, mue, mu8, params); /* from 0 to infty for n not equal to zero *****/ 
  166.     nmax=(avemu-sqrt(mue*mue/4.0-Delta*Delta))*(avemu-sqrt(mue*mue/4.0-Delta*Delta))/(H);
  167.     double S=0;
  168.     for(n=0;n<=nmax;n++){
  169.     S+=-(Delta*H)/(2.0*Pi*Pi)*Integralp1p2(1, Delta, mue, mu8, params,n)+10;
  170.     }
  171.     f = P1+P2+P3+P4+S+Delta/(2.0*G);
  172.     printf("I'm in EQ1 nmax=%u S=%f\n", nmax, S);
  173.     return f;
  174. }
  175. double EQ2 (double Delta, double mue, double mu8, void *params)
  176. {
  177.  
  178.     double H = ((struct rparams *) params)->H;
  179.  
  180.     double mu = ((struct rparams *) params)->mu;
  181.  
  182.         double Pi=M_PI;
  183.  
  184.     double mu_db, mu_ub; 
  185.  
  186.     double P1, P2,P3,P4, f1,f;
  187.  
  188.         mu_db = mu +1.0/3.0*mue -2.0/3.0*mu8;
  189.     mu_ub = mu-2.0/3.0*mue-2.0/3.0*mu8;
  190.  
  191.         P1 = H/(12.0*Pi*Pi)*Integrate(2, Delta, mue, mu8, params); /* 0 to infty for n equal to zero */
  192.     P2 = H/(6.0*Pi*Pi)*integra_fv(2, Delta, mue, mu8, params); /* 0 to infty for n not equal to zero */ 
  193.     P3 = H/(12.0*Pi*Pi)*integra_fv(5, Delta, mue, mu8, params); /* 0 to infty for n not equal to zero */
  194.     P4 = -H/(12.0*Pi*Pi)*Integrate(5, Delta, mue, mu8, params); /* p2 to infty for n not equal to zero */
  195.  
  196.     f1 = P1 + P2+P3+P4 -(mu_db*mu_db*mu_db)/(9.0*Pi*Pi)-H/(4.0*Pi*Pi)*mue +H/(6.0*Pi*Pi)*mu_ub;
  197.  
  198.     int n;
  199.     double s=0.0;
  200.      int max = (mue*mue)/(2.0*H);
  201.  
  202.        for (n=1; n<=max; n++)
  203.            s+=H/(2.0*Pi*Pi)*sqrt(mue*mue-2.0*n*H);
  204.  
  205.  
  206.        int m;
  207.        double f2=0.0;
  208.        int maxm = (mu_ub*mu_ub)/(2.0*H); 
  209.        for (m=1; m<=maxm; m++)
  210.            f2+=H/(3.0*Pi*Pi)*sqrt(mu_ub*mu_ub-2.0*m*H);
  211.  
  212.             f=f1+f2-s;
  213. /*    printf("I am in eq2 f2=%f mue=%f mu_db=%f mu_ub=%f maxm=%u\n", f2, mue, mu_db, mu_ub, maxm); */
  214.     return f;
  215. }
  216.  
  217. double EQ3(double Delta, double mue, double mu8, void *params)
  218. {
  219.  
  220.         double H = ((struct rparams *) params)->H;
  221.  
  222.         double mu = ((struct rparams *) params)->mu;
  223.  
  224.     double Pi=M_PI;
  225.  
  226.         double mu_db = mu +1.0/3.0*mue -2.0/3.0*mu8;
  227.     double     mu_ub = mu-2.0/3.0*mue-2.0/3.0*mu8;
  228.  
  229.     double P1, P2, P3, P4, f;
  230.  
  231.         P1 = -H/(6.0*Pi*Pi)*Integrate(3, Delta, mue, mu8, params); /* 0 to infty for n equal to zero */
  232.  
  233.         P2 = -H/(3.0*Pi*Pi)*integra_fv(3, Delta, mue, mu8, params); /* 0 to infty for n not equal to zero */ 
  234.     P3 = -H/(6.0*Pi*Pi)*integra_fv(6, Delta, mue, mu8, params); /* 0 to infty for n not equal to zero */
  235.     P4 = H/(6.0*Pi*Pi)*Integrate(6, Delta, mue, mu8, params); /* p2 to infty for n not equal to zero */
  236.  
  237.     int j;
  238.     double f3=0;
  239.     int maxmm =mu_ub*mu_ub/(2.0*H); 
  240.     for(j=1; j<=maxmm; j++)
  241.         f3+=H/(3.0*Pi*Pi)*sqrt(mu_ub*mu_ub-2.0*j*H);
  242.  
  243.         f = P1 + P2 +P3+P4+ f3 + 2.0*(mu_db*mu_db*mu_db)/(9.0*Pi*Pi)+H/(6.0*Pi*Pi)*mu_ub;
  244.  
  245.        return f;
  246. }
  247.  
  248. double Part1 (double p3, void *params)
  249. {
  250.  
  251.     double Delta = ((struct params2 *) params)->Delta;
  252.         double mu = ((struct params2 *) params)->mu;
  253.         double mue = ((struct params2 *) params)->mue;
  254.         double mu8 = ((struct params2 *) params)->mu8;
  255.  
  256.         double avemu;
  257.  
  258.  
  259.     double P1;
  260.  
  261.     avemu = mu-mue/6.0+mu8/3.0;
  262.  
  263.     P1 = (1.0/sqrt((p3+avemu)*(p3+avemu)+Delta*Delta)+1.0/(sqrt((p3-avemu)*(p3-avemu)+Delta*Delta)));
  264.  
  265.     return P1;
  266. }
  267. /* first part for mue equation*/
  268. double Part2 (double p3, void *params)
  269. {
  270.        double Delta = ((struct params2 *) params)->Delta;
  271.        double mu = ((struct params2 *) params)->mu;
  272.        double mue = ((struct params2 *) params)->mue;
  273.        double mu8 = ((struct params2 *) params)->mu8;
  274.  
  275.        double avemu;
  276.        double P2;
  277.  
  278.        avemu = mu-mue/6.0+mu8/3.0;
  279.  
  280.           P2 = ((p3+avemu)/(sqrt((p3+avemu)*(p3+avemu)+Delta*Delta))-(p3-avemu)/(sqrt((p3-avemu)*(p3-avemu)+Delta*Delta)));
  281.        return P2;
  282.  }
  283. /* first part for mu8 equation*/
  284. double Part3 (double p3, void *params)
  285. {
  286.        double Delta = ((struct params2 *) params)->Delta;
  287.  
  288.        double mu = ((struct params2 *) params)->mu;
  289.        double mue = ((struct params2 *) params)->mue;
  290.        double mu8 = ((struct params2 *) params)->mu8;
  291.  
  292.        double avemu;
  293.  
  294.        double P3;
  295.  
  296.        avemu = mu-mue/6.0+mu8/3.0;
  297.  
  298.        P3 = ((p3+avemu)/sqrt((p3+avemu)*(p3+avemu)+Delta*Delta)-(p3-avemu)/sqrt((p3-avemu)*(p3-avemu)+Delta*Delta));
  299.        /*printf("P3=%f\n", P3); */
  300.        return P3;
  301. }
  302. /* part containing integration from p2 to infty */
  303. double Part4 (double p3, void *params)
  304. {
  305.        double Delta = ((struct params2 *) params)->Delta;
  306.  
  307.        double Lambda = ((struct params2 *) params)->Lambda;
  308.  
  309.        double mu = ((struct params2 *) params)->mu;
  310.        double mue = ((struct params2 *) params)->mue;
  311.        double mu8 = ((struct params2 *) params)->mu8;
  312.  
  313.        double P4;
  314.        double avemu = mu-mue/6.0+mu8/3.0;
  315.        double b1=sqrt(p3*p3+avemu*avemu);
  316.  
  317.        if(mue/2.0>Delta){
  318.               P4=1.0/sqrt((b1-avemu)*(b1-avemu)+Delta*Delta); /* second part mue/2 greater than Delta for Delta equation */
  319.           }else{
  320.               P4=0;
  321.           }
  322.      return P4*exp(-avemu*avemu/(Lambda*Lambda));
  323. }
  324. double Part5 (double p3, void *params)
  325. {
  326.        double Delta = ((struct params2 *) params)->Delta;
  327.  
  328.        double Lambda = ((struct params2 *) params)->Lambda;
  329.  
  330.        double mu = ((struct params2 *) params)->mu;
  331.        double mue = ((struct params2 *) params)->mue;
  332.        double mu8 = ((struct params2 *) params)->mu8;
  333.  
  334.        double P5;      
  335.        double avemu = mu-mue/6.0+mu8/3.0;
  336.        double b1=sqrt(p3*p3+avemu*avemu);
  337.  
  338.        if(mue/2.0>Delta){
  339.               P5=((b1-avemu)/sqrt((b1-avemu)*(b1-avemu)+Delta*Delta)-3.0); /* second part mue/2 greater than Delta for mue equation */
  340.           }else{
  341.               P5=0;                  
  342.                    } 
  343.         return P5*exp(-avemu*avemu/(Lambda*Lambda));
  344. }
  345. double Part6 (double p3, void *params)
  346. {
  347.        double Delta = ((struct params2 *) params)->Delta;
  348.  
  349.        double Lambda = ((struct params2 *) params)->Lambda;
  350.        double mu = ((struct params2 *) params)->mu;
  351.        double mue = ((struct params2 *) params)->mue;
  352.        double mu8 = ((struct params2 *) params)->mu8;
  353.        double P6;
  354.        double avemu = mu-mue/6.0+mu8/3.0;
  355.        double b1=sqrt(p3*p3+avemu*avemu);
  356.  
  357.        if(mue/2.0>Delta){
  358.               P6=(b1-avemu)/sqrt((b1-avemu)*(b1-avemu)+Delta*Delta); /* second part mue/2 greater than Delta for mue equation */
  359.           }else{
  360.               P6=0;                  
  361.                    } 
  362.         return P6*exp(-avemu*avemu/(Lambda*Lambda));
  363. }
  364. double Sum1(double p, void *params)
  365. {
  366.        double  Lambda = ((struct params2 *) params)->Lambda;
  367.  
  368.        double H = ((struct params2 *) params)->H;
  369.  
  370.        double S=0;
  371.        int n;
  372.  
  373.        int max = (10.0*Lambda*Lambda)/H;
  374.  
  375.  
  376.        for (n=1;n<=max; n++){
  377.            S+=function(1,p, params, n);
  378.        }
  379.  
  380.        return S;
  381. }
  382. double Sum2(double p, void *params)
  383. {
  384.        double  Lambda = ((struct params2 *) params)->Lambda;
  385.  
  386.        double H = ((struct params2 *) params)->H;
  387.  
  388.        double S=0;
  389.        int n;
  390.  
  391.        int max = (10.0*Lambda*Lambda)/H;
  392.  
  393.  
  394.        for (n=1;n<=max; n++){
  395.            S+=function(2,p, params, n);
  396.        }
  397.        return S;
  398. }
  399. double Sum3(double p, void *params)
  400. {
  401.        double  Lambda = ((struct params2 *) params)->Lambda;
  402.  
  403.        double H = ((struct params2 *) params)->H;
  404.  
  405.        double S=0;
  406.        int n;
  407.  
  408.        int max = (10.0*Lambda*Lambda)/H;
  409.  
  410.  
  411.        for (n=1;n<=max; n++){
  412.            S+=function(3,p, params, n);
  413.        }
  414.        return S;
  415. }
  416.  
  417. /*  for mue/2 greater than Delta 
  418.  *
  419.  *
  420.  *  */
  421. double Sum4(double p, void *params)
  422. {
  423.        double mu =((struct params2*) params)->mu;
  424.        double H = ((struct params2*) params)->H;
  425.        double Lambda = ((struct params2*) params)->Lambda;
  426.        double mue =((struct params2*) params)->mue;
  427.        double mu8 =((struct params2*) params)->mu8;
  428.        double avemu = mu-mue/6.0+mu8/3.0;
  429.        double S=0;
  430.        int n;
  431.  
  432.        int max = 10.0*Lambda*Lambda/H;
  433.        for (n=avemu*avemu/H;n<=max; n++){
  434.            S+=function(4,p, params, n);
  435.        }
  436.        return S;
  437. }
  438. double Sum5(double p, void *params)
  439. {
  440.        double mu =((struct params2*) params)->mu;
  441.        double H = ((struct params2*) params)->H;
  442.        double Lambda = ((struct params2*) params)->Lambda;
  443.        double mue =((struct params2*) params)->mue;
  444.        double mu8 =((struct params2*) params)->mu8;
  445.        double avemu = mu-mue/6.0+mu8/3.0;
  446.        double S=0;
  447.        int n;
  448.  
  449.        int max = 10.0*Lambda*Lambda/H;
  450.        for (n=avemu*avemu/H;n<=max; n++){
  451.            S+=function(5,p, params, n);
  452.        }
  453.        return S;
  454.  double Sum6(double p, void *params)
  455. {
  456.        double mu =((struct params2*) params)->mu;
  457.        double H = ((struct params2*) params)->H;
  458.        double Lambda = ((struct params2*) params)->Lambda;
  459.        double mue =((struct params2*) params)->mue;
  460.        double mu8 =((struct params2*) params)->mu8;
  461.        double avemu = mu-mue/6.0+mu8/3.0;
  462.        double S=0;
  463.        int n;
  464.  
  465.        int max = 10.0*Lambda*Lambda/H;
  466.        for (n=avemu*avemu/H;n<=max; n++){
  467.            S+=function(6,p, params, n);
  468.        }
  469.        return S;
  470. double function(int i, double p3, void *params, int n)
  471. {
  472.     double mu = ((struct params2 *) params )->mu;
  473.     double  Lambda = ((struct params2 *) params)->Lambda;
  474.     double Delta = ((struct params2 *) params)->Delta;
  475.     double mue = ((struct params2 *) params)->mue;
  476.     double mu8 = ((struct params2 *) params)->mu8;
  477.     double H = ((struct params2 *) params)->H;
  478.     double a1, avemu, f1, f2, nint;        
  479.         avemu = mu-mue/6.0+mu8/3.0;
  480.     nint =n*1.0;
  481.     a1=sqrt(p3*p3+nint*H);
  482.          if(i==1){
  483.         f1=1.0/sqrt((a1+avemu)*(a1+avemu)+Delta*Delta); /* first part for Delta equation */
  484.         f2=1.0/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta);                             
  485.         return (f1+f2)*exp((-nint*H)/(Lambda*Lambda));
  486.     }else{
  487.      if(i==2){
  488.                    f1=(a1+avemu)/sqrt((a1+avemu)*(a1+avemu)+Delta*Delta); /* first part for mue equation */ 
  489.                   f2=(a1-avemu)/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta);                   
  490.         return (f1-f2)*exp((-nint*H)/(Lambda*Lambda));
  491.      }else{
  492.        if(i==3){
  493.                   f1=(a1+avemu)/sqrt((a1+avemu)*(a1+avemu)+Delta*Delta);  /* first part of mu8 equation */
  494.                           f2=(a1-avemu)/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta);                   
  495.         return (f1-f2)*exp((-nint*H)/(Lambda*Lambda));
  496.         }else{
  497.      if(i==4){
  498.                   if(mue/2.0>=Delta){
  499.               f1=1.0/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta); /* second part mue/2 greater than Delta for Delta equation */
  500.           }else{
  501.               f1=0;
  502.           }
  503.          return f1*exp((-nint*H)/(Lambda*Lambda));
  504.      }else{
  505.        if(i==5){
  506.                if(mue/2.0>=Delta){
  507.               f1=((a1-avemu)/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta)-3.0); /* second part mue/2 greater than Delta for mue equation */
  508.           }else{
  509.               f1=0;                  
  510.                    } 
  511.         return f1*exp((-nint*H)/(Lambda*Lambda));
  512.      }else{
  513.                 if(mue/2.0>=Delta){
  514.                         f1=(a1-avemu)/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta); /* second part mue/2 greater than Delta for mu8 equation */
  515.                 }else{
  516.               f1=0;
  517.                   } 
  518.         return f1*exp((-nint*H)/(Lambda*Lambda));
  519.         }    
  520.         }
  521.       }
  522.    }
  523.  }
  524. }
  525. double newfunction( double p3, void *params, int n)
  526. {
  527.     double mu = ((struct params2 *) params )->mu;
  528.     double  Lambda = ((struct params2 *) params)->Lambda;
  529.     double Delta = ((struct params2 *) params)->Delta;
  530.     double mue = ((struct params2 *) params)->mue;
  531.     double mu8 = ((struct params2 *) params)->mu8;
  532.     double H = ((struct params2 *) params)->H;
  533.     double a1, avemu, f1, nint;
  534.         avemu = mu-mue/6.0+mu8/3.0;
  535.     nint =n*1.0;
  536.     a1=sqrt(p3*p3+nint*H);
  537.     if(mue/2.0>=Delta){
  538.               f1=1.0/sqrt((a1-avemu)*(a1-avemu)+Delta*Delta); /* second part mue/2 greater than Delta for Delta equation */
  539.           }else{
  540.               f1=0;
  541.           }
  542.          return f1*exp((-nint*H)/(Lambda*Lambda));
  543. }
  544.  
  545.  
  546. double integra_fv(int i, double Delta, double mue, double mu8, void *params) /* integration for n not equal to zero */
  547. {
  548.     gsl_integration_workspace * w
  549.         = gsl_integration_workspace_alloc (10000);
  550.     double result, error;
  551.     double mu = ((struct rparams *) params)->mu;
  552.     double Lambda = ((struct rparams *) params)->Lambda;
  553.     double H = ((struct rparams *) params)->H;
  554.     double G= ((struct rparams *) params)->G;
  555.     struct params2 p = {mu, Lambda, H, G, Delta, mue, mu8};
  556.     gsl_function F;
  557.     if(i==1){
  558.         F.function = &Sum1;
  559.         F.params = &p;
  560.     }else{
  561.     if(i==2){
  562.         F.function = &Sum2;
  563.         F.params = &p;
  564.     }else{
  565.        if(i==3){
  566.         F.function = &Sum3;
  567.         F.params = &p;
  568.         }else{
  569.       if(i==4){
  570.         F.function = &Sum4;
  571.         F.params = &p;
  572.     }else{
  573.       if(i==5){
  574.             F.function = &Sum5;
  575.         F.params = &p;
  576.     }else{
  577.             F.function = &Sum6;
  578.         F.params = &p;
  579.          }
  580.            }
  581.       }
  582.     } 
  583.   }
  584.        gsl_integration_qag(&F, 0.0, 653.0, 0.0, 1e-7, 10000, 6, w, &result, &error);
  585.        gsl_integration_workspace_free(w);
  586.        return result;
  587. }
  588. /* integration for n equal to zero */
  589. double Integrate(int i, double Delta, double mue, double mu8, void *params)
  590. {
  591.     gsl_integration_workspace * w
  592.         = gsl_integration_workspace_alloc(10000);
  593.  
  594.     double result, error;
  595.  
  596.     double mu = ((struct rparams *) params)->mu;
  597.     double Lambda = ((struct rparams *) params)->Lambda;
  598.     double H = ((struct rparams *) params)->H;
  599.     double G= ((struct rparams *) params)->G;
  600.  
  601.     struct params2 p = {mu, Lambda, H, G, Delta, mue, mu8};
  602.  
  603.     gsl_function F;
  604.  
  605.     if(i==1){
  606.  
  607.     F.function = &Part1;
  608.     F.params = &p;
  609.   }else{
  610.     if(i==2){
  611.  
  612.       F.function = &Part2;
  613.       F.params = &p;
  614.     }else{
  615.     if(i==3){
  616.  
  617.       F.function = &Part3;
  618.       F.params = &p;
  619.     }else{
  620.     if(i==4){
  621.  
  622.       F.function = &Part4;
  623.       F.params = &p;
  624.       }else{
  625.     if(i==5){
  626.  
  627.       F.function = &Part5;
  628.       F.params = &p;
  629.     }else{
  630.  
  631.       F.function = &Part6;
  632.       F.params = &p;
  633.     }
  634.   }
  635.    }
  636.     }
  637.   }
  638.   gsl_integration_qag (&F, 0.0, 653.0, 0.0, 1e-7, 10000, 6, w, &result, &error);       
  639.   gsl_integration_workspace_free (w);
  640.  
  641.   return result;
  642. }
  643. double lowerlimit(double Delta, double mue, double mu8, void *params, int n)
  644. {
  645.      double mu = ((struct params2 *) params)->mu;
  646.        double H = ((struct params2 *) params)->H;
  647.          double S;
  648.      double nint=1.0*n;     
  649.          double avemu=mu-mue*1.0/6.0+mu8*1.0/3.0;
  650.     if(mue/2.0>Delta){
  651.      S=sqrt((avemu-sqrt(mue*mue/4.0-Delta*Delta))*(avemu-sqrt(mue*mue/4.0-Delta*Delta))-nint*H);
  652.     }else{
  653.     S=0;
  654.     }
  655. /*    printf("the variables are mue=%f avemu=%f mu=%f s=%f\n", mue, avemu, mu, S); */
  656.  /*     printf("lowerlimit=%f\n", S); */
  657.      return S;
  658. }
  659. double upperlimit(double Delta, double mue, double mu8, void *params, int n)
  660. {
  661.      double mu = ((struct params2 *) params)->mu;
  662.      double H = ((struct params2 *) params)->H;
  663.          double S;
  664.             double nint=1.0*n;
  665.          double avemu=mu-mue/6.0+mu8*1.0/3.0;
  666.     if(mue/2.0>Delta){
  667.      S=sqrt((avemu+sqrt(mue*mue/4.0-Delta*Delta))*(avemu+sqrt(mue*mue/4.0-Delta*Delta))-nint*H);
  668.     }else{
  669.          S=0;
  670.     }
  671. /*     printf("upperlimit S=%f\n", S); */
  672.  
  673.      return S;
  674. }
  675. double Integralp1p2(int i, double Delta, double mue, double mu8, void *params, int n)
  676. {
  677.     gsl_integration_workspace * w
  678.         = gsl_integration_workspace_alloc (10000);
  679.     double result, error;
  680.     double mu = ((struct rparams *) params)->mu;
  681.     double Lambda = ((struct rparams *) params)->Lambda;
  682.     double H = ((struct rparams *) params)->H;
  683.     double G= ((struct rparams *) params)->G;
  684.  
  685.     struct params2 p = {mu, Lambda, H, G, Delta, mue, mu8};
  686.     gsl_function F;
  687.     if(i==1){
  688.         F.function = &newfunction;
  689.         F.params = &p;
  690.     }else{
  691.     if(i==2){
  692.         F.function = &newfunction;
  693.         F.params = &p;
  694.     }else{
  695.        if(i==3){
  696.         F.function = &newfunction;;
  697.         F.params = &p;
  698.         }else{
  699.  
  700.         F.function = &newfunction;;
  701.         F.params = &p;
  702.       }
  703.     } 
  704.   }
  705.     double p1=lowerlimit(Delta, mue, mu8, params,n);
  706.     double p2=upperlimit(Delta, mue, mu8, params,n);
  707.        gsl_integration_qag(&F, p1, p2, 0.0, 1e-7, 10000, 6, w, &result, &error);
  708.        gsl_integration_workspace_free(w);
  709.        return result;
  710. }
Jun 10 '10 #1
6 4498
melle
8 New Member
Could you please paste your code in a nested code field ?

In your text screen, use your far right button named "wrapped [code]". And please tell at which lines it generates those errors.
Jun 10 '10 #2
Banfa
9,065 Recognized Expert Moderator Expert
[quote=suvas]I have C code. On compliation it shows error,
warning: assignment from incompatible pointer type[/code]

Perhaps you should have posted the entire error message which would have told us what line the error occurred on or indicated that line by some other means.

I for one and not going to analyse 700+ lines of you code looking for a single line with an error.
Jun 10 '10 #3
suvas
3 New Member
@melle
Hi,

Thanks a lot for the reply. I have error in starting from line no 690 as follows

testnew.c:690: warning: assignment from incompatible pointer type
testnew.c:694: warning: assignment from incompatible pointer type
testnew.c:698: warning: assignment from incompatible pointer type
testnew.c:702: warning: assignment from incompatible pointer type

I have defined a function named (newfunction) in line no. 527. If I remove integer part (int n) then there is no error in compilation. But I want to evaluate integral then sum all the integrals(in line no. 169). Actually the limit of integration I defined in line no. p1 in 707 and p2 in 708 also depends on integer n. So problem is about the pointer in passing the integer n. I hope it makes easier for you to understand problem.

Thanks again
Suvas
Jun 11 '10 #4
newb16
687 Contributor
Can you pass it in params2 structure as you pass other parameters?
Jun 11 '10 #5
donbock
2,426 Recognized Expert Top Contributor
All four error lines are identical:
Expand|Select|Wrap|Line Numbers
  1. F.function = &newfunction;
The prototype for newfunction is on line 47:
Expand|Select|Wrap|Line Numbers
  1. double newfunction(double p3, void *params, int n);
Variable F is defined on line 688:
Expand|Select|Wrap|Line Numbers
  1. gsl_function F;
Unfortunately, the definition of gsl_function must be hidden in one of the header files. A quick google search found this definition for gsl_function, however I can't be certain that this is the definition used in your header files. Notice the discrepancy -- this internet citation suggests that the proper prototype for F.function is
Expand|Select|Wrap|Line Numbers
  1. double (*function)(double x, void *params);
The error you're getting would be explained by this discrepancy -- whether the third parameter should be there or not.
Jun 14 '10 #6
suvas
3 New Member
@newb16
Hi,

Thanks for your suggestions. When I pass integer in params2 structure, it is working. Otherwise, it was showing error.
cheers
suvas
Jun 14 '10 #7

Sign in to post your reply or Sign up for a free account.

Similar topics

3
17751
by: Brian Stubblefield | last post by:
Dear clc members, I am rather new to the C programming language. I have a rather large program that I am currently debugging. Currently, the following snippet of code in the c program: ...
15
9320
by: Chris Readle | last post by:
Hi all, Somewhat new to C and I'm getting the following error from my latest code. Here's the warning I'm getting: chris_readle_project3_assignment3.c: In function `main':...
1
2854
by: Josh Wilson | last post by:
Hey gang, So I have my stdin which is user defined file, and am wanting to write it to a temporary file (seems odd I know, but there is a sincere reason), and then use that file as the stdin for...
6
5245
by: PraZ | last post by:
Hi all. Here is a simple code, which when compiled with gcc results in the warning "incompatible pointer type" for arg 1, as expected. But this is just what I want to do, because it makes it...
8
3250
by: Michael | last post by:
Hi all, why do I get a message: warning: passing arg 1 of `collectInput' from incompatible pointer type In 'main' have: char inputString; collectInput(&inputString);
1
4456
by: Olaf \El Blanco\ | last post by:
No entiendo cual es el problema, trato de agregar un solo entero al final y el compilador me avisa de ese error. Tambien tengo una pregunta dentro de la funcion: struct _nodo { int dato;...
1
1519
by: wanglei0214 | last post by:
I compiles a program in SLOS, but there is a warning i donot know how to remove? here is the framework of the code: typedef struct device_tree { ...... union {
13
11961
by: william | last post by:
code segment: long int * size; char entry; ............. size=&entry; ************************************* Gcc reported 'assignment of incompatible pointer type'.
10
9469
drhowarddrfine
by: drhowarddrfine | last post by:
warning: assignment makes pointer from integer without a cast I get that when I compile a C file where the function is defined as this: char **getvars() and the calling function has this...
5
6044
by: plazzasele | last post by:
I want to register a new Person by using the set and get method. I am running my code on a program ( DEVc++), and when i compile the code i get this error message: assignment from incompatible...
0
7252
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7153
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
7432
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
7093
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
7517
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5676
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
5077
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
4743
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
1
791
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.