4ff7c361

By: Kaapo Seppänen <seppanenkaapo@gmail.com>

specialize only reachable aliases per orientation

The iterative evaluator selected every alias body for every orientation
and then called AliasedAtom::prune, which is quadratic in the alias
count; the summed function map matched one literal pattern per alias at
every node. With the shared scalar factor aliases this dominated
generation. Reuse the reachability walk of select_orientation for
iterative outputs, and look alias calls up by handle data.

Measured on finite_T_and_mu's 3-loop thermal Mercedes (GL2, 13873
aliases): the iterative evaluator took 814 s (19 s before the shared
factors), and "symbolica eval" goes from 14m33s to 43 s. Integrand
values of all evaluator methods are bit-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>