почему при указывании 3 элемента, он начинает считать с 1Кто вам такое сказал? Элементы массива в C++ всегда нумеруются начиная с нуля.
mid = arr[(f + l) / 2];
(-x)*(2*i+1)/(2*i)
- вещественное число умножается на целое, результат вещественный, затем вещественное число делится на вещественное, результат вещественный.(-x)*((2*i+1)/(2*i))
- целое число делится на целое, результат целое, затем вещественное число умножается на целое, результат вещественный.