MCPcopy Create free account
hub / github.com/JeanLucPons/VanitySearch / GetExpectedTime

Method GetExpectedTime

Vanity.cpp:611–665  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

609}
610
611string VanitySearch::GetExpectedTime(double keyRate,double keyCount) {
612
613 char tmp[128];
614 string ret;
615
616 if(hasPattern)
617 return "";
618
619 double P = 1.0/ _difficulty;
620 // pow(1-P,keyCount) is the probality of failure after keyCount tries
621 double cP = 1.0 - pow(1-P,keyCount);
622
623 sprintf(tmp,"[Prob %.1f%%]",cP*100.0);
624 ret = string(tmp);
625
626 double desiredP = 0.5;
627 while(desiredP<cP)
628 desiredP += 0.1;
629 if(desiredP>=0.99) desiredP = 0.99;
630 double k = log(1.0-desiredP)/log(1.0-P);
631 if (isinf(k)) {
632 // Try taylor
633 k = log(1.0 - desiredP)/log1(P);
634 }
635 double dTime = (k-keyCount)/keyRate; // Time to perform k tries
636
637 if(dTime<0) dTime = 0;
638
639 double nbDay = dTime / 86400.0;
640 if (nbDay >= 1) {
641
642 double nbYear = nbDay/365.0;
643 if (nbYear > 1) {
644 if(nbYear<5)
645 sprintf(tmp, "[%.f%% in %.1fy]", desiredP*100.0, nbYear);
646 else
647 sprintf(tmp, "[%.f%% in %gy]", desiredP*100.0, nbYear);
648 } else {
649 sprintf(tmp, "[%.f%% in %.1fd]", desiredP*100.0, nbDay);
650 }
651
652 } else {
653
654 int iTime = (int)dTime;
655 int nbHour = (int)((iTime % 86400) / 3600);
656 int nbMin = (int)(((iTime % 86400) % 3600) / 60);
657 int nbSec = (int)(iTime % 60);
658
659 sprintf(tmp, "[%.f%% in %02d:%02d:%02d]", desiredP*100.0, nbHour, nbMin, nbSec);
660
661 }
662
663 return ret + string(tmp);
664
665}
666
667// ----------------------------------------------------------------------------
668

Callers

nothing calls this directly

Calls 1

log1Function · 0.85

Tested by

no test coverage detected