First Full Calculation

Below is how the calculation chain will look after changing the values of A1 and B1, or after forcing the application to perform a full calculation on the entire set of formulas:

<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="C10" s="1"/>
  <c r="D10" 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"/>
</calcChain>

Now the order of calculation seems more in line with the way in which the formulas depend on each other: cells B2:B10 are calculated in order, and cells A2:A10 are calculated in order.

Additionally, the application has discovered that the formulas in column B can be calculated in parallel with the formulas in column A (i.e., they don't depend on each other). This is evidenced by the presence of @s="1" on the cell element for cells B2:B10, indicating that B2:10 are part of a "child-chain" starting with B2. Note also that C10 and B10 are included in that child chain, even though these formulas do, in fact, depend on calculated values from column A. This is due to the multi-threaded nature of the calculation engine. Currently the chain on which C10 and D10 reside can be calculated concurrently with the chain on which A2:A10 reside because by the time C10 and D10 need to be calculated (e.g., by CPU #1), A10 has already been calculated (e.g., by CPU #2). In some future calculation, the timing may be different, and at that time, the application will need to resort to moving C10 and D10 to a new calculation level (see §3.5.2.3).