By: Kaapo Seppänen <seppanenkaapo@gmail.com>
build the summed function map from selected orientations The summed function map registered one generic integrand per atom and passed the residue-map id and edge signs of each orientation as call arguments. Symbolica binds those constants only while linearizing, so nothing simplified: every orientation call re-expanded most numerator components through fresh function scopes, and common-subexpression elimination had to collapse the result afterwards. Select each entry symbolically with select_orientation, as the summed evaluator does, keep it behind the argument-free alias integrand(i, map_id), and build through new_from_builder. Remove the now unused GammaloopSymbols::integrand. Measured on finite_T_and_mu's 3-loop thermal Mercedes (GL2, 64 orientations): the build linearizes 0.59M instead of 28.9M instructions, takes 2.2 s instead of 22-28 s, and the generation peak falls from 13-15 GB to 1.0 GB. The final program is slightly smaller and about 4% faster per sample; integrand values agree to 2e-14 relative. On the vacuum version of that graph, generated on this branch, the peak falls from 11.8 GB to 1.7 GB and the Symbolica stage from 32 s to 19 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Total
1s
| Time to Start | Worker time | Duration | Time to finish | Idle | |
|---|---|---|---|---|---|
| Config | 0s | 1s | 1s | 1s | 0s |
| Eval | - | - | - | - | - |
| Build | - | - | - | - | - |
| Suite | 0s | 1s | 1s | 1s | 0s |