home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / ANUMR5.ZIP / EDICTEST.C < prev    next >
C/C++ Source or Header  |  1991-11-25  |  2KB  |  92 lines

  1. /* OK mémoire */
  2.  
  3. #include <math.h>
  4. #include <conio.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <alloc.h>
  8.  
  9. #include "anum.h"
  10. #include "sysio.h"
  11.  
  12.  
  13.  
  14. double bf(double *val)
  15.  
  16. {    double res;
  17.  
  18.     res = -4 * val[1] * val[4];
  19.     return(res);
  20. }
  21.  
  22.  
  23.  
  24. void results(int order, int nret, double *matsol)
  25.  
  26. {    int i,j;
  27.  
  28.     for (i=0; i<order; i++)
  29.     {    printf("\n       T          X[%d]       \n",i+1);
  30.           puts("------------------------------");
  31.           for (j=0; j<nret; j++)
  32.             printf("% 10.5le  % 10.5le\n",
  33.                 *(matsol+j*(order+1)),
  34.                 *(matsol+j*(order+1)+i+1));
  35.     }
  36. }
  37.  
  38.  
  39.  
  40. void main(void)
  41.  
  42. {    double lb,ub,*initval,*matsol;
  43.     int nint,nret,order,i,errcode;
  44.  
  45.     clrscr();
  46.     puts("Test program for function initcond");
  47.     puts("----------------------------------\n");
  48.  
  49.     order = 4;
  50.     lb=5.0;
  51.     ub=6.0;
  52.     if ((initval=farcalloc(order,sizeof(double)))==NULL)
  53.     {    fputs("Not enough core", stderr);
  54.         exit(-1);
  55.     }
  56.     *initval     =  7.0;
  57.     *(initval+1) =  8.0;
  58.     *(initval+2) =  9.0;
  59.     *(initval+3) = 10.0;
  60.     nret=11;
  61.     nint=100;
  62.  
  63.     printf("Lower bound            : %+10.5lf\n",lb);
  64.     printf("Upper bound            : %+10.5lf\n",ub);
  65.  
  66.     for (i=0; i<order; i++)
  67.         printf("x[%d] at t = %+lf     : %+10.5lf\n",i+1,lb,
  68.                             *(initval+i));
  69.     printf("Number of asked values : %3d\n",nret);
  70.     printf("Number of intervals    : %3d\n\n",nint);
  71.  
  72.     if ((matsol=farcalloc((order+1)*nret, sizeof(double)))==NULL)
  73.     {    fputs("Not enough core", stderr);
  74.         exit(-1);
  75.     }
  76.  
  77.  
  78.     initcond(order, lb, ub, initval,
  79.          nret, nint,
  80.          matsol,
  81.          &errcode, bf);
  82.     SYSMSG(errcode, stderr);
  83.  
  84.     results(order, nret, matsol);
  85.  
  86.     farfree(initval);
  87.     farfree(matsol);
  88.  
  89.  
  90. }
  91.  
  92.