Exemple #1
0
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';
}
Exemple #2
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);
}
Exemple #3
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));
}
Exemple #5
0
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;
}
Exemple #6
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();
}