double *SampleGauss(gauss_t *mp) { int i,j; double *v,*aux; nonull(v=malloc(mp->dim*sizeof(double))); nonull(aux=malloc(mp->dim*sizeof(double))); for (i=0; i<mp->dim; i++) aux[i]=BoxMuller(); for (i=0; i<mp->dim; i++) v[i]=mp->mean[i]; if (mp->type==DIAG) for (i=0; i<mp->dim; i++) v[i]+=mp->dCholesky[i]*aux[i]; else { for (i=0; i<mp->dim; i++) for (j=0; j<=i; j++) v[i]+=mp->Cholesky[i][j]*aux[j]; } free(aux); return v; }
/* Pack the information from any client method into a generic xmlrpc struct to send to the server */ xmlrpc_value * callinfo_pack(xmlrpc_env *envP, struct call_info *cip) { xmlrpc_value *s = xmlrpc_struct_new(envP); xmlrpc_value *methargs = xmlrpc_array_new(envP); xmlrpc_value *files = xmlrpc_array_new(envP); int i; xmlrpc_struct_set_value(envP, s, "clientIP", xmlrpc_string_new(envP, nonull(cip->clientIP))); xmlrpc_struct_set_value(envP, s, "serverURL", xmlrpc_string_new(envP, nonull(cip->serverURL))); xmlrpc_struct_set_value(envP, s, "session", xmlrpc_string_new(envP, nonull(cip->session))); xmlrpc_struct_set_value(envP, s, "method", xmlrpc_string_new(envP, nonull(cip->method))); xmlrpc_struct_set_value(envP, s, "user", xmlrpc_string_new(envP, nonull(cip->user))); xmlrpc_struct_set_value(envP, s, "password", xmlrpc_string_new(envP, nonull(cip->password))); xmlrpc_struct_set_value(envP, s, "project", xmlrpc_string_new(envP, nonull(cip->project))); xmlrpc_struct_set_value(envP, s, "version", xmlrpc_string_new(envP, nonull(cip->version))); if (cip->methodargs) { for (i = 0; cip->methodargs[i]; ++i) { if (!strncmp(cip->methodargs[i], "file:", 5)) { char *file_what, *file_name; file_what = strdup(&cip->methodargs[i][5]); file_name = strchr(file_what, '='); if (file_name) { xmlrpc_value * fstruct; *file_name++ = '\0'; fstruct = file_pack(envP, file_what, file_name); xmlrpc_array_append_item(envP, files, fstruct); } else { fprintf(stderr, "oracc-client: bad -Mfile arg, expected -Mfile:WHAT=NAME\n"); exit(1); } } else xmlrpc_array_append_item(envP, methargs, xmlrpc_string_new(envP, cip->methodargs[i])); } } xmlrpc_struct_set_value(envP, s, "method-args", methargs); xmlrpc_struct_set_value(envP, s, "method-data", files); return s; }
static void dns_event_failure(struct resolve *rp, int type) { if (!rp) return; if (type == T_PTR) { static char s[UHOSTLEN]; debug1("DNS resolve failed for %s", iptostr(rp->ip)); strcpy(s, iptostr(rp->ip)); call_hostbyip(ntohl(rp->ip), s, 0); } else if (type == T_A) { debug1("DNS resolve failed for %s", rp->hostn); call_ipbyhost(rp->hostn, 0, 0); } else debug2("DNS resolve failed for unknown %s / %s", iptostr(rp->ip), nonull(rp->hostn)); return; }
gauss_t *GetGauss(FILE *fp) { char line[MLL],*cp; int i,j; gauss_t *mp; if (verbose) fprintf(stderr,"Reading Gaussian...\n"); nonull(mp=malloc(sizeof(gauss_t))); mp->dim=1; mp->type=FULL; mp->prior_prob=0.0; while (1) { if (fgets(line,MLL,fp)==NULL) { mp->type=UNKNOWN; break; } if ((cp=strtok(line,IFS))==NULL) continue; if (strcmp(cp,"GAUSS")!=0) continue; if ((cp=strtok(NULL,IFS))==NULL) continue; nonull(mp->label=malloc((strlen(cp)+1)*sizeof(char))); strcpy(mp->label,cp); if ((cp=strtok(NULL,IFS))==NULL) break; if ((mp->dim=atoi(cp))<1) { free(mp->label); continue; } if ((cp=strtok(NULL,IFS))==NULL) break; if (strncmp(cp,"Diagonal",1)==0) mp->type=DIAG; if ((cp=strtok(NULL,IFS))!=NULL) mp->prior_prob=atof(cp); if (verbose) { fprintf(stderr,"label=%s dim=%d ",mp->label,mp->dim); if (mp->type==DIAG) fprintf(stderr,"type=Diag\n"); else fprintf(stderr,"type=Full\n"); } break; } if (mp->type==UNKNOWN) { if (verbose) fprintf(stderr,"no more gaussians.\n"); return NULL; } if (verbose) fprintf(stderr,"mean...\n"); nonull(mp->mean=malloc(mp->dim*sizeof(double))); nonull(GetVector(fp,mp->dim,mp->mean)); if (verbose) fprintf(stderr,"covariance matrix...\n"); if (mp->type==DIAG) { mp->covar=mp->Cholesky=NULL; nonull(mp->dcovar=malloc(mp->dim*sizeof(double))); nonull(GetVector(fp,mp->dim,mp->dcovar)); nonull(mp->dCholesky=malloc(mp->dim*sizeof(double))); for (i=0; i<mp->dim; i++) mp->dCholesky[i]=sqrt(mp->dcovar[i]); } else { mp->dcovar=mp->dCholesky=NULL; nonull(mp->covar=malloc(mp->dim*sizeof(double *))); nonull(mp->Cholesky=malloc(mp->dim*sizeof(double *))); for (i=0; i<mp->dim; i++) { nonull(mp->covar[i]=malloc((i+1)*sizeof(double))); nonull(GetVector(fp,i+1,mp->covar[i])); nonull(mp->Cholesky[i]=malloc((i+1)*sizeof(double))); for (j=0; j<=i; j++) mp->Cholesky[i][j]=mp->covar[i][j]; } Cholesky(mp->dim,mp->Cholesky); } if (verbose) fprintf(stderr,"end GAUSS.\n"); return mp; }