- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
double cCompositeBlock::determinant4x4(double *d){ // WARNING It's not logically connected with class.
return d[3]*d[6]*d[9]*d[12] -d[2]*d[7]*d[9]*d[12]-
d[3]*d[5]*d[10]*d[12] +d[1]*d[7]*d[10]*d[12]+
d[2]*d[5]*d[11]*d[12] -d[1]*d[6]*d[11]*d[12]-
d[3]*d[6]*d[8]*d[13] +d[2]*d[7]*d[8]*d[13]+
d[3]*d[4]*d[10]*d[13] -d[0]*d[7]*d[10]*d[13]-
d[2]*d[4]*d[11]*d[13] +d[0]*d[6]*d[11]*d[13]+
d[3]*d[5]*d[8]*d[14] -d[1]*d[7]*d[8]*d[14]-
d[3]*d[4]*d[9]*d[14] +d[0]*d[7]*d[9]*d[14]+
d[1]*d[4]*d[11]*d[14] -d[0]*d[5]*d[11]*d[14]-
d[2]*d[5]*d[8]*d[15] +d[1]*d[6]*d[8]*d[15]+
d[2]*d[4]*d[9]*d[15] -d[0]*d[6]*d[9]*d[15]-
d[1]*d[4]*d[10]*d[15] +d[0]*d[5]*d[10]*d[15];
}
bormand 16.09.2014 06:04 # 0
http://govnokod.ru/8707
http://ideone.com/m64iM
tirinox 16.09.2014 09:01 # +1
roman-kashitsyn 16.09.2014 10:03 # +5
kegdan 16.09.2014 14:48 # 0
Abbath 16.09.2014 21:35 # 0
kegdan 17.09.2014 04:29 # 0
Abbath 17.09.2014 11:24 # +2
kegdan 17.09.2014 11:35 # 0
bormand 17.09.2014 13:50 # 0
kegdan 17.09.2014 15:05 # 0
kegdan 16.09.2014 15:38 # 0
FadeToBlack 30.10.2014 06:35 # +1
я еще видел обратную матрицу в таком виде. это быстро. это нормально. без этого 3д графика не шевелится.
bormand 30.10.2014 08:52 # +1
kipar 30.10.2014 13:09 # 0
FadeToBlack 30.10.2014 19:16 # 0
kegdan 16.09.2014 14:50 # +1
Abbath 16.09.2014 19:12 # +2
wvxvw 16.09.2014 20:29 # +2
Xom94ok 16.09.2014 20:40 # +3
Увидел азиатскую фамилию - сомнения отпали. Этот алмаз шлифовали фланелевой тряпочкой и голыми руками.
bormand 16.09.2014 21:37 # +4
Abbath 16.09.2014 21:54 # +4
kegdan 17.09.2014 04:34 # −1
Поэтому я искренне считаю, что такой китайский говнокод стоит дороже
Abbath 17.09.2014 11:26 # −1
Нет, с этим повезло, но трехэлементные векторы он свелосипедил.
Xom94ok 16.09.2014 20:33 # +1
http://ideone.com/Ojau68
defecate-plusplus 16.09.2014 22:14 # 0
А разве нельзя сделать как-то много букв...
Xom94ok 16.09.2014 23:16 # 0
Алсо, таким copy можно скопировать из результата умножения матриц флоатов в транспонированную матрицу даблов. Типа снизить потери точности при умножении большого количества матриц.
Весьма забавно было наблюдать, как компилятор жрёт память и дохнет на компиляции вычисления определителя 8x8. Ищу компилятор x64, хочу больше зрелищ!
defecate-plusplus 16.09.2014 23:33 # +1
конечно, если к элементу матрицы обращаться как a.template at<row, col>()
bormand 17.09.2014 05:27 # +1
bormand 17.09.2014 06:25 # +1
8 гигов хватит? Домой вернусь - попробую собрать.
Xom94ok 17.09.2014 10:38 # 0
По оценке методом псевдонаучного тыка - должно хватить :) Вижуал студио сделал мне дебажный бинарник около восьми мегов для матриц 6x6, интересно, что будет с матрицами больших размеров.
> Домой вернусь - попробую собрать.
А чем, если не секрет? Тоже хочу себе продвинутый тулчейн :)
bormand 17.09.2014 10:55 # 0
kegdan 17.09.2014 04:35 # 0
roman-kashitsyn 17.09.2014 10:45 # +1
> try {
я в таких случая использую function-try блоки, так на один отступ меньше: Только не используйте их в деструкторах, пожалуйста.
bormand 17.09.2014 10:57 # 0
Да они там какие-то совсем уж бесполезные... Либо убить прогу нахрен, либо перевбросить другое допустимое исключение. Больше вариантов то и нет...
roman-kashitsyn 17.09.2014 11:03 # 0
Угу, в конструкторах и деструкторах у function-try блоков другая семантика, не как для обычных функций.
С деструкторами, кмк, у стандартизаторов тут фейл получился. Хотя, может я просто чего не осилил.
bormand 17.09.2014 18:53 # 0
Герб Саттер тоже не осилил:
Мораль No1. Обработчик try-блока конструктора пригоден только для трансляции исключения, сгенерированного в конструкторе базового подобъекта или подобъекта-члена (а также, возможно, для соответствующего занесения информации в журнальный файл или каких-то других побочных действий в ответ на генерацию исключения). Ни в каких других целях обработчик служить не может.
Мораль No2. Try-блоки деструкторов практического применения не имеют, поскольку деструкторы не должны генерировать исключения.
Мораль No3. Все остальные try-блоки функций практического применения не имеют. Try-блок обычной функции не может перехватить что-то, что не может перехватить обычный try-блок в теле функции.
bormand 17.09.2014 16:03 # +1
2: 0.2s, 40MB
3: 0.3s, 50MB
4: 0.7s, 90MB
5: 2.8s, 290MB
6: 38s, 1.3GB
7: in progress...
bormand 17.09.2014 18:31 # 0
1024-- 17.09.2014 18:44 # 0
Хм, может и мне попробовать, если студия завалялась. Хотя, если она не может в 64, не надо пробовать.
bormand 17.09.2014 18:47 # 0
defecate-plusplus 17.09.2014 18:53 # 0
но он с виндой и даже без студии
Xom94ok 17.09.2014 20:29 # +1
2x2 - 1391 ms
3x3 - 1631 ms
4x4 - 2406 ms
5x5 - 8202 ms
6x6 - 175956 ms
7x7 - терпение пока не кончилось, уже больше часа
Память посмотреть не смог, но 7x7 стабильно держится около 2 гигов.
Мда, я и не представлял, что одна маленькая ссылка сожжёт столько киловатт энергии :)
1024-- 17.09.2014 20:31 # +2
Xom94ok 17.09.2014 20:46 # +2
main.cpp(102): fatal error C1060: compiler is out of heap space
Вспомнилась именно эта цитата: http://www.bash.org/?919561
bormand 17.09.2014 20:53 # +2
bormand 17.09.2014 21:04 # +1
Xom94ok 17.09.2014 21:14 # +1
У меня i5 1.7ГГц, но он могильный, так что деление чисел на два не даст адекватного сравнения.
Я ещё проверял на совместимость со стандартом через MinGW, он компилировал ощутимо медленнее, в 1.3-1.5 раз.
Xom94ok 17.09.2014 21:25 # +1
g++ -O2
2x2 - 0m0.481s
3x3 - 0m0.621s
4x4 - 0m1.231s
5x5 - 0m4.813s
6x6 - 1m7.868s
И деление времени на отношение частот тоже даёт адекватную оценку.
bormand 17.09.2014 19:29 # 0
Надо пробовать сведение к треугольному виду, у него будет че-то типа O(n^3).
bormand 17.09.2014 20:08 # 0
1024-- 17.09.2014 20:15 # 0
bormand 17.09.2014 20:17 # 0
Xom94ok 17.09.2014 20:41 # 0
И вообще: этот мозг нуждается в лучшем снабжении кислородом!
bormand 17.09.2014 20:29 # 0
defecate-plusplus 17.09.2014 21:51 # +2
bormand 17.09.2014 22:04 # 0
1024-- 18.09.2014 08:10 # +2
ГК растёт, ГК расширяется. Каждый день - новый юзерскрипт или тонны сгенерированного бреда. Надо думать о будущем, надо готовиться.
Xom94ok 17.09.2014 20:32 # 0
bormand 17.09.2014 20:36 # 0
Пример из жизни: помогал другу реализовать МНК. У меня на хаскеле все отлично считалось (по счастливой случайности строчки положил как надо). А у него строчки были в обратном порядке - точность улетела к хуям, в ответе полный мусор, не имеющий никакого отношения к реальному ответу.
CkpunmoBbIu_nemyx 25.08.2021 17:55 # 0