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; }
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))); }
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; }
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); }
void testRandomBitsGeneration() { auto num = BigInt::genRandomBits(512); std::cout << num.ToDecimal() << std::endl; std::cout << "testRandomBitsGeneration correct? " << (BigInt::log2(num) <= 512) << std::endl; }