void vdp_mk_log_lambda(double *Mu_mu, double *S2_mu, double *Mu_bar, double *Mu_tilde, double *Alpha_ksi, double *Beta_ksi, double *Ksi_alpha, double *Ksi_beta, double *post_gamma, double *log_lambda, double *prior_alpha, double *U_p, SEXP *U_hat, long datalen, int dim1, int dim2, double *data1, double *data2, double *Ns, int ncentroids, double implicit_noisevar) { register long i, j, t; register int k; double *U_hat_j; SEXP U_hat_j_SEXP; double **W, **Temp, **S2_x,**Ksi_log,***U_hat_table; int **data2_int; allocate_memoryB(datalen, ncentroids, dim1,dim2, &S2_x, &Ksi_log, &Temp, &U_hat_table,&data2_int,Ns ); for (j=0;j<dim2;j++){ for(t=0;t<datalen;t++) data2_int[j][t]=((int)(data2[j*datalen+t]))-1; U_hat_j_SEXP = VECTOR_ELT(*U_hat, (int)j); U_hat_j=NUMERIC_POINTER(U_hat_j_SEXP); for(i=0;i<ncentroids;i++) for(k=0;k<Ns[j];k++) U_hat_table[j][i][k]=U_hat_j[k*ncentroids+i]; } if (dim1) compute_variance(ncentroids, dim1, Ksi_alpha, Ksi_beta, S2_x, Ksi_log); log_p_of_z_given_other_z_c(datalen, ncentroids, post_gamma, log_lambda); compute_tempmat(datalen,dim1,dim2,ncentroids,Temp,data1,data2_int, Mu_bar,Mu_tilde,S2_x,Ksi_log,U_hat_table,Ns, implicit_noisevar, log_lambda); fix_lambda(ncentroids, datalen, prior_alpha, log_lambda); free_memoryB(ncentroids, dim1,dim2, &Temp, &W, &S2_x, &Ksi_log, &U_hat_table, &data2_int); return; }
T compute_std_dev() const { return sqrt(compute_variance()); }
double compute_ecart_type (double moyenne, double sq_sum, int n) { double variance = compute_variance (sq_sum, moyenne, n); return lookup_table_get_safe (sqrt_table, variance); }
int update_operations_summary (mmdat_t *plong_hist, opsum_t *summary) { //printf ("------------Update summary\n"); int rc = -1; int count = 0; int i, j; double temp_sum = 0, humd_sum = 0, pres_sum = 0, rho_sum = 0; double temp_avg = 0, humd_avg = 0, pres_avg = 0, rho_avg = 0; double cur_sum = 0, ratio_sum; double **ratios = (double **)malloc (sizeof(double*) * CMP_END); for (i = 0; i < CMP_END; i++) { ratios[i] = (double *)malloc (sizeof(double) * plong_hist->size); } double **currents = (double **)malloc (sizeof(double*) * CMP_END); for (i = 0; i < CMP_END; i++) { currents[i] = (double *)malloc (sizeof(double) * plong_hist->size); } double *rho_collect = (double *) malloc (sizeof (double) * plong_hist->size); llist_t *head = plong_hist->head; while (head) { for (i = 0; i < CMP_END; i++) { ratios[i][count] = head->data->rho_cur_ratio[i]; currents[i][count] = head->data->avg_current[i]; } temp_sum += head->data->avg_temperature; humd_sum += head->data->avg_humidity; pres_sum += head->data->avg_pressure; rho_sum += head->data->rho; rho_collect[count] = head->data->rho; count++; head = head->next; } summary->avg_temp = temp_sum / plong_hist->size; summary->avg_humd = humd_sum / plong_hist->size; summary->avg_pres = pres_sum / plong_hist->size; summary->avg_rho = rho_sum / plong_hist->size; for (i = 0; i < CMP_END; i++) { compute_variance (ratios[i], plong_hist->size, &summary->variance[i]); cur_sum = 0; for (j = 0; j < plong_hist->size; j++) { cur_sum += currents[i][j]; } summary->avg_current[i] = cur_sum / plong_hist->size; ratio_sum = 0; for (j = 0; j < plong_hist->size; j++) { ratio_sum += ratios[i][j]; } summary->avg_ratio[i] = ratio_sum / plong_hist->size; } compute_variance (rho_collect, count, &summary->rho_variance); for (i = 0; i < CMP_END; i++) { free (ratios[i]); free (currents[i]); } free (ratios); free (currents); free (rho_collect); rc = 0; return rc; }