exact gradients