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

  1. #include <math.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <alloc.h>
  6.  
  7. #include "anum.h"
  8. #include "sysio.h"
  9.  
  10. #define LFLOATALLOC(p,n) p=farcalloc(n, sizeof(double));
  11.  
  12.  
  13. double bf(double t, double x, double xprime)
  14.  
  15. {    double res;
  16.  
  17.     res=xprime / t - x / (t*t) + 1;
  18.     return(res);
  19. }
  20.  
  21.  
  22.  
  23.  
  24. void results(int nret,
  25.         double *tval, double *xval, double *xprimeval)
  26.  
  27. {    int i;
  28.  
  29.     puts("       T           X           X'");
  30.     puts("----------------------------------------");
  31.     for (i=0; i<nret; i++)
  32.         printf("% 10.5le  % 10.5le % 10.5le\n",
  33.                 *(tval+i), *(xval+i), *(xprimeval+i));
  34. }
  35.  
  36.  
  37.  
  38. void main(void)
  39.  
  40. {    double Tlb, Tub, lbXval, ubXval;
  41.     double *tval, *xval, *xprimeval;
  42.     int nint, nret, errcode;
  43.  
  44.     clrscr();
  45.     puts("Test program for function linear_shooting");
  46.     puts("-----------------------------------------\n");
  47.  
  48.     Tlb=1.0;
  49.     Tub=2.0;
  50.     lbXval=3.0;
  51.     ubXval=4.0;
  52.     nret=5;
  53.     nint=6;
  54.  
  55.  
  56.  
  57.     printf("T lower bound          : %+10.5lf\n",Tlb);
  58.     printf("T upper bound          : %+10.5lf\n",Tub);
  59.     printf("X at T = %10.15lf      : %+10.5lf\n",Tlb, lbXval);
  60.     printf("X at T = %10.15lf      : %+10.5lf\n",Tub, ubXval);
  61.  
  62.  
  63.     printf("Number of asked values : %3d\n",nret);
  64.     printf("Number of intervals    : %3d\n\n",nint);
  65.  
  66.     tval      = farcalloc(nret, sizeof(double));
  67.     xval      = farcalloc(nret, sizeof(double));
  68.     xprimeval = farcalloc(nret, sizeof(double));
  69.  
  70.  
  71.     if (tval==NULL || xval==NULL || xprimeval==NULL)
  72.     {    fputs("Not enough working core",stderr);
  73.         exit(-1);
  74.     }
  75.  
  76.  
  77.     linear_shooting(Tlb, Tub, lbXval, ubXval,
  78.             nret, nint,
  79.             tval, xval, xprimeval,
  80.             &errcode,
  81.             bf);
  82.  
  83.     SYSMSG(errcode, stderr);
  84.  
  85.     results( nret, tval, xval, xprimeval);
  86.  
  87.     farfree(tval);
  88.     farfree(xval);
  89.     farfree(xprimeval);
  90.  
  91.  
  92. }
  93.  
  94.