/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:33:16 */
/*FOR_C Options SET: ftn=u io=c no=p op=aimnv pf=,p_sge2 s=dbov str=l x=f - prototypes */
#include <math.h>
#include "fcrt.h"
#include <stdio.h>
#include <stdlib.h>
#include "p_sge2.h"
/*     program SRDGE2
 *>> 2001-05-22 SRDGE2 Krogh Minor change for making .f90 version.
 *>> 1994-10-19 SRDGE2 Krogh  Changes to use M77CON
 *>> 1992-03-10 SRDGE2 Lawson
 *
 *     Demo driver for SGED, SGEFS, SGEI, SGESLT
 *     ------------------------------------------------------------------
 *--S replaces "?": ?RDGE2, ?GED, ?GEFS, ?GEI, ?GESLT, ?MATP
 *     ------------------------------------------------------------------ */
		/* PARAMETER translations */
#define	NMAX	3
		/* end of PARAMETER translations */
 
 
int main( )
{
	long int i, info, ipvt[NMAX], j, _i, _r;
	float det[2], work[NMAX];
	static float a[3][3], b[1][3], c[1][3];
	static int _aini = 1;
		/* OFFSET Vectors w/subscript range: 1 to dimension */
	float *const Det = &det[0] - 1;
	long *const Ipvt = &ipvt[0] - 1;
	float *const Work = &work[0] - 1;
		/* end of OFFSET VECTORS */
	if( _aini ){ /* Do 1 TIME INITIALIZATIONS! */
		{ static float _itmp0[] = {0.579e0,-.394e0,0.915e0};
		for (j = 1, _r = 0; j <= 3; j++)
		{
			a[j - 1][0] = _itmp0[_r++];
			}
		}
		{ static float _itmp1[] = {-0.795e0,0.226e0,-0.868e0};
		for (j = 1, _r = 0; j <= 3; j++)
		{
			a[j - 1][1] = _itmp1[_r++];
			}
		}
		{ static float _itmp2[] = {0.141e0,-0.329e0,-0.286e0};
		for (j = 1, _r = 0; j <= 3; j++)
		{
			a[j - 1][2] = _itmp2[_r++];
			}
		}
		{ static float _itmp3[] = {5.873e0,-5.324e0,1.069e0};
		for (i = 1, _r = 0; i <= 3; i++)
		{
			b[0][i - 1] = _itmp3[_r++];
			}
		}
		{ static float _itmp4[] = {-6.267e0,4.951e0,-5.177e0};
		for (i = 1, _r = 0; i <= 3; i++)
		{
			c[0][i - 1] = _itmp4[_r++];
			}
		}
		_aini = 0;
	}
 
 
 
	/*     ------------------------------------------------------------------ */
	smatp( (float*)a, NMAX, NMAX, NMAX, " A(,) =" );
	printf(" \n");
	smatp( (float*)b, NMAX, NMAX, 1, " B(,) =" );
	sgefs( (float*)a, NMAX, NMAX, (float*)b, NMAX, 1, ipvt, &info );
	printf(" \n");
	smatp( (float*)b, NMAX, NMAX, 1, " Solution of A*x = b is:" );
 
	printf(" \n");
	smatp( (float*)c, NMAX, NMAX, 1, " C(,) =" );
	sgeslt( (float*)a, NMAX, NMAX, ipvt, (float*)c );
	printf(" \n");
	smatp( (float*)c, NMAX, NMAX, 1, " Solution of (A**t)*x = c is:"
	  );
 
	sged( (float*)a, NMAX, NMAX, ipvt, det );
	printf("\n Determinant of A is:%10.6f * 10**(%5.2f)\n\n", Det[1], Det[2]);
 
	sgei( (float*)a, NMAX, NMAX, ipvt, work );
	smatp( (float*)a, NMAX, NMAX, NMAX, " Inverse of A =" );
	exit(0);
} /* end of function */