One thing that's problematic with this approach is the assumption that dx is a small constant. Its not, it represents a limit, specifically a value approaching 0. Look at the quantity (x + dx)^2. By expanding the terms you get x^2 + 2xdx + dx^2. Look at the last two terms, which both involve a dx. Lets look at how these compare to each other by putting the last term over the middle term so we get (dx^2 / 2xdx). Since we are in a limit, consider the value of this as dx approaches 0. You can cancel one of the dx's so you have (dx / 2x), and now you can clearly see that this limit will be 0. What this last limit shows, is that the last term is infinitely smaller than the middle term as dx shrinks. Which is why it gets "pretended" to be 0 in some math and physics classes. This is no approximation though, and can be carried along in your calculations if you choose to keep it.