Here's the formula that's listed on Smogon.
Damage = (((((((Level * 2 / 5) + 2) * BasePower * [Sp]Atk / 50) / [Sp]Def) * Mod1) + 2) * CH * Mod2 * R / 100) * STAB * Type1 * Type2 * Mod3
The calculation I ran was with a L100 Pidgeot (217 Attack) using Quick Attack against a L100 Venusaur (223 Defense). No items or abilities are in effect, so all the Modx variables are equal to 1. Using this formula, the minimum and maximum damage I found were:
Min Damage = (((((((100 * 2 / 5) + 2) * 40 * 217 / 50) / 223) * 1) + 2) * 1 * 1 * 85 / 100) * 1.5 * 1 * 1 * 1 = 42
Max Damage = (((((((100 * 2 / 5) + 2) * 40 * 217 / 50) / 223) * 1) + 2) * 1 * 1 * 100 / 100) * 1.5 * 1 * 1 *1 = 51
The Psypokes and MetalKid damage calculators show the damage range to be 44-52.
If I made a rounding error or something in my math, I can't find it. The smogon page said to round down after every step in the calculation, but are there any exceptions to that?
Edit: Out of curiosity, I also put the example stats on the Smogon page into the Psypokes damage calculator. Smogon lists the damage range as 114-134. Psypokes shows the damage range as 120-142. It looks like psypokes and MetalKid don't round down until the end of the formula, so I think my manual calculations were right.