int main(void) {
char *str;
	str = base_convert("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", "0123456789ABCDEF", "0123456789");
	if (str) {
		puts(str);
		free(str);
	}
	else {
		perror("base_convert");
		return EXIT_FAILURE;
	}
	str = base_convert("FFFFFFFF", "0123456789ABCDEF", "0123456789");
	if (str) {
		puts(str);
		free(str);
	}
	else {
		perror("base_convert");
		return EXIT_FAILURE;
	}
	str = base_convert("FFFFFFFF", "0123456789ABCDEF", "01");
	if (str) {
		puts(str);
		free(str);
	}
	else {
		perror("base_convert");
		return EXIT_FAILURE;
	}
	str = base_convert("1111111111111111", "01", "0123456789ABCDEF");
	if (str) {
		puts(str);
		free(str);
	}
	else {
		perror("base_convert");
		return EXIT_FAILURE;
	}
	str = base_convert("999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", "0123456789", "0123456789ABCDEF");
	if (str) {
		puts(str);
		free(str);
	}
	else {
		perror("base_convert");
		return EXIT_FAILURE;
	}
	return EXIT_SUCCESS;
}
Esempio n. 2
0
double
Units::unit_convert (const Unit& from, const Unit& to,
                     const double value)
{
  if (!compatible (from, to))
    throw std::string ("Cannot convert [") + from.native_name () 
      + "] with base [" + from.base_name () + "] to [" + to.native_name ()
      + "] with base [" + to.base_name () + "]";

  const double from_base = from.to_base (value);
  const double to_base = base_convert (from.base_name (),
                                       to.base_name (), 
                                       from_base);
  const double native = to.to_native (to_base);
  
#if 0
  std::ostringstream tmp;
  tmp << "Converting " << value << " [" << from.native_name () << "] to " << native 
      << " [" << to.native_name () << "] through " << from_base << " [" 
      << from.base_name () << "]";
  if (from.base_name () == to.base_name ())
    daisy_approximate (from_base, to_base);
  else
    tmp << " and " << to_base << " [" << to.base_name () << "]";
  Assertion::message (tmp.str ());
#endif

  return native;
}
Esempio n. 3
0
 bool valid (const double value) const
 {
   if (!from.in_native (value))
     return false;
   const double from_base = from.to_base (value);
   const double to_base = base_convert (from.base_name (), to.base_name (),
                                        from_base);
   return to.in_base (to_base);
 }