/* setupg.f -- translated by f2c (version 19950314).
   You must link the resulting object file with the libraries:
	-lF77 -lI77 -lm   (in that order)
*/

#include "f2c.h"

/* Common Block Declarations */

struct {
    char argz[512];
} argz_;

#define argz_1 argz_

struct {
    doublereal zs[107], zp[107], zd[107];
} expont_;

#define expont_1 expont_

struct {
    integer nztype[107], mtype[30], ltype;
} natype_;

#define natype_1 natype_

struct {
    doublereal cc[360]	/* was [60][6] */, zz[360]	/* was [60][6] */;
} temp_;

#define temp_1 temp_

/* Table of constant values */

static integer c__9 = 9;
static integer c__1 = 1;

/* Subroutine */ int setupg_(void)
{
    /* System generated locals */
    integer i__1;
    doublereal d__1;

    /* Builtin functions */
    integer s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), 
	    e_wsle(void);
    /* Subroutine */ int s_stop(char *, ftnlen);

    /* Local variables */
    static doublereal allc[60]	/* was [6][5][2] */, allz[60]	/* was [6][5][
	    2] */;
    static integer i, j, k, l, ia, ib, ni;
    static doublereal xi;
    static integer nqn;

    /* Fortran I/O blocks */
    static cilist io___9 = { 0, 6, 0, 0, 0 };


/* COMDECK SIZES */
/************************************************************************
****/
/*  THIS FILE CONTAINS ALL THE ARRAY SIZES FOR USE IN MOPAC.              
**/
/*                                                                        
**/
/*    THERE ARE ONLY  PARAMETERS THAT THE PROGRAMMER NEED SET:            
**/
/*    MAXHEV = MAXIMUM NUMBER OF HEAVY ATOMS (HEAVY: NON-HYDROGEN ATOMS)  
**/
/*    MAXLIT = MAXIMUM NUMBER OF HYDROGEN ATOMS.                          
**/
/*    MAXTIM = DEFAULT TIME FOR A JOB. (SECONDS)                          
**/
/*    MAXDMP = DEFAULT TIME FOR AUTOMATIC RESTART FILE GENERATION (SECS)  
**/
/*                                                                        
**/
/*                                                                        
**/
/************************************************************************
****/
/*                                                                        
**/
/*  THE FOLLOWING CODE DOES NOT NEED TO BE ALTERED BY THE PROGRAMMER      
**/
/*                                                                        
**/
/************************************************************************
****/
/*                                                                        
**/
/*   ALL OTHER PARAMETERS ARE DERIVED FUNCTIONS OF THESE TWO PARAMETERS   
**/
/*                                                                        
**/
/*     NAME                   DEFINITION                                  
**/
/*    NUMATM         MAXIMUM NUMBER OF ATOMS ALLOWED.                     
**/
/*    MAXORB         MAXIMUM NUMBER OF ORBITALS ALLOWED.                  
**/
/*    MAXPAR         MAXIMUM NUMBER OF PARAMETERS FOR OPTIMISATION.       
**/
/*    N2ELEC         MAXIMUM NUMBER OF TWO ELECTRON INTEGRALS ALLOWED.    
**/
/*    MPACK          AREA OF LOWER HALF TRIANGLE OF DENSITY MATRIX.       
**/
/*    MORB2          SQUARE OF THE MAXIMUM NUMBER OF ORBITALS ALLOWED.    
**/
/*    MAXHES         AREA OF HESSIAN MATRIX                               
**/
/************************************************************************
****/
/************************************************************************
****/
/*  FOR SHORT VERSION USE LINE WITH NMECI=1, FOR LONG VERSION USE LINE    
**/
/*  WITH NMECI=10                                                         
**/
/************************************************************************
****/
/*     PARAMETER (NMECI=1,   NPULAY=1) */
/************************************************************************
****/
/* DECK MOPAC */
/* next line added for Unix implementation for command line arguments */

/*     SET-UP THE STEWART'S STO-6G EXPANSIONS */
/*                                            1S */
    allz[0] = 23.10303149;
    allz[1] = 4.235915534;
    allz[2] = 1.185056519;
    allz[3] = .4070988982;
    allz[4] = .1580884151;
    allz[5] = .06510953954;

    allc[0] = .00916359628;
    allc[1] = .04936149294;
    allc[2] = .1685383049;
    allc[3] = .3705627997;
    allc[4] = .4164915298;
    allc[5] = .1303340841;
/*                                      2S */
    allz[6] = 27.68496241;
    allz[7] = 5.077140627;
    allz[8] = 1.42678605;
    allz[9] = .2040335729;
    allz[10] = .09260298399;
    allz[11] = .04416183978;

    allc[6] = -.004151277819;
    allc[7] = -.02067024148;
    allc[8] = -.05150303337;
    allc[9] = .3346271174;
    allc[10] = .5621061301;
    allc[11] = .1712994697;
/*                                     2P */
    allz[36] = 5.868285913;
    allz[37] = 1.530329631;
    allz[38] = .5475665231;
    allz[39] = .2288932733;
    allz[40] = .1046655969;
    allz[41] = .04948220127;

    allc[36] = .007924233646;
    allc[37] = .05144104825;
    allc[38] = .189840006;
    allc[39] = .4049863191;
    allc[40] = .4012362861;
    allc[41] = .1051855189;
/*                                      3S */
    allz[12] = 3.273031938;
    allz[13] = .9200611311;
    allz[14] = .3593349765;
    allz[15] = .08636686991;
    allz[16] = .04797373812;
    allz[17] = .02724741144;
    allc[12] = -.006775596947;
    allc[13] = -.05639325779;
    allc[14] = -.1587856086;
    allc[15] = .5534527651;
    allc[16] = .501535102;
    allc[17] = .07223633674;
/*                                     3P */
    allz[42] = 5.077973607;
    allz[43] = 1.34078694;
    allz[44] = .2248434849;
    allz[45] = .1131741848;
    allz[46] = .06076408893;
    allz[47] = .03315424265;
    allc[42] = -.00332992984;
    allc[43] = -.0141948834;
    allc[44] = .163939577;
    allc[45] = .4485358256;
    allc[46] = .390881305;
    allc[47] = .07411456232;
/*                                     4S */
    allz[18] = 1.365346;
    allz[19] = .4393213;
    allz[20] = .1877069;
    allz[21] = .0936027;
    allz[22] = .05052263;
    allz[23] = .02809354;
    allc[18] = .003775056;
    allc[19] = -.05585965;
    allc[20] = -.3192946;
    allc[21] = -.0276478;
    allc[22] = .9049199;
    allc[23] = .3406258;
/*                                   4P */
    allc[48] = -.007052075;
    allc[49] = -.05259505;
    allc[50] = -.0377345;
    allc[51] = .3874773;
    allc[52] = .5791672;
    allc[53] = .1221817;
    allz[48] = 1.365346;
    allz[49] = .4393213;
    allz[50] = .1877069;
    allz[51] = .0936027;
    allz[52] = .05052263;
    allz[53] = .02809354;
/*                                     5S */
    allz[24] = .7701420258;
    allz[25] = .2756268915;
    allz[26] = .130184748;
    allz[27] = .0695344194;
    allz[28] = .04002545502;
    allz[29] = .02348388309;
    allc[24] = .01267447151;
    allc[25] = .003266734789;
    allc[26] = -.4307553999;
    allc[27] = -.3231998963;
    allc[28] = 1.104322879;
    allc[29] = .4368498703;
/*                                      5P */
    allz[54] = .7701420258;
    allz[55] = .2756268915;
    allz[56] = .130184748;
    allz[57] = .0695344194;
    allz[58] = .04002545502;
    allz[59] = .02348388309;
    allc[54] = -.001105673292;
    allc[55] = -.06243132446;
    allc[56] = -.1628476766;
    allc[57] = .3210328714;
    allc[58] = .6964579592;
    allc[59] = .1493146125;
    for (i = 1; i <= 10; ++i) {
	if (natype_1.mtype[i - 1] == 0) {
	    goto L30;
	}
	ni = natype_1.mtype[i - 1];
	xi = expont_1.zs[ni - 1];
	ia = (i << 2) - 3;
	ib = ia + 3;
	if (ni < 2) {
	    nqn = 1;
	} else if (ni < 10) {
	    nqn = 2;
	} else if (ni < 18) {
	    nqn = 3;
	} else if (ni < 36) {
	    nqn = 4;
	} else if (ni < 54) {
	    nqn = 5;
	} else {
	    s_wsle(&io___9);
	    do_lio(&c__9, &c__1, " NO GAUSSIANS AVAILABLE", 23L);
	    e_wsle();
	    s_stop("", 0L);
	}
	i__1 = ib;
	for (k = ia; k <= i__1; ++k) {
	    l = 1;
	    if (k > ia) {
		l = 2;
	    }
	    if (k > ia) {
		xi = expont_1.zp[ni - 1];
	    }
	    for (j = 1; j <= 6; ++j) {
		temp_1.cc[k + j * 60 - 61] = allc[j + (nqn + l * 5) * 6 - 37];
/* L10: */
/* Computing 2nd power */
		d__1 = xi;
		temp_1.zz[k + j * 60 - 61] = allz[j + (nqn + l * 5) * 6 - 37] 
			* (d__1 * d__1);
	    }
/* L20: */
	}
L30:
	;
    }
    return 0;
} /* setupg_ */

