int LDL2::Solve(complex_t *x) const { int ret; ret = SolveL(x); if(0 != ret){ return ret; } ret = SolveD(x); if(0 != ret){ return ret; } ret = SolveLt(x); if(0 != ret){ return ret; } return 0; }
bool FindExtremPoints(double * data_dir,double* data_sup,double* data_res,int n) { //double *data_X=new double[n+n]; //int *data_I= new int[n]; double * data_X=(double *)mxCalloc(n+n,sizeof(double)); int *data_I=(int *)mxCalloc(n,sizeof(int)); int ipp(0),ip(1),ipn,ippn,tmp,tmp1,tmp2,tmp0; double cur_nscal(1); data_I[0]=0;data_I[1]=1; int d(4),s(2),rs,rd,k; SolveL(data_X,data_dir,data_dir+2,data_sup,data_sup+1); for (;s<n;s++,d+=2) { rs=ip-1; rd=rs+rs; while (SProduct(data_X+rd,data_dir+d)>data_sup[s]) { rd-=2;rs--; if (rs<ipp) { break; } } ipn=rs+1; if (cur_nscal<0) { tmp=ip+ip; if (SProduct(data_X+tmp,data_dir+d)>data_sup[s]) { rs=ipp; rd=rs+rs; tmp=ip-1; while (SProduct(data_X+rd,data_dir+d)>data_sup[s]) { rd+=2;rs++; if (rs>=tmp) { break; } } ippn=rs; } else { ippn=ip; } } else { ippn=ipp; } if ((ipn<ip)||(ippn<ip)||(cur_nscal>=0)) { ip=ipn+1; ipp=ippn; if (ipp>=ip) { ///////////////// // res=nan;ћножество ¤вл¤етс¤ пустым //необходимо посмотреть, как реализуетс¤ // присвоение свойсво Ёнеопределено инициалзированной переменной // пэтому мы должны находитс¤ в том само метсе в котром рождаютс¤ // мечты и мы должны действовать достаточно быстро. //delete [] data_X; mxFree(data_X); mxFree(data_I); return true; } data_I[ip]=s; tmp=ipn+ipn; tmp1=data_I[ipn]+data_I[ipn]; SolveL(data_X+tmp,data_dir+tmp1,data_dir+d,data_sup+data_I[ipn],data_sup+s); tmp1=data_I[ipp]+data_I[ipp]; cur_nscal=data_dir[d+1]*data_dir[tmp1]-data_dir[d]*data_dir[tmp1+1]; if (cur_nscal<0) { tmp=ip+ip; SolveL(data_X+tmp,data_dir+tmp1,data_dir+d,data_sup+data_I[ipp],data_sup+s); } } } for (k=ipp;k<=ip;k++) { tmp=k+k; tmp1=data_I[k]+data_I[k]; memcpy(data_res+tmp1,data_X+tmp,2*sizeof(double)); } tmp=ip-1; for (k=0;k<=tmp;k++) { tmp0=data_I[k]+1; tmp1=data_I[k+1]-1; tmp2=data_I[k]+data_I[k]; for (s=tmp0;s<=tmp1;s++) { memcpy(data_res+s+s,data_res+tmp2,2*sizeof(double)); } } tmp0=data_I[ipp]-1; tmp1=data_I[ip]+data_I[ip]; for (s=0;s<=tmp0;s++) { memcpy(data_res+s+s,data_res+tmp1,2*sizeof(double)); } tmp0=data_I[ip]+1; for (s=tmp0;s<n;s++) { memcpy(data_res+s+s,data_res+tmp1,2*sizeof(double)); } mxFree(data_X); mxFree(data_I); return false; }