"Hi @Stuart D Moncrieff That is not a general equation for modified duration; to my knowledge, there are no super simple (efficient) formulas for the modified duration of coupon-bearing bonds, with the exception of par bonds (of course, zero coupon bonds are easiest, hence their popularity in exam question assumptions!).
In Chapter 4, Tuckman shows the simple formulas for modified duration in three special cases: zero-coupon, par bonds (i.e., when the coupon rate equals the yield to maturity) and perpetuities. So we have a "simple" formula when the bond happens to be priced at par (or as approximations when the price is near to par; Tuckman: "The yield-based DV01 and duration of par bonds are useful formulae as relatively simple approximations for bonds with prices close to par.")
For the modified duration of a par bond (i.e., "c = y") with a semi-annual coupon, Tuckman gives formula 4.45:
D(c=y) = 1/y*[1 - 1/(1+y/2)^2T], which is the semi-annual equivalent to the annual (compound frequency) formula that you quoted. I hope that's helpful, thanks!"