/* matptr.f -- translated by f2c (version of 3 February 1990  3:36:42).
   You must link the resulting object file with the libraries:
	-lF77 -lI77 -lm -lc   (in that order)
*/

#include "f2c.h"

/* Common Block Declarations */

struct {
    integer ielmnt, isbckt, nsbckt, iunsat, nunsat, itemps, numtem, isens, 
	    nsens, ifour, nfour, ifield, icode, idelim, icolum, insize, 
	    junode, lsbkpt, numbkp, iorder, jmnode, iur, iuc, ilc, ilr, 
	    numoff, isr, nmoffc, iseq, iseq1, neqn, nodevs, ndiag, iswap, 
	    iequa, macins, lvnim1, lx0, lvn, lynl, lyu, lyl, lx1, lx2, lx3, 
	    lx4, lx5, lx6, lx7, ld0, ld1, ltd, imynl, imvn, lcvn, nsnod, 
	    nsmat, nsval, icnod, icmat, icval, loutpt, lpol, lzer, irswpf, 
	    irswpr, icswpf, icswpr, irpt, jcpt, irowno, jcolno, nttbr, nttar, 
	    lvntmp;
} tabinf_;

#define tabinf_1 tabinf_

struct {
    integer locate[50], jelcnt[50], nunods, ncnods, numnod, nstop, nut, nlt, 
	    nxtrm, ndist, ntlin, ibr, numvs, numalt, numcyc;
} cirdat_;

#define cirdat_1 cirdat_

struct {
    doublereal value[200000];
} blank_;

#define blank_1 blank_

/*<       subroutine matptr >*/
/* Subroutine */ int matptr_()
{
    /* System generated locals */
    integer i_1;

    /* Local variables */
    static doublereal cdis;
    static integer node, ndim, locm, locn, node1, node2, node3, ndim2, node4, 
	    node5, node6, node7;
    extern /* Subroutine */ int getm4_(), zero4_();
    static integer i, ntemp, locvs;
#define nodplc ((integer *)&blank_1)
#define cvalue ((complex *)&blank_1)
    extern /* Subroutine */ int crunch_(), slpmem_(), reserv_();
    static integer nl1, nl2, locvst, ni1, ni2, loc, kbr, ibr1, ibr2;

/*<       implicit double precision (a-h,o-z) >*/

/*     this routine (by calls to the routine reserve) establishes the */
/* nonzero-element structure of the circuit equation coefficient matrix. 
*/

/* spice version 2g.6  sccsid=tabinf 3/15/83 */
/*<       common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem, >*/
/*<      1   isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize, >*/
/*<      2   junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr, >*/
/*<      3   nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1, >*/
/*<      4   lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd, >*/
/*<      5   imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval, >*/
/*<      6   loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt, >*/
/*<      7   irowno,jcolno,nttbr,nttar,lvntmp >*/
/* spice version 2g.6  sccsid=cirdat 3/15/83 */
/*<       common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop, >*/
/*<      1   nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc >*/
/* spice version 2g.6  sccsid=blank 3/15/83 */
/*<       common /blank/ value(200000) >*/
/*<       integer nodplc(64) >*/
/*<       complex cvalue(32) >*/
/*<       equivalence (value(1),nodplc(1),cvalue(1)) >*/

/*  allocate and initialize storage */

/*<       call getm4(isr,nstop+1) >*/
    i_1 = cirdat_1.nstop + 1;
    getm4_(&tabinf_1.isr, &i_1);
/*<       numvs=jelcnt(3)+jelcnt(6)+jelcnt(8)+jelcnt(9)+2*jelcnt(17) >*/
    cirdat_1.numvs = cirdat_1.jelcnt[2] + cirdat_1.jelcnt[5] + 
	    cirdat_1.jelcnt[7] + cirdat_1.jelcnt[8] + (cirdat_1.jelcnt[16] << 
	    1);
/*<       call getm4(iseq,numvs) >*/
    getm4_(&tabinf_1.iseq, &cirdat_1.numvs);
/*<       call getm4(iseq1,numvs) >*/
    getm4_(&tabinf_1.iseq1, &cirdat_1.numvs);
/*<       call getm4(neqn,numvs) >*/
    getm4_(&tabinf_1.neqn, &cirdat_1.numvs);
/*<       call getm4(nodevs,numnod) >*/
    getm4_(&tabinf_1.nodevs, &cirdat_1.numnod);
/*<       call getm4(ndiag,nstop) >*/
    getm4_(&tabinf_1.ndiag, &cirdat_1.nstop);
/*<       call getm4(nmoffc,nstop) >*/
    getm4_(&tabinf_1.nmoffc, &cirdat_1.nstop);
/*<       call getm4(numoff,nstop) >*/
    getm4_(&tabinf_1.numoff, &cirdat_1.nstop);
/*<       call getm4(irpt,nstop) >*/
    getm4_(&tabinf_1.irpt, &cirdat_1.nstop);
/*<       call getm4(jcpt,nstop) >*/
    getm4_(&tabinf_1.jcpt, &cirdat_1.nstop);
/*<       call getm4(irowno,nstop) >*/
    getm4_(&tabinf_1.irowno, &cirdat_1.nstop);
/*<       call getm4(jcolno,nstop) >*/
    getm4_(&tabinf_1.jcolno, &cirdat_1.nstop);
/*<       call slpmem(irpt,nstop) >*/
    slpmem_(&tabinf_1.irpt, &cirdat_1.nstop);
/*<       call slpmem(jcpt,nstop) >*/
    slpmem_(&tabinf_1.jcpt, &cirdat_1.nstop);
/*<       call slpmem(irowno,nstop) >*/
    slpmem_(&tabinf_1.irowno, &cirdat_1.nstop);
/*<       call slpmem(jcolno,nstop) >*/
    slpmem_(&tabinf_1.jcolno, &cirdat_1.nstop);
/*<       call crunch >*/
    crunch_();

/*<       call zero4(nodplc(irpt+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.irpt], &cirdat_1.nstop);
/*<       call zero4(nodplc(jcpt+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.jcpt], &cirdat_1.nstop);
/*<       call zero4(nodplc(irowno+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.irowno], &cirdat_1.nstop);
/*<       call zero4(nodplc(jcolno+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.jcolno], &cirdat_1.nstop);
/*<       call zero4(nodplc(iseq1+1),numvs) >*/
    zero4_(&nodplc[tabinf_1.iseq1], &cirdat_1.numvs);
/*<       call zero4(nodplc(nodevs+1),numnod) >*/
    zero4_(&nodplc[tabinf_1.nodevs], &cirdat_1.numnod);
/*<       call zero4(nodplc(ndiag+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.ndiag], &cirdat_1.nstop);
/*<       call zero4(nodplc(nmoffc+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.nmoffc], &cirdat_1.nstop);
/*<       call zero4(nodplc(numoff+1),nstop) >*/
    zero4_(&nodplc[tabinf_1.numoff], &cirdat_1.nstop);

/*<       numvs=0 >*/
    cirdat_1.numvs = 0;
/*<       nxtrm=0 >*/
    cirdat_1.nxtrm = 0;
/*<       ndist=0 >*/
    cirdat_1.ndist = 0;
/*<       ntlin=1 >*/
    cirdat_1.ntlin = 1;
/*<       ibr=numnod >*/
    cirdat_1.ibr = cirdat_1.numnod;

/*  resistors */

/*<       loc=locate(1) >*/
    loc = cirdat_1.locate[0];
/*<   110 if ((loc.eq.0).or.(nodplc(loc+8).ne.0)) go to 120 >*/
L110:
    if (loc == 0 || nodplc[loc + 7] != 0) {
	goto L120;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       call reserv(node1,node2) >*/
    reserv_(&node1, &node2);
/*<       call reserv(node2,node1) >*/
    reserv_(&node2, &node1);
/*<       call reserv(node2,node2) >*/
    reserv_(&node2, &node2);
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 110 >*/
    goto L110;

/*  capacitors */

/*<   120 loc=locate(2) >*/
L120:
    loc = cirdat_1.locate[1];
/*<   130 if ((loc.eq.0).or.(nodplc(loc+12).ne.0)) go to 400 >*/
L130:
    if (loc == 0 || nodplc[loc + 11] != 0) {
	goto L400;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       call reserv(node1,node2) >*/
    reserv_(&node1, &node2);
/*<       call reserv(node2,node1) >*/
    reserv_(&node2, &node1);
/*<       ntemp=nodplc(ndiag+node1) >*/
    ntemp = nodplc[tabinf_1.ndiag + node1 - 1];
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       nodplc(ndiag+node1)=ntemp >*/
    nodplc[tabinf_1.ndiag + node1 - 1] = ntemp;
/*<       ntemp=nodplc(ndiag+node2) >*/
    ntemp = nodplc[tabinf_1.ndiag + node2 - 1];
/*<       call reserv(node2,node2) >*/
    reserv_(&node2, &node2);
/*<       nodplc(ndiag+node2)=ntemp >*/
    nodplc[tabinf_1.ndiag + node2 - 1] = ntemp;
/*<       nodplc(loc+8)=nxtrm+1 >*/
    nodplc[loc + 7] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+2 >*/
    cirdat_1.nxtrm += 2;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 130 >*/
    goto L130;

/*  inductors */

/*<   400 loc=locate(3) >*/
L400:
    loc = cirdat_1.locate[2];
/*<   430 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 440 >*/
L430:
    if (loc == 0 || nodplc[loc + 13] != 0) {
	goto L440;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       ibr=ibr+1 >*/
    ++cirdat_1.ibr;
/*<       nodplc(loc+5)=ibr >*/
    nodplc[loc + 4] = cirdat_1.ibr;
/*<       call reserv(node1,ibr) >*/
    reserv_(&node1, &cirdat_1.ibr);
/*<       call reserv(node2,ibr) >*/
    reserv_(&node2, &cirdat_1.ibr);
/*<       call reserv(ibr,node1) >*/
    reserv_(&cirdat_1.ibr, &node1);
/*<       call reserv(ibr,node2) >*/
    reserv_(&cirdat_1.ibr, &node2);
/*<       ntemp=nodplc(ndiag+ibr) >*/
    ntemp = nodplc[tabinf_1.ndiag + cirdat_1.ibr - 1];
/*<       call reserv(ibr,ibr) >*/
    reserv_(&cirdat_1.ibr, &cirdat_1.ibr);
/*<       nodplc(ndiag+ibr)=ntemp >*/
    nodplc[tabinf_1.ndiag + cirdat_1.ibr - 1] = ntemp;
/*<       numvs=numvs+1 >*/
    ++cirdat_1.numvs;
/*<       nodplc(iseq+numvs)=loc >*/
    nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
/*<       nodplc(neqn+numvs)=ibr >*/
    nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
/*<       nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
    ++nodplc[tabinf_1.nodevs + node1 - 1];
/*<       nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
    ++nodplc[tabinf_1.nodevs + node2 - 1];
/*<       nodplc(loc+11)=nxtrm+1 >*/
    nodplc[loc + 10] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+2 >*/
    cirdat_1.nxtrm += 2;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 430 >*/
    goto L430;

/*  mutual inductors */

/*<   440 loc=locate(4) >*/
L440:
    loc = cirdat_1.locate[3];
/*<   450 if ((loc.eq.0).or.(nodplc(loc+6).ne.0)) go to 460 >*/
L450:
    if (loc == 0 || nodplc[loc + 5] != 0) {
	goto L460;
    }
/*<       nl1=nodplc(loc+2) >*/
    nl1 = nodplc[loc + 1];
/*<       nl2=nodplc(loc+3) >*/
    nl2 = nodplc[loc + 2];
/*<       nl1=nodplc(nl1+5) >*/
    nl1 = nodplc[nl1 + 4];
/*<       nl2=nodplc(nl2+5) >*/
    nl2 = nodplc[nl2 + 4];
/*<       call reserv(nl1,nl2) >*/
    reserv_(&nl1, &nl2);
/*<       call reserv(nl2,nl1) >*/
    reserv_(&nl2, &nl1);
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 450 >*/
    goto L450;

/*  nonlinear voltage-controlled current sources */

/*<   460 loc=locate(5) >*/
L460:
    loc = cirdat_1.locate[4];
/*<   462 if ((loc.eq.0).or.(nodplc(loc+13).ne.0)) go to 464 >*/
L462:
    if (loc == 0 || nodplc[loc + 12] != 0) {
	goto L464;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       ndim=nodplc(loc+4) >*/
    ndim = nodplc[loc + 3];
/*<       ndim2=ndim+ndim >*/
    ndim2 = ndim + ndim;
/*<       locn=nodplc(loc+6) >*/
    locn = nodplc[loc + 5];
/*<       do 463 i=1,ndim2 >*/
    i_1 = ndim2;
    for (i = 1; i <= i_1; ++i) {
/*<       node=nodplc(locn+i) >*/
	node = nodplc[locn + i - 1];
/*<       call reserv(node1,node) >*/
	reserv_(&node1, &node);
/*<       call reserv(node2,node) >*/
	reserv_(&node2, &node);
/*<   463 continue >*/
/* L463: */
    }
/*<       nodplc(loc+12)=nxtrm+1 >*/
    nodplc[loc + 11] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+1+ndim2 >*/
    cirdat_1.nxtrm = cirdat_1.nxtrm + 1 + ndim2;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 462 >*/
    goto L462;

/*  nonlinear voltage controlled voltage sources */

/*<   464 loc=locate(6) >*/
L464:
    loc = cirdat_1.locate[5];
/*<   466 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 468 >*/
L466:
    if (loc == 0 || nodplc[loc + 13] != 0) {
	goto L468;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       ibr=ibr+1 >*/
    ++cirdat_1.ibr;
/*<       nodplc(loc+6)=ibr >*/
    nodplc[loc + 5] = cirdat_1.ibr;
/*<       call reserv(node1,ibr) >*/
    reserv_(&node1, &cirdat_1.ibr);
/*<       call reserv(node2,ibr) >*/
    reserv_(&node2, &cirdat_1.ibr);
/*<       call reserv(ibr,node1) >*/
    reserv_(&cirdat_1.ibr, &node1);
/*<       call reserv(ibr,node2) >*/
    reserv_(&cirdat_1.ibr, &node2);
/*<       numvs=numvs+1 >*/
    ++cirdat_1.numvs;
/*<       nodplc(iseq+numvs)=loc >*/
    nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
/*<       nodplc(neqn+numvs)=ibr >*/
    nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
/*<       nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
    ++nodplc[tabinf_1.nodevs + node1 - 1];
/*<       nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
    ++nodplc[tabinf_1.nodevs + node2 - 1];
/*<       ndim=nodplc(loc+4) >*/
    ndim = nodplc[loc + 3];
/*<       ndim2=ndim+ndim >*/
    ndim2 = ndim + ndim;
/*<       locn=nodplc(loc+7) >*/
    locn = nodplc[loc + 6];
/*<       do 467 i=1,ndim2 >*/
    i_1 = ndim2;
    for (i = 1; i <= i_1; ++i) {
/*<       node=nodplc(locn+i) >*/
	node = nodplc[locn + i - 1];
/*<       call reserv(ibr,node) >*/
	reserv_(&cirdat_1.ibr, &node);
/*<   467 continue >*/
/* L467: */
    }
/*<       nodplc(loc+13)=nxtrm+1 >*/
    nodplc[loc + 12] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+2+ndim2 >*/
    cirdat_1.nxtrm = cirdat_1.nxtrm + 2 + ndim2;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 466 >*/
    goto L466;

/*  voltage sources */

/*<   468 loc=locate(9) >*/
L468:
    loc = cirdat_1.locate[8];
/*<   470 if ((loc.eq.0).or.(nodplc(loc+11).ne.0)) go to 472 >*/
L470:
    if (loc == 0 || nodplc[loc + 10] != 0) {
	goto L472;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       ibr=ibr+1 >*/
    ++cirdat_1.ibr;
/*<       nodplc(loc+6)=ibr >*/
    nodplc[loc + 5] = cirdat_1.ibr;
/*<       call reserv(node1,ibr) >*/
    reserv_(&node1, &cirdat_1.ibr);
/*<       call reserv(node2,ibr) >*/
    reserv_(&node2, &cirdat_1.ibr);
/*<       call reserv(ibr,node1) >*/
    reserv_(&cirdat_1.ibr, &node1);
/*<       call reserv(ibr,node2) >*/
    reserv_(&cirdat_1.ibr, &node2);
/*<       numvs=numvs+1 >*/
    ++cirdat_1.numvs;
/*<       nodplc(iseq+numvs)=loc >*/
    nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
/*<       nodplc(neqn+numvs)=ibr >*/
    nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
/*<       nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
    ++nodplc[tabinf_1.nodevs + node1 - 1];
/*<       nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
    ++nodplc[tabinf_1.nodevs + node2 - 1];
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 470 >*/
    goto L470;

/*  nonlinear current controlled current sources */

/*<   472 loc=locate(7) >*/
L472:
    loc = cirdat_1.locate[6];
/*<   474 if ((loc.eq.0).or.(nodplc(loc+13).ne.0)) go to 476 >*/
L474:
    if (loc == 0 || nodplc[loc + 12] != 0) {
	goto L476;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       ndim=nodplc(loc+4) >*/
    ndim = nodplc[loc + 3];
/*<       locvs=nodplc(loc+6) >*/
    locvs = nodplc[loc + 5];
/*<       do 475 i=1,ndim >*/
    i_1 = ndim;
    for (i = 1; i <= i_1; ++i) {
/*<       locvst=nodplc(locvs+i) >*/
	locvst = nodplc[locvs + i - 1];
/*<       kbr=nodplc(locvst+6) >*/
	kbr = nodplc[locvst + 5];
/*<       call reserv(node1,kbr) >*/
	reserv_(&node1, &kbr);
/*<       call reserv(node2,kbr) >*/
	reserv_(&node2, &kbr);
/*<   475 continue >*/
/* L475: */
    }
/*<       nodplc(loc+12)=nxtrm+1 >*/
    nodplc[loc + 11] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+1+ndim+ndim >*/
    cirdat_1.nxtrm = cirdat_1.nxtrm + 1 + ndim + ndim;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 474 >*/
    goto L474;

/*  nonlinear current controlled voltage sources */

/*<   476 loc=locate(8) >*/
L476:
    loc = cirdat_1.locate[7];
/*<   478 if ((loc.eq.0).or.(nodplc(loc+14).ne.0)) go to 500 >*/
L478:
    if (loc == 0 || nodplc[loc + 13] != 0) {
	goto L500;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       ibr=ibr+1 >*/
    ++cirdat_1.ibr;
/*<       nodplc(loc+6)=ibr >*/
    nodplc[loc + 5] = cirdat_1.ibr;
/*<       call reserv(node1,ibr) >*/
    reserv_(&node1, &cirdat_1.ibr);
/*<       call reserv(node2,ibr) >*/
    reserv_(&node2, &cirdat_1.ibr);
/*<       call reserv(ibr,node1) >*/
    reserv_(&cirdat_1.ibr, &node1);
/*<       call reserv(ibr,node2) >*/
    reserv_(&cirdat_1.ibr, &node2);
/*<       numvs=numvs+1 >*/
    ++cirdat_1.numvs;
/*<       nodplc(iseq+numvs)=loc >*/
    nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
/*<       nodplc(neqn+numvs)=ibr >*/
    nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = cirdat_1.ibr;
/*<       nodplc(nodevs+node1)=nodplc(nodevs+node1)+1 >*/
    ++nodplc[tabinf_1.nodevs + node1 - 1];
/*<       nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
    ++nodplc[tabinf_1.nodevs + node2 - 1];
/*<       ndim=nodplc(loc+4) >*/
    ndim = nodplc[loc + 3];
/*<       locvs=nodplc(loc+7) >*/
    locvs = nodplc[loc + 6];
/*<       do 479 i=1,ndim >*/
    i_1 = ndim;
    for (i = 1; i <= i_1; ++i) {
/*<       locvst=nodplc(locvs+i) >*/
	locvst = nodplc[locvs + i - 1];
/*<       kbr=nodplc(locvst+6) >*/
	kbr = nodplc[locvst + 5];
/*<       call reserv(ibr,kbr) >*/
	reserv_(&cirdat_1.ibr, &kbr);
/*<   479 continue >*/
/* L479: */
    }
/*<       nodplc(loc+13)=nxtrm+1 >*/
    nodplc[loc + 12] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+2+ndim+ndim >*/
    cirdat_1.nxtrm = cirdat_1.nxtrm + 2 + ndim + ndim;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 478 >*/
    goto L478;

/*  diodes */

/*<   500 loc=locate(11) >*/
L500:
    loc = cirdat_1.locate[10];
/*<   510 if ((loc.eq.0).or.(nodplc(loc+16).ne.0)) go to 520 >*/
L510:
    if (loc == 0 || nodplc[loc + 15] != 0) {
	goto L520;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       node3=nodplc(loc+4) >*/
    node3 = nodplc[loc + 3];
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       call reserv(node2,node2) >*/
    reserv_(&node2, &node2);
/*<       call reserv(node3,node3) >*/
    reserv_(&node3, &node3);
/*<       call reserv(node1,node3) >*/
    reserv_(&node1, &node3);
/*<       call reserv(node2,node3) >*/
    reserv_(&node2, &node3);
/*<       call reserv(node3,node1) >*/
    reserv_(&node3, &node1);
/*<       call reserv(node3,node2) >*/
    reserv_(&node3, &node2);
/*<       nodplc(loc+11)=nxtrm+1 >*/
    nodplc[loc + 10] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+5 >*/
    cirdat_1.nxtrm += 5;
/*<       nodplc(loc+12)=ndist+1 >*/
    nodplc[loc + 11] = cirdat_1.ndist + 1;
/*<       ndist=ndist+7 >*/
    cirdat_1.ndist += 7;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 510 >*/
    goto L510;

/*  transistors */

/*<   520 loc=locate(12) >*/
L520:
    loc = cirdat_1.locate[11];
/*<   530 if ((loc.eq.0).or.(nodplc(loc+36).ne.0)) go to 540 >*/
L530:
    if (loc == 0 || nodplc[loc + 35] != 0) {
	goto L540;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       node3=nodplc(loc+4) >*/
    node3 = nodplc[loc + 3];
/*<       node4=nodplc(loc+5) >*/
    node4 = nodplc[loc + 4];
/*<       node5=nodplc(loc+6) >*/
    node5 = nodplc[loc + 5];
/*<       node6=nodplc(loc+7) >*/
    node6 = nodplc[loc + 6];
/*<       node7=nodplc(loc+30) >*/
    node7 = nodplc[loc + 29];
/*<       locm=nodplc(loc+8) >*/
    locm = nodplc[loc + 7];
/*<       locm=nodplc(locm+1) >*/
    locm = nodplc[locm];
/*<       cdis=value(locm+32) >*/
    cdis = blank_1.value[locm + 31];
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       call reserv(node2,node2) >*/
    reserv_(&node2, &node2);
/*<       call reserv(node3,node3) >*/
    reserv_(&node3, &node3);
/*<       call reserv(node4,node4) >*/
    reserv_(&node4, &node4);
/*<       call reserv(node5,node5) >*/
    reserv_(&node5, &node5);
/*<       call reserv(node6,node6) >*/
    reserv_(&node6, &node6);
/*<       call reserv(node1,node4) >*/
    reserv_(&node1, &node4);
/*<       call reserv(node2,node5) >*/
    reserv_(&node2, &node5);
/*<       call reserv(node3,node6) >*/
    reserv_(&node3, &node6);
/*<       call reserv(node4,node5) >*/
    reserv_(&node4, &node5);
/*<       call reserv(node4,node6) >*/
    reserv_(&node4, &node6);
/*<       call reserv(node5,node6) >*/
    reserv_(&node5, &node6);
/*<       call reserv(node4,node1) >*/
    reserv_(&node4, &node1);
/*<       call reserv(node5,node2) >*/
    reserv_(&node5, &node2);
/*<       call reserv(node6,node3) >*/
    reserv_(&node6, &node3);
/*<       call reserv(node5,node4) >*/
    reserv_(&node5, &node4);
/*<       call reserv(node6,node4) >*/
    reserv_(&node6, &node4);
/*<       call reserv(node6,node5) >*/
    reserv_(&node6, &node5);
/*<       call reserv(node7,node7) >*/
    reserv_(&node7, &node7);
/*<       call reserv(node4,node7) >*/
    reserv_(&node4, &node7);
/*<       call reserv(node7,node4) >*/
    reserv_(&node7, &node4);
/*<       if (cdis.lt.1.0d0) call reserv(node2,node4) >*/
    if (cdis < 1.) {
	reserv_(&node2, &node4);
    }
/*<       if (cdis.lt.1.0d0) call reserv(node4,node2) >*/
    if (cdis < 1.) {
	reserv_(&node4, &node2);
    }
/*<       nodplc(loc+22)=nxtrm+1 >*/
    nodplc[loc + 21] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+19 >*/
    cirdat_1.nxtrm += 19;
/*<       nodplc(loc+23)=ndist+1 >*/
    nodplc[loc + 22] = cirdat_1.ndist + 1;
/*<       ndist=ndist+21 >*/
    cirdat_1.ndist += 21;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 530 >*/
    goto L530;

/*  jfets */

/*<   540 loc=locate(13) >*/
L540:
    loc = cirdat_1.locate[12];
/*<   550 if ((loc.eq.0).or.(nodplc(loc+25).ne.0)) go to 560 >*/
L550:
    if (loc == 0 || nodplc[loc + 24] != 0) {
	goto L560;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       node3=nodplc(loc+4) >*/
    node3 = nodplc[loc + 3];
/*<       node4=nodplc(loc+5) >*/
    node4 = nodplc[loc + 4];
/*<       node5=nodplc(loc+6) >*/
    node5 = nodplc[loc + 5];
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       call reserv(node2,node2) >*/
    reserv_(&node2, &node2);
/*<       call reserv(node3,node3) >*/
    reserv_(&node3, &node3);
/*<       call reserv(node4,node4) >*/
    reserv_(&node4, &node4);
/*<       call reserv(node5,node5) >*/
    reserv_(&node5, &node5);
/*<       call reserv(node1,node4) >*/
    reserv_(&node1, &node4);
/*<       call reserv(node2,node4) >*/
    reserv_(&node2, &node4);
/*<       call reserv(node2,node5) >*/
    reserv_(&node2, &node5);
/*<       call reserv(node3,node5) >*/
    reserv_(&node3, &node5);
/*<       call reserv(node4,node5) >*/
    reserv_(&node4, &node5);
/*<       call reserv(node4,node1) >*/
    reserv_(&node4, &node1);
/*<       call reserv(node4,node2) >*/
    reserv_(&node4, &node2);
/*<       call reserv(node5,node2) >*/
    reserv_(&node5, &node2);
/*<       call reserv(node5,node3) >*/
    reserv_(&node5, &node3);
/*<       call reserv(node5,node4) >*/
    reserv_(&node5, &node4);
/*<       nodplc(loc+19)=nxtrm+1 >*/
    nodplc[loc + 18] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+13 >*/
    cirdat_1.nxtrm += 13;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 550 >*/
    goto L550;

/*  mosfets */

/*<   560 loc=locate(14) >*/
L560:
    loc = cirdat_1.locate[13];
/*<   570 if ((loc.eq.0).or.(nodplc(loc+33).ne.0)) go to 600 >*/
L570:
    if (loc == 0 || nodplc[loc + 32] != 0) {
	goto L600;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       node3=nodplc(loc+4) >*/
    node3 = nodplc[loc + 3];
/*<       node4=nodplc(loc+5) >*/
    node4 = nodplc[loc + 4];
/*<       node5=nodplc(loc+6) >*/
    node5 = nodplc[loc + 5];
/*<       node6=nodplc(loc+7) >*/
    node6 = nodplc[loc + 6];
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       call reserv(node2,node2) >*/
    reserv_(&node2, &node2);
/*<       call reserv(node3,node3) >*/
    reserv_(&node3, &node3);
/*<       call reserv(node4,node4) >*/
    reserv_(&node4, &node4);
/*<       call reserv(node5,node5) >*/
    reserv_(&node5, &node5);
/*<       call reserv(node6,node6) >*/
    reserv_(&node6, &node6);
/*<       call reserv(node1,node5) >*/
    reserv_(&node1, &node5);
/*<       call reserv(node2,node4) >*/
    reserv_(&node2, &node4);
/*<       call reserv(node2,node5) >*/
    reserv_(&node2, &node5);
/*<       call reserv(node2,node6) >*/
    reserv_(&node2, &node6);
/*<       call reserv(node3,node6) >*/
    reserv_(&node3, &node6);
/*<       call reserv(node4,node5) >*/
    reserv_(&node4, &node5);
/*<       call reserv(node4,node6) >*/
    reserv_(&node4, &node6);
/*<       call reserv(node5,node6) >*/
    reserv_(&node5, &node6);
/*<       call reserv(node5,node1) >*/
    reserv_(&node5, &node1);
/*<       call reserv(node4,node2) >*/
    reserv_(&node4, &node2);
/*<       call reserv(node5,node2) >*/
    reserv_(&node5, &node2);
/*<       call reserv(node6,node2) >*/
    reserv_(&node6, &node2);
/*<       call reserv(node6,node3) >*/
    reserv_(&node6, &node3);
/*<       call reserv(node5,node4) >*/
    reserv_(&node5, &node4);
/*<       call reserv(node6,node4) >*/
    reserv_(&node6, &node4);
/*<       call reserv(node6,node5) >*/
    reserv_(&node6, &node5);
/*<       nodplc(loc+26)=nxtrm+1 >*/
    nodplc[loc + 25] = cirdat_1.nxtrm + 1;
/*<       nxtrm=nxtrm+28 >*/
    cirdat_1.nxtrm += 28;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 570 >*/
    goto L570;

/*  transmission lines */

/*<   600 loc=locate(17) >*/
L600:
    loc = cirdat_1.locate[16];
/*<   610 if ((loc.eq.0).or.(nodplc(loc+33).ne.0)) go to 1000 >*/
L610:
    if (loc == 0 || nodplc[loc + 32] != 0) {
	goto L1000;
    }
/*<       node1=nodplc(loc+2) >*/
    node1 = nodplc[loc + 1];
/*<       node2=nodplc(loc+3) >*/
    node2 = nodplc[loc + 2];
/*<       node3=nodplc(loc+4) >*/
    node3 = nodplc[loc + 3];
/*<       node4=nodplc(loc+5) >*/
    node4 = nodplc[loc + 4];
/*<       ni1=nodplc(loc+6) >*/
    ni1 = nodplc[loc + 5];
/*<       ni2=nodplc(loc+7) >*/
    ni2 = nodplc[loc + 6];
/*<       ibr1=ibr+1 >*/
    ibr1 = cirdat_1.ibr + 1;
/*<       ibr2=ibr+2 >*/
    ibr2 = cirdat_1.ibr + 2;
/*<       ibr=ibr+2 >*/
    cirdat_1.ibr += 2;
/*<       nodplc(loc+8)=ibr1 >*/
    nodplc[loc + 7] = ibr1;
/*<       nodplc(loc+9)=ibr2 >*/
    nodplc[loc + 8] = ibr2;
/*<       call reserv(node1,node1) >*/
    reserv_(&node1, &node1);
/*<       call reserv(node1,ni1) >*/
    reserv_(&node1, &ni1);
/*<       call reserv(node2,ibr1) >*/
    reserv_(&node2, &ibr1);
/*<       call reserv(node3,node3) >*/
    reserv_(&node3, &node3);
/*<       call reserv(node4,ibr2) >*/
    reserv_(&node4, &ibr2);
/*<       call reserv(ni1,node1) >*/
    reserv_(&ni1, &node1);
/*<       call reserv(ni1,ni1) >*/
    reserv_(&ni1, &ni1);
/*<       call reserv(ni1,ibr1) >*/
    reserv_(&ni1, &ibr1);
/*<       call reserv(ni2,ni2) >*/
    reserv_(&ni2, &ni2);
/*<       call reserv(ni2,ibr2) >*/
    reserv_(&ni2, &ibr2);
/*<       call reserv(ibr1,node2) >*/
    reserv_(&ibr1, &node2);
/*<       call reserv(ibr1,node3) >*/
    reserv_(&ibr1, &node3);
/*<       call reserv(ibr1,node4) >*/
    reserv_(&ibr1, &node4);
/*<       call reserv(ibr1,ni1) >*/
    reserv_(&ibr1, &ni1);
/*<       call reserv(ibr1,ibr2) >*/
    reserv_(&ibr1, &ibr2);
/*<       call reserv(ibr2,node1) >*/
    reserv_(&ibr2, &node1);
/*<       call reserv(ibr2,node2) >*/
    reserv_(&ibr2, &node2);
/*<       call reserv(ibr2,node4) >*/
    reserv_(&ibr2, &node4);
/*<       call reserv(ibr2,ni2) >*/
    reserv_(&ibr2, &ni2);
/*<       call reserv(ibr2,ibr1) >*/
    reserv_(&ibr2, &ibr1);
/*<       call reserv(node3,ni2) >*/
    reserv_(&node3, &ni2);
/*<       call reserv(ni2,node3) >*/
    reserv_(&ni2, &node3);
/*<       numvs=numvs+1 >*/
    ++cirdat_1.numvs;
/*<       nodplc(iseq+numvs)=loc >*/
    nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
/*<       nodplc(iseq1+numvs)=1 >*/
    nodplc[tabinf_1.iseq1 + cirdat_1.numvs - 1] = 1;
/*<       nodplc(neqn+numvs)=ibr1 >*/
    nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = ibr1;
/*<       nodplc(nodevs+ni1)=nodplc(nodevs+ni1)+1 >*/
    ++nodplc[tabinf_1.nodevs + ni1 - 1];
/*<       nodplc(nodevs+node2)=nodplc(nodevs+node2)+1 >*/
    ++nodplc[tabinf_1.nodevs + node2 - 1];
/*<       numvs=numvs+1 >*/
    ++cirdat_1.numvs;
/*<       nodplc(iseq+numvs)=loc >*/
    nodplc[tabinf_1.iseq + cirdat_1.numvs - 1] = loc;
/*<       nodplc(iseq1+numvs)=2 >*/
    nodplc[tabinf_1.iseq1 + cirdat_1.numvs - 1] = 2;
/*<       nodplc(neqn+numvs)=ibr2 >*/
    nodplc[tabinf_1.neqn + cirdat_1.numvs - 1] = ibr2;
/*<       nodplc(nodevs+ni2)=nodplc(nodevs+ni2)+1 >*/
    ++nodplc[tabinf_1.nodevs + ni2 - 1];
/*<       nodplc(nodevs+node4)=nodplc(nodevs+node4)+1 >*/
    ++nodplc[tabinf_1.nodevs + node4 - 1];
/*<       nodplc(loc+30)=ntlin+1 >*/
    nodplc[loc + 29] = cirdat_1.ntlin + 1;
/*<       ntlin=ntlin+2 >*/
    cirdat_1.ntlin += 2;
/*<       loc=nodplc(loc) >*/
    loc = nodplc[loc - 1];
/*<       go to 610 >*/
    goto L610;

/*  finished */

/*<  1000 return >*/
L1000:
    return 0;
/*<       end >*/
} /* matptr_ */

#undef cvalue
#undef nodplc


