- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
...
char det(char a[4][4])
{ float det;
det=a[0][0]*(a[1][1]*(a[2][2]*a[3][3]-a[3][2]*a[2][3])-a[1][2]*(a[2][1]*a[3][3]-a[2][3]*a[3][1])+a[1][3]*(a[2][1]*a[3][2]-a[2][2]*a[3][1]))
-a[0][1]*(-a[1][0]*(a[2][2]*a[3][3]-a[3][2]*a[2][3])-a[1][2]*(a[2][0]*a[3][3]-a[3][0]*a[2][3])+a[1][3]*(a[2][0]*a[3][2]-a[3][0]*a[2][2]))
+a[0][2]*(-a[1][0]*(a[2][1]*a[3][3]-a[3][1]*a[2][3])+a[1][1]*(a[2][0]*a[3][3]-a[3][0]*a[2][3])+a[1][3]*(a[2][0]*a[3][1]-a[2][1]*a[3][0]))
-a[0][3]*(-a[1][0]*(a[2][1]*a[3][2]-a[3][1]*a[2][2])+a[1][1]*(a[2][0]*a[3][2]-a[3][0]*a[2][2])-a[1][2]*(a[2][0]*a[3][1]-a[3][0]*a[2][1]));
return(det);
};
...
Dummy00001 23.06.2011 18:50 # −5
если это говно, то повально все реализации алгоритмов кодирования и хэширования ( например http://people.csail.mit.edu/rivest/Md5.c ) тоже говно.
eth0 23.06.2011 18:59 # 0
Dummy00001 23.06.2011 19:21 # +2
eth0 23.06.2011 20:03 # 0
macGovno 23.06.2011 19:14 # 0
guest 23.06.2011 22:59 # 0
macGovno 23.06.2011 23:29 # +1
Тем более что речь об оптимизации любой ценой.
guest 23.06.2011 23:36 # 0
Ох, мне мерещится... :(
guest 25.06.2011 12:28 # 0
Просто школяр не знал циклов.
wvxvw 23.06.2011 23:41 # 0
Dummy00001 24.06.2011 00:18 # 0
современный компилятор при виде кода выше навярняка прикрутит какие CPU-специфичные SIMD инструкции. соптимизировать руками то можно - но оно будет непортабельно и я сомневаюсь что быстрее того что компилятор сам может сделать.
wvxvw 24.06.2011 00:57 # 0
Смысл ответа заключался не в том, как компилятор будет оптимизировать (откуда вы знаете, может он RTL сначала создает, и его, или похожий, и его оптимизирует - техник же разных море, но не об том речь), а в том, что код не оптимизирован / оптимизация явно не являлась тут приоритетом.
Dummy00001 24.06.2011 01:06 # 0
ёпрст. а цыклы сами собой развернулись??
wvxvw 24.06.2011 01:24 # 0
В смысле, само по себе разворачивание цикла может ничего и не дать. Ну, опять же, код не дает никаких оснований предполагать, что автор что-то замерял / проверял, и пришел к такому решению потому, что оно было оптимальнее какого-то другого. В коде нет даже намека на такие действия. Просто человек написал первое, что ему пришло в голову, и нет тут никакого скрытого смысла...
SmackMyBitchUp 24.06.2011 15:10 # 0
%\
wvxvw 24.06.2011 15:20 # 0
Esper 24.06.2011 12:04 # +1
Между делом. В этом коде каждый минор второго порядка считается 2 раза, многие из них - неявно, нужно пораскрывать скобочки, перегруппировать. Просто поищите глазами выражение "(a[2][2]*a[3][3]-a[3][2]*a[2][3])".
А если оптимизировать, то я бы взял Лапласа и SSE-инструкции.
Esper 23.06.2011 19:20 # +5
Это победа.
guest 23.06.2011 23:01 # 0
macGovno 23.06.2011 23:48 # +1
guest 23.06.2011 23:53 # 0
macGovno 23.06.2011 23:54 # 0
Esper 24.06.2011 11:55 # 0
gegMOPO4 25.06.2011 14:18 # +1
macGovno 25.06.2011 17:47 # 0
gegMOPO4 25.06.2011 14:17 # +1
Esper 28.06.2011 20:47 # 0
My bad: я увидел только часть ИСТИНЫ.
Esper 24.06.2011 12:10 # +6
В общем: полное беспросветное говно, не имеющее никаких оправданий.
Lure Of Chaos 24.06.2011 17:09 # +2
TheHamstertamer 25.06.2011 10:57 # 0
guest 25.06.2011 12:23 # 0
SmackMyBitchUp 26.06.2011 21:32 # −3
guest 26.06.2011 22:45 # 0
1_and_0 27.06.2011 07:27 # −1
absolut 27.06.2011 10:27 # 0
guest 11.07.2011 23:22 # 0
google> site:otvet.mail.ru "1_and_0"
guest8 08.04.2019 20:59 # −999
guest8 09.04.2019 11:02 # −999
guest8 12.04.2019 14:25 # −999