Cube вычисляют соответственно
Автор admin Пятница, 22 мая 2009 11:32
Cube вычисляют соответственно значение своего параметра, его квадрат и куб. Первая специализация Accumulate в main() вычисляет 4 + 3 + 2 + 1, поскольку шаблон Identity просто 238 Глава 5 • Шаблоны «возвращает» свой параметр. Вторая строка main() суммирует квадраты этих чисел (16 + 9 + 4 + 1+0), а третья — их третьи степени (64 + 27 + 8+ 1 + 0). Развертывание цикла Разработчики алгоритмов всегда стремились оптимизировать свои программы. Одной из классических оптимизаций в области математического программирования является развертывание цикла — методика, сокращающая издержки на выполнение циклов. Наиболее типичным примером развертывания цикла является матричное умножение. Следующая функция умножает матрицу на вектор (предполагается, что константы ROWS и C0LS определены): void mult(int a[rows][cols]. int x[cols]. int y[cols]) { for (int i = 0: i < rows; ++i) { y[i] = 0: for (int j = 0; j < cols; y[i] += a[i][j]*x[j]; } } Если значение COLS четно, то издержки на увеличение и сравнение счетчика j можно сократить наполовину, «развертывая» вычисления во внутреннем цикле: void multdnt a[rows][cols]. int x[cols
Комментарии закрыты.
Последние комментарии