В определенных специализированных случаях да. Например, если бы у вас был глобальный кэш уже вычисленных значений, которые были прочитаны и записаны только вашей функцией, он все равно был бы математически чистым, в том смысле, что выходные данные зависели только от входных данных, но не были бы чистыми в самом строгом смысле. Например:
static int cache[256] = {0};
int compute_something(uint8_t input)
{
if(cache[input] == 0)
cache[input] = (perform expensive computation on input that won't return 0);
return cache[input];
}
В этом случае, пока никакая другая функция не касается глобальной cache
, она все равно остается математически чистой функцией, хотя технически она зависит от внешнего глобального состояния. Тем не менее, это состояние просто оптимизация производительности - без него оно будет выполнять те же вычисления, только медленнее.