Функция имеет такой прототип:
int calc_power(double* X, int* ind, int* lims, int N, int* id, double* M, double* R)
первые 4 параметра формируются в самом начале и на всём протяжении работы программы не меняются,
вообще, их можно сделать глобальными, но даст ли это преимущество в скорости или только внесёт путаницу?
более важный вопрос касается id, M, и R. Они меняются внутри функции и используются для хранения промежуточных вычислений,
размеры их заранее известны. Можно выделить память внутри calc_power(), но с учётом того, что число вызовов этой функции
очень велико, это представляется нерациональным. Наверное лучше под эти массивы сразу выделить нужную память, и передавать указатели в функцию. Но как быть с многопоточностью? Ведь в каждом потоке эти массивы должны содержать свои данные