Well, the formulas in the manual are almost correct. Sieging works by building the sums over the following:
- For every sieging unit: (str^2 / 10) + (10 if flying) + 10*(siege skill)
- For every non-mindless defending unit: (str^2 / 10) + (10 if flying) + 10*(guard skill)
- For every mindless defending unit: 1 + 10*(guard skill)
Remainders in the divisions are being rounded down. Those two values, the siege and the "desiege" strength, are then again in a final step being divided by 10, rounded down, which results in the formulas that are in the manual, except for mindless units.
Regarding the Black and Great Hawks:
A Black Hawk has strength 5, thus every Black Hawk should contribute (5²/10)+10 = 12 to the siege counter, before division by 10.
A Great Hawk has strength 11, thus every Great Hawk should contribute (11²/10)+10 = 22 to the siege counter, before division by 10.
What happens in reality is that every Black Hawk only adds 2 to the siege counter, while the Great Hawk adds 22 to the siege counter, so 20 Black Hawks and a Great Hawk add up to 20*2+22 = 62, thus resulting in the siege strength of 6.
Why is that? I wasted a good amount of time debugging this, while I should just have looked in my unit data files... The code works exactly like given above. Black Hawks have a siege strength of -1. Thus effectively their flying attribute is discarded regarding fort sieges. In defense, they don't suffer any penalty, though. The only other unit that suffers from the same penalty is the Shikigami (2092).