apgsearch v4.0
Re: apgsearch v4.0
please Calcyman,
Update the seperation
Update the seperation
Re: apgsearch v4.0
Fixed in the latest version of lifelib (ll1.12) for oscillators in LtL rules.Saka wrote:please Calcyman,
Update the seperation [sic]
What do you do with ill crystallographers? Take them to the mono-clinic!
- gmc_nxtman
- Posts: 1150
- Joined: May 26th, 2015, 7:20 pm
Re: apgsearch v4.0
Apologies for dumping more code into this thread, but this happened. This is only a small portion of the errors as it goes over the 60k character limit.calcyman wrote:Amended (run './recompile.sh --update').
Code: Select all
#C everything else up to this point compiled successfully...
gcc main.o includes/sha256.o includes/md5.o includes/happyhttp.o -o apgmera
Undefined symbols for architecture x86_64:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
apg::rule2int(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::comprep(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
authenticate(char const*, char const*) in main.o
apg::hashsoup(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, ...ng<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
apg::lifetree_abstract<unsigned int>::advance(apg::hypernode<unsigned int>, unsigned long long, unsigned long long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
...
...
void std::__1::vector<apg::VTile28*, std::__1::allocator<apg::VTile28*> >::__push_back_slow_path<apg::VTile28*>(apg::VTile28*&&) in main.o
std::__1::vector<apg::bitworld, std::__1::allocator<apg::bitworld> >::vector(unsigned long) in main.o
std::__1::enable_if<(__is_forward_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>::value) && (is_constructible<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::iterator_traits<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>::reference>::value), void>::type std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::assign<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in main.o
std::__1::vector<apg::bitworld, std::__1::allocator<apg::bitworld> >::vector(std::__1::vector<apg::bitworld, std::__1::allocator<apg::bitworld> > const&) in main.o
...
...
"std::__1::__next_prime(unsigned long)", referenced from:
std::__1::__hash_table<std::__1::__hash_value_type<unsigned long long, apg::VTile28>, std::__1::__unordered_map_hasher<unsigned long long, std::__1::__hash_value_type<unsigned long long, apg::VTile28>, std::__1::hash<unsigned long long>, true>, std::__1::__unordered_map_equal<unsigned long long, std::__1::__hash_value_type<unsigned long long, apg::VTile28>, std::__1::equal_to<unsigned long long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long long, apg::VTile28> > >::rehash(unsigned long) in main.o
...std::__1::allocator<char> > > > >, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > > >::rehash(unsigned long) in main.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, ...
...
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in main.o
apg::base_classifier<1>::base_classifier(apg::lifetree_abstract<unsigned int>*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in md5.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)", referenced from:
...
_main in main.o
apg::lifetree<unsigned int, 2>::string_recurse(apg::hypernode<unsigned int>) in main.o
apg::lifetree<unsigned int, 1>::string_recurse(apg::hypernode<unsigned int>) in main.o
apg::base_classifier<1>::base_classifier(apg::lifetree_abstract<unsigned int>*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
happyhttp::Response::ProcessHeaderLine(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in happyhttp.o
...
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)", referenced from:
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main.o
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in main.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::replace(unsigned long, unsigned long, char const*, unsigned long)", referenced from:
apg::replace(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main.o
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::reserve(unsigned long)", referenced from:
apg::bitworld::canonise_orientation(int, int, int, int, int, int, int, int) in main.o
apg::wechslerise(std::__1::vector<apg::bitworld, std::__1::allocator<apg::bitworld> >&, long long*) in main.o
apg::sanirule(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::pattern::operator=(apg::pattern const&) in main.o
classifyAperiodic(apg::pattern) in main.o
_main in main.o
apg::pattern::pattern(apg::pattern const&) in main.o
...
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)", referenced from:
apg::bitworld::canonise_orientation(int, int, int, int, int, int, int, int) in main.o
...tor<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&)", referenced from:
apg::bitworld::canonise_orientation(int, int, int, int, int, int, int, int) in main.o
apg::sanirule(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::lifetree_abstract<unsigned int>::advance(apg::hypernode<unsigned int>, unsigned long long, unsigned long long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::lifetree<unsigned int, 2>::read_macrocell(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in main.o
apg::lifetree<unsigned int, 2>::invstring_recurse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned long long&) in main.o
r, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::sanirule(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
...
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
apg::pattern::disjunction(apg::pattern const&) in main.o
apg::pattern::minus(apg::pattern const&) in main.o
apg::pattern::conjunction(apg::pattern const&) in main.o
apg::pattern::exclusive_disjunction(apg::pattern const&) in main.o
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main.o
apg::pattern::shift(long long, long long) in main.o
apg::pattern::advance(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long long) in main.o
...
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(char)", referenced from:
apg::lifetree<unsigned int, 2>::string_recurse(apg::hypernode<unsigned int>) in main.o
apg::lifetree<unsigned int, 1>::string_recurse(apg::hypernode<unsigned int>) in main.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_istream<char, std::__1::char_traits<char> >&, bool)", referenced from:
std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(unsigned int&)", referenced from:
apg::lifetree<unsigned int, 2>::read_macrocell(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in main.o
apg::lifetree<unsigned int, 1>::read_macrocell(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in main.o
"std::__1::basic_istream<char, std::__1::char_traits<char> >::operator>>(unsigned long long&)", referenced from:
apg::lifetree<unsigned int, 2>::read_macrocell(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in main.o
apg::lifetree<unsigned int, 1>::read_macrocell(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
stabilise3(apg::upattern<apg::VTile28, 28>&) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
stabilise3(apg::upattern<apg::VTile28, 28>&) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in md5.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in md5.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
authenticate(char const*, char const*) in main.o
std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream() in main.o
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
linearlyse(apg::pattern, int, int) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
...
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
linearlyse(apg::pattern, int, int) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned int)", referenced from:
apg::lifetree<unsigned int, 2>::write_macrocell_recurse(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, apg::hypernode<unsigned int>, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::map<std::__1::pair<unsigned int, unsigned int>, unsigned long long, std::__1::less<std::__1::pair<unsigned int, unsigned int> >, std::__1::allocator<std::__1::pair<std::__1::pair<unsigned int, unsigned int> const, unsigned long long> > >*, unsigned long long&) in main.o
apg::lifetree<unsigned int, 1>::write_macrocell_recurse(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, apg::hypernode<unsigned int>, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::map<std::__1::pair<unsigned int, unsigned int>, unsigned long long, std::__1::less<std::__1::pair<unsigned int, unsigned int> >, std::__1::allocator<std::__1::pair<std::__1::pair<unsigned int, unsigned int> const, unsigned long long> > >*, unsigned long long&) in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(long)", referenced from:
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long)", referenced from:
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(long long)", referenced from:
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long long)", referenced from:
apg::lifetree_abstract<unsigned int>::advance(apg::hypernode<unsigned int>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long long, unsigned long long) in main.o
apg::pattern::apgcode() in main.o
apg::lifetree<unsigned int, 2>::write_macrocell_recurse(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, apg::hypernode<unsigned int>, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::map<std::__1::pair<unsigned int, unsigned int>, unsigned long long, std::__1::less<std::__1::pair<unsigned int, unsigned int> >, std::__1::allocator<std::__1::pair<std::__1::pair<unsigned int, unsigned int> const, unsigned long long> > >*, unsigned long long&) in main.o
apg::lifetree<unsigned int, 1>::write_macrocell_recurse(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, apg::hypernode<unsigned int>, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::map<std::__1::pair<unsigned int, unsigned int>, unsigned long long, std::__1::less<std::__1::pair<unsigned int, unsigned int> >, std::__1::allocator<std::__1::pair<std::__1::pair<unsigned int, unsigned int> const, unsigned long long> > >*, unsigned long long&) in main.o
"std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
ProcessedResponse::ProcessedResponse() in main.o
std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in main.o
non-virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in main.o
...
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::sync()", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&)", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::setbuf(char*, long)", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsgetn(char*, long)", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, long)", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::showmanyc()", referenced from:
vtable for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main.o
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::basic_streambuf()", referenced from:
authenticate(char const*, char const*) in main.o
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
linearlyse(apg::pattern, int, int) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in main.o
std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream() in main.o
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
linearlyse(apg::pattern, int, int) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
...
"std::__1::cerr", referenced from:
apg::lifetree_abstract<unsigned int>::advance(apg::hypernode<unsigned int>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned long long, unsigned long long) in main.o
apg::base_classifier<1>::pbbosc(apg::pattern, unsigned long long, unsigned long long) in main.o
apg::lifetree<unsigned int, 2>::_string32(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::lifetree<unsigned int, 2>::read_macrocell(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::map<unsigned long long, unsigned long long, std::__1::less<unsigned long long>, std::__1::allocator<std::__1::pair<unsigned long long const, unsigned long long> > >*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in main.o
apg::kivtable<apg::nicearray<unsigned long long, 8>, unsigned int, apg::lifemeta<unsigned int> >::getfreenode() in main.o
apg::kivtable<apg::nicearray<unsigned long long, 8>, unsigned int, apg::lifemeta<unsigned int> >::resize_hash(unsigned long long) in main.o
apg::kivtable<apg::nicearray<unsigned int, 4>, unsigned int, apg::lifemeta<unsigned int> >::init(unsigned long long) in main.o
...
"std::__1::cout", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
stabilise3(apg::upattern<apg::VTile28, 28>&) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::ctype<char>::id", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
stabilise3(apg::upattern<apg::VTile28, 28>&) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::locale::locale(std::__1::locale const&)", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main.o
"std::__1::locale::~locale()", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
stabilise3(apg::upattern<apg::VTile28, 28>&) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::codecvt<char, char, __mbstate_t>::id", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main.o
"std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in md5.o
"std::__1::ios_base::init(void*)", referenced from:
authenticate(char const*, char const*) in main.o
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
linearlyse(apg::pattern, int, int) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
verifySearch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
runSearch(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, bool) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
...
"std::__1::ios_base::clear(unsigned int)", referenced from:
std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main.o
SoupSearcher::submitResults(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long long, int, bool) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in md5.o
"std::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()", referenced from:
catagolueRequest(char const*, char const*) in main.o
authenticate(char const*, char const*) in main.o
std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream() in main.o
std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream() in main.o
reseed(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
linearlyse(apg::pattern, int, int) in main.o
obtainWork(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
...
"std::bad_cast::bad_cast()", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main.o
"std::bad_cast::~bad_cast()", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main.o
"std::terminate()", referenced from:
___clang_call_terminate in main.o
___clang_call_terminate in md5.o
___clang_call_terminate in happyhttp.o
"typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char> >", referenced from:
construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"typeinfo for std::__1::basic_ostream<char, std::__1::char_traits<char> >", referenced from:
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
typeinfo for std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
typeinfo for std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
"typeinfo for std::__1::basic_iostream<char, std::__1::char_traits<char> >", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
typeinfo for std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char> >", referenced from:
typeinfo for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main.o
"typeinfo for std::bad_cast", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main.o
"vtable for __cxxabiv1::__class_type_info", referenced from:
typeinfo for happyhttp::Wobbly in main.o
typeinfo for apg::lifetree_abstract<unsigned int> in main.o
typeinfo for happyhttp::Wobbly in happyhttp.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for __cxxabiv1::__si_class_type_info", referenced from:
typeinfo for std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
typeinfo for std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
typeinfo for std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
typeinfo for apg::lifetree<unsigned int, 2> in main.o
typeinfo for apg::lifetree<unsigned int, 1> in main.o
typeinfo for std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main.o
...
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"non-virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"non-virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
"virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()", referenced from:
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
construction vtable for std::__1::basic_ostream<char, std::__1::char_traits<char> >-in-std::__1::basic_ofstream<char, std::__1::char_traits<char> > in main.o
"virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()", referenced from:
construction vtable for std::__1::basic_iostream<char, std::__1::char_traits<char> >-in-std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > in main.o
"operator delete[](void*)", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main.o
"operator delete(void*)", referenced from:
apg::rle2vec(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::_shift_left(apg::bitworld const&, unsigned int) in main.o
apg::_shift_right(apg::bitworld const&, unsigned int) in main.o
apg::_shift_down(apg::bitworld const&, unsigned int) in main.o
apg::_shift_up(apg::bitworld const&, unsigned int) in main.o
apg::bitworld::getbbox(long long*) in main.o
apg::bitworld::population() in main.o
...
"operator new[](unsigned long)", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in main.o
"operator new(unsigned long)", referenced from:
apg::bitworld::setcell(unsigned long long, unsigned long long, bool) in main.o
apg::_shift_left(apg::bitworld const&, unsigned int) in main.o
std::__1::map<std::__1::pair<int, int>, unsigned long long, std::__1::less<std::__1::pair<int, int> >, std::__1::allocator<std::__1::pair<std::__1::pair<int, int> const, unsigned long long> > >::operator[](std::__1::pair<int, int> const&) in main.o
apg::_shift_right(apg::bitworld const&, unsigned int) in main.o
apg::_shift_down(apg::bitworld const&, unsigned int) in main.o
apg::_shift_up(apg::bitworld const&, unsigned int) in main.o
apg::bleed(apg::bitworld const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
...
"___cxa_allocate_exception", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main.o
happyhttp::BailOnSocketError(char const*) in happyhttp.o
happyhttp::Connection::connect() in happyhttp.o
happyhttp::Connection::putrequest(char const*, char const*) in happyhttp.o
...
"___cxa_begin_catch", referenced from:
catagolueRequest(char const*, char const*) in main.o
___clang_call_terminate in main.o
std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main.o
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in md5.o
...
"___cxa_end_catch", referenced from:
catagolueRequest(char const*, char const*) in main.o
std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main.o
std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in main.o
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in md5.o
"___cxa_throw", referenced from:
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main.o
std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main.o
happyhttp::BailOnSocketError(char const*) in happyhttp.o
happyhttp::Connection::connect() in happyhttp.o
happyhttp::Connection::putrequest(char const*, char const*) in happyhttp.o
...
"___gxx_personality_v0", referenced from:
apg::rle2vec(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::_shift_left(apg::bitworld const&, unsigned int) in main.o
apg::_shift_right(apg::bitworld const&, unsigned int) in main.o
apg::_shift_down(apg::bitworld const&, unsigned int) in main.o
apg::_shift_up(apg::bitworld const&, unsigned int) in main.o
apg::bleed(apg::bitworld const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.o
apg::shift_bitworld(apg::bitworld const&, long long, long long) in main.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [apgmera] Error 1
Code: Select all
Undefined symbols for architecture x86_64:
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [apgmera] Error 1
Re: apgsearch v4.0
Why are you trying to link using gcc instead of g++? The top line of the makefile should say g++, and it should be invoked at every step of the compilation (including linkage).gmc_nxtman wrote:Apologies for dumping more code into this thread, but this happened. This is only a small portion of the errors as it goes over the 60k character limit.calcyman wrote:Amended (run './recompile.sh --update').
What do you do with ill crystallographers? Take them to the mono-clinic!
- gmc_nxtman
- Posts: 1150
- Joined: May 26th, 2015, 7:20 pm
Re: apgsearch v4.0
Because I'm a complete noob with anything related to compilation/installation. (This has been and will be demonstrated many times during my time on conwaylife.com forums)
I tried a fresh install of both gcc and OpenMPI and replaced "g++" at the beginning of the makefile with "g++-7.1.0" (my version) as implied in the readme but the makefile doesn't seem to find that:
I tried a fresh install of both gcc and OpenMPI and replaced "g++" at the beginning of the makefile with "g++-7.1.0" (my version) as implied in the readme but the makefile doesn't seem to find that:
Code: Select all
$ ./recompile.sh --fopenmp
Skipping updates; use --update to update apgmera automatically.
Ensuring lifelib is up-to-date...
Rule unspecified; assuming b3s23.
Symmetry unspecified; assuming C1.
Configuring rule b3s23; symmetry C1
Valid rulestring: b3s23
Rule integer: 6152
Rule circuit: [-131-124-450-014-672]
Rule integer: 6152
Rule circuit: [-131-124-450-014-672]
Rule integer: 6152
Rule circuit: [-131-124-450-014-672]
Valid symmetry: C1
Success!
g++-7.1.0 -c -Wall -O3 -march=native --std=c++11 main.cpp -o main.o
make: g++-7.1.0: No such file or directory
make: *** [main.o] Error 1
Re: apgsearch v4.0
Did you try not editing the plain "g++" in the makefile? I haven't looked for the readme, but it doesn't seem like it would be normal to have to call a compiler by a different name every time you upgrade +.0.0.1. And that minus sign in front of the 7 seems unusual too.gmc_nxtman wrote:I tried a fresh install of both gcc and OpenMPI and replaced "g++" at the beginning of the makefile with "g++-7.1.0" (my version) as implied in the readme but the makefile doesn't seem to find that...
Not that I'm saying I know anything, mind you. I still haven't built 4.0 myself.
- gmc_nxtman
- Posts: 1150
- Joined: May 26th, 2015, 7:20 pm
Re: apgsearch v4.0
I tried that before and it simply doesn't compile with OpenMP:dvgrn wrote:Did you try not editing the plain "g++" in the makefile? I haven't looked for the readme, but it doesn't seem like it would be normal to have to call a compiler by a different name every time you upgrade +.0.0.1. And that minus sign in front of the 7 seems unusual too.
Code: Select all
Warning: apgluxe has not been compiled with OpenMP support.
Re: apgsearch v4.0
In that case, it's probably easier to leave the OpenMP support out of apgluxe, and run multiple instances whenever you want to use multiple cores.gmc_nxtman wrote:Because I'm a complete noob with anything related to compilation/installation. (This has been and will be demonstrated many times during my time on conwaylife.com forums)
You'll need to add the directory containing g++-7.1.0 to your $PATH environment variable. Or alternatively include the fully qualified path at the top of the file, e.g.: CC='/full/path/to/executable/g++-7.1.0'I tried a fresh install of both gcc and OpenMPI and replaced "g++" at the beginning of the makefile with "g++-7.1.0" (my version) as implied in the readme but the makefile doesn't seem to find that:
What do you do with ill crystallographers? Take them to the mono-clinic!
- Apple Bottom
- Posts: 1034
- Joined: July 27th, 2015, 2:06 pm
- Contact:
Re: apgsearch v4.0
Something weird's going on with chaotic growth pattern detection -- two zz_REPLICATORs showed up in 2x128, supposedly in the following soups:
There's also a PATHOLOGICAL:
None of these appear to be what apgluxe thinks they are.
Code: Select all
x = 128, y = 2, rule = B3/S23
bobobbobbbbbobobboobobbooboooboooboboooobobooobobbobobboooooooobobbbbobooooobbboobboobobboobobbboboboboobbobbbooobbbooooobbbbbob$
oooooooboobobbbbobobboooboobbbbboobbbbbooboboooooooobbboobbboboboobbobooboobbooobbbbobobboboobboobobbbobobbbbbboooobobooobooobbb!
Code: Select all
x = 128, y = 2, rule = B3/S23
boobooobbobooobboobbobboobbbbboooboooobbbbbbbbobbobooobobbbobobobbbobobbobbbbobobooobbbbbobbbbbbbbbbbbbbbooboobboboobbbooobobobb$
bbobbobbbbbooobooboobbobbbbobbobbobbooboooobboboobbbbbbboooooooobbobbooboobobobobooobboboboobobbooobboobobooobobbooooooobbbboobo!
Code: Select all
x = 128, y = 2, rule = B3/S23
bobbobbbbboboobobooooboobbooboboobobboobbboooooobbooobbboboobbobbbobbbbobobbbbbbboobobooobobobbboooobobobbobboooobobbobbbbboobbo$
oobobbooooobbobobbbobbobooobbboooboooboobobobobbooobobbboobooooobbbboooobbbbooooobbooobobobbbobbbbobbobboobobbbboboobobbbooboobo!
If you speak, your speech must be better than your silence would have been. — Arabian proverb
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Re: apgsearch v4.0
Whoops. This is what happens when you write:Apple Bottom wrote:Something weird's going on with chaotic growth pattern detection -- two zz_REPLICATORs showed up in 2x128, supposedly in the following soups:
None of these appear to be what apgluxe thinks they are.
Code: Select all
pat.advance(10000, 0, 0);
Code: Select all
pat.advance(0, 0, 10000);
What do you do with ill crystallographers? Take them to the mono-clinic!
- Apple Bottom
- Posts: 1034
- Joined: July 27th, 2015, 2:06 pm
- Contact:
Re: apgsearch v4.0
Done, thanks for the quick fix!calcyman wrote:Fixed in version v4.13; please upgrade immediately.
If you speak, your speech must be better than your silence would have been. — Arabian proverb
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Re: apgsearch v4.0
Could apgsearch be made able to search certain explosive rules, maybe by deleting patterns that exceed a certain bounding box or ignoring soups that last more than a set amount of generations?
Help wanted: How can we accurately notate any 1D replicator?
- Apple Bottom
- Posts: 1034
- Joined: July 27th, 2015, 2:06 pm
- Contact:
Re: apgsearch v4.0
Calcyman recently asked people to not submit hauls too often so in order to ease the load on Catagolue. In order to make it easier to spin up searchers and shut them down gracefully without losing hours' worth of results, I've ported the "allow-the-user-to-hit-q-to-stop-searching-and-submit-partial-results" patch to apgluxe:
Apply this the usual way:
and then use recompile.sh as usual. Automatic updates to lifelib should not be affected, though you may get conflicts if pulling in a newer version of apgluxe itself from git, so I recommend keeping a "clean" copy checked out and working with a copy (use e.g. `cp -a´).
With the patched version, when you hit q, apgluxe will submit partial results and stop searching, the same way that apgsearch 1.x does. (This only applies to regular searches, not parallel searches using OpenMP, on the assumption that if you use OpenMP rather than running individual searcher instances you won't care so much about being able to adjust the number of active searchers anyway.) If the submission fails, it will quit anyway, so you will lose your results. Occasionally hitting q doesn't work, I have no idea why (non-blocking terminal input is a bit of a thorny issue anyway, and C++, by default, provides no means to do this at all).
But most of the time it works as intended, so you can safely increase your haul sizes (and go easier on Catagolue in the process!) and run as many searchers as your computer has (hyperthreading) cores -- and if you need a core or two for something else, you can shut down searcher instances immediately without losing any of the work they've accumulated.
Code: Select all
diff -ru apgmera/includes/searching.h allowquit-7a75/includes/searching.h
--- apgmera/includes/searching.h 2017-08-20 22:14:28.002363900 +0200
+++ allowquit-7a75/includes/searching.h 2017-08-23 22:08:40.334331800 +0200
@@ -1,8 +1,27 @@
+#include <stdio.h>
+#include <sys/select.h>
+
+// determine whether there's a keystroke waiting
+int keyWaiting() {
+ struct timeval tv;
+ fd_set fds;
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+
+ FD_ZERO(&fds);
+ FD_SET(STDIN_FILENO, &fds); // STDIN_FILENO is 0
+
+ select(STDIN_FILENO+1, &fds, NULL, NULL, &tv);
+
+ return FD_ISSET(STDIN_FILENO, &fds);
+}
+
#pragma once
#ifdef USE_OPEN_MP
-void parallelSearch(int n, int m, std::string payoshaKey, std::string seed, int local_log) {
+bool parallelSearch(int n, int m, std::string payoshaKey, std::string seed, int local_log) {
SoupSearcher globalSoup;
@@ -54,12 +73,14 @@
}
std::cout << "----------------------------------------------------------------------" << std::endl;
}
+
+ return false;
}
#endif
-void runSearch(int n, std::string payoshaKey, std::string seed, int local_log, bool testing) {
+bool runSearch(int n, std::string payoshaKey, std::string seed, int local_log, bool testing) {
SoupSearcher soup;
apg::lifetree<uint32_t, BITPLANES> lt(400);
@@ -73,8 +94,9 @@
int64_t lasti = 0;
bool finishedSearch = false;
+ bool quitByUser = false;
- while (finishedSearch == false) {
+ while ((finishedSearch == false) && (quitByUser == false)) {
std::ostringstream ss;
ss << i;
@@ -89,9 +111,16 @@
std::cout << i << " soups completed (" << ((int) ((i - lasti) / elapsed)) << " soups per second)." << std::endl;
lasti = i;
start = clock();
+
+ if(keyWaiting()) {
+ char c = fgetc(stdin);
+ if ((c == 'q') || (c == 'Q'))
+ quitByUser = true;
+ }
+
}
- if (i % n == 0) {
+ if ((i % n == 0) || quitByUser) {
std::cout << "----------------------------------------------------------------------" << std::endl;
std::cout << i << " soups completed." << std::endl;
std::cout << "Attempting to contact payosha256." << std::endl;
@@ -108,6 +137,8 @@
}
}
+
+ return quitByUser;
}
diff -ru apgmera/main.cpp allowquit-7a75/main.cpp
--- apgmera/main.cpp 2017-08-23 20:30:17.385160100 +0200
+++ allowquit-7a75/main.cpp 2017-08-24 11:49:32.570166800 +0200
@@ -7,6 +7,7 @@
#include <ctime>
#include <cmath>
#include <unistd.h>
+#include <termios.h>
#ifdef USE_OPEN_MP
#include <omp.h>
@@ -41,7 +42,9 @@
int local_log = 0;
bool testing = false;
int nullargs = 1;
-
+ bool quitByUser = false;
+ struct termios ttystate;
+
// Extract options:
for (int i = 1; i < argc - 1; i++) {
if (strcmp(argv[i], "-k") == 0) {
@@ -95,6 +98,12 @@
if (verifications < 0) {
verifications = (parallelisation <= 4) ? 3 : 0;
}
+
+ // turn on non-blocking reads
+ tcgetattr(STDIN_FILENO, &ttystate);
+ ttystate.c_lflag &= ~ICANON;
+ ttystate.c_cc[VMIN] = 1;
+ tcsetattr(STDIN_FILENO, TCSANOW, &ttystate);
std::cout << "\nGreetings, this is \033[1;33mapgluxe " << APG_VERSION;
std::cout << "\033[0m, configured for \033[1;34m" << RULESTRING << "/";
@@ -106,7 +115,7 @@
std::cout << std::endl;
- while (true) {
+ while (!quitByUser) {
if (verifications > 0) {
std::cout << "Peer-reviewing hauls:\n" << std::endl;
// Verify some hauls:
@@ -120,17 +129,22 @@
std::cout << "Using seed " << seed << std::endl;
if (parallelisation > 0) {
#ifdef USE_OPEN_MP
- parallelSearch(soups_per_haul, parallelisation, payoshaKey, seed, local_log);
+ quitByUser = parallelSearch(soups_per_haul, parallelisation, payoshaKey, seed, local_log);
#else
- runSearch(soups_per_haul, payoshaKey, seed, local_log, false);
+ quitByUser = runSearch(soups_per_haul, payoshaKey, seed, local_log, false);
#endif
} else {
- runSearch(soups_per_haul, payoshaKey, seed, local_log, testing);
+ quitByUser = runSearch(soups_per_haul, payoshaKey, seed, local_log, testing);
}
seed = reseed(seed);
if (testing) { break; }
}
- return 0;
+ // turn on blocking reads
+ tcgetattr(STDIN_FILENO, &ttystate);
+ ttystate.c_lflag |= ICANON;
+ tcsetattr(STDIN_FILENO, TCSANOW, &ttystate);
+
+ return quitByUser ? 1 : 0;
}
Code: Select all
$ cd apgmera
$ patch -p1 <../apgluxe-7a75-allowquit.patch
patching file includes/searching.h
patching file main.cpp
$
With the patched version, when you hit q, apgluxe will submit partial results and stop searching, the same way that apgsearch 1.x does. (This only applies to regular searches, not parallel searches using OpenMP, on the assumption that if you use OpenMP rather than running individual searcher instances you won't care so much about being able to adjust the number of active searchers anyway.) If the submission fails, it will quit anyway, so you will lose your results. Occasionally hitting q doesn't work, I have no idea why (non-blocking terminal input is a bit of a thorny issue anyway, and C++, by default, provides no means to do this at all).
But most of the time it works as intended, so you can safely increase your haul sizes (and go easier on Catagolue in the process!) and run as many searchers as your computer has (hyperthreading) cores -- and if you need a core or two for something else, you can shut down searcher instances immediately without losing any of the work they've accumulated.
If you speak, your speech must be better than your silence would have been. — Arabian proverb
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Re: apgsearch v4.0
Thank you very much! Tested on Linux and committed to the repository:Apple Bottom wrote:Calcyman recently asked people to not submit hauls too often so in order to ease the load on Catagolue. In order to make it easier to spin up searchers and shut them down gracefully without losing hours' worth of results, I've ported the "allow-the-user-to-hit-q-to-stop-searching-and-submit-partial-results" patch to apgluxe:
https://gitlab.com/apgoucher/apgmera/co ... 9a3aeecefe
Can someone verify that this works correctly on Mac OS X?
I intend to add support for power-of-two torus sizes in the future, which will allow searching rules such as B37/S23. This will require quite a few significant changes to lifelib, though, to allow toroidal patterns.muzik wrote:Could apgsearch be made able to search certain explosive rules, maybe by deleting patterns that exceed a certain bounding box or ignoring soups that last more than a set amount of generations?
What do you do with ill crystallographers? Take them to the mono-clinic!
Re: apgsearch v4.0
Minor, extremely insignificant issue that doesn't really affect anything: pressing q still returns the "Connection was successful; starting new search..." message, where it would make a lot more sense for it to say something along the lines of "Connection was successful; stopping search...".
Let's say that a future version of apgsearch has the ability to search a new type of symmetry, which resembles two 1x256 soups stacked on top of each other to form a D2_+2 symmetric pattern.
Note how an explosive pattern pops up on the left. What I'm thinking is that this object would be recognised as oscillating with a higher period than, say, 10000, and would be automatically deleted from the plane. Searching for the c/5648 spaceship on a torus would be fairly problematic, since large random soups tend to give way to large masses of chaos, and even if this symmetry could be searched on a torus, the ship would likely crash into another object and explode (granted this would also be fairly likely on an infinite plane, but if the search took place on a torus this would mean that absolutely no other objects must be there at all, whilst on an infinite plane it can just escape off the edge).
Would searching a rule in this way be plausible at all?
There's a few different types of explosions, though. Imagine I wanted to search for this legendary beast:calcyman wrote:I intend to add support for power-of-two torus sizes in the future, which will allow searching rules such as B37/S23. This will require quite a few significant changes to lifelib, though, to allow toroidal patterns.muzik wrote:Could apgsearch be made able to search certain explosive rules, maybe by deleting patterns that exceed a certain bounding box or ignoring soups that last more than a set amount of generations?
Code: Select all
x = 12, y = 14, rule = B3457/S4568
4bo2bo$4b4o$2b8o$2b2ob2ob2o$obobo2bobobo$2ob6ob2o$ob3o2b3obo$3ob4ob3o$
2ob6ob2o$b3o4b3o$b3o4b3o$3b2o2b2o$3bo4bo$5b2o!
Code: Select all
x = 255, y = 2, rule = B3457/S4568
o2bo2b2o3b8o2bobob2ob4obobob5ob6o3b3o4b3o3b2ob2obobo3bob3obo3b3o2bo4b
4ob3obo2b4o2bo2b2ob2ob3o3bob2ob3ob2obobob2ob2obobob3o2b2o4b6o2b3ob2o4b
o2b4ob5o2b3o2b2ob2o4b4obo4bo3b6ob2ob4o2b2ob2obobobo$o2bo2b2o3b8o2bobob
2ob4obobob5ob6o3b3o4b3o3b2ob2obobo3bob3obo3b3o2bo4b4ob3obo2b4o2bo2b2ob
2ob3o3bob2ob3ob2obobob2ob2obobob3o2b2o4b6o2b3ob2o4bo2b4ob5o2b3o2b2ob2o
4b4obo4bo3b6ob2ob4o2b2ob2obobobo!
Would searching a rule in this way be plausible at all?
Help wanted: How can we accurately notate any 1D replicator?
- Apple Bottom
- Posts: 1034
- Joined: July 27th, 2015, 2:06 pm
- Contact:
Re: apgsearch v4.0
True, that's a bit confusing. Just a cosmetic issue, though.muzik wrote:Minor, extremely insignificant issue that doesn't really affect anything: pressing q still returns the "Connection was successful; starting new search..." message, where it would make a lot more sense for it to say something along the lines of "Connection was successful; stopping search...".
I've actually been thinking it would be nice to implement both "q" (lower-case) for "attempt to submit partial haul and quit, but continue searching if not successful", and "Q" (upper-case) for "attempt to submit partial haul, then quit no matter what" (the current behavior).
This would be useful for when your Internet connection is unstable, and quitting isn't all that urgent -- you could then just keep on hitting "q" until the submission succeeds. If you needed to quit RIGHT NOW, there'd still be "Q" (or Ctrl-C).
Now, this said--
Two questions.
One -- since apgluxe supports pluggable backends, is there a way to ask it to use a different backend? The reason I'm asking is that searching some (?) higher symmetries of B3/S23 is quite a bit slower compared to 3.x (e.g. D8_1 gets ~2.5k soups/sec in 4.14-ll1.12, compared to ~6.2k in 3.28), and I'm wondering why, or whether there's anything I can do to speed it up.
Two -- apgluxe also occasionally produces messages such as the following:
Should I be concerned? (Also, looking at lifelib, this is produced by a routine checking whether an oscillator is a pseudo-oscillator. Should this even be called for still lifes? I suppose they are technically period-1 oscillators...!)apgluxe wrote: xs120_y2gg39e0e93ggzo80g6kk303303303kk6g08ozol5d0ddy5dd0d5lozy0319e0mm0mm0e913zy46430346 would take infeasibly long to brute-force separate.
If you speak, your speech must be better than your silence would have been. — Arabian proverb
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Re: apgsearch v4.0
The reason for 3.x being faster is the object detection code; v4.x is genuinely faster at running patterns (I think by about 8% on Lidka). I'm ruminating over how to accelerate object clustering, but haven't yet implemented it.
What do you do with ill crystallographers? Take them to the mono-clinic!
Re: apgsearch v4.0
So does this mean that 4.x is faster at searching b3s23/C1 overall?
Help wanted: How can we accurately notate any 1D replicator?
Re: apgsearch v4.0
Possible pseudosymmetry suggestion: "inflated" soups, where each cell takes up a 2x2 space.
This could be especially useful for rules which simulate margolus rules with 2x2 blocks (although I don't see much evil in searching rules without this property using this pseudosymmetry). It could possibly also be made subject to the additional symmetries and size rectangle (8x32, 4x64, 2x128) options the 1x1-cell soups face, obviously scaled up for it to make sense.
Code: Select all
x = 75, y = 32, rule = B3/S5
o5b4o2bo30b2o10b8o4b2o$o3bo9b2o27b2o10b8o4b2o$o4b3o4b2obo27b2o6b2o18b
4o$2bo2b2o2bo2b4o27b2o6b2o18b4o$obobo2b2o3bo2bo27b2o8b6o8b4o2b2o$3obob
2ob5o29b2o8b6o8b4o2b2o$3bobo9bo31b2o4b4o4b2o4b8o$o4bo2bob5o32b2o4b4o4b
2o4b8o$3b2obob3o4bo27b2o2b2o2b2o4b4o6b2o4b2o$obo2b2o2b2o4bo27b2o2b2o2b
2o4b4o6b2o4b2o$bobo2bob2obob2o28b6o2b2o2b4o2b10o$2bob2obo2bob3o28b6o2b
2o2b4o2b10o$obob2o4bobo2bo33b2o2b2o18b2o$b3o2b10o33b2o2b2o18b2o$2bo7bo
3bo28b2o8b2o4b2o2b10o$b2o6b6o28b2o8b2o4b2o2b10o$49b4o2b2o2b6o8b2o$49b
4o2b2o2b6o8b2o$43b2o2b2o4b4o4b4o8b2o$43b2o2b2o4b4o4b4o8b2o$45b2o2b2o4b
2o2b4o2b2o2b4o$45b2o2b2o4b2o2b4o2b2o2b4o$47b2o2b4o2b2o4b2o2b6o$47b2o2b
4o2b2o4b2o2b6o$43b2o2b2o2b4o8b2o2b2o4b2o$43b2o2b2o2b4o8b2o2b2o4b2o$45b
6o4b20o$45b6o4b20o$47b2o14b2o6b2o$47b2o14b2o6b2o$45b4o12b12o$45b4o12b
12o!
Help wanted: How can we accurately notate any 1D replicator?
- Apple Bottom
- Posts: 1034
- Joined: July 27th, 2015, 2:06 pm
- Contact:
Re: apgsearch v4.0
I like that idea. Haven't looked at the 4.x code yet, but it didn't take long to implement this in apgsearch 1.x (well, 0.54+0.x).muzik wrote:Possible pseudosymmetry suggestion: "inflated" soups, where each cell takes up a 2x2 space.
This could be especially useful for rules which simulate margolus rules with 2x2 blocks (although I don't see much evil in searching rules without this property using this pseudosymmetry). It could possibly also be made subject to the additional symmetries and size rectangle (8x32, 4x64, 2x128) options the 1x1-cell soups face, obviously scaled up for it to make sense.
Any brown paper bag bugs, typos and thinkos are mine.
If you speak, your speech must be better than your silence would have been. — Arabian proverb
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Re: apgsearch v4.0
Well, here's hoping it gets added officially to apgluxe.
On the topic of symmetries: will the SS symmetry ever be officially implemented? The only problem I can see with it is the fact that it's obviously going to fail in rules where the glider isn't a spaceship, so maybe the rule should default to b3s23 if the symmetry is specified.
Also, how about these 256x256 and 16x32 symmetries AB has been trying out, and WW's 32x32?
On the topic of symmetries: will the SS symmetry ever be officially implemented? The only problem I can see with it is the fact that it's obviously going to fail in rules where the glider isn't a spaceship, so maybe the rule should default to b3s23 if the symmetry is specified.
Also, how about these 256x256 and 16x32 symmetries AB has been trying out, and WW's 32x32?
Help wanted: How can we accurately notate any 1D replicator?
- Apple Bottom
- Posts: 1034
- Joined: July 27th, 2015, 2:06 pm
- Contact:
Re: apgsearch v4.0
Unlikely to be implemented in apgluxe, I'd wager, unless you want to do it yourself, but 0.54+0.32i-ab2 supports my earlier "test" symmetries, so you can use that to search those if you're so inclined.muzik wrote:Also, how about these 256x256 and 16x32 symmetries AB has been trying out, and WW's 32x32?
wwei23's 32x32 isn't supported by my patched version, but that symmetry is just four C1 soups glued together, so it would be very easy to implement -- mind, if you do so I'd suggest using a different name for the symmetry, as "32x32" sounds too official, and there's probably better ways of generating 32x32 soups anyway.
(If you want to search *actual* asymmetric 32x32 soups, then -- absent a suitable hash function that will produce 1024 bit hashes; unfortunately there isn't an SHA-1024 -- I'd just hash the same input string several times, with suffixes appended:
Code: Select all
s = hashlib.sha256(instring).digest() + hashlib.sha256(instring + "_2").digest() + hashlib.sha256(instring + "_3").digest() + ...
If you speak, your speech must be better than your silence would have been. — Arabian proverb
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Catagolue: Apple Bottom • Life Wiki: Apple Bottom • Twitter: @_AppleBottom_
Proud member of the Pattern Raiders!
Re: apgsearch v4.0
Regarding how best to implement non-totalistic rules, I have two possible algorithms:
Ignoring memory accesses (which we can't in reality), I get something like the following:
I estimate it will be slightly faster than QuickLife, and maybe half the speed of vlife.
The inflated 2x2 symmetry, on the other hand, is something I'll consider adding to apgluxe. (For rules without the 2x2 property, it will double up as a 32x32 asymmetric seed.)
- A low-memory SSSE3-based solution, similar to apgluxe's LtL algorithm, but with a 64-byte lookup table;
- A high-memory lookup-table solution using a 16-megabyte lookup table to return the 4-by-2 interior of a 6-by-4 block of cells (computing 8 cells simultaneously in one instruction), similar to QuickLife;
Ignoring memory accesses (which we can't in reality), I get something like the following:
- 28 instructions (12 for creating the byte of neighbours, and 16 for evaluating the rule) per 16 cells (SSSE3) or per 32 cells (AVX2);
- A few instructions per 8 cells (independent of instruction set).
I estimate it will be slightly faster than QuickLife, and maybe half the speed of vlife.
It won't ever be implemented in apgluxe. That symmetry was an experiment to dump HoneySearch results to Catagolue; however, I reached the decision that running HS for two days on a 72-physical-core machine with hundreds of gigabytes of memory and saving results to disk was the way to go. There was then several additional hours of post-processing and filtering, culminating in the 'data' directory of slmake (which is what Dave Greene has been using for his latest self-constructing projects).muzik wrote:On the topic of symmetries: will the SS symmetry ever be officially implemented? The only problem I can see with it is the fact that it's obviously going to fail in rules where the glider isn't a spaceship, so maybe the rule should default to b3s23 if the symmetry is specified.
The inflated 2x2 symmetry, on the other hand, is something I'll consider adding to apgluxe. (For rules without the 2x2 property, it will double up as a 32x32 asymmetric seed.)
It will be, once I enhance the code for collecting objects.muzik wrote:So does this mean that 4.x is faster at searching b3s23/C1 overall?
What do you do with ill crystallographers? Take them to the mono-clinic!
Re: apgsearch v4.0
Will C1 be the only such symmetry which can be inflated, or will it be applicable to all existing symmetries? I would quite like an inflated 1x256 symmetry at the very least.
Help wanted: How can we accurately notate any 1D replicator?
- praosylen
- Posts: 2443
- Joined: September 13th, 2014, 5:36 pm
- Location: Pembina University, Home of the Gliders
- Contact:
Re: apgsearch v4.0
Inflated 1x256 is worthless. You can get the same results just by running all 2x(2n) solid blocks of cells from n=1–256, which can be achieved using a simple script.muzik wrote:I would quite like an inflated 1x256 symmetry at the very least.
former username: A for Awesome
praosylen#5847 (Discord)
The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...
praosylen#5847 (Discord)
The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...