home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / ANUMR5.ZIP / LVRRTEST.C < prev    next >
C/C++ Source or Header  |  1991-04-21  |  1KB  |  93 lines

  1.  
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. #include <mem.h>
  7. #include <alloc.h>
  8.  
  9.  
  10. #include "anum.h"
  11. #include "sysio.h"
  12.  
  13. #define MAXDIM 5
  14.  
  15.  
  16. void affmat(int dim, double *matrix)
  17.  
  18.  
  19. {    int i,j;
  20.  
  21.     for (i=0;i<dim;i++)
  22.     {    for (j=0;j<dim;j++) printf("%6g ",*(matrix+i*dim+j));
  23.         putchar('\n');
  24.     }
  25. }
  26.  
  27.  
  28.  
  29. void results(int dim, double *poly)
  30.  
  31. {       int i;
  32.  
  33.     puts("Characteristic polynomial");
  34.     for (i=dim; i>=0; i--)
  35.     {    printf("% 10lg ", *(poly+i));
  36.         if (i>=1)
  37.         {    printf("*X%c",i>1 ? '^' : ' ');
  38.             if (i>1) printf("%d", i);
  39.             puts(" +");
  40.  
  41.         }
  42.     }
  43.     printf("\n Core left : %ld bytes.\n",farcoreleft());
  44. }
  45.  
  46.  
  47.  
  48.  
  49. void main(void)
  50.  
  51.  
  52. {    double *matrix, *poly;
  53.     int dim,i,j,errcode;
  54.     double ;
  55.  
  56.  
  57.     puts("Test program for function le_verrier\n");
  58.     for (dim=1;dim<=MAXDIM;dim++)
  59.     {    matrix=farcalloc(dim*dim,sizeof(double));
  60.         if (matrix==NULL)
  61.         {    fputs("Not enough core", stderr);
  62.             exit(ENOWCORE);
  63.         }
  64.  
  65.         poly=farcalloc(dim+1, sizeof(double));
  66.         if (poly==NULL)
  67.         {       farfree(poly);
  68.             fputs("Not enough core", stderr);
  69.             exit(ENOWCORE);
  70.         }
  71.  
  72.  
  73.  
  74.         for (i=0;i<dim;i++)
  75.             for(j=0;j<dim;j++)
  76.                 *(matrix+i*dim+j)=(double)(rand()%10)-5;
  77.  
  78.         printf("Matrix order : %d.\n",dim);
  79.         affmat(dim,matrix);
  80.  
  81.         le_verrier(dim, matrix, poly, &errcode);
  82.         SYSMSG(errcode,stderr);
  83.  
  84.         results(dim, poly);
  85.         farfree(matrix);
  86.         farfree(poly);
  87.     }
  88. }
  89.  
  90.  
  91.  
  92.  
  93.