- /* two_to_generation reflects the steps in the tree broadcast */
- two_to_generation = 1;
- while (two_to_generation < size) {
-
- /* receive message */
- if (rank >= two_to_generation
- && rank < two_to_generation * 2) {
- from = rank - two_to_generation;
- if (from < size)
- printf(" -- from %d", from);
- }
-
- /* send message */
- if (rank < two_to_generation) {
- to = rank + two_to_generation;
+ /* gen reflects the generation (depth) in the tree broadcast */
+ gen = 1;
+ while (gen < size) {
+ if (rank >= 2 * gen) { /* wait for the data to come out */
+ printf("\t");
+ } else if (rank >= gen && rank < 2 * gen) { /* receive message */
+ from = rank - gen;
+ printf("\tfrom %d", from);
+ } else if (rank < gen) { /* send message */
+ to = rank + gen;