People seem to have a misinterpretation of CP to effectiveness. While yes, CP is an overall gauge of a pokemon, it's not the end all be all. For example: Gyarados has a much higher CP than a Starmie, yet Starmies base attack is higher of a Gyarados. What puts Gyarados ahead is its stamina value in the formula.
Formula below (Credit to CPMultiplier [Reddit])
First, look
here for all the new Pokemon Go base stat values. The new values follow these formulas exactly (Credit: /u/Fourier864):
-BaseStamina = 2 * Hp
-BaseAttack = 2 * ROUND(Atk^0.5 SpA^0.5 + Spe^0.5)
-BaseDefense = 2 * ROUND(Def^0.5 SpD^0.5 + Spe^0.5)
where HP, Atk, Def, SpA, SpD, Spe are all the base values in Gen 6.
Take
TotalCpMultiplier = CpMultiplier + AdditionalCpMultiplier
TotalCpMultiplier is approximately 0.095 * Sqrt(PokemonLevel), where PokemonLevel increases by 1 every power up.
Note: See
this post to see how much (TotalCpMultiplier)2 increases every power up. After level 30 (or PokemonLevel = 30 * 2, since two power ups per level), each power up is about half as effective.
Then take
-Stamina = (BaseStamina + IndividualStamina) * TotalCPMultiplier
-Attack = (BaseAttack + IndividualAttack) * TotalCpMultiplier
-Defense = (BaseDefense + IndividualDefense) * TotalCpMultiplier
(no rounding). The IVs range from 0 to 15. Finally,
-
CP = MAX(10, FLOOR(Stamina^0.5 * Attack * Def^0.5 / 10))