int main ( ) { freopen ( "fazanr.in","r", stdin ) ; freopen ( "fazanr.out","w", stdout ) ; int n , x , c , c1 , i , q =0 ; scanf ( "%d", &n ) ; scanf ( "%d", & x ) ; c = x%10 ; for ( i = 2 ; i <= n ; ++ i ) { scanf ( "%d", &x ) ; c1 = cif ( x ) ; if ( c != c1 ) ++q; c=x%10;; } printf ( "%d" , q ) ; return 0 ; }
void DiffractionDataSingleCrystal::ImportCIF(const string &fileName) { VFN_DEBUG_EXIT("DiffractionDataSingleCrystal::ImportCIF(): "<<fileName,10); ifstream fin (fileName.c_str()); if(!fin) { throw ObjCrystException("DiffractionDataSingleCrystal::ImportCIF(): Error opening file for input:"+fileName); } ObjCryst::CIF cif(fin,true,true); for(map<string,CIFData>::iterator pos=cif.mvData.begin();pos!=cif.mvData.end();++pos) { if(pos->second.mH.numElements()>0) { this->SetHklIobs(pos->second.mH,pos->second.mK,pos->second.mL,pos->second.mIobs,pos->second.mSigma); break; } } VFN_DEBUG_EXIT("DiffractionDataSingleCrystal::ImportCIF() read "<<mNbRefl<<" reflections",10); }
TEST_F(test_init_line_adstring, allocate) { ofstream ofs("test_init_line_adstring.dat"); ofs << "# ignore\n"; ofs << "__test_init_line_adstring__\n"; ofs.close(); init_line_adstring s; ASSERT_EQ(NULL, ad_comm::global_datafile); cifstream cif("test_init_line_adstring.dat"); ad_comm::global_datafile = &cif; s.allocate("name"); ASSERT_STREQ("name", s.get_name()); ASSERT_EQ(27, s.size()); ASSERT_STREQ("__test_init_line_adstring__", (char*)s); cif.close(); ad_comm::global_datafile = NULL; }
// ============================================================================ // pxpByteCode // ============================================================================ pxpByteCode::pxpByteCode( pkgDecompiler* decompiler ) : Decompiler(decompiler) , CToken(NULL) , CTokenTree(NULL) , CTokenGroup(NULL) , CTokenGroupTree(NULL) , CTokenItem(NULL) , CTokenItemTree(NULL) , CTokenGroupCnd(NULL) , CTokenGroupCndTree(NULL) , unXmlParser() { // temp tree nodes unXmlParseTree bytecode ( wxT("bytecode") ); unXmlParseTree bgroup ( wxT("group") ); unXmlParseTree gname ( wxT("name") ); unXmlParseTree gmemo ( wxT("memo") ); unXmlParseTree gtoken ( wxT("token") ); unXmlParseTree tcode ( wxT("code") ); unXmlParseTree tname ( wxT("name") ); unXmlParseTree tdesc ( wxT("desc") ); unXmlParseTree tdata ( wxT("data") ); unXmlParseTree titem ( wxT("item") ); unXmlParseTree itype ( wxT("type") ); unXmlParseTree iname ( wxT("name") ); unXmlParseTree ttext ( wxT("text") ); unXmlParseTree gcond ( wxT("gcond") ); unXmlParseTree cif ( wxT("if") ); unXmlParseTree ceq ( wxT("eq") ); unXmlParseTree cthen ( wxT("then") ); unXmlParseTree cleft ( wxT("left") ); unXmlParseTree cright ( wxT("right") ); unXmlParseTree ctstream ( wxT("tstream") ); unXmlParseTree cnum ( wxT("num") ); unXmlParseTree nfunc ( wxT("nativefunctions") ); unXmlParseTree ffirst ( wxT("first") ); unXmlParseTree fextended ( wxT("extended") ); // token group - pre bgroup.AddCommand( new_xpObjCreate<pkgTokenGroup>(txpParseTree) ); bgroup.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenGroup, txpTokenGroupObject ) ); bgroup.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenGroupTree, txpParseTree ) ); gname.AddCommand( new_xpFunc1( txpTokenGroup, &pkgTokenGroup::SetName, txpNodeName(txpParseTree) ) ); gname.AddPostCommand( new_xpFunc1( Decompiler, &pkgDecompiler::AddTokenGroup, txpTokenGroup ) ); // token group - post bgroup.AddPostCommand( new_xpObjClear(txpParseTree) ); bgroup.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenGroup ) ); bgroup.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenGroupTree ) ); // gcond = pre gcond.AddCommand( new_xpObjCreate<pkgTokenCondition>(txpParseTree) ); gcond.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenGroupCnd, txpTokenGroupCndObject ) ); gcond.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenGroupCndTree, txpParseTree ) ); // gcond = post gcond.AddPostCommand( new_xpObjClear(txpParseTree) ); gcond.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenGroupCnd ) ); gcond.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenGroupCndTree ) ); // token - pre gtoken.AddCommand( new_xpObjCreate<dtToken>(txpParseTree) ); gtoken.AddCommand( new_xpFunc1( this, &pxpByteCode::SetToken, txpTokenObject ) ); gtoken.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenTree, txpParseTree ) ); tcode.AddCommand( new_xpFunc1( txpTokenTreeObject, &dtToken::SetTokenData, txpNodeData(txpParseTree) ) ); tname.AddCommand( new_xpFunc1( txpTokenTreeObject, &dtToken::SetTokenName, txpNodeName(txpParseTree) ) ); tdesc.AddCommand( new_xpFunc1( txpTokenTreeObject, &dtToken::SetDesc, txpNodeName(txpParseTree) ) ); tdesc.AddCommand( new_xpFunc1( txpTokenGroup, &pkgTokenGroup::AddToken, txpToken ) ); tdesc.AddCommand( new_xpFunc2( Decompiler, &pkgDecompiler::AddToken, txpToken, txpTokenGroupCnd ) ); // token - post gtoken.AddPostCommand( new_xpFunc0( txpToken, &dtToken::DumpInfo ) ); gtoken.AddPostCommand( new_xpObjClear(txpParseTree) ); gtoken.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearToken ) ); gtoken.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenTree ) ); // titem - pre titem.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenItemTree, txpParseTree ) ); itype.AddCommand( new_xpObjFactory( txpTokenItemTree, &GDataTypeFactory, &pkgDataTypeFactory::Create, txpNodeName(txpParseTree) ) ); itype.AddCommand( new_xpFunc1( this, &pxpByteCode::SetTokenItem, txpTokenItemTreeObject ) ); iname.AddCommand( new_xpFunc1( txpTokenItem, &pkgDataType::SetDesc, txpNodeName(txpParseTree) ) ); // titem - post titem.AddPostCommand( new_xpFunc1( txpToken, &dtToken::AddItem, txpTokenItem ) ); titem.AddPostCommand( new_xpObjClear(txpParseTree) ); titem.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenItem ) ); titem.AddPostCommand( new_xpFunc0( this, &pxpByteCode::ClearTokenItemTree ) ); ffirst.AddCommand( new_xpFunc1( Decompiler, &pkgDecompiler::SetFunctionIdFirst, txpNodeData(txpParseTree) ) ); fextended.AddCommand( new_xpFunc1( Decompiler, &pkgDecompiler::SetFunctionIdExtended, txpNodeData(txpParseTree) ) ); // construct tree starting from leaves // ie: node on right side *cannot* appear anywhere below on left side // token gtoken.AddChild( tcode, pl::one ); gtoken.AddChild( tname, pl::one ); gtoken.AddChild( tdesc, pl::one ); titem.AddChild( itype, pl::one ); titem.AddChild( iname, pl::one ); tdata.AddChild( titem, pl::minone ); tdata.AddChild( ttext, pl::maxone ); gtoken.AddChild( tdata, pl::maxone ); // if cleft.AddChild( ctstream, pl::maxone ); cleft.AddChild( cnum, pl::maxone ); cright.AddChild( ctstream, pl::maxone ); cright.AddChild( cnum, pl::maxone ); ceq.AddChild( cleft, pl::one ); ceq.AddChild( cright, pl::one ); cif.AddChild( ceq, pl::one ); // then cthen.AddChild( gtoken, pl::any ); // group bgroup.AddChild( gname, pl::one ); bgroup.AddChild( gmemo, pl::any ); gcond.AddChild( cif, pl::one ); gcond.AddChild( cthen, pl::one ); bgroup.AddChild( gcond, pl::maxone ); bgroup.AddChild( gtoken, pl::any ); // native functions nfunc.AddChild( fextended, pl::one ); nfunc.AddChild( ffirst, pl::one ); // bytecode bytecode.AddChild( bgroup, pl::minone ); bytecode.AddChild( nfunc, pl::maxone ); ParseTree = new unXmlParseTree( bytecode ); }
void function_minimizer::sd_routine(void) { int nvar=initial_params::nvarcalc(); // get the number of active parameters dvector x(1,nvar); initial_params::xinit(x); // get the number of active parameters initial_params::restore_start_phase(); int nvar1=initial_params::nvarcalc(); // get the number of active parameters int num_sdrep_types=stddev_params::num_stddev_params + initial_params::num_active_calc(); param_labels.allocate(1,num_sdrep_types); param_size.allocate(1,num_sdrep_types); int ii=1; size_t max_name_length = 0; for (int i=0;i<initial_params::num_initial_params;i++) { //if ((initial_params::varsptr[i])->phase_start // <= initial_params::current_phase) if (withinbound(0,(initial_params::varsptr[i])->phase_start, initial_params::current_phase)) { param_labels[ii]= (initial_params::varsptr[i])->label(); param_size[ii]= (initial_params::varsptr[i])->size_count(); if (max_name_length<param_labels[ii].size()) { max_name_length=param_labels[ii].size(); } ii++; } } int start_stdlabels=ii; for (int i=0;i< stddev_params::num_stddev_params;i++) { param_labels[ii]= stddev_params::stddevptr[i]->label(); param_size[ii]= stddev_params::stddevptr[i]->size_count(); if (max_name_length<param_labels[ii].size()) { max_name_length=param_labels[ii].size(); } ii++; } int end_stdlabels=ii-1; int ndvar=stddev_params::num_stddev_calc(); dvector scale(1,nvar1); // need to get scale from somewhere dvector v(1,nvar); // need to read in v from model.rep dmatrix S(1,nvar,1,nvar); { uistream cif("admodel.cov"); int tmp_nvar = 0; cif >> tmp_nvar; if (nvar !=tmp_nvar) { cerr << "Incorrect number of independent variables in file" " model.cov" << endl; exit(1); } cif >> S; if (!cif) { cerr << "error reading covariance matrix from model.cov" << endl; exit(1); } } int sgn; initial_params::stddev_scale(scale,x); double lndet=-ln_det(S,sgn)-2.0*sum(log(scale)); initial_params::set_active_random_effects(); //int nvar1=initial_params::nvarcalc(); dvector diag(1,nvar1+ndvar); dvector tmp(1,nvar1+ndvar); { ofstream ofs("admodel.tmp"); #if defined(__GNU__) || defined(DOS386) || defined(__GNUDOS__) // ******************************************************* // ******************************************************* { if (nvar==nvar1) // no random effects { for (int i=1;i<=nvar;i++) { for (int j=1;j<=i;j++) { tmp(j)=S(i,j)*scale(i)*scale(j); ofs << tmp(j) << " "; } ofs << endl; diag(i)=tmp(i); } dmatrix tv(1,ndvar,1,nvar1); adstring tmpstring="admodel.dep"; if (ad_comm::wd_flag) tmpstring = ad_comm::adprogram_name + ".dep"; cifstream cif((char*)tmpstring); int tmp_nvar = 0, tmp_ndvar = 0; cif >> tmp_nvar >> tmp_ndvar; if (tmp_nvar!=nvar1) { cerr << " tmp_nvar != nvar1 in file " << tmpstring << endl; ad_exit(1); } if (ndvar>0) { cif >> tv; dvector tmpsub(1,nvar); for (int i=1;i<=ndvar;i++) { for (int j=1;j<=nvar;j++) { tmpsub(j)=(tv(i)*S(j))*scale(j); } ofs << tmpsub << " "; tmpsub=tv(i)*S; for (int j=1;j<=i;j++) { tmp(nvar+j)=tmpsub*tv(j); ofs << tmp(nvar+j) << " "; } diag(i+nvar)=tmp(i+nvar); if (diag(i+nvar)<=0.0) { cerr << "Estimated covariance matrix may not" " be positive definite" << endl; cerr << sort(eigenvalues(S)) << endl; } ofs << endl; } } } else // have random effects { dmatrix tv(1,ndvar,1,nvar1); adstring tmpstring="admodel.dep"; if (ad_comm::wd_flag) tmpstring = ad_comm::adprogram_name + ".dep"; cifstream cif((char*)tmpstring); int tmp_nvar = 0, tmp_ndvar = 0; cif >> tmp_nvar >> tmp_ndvar; if (tmp_nvar!=nvar1) { cerr << " tmp_nvar != nvar1 in file " << tmpstring << endl; ad_exit(1); } dmatrix BS(1,nvar1,1,nvar1); BS.initialize(); get_bigS(ndvar,nvar1,nvar,S,BS,scale); { tmpstring = ad_comm::adprogram_name + ".bgs"; uostream uos((char*)(tmpstring)); if (!uos) { cerr << "error opening file " << tmpstring << endl; ad_exit(1); } uos << nvar1; uos << BS; if (!uos) { cerr << "error writing to file " << tmpstring << endl; ad_exit(1); } } for (int i=1;i<=nvar1;i++) { for (int j=1;j<=i;j++) { tmp(j)=BS(i,j)*scale(i)*scale(j); ofs << tmp(j) << " "; } ofs << endl; diag(i)=tmp(i); } if (ndvar>0) { cif >> tv; dvector tmpsub(1,nvar1); for (int i=1;i<=ndvar;i++) { for (int j=1;j<=nvar1;j++) { tmpsub(j)=(tv(i)*BS(j))*scale(j); } ofs << tmpsub << " "; tmpsub=tv(i)*BS; for (int j=1;j<=i;j++) { tmp(nvar1+j)=tmpsub*tv(j); ofs << tmp(nvar1+j) << " "; } diag(i+nvar1)=tmp(i+nvar1); if (diag(i+nvar1)<=0.0) { if (norm(tv(i))>1.e-100) { cerr << "Estimated covariance matrix may not" " be positive definite" << endl; cerr << sort(eigenvalues(BS)) << endl; } } ofs << endl; } } }
void function_minimizer::pvm_master_mcmc_routine(int nmcmc,int iseed0,double dscale, int restart_flag) { uostream * pofs_psave=NULL; dmatrix mcmc_display_matrix; int mcmc_save_index=1; int mcmc_wrap_flag=0; int mcmc_gui_length=10000; int no_sd_mcmc=0; int on2=-1; if ( (on2=option_match(ad_comm::argc,ad_comm::argv,"-nosdmcmc"))>-1) no_sd_mcmc=1; if (stddev_params::num_stddev_params==0) { cerr << " You must declare at least one object of type sdreport " << endl << " to do the mcmc calculations" << endl; return; } { //ofstream of_bf("testbf"); //if (adjm_ptr) set_labels_for_mcmc(); ivector number_offsets; dvector lkvector; //double current_bf=0; double lcurrent_bf=0; double size_scale=1.0; double total_spread=200; //double total_spread=2500; uostream * pofs_sd = NULL; int nvar=initial_params::nvarcalc(); // get the number of active parameters int scov_option=0; dmatrix s_covar; dvector s_mean; int on=-1; int ncsim=25000; int nslots=800; //int nslots=3600; int initial_nsim=4800; int ntmp=0; int ncor=0; double bfsum=0; int ibfcount=0; double llbest; double lbmax; //if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcscov",ntmp))>-1) //{ scov_option=1; s_covar.allocate(1,nvar,1,nvar); s_mean.allocate(1,nvar); s_mean.initialize(); s_covar.initialize(); int ndvar=stddev_params::num_stddev_calc(); int numdvar=stddev_params::num_stddev_number_calc(); /* if (adjm_ptr) { mcmc_display_matrix.allocate(1,numdvar,1,mcmc_gui_length); number_offsets.allocate(1,numdvar); number_offsets=stddev_params::copy_all_number_offsets(); } */ dvector x(1,nvar); dvector scale(1,nvar); dmatrix values; int have_hist_flag=0; initial_params::xinit(x); dvector pen_vector(1,nvar); { initial_params::reset(dvar_vector(x),pen_vector); cout << pen_vector << endl << endl; } initial_params::mc_phase=0; initial_params::stddev_scale(scale,x); initial_params::mc_phase=1; dvector bmn(1,nvar); dvector mean_mcmc_values(1,ndvar); dvector s(1,ndvar); dvector h(1,ndvar); //dvector h; dvector square_mcmc_values(1,ndvar); square_mcmc_values.initialize(); mean_mcmc_values.initialize(); bmn.initialize(); int use_empirical_flag=0; int diag_option=0; int topt=0; if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcdiag"))>-1) { diag_option=1; cout << " Setting covariance matrix to diagonal with entries " << dscale << endl; } dmatrix S(1,nvar,1,nvar); dvector sscale(1,nvar); if (!diag_option) { int on,nopt; int rescale_bounded_flag=0; double rescale_bounded_power=0.5; if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcrb",nopt))>-1) { if (nopt) { int iii=atoi(ad_comm::argv[on+1]); if (iii < 1 || iii > 9) { cerr << " -mcrb argument must be integer between 1 and 9 --" " using default of 5" << endl; rescale_bounded_power=0.5; } else rescale_bounded_power=iii/10.0; } else { rescale_bounded_power=0.5; } rescale_bounded_flag=1; } if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcec"))>-1) { use_empirical_flag=1; } if (use_empirical_flag) { read_empirical_covariance_matrix(nvar,S,ad_comm::adprogram_name); } else if (!rescale_bounded_flag) { int tmp; read_covariance_matrix(S,nvar,tmp,sscale); } else { read_hessian_matrix_and_scale1(nvar,S,rescale_bounded_power, mcmc2_flag); //read_hessian_matrix_and_scale(nvar,S,pen_vector); } { // scale covariance matrix for model space dmatrix tmp(1,nvar,1,nvar); for (int i=1;i<=nvar;i++) { tmp(i,i)=S(i,i)*(scale(i)*scale(i)); for (int j=1;j<i;j++) { tmp(i,j)=S(i,j)*(scale(i)*scale(j)); tmp(j,i)=tmp(i,j); } } S=tmp; } } else { S.initialize(); for (int i=1;i<=nvar;i++) { S(i,i)=dscale; } } cout << sort(eigenvalues(S)) << endl; dmatrix chd = choleski_decomp( (dscale*2.4/sqrt(double(nvar))) * S); dmatrix chdinv=inv(chd); int sgn; dmatrix symbds(1,2,1,nvar); initial_params::set_all_simulation_bounds(symbds); ofstream ofs_sd1((char*)(ad_comm::adprogram_name + adstring(".mc2"))); { long int iseed=0; int number_sims; if (nmcmc<=0) { number_sims= 100000; } else { number_sims= nmcmc; } //cin >> iseed; if (iseed0<=0) { iseed=-36519; } else { iseed=-iseed0; } if (iseed>0) { iseed=-iseed; } cout << "Initial seed value " << iseed << endl; random_number_generator rng(iseed); rng.better_rand(); //better_rand(iseed); double lprob=0.0; double lpinv=0.0; double lprob3=0.0; // get lower and upper bounds independent_variables y(1,nvar); independent_variables parsave(1,nvar); // read in the mcmc values to date int ii=1; dmatrix hist; if (restart_flag) { int tmp=0; if (!no_sd_mcmc) { hist.allocate(1,ndvar,-nslots,nslots); tmp=read_hist_data(hist,h,mean_mcmc_values,s,parsave,iseed, size_scale); values.allocate(1,ndvar,-nslots,nslots); for (int i=1;i<=ndvar;i++) { values(i).fill_seqadd(mean_mcmc_values(i)-0.5*total_spread*s(i) +.5*h(i),h(i)); } } if (iseed>0) { iseed=-iseed; } double br=rng.better_rand(); if (tmp) have_hist_flag=1; chd=size_scale*chd; chdinv=chdinv/size_scale; } else { int on=-1; int nopt=0; if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcpin",nopt))>-1) { if (nopt) { cifstream cif((char *)ad_comm::argv[on+1]); if (!cif) { cerr << "Error trying to open mcmc par input file " << ad_comm::argv[on+1] << endl; exit(1); } cif >> parsave; if (!cif) { cerr << "Error reading from mcmc par input file " << ad_comm::argv[on+1] << endl; exit(1); } } else { cerr << "Illegal option with -mcpin" << endl; } } else { ii=1; initial_params::copy_all_values(parsave,ii); } } ii=1; initial_params::restore_all_values(parsave,ii); gradient_structure::set_NO_DERIVATIVES(); ofstream ogs("sims"); ogs << nvar << " " << number_sims << endl; initial_params::xinit(y); send_int_to_slaves(1); double llc=-pvm_master_get_monte_carlo_value(nvar,y); send_int_to_slaves(1); llbest=-pvm_master_get_monte_carlo_value(nvar,y); lbmax=llbest; // store current mcmc variable values in param_values //dmatrix store_mcmc_values(1,number_sims,1,ndvar); #if defined(USE_BAYES_FACTORS) lkvector.allocate(1,number_sims); #endif dvector mcmc_values(1,ndvar); dvector mcmc_number_values; //if (adjm_ptr) mcmc_number_values.allocate(1,numdvar); int offs=1; stddev_params::copy_all_values(mcmc_values,offs); /* if (adjm_ptr) { offs=1; stddev_params::copy_all_number_values(mcmc_number_values,offs); } */ int change_ball=2500; int nopt; if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcscale",nopt))>-1) { if (nopt) { int iii=atoi(ad_comm::argv[on+1]); if (iii <=0) { cerr << " Invalid option following command line option -mcball -- " << endl << " ignored" << endl; } else change_ball=iii; } } int iac=0; int liac=0; int isim=0; int itmp=0; double logr; int u_option=0; double ll; int s_option=1; int psvflag=0; if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcu"))>-1) { u_option=1; } if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcnoscale"))>-1) { s_option=0; } //cout << llc << " " << llc << endl; int iac_old=0; int i_old=0; { if (!restart_flag) { pofs_sd = new uostream((char*)(ad_comm::adprogram_name + adstring(".mcm"))); } int mcsave_flag=0; int mcrestart_flag=option_match(ad_comm::argc,ad_comm::argv,"-mcr"); if ( (on=option_match(ad_comm::argc,ad_comm::argv,"-mcsave"))>-1) { int jj=(int)atof(ad_comm::argv[on+1]); if (jj <=0) { cerr << " Invalid option following command line option -mcsave -- " << endl; } else { mcsave_flag=jj; if ( mcrestart_flag>-1) { // check that nvar is correct { uistream uis((char*)(ad_comm::adprogram_name + adstring(".psv"))); if (!uis) { cerr << "Error trying to open file" << ad_comm::adprogram_name + adstring(".psv") << " for mcrestart" << endl; cerr << " I am starting a new file " << endl; psvflag=1; } else { int nv1; uis >> nv1; if (nv1 !=nvar) { cerr << "wrong number of independent variables in" << ad_comm::adprogram_name + adstring(".psv") << cerr << " I am starting a new file " << endl; psvflag=1; } } } if (!psvflag) { pofs_psave= new uostream( (char*)(ad_comm::adprogram_name + adstring(".psv")),ios::app); } else { pofs_psave= new uostream((char*)(ad_comm::adprogram_name + adstring(".psv"))); } } else {