static void Big2GB(char *istr, char *ostr, int inlen) { unsigned char s[2]; #ifdef DEBUG debug_message("translate BIG5 to GB.\n"); #endif while(inlen >= 2) { s[0] = *istr++; s[1] = *istr++; if(is_B51(s[0]) && is_B52(s[1])) { b2g(s); *ostr++ = s[0]; *ostr++ = s[1]; inlen -= 2; } else { *ostr++ = s[0]; istr--; inlen--; } } if(inlen > 0) *ostr++ = *istr; *ostr = '\0'; }
glm::vec3 FoodDispenser::getWorldTransform() const { if (physBody_.b2Body_) { auto pos = physBody_.b2Body_->GetPosition(); return glm::vec3(b2g(pos), physBody_.b2Body_->GetAngle()); } else return glm::vec3(0); }
glm::vec3 Wall::getWorldTransform() const { if (body_.b2Body_) { auto pos = body_.b2Body_->GetPosition(); return glm::vec3(b2g(pos), body_.b2Body_->GetAngle()); } else return glm::vec3(0); }
void grayCode(int n){ if(n==0) return; int i; int s = 1<<n; for(i=0;i<s;i++) printf("%d\n",b2g(i)); }
int main() { unsigned char c[2], cc[2]; int i; printf("//g2btab[c2-0x40][(c1-0x80)*2], g2btab[c2-0x40][(c1-0x80)*2+1]\n"); printf("//c1: 0x80-0xff, c2: 0x40-0xfe\n"); printf("static const char g2btab[192][256]={\n"); for(c[1] = 0x40; /*c[1]<= 0xff &&*/c[1]; c[1]++) { printf("\t{"); for(i=0, c[0]=0x80; /*c[0]<=0xff&&*/c[0]; c[0]++, i++) { cc[0]=c[0]; cc[1]=c[1]; g2b(cc); correctg2b(c, cc); if(cc[0]==GtoB_bad1&&cc[1]==GtoB_bad2){ cc[0]=c[0]; cc[1]=c[1]; extrag2b(cc); } printf("%3d,%3d%s", (int)cc[0], (int)cc[1], c[0]==0xff?"":","); if(i%10==9) printf("\n\t "); } printf("}%s\n", c[1]==0xff?"":","); } printf("};\n"); printf("//b2gtab[c2-0x40][(c1-0x80)*2], b2gtab[c2-0x40][(c1-0x80)*2+1]\n"); printf("//c1: 0x80-0xff, c2: 0x40-0xfe\n"); printf("static const char b2gtab[192][256]={\n"); for(c[1] = 0x40; c[1]<= 0xff&&c[1]; c[1]++) { printf("\t{"); for(i=0, c[0]=0x80; c[0]<=0xff&&c[0]; c[0]++, i++) { cc[0]=c[0]; cc[1]=c[1]; b2g(cc); correctg2b(c, cc); if(cc[0]==BtoG_bad1&&cc[1]==BtoG_bad2) { cc[0]=c[0]; cc[1]=c[1]; extrab2g(cc); } printf("%3d,%3d%s", (int)cc[0], (int)cc[1], c[0]==0xff?"":","); if(i%10==9) printf("\n\t "); } printf("}%s\n", c[1]==0xff?"":","); } printf("};\n"); return 0; }
void export_cube_base::do_export() { typedef std::vector<cube_writer *> cube_writer_list; if (m_dms.size() + m_orbs.size() == 0) return; // Prepare list of output files for dms cube_writer_list dm_writers; for (dm_list::iterator i = m_dms.begin(); i != m_dms.end(); i++) { std::string fname(m_prefix + i->first + ".cube"); dm_writers.push_back(new cube_writer(fname, i->second->desc, m_comment, m_grid, m_atnum, m_coords)); } // Prepare list of output files for orbitals size_t norbs = 0, ndigits = 0, nao = 0; if (m_orbs.size() != 0) nao = m_orbs.begin()->second->data.n_rows; else nao = m_dms.begin()->second->data.n_rows; for (size_t nn = nao; nn > 0; nn /= 10, ndigits++) { ; } cube_writer_list orb_writers; for (orb_list::iterator i = m_orbs.begin(); i != m_orbs.end(); i++) { orb_data &data = *(i->second); for (std::vector<size_t>::iterator j = data.idx.begin(); j != data.idx.end(); j++) { std::ostringstream ss1, ss2; ss1 << m_prefix << i->first << "." << std::setw(ndigits) << std::setfill('0') << *j << ".cube"; ss2 << data.desc << " (orbital " << *j << ")"; orb_writers.push_back(new cube_writer(ss1.str(), ss2.str(), m_comment, m_grid, m_atnum, m_coords)); } } // Now perform the loop over the batches mat pts(3, m_batchsz, fill::zeros); mat b2g(m_batchsz, nao, fill::zeros); size_t ipts = 0; while (ipts < m_grid.size()) { // 1) Build grid points size_t npts = m_grid.build_pts(ipts, pts); // 2) Evaluate basis functions on grid points evaluate_on_grid(pts, npts, b2g); // 3) Loop over density matrix data cube_writer_list::iterator id = dm_writers.begin(); for (dm_list::iterator i = m_dms.begin(); i != m_dms.end(); i++, id++) { vec data(npts); for (size_t k = 0; k < npts; k++) { mat tmp = b2g.row(k) * i->second->data * b2g.row(k).t(); data(k) = tmp(0, 0); } (*id)->write(data); } // 4) Loop over orbital data cube_writer_list::iterator io = orb_writers.begin(); for (orb_list::iterator i = m_orbs.begin(); i != m_orbs.end(); i++) { mat data = b2g.rows(0, npts - 1) * i->second->data; for (size_t j = 0; j < data.n_cols; j++, io++) (*io)->write(data.col(j)); } ipts += npts; } // Delete cube writers and close files for (cube_writer_list::iterator i = dm_writers.begin(); i != dm_writers.end(); i++) { delete *i; *i = 0; } dm_writers.clear(); for (cube_writer_list::iterator i = orb_writers.begin(); i != orb_writers.end(); i++) { delete *i; *i = 0; } orb_writers.clear(); // Delete density matrix data and orbital data clear_data(); }