Change the midpoint chosen in Eigen::ForkJoinScheduler.
What does this implement/fix?
When the granularity argument used in the ParallelFor variants of Eigen::ForkJoinScheduler is greater than one, the chosen midpoint mid in the forking operation may choose an index outside of [start, end]. This is due to the current Eigen::numext::div_ceil computation.
This MR forces the midpoint to properly be inside [start, end] by avoiding multiples of granularity.