void silent_fixpt(double *x,double eps,double err,double big,int maxit,int n, double *er,double *em,int *ierr) { int kmem,i,j; double *work,*eval,*b,*bp,*oldwork,*ework; double temp,old_x[MAXODE]; kmem=n*(2*n+5)+50; *ierr=0; if((work=(double *)malloc(sizeof(double)*kmem))==NULL) { err_msg("Insufficient core "); *ierr=1; return; } for(i=0;i<n;i++)old_x[i]=x[i]; oldwork=work+n*n; eval=oldwork+n*n; b=eval+2*n; bp=b+n; ework=bp+n; rooter(x,err,eps,big,work,ierr,maxit,n); if(*ierr!=0) { free(work); for(i=0;i<n;i++)x[i]=old_x[i]; return; } for(i=0;i<n*n;i++){ oldwork[i]=work[i]; } /* Transpose for Eigen */ for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { temp=work[i+j*n]; work[i+j*n]=work[i*n+j]; work[i*n+j]=temp; } } eigen(n,work,eval,ework,ierr); if(*ierr!=0) { free(work); return; } for(i=0;i<n;i++) { er[i]=eval[2*i]; em[i]=eval[2*i+1]; } } /* end silent fixed point */
bool testIndirectEval(JS::HandleObject scope, const char *code) { EXEC("hits = 0;"); { JSAutoCompartment ae(cx, scope); JSString *codestr = JS_NewStringCopyZ(cx, code); CHECK(codestr); jsval argv[1] = { STRING_TO_JSVAL(codestr) }; JS::AutoArrayRooter rooter(cx, 1, argv); jsval v; CHECK(JS_CallFunctionName(cx, scope, "eval", 1, argv, &v)); } js::RootedValue hitsv(cx); EVAL("hits", hitsv.address()); CHECK_SAME(hitsv, INT_TO_JSVAL(1)); return true; }