sse2,C помогите пожалуйста написать код. N=16 double a[n], b[n], c[n], k=0; a=b=c=i+3; k+= a*b*c+2; i=0, N-1
Задание какое то странное. Если я правильно понимаю, то a[0]=b[0]=c[0]=3 a[1]=b[1]=c[1]=4 a[2]=b[2]=c[2]=5 и т.д. тогда [math]a\cdot b\cdot c = a^{3}[/math] (к чему куча массивов ?) по сути получаем сумму натурального ряда, где каждый элемент возведен в третью степень. Используя формулу [math](\frac{(n + 1)\cdot n}{2})^{2}[/math] вычисляет сумму первых 18 элементов, отбрасываем сумму первых двух, незабываем про наш довесок в виде двойки и по сути все. Вычисляется с помощью ручки и куска бумаги за минуту. Для чего sse непонятно. И что, нужно использовать только команды sse2 или из всего sse спектра, тоже не понятно.
Задачи нет, есть копипаст её с отрывом от контекста. i=0, N-1 что это такое. Передайте вашему профессору что он м###к.
это пример задачи, который преподаватель давал на паре, сейчас это же надо, только с условием что выше
Выложите нормальный исходник в текстовом файле. И вообще, что это за предмет и какая у Вас специальность? Мне правда очень интересно!!!
Название у задачи должно быть!!! Все это не просто так. Не мог он так дать, положить на стол и сказать решайте!!!
если бы было название, я написала. Звучит бредово, но именно так и было, раздал эти листки и сказал решать до завтрашнего дня, непонятно как
Я думал, что это графика. И вообще это задание может решить только подготовленный человек который занимается sse2 и си. https://habrahabr.ru/post/204682/ Скорее всего у препода плохое настроение.
Видимо да, потому что одну группу завалил с этими задачами уже. И уже смотрела информацию, ссылку которой скинули
Примерная расшифровка: Дано: N=16, массивы a[ N ], b[ N ], c[ N ] типа double, переменная k типа double, равная 0. Необходимо: для всех i от 0 до N-1 выполнить присванивание a[ i ]=b[ i ]=c[ i ] = i+3. Также на каждой итерации цикла выполнить аккумуляцию суммы в k, каждый член которой вычисляется как a[ i ]*b[ i ]*c[ i ] + 2.
Нахрена там так много кода (а, особенно, заголовочных файлов)? Он что, ещё и перформанс написанного кода мерять собрался?
Код (C): #include "stdafx.h" #include "iostream" #include < emmintrin.h > int main() { const int N = 16; double A[N+1], B[N+1], C[N+1], res_end[N+1], k1, k = 0.; A[0] = 3., B[0] = 3., C[0] = 3.; for (int i = 1; i < N; i++) { A[i] = A[i-1] + 1.; B[i] = A[i]; C[i] = A[i]; } __m128d mass_A, mass_B,mass_C,mass_kub; for (int i = 0; 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 = 0; i < N; i++) { k += res_end [i] + 2.; } std::cout << k << std::endl; // А вот так вычисляется вся изложенная выше галиматья с математической точки зрения k1 = pow(((18. + 1.) * 18. / 2.), 2) - pow(((2. + 1.) * 2. / 2.), 2) + 2. * 16.; std::cout << k1 << std::endl; system("PAUSE"); return 0; } Код рабочий, но у самого осталось несколько вопросов (не знаю, то ли с компилятором VS связано, то ли еще с чем то).