
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.05.2007, 13:17
|
|||
|---|---|---|---|
|
|||
Как сложить 2 вектора поэлементно... |
|||
|
#18+
Помогите пожалуйста, а то я уже голову сломал... Пишу на VisualC++. В общем надо сложить 2 вектора поэлементно и записать результат в 3-ий вектор. Все бы хорошо, да только это нужно сделать с использованием SSE инструкций. float *x, *y, *z; x = new float [8]; y = new float [8]; z = new float [8]; x[0] = 1; x[1] = 2; x[2] = 3; x[3] = 4; x[4] = 5; x[5] = 6; x[6] = 7; x[7] = 8; y[0] = 10; y[1] = 20; y[2] = 30; y[3] = 40; y[4] = 50; y[5] = 60; y[6] = 70; y[7] = 80; z[0] = 0; z[1] = 0; z[2] = 0; z[3] = 0; z[4] = 0; z[5] = 0; z[6] = 0; z[7] = 0; for (int i=0;i<8;i++) printf("%f ",z ); printf("\n"); __asm { push eax; mov eax, x; movups xmm1, [eax]; mov eax, y; movups xmm2, [eax]; addps xmm1, xmm2; movups eax, xmm1; mov z, eax; pop eax; } for (int i=0;i<8;i++) printf("%f ",z); printf("\n"); delete z; delete y; delete x; В итоге выводится 2 строки: 0 0 0 0 0 0 0 0 10 20 30 40 50 60 70 80 А должно выводиться 0 0 0 0 0 0 0 0 11 22 33 44 55 66 77 88 Это первая проблема и вторая программа вываливается на команде delete. Пожалуйста подскажите, что я делаю не правильно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.05.2007, 14:21
|
|||
|---|---|---|---|
Как сложить 2 вектора поэлементно... |
|||
|
#18+
1) Как-то странно вы выводите на экран вектор z. Нет-ли там ошибки? 2) В С++ рекомендуется удалять массивы так "delete[] z" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.05.2007, 18:05
|
|||
|---|---|---|---|
Как сложить 2 вектора поэлементно... |
|||
|
#18+
chpocks Код: plaintext 1. 2. 3. 4. 5. 6. 7. Первая строка: копируем в eax адрес y, последняя строка копируем в z адрес из eax. То есть, теперь z показывает на y, а бывший z пропал совсем. Поэтому и программа на delete падает - дважды пытаешься освободить y. Замени последние две строчки в этом куске на Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2028934]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 323ms |

| 0 / 0 |
