bool BvhPrimitive::intersect(Ray& ray, Intersection& out_isect) const { stat_count(COUNTER_BVH_PRIM_INTERSECT); bool found = false; this->bvh.traverse_elems(ray, [&](const std::unique_ptr<Primitive>& prim) { if(prim->intersect(ray, out_isect)) { found = true; } return true; }); if(found) { stat_count(COUNTER_BVH_PRIM_INTERSECT_HIT); } return found; }
bool BvhPrimitive::intersect_p(const Ray& ray) const { stat_count(COUNTER_BVH_PRIM_INTERSECT_P); bool found = false; this->bvh.traverse_elems(ray, [&](const std::unique_ptr<Primitive>& prim) { if(prim->intersect_p(ray)) { found = true; return false; } else { return true; } }); if(found) { stat_count(COUNTER_BVH_PRIM_INTERSECT_P_HIT); } return found; }
void dat_dump(struct index_s *index) { time_info tinfo; int time; struct datrietree_s* datrie; struct stat_info sinfo; timestart(&tinfo); datrie = loaddatrie_bindict(index->datrie_index_file_name); time = timeend(&tinfo); printf("Load Datrie Bindict Time: %d\n", time); if (!datrie) { printf("Load Index Failed: %s\n", index->datrie_index_file_name); return; } printf("Wordimage Size: %lubyte\n", datrie->wordimage->size * sizeof(int)); printf("Array Size: %lubyte\n", datrie->datrie->size * sizeof(int) * 3); stat_count(datrie->datrie, &sinfo); printf("Array Total Count: %d Zero Count: %lu Ratio: %.3f%%\n", datrie->datrie->size, sinfo.zero_count, ((double)sinfo.zero_count / (double)datrie->datrie->size)*100); printf("Term Total Count: %lu\n", sinfo.term_count); }
int main(int argc, char **argv) { Stat_T data; stat_init(&data); while (--argc) { double ftmp; ftmp = atof(*(++argv)); stat_add(ftmp, &data); } puts("\nBefore \"Olympic\" filtering\n"); printf("Minimum datum = %g\n", stat_min(&data)); printf("Maximum datum = %g\n", stat_max(&data)); printf("Number of samples = %d\n", stat_count(&data)); printf("Arithmetic mean = %g\n", stat_mean(&data)); printf("Geometric mean = %g\n", stat_gmean(&data)); printf("Harmonic mean = %g\n", stat_hmean(&data)); printf("Standard deviation (N) = %g\n", stat_stddevP(&data)); printf("Standard deviation (N-1) = %g\n", stat_stddevS(&data)); printf("Variance = %g\n", stat_var(&data)); printf("Population coeff. of var. = %g%%\n", stat_varcoeffP(&data)); printf("Sample coeff. of var. = %g%%\n", stat_varcoeffS(&data)); puts("\nAfter \"Olympic\" filtering\n"); printf("stat_olympic() returned %s\n", stat_olympic(&data) ? "ERROR" : "SUCCESS"); printf("Minimum datum = %g\n", stat_min(&data)); printf("Maximum datum = %g\n", stat_max(&data)); printf("Number of samples = %d\n", stat_count(&data)); printf("Arithmetic mean = %g\n", stat_mean(&data)); printf("Geometric mean = %g\n", stat_gmean(&data)); printf("Harmonic mean = %g\n", stat_hmean(&data)); printf("Standard deviation (N) = %g\n", stat_stddevP(&data)); printf("Standard deviation (N-1) = %g\n", stat_stddevS(&data)); printf("Variance = %g\n", stat_var(&data)); printf("Population coeff. of var. = %g%%\n", stat_varcoeffP(&data)); printf("Sample coeff. of var. = %g%%\n", stat_varcoeffS(&data)); return EXIT_SUCCESS; }