1. C++ / Говнокод #8477

    +1001

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    Matrix Matrix::inverse ()
    {
    	Matrix Temp;
    
    
    	Matrix A;
    
    	Matrix AL(4,4);
    
    	int c1,c2;
    
    
    
    	for (int i = 0; i < 5; i++)
    	for (int j = 0; j < 5; j++)
    	{
    		c1 = 0;
    
    		for (int k = 0; k < 5; k++)
    		{
    			if (k == i) continue;
    			c2 = 0;
    			for (int l = 0; l < 5; l++)
    			{
    				if (l == j) continue;
    				AL[c1][c2] = array[k][l];
    				c2++;
    			}
    			c1++;
    		}
    
    		A[i][j] = pow(-1,static_cast<double>(i + j + 2))*AL.determinant();
    	}
    	
    	for (int i = 0; i < 5; i++)
    	for (int j = 0; j < 5; j++)
    	{
    		Temp[i][j] = 1/determinant()*A[i][j];
    	}
    
    
    	return Temp;
    }

    цените, алгоритм обратной матрицы

    Запостил: bartimeus33nt10, 11 Ноября 2011

    Комментарии (124) RSS

    • 0. что за магик-намберы? матриц, отличных от 5х5 не бывает что-ли?
      1. размеры A, Temp полагаю лучше инициализировать сразу.
      2. необходимость создания матрицы меньшего размера вопрос спорный - ну и черт с ней.
      3. pow(-1,static_cast<double>(i + j + 2)) - а подумать?
      4. строка 38. 1/determinant() внутри цикла. офигенно.
      5. в дополнение - тогда и Temp не понадобится.
      Ответить
      • В этом коде воняет всё.
        Правда, есть шанс, что вызов детерминанта компилятор закеширует.
        Ответить
        • >вызов детерминанта компилятор закеширует.
          с какой радости?
          Ответить
          • чистая функция же, надо кешировать
            Ответить
            • absolut can not into expression elimination
              Ответить
            • функция без параметров может быть чистой только если она возвращает константу
              Ответить
              • int i=f();
                const int DirtyFffuuu(void)
                {
                  return i;
                };
                Слив 1:0 в пользу Романа. Не благодарите.
                Ответить
                • крестопроблемы
                  Ответить
                  • int CleanFffuuu(void)
                    {
                      return 100500;
                    };
                    или
                    constexpr int f()
                    {
                            return 100500;
                    };
                    constexpr int i=f();
                    constexpr int CleanFffuuu(void)
                    {
                      return i;
                    };
                    Все проблемы от незнания мат части.
                    Ответить
                    • Пошло бы ты в жопу, мудило. Что я сказал не так? твоя последняя функция в конечном счёте будет возвращать не константу? Или ты имеешь в виду, что этой константой может быть результат вычислений?
                      Ответить
                      • >Что я сказал не так?
                        Всего лишь не верное утверждение. Признак чистоты функции не в константности возвращаемого значения, если посмотреть на функцию постом выше.
                        http://govnokod.ru/8477#comment118934
                        Ответить
                        • Ещё раз приведу пример из того поста подробнее для разъяснений:
                          int f()
                          {
                                  return random();
                          };
                          const int i=f();
                          const int DirtyFffuuu(void)
                          {
                            return i;
                          };
                          Ответить
                          • Эта функция не чиста, поскольку у неё отсутствует свойство детерминированности. Ты не можешь сказать, какое именно число она возвращает, и не можешь заменить её вызовы константой в исходном коде.
                            Ответить
                            • КО, написано, что
                              >DirtyFffuuu.
                              >Dirty
                              Надеюсь языки знаете.
                              Ответить
                              • Тогда мне вообще непонятны твои наезды. Я же не сказал, что функция без аргументов чиста ТОГДА И ТОЛЬКО ТОГДА, когда она возвращает константу. Это необходимое, но не достаточное условие.
                                Ответить
                                • >Я же не сказал, что функция без аргументов чиста ТОГДА И ТОЛЬКО ТОГДА, когда она возвращает константу. Это необходимое, но не достаточное условие.
                                  >Это необходимое, но не достаточное условие.
                                  >Это необходимое
                                  Оно не необходимое. И оно не достаточное.
                                  Функция может быть как чистой, так и не чистой, но при это возвращает константу:
                                  const int DirtyFffuuu(void)
                                  Константа - понятие относительное, как видишь из этого примера. Слову "константа" места в определении чистой функции нет. Ты не знаешь определение чистой функции, по всему видно.
                                  Ответить
                                  • Специально для особо одарённых: под константой в данном контексте (функция без параметров, возвращающая число) я понимал некоторое число, которое известно или может быть вычислено на этапе компиляции (не в контексте конкретно c++, чистые функции никак не завязаны на c++). К примеру, она может быть суперпозицией чистых функций с фиксированными аргументами.
                                    > Оно не необходимое
                                    ты, похоже, не в ладах с математикой, говно.
                                    Ответить
                                    • показать все, что скрыто>ты, похоже, не в ладах с математикой
                                      Пруф?

                                      > Оно не необходимое
                                      int DirtyFffuuu(void)
                                      Раз эта функция может быть как чистой, так и грязной, и не возвращает константу. => Это не необходимое правило для чистых функций.

                                      Ты только в своем последнем посте наконец понял, что константа - это свойство, в данном случае, возвращенной переменной, а не функции. Именно поэтому слово константа не может участвовать в определении чистой функции.

                                      >в данном контексте (функция без параметров, возвращающая число)
                                      >возвращающая число
                                      Ну если у тебя функция ещё и только числа возвращает, но не может другие типы, то почему ты мне это подсовывал как определение чистой функции без параметров?
                                      Ответить
                                      • >Раз функция может быть как чистой, так и грязной, и не возвращает константу. => Это не необходимое правило для чистых функций.

                                        Ну ты и еблан... Это как раз означает, что условие не является достаточным.

                                        > что константа - это свойство, в данном случае, возвращенной переменной, а не функции
                                        Ты сам то понял, что сморозил?

                                        > Ну если у тебя функция ещё и только числа возвращает
                                        Да, блядь, determinant() возвращает число, ты не знал?

                                        > подсовывал как определение
                                        Где ты увидел определение?

                                        > только числа возвращает
                                        Чистая функция без параметров может с тем же успехом возвращать списки фиксированной структуры, ну ты понял
                                        > ну ты понял
                                        кого я обманываю....
                                        Ответить
                                        • показать все, что скрыто>Ну ты и еблан...
                                          А казался уравновешенным и серьёзным человеком. Я был о тебе более высокого мнения. Ты меня разочаровал.

                                          >Это как раз означает, что условие не является достаточным.
                                          Или ты не уловил суть или ничего не смыслишь в "необходимом и достаточном условии".

                                          Пусть CR - утверждение, что мы возвращаем константу. Пусть CF - утверждение, что функция чистая.
                                          Ты сказал:
                                          >функция без аргументов чиста ТОГДА, когда она возвращает константу. Это необходимое, но не достаточное условие.
                                          Необходимое условие означает:
                                          !CR -> !CF.

                                          Опровергаю твоё утверждение !CR -> !CF.:
                                          int DirtyFffuuu(void) - константу не возвращает, то есть !CR, но при этом она чистая: CF. То есть !CR !-> CF. Но по твоему утверждению !CR -> !CF. Как видишь противоречие на лицо, ну если ты хоть немного знаешь математику.

                                          >Ты сам то понял, что сморозил?
                                          Ну а ты не понял. Я это понял. Ну ты понел.

                                          >Где ты увидел определение?
                                          Согласен, не определение, но это достаточное условие.
                                          http://govnokod.ru/8477#comment118922
                                          А оно, как видишь. Не верно.

                                          >Чистая функция без параметров может с тем же успехом возвращать списки фиксированной структуры, ну ты понял
                                          КО? И константную структуру, да. И что? Ты хотел поразить меня своими императивными знаниями?
                                          Ответить
                                          • > казался уравновешенным и серьёзным человеком
                                            я такой и есть, ты просто доставляешь мне лулзы

                                            > int DirtyFffuuu(void) - константу не возвращает, то есть !CR, но при этом она чистая
                                            > Dirty
                                            > она чистая
                                            По-моему, ты обосрался, и всячески стараешься это скрыть за умными словами.
                                            Ответить
                                            • > Dirty
                                              > она чистая
                                              Согласен. Не верно назвал. Хорошо переименую:
                                              int CleanFffuuu(void) - константу не возвращает, то есть !CR, но при этом она чистая: CF.

                                              Так стало понятнее? Не важно как функция названа. Главное - какая она на самом деле. Если ты после переименования все ещё не выезжаешь простую логику, то могу повторить простое "математическое" доказательство ещё раз.
                                              Ответить
                                              • CleanFffuuu всегда возвращает 100500. Это константа. Это известно ещё на этапе компиляции. *pockerface*
                                                Ответить
                                              • 2 lucidfoxGovno
                                                Неважно кто тебя посылает нахуй. Главное - что ты пидарасина считаешь разведение унылой дисскусии ни о чем "успешным троллингом", а в реале я вижу тебя как терпеливого хуесоса, несущего ахинею и рефрешащего говнокод в ожидании что кто-нибудь да ответит на твой бред...
                                                Ответить
                              • > CleanFffuuu
                                > Надеюсь языки знаете.

                                К твоему сведению, обезьяна, clean - это сортиры драить, для чистых функций используется слово PURE.
                                Ответить
                        • Признак чистоты функции: возвращаемое значение зависит ТОЛЬКО от переданных аргументов. Если функция чиста и не принимает аргументов, она ДОЛЖНА возвращать всегда ОДНО И ТОЖЕ значение, т.е. константу. Все её вызовы должно быть можно удалить и заменить той самой константой.
                          сосни хуйца, неуч
                          Ответить
                          • Вот наконец ты додумался до более или менее верного определения. Не очень формализовано, но уже хорошо. :)
                            Ответить
                          • > она ДОЛЖНА возвращать всегда ОДНО И ТОЖЕ значение, т.е. константу
                            только детерминистская функция так себя ведет
                            Ответить
              • Она чистая внутри класса. Если класс не меняется, то и функция - тоже.
                Ответить
                • Я, конечно, понимаю, что ты невысокого мнения об ООП, но называть классом экземпляр класса всё же не стоит.
                  Ответить
                  • Короче, ты примерно уловил мыслю.
                    В функциях, не меняющих состояние класса (то есть с атрибутом const&) можно заменять на константы обращения к функциям с тем же атрибутом, если вся грязь этих функцию лежит в обращениях к классу (т.е. функции локально чисты).
                    Ответить
                    • Да, я понял, что вы имеете в виду. Не имею ничего против, только вряд ли компилятор будет делать такую оптимизацию, поскольку насрать в матрицу между вызовами determinant может кто угодно. Разумней явно объявить локальную константу и инициализировать её значением, возвращаемым функцией determinant.
                      Ответить
                      • > поскольку насрать в матрицу между вызовами determinant может кто угодно

                        Не может, если сделать критическую секцию.
                        Ответить
                        • Точно, для вычисления обратной матрицы, критическая секция просто необходима.
                          Ответить
                          • А вдруг, в процессе вычисления кто-то сбоку поменяет матрицу?
                            Ответить
                            • Эх, вот за что я люблю immutable data. Жаль, что с матрицами такой подход в некоторых ситуациях может быть неэффективен.
                              Ответить
                              • По идее, можно сделать компилятор, который видит, что если написано
                                A := B.ChangeCell(i, j, NewValue)
                                и дальше B нигде не используется, и внутри метода ChangeCell первой же строкой написано Result:=*This, то можно сразу писать B на место A.
                                Но опять же, в многопоточной программе эта оптимизация нарушит логику, то есть надо думать, как бы эту оптимизацию подружить с потоками.
                                Ответить
                            • > кто-то сбоку

                              В печень ему!^W^W^W В данном алгоритме все равно матрицу меняем, можно сразу копировать и в чужую область видимости не открываться.
                              Ответить
                      • >только вряд ли компилятор будет делать такую оптимизацию
                        Ты всеж погугли expression elimination и пойми, когда применима эта оптимизация, а когда нет. Нечего голословно что-то утверждать.
                        Ответить
                      • >насрать в матрицу между вызовами determinant может кто угодно
                        Ну если не умеешь программировать, то да.
                        Ответить
                        • Иди лучше пейши статью на лурке программист подзалупный.
                          Ответить
            • и что? а если цикл написан чтобы ее 25 раз вызвать? мало ли зачем
              Ответить
              • > а если цикл написан чтобы ее 25 раз вызвать?

                ССЗБ
                Это из серии, что оптимизация лишнего вызова конструктора-деструктора может изменить логику программы.
                Так вот, если из-за этого меняется логика, то пейсатель конструктора ошибся.
                Ответить
            • determinant() зависит от состояния объекта класса Matrix, а потому не может быть чистой.
              Ответить
              • В целом - она не чистая, но она чистая в рамках 2х обрамляющих её вложенных циклов.
                Ответить
                • Функция либо чистая, либо нет. Третьего не дано.
                  "Все проблемы от незнания мат части." (c)
                  Ответить
                  • Ты не знаешь физику, поэтому не понимаешь, что такое система отсчета. Вот, в зависимости от того, какую систему отсчета принять - функция будет чистой, а может и нет. В рамках системы отсчета этих 2х циклов она чистая. В более широких рамках - грязная, тк имеет сайдэффекты, в отличии от другого способа выбора системы отсчета.

                    Материальная точка либо движется, либо нет. Третьего не дано.
                    Но всегда можно взять другую систему отсчета, где движущаяся точка стоит.
                    "Все проблемы от незнания мат части." (c)
                    Ответить
                    • Если ты такое умное гавно, что приводишь совершенно не относящиеся к делу аналогии и делаешь непонятные предположения, приведи мне пример, когда следующая функция не будет чистой:
                      int sum(int a, int b) { return a + b; }
                      Будет предполагать, что железо и операционная система не дают сбоев.
                      Ответить
                      • >и делаешь непонятные предположения
                        Может с твоим мозгом - да.

                        >когда следующая функция не будет чистой?
                        Она чиста всегда.
                        Ответить
                        • Оба на! Но ведь всегда можно выбрать систему отчёта, в которой покоящаяся в другой системе отчёта материальная точка движется. Так что твои предположения и аналогии не более чем бред и унылое гавно.
                          Ответить
                          • Нет. Аналогия верна только для грязных функций. Чистая функция по определению не может стать грязной. А грязная может быть чистой в некоторых системах отсчета. В частности, она чиста в данном примере в течении обоих вложенных циклов. У неё нет сайд эффектов в течении этих 2х циклов и в них её можно заменить "константой".
                            Ответить
                          • Походу, чистота в плюсах -- это что-то специфическое, лучше обходить.
                            Ответить
                            • КРЕСТОПРОБЛЕМЫ
                              Ответить
                            • делай что должен и будь что будет
                              не надо полагаться на то, что компилятор умнее тебя, будет что то там кешировать и ты со всем этим охуенно взлетишь
                              написал ему "тут должна вызываться функция", рассчитывай, что тупой компилятор тут вызовет функцию
                              а то привыкли, понимаешь
                              Ответить
                    • Ты не знаешь физику, поэтому не понимаешь, что такое система отсчета. Вот, в зависимости от того, какую систему отсчета принять - функция будет чистой, а может и нет. В рамках системы отсчета этих 2х циклов она чистая. В более широких рамках - грязная, тк имеет сайдэффекты, в отличии от другого способа выбора системы отсчета.

                      Расскажи нам лучше ПОЛИМОРФИЗМ В ФИЗИКЕ!

                      >Материальная точка либо движется, либо нет. Третьего не дано.
                      >Но всегда можно взять другую систему отсчета, где движущаяся точка стоит.

                      Как бы ты с помощью портала выебал себя в жопу? Или не стоит?
                      Ответить
                • А теперь положим, что кто-то пустил второй поток, который модифицирует матрицу, для которой идёт процесс вычисления обратной матрицы. Ну и где твоя "чистота" сейчас?
                  Ответить
                  • В данном случае это ошибка реализации алгоритма. Это совсем другой случай. Я его не обсуждал, тк считал, что в данном коде нет таких серьёзных ошибок реализации алгоритма. В таком контексте она всегда грязная. Как только указатель этой конкретной функции передали в другую функцию или она вызывается из функции, указатель на которую передается в другую функцию - эта оптимизация не применима (так определяют крестовые компиляторы). Грязная функция, в таком контексте, всегда останется грязной, какую систему отсчета не брать.
                    Ответить
                    • А всё потому, что чистота функции - вещь безусловная. И сказать, чистая ли функция или нет, должно быть можно лишь по её определению, вне зависимости от контекста. И аналогия твоя - полное фуфло и к делу не относится.
                      Ответить
                      • Не переживай. За таких как ты, компилятор сам сооптимизирует данный вызов, если достаточно хороший.
                        Ответить
                  • В многопоточных программах дохрена вещей обломается, надо заводить критические секции на такие случаи, но разговор вообще не об этом.
                    Ответить
                • Ну давай, блестни знаниями.
                  Вот это:
                  (defun pure? ()
                    '(1 2 3))
                  чистая функция?
                  Ответить
                  • Жду его коммента типа:"Чиста функция нах"
                    Ответить
                    • Видимо, ответа не последует: скорее всего, он умылся своим говном и смылся.
                      Ответить
                      • Я был бы рад, если б этот тупой ебанько действительно смылся.
                        Но стопудово скоро он прожует то говно, которым его накормили и вернется.
                        Соскучится же за привычным вкусом во рту.
                        Ответить
    • крестопроблемы(tm)...
      Ответить
    • boost::numeric::ublas
      правда, однопоточное
      Ответить
      • boost::numeric::убля...
        Ответить
        • bosst::убля_пиздец_буст
          Ответить
          • бюст::убля
            Ответить
          • я понимаю твое горе, ведь в дельфи отсутствуют вменяемые библиотеки
            поэтому зла не держу
            Ответить
            • ты только бюст или stl вменяемыми не называй. пока 0:0
              Ответить
              • жалкая попытка, говнецо
                ты столько раз фейлился в школьных задачах, что твое мнение о профессиональном программировании даже со спортивной точки зрения никому не интересно
                Ответить
                • Пруф или не было.
                  Ответить
                  • http://govnokod.ru/8426#comment117851
                    http://govnokod.ru/8426#comment117910
                    час дня, почему не в школе? природоведение закончилось раньше?
                    Ответить
                    • А я причем здесь?
                      Ответить
                      • да-да, злые старшеклассники надругались над твоей репутацией, спиздив из твоего пенала пароль с говнокода, но ты еще вырастешь и покажешь им!
                        Ответить
                        • Небось сам написал от моего ника и сам зотроллел и чёта здесь ещё хвастается.
                          Ответить
            • rtl там вполне вменяема и обширена на самом деле
              Ответить
              • обратные матрицы считает?
                Ответить
                • А у тебя stl обратные матрицы считает? Также и в дельфи приходится искать отдельную библиотеку, как и тебе приходится лезть в сторонний бюст.
                  Ответить
                • 98% программистов сталкиваются с этой задачей наверное только в студенческие годы, какой смысл включать ее в rtl?
                  Ответить
                  • я далёк от rtl. базовые контейнеры там уже есть? ввод-вывод с фасетами и локализацией? абстрактные алгоритмы? в стл не так уж и много всего.
                    по беглому обзору апи в rtl она скорее похожа на стандартную библиотеку старичка Си
                    и да, буст кому то может и сторонний, а для кого то такой же стандартный, потому что используется в 100% С++ проектов на работе
                    Ответить
                    • >я далёк от rtl
                      правдивость какого-либо утверждения обратно пропорциональна удаленности утверждающего от обьекта обсуждения
                      Ответить
                      • Или истина или ложь в данной системе отсчета. Другого не дано.
                        Ответить
                        • Что, сегодня на физике рассказывали про системы отчёта? Решил похвастать своими знаниями здесь, на ГК?
                          Ответить
                          • У тебя какие-то проблемы вызывает вспоминание школьных и институтских знаний, что ты не веришь, что на это способны другие?
                            Ответить
                      • это плохой ответ на поставленные вопросы
                        есть ли во "вменяемой" библиотеке для дельфей то, что используется в работе каждый день - хотя бы контейнеры, обеспечивающие ожидаемую эффективность под конкретную задачу?
                        Ответить
                    • ...и да, там есть почти все что вы перечислили
                      Ответить
                      • о многом не прошу
                        интересует контейнер со сложностью доступа к i элементу за O(1)
                        контейнер с сложностью вставки в начало, конец и середину за O(1)
                        контейнер с сложностью поиска элемента по своему ключу в контейнере за O(logN) или лучше и, при этом, сложностью вставки лучше O(N)
                        алгоритмы сортировки, поиска по этим контейнерам
                        единообразие работы с ними
                        Ответить
                        • http://docwiki.embarcadero.com/VCL/en/Generics.Collections
                          Ответить
                        • +1,
                          да есть такая проблема - в старых версиях дельфи приходилось делать самому:(
                          Ответить
                  • >98% программистов сталкиваются с этой задачей наверное только в студенческие годы
                    Ооооо. Да ты над проектами серьёзными не работал.
                    Ответить
                    • наверное, почти за 6 лет ниразу не приходилось этим заниматься, а этот ГК конечно ну из очень серьезного проекта (:
                      я матан вообще стороной стараюсь обходить.
                      Ответить
                      • мне за 10+ лет тоже не приходилось
                        Ответить
                      • показать все, что скрыто>наверное, почти за 6 лет ниразу не приходилось этим заниматься
                        Если тебе не приходилось, то это не значит, что другим не приходилось.

                        >98% программистов сталкиваются с этой задачей наверное только в студенческие годы
                        Это твоё утверждение полностью голословно. Или подтверди статистикой или не зачет.
                        Ответить
                        • 1. наверное только в студенческие годы
                          2. с чего я какому-то гавну должен что-то доказывать?
                          Ответить
                        • Если тебе приходилось обращать матрицу, это вовсе не значит, что d_dev не работал над серьёзными проектами. Видимо, у кого-то проблемы с логикой.
                          Ответить
                      • показать все, что скрыто>я матан вообще стороной стараюсь обходить.
                        Формочки клепаешь и странички верстаешь? Зачет.
                        Ответить
      • namespace ublas = boost::numeric::ublas;
        
        	ublas::matrix<T> A(DIM, DIM);
        	// fill matrix A here ...
        
        	ublas::matrix<T> A_inv = ublas::identity_matrix<T>(A.size1());
        	ublas::permutation_matrix<> P(A.size1());
        
        	if (ublas::lu_factorize(A, P)) 
                    // матрица A вырожденная, поэтому, например
        		return 0;	
        	
        	ublas::lu_substitute(A, P, A_inv); // profit, результат в A_inv
        Ответить
        • имхо это читается немногим лучше чем ГК
          Ответить
          • а мне кажется, очень даже ничего, высокоуровнево.
            Ответить
            • Вот же:
              import Numeric.LinearAlgebra -- hmatrix
              inv $ (2><2) [1,2,0,1] -- выведет [1,-2,0,1]
              Ответить
              • быстродействие? потребление памяти? самостоятельно параллелится на доступные вычислительные ресурсы?
                вот приведенный выше код, мать его, работает в 1 поток, поэтому сливает на больших матрицах реализациям в том же Maple, поэтому нужно искать другие варианты
                в любом случае, С++ не самый удобный язык для математиков
                Ответить
                • > быстродействие? потребление памяти?
                  hmatrix реализована с помощью GSL, BLAS and LAPACK, так что полагаю, сравнимо.

                  > самостоятельно параллелится на доступные вычислительные ресурсы?
                  Удивился бы). А разве обратная матрица легко параллелится? (для такой задачи надо что-то вроде низкоуровнего mpi).
                  Ответить
                  • да, я когда трогал эту задачу сравнил производительность этого решения и мапла на больших матрицах, мапл умеет её решать параллельно, т.к. нагружал все ядра проца, а это решение - только одно
                    на маленьких матрицах мапл, конечно, сливал
                    проверял банальным образом - собрал из этого кода dll и подцпелял в мапле, смотрел мапловское время использования обоих способов на одинаковых матрицах

                    пришлось погуглить алгоритмы распараллеливания вычисления обратной матрицы, понял, что они существуют, но за пару вечеров я это не сотворю, на чем и остановился
                    Ответить
                    • > что они существуют
                      это понятно, имелось ввиду, что это нетривиально

                      На это натыкались: http://www.mcs.anl.gov/research/projects/mpi/libraries.html? (scalapack).
                      Возможно, есть пакеты и в дистрибутивах gnu/linux.
                      Ответить
          • а чего сложного прочитать
            создаем матрицу для результата и сразу инициируем её единичной матрицей
            подготавливаем матрицу перестановок соответствующего размера
            двумя методами проводим LU-разложение и получаем обратную матрицу
            никаких магических чисел и ограничений по размеру
            Ответить
            • собсно из вышеуказанного кода и детерминант исходной матрицы А нетрудно получить сразу после разложения lu_factorize
              Ответить
      • >однопоточное
        Почему?
        Ответить
    • унылая лаба.
      Ответить
    • заебала школота сраться, сегодня целый день на мобилу приходило уведомление о ваших пидорских разборках
      Ответить
    • Годный холивор. Реквестирую ещё два таких.
      Ответить

    Добавить комментарий