/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:33:12 */
/*FOR_C Options SET: ftn=u io=c no=p op=aimnv pf=,p_dpolz s=dbov str=l x=f - prototypes */
#include <math.h>
#include "fcrt.h"
#include <stdio.h>
#include <stdlib.h>
#include "p_dpolz.h"
/*     Program DRDPOLZ
 *>> 2009-10-28 DRZPOLZ Krogh Mods to get comples used in single prec.
 *>> 1996-07-09 DRZPOLZ Krogh Set for deriving single precision C vers.
 *>> 1994-08-09 DRDPOLZ WVS Remove '0' in format
 *>> 1992-03-06 DRDPOLZ CLL
 *>> 1987-12-09 DRDPOLZ  Lawson  Initial Code.
 * Conversion should only be done from "D" to "S" for processing to C.
 *--D replaces "?": DR?POLZ, ?POLZ
 *     Demonstration driver for DPOLZ.
 *     ------------------------------------------------------------------ */
 
int main( )
{
	long int ierr, n1, n2;
	double h[25], z1[3][2], z2[5][2];
	static double a1[4]={1.e0,-4.e0,1.e0,-4.e0};
	static double a2[6]={1.e0,-15.e0,85.e0,-225.e0,274.e0,-120.e0};
		/* OFFSET Vectors w/subscript range: 1 to dimension */
	double *const A1 = &a1[0] - 1;
	double *const A2 = &a2[0] - 1;
	double *const H = &h[0] - 1;
		/* end of OFFSET VECTORS */
 
	/*++ CODE for .D. | .C. is active */
	/*++ CODE for .S. & ~.C. is inactive
	 *      complex       Z1(3), Z2(5)
	 *++ END */
	/*++ CODE for ~.C. is inactive
	 *      integer I, k
	 *++ CODE for .C. is active */
    long int i, k;
	/*++ END
	 * */
	/*     ------------------------------------------------------------------ */
	n1 = 3;
	n2 = 5;
 
	/*++ CODE for ~.C. is inactive
	 *  100 format(' ','Degree =',I2/' ', 'Coefficients =',(T20,4(F10.4,1X)))
	 *  200 format(' ','Roots ='/(2(1X,'(',1X,F8.5,',',1X,F8.5,2X,')':2X)))
	 *  300 format(//' ')
	 *      print 100, N1, (A1(I),I=1,4)
	 *++ CODE for .C. is active */
   printf(" Degree =%2ld\n Coefficients =      ", n1);
   for (i = 0; i < 4; i++) printf("%10.4f", a1[i]);
	dpolz( a1, n1, (double*)z1, h, &ierr );
	/*++ End
	 *++ CODE for .D. & ~.C. is inactive
	 *      print 200, ((Z1(K,I),K=1,2),I=1,3)
	 *++ CODE for .S. & ~.C. is inactive
	 *      print 200, (Z1(I),I=1,3)
	 *++ CODE for ~.C. is inactive
	 *      print 300
	 *      print 100, N2, (A2(I),I=1,6)
	 *++ CODE for .C. is active */
   printf("\n Roots =\n");
   for (i = 0; i < 3; i+=2) {
      printf(" ( %8.5f, %8.5f  )", z1[i][0], z1[i][1]);
      if (i<2) printf(" ( %8.5f, %8.5f  )", z1[i+1][0], z1[i+1][1]);
      printf("\n");}
   printf("\n\n \n Degree =%2ld\n Coefficients =      ", n2);
   for (i = 0; i < 6; i+=4) {
      for (k = i ; k < (i < 2 ? i + 4 : 6); k++)
         printf("%10.4f", a2[k]);
         if (i < 4) printf("\n                     ");}
	dpolz( a2, n2, (double*)z2, h, &ierr );
	/*++ End
	 *++ CODE for .D. & ~.C. is inactive
	 *      print 200,((Z2(K,I),K=1,2),I=1,5)
	 *++ CODE for .S. & ~.C. is inactive
	 *      print 200,(Z2(I),I=1,5)
	 *++ CODE for .C. is active */
   printf("\n Roots =\n");
   for (i = 0; i < 5; i+=2) {
       printf(" ( %8.5f, %8.5f  )", z2[i][0], z2[i][1]);
       if (i<4) printf(" ( %8.5f, %8.5f  )", z2[i+1][0], z2[i+1][1]);
       printf("\n");}
   printf("\n");
	exit(0);
} /* end of function */
/*++ END */