示例#1
0
int main(void){
	linear();
	newton2();
	newton3();
	lagrange();
	return 0;
}
示例#2
0
static Double newton(Double *v1,const Double *v2,const Data data,const Index i1,const Index i2){
  Double fS=0;
  Double fscore=0;
  int tdata,t1,t2,t3;
  int vcount=0;

  for(t1=0;t1<i1.n;t1++){
    if(t1%10000==0){
      //printf("partial progress: %d %d\n",t1,vcount);
    }
    //get ddv,dv
    vcount+=newton2(&fS,v1+t1*data.ndim,v2,data,i1.i+i1.p[t1],i1.i+i1.p[t1+1]);
  }
  printf("S: %f\n",fS);
  printf("vcount: %d\n",vcount);
  return fS;
}
示例#3
0
文件: zad26.c 项目: twixen/SP
int main(void) {
    printf("%d\n", newton1(33,16)); 
    printf("%d\n", newton2(12,6)); 
    return EXIT_SUCCESS;
}
示例#4
0
void disco_chisq(int *freqs,int *n_genes,int *labels,int *n_labels,double *res) {

	int g = 0,i = 0, j = 0;

	int freq_length = 2 * *n_labels;

	double beta1[BETA1_SIZE] = {0,0,0,0};
	double beta2[BETA2_SIZE] = {0,0,0};
	double f1[] = {0,0,0,0};
	double f2[] = {0,0,0};
	double d1[] = {
		0,0,0,0,
		0,0,0,0,
		0,0,0,0,
		0,0,0,0
	};
	double d2[] = {
		0,0,0,
		0,0,0,
		0,0,0
	};


	for(g=0;g<*n_genes;g++) {

		int gene_offset = g * freq_length;
		int res_offset = 9 * g;
		
		int colsums_freqs[2] = {0,0};
		int colsums_freqs_x_labels[2] = {0,0};
		int colsums_freqs_x_labels_x_labels[2] = {0,0};
		
		for(i=0;i<*n_labels;i++) {

			colsums_freqs[0] += *(freqs+i+gene_offset);
			colsums_freqs[1] += *(freqs+i+*n_labels+gene_offset);
			
			colsums_freqs_x_labels[0] += *(freqs+i+gene_offset) * *(labels+i);
			colsums_freqs_x_labels[1] += *(freqs+i+*n_labels+gene_offset) * *(labels+i);
			
			colsums_freqs_x_labels_x_labels[0] += *(freqs+i+gene_offset) * *(labels+i) * *(labels+i);
			colsums_freqs_x_labels_x_labels[1] += *(freqs+i+*n_labels+gene_offset) * *(labels+i) * *(labels+i);
		}
		
		for(i=0;i<BETA1_SIZE;i++) {

			beta1[i] = 0;
			*(f1+i) = 0;
	
			for(j=0;j<BETA1_SIZE;j++) {
				*(d1 + BETA1_SIZE*i + j) = 0;
			}
		}

		for(i=0;i<BETA2_SIZE;i++) {

			beta2[i] = 0;
			*(f2+i) = 0;
			
			for(j=0;j<BETA2_SIZE;j++) {
				*(d2 + BETA2_SIZE*i + j) = 0;
			}		
		}



		derivatives1(f1,d1,labels,n_labels,beta1,colsums_freqs,colsums_freqs_x_labels,colsums_freqs_x_labels_x_labels);

		double f1b[] = {f1[0],f1[1],f1[2]};
		
		newton1(f1,d1,labels,n_labels,beta1,colsums_freqs,colsums_freqs_x_labels,colsums_freqs_x_labels_x_labels);
		
		f2[0] = f1b[0];
		
		newton2(f1b,f2,d2,labels,n_labels,beta2,colsums_freqs,colsums_freqs_x_labels,colsums_freqs_x_labels_x_labels);
		
		double log1[2] = {0,0};
		double larp1[2] = {0,0};	
		
		for(i=0;i<2;i++) {
			
			double alpha[2];
			double bes[2];
			
			if (i==0) {
				alpha[0] = beta1[0];
				alpha[1] = beta1[1];
				
				bes[0] = beta1[2];
				bes[1] = beta1[3];
			}
			else if (i==1) {
				alpha[0] = beta2[0];
				alpha[1] = beta2[0];
				
				bes[0] = beta2[1];
				bes[1] = beta2[2];
			}
			
			double br[2] = {0,0};
			
			for(j=0;j<*n_labels;j++) {
				
				br[0] += exp( (labels[j] * alpha[0]) + (pow(labels[j],2) * bes[0] ) );
				br[1] += exp( (labels[j] * alpha[1]) + (pow(labels[j],2) * bes[1] ) );
			}
			
			larp1[i] = ((double)colsums_freqs[0] * log(br[0])) + ((double)colsums_freqs[1] * log(br[1]));
			
			log1[i] = ( (colsums_freqs_x_labels[0] * alpha[0]) + (colsums_freqs_x_labels[1] * alpha[1]) ) 
				+ ( (colsums_freqs_x_labels_x_labels[0] * bes[0]) + (colsums_freqs_x_labels_x_labels[1] * bes[1]) )
				- larp1[i];
		}
		
		double chisq = -2 * (log1[1] - log1[0]);
		
		double pvalue = 1 - pchisq(chisq,1,1,0);
		
		
		//return beta1,beta2,chisq,pvalue
		*(res + res_offset) = pvalue;
		*(res + 1 + res_offset) = chisq;
		*(res + 2 + res_offset) = beta1[0];
		*(res + 3 + res_offset) = beta1[1];
		*(res + 4 + res_offset) = beta1[2];
		*(res + 5 + res_offset) = beta1[3];
		*(res + 6 + res_offset) = beta2[0];
		*(res + 7 + res_offset) = beta2[1];
		*(res + 8 + res_offset) = beta2[2];
	}
}