compute local extrema