Мановар Как такое можно давать студентам, даже описав суть задачи(чего небыло - гадайте) не понимаю. Само по себе требование спец компиляции(sse) требует знания результата компиляции, что коррелирует с самим вопросом - студент этого не знает.
Indy_, им давали примеры на лабе, а дальше сами разбирайтесь. А то, что преподы не могут зачастую поставить правильно задачу, так это никого не волнует кроме студентов, хозяин - барин. Но и стъюденты должны мозгами шевелить, не понятно спрашивай, всегда ответят (если препод не м###к). Но для этого в предмете надо разбираться и грамотно вопросы задавать. Я эти программы (c++ с sse) не писал никогда, скачал вчера пару доков (то что ТС привела какой то полубред), почитал, сегодня с утречка сделал.
Мановар, Всегда задача должна быть сформулирована чётко. Если это не сделано и нужно доставать хрустальный шар, то задающий вопросы не может сформулировать чётко, но надеется на основе расплывчатого описания что то делать. Студентов вообще то обучать нужно, а не делать как в РБ, гнобить, дать не здать зачёт и прочее, с целью получить дальнейший личный профит. Итератор цикла должен быть явно указан. Если конечно не школа волшебства и магии, что скорее всего так судя по корявому тексту на скринах билетов. Скорее всего двинутый старпёр какой то.
Это называется до конца не разобрался и на..... Код (ASM): #include "stdafx.h" #include "iostream" #include < emmintrin.h > int main() { const int N = 16; double k{}; double *A = (double*)_mm_malloc(sizeof(double)*N, 32); double *B = (double*)_mm_malloc(sizeof(double)*N, 32); double *C = (double*)_mm_malloc(sizeof(double)*N, 32); double res_end[N]; for (int i{}; i < N; i++) { A[i] = static_cast<double> (3 + i); B[i] = A[i]; C[i] = A[i]; } __m128d mass_A, mass_B, mass_C, mass_kub; for (int i{}; i < N; i += 2) { mass_A = _mm_load_pd(&A[i]); mass_B = _mm_load_pd(&B[i]); mass_C = _mm_load_pd(&C[i]); mass_kub = _mm_mul_pd(mass_A, mass_B); mass_kub = _mm_mul_pd(mass_kub, mass_C); _mm_store_pd(&res_end[i], mass_kub); } for (int i{}; i < N; i++) k += res_end[i] + 2.; std::cout << k << std::endl; _mm_free(A); _mm_free(B); _mm_free(C); system("pause"); } Кому не нравится заморачиваться с _mm_malloc можно сделать через вектор.