Battle off Cape St Vincent