int main(int argc, char **argv) { ESL_GETOPTS *go = p7_CreateDefaultApp(options, 0, argc, argv, banner, usage); ESL_RANDOMNESS *r = esl_randomness_CreateFast(esl_opt_GetInteger(go, "-s")); ESL_STOPWATCH *w = esl_stopwatch_Create(); int N = esl_opt_GetInteger(go, "-N"); int i; float *A, *B, *C; p7_FLogsumInit(); /* Create the problem: sample N values A,B on interval -1000,1000: about the range of H3 scores */ A = malloc(sizeof(float) * N); B = malloc(sizeof(float) * N); C = malloc(sizeof(float) * N); for (i = 0; i < N; i++) { A[i] = esl_random(r) * 2000. - 1000.; B[i] = esl_random(r) * 2000. - 1000.; } /* Run */ esl_stopwatch_Start(w); if (esl_opt_GetBoolean(go, "-n")) { for (i = 0; i < N; i++) C[i] = naive2(A[i], B[i]); } else if (esl_opt_GetBoolean(go, "-r")) { for (i = 0; i < N; i++) C[i] = naive1(A[i], B[i]); } else { for (i = 0; i < N; i++) C[i] = p7_FLogsum(A[i], B[i]); } esl_stopwatch_Stop(w); esl_stopwatch_Display(stdout, w, "# CPU time: "); esl_stopwatch_Destroy(w); esl_randomness_Destroy(r); esl_getopts_Destroy(go); return 0; }
size_t StringHashFunctions::operator()(const char *s) const { //hashcalls++; //if(hashcalls % 10000 == 0) //{ // printf("hash keys %d, compares %d, ratio %lf\n", hashcalls, comparisons, (double)comparisons/hashcalls); //} //return hash_128_swapc(s); //return hash_128_swapc(s, strlen(s)); //return CityHash64(s, strlen(s)); //return MurmurHash2(s, strlen(s), SEED); //return naive(s); return naive2(s); //static std::tr1::hash<std::string> defaultHash; //return defaultHash(std::string(s)); }
double ReboundAwareNaive::operator()(const GameState& state) { return (player_ == PLAYER_1 ? naive1(state) : naive2(state)) + r_ * state.canRebound() * (state.whoseTurn() == player_ ? 1 : -1); }