/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:33:08 */
/*FOR_C Options SET: ftn=u io=c no=p op=aimnv pf=,p_cpolz s=dbov str=l x=f - prototypes */
#include <math.h>
#include "fcrt.h"
#include <stdio.h>
#include <stdlib.h>
#include "p_cpolz.h"
/*     Program DRCPOLZ
 *>> 2009-10-27 DRCPOLZ Krogh/Snyder Added ',' in format stmt.
 *>> 1996-06-14 DRCPOLZ Krogh Set for deriving C vers.
 *>> 1992-03-06 DRCPOLZ CLL
 *>> 1987-12-09 DRCPOLZ  Lawson  Initial Code.
 * Conversion should only be done from "Z" to "C" for processing to C.
 *--C replaces "?": DR?POLZ, ?POLZ
 *     Demonstration driver for CPOLZ.
 *     ------------------------------------------------------------------ */
 
int main( )
{
	long int ierr, n1, n2, n3;
	float h[50], z[5][2];
	static float a1[4][2]={1.e0,0.e0,-4.e0,0.e0,1.e0,0.e0,-4.e0,0.e0};
	static float a2[6][2]={1.e0,0.e0,-15.e0,0.e0,85.e0,0.e0,-225.e0,
	 0.e0,274.e0,0.e0,-120.e0,0.e0};
	static float a3[6][2]={1.0e0,0.0e0,-5.5e0,-1.5e0,10.00e0,7.750e0,
	 -7.500e0,-13.25e0,-1.000e0,11.00e0,3.000e0,-1.500e0};
		/* OFFSET Vectors w/subscript range: 1 to dimension */
	float *const H = &h[0] - 1;
		/* end of OFFSET VECTORS */
 
   long int i;
	/*      integer  I, K
	 * */
	/*     ------------------------------------------------------------------ */
	n1 = 3;
	n2 = 5;
	n3 = 5;
 
	cpolz( a1, n1, z, h, &ierr );
	/*++ CODE for ~.C. is inactive
	 *  100 format(' Degree =',I2//
	 *     *       ' Coefficients ='/
	 *     *       (2(1X:'(',1X,F14.9,',',1X,F14.9,1X,')',2X)))
	 *  200 format(/' Roots ='/(2(1X,'(',1X,F14.9,',',1X,F14.9,1X,')':2X)))
	 *c
	 *      print 100, N1, ((A1(K,I),K=1,2),I=1,N1+1)
	 *      print 200, ((Z(K,I),K=1,2),I=1,N1)
	 *c
	 *      print'(/)'
	 *      print 100, N2, ((A2(K,I),K=1,2),I=1,N2+1)
	 *      call CPOLZ(A2,N2,Z,H,IERR)
	 *      print 200, ((Z(K,I),K=1,2),I=1,N2)
	 *c
	 *      print'(/)'
	 *      print 100, N3, ((A3(K,I),K=1,2),I=1,N3+1)
	 *      call CPOLZ(A3,N3,Z,H,IERR)
	 *      print 200, ((Z(K,I),K=1,2),I=1,N3)
	 *++ CODE for .C. is active */
   printf(" Degree =%2ld\n\n Coefficients =\n", n1);
   for (i = 0; i <= n1; i+=2){
     printf(" (%14.9f, %14.9f )", a1[i][0], a1[i][1]);
     if (i < n1) printf("  (%14.9f, %14.9f )", a1[i+1][0], a1[i+1][1]);
     printf(" \n");}
   printf("\n Roots =\n");
   for (i = 0; i <= (n1-1); i+=2){
     printf(" (%14.9f, %14.9f )", z[i][0], z[i][1]);
     if (i < (n1-1)) printf(" (%14.9f, %14.9f )", z[i+1][0], z[i+1][1]);
     printf(" \n");}
 
   printf("\n\n Degree =%2ld\n\n Coefficients =\n", n2);
   for (i = 0; i <= n2; i+=2){
     printf(" (%14.9f, %14.9f )", a2[i][0], a2[i][1]);
     if (i < n2) printf("  (%14.9f, %14.9f )", a2[i+1][0], a2[i+1][1]);
     printf("\n");}
   cpolz( a2, n2, z, h, &ierr );
   printf("\n Roots =\n");
   for (i = 0; i <= (n2-1); i+=2){
     printf(" (%14.9f, %14.9f )", z[i][0], z[i][1]);
     if (i < (n2-1)) printf("  (%14.9f, %14.9f )", z[i+1][0], z[i+1][1]);
     printf(" \n");}
 
   printf("\n\n Degree =%2ld\n\n Coefficients =\n", n3);
   for (i = 0; i <= n3; i+=2){
     printf(" (%14.9f, %14.9f )", a3[i][0], a3[i][1]);
     if (i < n3) printf("  (%14.9f, %14.9f )", a3[i+1][0], a3[i+1][1]);
     printf("\n");}
   cpolz( a3, n3, z, h, &ierr );
   printf("\n Roots =\n");
   for (i = 0; i <= (n3-1); i+=2){
     printf(" (%14.9f, %14.9f )", z[i][0], z[i][1]);
     if (i < (n3-1)) printf("  (%14.9f, %14.9f )", z[i+1][0], z[i+1][1]);
     printf(" \n");}
	exit(0);
} /* end of function */
/*++ END */