Точность вычислений - это разница между вычисленной суммой ряда и её точным значением. То, что случайно выбранный член ряда по j оказался меньше заданной точности, ещё ничего не гарантирует. А потом ещё эти никем не учтённые погрешности накапливаются при суммировании по i.
Чтобы гарантированно получить требуемую точность, необходимо оценить остаток ряда.
∞ ∞ ∞ ∞ k
Σ sin(ij/π) / (i⁵ + j⁵) ≤ Σ 1 / j⁵ ≤ Σ 1 / j⁴ = Σ 1 / j⁴ - Σ 1 / j⁴ =
j=k+1 j=k+1 j=k+1 j=1 j=1
k
= π⁴/90 - Σ 1 / j⁴
j=1
Где k - текущий член ряда по j.
Сумма первого слагаемого вычислена Эйлером как сумма обратных четвёртых степеней.
Сумму второго слагаемого (вычитаемого) мы можем накапливать при вычислениях в цикле.
Именно эту штуку и надо сравнивать с точностью в цикле по j.
Кроме того, выше указано, погрешность накапливается при сумме по i, и у неё - один и тот же знак. Проще всего разделить точность на 20 и по каждому i достигать своего куска (0.05 × 10⁻³ / 0.3). Делим на 0.3, потому что итоговое выражение будет умножено на этот коэффициент.
И конечно, если считать π = 3.14, то точность 0.001 никогда не будет достигнута.
И ради Бога, никогда не вычисляй степени таким варварским образом. Возведение в степень - тяжёлая вычислительная операция. Лучше хранить степени i и j между итерациями и в следующей итерации домножать на текущее значение i или j, соответственно.