void initrav(node *p) { /* traverse to initialize */ if (p->tip) return; nodeinit(p); initrav(p->next->back); initrav(p->next->next->back); } /* initrav */
void treevaluate() { /* evaluate user-defined tree, iterating branch lengths */ long i; initrav(curtree.start); initrav(curtree.start->back); for (i = 1; i <= smoothings * 4; i++) smooth(curtree.start); evaluate(&curtree); } /* treevaluate */
void treevaluate() { /* evaluate user-defined tree, iterating branch lengths */ long i; double dummy, oldlike; for (i = 1; i <= spp; i++) setuptipf(i, &curtree); initrav(curtree.start); if (curtree.start->back != NULL) { initrav(curtree.start->back); dummy = evaluate(&curtree); do { oldlike = curtree.likelihood; smooth(curtree.start); dummy = evaluate(&curtree); } while (fabs(curtree.likelihood - oldlike) > delta); } dummy = evaluate(&curtree); } /* treevaluate */
void initrav(node *p) { /* traverse to initialize */ node* q; if (p->tip) nodeinit(p->back); else { q = p->next; while ( q != p) { initrav(q->back); q = q->next; } } } /* initrav */
boolean initrav (tree *tr, nodeptr p) { nodeptr q; if (!isTip(p->number, tr->rdta->numsp)) { q = p->next; do { if (! initrav(tr, q->back)) return FALSE; q = q->next; } while (q != p); newviewGeneric(tr, p); } return TRUE; }