Exemple #1
0
RcppExport SEXP eigen_decomp_list(SEXP rate_matrix_list){
    Rcpp::List rates_list(rate_matrix_list);
    int size=rates_list.size();
    Rcpp::List out_list(size);
	
	for(int i=0;i<size;i++){
		arma::mat rate=Rcpp::as<arma::mat>(rates_list[i]);
		arma::cx_colvec eigval;
		arma::cx_mat eigvec;
		arma::eig_gen(eigval, eigvec, rate);
		arma::cx_mat invvectors=arma::inv(eigvec);
		
		bool replicate=0;
		arma::colvec realvec=arma::real(eigval);
		for(int j=0; j<realvec.n_elem-1;j++){
			if(((realvec(j+1)-realvec(j))<1e-5)||((realvec(j)-realvec(j+1))<1e-5)){
				replicate=1;
				exit;
			}
		}
		//just adding this for now
		replicate=0;
		out_list[i]=Rcpp::List::create(Rcpp::Named("values") =eigval, Rcpp::Named("invvectors") =invvectors, Rcpp::Named("vectors") =eigvec,
									   Rcpp::Named("rate") =real(rate),Rcpp::Named("replicate")=replicate);
		
	}
	
	return(wrap(out_list));
}
Exemple #2
0
Map::Map(const std::string & name):
  MarSystem("Map", name)
{
  addControl("mrs_realvec/input", realvec(), m_input_ctl);
  addControl("mrs_realvec/output", realvec(), m_output_ctl);
}