void sexpr::display(std::ostream & out) const { if (!is_composite()) display_atom(out); vector<std::pair<sexpr_composite const *, unsigned> > todo; todo.push_back(std::make_pair(static_cast<sexpr_composite const *>(this), 0)); while (!todo.empty()) { loop: sexpr_composite const * n = todo.back().first; unsigned & idx = todo.back().second; unsigned num = n->get_num_children(); while (idx < num) { sexpr const * child = n->get_child(idx); if (idx == 0) out << "("; else out << " "; idx++; if (child->is_composite()) { todo.push_back(std::make_pair(static_cast<sexpr_composite const *>(child), 0)); goto loop; } else { child->display_atom(out); } } out << ")"; todo.pop_back(); } }
bool t_trie::add (const t_value_type & candidate, bool purge_composites, bool check_composite) { if (check_composite && is_composite(candidate)) return false; if (purge_composites) this->purge_composites(candidate, candidate.begin()); return add(candidate, candidate.begin(), check_composite); }
int miller_rabin(ull n) { if(n==2) return 1; if( (n%2==0 && n!=2) || (n%3==0 && n!=3) || (n%5==0 && n!=5) ) return 0; ull d=n-1,s=0,x,i,a; while(!(d%2)) { d>>=1; s++; } for(i=0;i<iterations;i++) { a=rand()%(n-2)+2; if(is_composite(a,d,n,s)) return 0; } return 1; }
bool t_trie::is_composite (const t_value_type & candidate, bool strict) const { return is_composite(candidate, candidate.begin(), strict); }
SharedRefPtr<ParseResult> DataTypeClassNameParser::parse_with_composite(const std::string& type, const NativeDataTypes& native_types) { Parser parser(type, 0); std::string next; parser.get_next_name(&next); if (!is_composite(next)) { DataType::ConstPtr data_type = parse_one(type, native_types); if (!data_type) { return SharedRefPtr<ParseResult>(); } return SharedRefPtr<ParseResult>(new ParseResult(data_type, is_reversed(next))); } TypeParamsVec sub_class_names; if (!parser.get_type_params(&sub_class_names)) { return SharedRefPtr<ParseResult>(); } if (sub_class_names.empty()) { LOG_ERROR("Expected at least one subclass type for a composite type"); return SharedRefPtr<ParseResult>(); } ParseResult::CollectionMap collections; const std::string& last = sub_class_names.back(); size_t count = sub_class_names.size(); if (is_collection(last)) { count--; Parser collection_parser(last, 0); collection_parser.get_next_name(); NameAndTypeParamsVec params; if (!collection_parser.get_collection_params(¶ms)) { return SharedRefPtr<ParseResult>(); } for (NameAndTypeParamsVec::const_iterator i = params.begin(), end = params.end(); i != end; ++i) { DataType::ConstPtr data_type = parse_one(i->second, native_types); if (!data_type) { return SharedRefPtr<ParseResult>(); } collections[i->first] = data_type; } } DataType::Vec types; ParseResult::ReversedVec reversed; for (size_t i = 0; i < count; ++i) { DataType::ConstPtr data_type = parse_one(sub_class_names[i], native_types); if (!data_type) { return SharedRefPtr<ParseResult>(); } types.push_back(data_type); reversed.push_back(is_reversed(sub_class_names[i])); } return SharedRefPtr<ParseResult>(new ParseResult(true, types, reversed, collections)); }
unsigned sexpr::get_num_children() const { SASSERT(is_composite()); return static_cast<sexpr_composite const *>(this)->m_num_chilren; }
int print_properties_num(longnum num) { printf("%llu:\nprime factors: ", num); print_prime_factors(num); printf("\n"); if ( is_abundant(num) ) printf(" abundant"); if ( is_amicable(num) ) printf(" amicable"); if ( is_apocalyptic_power(num) ) printf(" apocalyptic_power"); if ( is_aspiring(num) ) printf(" aspiring"); if ( is_automorphic(num) ) printf(" automorphic"); if ( is_cake(num) ) printf(" cake"); if ( is_carmichael(num) ) printf(" carmichael"); if ( is_catalan(num) ) printf(" catalan"); if ( is_composite(num) ) printf(" composite"); if ( is_compositorial(num) ) printf(" compositorial"); if ( is_cube(num) ) printf(" cube"); if ( is_deficient(num) ) printf(" deficient"); if ( is_easy_to_remember(num) ) printf(" easy_to_remember"); if ( is_ecci1(num) ) printf(" ecci1"); if ( is_ecci2(num) ) printf(" ecci2"); if ( is_even(num) ) printf(" even"); if ( is_evil(num) ) printf(" evil"); if ( is_factorial(num) ) printf(" factorial"); if ( is_fermat(num) ) printf(" fermat"); if ( is_fibonacci(num) ) printf(" fibonacci"); if ( is_google(num) ) printf(" google"); if ( is_happy(num) ) printf(" happy"); if ( is_hungry(num) ) printf(" hungry"); if ( is_hypotenuse(num) ) printf(" hypotenuse"); if ( is_lazy_caterer(num) ) printf(" lazy_caterer"); if ( is_lucky(num) ) printf(" lucky"); if ( is_mersenne_prime(num) ) printf(" mersenne_prime"); if ( is_mersenne(num) ) printf(" mersenne"); if ( is_narcissistic(num) ) printf(" narcissistic"); if ( is_odd(num) ) printf(" odd"); if ( is_odious(num) ) printf(" odious"); if ( is_palindrome(num) ) printf(" palindrome"); if ( is_palindromic_prime(num) ) printf(" palindromic_prime"); if ( is_parasite(num) ) printf(" parasite"); if ( is_pentagonal(num) ) printf(" pentagonal"); if ( is_perfect(num) ) printf(" perfect"); if ( is_persistent(num) ) printf(" persistent"); if ( is_power_of_2(num) ) printf(" power_of_2"); if ( is_powerful(num) ) printf(" powerful"); if ( is_practical(num) ) printf(" practical"); if ( is_prime(num) ) printf(" prime"); if ( is_primorial(num) ) printf(" primorial"); if ( is_product_perfect(num) ) printf(" product_perfect"); if ( is_pronic(num) ) printf(" pronic"); if ( is_repdigit(num) ) printf(" repdigit"); if ( is_repunit(num) ) printf(" repunit"); if ( is_smith(num) ) printf(" smith"); if ( is_sociable(num) ) printf(" sociable"); if ( is_square_free(num) ) printf(" square_free"); if ( is_square(num) ) printf(" square"); if ( is_tetrahedral(num) ) printf(" tetrahedral"); if ( is_triangular(num) ) printf(" triangular"); if ( is_twin(num) ) printf(" twin"); if ( is_ulam(num) ) printf(" ulam"); if ( is_undulating(num) ) printf(" undulating"); if ( is_untouchable(num) ) printf(" untouchable"); if ( is_vampire(num) ) printf(" vampire"); if ( is_weird(num) ) printf(" weird"); printf("\n\n"); return 0; }