Twentieth 20th Full Calculation
After several full calculation iterations, this particular calculation chain will settle into a stable state. For example:
<calcChain xmlns="…"> <c r="B2" i="1"/> <c r="B3" s="1"/> <c r="B4" s="1"/> <c r="B5" s="1"/> <c r="B6" s="1"/> <c r="B7" s="1"/> <c r="B8" s="1"/> <c r="B9" s="1"/> <c r="B10" s="1"/> <c r="A2"/> <c r="A3" s="1"/> <c r="A4" s="1"/> <c r="A5" s="1"/> <c r="A6" s="1"/> <c r="A7" s="1"/> <c r="A8" s="1"/> <c r="A9" s="1"/> <c r="A10" s="1"/> <c r="C10" l="1"/> <c r="D10" s="1"/> </calcChain>
The difference introduced here is the concept of a dependency-level attribute @l
. This flag indicates that all chain and child chain concurrent calculation must be completed (and all cells will have newly calculated values) before proceeding with calculation.
In this example, cells C10
and D10
are marked to exist in a new and separate dependency level from the cells A2:A10
and B2:B10
. This makes sense given how the dependencies for these formulas are set up: A2:A10
can be calculated concurrently with B2:B10
because they do not depend on each other. A2:A10
exists as one calculation chain, and B2:B10
exist as another parallel calculation chain. However, C10
and D10
are both dependent on calculated results from the two parallel chains, and so can only be calculated after the first set of parallel calculations are completed.
Dependency-Level @l
flags indicate where calculation must wait for all concurrent threads to complete before continuing with calculation