Exemple #1
0
void testGenRandomPrime() {
    auto num = BigInt::genRandomBits(1024);

    std::cout << "high end: " << num.ToDecimal() << std::endl;
    auto prime = BigInt::genLikelyPrime(BigInt::ZERO, num);

    std::cout << prime.ToDecimal() << std::endl;


}
Exemple #2
0
const char* TimeSpec::SpanToLogText(TimeSpec::Unit unit, int decimals,  TextFlags flags)
{
  double val = ToDecimal() / UnitToSeconds(unit);

  if (0 == (flags & NoTruncation) && val == int64_t(val))
    decimals = 0;

  return FormatShortStr("%.*f %s", decimals, val,  UnitToString(unit, 0 == (flags & LongName)));
}
Exemple #3
0
TimeSpec::Unit TimeSpec::SmallestSpanUnit() const
{
  double val = ToDecimal();

  if (val == 0.0)
    return TimeSpec::Seconds;

  if (val / 60 == int64_t(val / 60))
    return TimeSpec::Minutes;
  if (val < 1.0 / USecPerSec)
    return TimeSpec::Nanosec;
  if (val < 1.0 / MSecPerSec)
    return TimeSpec::Microsec;
  if (val < 1.0)
    return TimeSpec::Millisec;
  return TimeSpec::Seconds;
}
Exemple #4
0
int DecodeGama(std::vector<int> gamma){

  // Primero tenemos que saber el codigo en unario
  // Para esto hay que ver los numeros de izqueda a derecha
  // Hasta que pillemos el primer cero, y esos numeros seran
  // el codigo unario
  std::vector<int> one;
  one.push_back(1);
  int position=0;

  std::vector<int> binary = gamma;

  for(int i = 0; i < gamma.size(); ++i){
    if( gamma[i] == 0){
      position = i;
      break;
    }
  }

  binary.erase(binary.begin(),binary.begin()+position+1);
  one.insert(one.end(),binary.begin(),binary.end());

  return ToDecimal(one);
}
Exemple #5
0
void testRandomBitsGeneration() {
    auto num = BigInt::genRandomBits(512);

    std::cout << num.ToDecimal() << std::endl;
    std::cout << "testRandomBitsGeneration correct? " << (BigInt::log2(num) <= 512) << std::endl;
}