extern int csolvpoly(int cynpoly,unsigned int * * *cyapoly,unsigned int *cy); //error extern int cyfindmax(); extern int cdivideoutroot(); extern int cymeshpatch(); extern int cyrealroot(); extern int cysaveistep(); extern int cyrecoveristep(); extern int cytestroot(); extern int cywhateverf(); extern int cyiterate(); extern int cyfunc(); extern int cyro(); extern int cyiterq(); extern int cyoriglq(); extern int cpolydeclarations(); extern int cyspecialcases(); extern int cmultiplyout(); extern int cmultpolys(int cyn1in,unsigned int * * *cypoly1in,unsigned int cyn2in,unsigned int * * *cypoly2in); //error extern int crotatepoly(int cynpoly,unsigned int * * *cyapoly,unsigned int *cy); //cy=angle extern int crotateroots(int cynpoly, unsigned int * * *croot,unsigned int *cy); int cyfindflag; int cykk; int cyj9,cynnn; int cypp,cyk8; int cyi7,cyj7,cyk7,cym7; int cyisavezit; int cyj2,cyn1in,cyn2in; int cyniter; int cynten1=100; int cynitermax; int cyn2,cyi,cyj,cyk,cynpasses,cynpolymax; int cynisnow,cynpassq,cymessage2,cymessage; int cyimax,cynpassq2,cymessagesave5; int cyerrorflag; int cyponk; int cynpoly; realscalar cyxoldmax_ram;unsigned int *cyxoldmax=cyxoldmax_ram.s; //ok realscalar realscalar cyxmax_ram;unsigned int *cyxmax=cyxmax_ram.s; realscalar cyxleft_ram;unsigned int *cyxleft=cyxleft_ram.s; realscalar cyfmax_ram;unsigned int *cyfmax=cyfmax_ram.s; //ok realscalar cyx_ram;unsigned int *cyx=cyx_ram.s; realscalar cyw_ram;unsigned int *cyw=cyw_ram.s; realscalar cy_ram;unsigned int *cy=cy_ram.s; realscalar cywlower_ram;unsigned int *cywlower=cywlower_ram.s; //ok realscalar cydel_ram;unsigned int *cydel=cydel_ram.s; realscalar cyf_ram;unsigned int *cyf=cyf_ram.s; //ok realscalar cyfprev_ram;unsigned int *cyfprev=cyfprev_ram.s; //ok realscalar cyfsave5_ram;unsigned int *cyfsave5=cyfsave5_ram.s; realscalar cyfprevsave5_ram;unsigned int *cyfprevsave5=cyfprevsave5_ram.s; //ok realscalar cyxprev_ram;unsigned int *cyxprev=cyxprev_ram.s; //ok realscalar cyx2save_ram;unsigned int *cyx2save=cyx2save_ram.s; //ok realscalar cy1D16_ram;unsigned int *cy1D16=cy1D16_ram.s; realscalar cy1Dm5_ram;unsigned int *cy1Dm5=cy1Dm5_ram.s; realscalar cytemp_ram;unsigned int *cytemp=cytemp_ram.s; realscalar cytemp1_ram;unsigned int *cytemp1=cytemp1_ram.s; realscalar cyxsave_ram;unsigned int *cyxsave=cyxsave_ram.s; realscalar cyfsave_ram;unsigned int *cyfsave=cyfsave_ram.s; //21 realscalar unsigned int * *cyq; //6 real vectors specially declared so as not unsigned int * *cyr; //to need zmaxsizepad in cpoly.h unsigned int * *cyqpr; unsigned int * *cyrpr; unsigned int * *cyxrot; unsigned int * *cyyrot; int cyispecialcases=cyspecialcases(); int cyspecialcases() {cyxrot = new unsigned int * [cmaxsizepad]; cyyrot = new unsigned int * [cmaxsizepad]; cyq = new unsigned int * [cmaxsizepad]; cyr = new unsigned int * [cmaxsizepad]; cyrpr = new unsigned int * [cmaxsizepad]; cyqpr = new unsigned int * [cmaxsizepad]; for (cyi=0;cyi0) {zrecall(cyxoldmax); zstore(cyxmax); goto cybhyu; } zrecall(cyxmax); zstore(cyxoldmax); cybhyu: if (cynpassq==0) {zrecall(cyxmax); zchs(z); zstore(cyxleft); cynpassq=1; } cymessage2=3; cyrealroot(); if (cymessage==1) {zrecall(cyxmax); zchs(z); zmult(z,cyxmax); zstore(cywlower); cymeshpatch(); cerr<<'\n'; if (cymessage==9) //at this point could take sqrt of poly. {cerr<<"cannot find all roots"<<'\n'; cerr<<"number found "<=10000) {cymessage=9;} return 0; } int cyfindmax() {zconinttomp(1); zdivint(z,10); zstore(cydel); cyfindflag=0; zconinttomp(2); zsqrt(z); zsqrt(z); zsqrt(z); zstore(cytemp1); cyback: if (cyfindflag==0) {zconinttomp(1); zstore(cyx); } if (cyfindflag==1) {zdiv(cyx,cytemp1); zstore(cyx); } if (cyfindflag==2) {zmult(cyx,cytemp1); zstore(cyx); } cabs(cya[cyn2]); zstore(cyf); for (cyi=cyn2-1;cyi>=0;cyi--) {zmult(cyf,cyx); zstore(cyf); cabs(cya[cyi]); zsub(cyf,z); zstore(cyf); } if (cyf[prec+1]==0) {if (cyfindflag==0) {cyfindflag=2; goto cyback; } if (cyfindflag==1) {zmultint(cyx,2); zstore(cyx); goto cyfinishit;} if (cyfindflag==2) {goto cyback;} } if (cyf[prec]==0) {goto cyfinishit;} if (cyf[prec+1]==2 && cyf[prec]>0) {if (cyfindflag==2) {goto cyfinishit;} if (cyfindflag==0) {cyfindflag=1; goto cyback; } if (cyfindflag==1) {goto cyback;} } cyfinishit: zrecall(cyx); zstore(cyxmax); return 0; } int cdivideoutroot() {for (cyj=0;cyj=0;cykk--) {cmult(crot,cyc[cykk+1]); cadd(cz,cya[cykk+1]); cstore(cyc[cykk]); } for (cykk=0;cykkcynitermax) {goto cyxit;} goto cyback1; } if (cyniter>cynitermax) {zrecall(cyxprev); zstore(cyx); goto cyxit; } zrecall(cyf); zstore(cyfprev); zrecall(cyx); zstore(cyxprev); zrecall(cyfsave); zstore(cyf); zrecall(cyxsave); zstore(cyx); goto cyback1; zmessage="error in yiterate"; zbreak(); cyxit: return 0; } int cytestroot() {if (cymessage2==3) { if (cyq[1][prec]!=0) {zdiv(cyq[0],cyq[1]); zchs(z); zstore(cyw); cymessage=5; goto cyahead21;} } cymessage=6; cyahead21: return 0; } int cyrecoveristep() {zrecall(cyfsave5); zstore(cyf); zrecall(cyfprevsave5); zstore(cyfprev); cymessage=cymessagesave5; return 0; } int cyfunc() {crecall(cya[cyn2]); cstore(cyuf); for (cyj2=cyn2-1;cyj2>=0;cyj2--) {cmultcbyr(cyuf,cyx); cadd(cz,cya[cyj2]); cstore(cyuf); } return 0; } int cyro() {cyisavezit=cyi; cyoriglq(); cyiterq(); zrecall(cyr[0]); zstore(cyf); cyi=cyisavezit; return 0; } int cyoriglq() {cyfunc(); crecall(cyuf); cstore(cyuq[cyn2]); zrecall(cyuq[cyn2][0]); zstore(cyq[cyn2]); zrecall(cyuq[cyn2][1]); zstore(cyr[cyn2]); for (cyi7=0;cyi7=2;cypp--) {for (cyk8=0;cyk8cyn2in) goto cybkyl; if (yj8-yj9<0) goto cybkyl; cmult(cypoly1in[yj9],cypoly2in[yj8-yj9]); cadd(cz,cyb[yj8]); cstore(cyb[yj8]); cybkyl: continue; //output is cyb } } return 0; } int cmultiplyout() {for (cyj9=0;cyj9=1;cyj--) {cmult(croot[cyi],cyb[cyj]); cchs(cz); cadd(cz,cyb[cyj-1]); cstore(cyb[cyj]); } cmult(croot[cyi],cyb[0]); cchs(cz); cstore(cyb[0]); } } cyfred: zchs(z); return 0; } //why not unsigned int int crotatepoly(int cynpoly,unsigned int * * *cyapoly,unsigned int *cy) //cy=angle {cexpitheta(cy); cstore(cyr); cconinttomp(1,0); cstore(cyrpr); for (cykk=0;cykk