21 #ifndef SELDON_FILE_LAPACK_LINEAREQUATIONS_CXX
24 #include "Lapack_LinearEquations.hxx"
38 template <
class Prop0,
class Allocator0,
40 void GetLU(Matrix<float, Prop0, ColMajor, Allocator0>& A,
41 Vector<int, VectFull, Allocator1>& P,
46 #ifdef SELDON_CHECK_BOUNDS
47 if ((m <= 0)||(n <= 0))
48 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
51 P.Reallocate(min(m, n));
52 sgetrf_(&m, &n, A.GetData(), &m,
53 P.GetData(), &info.GetInfoRef());
55 #ifdef SELDON_LAPACK_CHECK_INFO
56 if (info.GetInfo() != 0)
57 throw LapackError(info.GetInfo(),
"GetLU",
58 "An error occured during the factorization.");
64 template <
class Prop0,
class Allocator0,
66 void GetLU(Matrix<double, Prop0, ColMajor, Allocator0>& A,
67 Vector<int, VectFull, Allocator1>& P,
73 #ifdef SELDON_CHECK_BOUNDS
74 if ((m <= 0)||(n <= 0))
75 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
78 P.Reallocate(min(m, n));
79 dgetrf_(&m, &n, A.GetData(), &m,
80 P.GetData(), &info.GetInfoRef());
82 #ifdef SELDON_LAPACK_CHECK_INFO
83 if (info.GetInfo() != 0)
84 throw LapackError(info.GetInfo(),
"GetLU",
85 "An error occured during the factorization.");
91 template <
class Prop0,
class Allocator0,
93 void GetLU(Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A,
94 Vector<int, VectFull, Allocator1>& P,
100 #ifdef SELDON_CHECK_BOUNDS
101 if ((m <= 0)||(n <= 0))
102 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
105 P.Reallocate(min(m, n));
106 cgetrf_(&m, &n, A.GetDataVoid(), &m,
107 P.GetData(), &info.GetInfoRef());
109 #ifdef SELDON_LAPACK_CHECK_INFO
110 if (info.GetInfo() != 0)
111 throw LapackError(info.GetInfo(),
"GetLU",
112 "An error occured during the factorization.");
118 template <
class Prop0,
class Allocator0,
120 void GetLU(Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A,
121 Vector<int, VectFull, Allocator1>& P,
127 #ifdef SELDON_CHECK_BOUNDS
128 if ((m <= 0)||(n <= 0))
129 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
132 P.Reallocate(min(m, n));
133 zgetrf_(&m, &n, A.GetDataVoid(), &m,
134 P.GetData(), &info.GetInfoRef());
136 #ifdef SELDON_LAPACK_CHECK_INFO
137 if (info.GetInfo() != 0)
138 throw LapackError(info.GetInfo(),
"GetLU",
139 "An error occured during the factorization.");
148 template <
class Prop0,
class Allocator0,
150 void GetLU(Matrix<float, Prop0, RowMajor, Allocator0>& A,
151 Vector<int, VectFull, Allocator1>& P,
157 #ifdef SELDON_CHECK_BOUNDS
158 if ((m <= 0)||(n <= 0))
159 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
162 P.Reallocate(min(m, n));
163 sgetrf_(&m, &n, A.GetData(), &m,
164 P.GetData(), &info.GetInfoRef());
166 #ifdef SELDON_LAPACK_CHECK_INFO
167 if (info.GetInfo() != 0)
168 throw LapackError(info.GetInfo(),
"GetLU",
169 "An error occured during the factorization.");
175 template <
class Prop0,
class Allocator0,
177 void GetLU(Matrix<double, Prop0, RowMajor, Allocator0>& A,
178 Vector<int, VectFull, Allocator1>& P,
184 #ifdef SELDON_CHECK_BOUNDS
185 if ((m <= 0)||(n <= 0))
186 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
189 P.Reallocate(min(m, n));
190 dgetrf_(&m, &n, A.GetData(), &m,
191 P.GetData(), &info.GetInfoRef());
193 #ifdef SELDON_LAPACK_CHECK_INFO
194 if (info.GetInfo() != 0)
195 throw LapackError(info.GetInfo(),
"GetLU",
196 "An error occured during the factorization.");
202 template <
class Prop0,
class Allocator0,
204 void GetLU(Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A,
205 Vector<int, VectFull, Allocator1>& P,
211 #ifdef SELDON_CHECK_BOUNDS
212 if ((m <= 0)||(n <= 0))
213 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
216 P.Reallocate(min(m, n));
217 cgetrf_(&m, &n, A.GetDataVoid(), &m,
218 P.GetData(), &info.GetInfoRef());
220 #ifdef SELDON_LAPACK_CHECK_INFO
221 if (info.GetInfo() != 0)
222 throw LapackError(info.GetInfo(),
"GetLU",
223 "An error occured during the factorization.");
229 template <
class Prop0,
class Allocator0,
231 void GetLU(Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A,
232 Vector<int, VectFull, Allocator1>& P,
238 #ifdef SELDON_CHECK_BOUNDS
239 if ((m <= 0)||(n <= 0))
240 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
243 P.Reallocate(min(m, n));
244 zgetrf_(&m, &n, A.GetDataVoid(), &m,
245 P.GetData(), &info.GetInfoRef());
247 #ifdef SELDON_LAPACK_CHECK_INFO
248 if (info.GetInfo() != 0)
249 throw LapackError(info.GetInfo(),
"GetLU",
250 "An error occured during the factorization.");
259 template <
class Prop0,
class Allocator0,
261 void GetLU(Matrix<float, Prop0, ColSym, Allocator0>& A,
262 Vector<int, VectFull, Allocator1>& P,
267 #ifdef SELDON_CHECK_BOUNDS
269 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
274 Vector<float,VectFull,Allocator0> work(lwork);
276 ssytrf_(&uplo, &m, A.GetData(), &m,
277 P.GetData(), work.GetData(), &lwork, &info.GetInfoRef());
279 #ifdef SELDON_LAPACK_CHECK_INFO
280 if (info.GetInfo() != 0)
281 throw LapackError(info.GetInfo(),
"GetLU",
282 "An error occured during the factorization.");
288 template <
class Prop0,
class Allocator0,
290 void GetLU(Matrix<double, Prop0, ColSym, Allocator0>& A,
291 Vector<int, VectFull, Allocator1>& P,
297 #ifdef SELDON_CHECK_BOUNDS
299 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
303 Vector<double,VectFull,Allocator0> work(lwork);
305 dsytrf_(&uplo, &m, A.GetData(), &m,
306 P.GetData(), work.GetData(), &lwork, &info.GetInfoRef());
308 #ifdef SELDON_LAPACK_CHECK_INFO
309 if (info.GetInfo() != 0)
310 throw LapackError(info.GetInfo(),
"GetLU",
311 "An error occured during the factorization.");
317 template <
class Prop0,
class Allocator0,
319 void GetLU(Matrix<complex<float>, Prop0, ColSym, Allocator0>& A,
320 Vector<int, VectFull, Allocator1>& P,
326 #ifdef SELDON_CHECK_BOUNDS
328 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
332 Vector<complex<float>,VectFull,Allocator0> work(lwork);
334 csytrf_(&uplo, &m, A.GetDataVoid(), &m,
335 P.GetData(), work.GetDataVoid(),
336 &lwork, &info.GetInfoRef());
338 #ifdef SELDON_LAPACK_CHECK_INFO
339 if (info.GetInfo() != 0)
340 throw LapackError(info.GetInfo(),
"GetLU",
341 "An error occured during the factorization.");
347 template <
class Prop0,
class Allocator0,
349 void GetLU(Matrix<complex<double>, Prop0, ColSym, Allocator0>& A,
350 Vector<int, VectFull, Allocator1>& P,
356 #ifdef SELDON_CHECK_BOUNDS
358 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
362 Vector<complex<double>,VectFull,Allocator0> work(lwork);
364 zsytrf_(&uplo, &m, A.GetDataVoid(), &m,
365 P.GetData(), work.GetDataVoid(),
366 &lwork, &info.GetInfoRef());
368 #ifdef SELDON_LAPACK_CHECK_INFO
369 if (info.GetInfo() != 0)
370 throw LapackError(info.GetInfo(),
"GetLU",
371 "An error occured during the factorization.");
380 template <
class Prop0,
class Allocator0,
382 void GetLU(Matrix<float, Prop0, ColSymPacked, Allocator0>& A,
383 Vector<int, VectFull, Allocator1>& P,
388 #ifdef SELDON_CHECK_BOUNDS
390 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
395 ssptrf_(&uplo, &m, A.GetData(),
396 P.GetData(), &info.GetInfoRef());
398 #ifdef SELDON_LAPACK_CHECK_INFO
399 if (info.GetInfo() != 0)
400 throw LapackError(info.GetInfo(),
"GetLU",
401 "An error occured during the factorization.");
407 template <
class Prop0,
class Allocator0,
409 void GetLU(Matrix<double, Prop0, ColSymPacked, Allocator0>& A,
410 Vector<int, VectFull, Allocator1>& P,
415 #ifdef SELDON_CHECK_BOUNDS
417 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
422 dsptrf_(&uplo, &m, A.GetData(),
423 P.GetData(), &info.GetInfoRef());
425 #ifdef SELDON_LAPACK_CHECK_INFO
426 if (info.GetInfo() != 0)
427 throw LapackError(info.GetInfo(),
"GetLU",
428 "An error occured during the factorization.");
434 template <
class Prop0,
class Allocator0,
436 void GetLU(Matrix<complex<float>, Prop0, ColSymPacked, Allocator0>& A,
437 Vector<int, VectFull, Allocator1>& P,
442 #ifdef SELDON_CHECK_BOUNDS
444 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
449 csptrf_(&uplo, &m, A.GetDataVoid(),
450 P.GetData(), &info.GetInfoRef());
452 #ifdef SELDON_LAPACK_CHECK_INFO
453 if (info.GetInfo() != 0)
454 throw LapackError(info.GetInfo(),
"GetLU",
455 "An error occured during the factorization.");
461 template <
class Prop0,
class Allocator0,
463 void GetLU(Matrix<complex<double>, Prop0, ColSymPacked, Allocator0>& A,
464 Vector<int, VectFull, Allocator1>& P,
469 #ifdef SELDON_CHECK_BOUNDS
471 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
476 zsptrf_(&uplo, &m, A.GetDataVoid(),
477 P.GetData(), &info.GetInfoRef());
479 #ifdef SELDON_LAPACK_CHECK_INFO
480 if (info.GetInfo() != 0)
481 throw LapackError(info.GetInfo(),
"GetLU",
482 "An error occured during the factorization.");
491 template <
class Prop0,
class Allocator0,
493 void GetLU(SeldonUplo Uplo,
494 Matrix<float, Prop0, ColSymPacked, Allocator0>& A,
495 Vector<int, VectFull, Allocator1>& P,
500 #ifdef SELDON_CHECK_BOUNDS
502 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
505 char uplo(Uplo.Char());
507 ssptrf_(&uplo, &m, A.GetData(),
508 P.GetData(), &info.GetInfoRef());
510 #ifdef SELDON_LAPACK_CHECK_INFO
511 if (info.GetInfo() != 0)
512 throw LapackError(info.GetInfo(),
"GetLU",
513 "An error occured during the factorization.");
519 template <
class Prop0,
class Allocator0,
521 void GetLU(SeldonUplo Uplo,
522 Matrix<double, Prop0, ColSymPacked, Allocator0>& A,
523 Vector<int, VectFull, Allocator1>& P,
528 #ifdef SELDON_CHECK_BOUNDS
530 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
533 char uplo(Uplo.Char());
535 dsptrf_(&uplo, &m, A.GetData(),
536 P.GetData(), &info.GetInfoRef());
538 #ifdef SELDON_LAPACK_CHECK_INFO
539 if (info.GetInfo() != 0)
540 throw LapackError(info.GetInfo(),
"GetLU",
541 "An error occured during the factorization.");
547 template <
class Prop0,
class Allocator0,
549 void GetLU(SeldonUplo Uplo,
550 Matrix<complex<float>, Prop0, ColSymPacked, Allocator0>& A,
551 Vector<int, VectFull, Allocator1>& P,
556 #ifdef SELDON_CHECK_BOUNDS
558 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
561 char uplo(Uplo.Char());
563 csptrf_(&uplo, &m, A.GetDataVoid(),
564 P.GetData(), &info.GetInfoRef());
566 #ifdef SELDON_LAPACK_CHECK_INFO
567 if (info.GetInfo() != 0)
568 throw LapackError(info.GetInfo(),
"GetLU",
569 "An error occured during the factorization.");
575 template <
class Prop0,
class Allocator0,
577 void GetLU(SeldonUplo Uplo,
578 Matrix<complex<double>, Prop0, ColSymPacked, Allocator0>& A,
579 Vector<int, VectFull, Allocator1>& P,
584 #ifdef SELDON_CHECK_BOUNDS
586 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
589 char uplo(Uplo.Char());
591 zsptrf_(&uplo, &m, A.GetDataVoid(),
592 P.GetData(), &info.GetInfoRef());
594 #ifdef SELDON_LAPACK_CHECK_INFO
595 if (info.GetInfo() != 0)
596 throw LapackError(info.GetInfo(),
"GetLU",
597 "An error occured during the factorization.");
606 template <
class Prop0,
class Allocator0,
608 void GetLU(Matrix<float, Prop0, RowSym, Allocator0>& A,
609 Vector<int, VectFull, Allocator1>& P,
614 #ifdef SELDON_CHECK_BOUNDS
616 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
621 Vector<float, VectFull, Allocator0> work(lwork);
623 ssytrf_(&uplo, &m, A.GetData(), &m,
624 P.GetData(), work.GetData(), &lwork, &info.GetInfoRef());
626 #ifdef SELDON_LAPACK_CHECK_INFO
627 if (info.GetInfo() != 0)
628 throw LapackError(info.GetInfo(),
"GetLU",
629 "An error occured during the factorization.");
635 template <
class Prop0,
class Allocator0,
637 void GetLU(Matrix<double, Prop0, RowSym, Allocator0>& A,
638 Vector<int, VectFull, Allocator1>& P,
643 #ifdef SELDON_CHECK_BOUNDS
645 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
650 Vector<double, VectFull, Allocator0> work(lwork);
652 dsytrf_(&uplo, &m, A.GetData(), &m,
653 P.GetData(), work.GetData(), &lwork, &info.GetInfoRef());
655 #ifdef SELDON_LAPACK_CHECK_INFO
656 if (info.GetInfo() != 0)
657 throw LapackError(info.GetInfo(),
"GetLU",
658 "An error occured during the factorization.");
664 template <
class Prop0,
class Allocator0,
666 void GetLU(Matrix<complex<float>, Prop0, RowSym, Allocator0>& A,
667 Vector<int, VectFull, Allocator1>& P,
672 #ifdef SELDON_CHECK_BOUNDS
674 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
679 Vector<complex<float>, VectFull, Allocator0> work(lwork);
681 csytrf_(&uplo, &m, A.GetDataVoid(), &m,
682 P.GetData(), work.GetDataVoid(),
683 &lwork, &info.GetInfoRef());
685 #ifdef SELDON_LAPACK_CHECK_INFO
686 if (info.GetInfo() != 0)
687 throw LapackError(info.GetInfo(),
"GetLU",
688 "An error occured during the factorization.");
694 template <
class Prop0,
class Allocator0,
696 void GetLU(Matrix<complex<double>, Prop0, RowSym, Allocator0>& A,
697 Vector<int, VectFull, Allocator1>& P,
702 #ifdef SELDON_CHECK_BOUNDS
704 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
709 Vector<complex<double>, VectFull, Allocator0> work(lwork);
711 zsytrf_(&uplo, &m, A.GetDataVoid(), &m,
712 P.GetData(), work.GetDataVoid(),
713 &lwork, &info.GetInfoRef());
715 #ifdef SELDON_LAPACK_CHECK_INFO
716 if (info.GetInfo() != 0)
717 throw LapackError(info.GetInfo(),
"GetLU",
718 "An error occured during the factorization.");
727 template <
class Prop0,
class Allocator0,
729 void GetLU(Matrix<float, Prop0, RowSymPacked, Allocator0>& A,
730 Vector<int, VectFull, Allocator1>& P,
735 #ifdef SELDON_CHECK_BOUNDS
737 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
742 ssptrf_(&uplo, &m, A.GetData(),
743 P.GetData(), &info.GetInfoRef());
745 #ifdef SELDON_LAPACK_CHECK_INFO
746 if (info.GetInfo() != 0)
747 throw LapackError(info.GetInfo(),
"GetLU",
748 "An error occured during the factorization.");
754 template <
class Prop0,
class Allocator0,
756 void GetLU(Matrix<double, Prop0, RowSymPacked, Allocator0>& A,
757 Vector<int, VectFull, Allocator1>& P,
762 #ifdef SELDON_CHECK_BOUNDS
764 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
769 dsptrf_(&uplo, &m, A.GetData(),
770 P.GetData(), &info.GetInfoRef());
772 #ifdef SELDON_LAPACK_CHECK_INFO
773 if (info.GetInfo() != 0)
774 throw LapackError(info.GetInfo(),
"GetLU",
775 "An error occured during the factorization.");
781 template <
class Prop0,
class Allocator0,
783 void GetLU(Matrix<complex<float>, Prop0, RowSymPacked, Allocator0>& A,
784 Vector<int, VectFull, Allocator1>& P,
789 #ifdef SELDON_CHECK_BOUNDS
791 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
796 csptrf_(&uplo, &m, A.GetDataVoid(),
797 P.GetData(), &info.GetInfoRef());
799 #ifdef SELDON_LAPACK_CHECK_INFO
800 if (info.GetInfo() != 0)
801 throw LapackError(info.GetInfo(),
"GetLU",
802 "An error occured during the factorization.");
808 template <
class Prop0,
class Allocator0,
810 void GetLU(Matrix<complex<double>, Prop0, RowSymPacked, Allocator0>& A,
811 Vector<int, VectFull, Allocator1>& P,
816 #ifdef SELDON_CHECK_BOUNDS
818 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
823 zsptrf_(&uplo, &m, A.GetDataVoid(),
824 P.GetData(), &info.GetInfoRef());
826 #ifdef SELDON_LAPACK_CHECK_INFO
827 if (info.GetInfo() != 0)
828 throw LapackError(info.GetInfo(),
"GetLU",
829 "An error occured during the factorization.");
838 template <
class Prop0,
class Allocator0,
840 void GetLU(SeldonUplo Uplo,
841 Matrix<float, Prop0, RowSymPacked, Allocator0>& A,
842 Vector<int, VectFull, Allocator1>& P,
847 #ifdef SELDON_CHECK_BOUNDS
849 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
852 char uplo(Uplo.RevChar());
854 ssptrf_(&uplo, &m, A.GetData(),
855 P.GetData(), &info.GetInfoRef());
857 #ifdef SELDON_LAPACK_CHECK_INFO
858 if (info.GetInfo() != 0)
859 throw LapackError(info.GetInfo(),
"GetLU",
860 "An error occured during the factorization.");
866 template <
class Prop0,
class Allocator0,
868 void GetLU(SeldonUplo Uplo,
869 Matrix<double, Prop0, RowSymPacked, Allocator0>& A,
870 Vector<int, VectFull, Allocator1>& P,
875 #ifdef SELDON_CHECK_BOUNDS
877 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
880 char uplo(Uplo.RevChar());
882 dsptrf_(&uplo, &m, A.GetData(),
883 P.GetData(), &info.GetInfoRef());
885 #ifdef SELDON_LAPACK_CHECK_INFO
886 if (info.GetInfo() != 0)
887 throw LapackError(info.GetInfo(),
"GetLU",
888 "An error occured during the factorization.");
894 template <
class Prop0,
class Allocator0,
896 void GetLU(SeldonUplo Uplo,
897 Matrix<complex<float>, Prop0, RowSymPacked, Allocator0>& A,
898 Vector<int, VectFull, Allocator1>& P,
903 #ifdef SELDON_CHECK_BOUNDS
905 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
908 char uplo(Uplo.RevChar());
910 csptrf_(&uplo, &m, A.GetDataVoid(),
911 P.GetData(), &info.GetInfoRef());
913 #ifdef SELDON_LAPACK_CHECK_INFO
914 if (info.GetInfo() != 0)
915 throw LapackError(info.GetInfo(),
"GetLU",
916 "An error occured during the factorization.");
922 template <
class Prop0,
class Allocator0,
924 void GetLU(SeldonUplo Uplo,
925 Matrix<complex<double>, Prop0, RowSymPacked, Allocator0>& A,
926 Vector<int, VectFull, Allocator1>& P,
931 #ifdef SELDON_CHECK_BOUNDS
933 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
936 char uplo(Uplo.RevChar());
938 zsptrf_(&uplo, &m, A.GetDataVoid(),
939 P.GetData(), &info.GetInfoRef());
941 #ifdef SELDON_LAPACK_CHECK_INFO
942 if (info.GetInfo() != 0)
943 throw LapackError(info.GetInfo(),
"GetLU",
944 "An error occured during the factorization.");
953 template <
class Prop0,
class Allocator0,
955 void GetLU(Matrix<complex<float>, Prop0, ColHerm, Allocator0>& A,
956 Vector<int, VectFull, Allocator1>& P,
961 #ifdef SELDON_CHECK_BOUNDS
963 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
968 Vector<complex<float>, VectFull, Allocator0> work(lwork);
970 chetrf_(&uplo, &m, A.GetDataVoid(), &m,
971 P.GetData(), work.GetDataVoid(),
972 &lwork, &info.GetInfoRef());
974 #ifdef SELDON_LAPACK_CHECK_INFO
975 if (info.GetInfo() != 0)
976 throw LapackError(info.GetInfo(),
"GetLU",
977 "An error occured during the factorization.");
983 template <
class Prop0,
class Allocator0,
985 void GetLU(Matrix<complex<double>, Prop0, ColHerm, Allocator0>& A,
986 Vector<int, VectFull, Allocator1>& P,
991 #ifdef SELDON_CHECK_BOUNDS
993 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
998 Vector<complex<double>, VectFull, Allocator0> work(lwork);
1000 zhetrf_(&uplo, &m, A.GetDataVoid(), &m,
1001 P.GetData(), work.GetDataVoid(),
1002 &lwork, &info.GetInfoRef());
1004 #ifdef SELDON_LAPACK_CHECK_INFO
1005 if (info.GetInfo() != 0)
1006 throw LapackError(info.GetInfo(),
"GetLU",
1007 "An error occured during the factorization.");
1016 template <
class Prop0,
class Allocator0,
1018 void GetLU(Matrix<complex<float>, Prop0, ColHermPacked, Allocator0>& A,
1019 Vector<int, VectFull, Allocator1>& P,
1024 #ifdef SELDON_CHECK_BOUNDS
1026 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
1031 chptrf_(&uplo, &m, A.GetDataVoid(),
1032 P.GetData(), &info.GetInfoRef());
1034 #ifdef SELDON_LAPACK_CHECK_INFO
1035 if (info.GetInfo() != 0)
1036 throw LapackError(info.GetInfo(),
"GetLU",
1037 "An error occured during the factorization.");
1043 template <
class Prop0,
class Allocator0,
1045 void GetLU(Matrix<complex<double>, Prop0, ColHermPacked, Allocator0>& A,
1046 Vector<int, VectFull, Allocator1>& P,
1051 #ifdef SELDON_CHECK_DIMENSIONS
1053 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
1058 zhptrf_(&uplo, &m, A.GetDataVoid(),
1059 P.GetData(), &info.GetInfoRef());
1061 #ifdef SELDON_LAPACK_CHECK_INFO
1062 if (info.GetInfo() != 0)
1063 throw LapackError(info.GetInfo(),
"GetLU",
1064 "An error occured during the factorization.");
1073 template <
class Prop0,
class Allocator0,
1075 void GetLU(Matrix<complex<float>, Prop0, RowHerm, Allocator0>& A,
1076 Vector<int, VectFull, Allocator1>& P,
1081 #ifdef SELDON_CHECK_DIMENSIONS
1083 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
1088 Vector<complex<float>, VectFull, Allocator0> work(lwork);
1090 chetrf_(&uplo, &m, A.GetDataVoid(), &m,
1091 P.GetData(), work.GetDataVoid(),
1092 &lwork, &info.GetInfoRef());
1094 #ifdef SELDON_LAPACK_CHECK_INFO
1095 if (info.GetInfo() != 0)
1096 throw LapackError(info.GetInfo(),
"GetLU",
1097 "An error occured during the factorization.");
1103 template <
class Prop0,
class Allocator0,
1105 void GetLU(Matrix<complex<double>, Prop0, RowHerm, Allocator0>& A,
1106 Vector<int, VectFull, Allocator1>& P,
1111 #ifdef SELDON_CHECK_DIMENSIONS
1113 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
1118 Vector<complex<double>, VectFull, Allocator0> work(lwork);
1120 zhetrf_(&uplo, &m, A.GetDataVoid(), &m,
1121 P.GetData(), work.GetDataVoid(),
1122 &lwork, &info.GetInfoRef());
1124 #ifdef SELDON_LAPACK_CHECK_INFO
1125 if (info.GetInfo() != 0)
1126 throw LapackError(info.GetInfo(),
"GetLU",
1127 "An error occured during the factorization.");
1136 template <
class Prop0,
class Allocator0,
1138 void GetLU(Matrix<complex<float>, Prop0, RowHermPacked, Allocator0>& A,
1139 Vector<int, VectFull, Allocator1>& P,
1144 #ifdef SELDON_CHECK_DIMENSIONS
1146 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
1151 chptrf_(&uplo, &m, A.GetDataVoid(),
1152 P.GetData(), &info.GetInfoRef());
1154 #ifdef SELDON_LAPACK_CHECK_INFO
1155 if (info.GetInfo() != 0)
1156 throw LapackError(info.GetInfo(),
"GetLU",
1157 "An error occured during the factorization.");
1163 template <
class Prop0,
class Allocator0,
1165 void GetLU(Matrix<complex<double>, Prop0, RowHermPacked, Allocator0>& A,
1166 Vector<int, VectFull, Allocator1>& P,
1171 #ifdef SELDON_CHECK_DIMENSIONS
1173 throw WrongDim(
"GetLU",
"Provide a non-empty matrix");
1178 zhptrf_(&uplo, &m, A.GetDataVoid(),
1179 P.GetData(), &info.GetInfoRef());
1181 #ifdef SELDON_LAPACK_CHECK_INFO
1182 if (info.GetInfo() != 0)
1183 throw LapackError(info.GetInfo(),
"GetLU",
1184 "An error occured during the factorization.");
1202 template <
class Prop0,
class Allocator0,
1203 class Allocator1,
class Allocator2>
1204 void SolveLuVector(
const Matrix<float, Prop0, ColMajor, Allocator0>& A,
1205 const Vector<int, VectFull, Allocator1>& P,
1206 Vector<float, VectFull, Allocator2>& b,
1210 #ifdef SELDON_CHECK_DIMENSIONS
1211 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1217 sgetrs_(&trans, &m, &nrhs, A.GetData(), &m, P.GetData(),
1218 b.GetData(), &m, &info.GetInfoRef() );
1222 template <
class Prop0,
class Allocator0,
1223 class Allocator1,
class Allocator2>
1224 void SolveLuVector(
const Matrix<double, Prop0, ColMajor, Allocator0>& A,
1225 const Vector<int, VectFull, Allocator1>& P,
1226 Vector<double, VectFull, Allocator2>& b,
1230 #ifdef SELDON_CHECK_DIMENSIONS
1231 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1237 dgetrs_(&trans, &m, &nrhs, A.GetData(), &m,P.GetData(),
1238 b.GetData(), &m, &info.GetInfoRef() );
1242 template <
class Prop0,
class Allocator0,
1243 class Allocator1,
class Allocator2>
1244 void SolveLuVector(
const Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A,
1245 const Vector<int, VectFull, Allocator1>& P,
1246 Vector<complex<float>, VectFull, Allocator2>& b,
1250 #ifdef SELDON_CHECK_DIMENSIONS
1251 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1257 cgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m,
1258 P.GetData(), b.GetDataVoid(),
1259 &m, &info.GetInfoRef() );
1263 template <
class Prop0,
class Allocator0,
1264 class Allocator1,
class Allocator2>
1265 void SolveLuVector(
const Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A,
1266 const Vector<int, VectFull, Allocator1>& P,
1267 Vector<complex<double>, VectFull, Allocator2>& b,
1271 #ifdef SELDON_CHECK_DIMENSIONS
1272 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1278 zgetrs_(&trans, &m, &nrhs, A.GetData(), &m,
1279 P.GetData(), b.GetDataVoid(),
1280 &m, &info.GetInfoRef() );
1287 template <
class Prop0,
class Allocator0,
1288 class Allocator1,
class Allocator2>
1290 const Matrix<float, Prop0, ColMajor, Allocator0>& A,
1291 const Vector<int, VectFull, Allocator1>& P,
1292 Vector<float, VectFull, Allocator2>& b,
1296 #ifdef SELDON_CHECK_DIMENSIONS
1297 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1302 char trans = TransA.Char();
1303 sgetrs_(&trans, &m, &nrhs, A.GetData(), &m, P.GetData(),
1304 b.GetData(), &m, &info.GetInfoRef());
1307 template <
class Prop0,
class Allocator0,
1308 class Allocator1,
class Allocator2>
1310 const Matrix<double, Prop0, ColMajor, Allocator0>& A,
1311 const Vector<int, VectFull, Allocator1>& P,
1312 Vector<double, VectFull, Allocator2>& b,
1316 #ifdef SELDON_CHECK_DIMENSIONS
1317 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1322 char trans = TransA.Char();
1323 dgetrs_(&trans, &m, &nrhs, A.GetData(), &m, P.GetData(),
1324 b.GetData(), &m, &info.GetInfoRef());
1327 template <
class Prop0,
class Allocator0,
1328 class Allocator1,
class Allocator2>
1330 const Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A,
1331 const Vector<int, VectFull, Allocator1>& P,
1332 Vector<complex<float>, VectFull, Allocator2>& b,
1336 #ifdef SELDON_CHECK_DIMENSIONS
1337 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1342 char trans = TransA.Char();
1343 cgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, P.GetData(),
1344 b.GetDataVoid(), &m, &info.GetInfoRef());
1347 template <
class Prop0,
class Allocator0,
1348 class Allocator1,
class Allocator2>
1350 const Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A,
1351 const Vector<int, VectFull, Allocator1>& P,
1352 Vector<complex<double>, VectFull, Allocator2>& b,
1356 #ifdef SELDON_CHECK_DIMENSIONS
1357 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1362 char trans = TransA.Char();
1363 zgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, P.GetData(),
1364 b.GetDataVoid(), &m, &info.GetInfoRef());
1370 template <
class Prop0,
class Allocator0,
1371 class Allocator1,
class Allocator2>
1372 void SolveLuVector(
const Matrix<float, Prop0, RowMajor, Allocator0>& A,
1373 const Vector<int, VectFull, Allocator1>& P,
1374 Vector<float, VectFull, Allocator2>& b,
1378 #ifdef SELDON_CHECK_DIMENSIONS
1379 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1385 sgetrs_(&trans, &m, &nrhs, A.GetData(), &m,
1386 P.GetData(), b.GetData(), &m, &info.GetInfoRef() );
1390 template <
class Prop0,
class Allocator0,
1391 class Allocator1,
class Allocator2>
1392 void SolveLuVector(
const Matrix<double, Prop0, RowMajor, Allocator0>& A,
1393 const Vector<int, VectFull, Allocator1>& P,
1394 Vector<double, VectFull, Allocator2>& b,
1398 #ifdef SELDON_CHECK_DIMENSIONS
1399 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1405 dgetrs_(&trans, &m, &nrhs, A.GetData(), &m,
1406 P.GetData(), b.GetData(), &m, &info.GetInfoRef() );
1410 template <
class Prop0,
class Allocator0,
1411 class Allocator1,
class Allocator2>
1412 void SolveLuVector(
const Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A,
1413 const Vector<int, VectFull, Allocator1>& P,
1414 Vector<complex<float>, VectFull, Allocator2>& b,
1418 #ifdef SELDON_CHECK_DIMENSIONS
1419 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1425 cgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m,
1426 P.GetData(), b.GetData(), &m, &info.GetInfoRef() );
1430 template <
class Prop0,
class Allocator0,
1431 class Allocator1,
class Allocator2>
1432 void SolveLuVector(
const Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A,
1433 const Vector<int, VectFull, Allocator1>& P,
1434 Vector<complex<double>, VectFull, Allocator2>& b,
1438 #ifdef SELDON_CHECK_DIMENSIONS
1439 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1445 zgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m,
1446 P.GetData(), b.GetData(), &m, &info.GetInfoRef() );
1453 template <
class Prop0,
class Allocator0,
1454 class Allocator1,
class Allocator2>
1456 const Matrix<float, Prop0, RowMajor, Allocator0>& A,
1457 const Vector<int, VectFull, Allocator1>& P,
1458 Vector<float, VectFull, Allocator2>& b,
1462 #ifdef SELDON_CHECK_DIMENSIONS
1463 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1468 char trans = TransA.RevChar();
1469 sgetrs_(&trans, &m, &nrhs, A.GetData(), &m, P.GetData(),
1470 b.GetData(), &m, &info.GetInfoRef());
1473 template <
class Prop0,
class Allocator0,
1474 class Allocator1,
class Allocator2>
1476 const Matrix<double, Prop0, RowMajor, Allocator0>& A,
1477 const Vector<int, VectFull, Allocator1>& P,
1478 Vector<double, VectFull, Allocator2>& b,
1482 #ifdef SELDON_CHECK_DIMENSIONS
1483 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1488 char trans = TransA.RevChar();
1489 dgetrs_(&trans, &m, &nrhs, A.GetData(), &m, P.GetData(),
1490 b.GetData(), &m, &info.GetInfoRef());
1493 template <
class Prop0,
class Allocator0,
1494 class Allocator1,
class Allocator2>
1496 const Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A,
1497 const Vector<int, VectFull, Allocator1>& P,
1498 Vector<complex<float>, VectFull, Allocator2>& b,
1502 #ifdef SELDON_CHECK_DIMENSIONS
1503 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1508 char trans = TransA.RevChar();
1509 if (TransA.ConjTrans())
1512 cgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, P.GetData(),
1513 b.GetDataVoid(), &m, &info.GetInfoRef());
1515 if (TransA.ConjTrans())
1519 template <
class Prop0,
class Allocator0,
1520 class Allocator1,
class Allocator2>
1522 const Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A,
1523 const Vector<int, VectFull, Allocator1>& P,
1524 Vector<complex<double>, VectFull, Allocator2>& b,
1528 #ifdef SELDON_CHECK_DIMENSIONS
1529 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1534 char trans = TransA.RevChar();
1535 if (TransA.ConjTrans())
1538 zgetrs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, P.GetData(),
1539 b.GetDataVoid(), &m, &info.GetInfoRef());
1541 if (TransA.ConjTrans())
1549 template <
class Prop0,
class Allocator0,
1550 class Allocator1,
class Allocator2>
1551 void SolveLuVector(
const Matrix<float, Prop0, ColSym, Allocator0>& A,
1552 const Vector<int, VectFull, Allocator1>& P,
1553 Vector<float, VectFull, Allocator2>& b,
1557 #ifdef SELDON_CHECK_DIMENSIONS
1558 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1561 int m = A.GetM();
int nrhs = 1;
1563 ssytrs_(&uplo, &m, &nrhs, A.GetData(), &m,
1564 P.GetData(), b.GetData(), &m, &info.GetInfoRef());
1568 template <
class Prop0,
class Allocator0,
1569 class Allocator1,
class Allocator2>
1570 void SolveLuVector(
const Matrix<double, Prop0, ColSym, Allocator0>& A,
1571 const Vector<int, VectFull, Allocator1>& P,
1572 Vector<double, VectFull, Allocator2>& b,
1576 #ifdef SELDON_CHECK_DIMENSIONS
1577 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1580 int m = A.GetM();
int nrhs = 1;
1582 dsytrs_(&uplo, &m, &nrhs, A.GetData(), &m,
1583 P.GetData(), b.GetData(), &m, &info.GetInfoRef());
1587 template <
class Prop0,
class Allocator0,
1588 class Allocator1,
class Allocator2>
1589 void SolveLuVector(
const Matrix<complex<float>, Prop0, ColSym, Allocator0>& A,
1590 const Vector<int, VectFull, Allocator1>& P,
1591 Vector<complex<float>, VectFull, Allocator2>& b,
1595 #ifdef SELDON_CHECK_DIMENSIONS
1596 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1599 int m = A.GetM();
int nrhs = 1;
1601 csytrs_(&uplo, &m, & nrhs, A.GetDataVoid(), &m,
1602 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1606 template <
class Prop0,
class Allocator0,
1607 class Allocator1,
class Allocator2>
1608 void SolveLuVector(
const Matrix<complex<double>, Prop0, ColSym, Allocator0>& A,
1609 const Vector<int, VectFull, Allocator1>& P,
1610 Vector<complex<double>, VectFull, Allocator2>& b,
1614 #ifdef SELDON_CHECK_DIMENSIONS
1615 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1618 int m = A.GetM();
int nrhs = 1;
1620 zsytrs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m,
1621 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1628 template <
class Prop0,
class Allocator0,
1629 class Allocator1,
class Allocator2>
1630 void SolveLuVector(
const Matrix<float, Prop0, ColSymPacked, Allocator0>& A,
1631 const Vector<int, VectFull, Allocator1>& P,
1632 Vector<float, VectFull, Allocator2>& b,
1636 #ifdef SELDON_CHECK_DIMENSIONS
1637 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1643 ssptrs_(&uplo, &m, &nrhs, A.GetData(), P.GetData(),
1644 b.GetData(), &m, &info.GetInfoRef() );
1648 template <
class Prop0,
class Allocator0,
1649 class Allocator1,
class Allocator2>
1650 void SolveLuVector(
const Matrix<double, Prop0, ColSymPacked, Allocator0>& A,
1651 const Vector<int, VectFull, Allocator1>& P,
1652 Vector<double, VectFull, Allocator2>& b,
1656 #ifdef SELDON_CHECK_DIMENSIONS
1657 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1663 dsptrs_(&uplo, &m, &nrhs, A.GetData(), P.GetData(),
1664 b.GetData(), &m, &info.GetInfoRef() );
1668 template <
class Prop0,
class Allocator0,
1669 class Allocator1,
class Allocator2>
1670 void SolveLuVector(
const Matrix<complex<float>, Prop0, ColSymPacked,
1671 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
1672 Vector<complex<float>, VectFull, Allocator2>& b,
1676 #ifdef SELDON_CHECK_DIMENSIONS
1677 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1683 csptrs_(&uplo, &m, &nrhs, A.GetDataVoid(), P.GetData(),
1684 b.GetData(), &m, &info.GetInfoRef() );
1688 template <
class Prop0,
class Allocator0,
1689 class Allocator1,
class Allocator2>
1690 void SolveLuVector(
const Matrix<complex<double>, Prop0, ColSymPacked,
1691 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
1692 Vector<complex<double>, VectFull, Allocator2>& b,
1696 #ifdef SELDON_CHECK_DIMENSIONS
1697 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1703 zsptrs_(&uplo, &m, &nrhs, A.GetDataVoid(), P.GetData(),
1704 b.GetData(), &m, &info.GetInfoRef() );
1711 template <
class Prop0,
class Allocator0,
1712 class Allocator1,
class Allocator2>
1713 void SolveLuVector(
const Matrix<float, Prop0, RowSym, Allocator0>& A,
1714 const Vector<int, VectFull, Allocator1>& P,
1715 Vector<float, VectFull, Allocator2>& b,
1719 #ifdef SELDON_CHECK_DIMENSIONS
1720 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1723 int m = A.GetM();
int nrhs = 1;
1725 ssytrs_(&uplo, &m, &nrhs, A.GetData(), &m,
1726 P.GetData(), b.GetData(), &m, &info.GetInfoRef());
1730 template <
class Prop0,
class Allocator0,
1731 class Allocator1,
class Allocator2>
1732 void SolveLuVector(
const Matrix<double, Prop0, RowSym, Allocator0>& A,
1733 const Vector<int, VectFull, Allocator1>& P,
1734 Vector<double, VectFull, Allocator2>& b,
1738 #ifdef SELDON_CHECK_DIMENSIONS
1739 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1742 int m = A.GetM();
int nrhs = 1;
1744 dsytrs_(&uplo, &m, &nrhs, A.GetData(), &m,
1745 P.GetData(), b.GetData(), &m, &info.GetInfoRef());
1749 template <
class Prop0,
class Allocator0,
1750 class Allocator1,
class Allocator2>
1751 void SolveLuVector(
const Matrix<complex<float>, Prop0, RowSym, Allocator0>& A,
1752 const Vector<int, VectFull, Allocator1>& P,
1753 Vector<complex<float>, VectFull, Allocator2>& b,
1757 #ifdef SELDON_CHECK_DIMENSIONS
1758 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1761 int m = A.GetM();
int nrhs = 1;
1763 csytrs_(&uplo, &m, & nrhs, A.GetDataVoid(), &m,
1764 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1768 template <
class Prop0,
class Allocator0,
1769 class Allocator1,
class Allocator2>
1770 void SolveLuVector(
const Matrix<complex<double>, Prop0, RowSym, Allocator0>& A,
1771 const Vector<int, VectFull, Allocator1>& P,
1772 Vector<complex<double>, VectFull, Allocator2>& b,
1776 #ifdef SELDON_CHECK_DIMENSIONS
1777 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1780 int m = A.GetM();
int nrhs = 1;
1782 zsytrs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m,
1783 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1790 template <
class Prop0,
class Allocator0,
1791 class Allocator1,
class Allocator2>
1792 void SolveLuVector(
const Matrix<float, Prop0, RowSymPacked, Allocator0>& A,
1793 const Vector<int, VectFull, Allocator1>& P,
1794 Vector<float, VectFull, Allocator2>& b,
1798 #ifdef SELDON_CHECK_DIMENSIONS
1799 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1805 ssptrs_(&uplo, &m, &nrhs, A.GetData(), P.GetData(),
1806 b.GetData(), &m, &info.GetInfoRef() );
1810 template <
class Prop0,
class Allocator0,
1811 class Allocator1,
class Allocator2>
1812 void SolveLuVector(
const Matrix<double, Prop0, RowSymPacked, Allocator0>& A,
1813 const Vector<int, VectFull, Allocator1>& P,
1814 Vector<double, VectFull, Allocator2>& b,
1818 #ifdef SELDON_CHECK_DIMENSIONS
1819 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1825 dsptrs_(&uplo, &m, &nrhs, A.GetData(), P.GetData(),
1826 b.GetData(), &m, &info.GetInfoRef() );
1830 template <
class Prop0,
class Allocator0,
1831 class Allocator1,
class Allocator2>
1832 void SolveLuVector(
const Matrix<complex<float>, Prop0, RowSymPacked,
1833 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
1834 Vector<complex<float>, VectFull, Allocator2>& b,
1838 #ifdef SELDON_CHECK_DIMENSIONS
1839 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1845 csptrs_(&uplo, &m, &nrhs, A.GetDataVoid(), P.GetData(),
1846 b.GetData(), &m, &info.GetInfoRef() );
1850 template <
class Prop0,
class Allocator0,
1851 class Allocator1,
class Allocator2>
1852 void SolveLuVector(
const Matrix<complex<double>, Prop0, RowSymPacked,
1853 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
1854 Vector<complex<double>, VectFull, Allocator2>& b,
1858 #ifdef SELDON_CHECK_DIMENSIONS
1859 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1865 zsptrs_(&uplo, &m, &nrhs, A.GetDataVoid(), P.GetData(),
1866 b.GetData(), &m, &info.GetInfoRef() );
1873 template <
class Prop0,
class Allocator0,
1874 class Allocator1,
class Allocator2>
1875 void SolveLuVector(
const Matrix<complex<float>, Prop0, ColHerm, Allocator0>& A,
1876 const Vector<int, VectFull, Allocator1>& P,
1877 Vector<complex<float>, VectFull, Allocator2>& b,
1881 #ifdef SELDON_CHECK_DIMENSIONS
1882 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1885 int m = A.GetM();
int nrhs = 1;
1887 chetrs_(&uplo, &m, & nrhs, A.GetDataVoid(), &m,
1888 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1892 template <
class Prop0,
class Allocator0,
1893 class Allocator1,
class Allocator2>
1894 void SolveLuVector(
const Matrix<complex<double>, Prop0, ColHerm, Allocator0>& A,
1895 const Vector<int, VectFull, Allocator1>& P,
1896 Vector<complex<double>, VectFull, Allocator2>& b,
1900 #ifdef SELDON_CHECK_DIMENSIONS
1901 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1904 int m = A.GetM();
int nrhs = 1;
1906 zhetrs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m,
1907 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1914 template <
class Prop0,
class Allocator0,
1915 class Allocator1,
class Allocator2>
1916 void SolveLuVector(
const Matrix<complex<float>, Prop0, ColHermPacked,
1917 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
1918 Vector<complex<float>, VectFull, Allocator2>& b,
1922 #ifdef SELDON_CHECK_DIMENSIONS
1923 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1926 int m = A.GetM();
int nrhs = 1;
1928 chptrs_(&uplo, &m, & nrhs, A.GetDataVoid(),
1929 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1933 template <
class Prop0,
class Allocator0,
1934 class Allocator1,
class Allocator2>
1935 void SolveLuVector(
const Matrix<complex<double>, Prop0, ColHermPacked,
1936 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
1937 Vector<complex<double>, VectFull, Allocator2>& b,
1941 #ifdef SELDON_CHECK_DIMENSIONS
1942 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1945 int m = A.GetM();
int nrhs = 1;
1947 zhptrs_(&uplo, &m, &nrhs, A.GetDataVoid(),
1948 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1955 template <
class Prop0,
class Allocator0,
1956 class Allocator1,
class Allocator2>
1957 void SolveLuVector(
const Matrix<complex<float>, Prop0, RowHerm, Allocator0>& A,
1958 const Vector<int, VectFull, Allocator1>& P,
1959 Vector<complex<float>, VectFull, Allocator2>& b,
1963 #ifdef SELDON_CHECK_DIMENSIONS
1964 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1967 int m = A.GetM();
int nrhs = 1;
1970 chetrs_(&uplo, &m, & nrhs, A.GetDataVoid(), &m,
1971 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
1976 template <
class Prop0,
class Allocator0,
1977 class Allocator1,
class Allocator2>
1978 void SolveLuVector(
const Matrix<complex<double>, Prop0, RowHerm, Allocator0>& A,
1979 const Vector<int, VectFull, Allocator1>& P,
1980 Vector<complex<double>, VectFull, Allocator2>& b,
1984 #ifdef SELDON_CHECK_DIMENSIONS
1985 CheckDim(A, b,
"SolveLU(A, pivot, X)");
1988 int m = A.GetM();
int nrhs = 1;
1991 zhetrs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m,
1992 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
2000 template <
class Prop0,
class Allocator0,
2001 class Allocator1,
class Allocator2>
2002 void SolveLuVector(
const Matrix<complex<float>, Prop0, RowHermPacked,
2003 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
2004 Vector<complex<float>, VectFull, Allocator2>& b,
2008 #ifdef SELDON_CHECK_DIMENSIONS
2009 CheckDim(A, b,
"SolveLU(A, pivot, X)");
2012 int m = A.GetM();
int nrhs = 1;
2015 chptrs_(&uplo, &m, & nrhs, A.GetDataVoid(),
2016 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
2021 template <
class Prop0,
class Allocator0,
2022 class Allocator1,
class Allocator2>
2023 void SolveLuVector(
const Matrix<complex<double>, Prop0, RowHermPacked,
2024 Allocator0>& A,
const Vector<int, VectFull, Allocator1>& P,
2025 Vector<complex<double>, VectFull, Allocator2>& b,
2029 #ifdef SELDON_CHECK_DIMENSIONS
2030 CheckDim(A, b,
"SolveLU(A, pivot, X)");
2033 int m = A.GetM();
int nrhs = 1;
2036 zhptrs_(&uplo, &m, &nrhs, A.GetDataVoid(),
2037 P.GetData(), b.GetDataVoid(), &m, &info.GetInfoRef());
2045 template <
class Prop0,
class Allocator0,
class Allocator2>
2046 void SolveLU(
const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
2047 Vector<float, VectFull, Allocator2>& b,
2051 #ifdef SELDON_CHECK_DIMENSIONS
2055 int m = A.GetM();
int nrhs = 1;
2056 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2057 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2058 b.GetData(), &m, &info.GetInfoRef());
2062 template <
class Prop0,
class Allocator0,
class Allocator2>
2063 void SolveLU(
const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
2064 Vector<double, VectFull, Allocator2>& b,
2068 #ifdef SELDON_CHECK_DIMENSIONS
2072 int m = A.GetM();
int nrhs = 1;
2073 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2074 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2075 b.GetData(), &m, &info.GetInfoRef());
2079 template <
class Prop0,
class Allocator0,
class Allocator2>
2080 void SolveLU(
const Matrix<complex<float>, Prop0, ColUpTriang,
2082 Vector<complex<float>, VectFull, Allocator2>& b,
2086 #ifdef SELDON_CHECK_DIMENSIONS
2090 int m = A.GetM();
int nrhs = 1;
2091 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2092 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2093 b.GetDataVoid(), &m, &info.GetInfoRef());
2097 template <
class Prop0,
class Allocator0,
class Allocator2>
2098 void SolveLU(
const Matrix<complex<double>, Prop0, ColUpTriang,
2100 Vector<complex<double>, VectFull, Allocator2>& b,
2104 #ifdef SELDON_CHECK_DIMENSIONS
2108 int m = A.GetM();
int nrhs = 1;
2109 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2110 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2111 b.GetDataVoid(), &m, &info.GetInfoRef());
2119 template <
class Prop0,
class Allocator0,
class Allocator2>
2120 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2121 const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
2122 Vector<float, VectFull, Allocator2>& b,
2126 #ifdef SELDON_CHECK_DIMENSIONS
2130 int m = A.GetM();
int nrhs = 1;
2132 char trans = TransA.Char();
char diag = DiagA.Char();
2133 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2134 b.GetData(), &m, &info.GetInfoRef());
2138 template <
class Prop0,
class Allocator0,
class Allocator2>
2139 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2140 const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
2141 Vector<double, VectFull, Allocator2>& b,
2145 #ifdef SELDON_CHECK_DIMENSIONS
2149 int m = A.GetM();
int nrhs = 1;
2151 char trans = TransA.Char();
char diag = DiagA.Char();
2152 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2153 b.GetData(), &m, &info.GetInfoRef());
2157 template <
class Prop0,
class Allocator0,
class Allocator2>
2158 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2159 const Matrix<complex<float>, Prop0, ColUpTriang,
2161 Vector<complex<float>, VectFull, Allocator2>& b,
2165 #ifdef SELDON_CHECK_DIMENSIONS
2169 int m = A.GetM();
int nrhs = 1;
2171 char trans = TransA.Char();
char diag = DiagA.Char();
2172 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2173 b.GetDataVoid(), &m, &info.GetInfoRef());
2177 template <
class Prop0,
class Allocator0,
class Allocator2>
2178 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2179 const Matrix<complex<double>, Prop0, ColUpTriang,
2181 Vector<complex<double>, VectFull, Allocator2>& b,
2185 #ifdef SELDON_CHECK_DIMENSIONS
2189 int m = A.GetM();
int nrhs = 1;
2191 char trans = TransA.Char();
char diag = DiagA.Char();
2192 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2193 b.GetDataVoid(), &m, &info.GetInfoRef());
2201 template <
class Prop0,
class Allocator0,
class Allocator2>
2202 void SolveLU(
const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
2203 Vector<float, VectFull, Allocator2>& b,
2207 #ifdef SELDON_CHECK_DIMENSIONS
2211 int m = A.GetM();
int nrhs = 1;
2212 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2213 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2214 b.GetData(), &m, &info.GetInfoRef());
2218 template <
class Prop0,
class Allocator0,
class Allocator2>
2219 void SolveLU(
const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
2220 Vector<double, VectFull, Allocator2>& b,
2224 #ifdef SELDON_CHECK_DIMENSIONS
2228 int m = A.GetM();
int nrhs = 1;
2229 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2230 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2231 b.GetData(), &m, &info.GetInfoRef());
2236 template <
class Prop0,
class Allocator0,
class Allocator2>
2237 void SolveLU(
const Matrix<complex<float>, Prop0, ColLoTriang,
2239 Vector<complex<float>, VectFull, Allocator2>& b,
2243 #ifdef SELDON_CHECK_DIMENSIONS
2247 int m = A.GetM();
int nrhs = 1;
2248 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2249 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2250 b.GetDataVoid(), &m, &info.GetInfoRef());
2254 template <
class Prop0,
class Allocator0,
class Allocator2>
2255 void SolveLU(
const Matrix<complex<double>, Prop0, ColLoTriang,
2257 Vector<complex<double>, VectFull, Allocator2>& b,
2261 #ifdef SELDON_CHECK_DIMENSIONS
2265 int m = A.GetM();
int nrhs = 1;
2266 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2267 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2268 b.GetDataVoid(), &m, &info.GetInfoRef());
2276 template <
class Prop0,
class Allocator0,
class Allocator2>
2277 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2278 const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
2279 Vector<float, VectFull, Allocator2>& b,
2283 #ifdef SELDON_CHECK_DIMENSIONS
2287 int m = A.GetM();
int nrhs = 1;
2289 char trans = TransA.Char();
char diag = DiagA.Char();
2290 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2291 b.GetData(), &m, &info.GetInfoRef());
2295 template <
class Prop0,
class Allocator0,
class Allocator2>
2296 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2297 const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
2298 Vector<double, VectFull, Allocator2>& b,
2302 #ifdef SELDON_CHECK_DIMENSIONS
2306 int m = A.GetM();
int nrhs = 1;
2308 char trans = TransA.Char();
char diag = DiagA.Char();
2309 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2310 b.GetData(), &m, &info.GetInfoRef());
2315 template <
class Prop0,
class Allocator0,
class Allocator2>
2316 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2317 const Matrix<complex<float>, Prop0, ColLoTriang,
2319 Vector<complex<float>, VectFull, Allocator2>& b,
2323 #ifdef SELDON_CHECK_DIMENSIONS
2327 int m = A.GetM();
int nrhs = 1;
2329 char trans = TransA.Char();
char diag = DiagA.Char();
2330 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2331 b.GetDataVoid(), &m, &info.GetInfoRef());
2335 template <
class Prop0,
class Allocator0,
class Allocator2>
2336 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2337 const Matrix<complex<double>, Prop0, ColLoTriang,
2339 Vector<complex<double>, VectFull, Allocator2>& b,
2343 #ifdef SELDON_CHECK_DIMENSIONS
2347 int m = A.GetM();
int nrhs = 1;
2349 char trans = TransA.Char();
char diag = DiagA.Char();
2350 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2351 b.GetDataVoid(), &m, &info.GetInfoRef());
2359 template <
class Prop0,
class Allocator0,
class Allocator2>
2360 void SolveLU(
const Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
2361 Vector<float, VectFull, Allocator2>& b,
2365 #ifdef SELDON_CHECK_DIMENSIONS
2369 int m = A.GetM();
int nrhs = 1;
2370 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2371 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2372 b.GetData(), &m, &info.GetInfoRef());
2376 template <
class Prop0,
class Allocator0,
class Allocator2>
2377 void SolveLU(
const Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
2378 Vector<double, VectFull, Allocator2>& b,
2382 #ifdef SELDON_CHECK_DIMENSIONS
2386 int m = A.GetM();
int nrhs = 1;
2387 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2388 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2389 b.GetData(), &m, &info.GetInfoRef());
2394 template <
class Prop0,
class Allocator0,
class Allocator2>
2395 void SolveLU(
const Matrix<complex<float>, Prop0, ColUpTriangPacked,
2397 Vector<complex<float>, VectFull, Allocator2>& b,
2401 #ifdef SELDON_CHECK_DIMENSIONS
2405 int m = A.GetM();
int nrhs = 1;
2406 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2407 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2408 b.GetDataVoid(), &m, &info.GetInfoRef());
2412 template <
class Prop0,
class Allocator0,
class Allocator2>
2413 void SolveLU(
const Matrix<complex<double>, Prop0, ColUpTriangPacked,
2415 Vector<complex<double>, VectFull, Allocator2>& b,
2419 #ifdef SELDON_CHECK_DIMENSIONS
2423 int m = A.GetM();
int nrhs = 1;
2424 char uplo(
'U');
char trans(
'N');
char diag(
'N');
2425 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2426 b.GetDataVoid(), &m, &info.GetInfoRef());
2434 template <
class Prop0,
class Allocator0,
class Allocator2>
2435 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2436 const Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
2437 Vector<float, VectFull, Allocator2>& b,
2441 #ifdef SELDON_CHECK_DIMENSIONS
2445 int m = A.GetM();
int nrhs = 1;
2447 char trans = TransA.Char();
char diag = DiagA.Char();
2448 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2449 b.GetData(), &m, &info.GetInfoRef());
2453 template <
class Prop0,
class Allocator0,
class Allocator2>
2454 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2455 const Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
2456 Vector<double, VectFull, Allocator2>& b,
2460 #ifdef SELDON_CHECK_DIMENSIONS
2464 int m = A.GetM();
int nrhs = 1;
2466 char trans = TransA.Char();
char diag = DiagA.Char();
2467 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2468 b.GetData(), &m, &info.GetInfoRef());
2473 template <
class Prop0,
class Allocator0,
class Allocator2>
2474 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2475 const Matrix<complex<float>, Prop0, ColUpTriangPacked,
2477 Vector<complex<float>, VectFull, Allocator2>& b,
2481 #ifdef SELDON_CHECK_DIMENSIONS
2485 int m = A.GetM();
int nrhs = 1;
2487 char trans = TransA.Char();
char diag = DiagA.Char();
2488 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2489 b.GetDataVoid(), &m, &info.GetInfoRef());
2493 template <
class Prop0,
class Allocator0,
class Allocator2>
2494 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2495 const Matrix<complex<double>, Prop0, ColUpTriangPacked,
2497 Vector<complex<double>, VectFull, Allocator2>& b,
2501 #ifdef SELDON_CHECK_DIMENSIONS
2505 int m = A.GetM();
int nrhs = 1;
2507 char trans = TransA.Char();
char diag = DiagA.Char();
2508 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2509 b.GetDataVoid(), &m, &info.GetInfoRef());
2517 template <
class Prop0,
class Allocator0,
class Allocator2>
2518 void SolveLU(
const Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
2519 Vector<float, VectFull, Allocator2>& b,
2523 #ifdef SELDON_CHECK_DIMENSIONS
2527 int m = A.GetM();
int nrhs = 1;
2528 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2529 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2530 b.GetData(), &m, &info.GetInfoRef());
2534 template <
class Prop0,
class Allocator0,
class Allocator2>
2535 void SolveLU(
const Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
2536 Vector<double, VectFull, Allocator2>& b,
2540 #ifdef SELDON_CHECK_DIMENSIONS
2544 int m = A.GetM();
int nrhs = 1;
2545 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2546 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2547 b.GetData(), &m, &info.GetInfoRef());
2552 template <
class Prop0,
class Allocator0,
class Allocator2>
2553 void SolveLU(
const Matrix<complex<float>, Prop0, ColLoTriangPacked,
2555 Vector<complex<float>, VectFull, Allocator2>& b,
2559 #ifdef SELDON_CHECK_DIMENSIONS
2563 int m = A.GetM();
int nrhs = 1;
2564 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2565 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2566 b.GetDataVoid(), &m, &info.GetInfoRef());
2570 template <
class Prop0,
class Allocator0,
class Allocator2>
2571 void SolveLU(
const Matrix<complex<double>, Prop0, ColLoTriangPacked,
2573 Vector<complex<double>, VectFull, Allocator2>& b,
2577 #ifdef SELDON_CHECK_DIMENSIONS
2581 int m = A.GetM();
int nrhs = 1;
2582 char uplo(
'L');
char trans(
'N');
char diag(
'N');
2583 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2584 b.GetDataVoid(), &m, &info.GetInfoRef());
2592 template <
class Prop0,
class Allocator0,
class Allocator2>
2593 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2594 const Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
2595 Vector<float, VectFull, Allocator2>& b,
2599 #ifdef SELDON_CHECK_DIMENSIONS
2603 int m = A.GetM();
int nrhs = 1;
2605 char trans = TransA.Char();
char diag = DiagA.Char();
2606 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2607 b.GetData(), &m, &info.GetInfoRef());
2611 template <
class Prop0,
class Allocator0,
class Allocator2>
2612 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2613 const Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
2614 Vector<double, VectFull, Allocator2>& b,
2618 #ifdef SELDON_CHECK_DIMENSIONS
2622 int m = A.GetM();
int nrhs = 1;
2624 char trans = TransA.Char();
char diag = DiagA.Char();
2625 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
2626 b.GetData(), &m, &info.GetInfoRef());
2631 template <
class Prop0,
class Allocator0,
class Allocator2>
2632 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2633 const Matrix<complex<float>, Prop0, ColLoTriangPacked,
2635 Vector<complex<float>, VectFull, Allocator2>& b,
2639 #ifdef SELDON_CHECK_DIMENSIONS
2643 int m = A.GetM();
int nrhs = 1;
2645 char trans = TransA.Char();
char diag = DiagA.Char();
2646 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2647 b.GetDataVoid(), &m, &info.GetInfoRef());
2651 template <
class Prop0,
class Allocator0,
class Allocator2>
2652 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2653 const Matrix<complex<double>, Prop0, ColLoTriangPacked,
2655 Vector<complex<double>, VectFull, Allocator2>& b,
2659 #ifdef SELDON_CHECK_DIMENSIONS
2663 int m = A.GetM();
int nrhs = 1;
2665 char trans = TransA.Char();
char diag = DiagA.Char();
2666 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
2667 b.GetDataVoid(), &m, &info.GetInfoRef());
2675 template <
class Prop0,
class Allocator0,
class Allocator2>
2676 void SolveLU(
const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
2677 Vector<float, VectFull, Allocator2>& b,
2681 #ifdef SELDON_CHECK_DIMENSIONS
2685 int m = A.GetM();
int nrhs = 1;
2686 char uplo(
'L');
char trans(
'T');
char diag(
'N');
2687 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2688 b.GetData(), &m, &info.GetInfoRef());
2692 template <
class Prop0,
class Allocator0,
class Allocator2>
2693 void SolveLU(
const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
2694 Vector<double, VectFull, Allocator2>& b,
2698 #ifdef SELDON_CHECK_DIMENSIONS
2702 int m = A.GetM();
int nrhs = 1;
2703 char uplo(
'L');
char trans(
'T');
char diag(
'N');
2704 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2705 b.GetData(), &m, &info.GetInfoRef());
2710 template <
class Prop0,
class Allocator0,
class Allocator2>
2712 SolveLU(
const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
2713 Vector<complex<float>, VectFull, Allocator2>& b,
2717 #ifdef SELDON_CHECK_DIMENSIONS
2721 int m = A.GetM();
int nrhs = 1;
2722 char uplo(
'L');
char trans(
'T');
char diag(
'N');
2723 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2724 b.GetDataVoid(), &m, &info.GetInfoRef());
2728 template <
class Prop0,
class Allocator0,
class Allocator2>
2730 SolveLU(
const Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,
2731 Vector<complex<double>, VectFull, Allocator2>& b,
2735 #ifdef SELDON_CHECK_DIMENSIONS
2739 int m = A.GetM();
int nrhs = 1;
2740 char uplo(
'L');
char trans(
'T');
char diag(
'N');
2741 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2742 b.GetDataVoid(), &m, &info.GetInfoRef());
2750 template <
class Prop0,
class Allocator0,
class Allocator2>
2751 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2752 const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
2753 Vector<float, VectFull, Allocator2>& b,
2757 #ifdef SELDON_CHECK_DIMENSIONS
2761 int m = A.GetM();
int nrhs = 1;
2763 char trans = TransA.RevChar();
char diag = DiagA.Char();
2764 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2765 b.GetData(), &m, &info.GetInfoRef());
2769 template <
class Prop0,
class Allocator0,
class Allocator2>
2770 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2771 const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
2772 Vector<double, VectFull, Allocator2>& b,
2776 #ifdef SELDON_CHECK_DIMENSIONS
2780 int m = A.GetM();
int nrhs = 1;
2782 char trans = TransA.RevChar();
char diag = DiagA.Char();
2783 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2784 b.GetData(), &m, &info.GetInfoRef());
2789 template <
class Prop0,
class Allocator0,
class Allocator2>
2791 SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2792 const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
2793 Vector<complex<float>, VectFull, Allocator2>& b,
2797 #ifdef SELDON_CHECK_DIMENSIONS
2801 int m = A.GetM();
int nrhs = 1;
2803 char trans = TransA.RevChar();
char diag = DiagA.Char();
2804 if (TransA.ConjTrans())
2806 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2807 b.GetDataVoid(), &m, &info.GetInfoRef());
2808 if (TransA.ConjTrans())
2813 template <
class Prop0,
class Allocator0,
class Allocator2>
2815 SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2816 const Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,
2817 Vector<complex<double>, VectFull, Allocator2>& b,
2821 #ifdef SELDON_CHECK_DIMENSIONS
2825 int m = A.GetM();
int nrhs = 1;
2827 char trans = TransA.RevChar();
char diag = DiagA.Char();
2828 if (TransA.ConjTrans())
2830 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2831 b.GetDataVoid(), &m, &info.GetInfoRef());
2832 if (TransA.ConjTrans())
2841 template <
class Prop0,
class Allocator0,
class Allocator2>
2842 void SolveLU(
const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
2843 Vector<float, VectFull, Allocator2>& b,
2847 #ifdef SELDON_CHECK_DIMENSIONS
2851 int m = A.GetM();
int nrhs = 1;
2852 char uplo(
'U');
char trans(
'T');
char diag(
'N');
2853 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2854 b.GetData(), &m, &info.GetInfoRef());
2858 template <
class Prop0,
class Allocator0,
class Allocator2>
2859 void SolveLU(
const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
2860 Vector<double, VectFull, Allocator2>& b,
2864 #ifdef SELDON_CHECK_DIMENSIONS
2868 int m = A.GetM();
int nrhs = 1;
2869 char uplo(
'U');
char trans(
'T');
char diag(
'N');
2870 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2871 b.GetData(), &m, &info.GetInfoRef());
2876 template <
class Prop0,
class Allocator0,
class Allocator2>
2878 SolveLU(
const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
2879 Vector<complex<float>, VectFull, Allocator2>& b,
2883 #ifdef SELDON_CHECK_DIMENSIONS
2887 int m = A.GetM();
int nrhs = 1;
2888 char uplo(
'U');
char trans(
'T');
char diag(
'N');
2889 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2890 b.GetDataVoid(), &m, &info.GetInfoRef());
2894 template <
class Prop0,
class Allocator0,
class Allocator2>
2896 SolveLU(
const Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,
2897 Vector<complex<double>, VectFull, Allocator2>& b,
2901 #ifdef SELDON_CHECK_DIMENSIONS
2905 int m = A.GetM();
int nrhs = 1;
2906 char uplo(
'U');
char trans(
'T');
char diag(
'N');
2907 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2908 b.GetDataVoid(), &m, &info.GetInfoRef());
2916 template <
class Prop0,
class Allocator0,
class Allocator2>
2917 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2918 const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
2919 Vector<float, VectFull, Allocator2>& b,
2923 #ifdef SELDON_CHECK_DIMENSIONS
2927 int m = A.GetM();
int nrhs = 1;
2929 char trans = TransA.RevChar();
char diag = DiagA.Char();
2930 strtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2931 b.GetData(), &m, &info.GetInfoRef());
2935 template <
class Prop0,
class Allocator0,
class Allocator2>
2936 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2937 const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
2938 Vector<double, VectFull, Allocator2>& b,
2942 #ifdef SELDON_CHECK_DIMENSIONS
2946 int m = A.GetM();
int nrhs = 1;
2948 char trans = TransA.RevChar();
char diag = DiagA.Char();
2949 dtrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(), &m,
2950 b.GetData(), &m, &info.GetInfoRef());
2955 template <
class Prop0,
class Allocator0,
class Allocator2>
2957 SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2958 const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
2959 Vector<complex<float>, VectFull, Allocator2>& b,
2963 #ifdef SELDON_CHECK_DIMENSIONS
2967 int m = A.GetM();
int nrhs = 1;
2969 char trans = TransA.RevChar();
char diag = DiagA.Char();
2970 if (TransA.ConjTrans())
2972 ctrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2973 b.GetDataVoid(), &m, &info.GetInfoRef());
2974 if (TransA.ConjTrans())
2979 template <
class Prop0,
class Allocator0,
class Allocator2>
2981 SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
2982 const Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,
2983 Vector<complex<double>, VectFull, Allocator2>& b,
2987 #ifdef SELDON_CHECK_DIMENSIONS
2991 int m = A.GetM();
int nrhs = 1;
2993 char trans = TransA.RevChar();
char diag = DiagA.Char();
2994 if (TransA.ConjTrans())
2996 ztrtrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(), &m,
2997 b.GetDataVoid(), &m, &info.GetInfoRef());
2998 if (TransA.ConjTrans())
3006 template <
class Prop0,
class Allocator0,
class Allocator2>
3007 void SolveLU(
const Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
3008 Vector<float, VectFull, Allocator2>& b,
3012 #ifdef SELDON_CHECK_DIMENSIONS
3016 int m = A.GetM();
int nrhs = 1;
3017 char uplo(
'L');
char trans(
'T');
char diag(
'N');
3018 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3019 b.GetData(), &m, &info.GetInfoRef());
3023 template <
class Prop0,
class Allocator0,
class Allocator2>
3024 void SolveLU(
const Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
3025 Vector<double, VectFull, Allocator2>& b,
3029 #ifdef SELDON_CHECK_DIMENSIONS
3033 int m = A.GetM();
int nrhs = 1;
3034 char uplo(
'L');
char trans(
'T');
char diag(
'N');
3035 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3036 b.GetData(), &m, &info.GetInfoRef());
3041 template <
class Prop0,
class Allocator0,
class Allocator2>
3042 void SolveLU(
const Matrix<complex<float>, Prop0, RowUpTriangPacked,
3044 Vector<complex<float>, VectFull, Allocator2>& b,
3048 #ifdef SELDON_CHECK_DIMENSIONS
3052 int m = A.GetM();
int nrhs = 1;
3053 char uplo(
'L');
char trans(
'T');
char diag(
'N');
3054 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3055 b.GetDataVoid(), &m, &info.GetInfoRef());
3059 template <
class Prop0,
class Allocator0,
class Allocator2>
3060 void SolveLU(
const Matrix<complex<double>, Prop0, RowUpTriangPacked,
3062 Vector<complex<double>, VectFull, Allocator2>& b,
3066 #ifdef SELDON_CHECK_DIMENSIONS
3070 int m = A.GetM();
int nrhs = 1;
3071 char uplo(
'L');
char trans(
'T');
char diag(
'N');
3072 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3073 b.GetDataVoid(), &m, &info.GetInfoRef());
3081 template <
class Prop0,
class Allocator0,
class Allocator2>
3082 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3083 const Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
3084 Vector<float, VectFull, Allocator2>& b,
3088 #ifdef SELDON_CHECK_DIMENSIONS
3092 int m = A.GetM();
int nrhs = 1;
3094 char trans = TransA.RevChar();
char diag = DiagA.Char();
3095 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3096 b.GetData(), &m, &info.GetInfoRef());
3100 template <
class Prop0,
class Allocator0,
class Allocator2>
3101 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3102 const Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
3103 Vector<double, VectFull, Allocator2>& b,
3107 #ifdef SELDON_CHECK_DIMENSIONS
3111 int m = A.GetM();
int nrhs = 1;
3113 char trans = TransA.RevChar();
char diag = DiagA.Char();
3114 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3115 b.GetData(), &m, &info.GetInfoRef());
3120 template <
class Prop0,
class Allocator0,
class Allocator2>
3121 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3122 const Matrix<complex<float>, Prop0, RowUpTriangPacked,
3124 Vector<complex<float>, VectFull, Allocator2>& b,
3128 #ifdef SELDON_CHECK_DIMENSIONS
3132 int m = A.GetM();
int nrhs = 1;
3134 char trans = TransA.RevChar();
char diag = DiagA.Char();
3135 if (TransA.ConjTrans())
3137 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3138 b.GetDataVoid(), &m, &info.GetInfoRef());
3139 if (TransA.ConjTrans())
3144 template <
class Prop0,
class Allocator0,
class Allocator2>
3145 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3146 const Matrix<complex<double>, Prop0, RowUpTriangPacked,
3148 Vector<complex<double>, VectFull, Allocator2>& b,
3152 #ifdef SELDON_CHECK_DIMENSIONS
3156 int m = A.GetM();
int nrhs = 1;
3158 char trans = TransA.RevChar();
char diag = DiagA.Char();
3159 if (TransA.ConjTrans())
3161 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3162 b.GetDataVoid(), &m, &info.GetInfoRef());
3163 if (TransA.ConjTrans())
3171 template <
class Prop0,
class Allocator0,
class Allocator2>
3172 void SolveLU(
const Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
3173 Vector<float, VectFull, Allocator2>& b,
3177 #ifdef SELDON_CHECK_DIMENSIONS
3181 int m = A.GetM();
int nrhs = 1;
3182 char uplo(
'U');
char trans(
'T');
char diag(
'N');
3183 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3184 b.GetData(), &m, &info.GetInfoRef());
3188 template <
class Prop0,
class Allocator0,
class Allocator2>
3189 void SolveLU(
const Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
3190 Vector<double, VectFull, Allocator2>& b,
3194 #ifdef SELDON_CHECK_DIMENSIONS
3198 int m = A.GetM();
int nrhs = 1;
3199 char uplo(
'U');
char trans(
'T');
char diag(
'N');
3200 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3201 b.GetData(), &m, &info.GetInfoRef());
3206 template <
class Prop0,
class Allocator0,
class Allocator2>
3207 void SolveLU(
const Matrix<complex<float>, Prop0, RowLoTriangPacked,
3209 Vector<complex<float>, VectFull, Allocator2>& b,
3213 #ifdef SELDON_CHECK_DIMENSIONS
3217 int m = A.GetM();
int nrhs = 1;
3218 char uplo(
'U');
char trans(
'T');
char diag(
'N');
3221 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3222 b.GetDataVoid(), &m, &info.GetInfoRef());
3226 template <
class Prop0,
class Allocator0,
class Allocator2>
3227 void SolveLU(
const Matrix<complex<double>, Prop0, RowLoTriangPacked,
3229 Vector<complex<double>, VectFull, Allocator2>& b,
3233 #ifdef SELDON_CHECK_DIMENSIONS
3237 int m = A.GetM();
int nrhs = 1;
3238 char uplo(
'U');
char trans(
'T');
char diag(
'N');
3239 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3240 b.GetDataVoid(), &m, &info.GetInfoRef());
3248 template <
class Prop0,
class Allocator0,
class Allocator2>
3249 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3250 const Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
3251 Vector<float, VectFull, Allocator2>& b,
3255 #ifdef SELDON_CHECK_DIMENSIONS
3259 int m = A.GetM();
int nrhs = 1;
3261 char trans = TransA.RevChar();
char diag = DiagA.Char();
3262 stptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3263 b.GetData(), &m, &info.GetInfoRef());
3267 template <
class Prop0,
class Allocator0,
class Allocator2>
3268 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3269 const Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
3270 Vector<double, VectFull, Allocator2>& b,
3274 #ifdef SELDON_CHECK_DIMENSIONS
3278 int m = A.GetM();
int nrhs = 1;
3280 char trans = TransA.RevChar();
char diag = DiagA.Char();
3281 dtptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetData(),
3282 b.GetData(), &m, &info.GetInfoRef());
3287 template <
class Prop0,
class Allocator0,
class Allocator2>
3288 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3289 const Matrix<complex<float>, Prop0, RowLoTriangPacked,
3291 Vector<complex<float>, VectFull, Allocator2>& b,
3295 #ifdef SELDON_CHECK_DIMENSIONS
3299 int m = A.GetM();
int nrhs = 1;
3301 char trans = TransA.RevChar();
char diag = DiagA.Char();
3302 if (TransA.ConjTrans())
3304 ctptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3305 b.GetDataVoid(), &m, &info.GetInfoRef());
3306 if (TransA.ConjTrans())
3311 template <
class Prop0,
class Allocator0,
class Allocator2>
3312 void SolveLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
3313 const Matrix<complex<double>, Prop0, RowLoTriangPacked,
3315 Vector<complex<double>, VectFull, Allocator2>& b,
3319 #ifdef SELDON_CHECK_DIMENSIONS
3323 int m = A.GetM();
int nrhs = 1;
3325 char trans = TransA.RevChar();
char diag = DiagA.Char();
3326 if (TransA.ConjTrans())
3328 ztptrs_(&uplo, &trans, &diag, &m, & nrhs, A.GetDataVoid(),
3329 b.GetDataVoid(), &m, &info.GetInfoRef());
3330 if (TransA.ConjTrans())
3347 template<
class Prop0,
class Allocator0,
class Allocator1>
3348 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, ColMajor,
3350 Vector<int, VectFull, Allocator1>& P,
3351 SeldonNorm norm,
float anorm,
3354 char norm_type = norm.Char();
3356 int n = A.GetM();
float rcond(0);
3357 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(4*n);
3358 sgecon_(&norm_type, &n, A.GetData(), &n, &anorm, &rcond,
3359 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3364 template<
class Prop0,
class Allocator0,
class Allocator1>
3365 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, ColMajor,
3367 Vector<int, VectFull, Allocator1>& P,
3368 SeldonNorm norm,
double anorm,
3371 char norm_type = norm.Char();
3373 int n = A.GetM();
double rcond(0);
3374 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(4*n);
3375 dgecon_(&norm_type, &n, A.GetData(), &n, &anorm, &rcond,
3376 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3381 template<
class Prop0,
class Allocator0,
class Allocator1>
3382 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3383 ColMajor, Allocator0>& A,
3384 Vector<int, VectFull, Allocator1>& P,
3385 SeldonNorm norm,
float anorm,
3388 char norm_type = norm.Char();
3390 int n = A.GetM();
float rcond(0);
3391 Vector<float> rwork(2*n);
3392 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3393 cgecon_(&norm_type, &n, A.GetDataVoid(), &n, &anorm, &rcond,
3394 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
3399 template<
class Prop0,
class Allocator0,
class Allocator1>
3400 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3401 ColMajor, Allocator0>& A,
3402 Vector<int, VectFull, Allocator1>& P,
3403 SeldonNorm norm,
double anorm,
3406 char norm_type = norm.Char();
3408 int n = A.GetM();
double rcond(0);
3409 Vector<double> rwork(2*n);
3410 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3411 zgecon_(&norm_type, &n, A.GetDataVoid(), &n, &anorm, &rcond,
3412 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
3420 template<
class Prop0,
class Allocator0,
class Allocator1>
3421 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, RowMajor,
3423 Vector<int, VectFull, Allocator1>& P,
3424 SeldonNorm norm,
float anorm,
3427 char norm_type = norm.RevChar();
3429 int n = A.GetM();
float rcond(0);
3430 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(4*n);
3431 sgecon_(&norm_type, &n, A.GetData(), &n, &anorm, &rcond,
3432 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3437 template<
class Prop0,
class Allocator0,
class Allocator1>
3438 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, RowMajor,
3440 Vector<int, VectFull, Allocator1>& P,
3441 SeldonNorm norm,
double anorm,
3444 char norm_type = norm.RevChar();
3446 int n = A.GetM();
double rcond(0);
3447 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(4*n);
3448 dgecon_(&norm_type, &n, A.GetData(), &n, &anorm, &rcond,
3449 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3454 template<
class Prop0,
class Allocator0,
class Allocator1>
3455 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3456 RowMajor, Allocator0>& A,
3457 Vector<int, VectFull, Allocator1>& P,
3458 SeldonNorm norm,
float anorm,
3461 char norm_type = norm.RevChar();
3463 int n = A.GetM();
float rcond(0);
3464 Vector<float> rwork(2*n);
3465 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3466 cgecon_(&norm_type, &n, A.GetDataVoid(), &n, &anorm, &rcond,
3467 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
3472 template<
class Prop0,
class Allocator0,
class Allocator1>
3473 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3474 RowMajor, Allocator0>& A,
3475 Vector<int, VectFull, Allocator1>& P,
3476 SeldonNorm norm,
double anorm,
3479 char norm_type = norm.RevChar();
3481 int n = A.GetM();
double rcond(0);
3482 Vector<double> rwork(2*n);
3483 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3484 zgecon_(&norm_type, &n, A.GetDataVoid(), &n, &anorm, &rcond,
3485 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
3493 template<
class Prop0,
class Allocator0,
class Allocator1>
3494 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, ColSym,
3496 Vector<int, VectFull, Allocator1>& P,
3497 SeldonNorm norm,
float anorm,
3502 int n = A.GetM();
float rcond(0);
3503 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(2*n);
3504 ssycon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3505 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3510 template<
class Prop0,
class Allocator0,
class Allocator1>
3511 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, ColSym,
3513 Vector<int, VectFull, Allocator1>& P,
3514 SeldonNorm norm,
double anorm,
3519 int n = A.GetM();
double rcond(0);
3520 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(2*n);
3521 dsycon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3522 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3527 template<
class Prop0,
class Allocator0,
class Allocator1>
3528 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3529 ColSym, Allocator0>& A,
3530 Vector<int, VectFull, Allocator1>& P,
3531 SeldonNorm norm,
float anorm,
3536 int n = A.GetM();
float rcond(0);
3537 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3538 csycon_(&uplo, &n, A.GetDataVoid(), &n, P.GetData(), &anorm, &rcond,
3539 work.GetDataVoid(), &info.GetInfoRef());
3544 template<
class Prop0,
class Allocator0,
class Allocator1>
3545 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3546 ColSym, Allocator0>& A,
3547 Vector<int, VectFull, Allocator1>& P,
3548 SeldonNorm norm,
double anorm,
3553 int n = A.GetM();
double rcond(0);
3554 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3555 zsycon_(&uplo, &n, A.GetDataVoid(), &n, P.GetData(), &anorm, &rcond,
3556 work.GetDataVoid(), &info.GetInfoRef());
3564 template<
class Prop0,
class Allocator0,
class Allocator1>
3565 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
3566 ColSymPacked, Allocator0>& A,
3567 Vector<int, VectFull, Allocator1>& P,
3568 SeldonNorm norm,
float anorm,
3573 int n = A.GetM();
float rcond(0);
3574 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(2*n);
3575 sspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3576 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3581 template<
class Prop0,
class Allocator0,
class Allocator1>
3582 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, ColSymPacked,
3584 Vector<int, VectFull, Allocator1>& P,
3585 SeldonNorm norm,
double anorm,
3590 int n = A.GetM();
double rcond(0);
3591 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(2*n);
3592 dspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3593 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3598 template<
class Prop0,
class Allocator0,
class Allocator1>
3599 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3600 ColSymPacked, Allocator0>& A,
3601 Vector<int, VectFull, Allocator1>& P,
3602 SeldonNorm norm,
float anorm,
3607 int n = A.GetM();
float rcond(0);
3608 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3609 cspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3610 work.GetData(), &info.GetInfoRef());
3615 template<
class Prop0,
class Allocator0,
class Allocator1>
3616 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3617 ColSymPacked, Allocator0>& A,
3618 Vector<int, VectFull, Allocator1>& P,
3619 SeldonNorm norm,
double anorm,
3624 int n = A.GetM();
double rcond(0);
3625 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3626 zspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3627 work.GetData(), &info.GetInfoRef());
3635 template<
class Prop0,
class Allocator0,
class Allocator1>
3636 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, RowSym,
3638 Vector<int, VectFull, Allocator1>& P,
3639 SeldonNorm norm,
float anorm,
3644 int n = A.GetM();
float rcond(0);
3645 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(2*n);
3646 ssycon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3647 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3652 template<
class Prop0,
class Allocator0,
class Allocator1>
3653 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, RowSym,
3655 Vector<int, VectFull, Allocator1>& P,
3656 SeldonNorm norm,
double anorm,
3661 int n = A.GetM();
double rcond(0);
3662 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(2*n);
3663 dsycon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3664 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3669 template<
class Prop0,
class Allocator0,
class Allocator1>
3670 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0, RowSym,
3672 Vector<int, VectFull, Allocator1>& P,
3673 SeldonNorm norm,
float anorm,
3678 int n = A.GetM();
float rcond(0);
3679 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3680 csycon_(&uplo, &n, A.GetDataVoid(), &n, P.GetData(), &anorm, &rcond,
3681 work.GetDataVoid(), &info.GetInfoRef());
3686 template<
class Prop0,
class Allocator0,
class Allocator1>
3687 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3688 RowSym, Allocator0>& A,
3689 Vector<int, VectFull, Allocator1>& P,
3690 SeldonNorm norm,
double anorm,
3695 int n = A.GetM();
double rcond(0);
3696 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3697 zsycon_(&uplo, &n, A.GetDataVoid(), &n, P.GetData(), &anorm, &rcond,
3698 work.GetDataVoid(), &info.GetInfoRef());
3706 template<
class Prop0,
class Allocator0,
class Allocator1>
3707 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, RowSymPacked,
3709 Vector<int, VectFull, Allocator1>& P,
3710 SeldonNorm norm,
float anorm,
3715 int n = A.GetM();
float rcond(0);
3716 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(2*n);
3717 sspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3718 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3723 template<
class Prop0,
class Allocator0,
class Allocator1>
3724 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, RowSymPacked,
3726 Vector<int, VectFull, Allocator1>& P,
3727 SeldonNorm norm,
double anorm,
3732 int n = A.GetM();
double rcond(0);
3733 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(2*n);
3734 dspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3735 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3740 template<
class Prop0,
class Allocator0,
class Allocator1>
3741 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3742 RowSymPacked, Allocator0>& A,
3743 Vector<int, VectFull, Allocator1>& P,
3744 SeldonNorm norm,
float anorm,
3749 int n = A.GetM();
float rcond(0);
3750 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3751 cspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3752 work.GetData(), &info.GetInfoRef());
3757 template<
class Prop0,
class Allocator0,
class Allocator1>
3758 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3759 RowSymPacked, Allocator0>& A,
3760 Vector<int, VectFull, Allocator1>& P,
3761 SeldonNorm norm,
double anorm,
3766 int n = A.GetM();
double rcond(0);
3767 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3768 zspcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3769 work.GetData(), &info.GetInfoRef());
3777 template<
class Prop0,
class Allocator0,
class Allocator1>
3778 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3779 ColHerm, Allocator0>& A,
3780 Vector<int, VectFull, Allocator1>& P,
3781 SeldonNorm norm,
float anorm,
3786 int n = A.GetM();
float rcond(0);
3787 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3788 checon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3789 work.GetData(), &info.GetInfoRef());
3794 template<
class Prop0,
class Allocator0,
class Allocator1>
3795 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3796 ColHerm, Allocator0>& A,
3797 Vector<int, VectFull, Allocator1>& P,
3798 SeldonNorm norm,
double anorm,
3803 int n = A.GetM();
double rcond(0);
3804 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3805 zhecon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3806 work.GetData(), &info.GetInfoRef());
3814 template<
class Prop0,
class Allocator0,
class Allocator1>
3815 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3816 ColHermPacked, Allocator0>& A,
3817 Vector<int, VectFull, Allocator1>& P,
3818 SeldonNorm norm,
float anorm,
3823 int n = A.GetM();
float rcond(0);
3824 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3825 chpcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3826 work.GetData(), &info.GetInfoRef());
3831 template<
class Prop0,
class Allocator0,
class Allocator1>
3832 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3833 ColHermPacked, Allocator0>& A,
3834 Vector<int, VectFull, Allocator1>& P,
3835 SeldonNorm norm,
double anorm,
3840 int n = A.GetM();
double rcond(0);
3841 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3842 zhpcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3843 work.GetData(), &info.GetInfoRef());
3851 template<
class Prop0,
class Allocator0,
class Allocator1>
3852 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3853 RowHerm, Allocator0>& A,
3854 Vector<int, VectFull, Allocator1>& P,
3855 SeldonNorm norm,
float anorm,
3860 int n = A.GetM();
float rcond(0);
3861 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3862 checon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3863 work.GetData(), &info.GetInfoRef());
3868 template<
class Prop0,
class Allocator0,
class Allocator1>
3869 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3870 RowHerm, Allocator0>& A,
3871 Vector<int, VectFull, Allocator1>& P,
3872 SeldonNorm norm,
double anorm,
3877 int n = A.GetM();
double rcond(0);
3878 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3879 zhecon_(&uplo, &n, A.GetData(), &n, P.GetData(), &anorm, &rcond,
3880 work.GetData(), &info.GetInfoRef());
3888 template<
class Prop0,
class Allocator0,
class Allocator1>
3889 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3890 RowHermPacked, Allocator0>& A,
3891 Vector<int, VectFull, Allocator1>& P,
3892 SeldonNorm norm,
float anorm,
3897 int n = A.GetM();
float rcond(0);
3898 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3899 chpcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3900 work.GetData(), &info.GetInfoRef());
3905 template<
class Prop0,
class Allocator0,
class Allocator1>
3906 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3907 RowHermPacked, Allocator0>& A,
3908 Vector<int, VectFull, Allocator1>& P,
3909 SeldonNorm norm,
double anorm,
3914 int n = A.GetM();
double rcond(0);
3915 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3916 zhpcon_(&uplo, &n, A.GetData(), P.GetData(), &anorm, &rcond,
3917 work.GetData(), &info.GetInfoRef());
3925 template<
class Prop0,
class Allocator0>
3926 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, ColUpTriang,
3927 Allocator0>& A, SeldonNorm norm,
3930 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
3932 int n = A.GetM();
float rcond(0);
3933 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
3934 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
3935 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3940 template<
class Prop0,
class Allocator0>
3941 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, ColUpTriang,
3942 Allocator0>& A, SeldonNorm norm,
3945 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
3947 int n = A.GetM();
double rcond(0);
3948 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
3949 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
3950 work.GetData(), iwork.GetData(), &info.GetInfoRef());
3955 template<
class Prop0,
class Allocator0>
3956 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
3957 ColUpTriang, Allocator0>& A,
3961 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
3963 int n = A.GetM();
float rcond(0);
3964 Vector<float> rwork(n);
3965 Vector<complex<float>, VectFull, Allocator0> work(2*n);
3966 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
3967 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
3972 template<
class Prop0,
class Allocator0>
3973 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
3974 ColUpTriang, Allocator0>& A,
3978 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
3980 int n = A.GetM();
double rcond(0);
3981 Vector<double> rwork(n);
3982 Vector<complex<double>, VectFull, Allocator0> work(2*n);
3983 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
3984 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
3992 template<
class Prop0,
class Allocator0>
3993 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
3994 const Matrix<
float, Prop0, ColUpTriang,
3995 Allocator0>& A, SeldonNorm norm,
3998 char uplo(
'U');
char norm_type = norm.Char();
3999 char diag = DiagA.Char();
4000 int n = A.GetM();
float rcond(0);
4001 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4002 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4003 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4008 template<
class Prop0,
class Allocator0>
4009 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4010 const Matrix<
double, Prop0, ColUpTriang,
4011 Allocator0>& A, SeldonNorm norm,
4014 char uplo(
'U');
char norm_type = norm.Char();
4016 int n = A.GetM();
double rcond(0);
4017 char diag = DiagA.Char();
4018 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4019 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4020 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4025 template<
class Prop0,
class Allocator0>
4026 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4027 const Matrix<complex<float>, Prop0,
4028 ColUpTriang, Allocator0>& A,
4032 char uplo(
'U');
char norm_type = norm.Char();
4033 char diag = DiagA.Char();
4034 int n = A.GetM();
float rcond(0);
4035 Vector<float> rwork(n);
4036 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4037 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4038 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4043 template<
class Prop0,
class Allocator0>
4044 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4045 const Matrix<complex<double>, Prop0,
4046 ColUpTriang, Allocator0>& A,
4050 char uplo(
'U');
char norm_type = norm.Char();
4051 char diag = DiagA.Char();
4052 int n = A.GetM();
double rcond(0);
4053 Vector<double> rwork(n);
4054 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4055 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4056 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4064 template<
class Prop0,
class Allocator0>
4065 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
4066 ColLoTriang, Allocator0>& A,
4070 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4072 int n = A.GetM();
float rcond(0);
4073 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4074 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4075 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4080 template<
class Prop0,
class Allocator0>
4081 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, ColLoTriang,
4082 Allocator0>& A, SeldonNorm norm,
4085 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4087 int n = A.GetM();
double rcond(0);
4088 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4089 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4090 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4095 template<
class Prop0,
class Allocator0>
4096 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4097 ColLoTriang, Allocator0>& A,
4101 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4103 int n = A.GetM();
float rcond(0);
4104 Vector<float> rwork(n);
4105 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4106 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4107 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4112 template<
class Prop0,
class Allocator0>
4113 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4114 ColLoTriang, Allocator0>& A,
4118 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4120 int n = A.GetM();
double rcond(0);
4121 Vector<double> rwork(n);
4122 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4123 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4124 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4132 template<
class Prop0,
class Allocator0>
4133 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4134 const Matrix<
float, Prop0,
4135 ColLoTriang, Allocator0>& A,
4139 char uplo(
'L');
char norm_type = norm.Char();
4140 char diag = DiagA.Char();
4141 int n = A.GetM();
float rcond(0);
4142 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4143 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4144 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4149 template<
class Prop0,
class Allocator0>
4150 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4151 const Matrix<
double, Prop0, ColLoTriang,
4152 Allocator0>& A, SeldonNorm norm,
4155 char uplo(
'L');
char norm_type = norm.Char();
4156 char diag = DiagA.Char();
4157 int n = A.GetM();
double rcond(0);
4158 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4159 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4160 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4165 template<
class Prop0,
class Allocator0>
4166 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4167 const Matrix<complex<float>, Prop0,
4168 ColLoTriang, Allocator0>& A,
4172 char uplo(
'L');
char norm_type = norm.Char();
4173 char diag = DiagA.Char();
4174 int n = A.GetM();
float rcond(0);
4175 Vector<float> rwork(n);
4176 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4177 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4178 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4183 template<
class Prop0,
class Allocator0>
4184 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4185 const Matrix<complex<double>, Prop0,
4186 ColLoTriang, Allocator0>& A,
4190 char uplo(
'L');
char norm_type = norm.Char();
4191 char diag = DiagA.Char();
4192 int n = A.GetM();
double rcond(0);
4193 Vector<double> rwork(n);
4194 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4195 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4196 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4204 template<
class Prop0,
class Allocator0>
4205 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
4206 ColUpTriangPacked, Allocator0>& A,
4210 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
4212 int n = A.GetM();
float rcond(0);
4213 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4214 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4215 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4220 template<
class Prop0,
class Allocator0>
4221 double ReciprocalConditionNumber(
const Matrix<
double, Prop0,
4222 ColUpTriangPacked, Allocator0>& A,
4226 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
4228 int n = A.GetM();
double rcond(0);
4229 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4230 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4231 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4236 template<
class Prop0,
class Allocator0>
4237 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4238 ColUpTriangPacked, Allocator0>& A,
4242 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
4244 int n = A.GetM();
float rcond(0);
4245 Vector<float> rwork(n);
4246 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4247 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4248 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4253 template<
class Prop0,
class Allocator0>
4254 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4255 ColUpTriangPacked, Allocator0>& A,
4259 char uplo(
'U');
char norm_type = norm.Char();
char diag(
'N');
4261 int n = A.GetM();
double rcond(0);
4262 Vector<double> rwork(n);
4263 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4264 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4265 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4273 template<
class Prop0,
class Allocator0>
4274 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4275 const Matrix<
float, Prop0,
4276 ColUpTriangPacked, Allocator0>& A,
4280 char uplo(
'U');
char norm_type = norm.Char();
4281 char diag = DiagA.Char();
4282 int n = A.GetM();
float rcond(0);
4283 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4284 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4285 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4290 template<
class Prop0,
class Allocator0>
4291 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4292 const Matrix<
double, Prop0,
4293 ColUpTriangPacked, Allocator0>& A,
4297 char uplo(
'U');
char norm_type = norm.Char();
4298 char diag = DiagA.Char();
4299 int n = A.GetM();
double rcond(0);
4300 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4301 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4302 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4307 template<
class Prop0,
class Allocator0>
4308 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4309 const Matrix<complex<float>, Prop0,
4310 ColUpTriangPacked, Allocator0>& A,
4314 char uplo(
'U');
char norm_type = norm.Char();
4315 char diag = DiagA.Char();
4316 int n = A.GetM();
float rcond(0);
4317 Vector<float> rwork(n);
4318 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4319 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4320 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4325 template<
class Prop0,
class Allocator0>
4326 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4327 const Matrix<complex<double>, Prop0,
4328 ColUpTriangPacked, Allocator0>& A,
4332 char uplo(
'U');
char norm_type = norm.Char();
4333 char diag = DiagA.Char();
4334 int n = A.GetM();
double rcond(0);
4335 Vector<double> rwork(n);
4336 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4337 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4338 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4346 template<
class Prop0,
class Allocator0>
4347 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
4348 ColLoTriangPacked, Allocator0>& A,
4352 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4354 int n = A.GetM();
float rcond(0);
4355 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4356 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4357 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4362 template<
class Prop0,
class Allocator0>
4363 double ReciprocalConditionNumber(
const Matrix<
double, Prop0,
4364 ColLoTriangPacked, Allocator0>& A,
4368 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4370 int n = A.GetM();
double rcond(0);
4371 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4372 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4373 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4378 template<
class Prop0,
class Allocator0>
4379 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4380 ColLoTriangPacked, Allocator0>& A,
4384 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4386 int n = A.GetM();
float rcond(0);
4387 Vector<float> rwork(n);
4388 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4389 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4390 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4395 template<
class Prop0,
class Allocator0>
4396 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4397 ColLoTriangPacked, Allocator0>& A,
4401 char uplo(
'L');
char norm_type = norm.Char();
char diag(
'N');
4403 int n = A.GetM();
double rcond(0);
4404 Vector<double> rwork(n);
4405 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4406 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4407 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4415 template<
class Prop0,
class Allocator0>
4416 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4417 const Matrix<
float, Prop0,
4418 ColLoTriangPacked, Allocator0>& A,
4422 char uplo(
'L');
char norm_type = norm.Char();
4423 char diag = DiagA.Char();
4424 int n = A.GetM();
float rcond(0);
4425 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4426 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4427 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4432 template<
class Prop0,
class Allocator0>
4433 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4434 const Matrix<
double, Prop0,
4435 ColLoTriangPacked, Allocator0>& A,
4439 char uplo(
'L');
char norm_type = norm.Char();
4440 char diag = DiagA.Char();
4441 int n = A.GetM();
double rcond(0);
4442 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4443 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4444 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4449 template<
class Prop0,
class Allocator0>
4450 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4451 const Matrix<complex<float>, Prop0,
4452 ColLoTriangPacked, Allocator0>& A,
4456 char uplo(
'L');
char norm_type = norm.Char();
4457 char diag = DiagA.Char();
4458 int n = A.GetM();
float rcond(0);
4459 Vector<float> rwork(n);
4460 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4461 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4462 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4467 template<
class Prop0,
class Allocator0>
4468 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4469 const Matrix<complex<double>, Prop0,
4470 ColLoTriangPacked, Allocator0>& A,
4474 char uplo(
'L');
char norm_type = norm.Char();
4475 char diag = DiagA.Char();
4476 int n = A.GetM();
double rcond(0);
4477 Vector<double> rwork(n);
4478 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4479 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4480 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4488 template<
class Prop0,
class Allocator0>
4489 float ReciprocalConditionNumber(
const Matrix<
float, Prop0, RowUpTriang,
4490 Allocator0>& A, SeldonNorm norm,
4493 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4495 int n = A.GetM();
float rcond(0);
4496 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4497 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4498 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4503 template<
class Prop0,
class Allocator0>
4504 double ReciprocalConditionNumber(
const Matrix<
double, Prop0, RowUpTriang,
4505 Allocator0>& A, SeldonNorm norm,
4508 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4510 int n = A.GetM();
double rcond(0);
4511 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4512 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4513 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4518 template<
class Prop0,
class Allocator0>
4519 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4520 RowUpTriang, Allocator0>& A,
4524 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4526 int n = A.GetM();
float rcond(0);
4527 Vector<float> rwork(n);
4528 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4529 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4530 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4535 template<
class Prop0,
class Allocator0>
4536 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4537 RowUpTriang, Allocator0>& A,
4541 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4543 int n = A.GetM();
double rcond(0);
4544 Vector<double> rwork(n);
4545 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4546 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4547 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4555 template<
class Prop0,
class Allocator0>
4556 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4557 const Matrix<
float, Prop0, RowUpTriang,
4558 Allocator0>& A, SeldonNorm norm,
4561 char uplo(
'L');
char norm_type = norm.RevChar();
4562 char diag = DiagA.Char();
4563 int n = A.GetM();
float rcond(0);
4564 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4565 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4566 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4571 template<
class Prop0,
class Allocator0>
4572 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4573 const Matrix<
double, Prop0, RowUpTriang,
4574 Allocator0>& A, SeldonNorm norm,
4577 char uplo(
'L');
char norm_type = norm.RevChar();
4578 char diag = DiagA.Char();
4579 int n = A.GetM();
double rcond(0);
4580 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4581 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4582 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4587 template<
class Prop0,
class Allocator0>
4588 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4589 const Matrix<complex<float>, Prop0,
4590 RowUpTriang, Allocator0>& A,
4594 char uplo(
'L');
char norm_type = norm.RevChar();
4595 char diag = DiagA.Char();
4596 int n = A.GetM();
float rcond(0);
4597 Vector<float> rwork(n);
4598 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4599 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4600 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4605 template<
class Prop0,
class Allocator0>
4606 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4607 const Matrix<complex<double>, Prop0,
4608 RowUpTriang, Allocator0>& A,
4612 char uplo(
'L');
char norm_type = norm.RevChar();
4613 char diag = DiagA.Char();
4614 int n = A.GetM();
double rcond(0);
4615 Vector<double> rwork(n);
4616 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4617 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4618 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4626 template<
class Prop0,
class Allocator0>
4627 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
4628 RowLoTriang, Allocator0>& A,
4632 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4634 int n = A.GetM();
float rcond(0);
4635 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4636 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4637 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4642 template<
class Prop0,
class Allocator0>
4643 double ReciprocalConditionNumber(
const Matrix<
double, Prop0,
4644 RowLoTriang, Allocator0>& A,
4648 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4650 int n = A.GetM();
double rcond(0);
4651 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4652 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4653 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4658 template<
class Prop0,
class Allocator0>
4659 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4660 RowLoTriang, Allocator0>& A,
4664 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4666 int n = A.GetM();
float rcond(0);
4667 Vector<float> rwork(n);
4668 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4669 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4670 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4675 template<
class Prop0,
class Allocator0>
4676 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4677 RowLoTriang, Allocator0>& A,
4681 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4683 int n = A.GetM();
double rcond(0);
4684 Vector<double> rwork(n);
4685 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4686 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4687 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4695 template<
class Prop0,
class Allocator0>
4696 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4697 const Matrix<
float, Prop0,
4698 RowLoTriang, Allocator0>& A,
4702 char uplo(
'U');
char norm_type = norm.RevChar();
4703 char diag = DiagA.Char();
4704 int n = A.GetM();
float rcond(0);
4705 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4706 strcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4707 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4712 template<
class Prop0,
class Allocator0>
4713 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4714 const Matrix<
double, Prop0,
4715 RowLoTriang, Allocator0>& A,
4719 char uplo(
'U');
char norm_type = norm.RevChar();
4720 char diag = DiagA.Char();
4721 int n = A.GetM();
double rcond(0);
4722 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4723 dtrcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &n, &rcond,
4724 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4729 template<
class Prop0,
class Allocator0>
4730 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4731 const Matrix<complex<float>, Prop0,
4732 RowLoTriang, Allocator0>& A,
4736 char uplo(
'U');
char norm_type = norm.RevChar();
4737 char diag = DiagA.Char();
4738 int n = A.GetM();
float rcond(0);
4739 Vector<float> rwork(n);
4740 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4741 ctrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4742 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4747 template<
class Prop0,
class Allocator0>
4748 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4749 const Matrix<complex<double>, Prop0,
4750 RowLoTriang, Allocator0>& A,
4754 char uplo(
'U');
char norm_type = norm.RevChar();
4755 char diag = DiagA.Char();
4756 int n = A.GetM();
double rcond(0);
4757 Vector<double> rwork(n);
4758 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4759 ztrcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &n, &rcond,
4760 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4768 template<
class Prop0,
class Allocator0>
4769 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
4770 RowUpTriangPacked, Allocator0>& A,
4774 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4776 int n = A.GetM();
float rcond(0);
4777 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4778 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4779 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4784 template<
class Prop0,
class Allocator0>
4785 double ReciprocalConditionNumber(
const Matrix<
double, Prop0,
4786 RowUpTriangPacked, Allocator0>& A,
4790 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4792 int n = A.GetM();
double rcond(0);
4793 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4794 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4795 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4800 template<
class Prop0,
class Allocator0>
4801 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4802 RowUpTriangPacked, Allocator0>& A,
4806 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4808 int n = A.GetM();
float rcond(0);
4809 Vector<float> rwork(n);
4810 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4811 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4812 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4817 template<
class Prop0,
class Allocator0>
4818 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4819 RowUpTriangPacked, Allocator0>& A,
4823 char uplo(
'L');
char norm_type = norm.RevChar();
char diag(
'N');
4825 int n = A.GetM();
double rcond(0);
4826 Vector<double> rwork(n);
4827 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4828 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4829 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4837 template<
class Prop0,
class Allocator0>
4838 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4839 const Matrix<
float, Prop0,
4840 RowUpTriangPacked, Allocator0>& A,
4844 char uplo(
'L');
char norm_type = norm.RevChar();
4845 char diag = DiagA.Char();
4846 int n = A.GetM();
float rcond(0);
4847 Vector<int> iwork(n); Vector<float, VectFull, Allocator0> work(3*n);
4848 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4849 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4854 template<
class Prop0,
class Allocator0>
4855 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4856 const Matrix<
double, Prop0,
4857 RowUpTriangPacked, Allocator0>& A,
4861 char uplo(
'L');
char norm_type = norm.RevChar();
4862 char diag = DiagA.Char();
4863 int n = A.GetM();
double rcond(0);
4864 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4865 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4866 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4871 template<
class Prop0,
class Allocator0>
4872 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4873 const Matrix<complex<float>, Prop0,
4874 RowUpTriangPacked, Allocator0>& A,
4878 char uplo(
'L');
char norm_type = norm.RevChar();
4879 char diag = DiagA.Char();
4880 int n = A.GetM();
float rcond(0);
4881 Vector<float> rwork(n);
4882 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4883 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4884 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4889 template<
class Prop0,
class Allocator0>
4890 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4891 const Matrix<complex<double>, Prop0,
4892 RowUpTriangPacked, Allocator0>& A,
4896 char uplo(
'L');
char norm_type = norm.RevChar();
4897 char diag = DiagA.Char();
4898 int n = A.GetM();
double rcond(0);
4899 Vector<double> rwork(n);
4900 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4901 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4902 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4910 template<
class Prop0,
class Allocator0>
4911 float ReciprocalConditionNumber(
const Matrix<
float, Prop0,
4912 RowLoTriangPacked, Allocator0>& A,
4916 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4918 int n = A.GetM();
float rcond(0);
4919 Vector<int> iwork(n);
4920 Vector<float, VectFull, Allocator0> work(3*n);
4921 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4922 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4927 template<
class Prop0,
class Allocator0>
4928 double ReciprocalConditionNumber(
const Matrix<
double, Prop0,
4929 RowLoTriangPacked, Allocator0>& A,
4933 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4935 int n = A.GetM();
double rcond(0);
4936 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
4937 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4938 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4943 template<
class Prop0,
class Allocator0>
4944 float ReciprocalConditionNumber(
const Matrix<complex<float>, Prop0,
4945 RowLoTriangPacked, Allocator0>& A,
4949 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4951 int n = A.GetM();
float rcond(0);
4952 Vector<float> rwork(n);
4953 Vector<complex<float>, VectFull, Allocator0> work(2*n);
4954 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4955 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4960 template<
class Prop0,
class Allocator0>
4961 double ReciprocalConditionNumber(
const Matrix<complex<double>, Prop0,
4962 RowLoTriangPacked, Allocator0>& A,
4966 char uplo(
'U');
char norm_type = norm.RevChar();
char diag(
'N');
4968 int n = A.GetM();
double rcond(0);
4969 Vector<double> rwork(n);
4970 Vector<complex<double>, VectFull, Allocator0> work(2*n);
4971 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
4972 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
4980 template<
class Prop0,
class Allocator0>
4981 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
4982 const Matrix<
float, Prop0,
4983 RowLoTriangPacked, Allocator0>& A,
4987 char uplo(
'U');
char norm_type = norm.RevChar();
4988 char diag = DiagA.Char();
4989 int n = A.GetM();
float rcond(0);
4990 Vector<int> iwork(n);
4991 Vector<float, VectFull, Allocator0> work(3*n);
4992 stpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
4993 work.GetData(), iwork.GetData(), &info.GetInfoRef());
4998 template<
class Prop0,
class Allocator0>
4999 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
5000 const Matrix<
double, Prop0,
5001 RowLoTriangPacked, Allocator0>& A,
5005 char uplo(
'U');
char norm_type = norm.RevChar();
5006 char diag = DiagA.Char();
5007 int n = A.GetM();
double rcond(0);
5008 Vector<int> iwork(n); Vector<double, VectFull, Allocator0> work(3*n);
5009 dtpcon_(&norm_type, &uplo, &diag, &n, A.GetData(), &rcond,
5010 work.GetData(), iwork.GetData(), &info.GetInfoRef());
5015 template<
class Prop0,
class Allocator0>
5016 float ReciprocalConditionNumber(
const SeldonDiag& DiagA,
5017 const Matrix<complex<float>, Prop0,
5018 RowLoTriangPacked, Allocator0>& A,
5022 char uplo(
'U');
char norm_type = norm.RevChar();
5023 char diag = DiagA.Char();
5024 int n = A.GetM();
float rcond(0);
5025 Vector<float> rwork(n);
5026 Vector<complex<float>, VectFull, Allocator0> work(2*n);
5027 ctpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
5028 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
5033 template<
class Prop0,
class Allocator0>
5034 double ReciprocalConditionNumber(
const SeldonDiag& DiagA,
5035 const Matrix<complex<double>, Prop0,
5036 RowLoTriangPacked, Allocator0>& A,
5040 char uplo(
'U');
char norm_type = norm.RevChar();
5041 char diag = DiagA.Char();
5042 int n = A.GetM();
double rcond(0);
5043 Vector<double> rwork(n);
5044 Vector<complex<double>, VectFull, Allocator0> work(2*n);
5045 ztpcon_(&norm_type, &uplo, &diag, &n, A.GetDataVoid(), &rcond,
5046 work.GetDataVoid(), rwork.GetData(), &info.GetInfoRef());
5063 template <
class Prop0,
class Allocator0,
5064 class Allocator1,
class Allocator2,
5065 class Allocator3,
class Allocator4>
5066 void RefineSolutionLU(
const Matrix<float, Prop0, ColMajor, Allocator0>& A,
5067 const Matrix<
float, Prop0, ColMajor,
5069 const Vector<int, VectFull, Allocator2>& P,
5070 Vector<float, VectFull, Allocator3>& x,
5071 const Vector<float, VectFull, Allocator4>& b,
5072 float& ferr,
float& berr,
5076 #ifdef SELDON_CHECK_DIMENSIONS
5077 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5078 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5084 Vector<float, VectFull, Allocator3> work(3*m);
5085 Vector<int> iwork(m);
5086 sgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5087 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5088 &ferr, &berr, work.GetData(),
5089 iwork.GetData(), &info.GetInfoRef() );
5093 template <
class Prop0,
class Allocator0,
5094 class Allocator1,
class Allocator2,
5095 class Allocator3,
class Allocator4>
5096 void RefineSolutionLU(
const Matrix<double, Prop0, ColMajor, Allocator0>& A,
5097 const Matrix<
double, Prop0, ColMajor,
5099 const Vector<int, VectFull, Allocator2>& P,
5100 Vector<double, VectFull, Allocator3>& x,
5101 const Vector<double, VectFull, Allocator4>& b,
5102 double& ferr,
double& berr,
5106 #ifdef SELDON_CHECK_DIMENSIONS
5107 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5108 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5114 Vector<double, VectFull, Allocator3> work(3*m);
5115 Vector<int> iwork(m);
5116 dgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5117 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5118 &ferr, &berr, work.GetData(),
5119 iwork.GetData(), &info.GetInfoRef() );
5123 template <
class Prop0,
class Allocator0,
5124 class Allocator1,
class Allocator2,
5125 class Allocator3,
class Allocator4>
5126 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
5127 ColMajor, Allocator0>& A,
5128 const Matrix<complex<float>, Prop0,
5129 ColMajor, Allocator1>& Alu,
5130 const Vector<int, VectFull, Allocator2>& P,
5131 Vector<complex<float>, VectFull, Allocator3>& x,
5132 const Vector<complex<float>, VectFull,
5134 float& ferr,
float& berr,
5138 #ifdef SELDON_CHECK_DIMENSIONS
5139 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5140 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5146 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5147 Vector<float> rwork(m);
5148 cgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5149 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5150 &berr, work.GetData(), rwork.GetData(),
5151 &info.GetInfoRef() );
5155 template <
class Prop0,
class Allocator0,
5156 class Allocator1,
class Allocator2,
5157 class Allocator3,
class Allocator4>
5158 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
5159 ColMajor, Allocator0>& A,
5160 const Matrix<complex<double>, Prop0,
5161 ColMajor, Allocator1>& Alu,
5162 const Vector<int, VectFull, Allocator2>& P,
5163 Vector<complex<double>, VectFull, Allocator3>& x,
5164 const Vector<complex<double>, VectFull,
5166 double& ferr,
double& berr,
5170 #ifdef SELDON_CHECK_DIMENSIONS
5171 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5172 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5178 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5179 Vector<double> rwork(m);
5180 zgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5181 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5182 &berr, work.GetData(), rwork.GetData(),
5183 &info.GetInfoRef() );
5190 template <
class Prop0,
class Allocator0,
5191 class Allocator1,
class Allocator2,
5192 class Allocator3,
class Allocator4>
5193 void RefineSolutionLU(
const SeldonTranspose& TransA,
5194 const Matrix<float, Prop0, ColMajor, Allocator0>& A,
5195 const Matrix<
float, Prop0, ColMajor,
5197 const Vector<int, VectFull, Allocator2>& P,
5198 Vector<float, VectFull, Allocator3>& x,
5199 const Vector<float, VectFull, Allocator4>& b,
5200 float& ferr,
float& berr,
5204 #ifdef SELDON_CHECK_DIMENSIONS
5205 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5206 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5211 char trans = TransA.Char();
5212 Vector<float, VectFull, Allocator3> work(3*m);
5213 Vector<int> iwork(m);
5214 sgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5215 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5216 &ferr, &berr, work.GetData(),
5217 iwork.GetData(), &info.GetInfoRef() );
5221 template <
class Prop0,
class Allocator0,
5222 class Allocator1,
class Allocator2,
5223 class Allocator3,
class Allocator4>
5224 void RefineSolutionLU(
const SeldonTranspose& TransA,
5225 const Matrix<double, Prop0, ColMajor, Allocator0>& A,
5226 const Matrix<
double, Prop0, ColMajor,
5228 const Vector<int, VectFull, Allocator2>& P,
5229 Vector<double, VectFull, Allocator3>& x,
5230 const Vector<double, VectFull, Allocator4>& b,
5231 double& ferr,
double& berr,
5235 #ifdef SELDON_CHECK_DIMENSIONS
5236 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5237 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5242 char trans = TransA.Char();
5243 Vector<double, VectFull, Allocator3> work(3*m);
5244 Vector<int> iwork(m);
5245 dgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5246 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5247 &ferr, &berr, work.GetData(),
5248 iwork.GetData(), &info.GetInfoRef() );
5252 template <
class Prop0,
class Allocator0,
5253 class Allocator1,
class Allocator2,
5254 class Allocator3,
class Allocator4>
5256 RefineSolutionLU(
const SeldonTranspose& TransA,
5257 const Matrix<complex<float>, Prop0, ColMajor,
5259 const Matrix<complex<float>, Prop0, ColMajor,
5261 const Vector<int, VectFull, Allocator2>& P,
5262 Vector<complex<float>, VectFull, Allocator3>& x,
5263 const Vector<complex<float>, VectFull, Allocator4>& b,
5264 float& ferr,
float& berr,
5268 #ifdef SELDON_CHECK_DIMENSIONS
5269 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5270 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5275 char trans = TransA.Char();
5276 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5277 Vector<float> rwork(m);
5278 cgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5279 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m,
5280 &ferr, &berr, work.GetDataVoid(),
5281 rwork.GetData(), &info.GetInfoRef() );
5285 template <
class Prop0,
class Allocator0,
5286 class Allocator1,
class Allocator2,
5287 class Allocator3,
class Allocator4>
5288 void RefineSolutionLU(
const SeldonTranspose& TransA,
5289 const Matrix<complex<double>, Prop0, ColMajor,
5291 const Matrix<complex<double>, Prop0, ColMajor,
5293 const Vector<int, VectFull, Allocator2>& P,
5294 Vector<complex<double>, VectFull, Allocator3>& x,
5295 const Vector<complex<double>, VectFull,
5297 double& ferr,
double& berr,
5301 #ifdef SELDON_CHECK_DIMENSIONS
5302 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5303 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5308 char trans = TransA.Char();
5309 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5310 Vector<double> rwork(m);
5311 zgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5312 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m,
5313 &ferr, &berr, work.GetDataVoid(),
5314 rwork.GetData(), &info.GetInfoRef());
5321 template <
class Prop0,
class Allocator0,
5322 class Allocator1,
class Allocator2,
5323 class Allocator3,
class Allocator4>
5324 void RefineSolutionLU(
const Matrix<float, Prop0, RowMajor, Allocator0>& A,
5325 const Matrix<
float, Prop0, RowMajor,
5327 const Vector<int, VectFull, Allocator2>& P,
5328 Vector<float, VectFull, Allocator3>& x,
5329 const Vector<float, VectFull, Allocator4>& b,
5330 float& ferr,
float& berr,
5334 #ifdef SELDON_CHECK_DIMENSIONS
5335 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5336 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5342 Vector<float, VectFull, Allocator3> work(3*m);
5343 Vector<int> iwork(m);
5344 sgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5345 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5346 &ferr, &berr, work.GetData(),
5347 iwork.GetData(), &info.GetInfoRef());
5351 template <
class Prop0,
class Allocator0,
5352 class Allocator1,
class Allocator2,
5353 class Allocator3,
class Allocator4>
5354 void RefineSolutionLU(
const Matrix<double, Prop0, RowMajor, Allocator0>& A,
5355 const Matrix<
double, Prop0, RowMajor,
5357 const Vector<int, VectFull, Allocator2>& P,
5358 Vector<double, VectFull, Allocator3>& x,
5359 const Vector<double, VectFull, Allocator4>& b,
5360 double& ferr,
double& berr,
5364 #ifdef SELDON_CHECK_DIMENSIONS
5365 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5366 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5372 Vector<double, VectFull, Allocator3> work(3*m);
5373 Vector<int> iwork(m);
5374 dgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5375 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5376 &ferr, &berr, work.GetData(),
5377 iwork.GetData(), &info.GetInfoRef());
5381 template <
class Prop0,
class Allocator0,
5382 class Allocator1,
class Allocator2,
5383 class Allocator3,
class Allocator4>
5384 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
5385 RowMajor, Allocator0>& A,
5386 const Matrix<complex<float>, Prop0,
5387 RowMajor, Allocator1>& Alu,
5388 const Vector<int, VectFull, Allocator2>& P,
5389 Vector<complex<float>, VectFull, Allocator3>& x,
5390 const Vector<complex<float>, VectFull,
5392 float& ferr,
float& berr,
5396 #ifdef SELDON_CHECK_DIMENSIONS
5397 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5398 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5404 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5405 Vector<float> rwork(m);
5406 cgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5407 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5408 &berr, work.GetData(), rwork.GetData(),
5409 &info.GetInfoRef());
5413 template <
class Prop0,
class Allocator0,
5414 class Allocator1,
class Allocator2,
5415 class Allocator3,
class Allocator4>
5416 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
5417 RowMajor, Allocator0>& A,
5418 const Matrix<complex<double>, Prop0,
5419 RowMajor, Allocator1>& Alu,
5420 const Vector<int, VectFull, Allocator2>& P,
5421 Vector<complex<double>, VectFull, Allocator3>& x,
5422 const Vector<complex<double>, VectFull,
5424 double& ferr,
double& berr,
5428 #ifdef SELDON_CHECK_DIMENSIONS
5429 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5430 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5436 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5437 Vector<double> rwork(m);
5438 zgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5439 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5440 &berr, work.GetData(), rwork.GetData(),
5441 &info.GetInfoRef());
5448 template <
class Prop0,
class Allocator0,
5449 class Allocator1,
class Allocator2,
5450 class Allocator3,
class Allocator4>
5451 void RefineSolutionLU(
const SeldonTranspose& TransA,
5452 const Matrix<float, Prop0, RowMajor, Allocator0>& A,
5453 const Matrix<
float, Prop0, RowMajor,
5455 const Vector<int, VectFull, Allocator2>& P,
5456 Vector<float, VectFull, Allocator3>& x,
5457 const Vector<float, VectFull, Allocator4>& b,
5458 float& ferr,
float& berr,
5462 #ifdef SELDON_CHECK_DIMENSIONS
5463 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5464 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5469 char trans = TransA.RevChar();
5470 Vector<float, VectFull, Allocator3> work(3*m);
5471 Vector<int> iwork(m);
5472 sgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5473 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5474 &ferr, &berr, work.GetData(),
5475 iwork.GetData(), &info.GetInfoRef() );
5479 template <
class Prop0,
class Allocator0,
5480 class Allocator1,
class Allocator2,
5481 class Allocator3,
class Allocator4>
5482 void RefineSolutionLU(
const SeldonTranspose& TransA,
5483 const Matrix<double, Prop0, RowMajor, Allocator0>& A,
5484 const Matrix<
double, Prop0, RowMajor,
5486 const Vector<int, VectFull, Allocator2>& P,
5487 Vector<double, VectFull, Allocator3>& x,
5488 const Vector<double, VectFull, Allocator4>& b,
5489 double& ferr,
double& berr,
5493 #ifdef SELDON_CHECK_DIMENSIONS
5494 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5495 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5500 char trans = TransA.RevChar();
5501 Vector<double, VectFull, Allocator3> work(3*m);
5502 Vector<int> iwork(m);
5503 dgerfs_(&trans, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5504 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5505 &ferr, &berr, work.GetData(),
5506 iwork.GetData(), &info.GetInfoRef() );
5510 template <
class Prop0,
class Allocator0,
5511 class Allocator1,
class Allocator2,
5512 class Allocator3,
class Allocator4>
5513 void RefineSolutionLU(
const SeldonTranspose& TransA,
5514 const Matrix<complex<float>, Prop0, RowMajor,
5516 const Matrix<complex<float>, Prop0, RowMajor,
5518 const Vector<int, VectFull, Allocator2>& P,
5519 Vector<complex<float>, VectFull, Allocator3>& x,
5520 Vector<complex<float>, VectFull, Allocator4>& b,
5521 float& ferr,
float& berr,
5525 #ifdef SELDON_CHECK_DIMENSIONS
5526 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5527 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5532 char trans = TransA.RevChar();
5533 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5534 Vector<float> rwork(m);
5535 if (TransA.ConjTrans())
5540 cgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5541 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m,
5542 &ferr, &berr, work.GetDataVoid(),
5543 rwork.GetData(), &info.GetInfoRef() );
5544 if (TransA.ConjTrans())
5552 template <
class Prop0,
class Allocator0,
5553 class Allocator1,
class Allocator2,
5554 class Allocator3,
class Allocator4>
5555 void RefineSolutionLU(
const SeldonTranspose& TransA,
5556 const Matrix<complex<double>, Prop0, RowMajor,
5558 const Matrix<complex<double>, Prop0, RowMajor,
5560 const Vector<int, VectFull, Allocator2>& P,
5561 Vector<complex<double>, VectFull, Allocator3>& x,
5562 Vector<complex<double>, VectFull,
5564 double& ferr,
double& berr,
5568 #ifdef SELDON_CHECK_DIMENSIONS
5569 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5570 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5573 if (TransA.ConjTrans())
5581 char trans = TransA.RevChar();
5582 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5583 Vector<double> rwork(m);
5585 zgerfs_(&trans, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5586 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m,
5587 &ferr, &berr, work.GetDataVoid(),
5588 rwork.GetData(), &info.GetInfoRef());
5590 if (TransA.ConjTrans())
5601 template <
class Prop0,
class Allocator0,
5602 class Allocator1,
class Allocator2,
5603 class Allocator3,
class Allocator4>
5604 void RefineSolutionLU(
const Matrix<float, Prop0, ColSym, Allocator0>& A,
5605 const Matrix<
float, Prop0, ColSym,
5607 const Vector<int, VectFull, Allocator2>& P,
5608 Vector<float, VectFull, Allocator3>& x,
5609 const Vector<float, VectFull, Allocator4>& b,
5610 float& ferr,
float& berr,
5614 #ifdef SELDON_CHECK_DIMENSIONS
5615 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5616 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5622 Vector<float, VectFull, Allocator3> work(3*m);
5623 Vector<int> iwork(m);
5624 ssyrfs_(&uplo, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5625 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5626 &ferr, &berr, work.GetData(),
5627 iwork.GetData(), &info.GetInfoRef() );
5631 template <
class Prop0,
class Allocator0,
5632 class Allocator1,
class Allocator2,
5633 class Allocator3,
class Allocator4>
5634 void RefineSolutionLU(
const Matrix<double, Prop0, ColSym, Allocator0>& A,
5635 const Matrix<
double, Prop0, ColSym,
5637 const Vector<int, VectFull, Allocator2>& P,
5638 Vector<double, VectFull, Allocator3>& x,
5639 const Vector<double, VectFull, Allocator4>& b,
5640 double& ferr,
double& berr,
5644 #ifdef SELDON_CHECK_DIMENSIONS
5645 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5646 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5652 Vector<double, VectFull, Allocator3> work(3*m);
5653 Vector<int> iwork(m);
5654 dsyrfs_(&uplo, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5655 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5656 &ferr, &berr, work.GetData(),
5657 iwork.GetData(), &info.GetInfoRef() );
5661 template <
class Prop0,
class Allocator0,
5662 class Allocator1,
class Allocator2,
5663 class Allocator3,
class Allocator4>
5664 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
5665 ColSym, Allocator0>& A,
5666 const Matrix<complex<float>, Prop0,
5667 ColSym, Allocator1>& Alu,
5668 const Vector<int, VectFull, Allocator2>& P,
5669 Vector<complex<float>, VectFull, Allocator3>& x,
5670 const Vector<complex<float>, VectFull,
5672 float& ferr,
float& berr,
5676 #ifdef SELDON_CHECK_DIMENSIONS
5677 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5678 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5684 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5685 Vector<float> rwork(m);
5686 csyrfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5687 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5688 &berr, work.GetData(), rwork.GetData(),
5689 &info.GetInfoRef() );
5693 template <
class Prop0,
class Allocator0,
5694 class Allocator1,
class Allocator2,
5695 class Allocator3,
class Allocator4>
5696 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
5697 ColSym, Allocator0>& A,
5698 const Matrix<complex<double>, Prop0,
5699 ColSym, Allocator1>& Alu,
5700 const Vector<int, VectFull, Allocator2>& P,
5701 Vector<complex<double>, VectFull, Allocator3>& x,
5702 const Vector<complex<double>, VectFull,
5704 double& ferr,
double& berr,
5708 #ifdef SELDON_CHECK_DIMENSIONS
5709 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5710 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5716 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5717 Vector<double> rwork(m);
5718 zsyrfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5719 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5720 &berr, work.GetData(), rwork.GetData(),
5721 &info.GetInfoRef() );
5728 template <
class Prop0,
class Allocator0,
5729 class Allocator1,
class Allocator2,
5730 class Allocator3,
class Allocator4>
5731 void RefineSolutionLU(
const Matrix<
float, Prop0, ColSymPacked,
5733 const Matrix<
float, Prop0, ColSymPacked,
5735 const Vector<int, VectFull, Allocator2>& P,
5736 Vector<float, VectFull, Allocator3>& x,
5737 const Vector<float, VectFull, Allocator4>& b,
5738 float& ferr,
float& berr,
5742 #ifdef SELDON_CHECK_DIMENSIONS
5743 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5744 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5750 Vector<float, VectFull, Allocator3> work(3*m);
5751 Vector<int> iwork(m);
5752 ssprfs_(&uplo, &m, &nrhs, A.GetData(), Alu.GetData(),
5753 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5754 &ferr, &berr, work.GetData(),
5755 iwork.GetData(), &info.GetInfoRef() );
5759 template <
class Prop0,
class Allocator0,
5760 class Allocator1,
class Allocator2,
5761 class Allocator3,
class Allocator4>
5762 void RefineSolutionLU(
const Matrix<
double, Prop0, ColSymPacked,
5764 const Matrix<
double, Prop0, ColSymPacked,
5766 const Vector<int, VectFull, Allocator2>& P,
5767 Vector<double, VectFull, Allocator3>& x,
5768 const Vector<double, VectFull, Allocator4>& b,
5769 double& ferr,
double& berr,
5773 #ifdef SELDON_CHECK_DIMENSIONS
5774 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5775 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5781 Vector<double, VectFull, Allocator3> work(3*m);
5782 Vector<int> iwork(m);
5783 dsprfs_(&uplo, &m, &nrhs, A.GetData(), Alu.GetData(),
5784 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5785 &ferr, &berr, work.GetData(),
5786 iwork.GetData(), &info.GetInfoRef() );
5790 template <
class Prop0,
class Allocator0,
5791 class Allocator1,
class Allocator2,
5792 class Allocator3,
class Allocator4>
5793 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
5794 ColSymPacked, Allocator0>& A,
5795 const Matrix<complex<float>, Prop0,
5796 ColSymPacked, Allocator1>& Alu,
5797 const Vector<int, VectFull, Allocator2>& P,
5798 Vector<complex<float>, VectFull, Allocator3>& x,
5799 const Vector<complex<float>, VectFull,
5801 float& ferr,
float& berr,
5805 #ifdef SELDON_CHECK_DIMENSIONS
5806 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5807 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5813 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5814 Vector<float> rwork(m);
5815 csprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
5816 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5817 &berr, work.GetData(), rwork.GetData(),
5818 &info.GetInfoRef() );
5822 template <
class Prop0,
class Allocator0,
5823 class Allocator1,
class Allocator2,
5824 class Allocator3,
class Allocator4>
5825 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
5826 ColSymPacked, Allocator0>& A,
5827 const Matrix<complex<double>, Prop0,
5828 ColSymPacked, Allocator1>& Alu,
5829 const Vector<int, VectFull, Allocator2>& P,
5830 Vector<complex<double>, VectFull, Allocator3>& x,
5831 const Vector<complex<double>, VectFull,
5833 double& ferr,
double& berr,
5837 #ifdef SELDON_CHECK_DIMENSIONS
5838 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5839 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5845 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5846 Vector<double> rwork(m);
5847 zsprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
5848 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5849 &berr, work.GetData(), rwork.GetData(),
5850 &info.GetInfoRef() );
5857 template <
class Prop0,
class Allocator0,
5858 class Allocator1,
class Allocator2,
5859 class Allocator3,
class Allocator4>
5860 void RefineSolutionLU(
const Matrix<float, Prop0, RowSym, Allocator0>& A,
5861 const Matrix<
float, Prop0, RowSym,
5863 const Vector<int, VectFull, Allocator2>& P,
5864 Vector<float, VectFull, Allocator3>& x,
5865 const Vector<float, VectFull, Allocator4>& b,
5866 float& ferr,
float& berr,
5870 #ifdef SELDON_CHECK_DIMENSIONS
5871 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5872 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5878 Vector<float, VectFull, Allocator3> work(3*m);
5879 Vector<int> iwork(m);
5880 ssyrfs_(&uplo, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5881 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5882 &ferr, &berr, work.GetData(),
5883 iwork.GetData(), &info.GetInfoRef() );
5887 template <
class Prop0,
class Allocator0,
5888 class Allocator1,
class Allocator2,
5889 class Allocator3,
class Allocator4>
5890 void RefineSolutionLU(
const Matrix<double, Prop0, RowSym, Allocator0>& A,
5891 const Matrix<
double, Prop0, RowSym,
5893 const Vector<int, VectFull, Allocator2>& P,
5894 Vector<double, VectFull, Allocator3>& x,
5895 const Vector<double, VectFull, Allocator4>& b,
5896 double& ferr,
double& berr,
5900 #ifdef SELDON_CHECK_DIMENSIONS
5901 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5902 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5908 Vector<double, VectFull, Allocator3> work(3*m);
5909 Vector<int> iwork(m);
5910 dsyrfs_(&uplo, &m, &nrhs, A.GetData(), &m, Alu.GetData(), &m,
5911 P.GetData(), b.GetData(), &m, x.GetData(), &m,
5912 &ferr, &berr, work.GetData(),
5913 iwork.GetData(), &info.GetInfoRef() );
5917 template <
class Prop0,
class Allocator0,
5918 class Allocator1,
class Allocator2,
5919 class Allocator3,
class Allocator4>
5920 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
5921 RowSym, Allocator0>& A,
5922 const Matrix<complex<float>, Prop0,
5923 RowSym, Allocator1>& Alu,
5924 const Vector<int, VectFull, Allocator2>& P,
5925 Vector<complex<float>, VectFull, Allocator3>& x,
5926 const Vector<complex<float>, VectFull,
5928 float& ferr,
float& berr,
5932 #ifdef SELDON_CHECK_DIMENSIONS
5933 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5934 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5940 Vector<complex<float>, VectFull, Allocator3> work(2*m);
5941 Vector<float> rwork(m);
5942 csyrfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5943 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5944 &berr, work.GetData(), rwork.GetData(),
5945 &info.GetInfoRef() );
5949 template <
class Prop0,
class Allocator0,
5950 class Allocator1,
class Allocator2,
5951 class Allocator3,
class Allocator4>
5952 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
5953 RowSym, Allocator0>& A,
5954 const Matrix<complex<double>, Prop0,
5955 RowSym, Allocator1>& Alu,
5956 const Vector<int, VectFull, Allocator2>& P,
5957 Vector<complex<double>, VectFull, Allocator3>& x,
5958 const Vector<complex<double>, VectFull,
5960 double& ferr,
double& berr,
5964 #ifdef SELDON_CHECK_DIMENSIONS
5965 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5966 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
5972 Vector<complex<double>, VectFull, Allocator3> work(2*m);
5973 Vector<double> rwork(m);
5974 zsyrfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
5975 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
5976 &berr, work.GetData(), rwork.GetData(),
5977 &info.GetInfoRef() );
5984 template <
class Prop0,
class Allocator0,
5985 class Allocator1,
class Allocator2,
5986 class Allocator3,
class Allocator4>
5987 void RefineSolutionLU(
const Matrix<
float, Prop0, RowSymPacked,
5989 const Matrix<
float, Prop0, RowSymPacked,
5991 const Vector<int, VectFull, Allocator2>& P,
5992 Vector<float, VectFull, Allocator3>& x,
5993 const Vector<float, VectFull, Allocator4>& b,
5994 float& ferr,
float& berr,
5998 #ifdef SELDON_CHECK_DIMENSIONS
5999 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6000 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6006 Vector<float, VectFull, Allocator3> work(3*m);
6007 Vector<int> iwork(m);
6008 ssprfs_(&uplo, &m, &nrhs, A.GetData(), Alu.GetData(),
6009 P.GetData(), b.GetData(), &m, x.GetData(), &m,
6010 &ferr, &berr, work.GetData(),
6011 iwork.GetData(), &info.GetInfoRef() );
6015 template <
class Prop0,
class Allocator0,
6016 class Allocator1,
class Allocator2,
6017 class Allocator3,
class Allocator4>
6018 void RefineSolutionLU(
const Matrix<
double, Prop0, RowSymPacked,
6020 const Matrix<
double, Prop0, RowSymPacked,
6022 const Vector<int, VectFull, Allocator2>& P,
6023 Vector<double, VectFull, Allocator3>& x,
6024 const Vector<double, VectFull, Allocator4>& b,
6025 double& ferr,
double& berr,
6029 #ifdef SELDON_CHECK_DIMENSIONS
6030 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6031 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6037 Vector<double, VectFull, Allocator3> work(3*m);
6038 Vector<int> iwork(m);
6039 dsprfs_(&uplo, &m, &nrhs, A.GetData(), Alu.GetData(),
6040 P.GetData(), b.GetData(), &m, x.GetData(), &m,
6041 &ferr, &berr, work.GetData(),
6042 iwork.GetData(), &info.GetInfoRef() );
6046 template <
class Prop0,
class Allocator0,
6047 class Allocator1,
class Allocator2,
6048 class Allocator3,
class Allocator4>
6049 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
6050 RowSymPacked, Allocator0>& A,
6051 const Matrix<complex<float>, Prop0,
6052 RowSymPacked, Allocator1>& Alu,
6053 const Vector<int, VectFull, Allocator2>& P,
6054 Vector<complex<float>, VectFull, Allocator3>& x,
6055 const Vector<complex<float>, VectFull,
6057 float& ferr,
float& berr,
6061 #ifdef SELDON_CHECK_DIMENSIONS
6062 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6063 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6069 Vector<complex<float>, VectFull, Allocator3> work(2*m);
6070 Vector<float> rwork(m);
6071 csprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
6072 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6073 &berr, work.GetData(), rwork.GetData(),
6074 &info.GetInfoRef() );
6078 template <
class Prop0,
class Allocator0,
6079 class Allocator1,
class Allocator2,
6080 class Allocator3,
class Allocator4>
6081 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
6082 RowSymPacked, Allocator0>& A,
6083 const Matrix<complex<double>, Prop0,
6084 RowSymPacked, Allocator1>& Alu,
6085 const Vector<int, VectFull, Allocator2>& P,
6086 Vector<complex<double>, VectFull, Allocator3>& x,
6087 const Vector<complex<double>, VectFull,
6089 double& ferr,
double& berr,
6093 #ifdef SELDON_CHECK_DIMENSIONS
6094 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6095 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6101 Vector<complex<double>, VectFull, Allocator3> work(2*m);
6102 Vector<double> rwork(m);
6103 zsprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
6104 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6105 &berr, work.GetData(), rwork.GetData(),
6106 &info.GetInfoRef() );
6113 template <
class Prop0,
class Allocator0,
6114 class Allocator1,
class Allocator2,
6115 class Allocator3,
class Allocator4>
6116 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
6117 ColHerm, Allocator0>& A,
6118 const Matrix<complex<float>, Prop0,
6119 ColHerm, Allocator1>& Alu,
6120 const Vector<int, VectFull, Allocator2>& P,
6121 Vector<complex<float>, VectFull, Allocator3>& x,
6122 const Vector<complex<float>, VectFull,
6124 float& ferr,
float& berr,
6128 #ifdef SELDON_CHECK_DIMENSIONS
6129 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6130 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6136 Vector<complex<float>, VectFull, Allocator3> work(2*m);
6137 Vector<float> rwork(m);
6138 cherfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
6139 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6140 &berr, work.GetData(), rwork.GetData(),
6141 &info.GetInfoRef() );
6145 template <
class Prop0,
class Allocator0,
6146 class Allocator1,
class Allocator2,
6147 class Allocator3,
class Allocator4>
6148 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
6149 ColHerm, Allocator0>& A,
6150 const Matrix<complex<double>, Prop0,
6151 ColHerm, Allocator1>& Alu,
6152 const Vector<int, VectFull, Allocator2>& P,
6153 Vector<complex<double>, VectFull, Allocator3>& x,
6154 const Vector<complex<double>, VectFull,
6156 double& ferr,
double& berr,
6160 #ifdef SELDON_CHECK_DIMENSIONS
6161 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6162 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6168 Vector<complex<double>, VectFull, Allocator3> work(2*m);
6169 Vector<double> rwork(m);
6170 zherfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
6171 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6172 &berr, work.GetData(), rwork.GetData(),
6173 &info.GetInfoRef() );
6180 template <
class Prop0,
class Allocator0,
6181 class Allocator1,
class Allocator2,
6182 class Allocator3,
class Allocator4>
6183 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
6184 ColHermPacked, Allocator0>& A,
6185 const Matrix<complex<float>, Prop0,
6186 ColHermPacked, Allocator1>& Alu,
6187 const Vector<int, VectFull, Allocator2>& P,
6188 Vector<complex<float>, VectFull, Allocator3>& x,
6189 const Vector<complex<float>, VectFull,
6191 float& ferr,
float& berr,
6195 #ifdef SELDON_CHECK_DIMENSIONS
6196 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6197 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6203 Vector<complex<float>, VectFull, Allocator3> work(2*m);
6204 Vector<float> rwork(m);
6205 chprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
6206 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6207 &berr, work.GetData(), rwork.GetData(),
6208 &info.GetInfoRef() );
6212 template <
class Prop0,
class Allocator0,
6213 class Allocator1,
class Allocator2,
6214 class Allocator3,
class Allocator4>
6215 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
6216 ColHermPacked, Allocator0>& A,
6217 const Matrix<complex<double>, Prop0,
6218 ColHermPacked, Allocator1>& Alu,
6219 const Vector<int, VectFull, Allocator2>& P,
6220 Vector<complex<double>, VectFull, Allocator3>& x,
6221 const Vector<complex<double>, VectFull,
6223 double& ferr,
double& berr,
6227 #ifdef SELDON_CHECK_DIMENSIONS
6228 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6229 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6235 Vector<complex<double>, VectFull, Allocator3> work(2*m);
6236 Vector<double> rwork(m);
6237 zhprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
6238 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6239 &berr, work.GetData(), rwork.GetData(),
6240 &info.GetInfoRef() );
6247 template <
class Prop0,
class Allocator0,
6248 class Allocator1,
class Allocator2,
6249 class Allocator3,
class Allocator4>
6250 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
6251 RowHerm, Allocator0>& A,
6252 const Matrix<complex<float>, Prop0,
6253 RowHerm, Allocator1>& Alu,
6254 const Vector<int, VectFull, Allocator2>& P,
6255 Vector<complex<float>, VectFull, Allocator3>& x,
6256 Vector<complex<float>, VectFull,
6258 float& ferr,
float& berr,
6262 #ifdef SELDON_CHECK_DIMENSIONS
6263 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6264 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6270 Vector<complex<float>, VectFull, Allocator3> work(2*m);
6271 Vector<float> rwork(m);
6273 cherfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
6274 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6275 &berr, work.GetData(), rwork.GetData(),
6276 &info.GetInfoRef() );
6281 template <
class Prop0,
class Allocator0,
6282 class Allocator1,
class Allocator2,
6283 class Allocator3,
class Allocator4>
6284 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
6285 RowHerm, Allocator0>& A,
6286 const Matrix<complex<double>, Prop0,
6287 RowHerm, Allocator1>& Alu,
6288 const Vector<int, VectFull, Allocator2>& P,
6289 Vector<complex<double>, VectFull, Allocator3>& x,
6290 Vector<complex<double>, VectFull,
6292 double& ferr,
double& berr,
6296 #ifdef SELDON_CHECK_DIMENSIONS
6297 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6298 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6304 Vector<complex<double>, VectFull, Allocator3> work(2*m);
6305 Vector<double> rwork(m);
6307 zherfs_(&uplo, &m, &nrhs, A.GetDataVoid(), &m, Alu.GetDataVoid(), &m,
6308 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6309 &berr, work.GetData(), rwork.GetData(),
6310 &info.GetInfoRef() );
6318 template <
class Prop0,
class Allocator0,
6319 class Allocator1,
class Allocator2,
6320 class Allocator3,
class Allocator4>
6321 void RefineSolutionLU(
const Matrix<complex<float>, Prop0,
6322 RowHermPacked, Allocator0>& A,
6323 const Matrix<complex<float>, Prop0,
6324 RowHermPacked, Allocator1>& Alu,
6325 const Vector<int, VectFull, Allocator2>& P,
6326 Vector<complex<float>, VectFull, Allocator3>& x,
6327 Vector<complex<float>, VectFull,
6329 float& ferr,
float& berr,
6333 #ifdef SELDON_CHECK_DIMENSIONS
6334 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6335 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6341 Vector<complex<float>, VectFull, Allocator3> work(2*m);
6342 Vector<float> rwork(m);
6344 chprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
6345 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6346 &berr, work.GetData(), rwork.GetData(),
6347 &info.GetInfoRef() );
6352 template <
class Prop0,
class Allocator0,
6353 class Allocator1,
class Allocator2,
6354 class Allocator3,
class Allocator4>
6355 void RefineSolutionLU(
const Matrix<complex<double>, Prop0,
6356 RowHermPacked, Allocator0>& A,
6357 const Matrix<complex<double>, Prop0,
6358 RowHermPacked, Allocator1>& Alu,
6359 const Vector<int, VectFull, Allocator2>& P,
6360 Vector<complex<double>, VectFull, Allocator3>& x,
6361 Vector<complex<double>, VectFull,
6363 double& ferr,
double& berr,
6367 #ifdef SELDON_CHECK_DIMENSIONS
6368 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6369 CheckDim(Alu, x, b,
"RefineSolutionLU(A, Alu, pivot, X, Y)");
6375 Vector<complex<double>, VectFull, Allocator3> work(2*m);
6376 Vector<double> rwork(m);
6378 zhprfs_(&uplo, &m, &nrhs, A.GetDataVoid(), Alu.GetDataVoid(),
6379 P.GetData(), b.GetDataVoid(), &m, x.GetDataVoid(), &m, &ferr,
6380 &berr, work.GetData(), rwork.GetData(),
6381 &info.GetInfoRef() );
6389 template <
class Prop0,
class Allocator0,
6390 class Allocator1,
class Allocator2>
6391 void RefineSolutionLU(
const Matrix<
float, Prop0, ColUpTriang,
6393 Vector<float, VectFull, Allocator1>& x,
6394 const Vector<float, VectFull, Allocator2>& b,
6395 float& ferr,
float& berr,
6399 #ifdef SELDON_CHECK_DIMENSIONS
6400 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6406 char trans(
'N');
char diag(
'N');
6407 Vector<float, VectFull, Allocator1> work(3*m);
6408 Vector<int> iwork(m);
6409 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6410 b.GetData(), &m, x.GetData(), &m,
6411 &ferr, &berr, work.GetData(),
6412 iwork.GetData(), &info.GetInfoRef() );
6415 template <
class Prop0,
class Allocator0,
6416 class Allocator1,
class Allocator2>
6417 void RefineSolutionLU(
const Matrix<
double, Prop0, ColUpTriang,
6419 Vector<double, VectFull, Allocator1>& x,
6420 const Vector<double, VectFull, Allocator2>& b,
6421 double& ferr,
double& berr,
6425 #ifdef SELDON_CHECK_DIMENSIONS
6426 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6432 char trans(
'N');
char diag(
'N');
6433 Vector<double, VectFull, Allocator1> work(3*m);
6434 Vector<int> iwork(m);
6435 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6436 b.GetData(), &m, x.GetData(), &m,
6437 &ferr, &berr, work.GetData(),
6438 iwork.GetData(), &info.GetInfoRef() );
6442 template <
class Prop0,
class Allocator0,
6443 class Allocator1,
class Allocator2>
6445 RefineSolutionLU(
const Matrix<complex<float>, Prop0, ColUpTriang,
6447 Vector<complex<float>, VectFull, Allocator1>& x,
6448 const Vector<complex<float>, VectFull, Allocator2>& b,
6449 float& ferr,
float& berr,
6453 #ifdef SELDON_CHECK_DIMENSIONS
6454 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6460 char trans(
'N');
char diag(
'N');
6461 Vector<complex<float>, VectFull, Allocator1> work(2*m);
6462 Vector<float> rwork(m);
6463 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6464 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6465 &ferr, &berr, work.GetDataVoid(),
6466 rwork.GetData(), &info.GetInfoRef() );
6470 template <
class Prop0,
class Allocator0,
6471 class Allocator1,
class Allocator2>
6473 RefineSolutionLU(
const Matrix<complex<double>, Prop0, ColUpTriang,
6475 Vector<complex<double>, VectFull, Allocator1>& x,
6476 const Vector<complex<double>, VectFull, Allocator2>& b,
6477 double& ferr,
double& berr,
6481 #ifdef SELDON_CHECK_DIMENSIONS
6482 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6488 char trans(
'N');
char diag(
'N');
6489 Vector<complex<double>, VectFull, Allocator1> work(2*m);
6490 Vector<double> rwork(m);
6491 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6492 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6493 &ferr, &berr, work.GetDataVoid(),
6494 rwork.GetData(), &info.GetInfoRef() );
6501 template <
class Prop0,
class Allocator0,
6502 class Allocator1,
class Allocator2>
6504 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6505 const Matrix<
float, Prop0, ColUpTriang,
6507 Vector<float, VectFull, Allocator1>& x,
6508 const Vector<float, VectFull, Allocator2>& b,
6509 float& ferr,
float& berr,
6513 #ifdef SELDON_CHECK_DIMENSIONS
6514 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6520 char trans = TransA.Char();
char diag = DiagA.Char();
6521 Vector<float, VectFull, Allocator1> work(3*m);
6522 Vector<int> iwork(m);
6523 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6524 b.GetData(), &m, x.GetData(), &m,
6525 &ferr, &berr, work.GetData(),
6526 iwork.GetData(), &info.GetInfoRef() );
6529 template <
class Prop0,
class Allocator0,
6530 class Allocator1,
class Allocator2>
6532 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6533 const Matrix<
double, Prop0, ColUpTriang,
6535 Vector<double, VectFull, Allocator1>& x,
6536 const Vector<double, VectFull, Allocator2>& b,
6537 double& ferr,
double& berr,
6541 #ifdef SELDON_CHECK_DIMENSIONS
6542 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6548 char trans = TransA.Char();
char diag = DiagA.Char();
6549 Vector<double, VectFull, Allocator1> work(3*m);
6550 Vector<int> iwork(m);
6551 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6552 b.GetData(), &m, x.GetData(), &m,
6553 &ferr, &berr, work.GetData(),
6554 iwork.GetData(), &info.GetInfoRef() );
6558 template <
class Prop0,
class Allocator0,
6559 class Allocator1,
class Allocator2>
6561 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6562 const Matrix<complex<float>, Prop0, ColUpTriang,
6564 Vector<complex<float>, VectFull, Allocator1>& x,
6565 const Vector<complex<float>, VectFull, Allocator2>& b,
6566 float& ferr,
float& berr,
6570 #ifdef SELDON_CHECK_DIMENSIONS
6571 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6577 char trans = TransA.Char();
char diag = DiagA.Char();
6578 Vector<complex<float>, VectFull, Allocator1> work(2*m);
6579 Vector<float> rwork(m);
6580 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6581 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6582 &ferr, &berr, work.GetDataVoid(),
6583 rwork.GetData(), &info.GetInfoRef() );
6587 template <
class Prop0,
class Allocator0,
6588 class Allocator1,
class Allocator2>
6590 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6591 const Matrix<complex<double>, Prop0, ColUpTriang,
6593 Vector<complex<double>, VectFull, Allocator1>& x,
6594 const Vector<complex<double>, VectFull, Allocator2>& b,
6595 double& ferr,
double& berr,
6599 #ifdef SELDON_CHECK_DIMENSIONS
6600 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6606 char trans = TransA.Char();
char diag = DiagA.Char();
6607 Vector<complex<double>, VectFull, Allocator1> work(2*m);
6608 Vector<double> rwork(m);
6609 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6610 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6611 &ferr, &berr, work.GetDataVoid(),
6612 rwork.GetData(), &info.GetInfoRef() );
6619 template <
class Prop0,
class Allocator0,
6620 class Allocator1,
class Allocator2>
6621 void RefineSolutionLU(
const Matrix<
float, Prop0, ColLoTriang,
6623 Vector<float, VectFull, Allocator1>& x,
6624 const Vector<float, VectFull, Allocator2>& b,
6625 float& ferr,
float& berr,
6629 #ifdef SELDON_CHECK_DIMENSIONS
6630 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6636 char trans(
'N');
char diag(
'N');
6637 Vector<float, VectFull, Allocator1> work(3*m);
6638 Vector<int> iwork(m);
6639 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6640 b.GetData(), &m, x.GetData(), &m,
6641 &ferr, &berr, work.GetData(),
6642 iwork.GetData(), &info.GetInfoRef() );
6645 template <
class Prop0,
class Allocator0,
6646 class Allocator1,
class Allocator2>
6647 void RefineSolutionLU(
const Matrix<
double, Prop0, ColLoTriang,
6649 Vector<double, VectFull, Allocator1>& x,
6650 const Vector<double, VectFull, Allocator2>& b,
6651 double& ferr,
double& berr,
6655 #ifdef SELDON_CHECK_DIMENSIONS
6656 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6662 char trans(
'N');
char diag(
'N');
6663 Vector<double, VectFull, Allocator1> work(3*m);
6664 Vector<int> iwork(m);
6665 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6666 b.GetData(), &m, x.GetData(), &m,
6667 &ferr, &berr, work.GetData(),
6668 iwork.GetData(), &info.GetInfoRef() );
6672 template <
class Prop0,
class Allocator0,
6673 class Allocator1,
class Allocator2>
6675 RefineSolutionLU(
const Matrix<complex<float>, Prop0, ColLoTriang,
6677 Vector<complex<float>, VectFull, Allocator1>& x,
6678 const Vector<complex<float>, VectFull, Allocator2>& b,
6679 float& ferr,
float& berr,
6683 #ifdef SELDON_CHECK_DIMENSIONS
6684 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6690 char trans(
'N');
char diag(
'N');
6691 Vector<complex<float>, VectFull, Allocator1> work(2*m);
6692 Vector<float> rwork(m);
6693 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6694 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6695 &ferr, &berr, work.GetDataVoid(),
6696 rwork.GetData(), &info.GetInfoRef() );
6700 template <
class Prop0,
class Allocator0,
6701 class Allocator1,
class Allocator2>
6703 RefineSolutionLU(
const Matrix<complex<double>, Prop0, ColLoTriang,
6705 Vector<complex<double>, VectFull, Allocator1>& x,
6706 const Vector<complex<double>, VectFull, Allocator2>& b,
6707 double& ferr,
double& berr,
6711 #ifdef SELDON_CHECK_DIMENSIONS
6712 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6718 char trans(
'N');
char diag(
'N');
6719 Vector<complex<double>, VectFull, Allocator1> work(2*m);
6720 Vector<double> rwork(m);
6721 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6722 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6723 &ferr, &berr, work.GetDataVoid(),
6724 rwork.GetData(), &info.GetInfoRef() );
6731 template <
class Prop0,
class Allocator0,
6732 class Allocator1,
class Allocator2>
6734 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6735 const Matrix<
float, Prop0, ColLoTriang,
6737 Vector<float, VectFull, Allocator1>& x,
6738 const Vector<float, VectFull, Allocator2>& b,
6739 float& ferr,
float& berr,
6743 #ifdef SELDON_CHECK_DIMENSIONS
6744 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6750 char trans = TransA.Char();
char diag = DiagA.Char();
6751 Vector<float, VectFull, Allocator1> work(3*m);
6752 Vector<int> iwork(m);
6753 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6754 b.GetData(), &m, x.GetData(), &m,
6755 &ferr, &berr, work.GetData(),
6756 iwork.GetData(), &info.GetInfoRef() );
6759 template <
class Prop0,
class Allocator0,
6760 class Allocator1,
class Allocator2>
6762 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6763 const Matrix<
double, Prop0, ColLoTriang,
6765 Vector<double, VectFull, Allocator1>& x,
6766 const Vector<double, VectFull, Allocator2>& b,
6767 double& ferr,
double& berr,
6771 #ifdef SELDON_CHECK_DIMENSIONS
6772 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6778 char trans = TransA.Char();
char diag = DiagA.Char();
6779 Vector<double, VectFull, Allocator1> work(3*m);
6780 Vector<int> iwork(m);
6781 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
6782 b.GetData(), &m, x.GetData(), &m,
6783 &ferr, &berr, work.GetData(),
6784 iwork.GetData(), &info.GetInfoRef() );
6788 template <
class Prop0,
class Allocator0,
6789 class Allocator1,
class Allocator2>
6791 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6792 const Matrix<complex<float>, Prop0, ColLoTriang,
6794 Vector<complex<float>, VectFull, Allocator1>& x,
6795 const Vector<complex<float>, VectFull, Allocator2>& b,
6796 float& ferr,
float& berr,
6800 #ifdef SELDON_CHECK_DIMENSIONS
6801 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6807 char trans = TransA.Char();
char diag = DiagA.Char();
6808 Vector<complex<float>, VectFull, Allocator1> work(2*m);
6809 Vector<float> rwork(m);
6810 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6811 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6812 &ferr, &berr, work.GetDataVoid(),
6813 rwork.GetData(), &info.GetInfoRef() );
6817 template <
class Prop0,
class Allocator0,
6818 class Allocator1,
class Allocator2>
6820 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6821 const Matrix<complex<double>, Prop0, ColLoTriang,
6823 Vector<complex<double>, VectFull, Allocator1>& x,
6824 const Vector<complex<double>, VectFull, Allocator2>& b,
6825 double& ferr,
double& berr,
6829 #ifdef SELDON_CHECK_DIMENSIONS
6830 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6836 char trans = TransA.Char();
char diag = DiagA.Char();
6837 Vector<complex<double>, VectFull, Allocator1> work(2*m);
6838 Vector<double> rwork(m);
6839 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
6840 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6841 &ferr, &berr, work.GetDataVoid(),
6842 rwork.GetData(), &info.GetInfoRef() );
6849 template <
class Prop0,
class Allocator0,
6850 class Allocator1,
class Allocator2>
6851 void RefineSolutionLU(
const Matrix<
float, Prop0, ColUpTriangPacked,
6853 Vector<float, VectFull, Allocator1>& x,
6854 const Vector<float, VectFull, Allocator2>& b,
6855 float& ferr,
float& berr,
6859 #ifdef SELDON_CHECK_DIMENSIONS
6860 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6866 char trans(
'N');
char diag(
'N');
6867 Vector<float, VectFull, Allocator1> work(3*m);
6868 Vector<int> iwork(m);
6869 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
6870 b.GetData(), &m, x.GetData(), &m,
6871 &ferr, &berr, work.GetData(),
6872 iwork.GetData(), &info.GetInfoRef() );
6875 template <
class Prop0,
class Allocator0,
6876 class Allocator1,
class Allocator2>
6877 void RefineSolutionLU(
const Matrix<
double, Prop0, ColUpTriangPacked,
6879 Vector<double, VectFull, Allocator1>& x,
6880 const Vector<double, VectFull, Allocator2>& b,
6881 double& ferr,
double& berr,
6885 #ifdef SELDON_CHECK_DIMENSIONS
6886 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6892 char trans(
'N');
char diag(
'N');
6893 Vector<double, VectFull, Allocator1> work(3*m);
6894 Vector<int> iwork(m);
6895 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
6896 b.GetData(), &m, x.GetData(), &m,
6897 &ferr, &berr, work.GetData(),
6898 iwork.GetData(), &info.GetInfoRef() );
6902 template <
class Prop0,
class Allocator0,
6903 class Allocator1,
class Allocator2>
6905 RefineSolutionLU(
const Matrix<complex<float>, Prop0, ColUpTriangPacked,
6907 Vector<complex<float>, VectFull, Allocator1>& x,
6908 const Vector<complex<float>, VectFull, Allocator2>& b,
6909 float& ferr,
float& berr,
6913 #ifdef SELDON_CHECK_DIMENSIONS
6914 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6920 char trans(
'N');
char diag(
'N');
6921 Vector<complex<float>, VectFull, Allocator1> work(2*m);
6922 Vector<float> rwork(m);
6923 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
6924 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6925 &ferr, &berr, work.GetDataVoid(),
6926 rwork.GetData(), &info.GetInfoRef() );
6930 template <
class Prop0,
class Allocator0,
6931 class Allocator1,
class Allocator2>
6933 RefineSolutionLU(
const Matrix<complex<double>, Prop0, ColUpTriangPacked,
6935 Vector<complex<double>, VectFull, Allocator1>& x,
6936 const Vector<complex<double>, VectFull, Allocator2>& b,
6937 double& ferr,
double& berr,
6941 #ifdef SELDON_CHECK_DIMENSIONS
6942 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6948 char trans(
'N');
char diag(
'N');
6949 Vector<complex<double>, VectFull, Allocator1> work(2*m);
6950 Vector<double> rwork(m);
6951 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
6952 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
6953 &ferr, &berr, work.GetDataVoid(),
6954 rwork.GetData(), &info.GetInfoRef() );
6961 template <
class Prop0,
class Allocator0,
6962 class Allocator1,
class Allocator2>
6964 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6965 const Matrix<
float, Prop0, ColUpTriangPacked,
6967 Vector<float, VectFull, Allocator1>& x,
6968 const Vector<float, VectFull, Allocator2>& b,
6969 float& ferr,
float& berr,
6973 #ifdef SELDON_CHECK_DIMENSIONS
6974 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
6980 char trans = TransA.Char();
char diag = DiagA.Char();
6981 Vector<float, VectFull, Allocator1> work(3*m);
6982 Vector<int> iwork(m);
6983 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
6984 b.GetData(), &m, x.GetData(), &m,
6985 &ferr, &berr, work.GetData(),
6986 iwork.GetData(), &info.GetInfoRef() );
6989 template <
class Prop0,
class Allocator0,
6990 class Allocator1,
class Allocator2>
6992 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
6993 const Matrix<
double, Prop0, ColUpTriangPacked,
6995 Vector<double, VectFull, Allocator1>& x,
6996 const Vector<double, VectFull, Allocator2>& b,
6997 double& ferr,
double& berr,
7001 #ifdef SELDON_CHECK_DIMENSIONS
7002 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7008 char trans = TransA.Char();
char diag = DiagA.Char();
7009 Vector<double, VectFull, Allocator1> work(3*m);
7010 Vector<int> iwork(m);
7011 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7012 b.GetData(), &m, x.GetData(), &m,
7013 &ferr, &berr, work.GetData(),
7014 iwork.GetData(), &info.GetInfoRef() );
7018 template <
class Prop0,
class Allocator0,
7019 class Allocator1,
class Allocator2>
7021 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7022 const Matrix<complex<float>, Prop0, ColUpTriangPacked,
7024 Vector<complex<float>, VectFull, Allocator1>& x,
7025 const Vector<complex<float>, VectFull, Allocator2>& b,
7026 float& ferr,
float& berr,
7030 #ifdef SELDON_CHECK_DIMENSIONS
7031 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7037 char trans = TransA.Char();
char diag = DiagA.Char();
7038 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7039 Vector<float> rwork(m);
7040 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7041 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7042 &ferr, &berr, work.GetDataVoid(),
7043 rwork.GetData(), &info.GetInfoRef() );
7047 template <
class Prop0,
class Allocator0,
7048 class Allocator1,
class Allocator2>
7050 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7051 const Matrix<complex<double>, Prop0, ColUpTriangPacked,
7053 Vector<complex<double>, VectFull, Allocator1>& x,
7054 const Vector<complex<double>, VectFull, Allocator2>& b,
7055 double& ferr,
double& berr,
7059 #ifdef SELDON_CHECK_DIMENSIONS
7060 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7066 char trans = TransA.Char();
char diag = DiagA.Char();
7067 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7068 Vector<double> rwork(m);
7069 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7070 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7071 &ferr, &berr, work.GetDataVoid(),
7072 rwork.GetData(), &info.GetInfoRef() );
7079 template <
class Prop0,
class Allocator0,
7080 class Allocator1,
class Allocator2>
7081 void RefineSolutionLU(
const Matrix<
float, Prop0, ColLoTriangPacked,
7083 Vector<float, VectFull, Allocator1>& x,
7084 const Vector<float, VectFull, Allocator2>& b,
7085 float& ferr,
float& berr,
7089 #ifdef SELDON_CHECK_DIMENSIONS
7090 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7096 char trans(
'N');
char diag(
'N');
7097 Vector<float, VectFull, Allocator1> work(3*m);
7098 Vector<int> iwork(m);
7099 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7100 b.GetData(), &m, x.GetData(), &m,
7101 &ferr, &berr, work.GetData(),
7102 iwork.GetData(), &info.GetInfoRef() );
7105 template <
class Prop0,
class Allocator0,
7106 class Allocator1,
class Allocator2>
7107 void RefineSolutionLU(
const Matrix<
double, Prop0, ColLoTriangPacked,
7109 Vector<double, VectFull, Allocator1>& x,
7110 const Vector<double, VectFull, Allocator2>& b,
7111 double& ferr,
double& berr,
7115 #ifdef SELDON_CHECK_DIMENSIONS
7116 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7122 char trans(
'N');
char diag(
'N');
7123 Vector<double, VectFull, Allocator1> work(3*m);
7124 Vector<int> iwork(m);
7125 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7126 b.GetData(), &m, x.GetData(), &m,
7127 &ferr, &berr, work.GetData(),
7128 iwork.GetData(), &info.GetInfoRef() );
7132 template <
class Prop0,
class Allocator0,
7133 class Allocator1,
class Allocator2>
7135 RefineSolutionLU(
const Matrix<complex<float>, Prop0, ColLoTriangPacked,
7137 Vector<complex<float>, VectFull, Allocator1>& x,
7138 const Vector<complex<float>, VectFull, Allocator2>& b,
7139 float& ferr,
float& berr,
7143 #ifdef SELDON_CHECK_DIMENSIONS
7144 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7150 char trans(
'N');
char diag(
'N');
7151 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7152 Vector<float> rwork(m);
7153 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7154 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7155 &ferr, &berr, work.GetDataVoid(),
7156 rwork.GetData(), &info.GetInfoRef() );
7160 template <
class Prop0,
class Allocator0,
7161 class Allocator1,
class Allocator2>
7163 RefineSolutionLU(
const Matrix<complex<double>, Prop0, ColLoTriangPacked,
7165 Vector<complex<double>, VectFull, Allocator1>& x,
7166 const Vector<complex<double>, VectFull, Allocator2>& b,
7167 double& ferr,
double& berr,
7171 #ifdef SELDON_CHECK_DIMENSIONS
7172 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7178 char trans(
'N');
char diag(
'N');
7179 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7180 Vector<double> rwork(m);
7181 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7182 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7183 &ferr, &berr, work.GetDataVoid(),
7184 rwork.GetData(), &info.GetInfoRef() );
7191 template <
class Prop0,
class Allocator0,
7192 class Allocator1,
class Allocator2>
7194 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7195 const Matrix<
float, Prop0, ColLoTriangPacked,
7197 Vector<float, VectFull, Allocator1>& x,
7198 const Vector<float, VectFull, Allocator2>& b,
7199 float& ferr,
float& berr,
7203 #ifdef SELDON_CHECK_DIMENSIONS
7204 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7210 char trans = TransA.Char();
char diag = DiagA.Char();
7211 Vector<float, VectFull, Allocator1> work(3*m);
7212 Vector<int> iwork(m);
7213 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7214 b.GetData(), &m, x.GetData(), &m,
7215 &ferr, &berr, work.GetData(),
7216 iwork.GetData(), &info.GetInfoRef() );
7219 template <
class Prop0,
class Allocator0,
7220 class Allocator1,
class Allocator2>
7222 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7223 const Matrix<
double, Prop0, ColLoTriangPacked,
7225 Vector<double, VectFull, Allocator1>& x,
7226 const Vector<double, VectFull, Allocator2>& b,
7227 double& ferr,
double& berr,
7231 #ifdef SELDON_CHECK_DIMENSIONS
7232 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7238 char trans = TransA.Char();
char diag = DiagA.Char();
7239 Vector<double, VectFull, Allocator1> work(3*m);
7240 Vector<int> iwork(m);
7241 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7242 b.GetData(), &m, x.GetData(), &m,
7243 &ferr, &berr, work.GetData(),
7244 iwork.GetData(), &info.GetInfoRef() );
7248 template <
class Prop0,
class Allocator0,
7249 class Allocator1,
class Allocator2>
7251 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7252 const Matrix<complex<float>, Prop0, ColLoTriangPacked,
7254 Vector<complex<float>, VectFull, Allocator1>& x,
7255 const Vector<complex<float>, VectFull, Allocator2>& b,
7256 float& ferr,
float& berr,
7260 #ifdef SELDON_CHECK_DIMENSIONS
7261 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7267 char trans = TransA.Char();
char diag = DiagA.Char();
7268 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7269 Vector<float> rwork(m);
7270 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7271 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7272 &ferr, &berr, work.GetDataVoid(),
7273 rwork.GetData(), &info.GetInfoRef() );
7277 template <
class Prop0,
class Allocator0,
7278 class Allocator1,
class Allocator2>
7280 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7281 const Matrix<complex<double>, Prop0, ColLoTriangPacked,
7283 Vector<complex<double>, VectFull, Allocator1>& x,
7284 const Vector<complex<double>, VectFull, Allocator2>& b,
7285 double& ferr,
double& berr,
7289 #ifdef SELDON_CHECK_DIMENSIONS
7290 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7296 char trans = TransA.Char();
char diag = DiagA.Char();
7297 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7298 Vector<double> rwork(m);
7299 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7300 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7301 &ferr, &berr, work.GetDataVoid(),
7302 rwork.GetData(), &info.GetInfoRef() );
7309 template <
class Prop0,
class Allocator0,
7310 class Allocator1,
class Allocator2>
7311 void RefineSolutionLU(
const Matrix<
float, Prop0, RowUpTriang,
7313 Vector<float, VectFull, Allocator1>& x,
7314 const Vector<float, VectFull, Allocator2>& b,
7315 float& ferr,
float& berr,
7319 #ifdef SELDON_CHECK_DIMENSIONS
7320 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7326 char trans(
'T');
char diag(
'N');
7327 Vector<float, VectFull, Allocator1> work(3*m);
7328 Vector<int> iwork(m);
7329 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7330 b.GetData(), &m, x.GetData(), &m,
7331 &ferr, &berr, work.GetData(),
7332 iwork.GetData(), &info.GetInfoRef() );
7335 template <
class Prop0,
class Allocator0,
7336 class Allocator1,
class Allocator2>
7337 void RefineSolutionLU(
const Matrix<
double, Prop0, RowUpTriang,
7339 Vector<double, VectFull, Allocator1>& x,
7340 const Vector<double, VectFull, Allocator2>& b,
7341 double& ferr,
double& berr,
7345 #ifdef SELDON_CHECK_DIMENSIONS
7346 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7352 char trans(
'T');
char diag(
'N');
7353 Vector<double, VectFull, Allocator1> work(3*m);
7354 Vector<int> iwork(m);
7355 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7356 b.GetData(), &m, x.GetData(), &m,
7357 &ferr, &berr, work.GetData(),
7358 iwork.GetData(), &info.GetInfoRef() );
7362 template <
class Prop0,
class Allocator0,
7363 class Allocator1,
class Allocator2>
7365 RefineSolutionLU(
const Matrix<complex<float>, Prop0, RowUpTriang,
7367 Vector<complex<float>, VectFull, Allocator1>& x,
7368 const Vector<complex<float>, VectFull, Allocator2>& b,
7369 float& ferr,
float& berr,
7373 #ifdef SELDON_CHECK_DIMENSIONS
7374 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7380 char trans(
'T');
char diag(
'N');
7381 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7382 Vector<float> rwork(m);
7383 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7384 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7385 &ferr, &berr, work.GetDataVoid(),
7386 rwork.GetData(), &info.GetInfoRef() );
7390 template <
class Prop0,
class Allocator0,
7391 class Allocator1,
class Allocator2>
7393 RefineSolutionLU(
const Matrix<complex<double>, Prop0, RowUpTriang,
7395 Vector<complex<double>, VectFull, Allocator1>& x,
7396 const Vector<complex<double>, VectFull, Allocator2>& b,
7397 double& ferr,
double& berr,
7401 #ifdef SELDON_CHECK_DIMENSIONS
7402 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7408 char trans(
'T');
char diag(
'N');
7409 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7410 Vector<double> rwork(m);
7411 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7412 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7413 &ferr, &berr, work.GetDataVoid(),
7414 rwork.GetData(), &info.GetInfoRef() );
7421 template <
class Prop0,
class Allocator0,
7422 class Allocator1,
class Allocator2>
7424 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7425 const Matrix<
float, Prop0, RowUpTriang,
7427 Vector<float, VectFull, Allocator1>& x,
7428 const Vector<float, VectFull, Allocator2>& b,
7429 float& ferr,
float& berr,
7433 #ifdef SELDON_CHECK_DIMENSIONS
7434 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7440 char trans = TransA.RevChar();
char diag = DiagA.Char();
7441 Vector<float, VectFull, Allocator1> work(3*m);
7442 Vector<int> iwork(m);
7443 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7444 b.GetData(), &m, x.GetData(), &m,
7445 &ferr, &berr, work.GetData(),
7446 iwork.GetData(), &info.GetInfoRef() );
7449 template <
class Prop0,
class Allocator0,
7450 class Allocator1,
class Allocator2>
7452 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7453 const Matrix<
double, Prop0, RowUpTriang,
7455 Vector<double, VectFull, Allocator1>& x,
7456 const Vector<double, VectFull, Allocator2>& b,
7457 double& ferr,
double& berr,
7461 #ifdef SELDON_CHECK_DIMENSIONS
7462 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7468 char trans = TransA.RevChar();
char diag = DiagA.Char();
7469 Vector<double, VectFull, Allocator1> work(3*m);
7470 Vector<int> iwork(m);
7471 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7472 b.GetData(), &m, x.GetData(), &m,
7473 &ferr, &berr, work.GetData(),
7474 iwork.GetData(), &info.GetInfoRef() );
7478 template <
class Prop0,
class Allocator0,
7479 class Allocator1,
class Allocator2>
7481 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7482 const Matrix<complex<float>, Prop0, RowUpTriang,
7484 Vector<complex<float>, VectFull, Allocator1>& x,
7485 Vector<complex<float>, VectFull, Allocator2>& b,
7486 float& ferr,
float& berr,
7490 #ifdef SELDON_CHECK_DIMENSIONS
7491 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7497 char trans = TransA.RevChar();
char diag = DiagA.Char();
7498 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7499 Vector<float> rwork(m);
7500 if (TransA.ConjTrans())
7505 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7506 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7507 &ferr, &berr, work.GetDataVoid(),
7508 rwork.GetData(), &info.GetInfoRef() );
7509 if (TransA.ConjTrans())
7517 template <
class Prop0,
class Allocator0,
7518 class Allocator1,
class Allocator2>
7520 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7521 const Matrix<complex<double>, Prop0, RowUpTriang,
7523 Vector<complex<double>, VectFull, Allocator1>& x,
7524 Vector<complex<double>, VectFull, Allocator2>& b,
7525 double& ferr,
double& berr,
7529 #ifdef SELDON_CHECK_DIMENSIONS
7530 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7536 char trans = TransA.RevChar();
char diag = DiagA.Char();
7537 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7538 Vector<double> rwork(m);
7539 if (TransA.ConjTrans())
7544 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7545 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7546 &ferr, &berr, work.GetDataVoid(),
7547 rwork.GetData(), &info.GetInfoRef() );
7548 if (TransA.ConjTrans())
7559 template <
class Prop0,
class Allocator0,
7560 class Allocator1,
class Allocator2>
7561 void RefineSolutionLU(
const Matrix<
float, Prop0, RowLoTriang,
7563 Vector<float, VectFull, Allocator1>& x,
7564 const Vector<float, VectFull, Allocator2>& b,
7565 float& ferr,
float& berr,
7569 #ifdef SELDON_CHECK_DIMENSIONS
7570 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7576 char trans(
'T');
char diag(
'N');
7577 Vector<float, VectFull, Allocator1> work(3*m);
7578 Vector<int> iwork(m);
7579 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7580 b.GetData(), &m, x.GetData(), &m,
7581 &ferr, &berr, work.GetData(),
7582 iwork.GetData(), &info.GetInfoRef() );
7585 template <
class Prop0,
class Allocator0,
7586 class Allocator1,
class Allocator2>
7587 void RefineSolutionLU(
const Matrix<
double, Prop0, RowLoTriang,
7589 Vector<double, VectFull, Allocator1>& x,
7590 const Vector<double, VectFull, Allocator2>& b,
7591 double& ferr,
double& berr,
7595 #ifdef SELDON_CHECK_DIMENSIONS
7596 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7602 char trans(
'T');
char diag(
'N');
7603 Vector<double, VectFull, Allocator1> work(3*m);
7604 Vector<int> iwork(m);
7605 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7606 b.GetData(), &m, x.GetData(), &m,
7607 &ferr, &berr, work.GetData(),
7608 iwork.GetData(), &info.GetInfoRef() );
7612 template <
class Prop0,
class Allocator0,
7613 class Allocator1,
class Allocator2>
7615 RefineSolutionLU(
const Matrix<complex<float>, Prop0, RowLoTriang,
7617 Vector<complex<float>, VectFull, Allocator1>& x,
7618 const Vector<complex<float>, VectFull, Allocator2>& b,
7619 float& ferr,
float& berr,
7623 #ifdef SELDON_CHECK_DIMENSIONS
7624 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7630 char trans(
'T');
char diag(
'N');
7631 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7632 Vector<float> rwork(m);
7633 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7634 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7635 &ferr, &berr, work.GetDataVoid(),
7636 rwork.GetData(), &info.GetInfoRef() );
7640 template <
class Prop0,
class Allocator0,
7641 class Allocator1,
class Allocator2>
7643 RefineSolutionLU(
const Matrix<complex<double>, Prop0, RowLoTriang,
7645 Vector<complex<double>, VectFull, Allocator1>& x,
7646 const Vector<complex<double>, VectFull, Allocator2>& b,
7647 double& ferr,
double& berr,
7651 #ifdef SELDON_CHECK_DIMENSIONS
7652 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7658 char trans(
'T');
char diag(
'N');
7659 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7660 Vector<double> rwork(m);
7661 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7662 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7663 &ferr, &berr, work.GetDataVoid(),
7664 rwork.GetData(), &info.GetInfoRef() );
7671 template <
class Prop0,
class Allocator0,
7672 class Allocator1,
class Allocator2>
7674 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7675 const Matrix<
float, Prop0, RowLoTriang,
7677 Vector<float, VectFull, Allocator1>& x,
7678 const Vector<float, VectFull, Allocator2>& b,
7679 float& ferr,
float& berr,
7683 #ifdef SELDON_CHECK_DIMENSIONS
7684 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7690 char trans = TransA.RevChar();
char diag = DiagA.Char();
7691 Vector<float, VectFull, Allocator1> work(3*m);
7692 Vector<int> iwork(m);
7693 strrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7694 b.GetData(), &m, x.GetData(), &m,
7695 &ferr, &berr, work.GetData(),
7696 iwork.GetData(), &info.GetInfoRef() );
7699 template <
class Prop0,
class Allocator0,
7700 class Allocator1,
class Allocator2>
7702 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7703 const Matrix<
double, Prop0, RowLoTriang,
7705 Vector<double, VectFull, Allocator1>& x,
7706 const Vector<double, VectFull, Allocator2>& b,
7707 double& ferr,
double& berr,
7711 #ifdef SELDON_CHECK_DIMENSIONS
7712 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7718 char trans = TransA.RevChar();
char diag = DiagA.Char();
7719 Vector<double, VectFull, Allocator1> work(3*m);
7720 Vector<int> iwork(m);
7721 dtrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(), &m,
7722 b.GetData(), &m, x.GetData(), &m,
7723 &ferr, &berr, work.GetData(),
7724 iwork.GetData(), &info.GetInfoRef() );
7728 template <
class Prop0,
class Allocator0,
7729 class Allocator1,
class Allocator2>
7731 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7732 const Matrix<complex<float>, Prop0, RowLoTriang,
7734 Vector<complex<float>, VectFull, Allocator1>& x,
7735 Vector<complex<float>, VectFull, Allocator2>& b,
7736 float& ferr,
float& berr,
7740 #ifdef SELDON_CHECK_DIMENSIONS
7741 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7747 char trans = TransA.RevChar();
char diag = DiagA.Char();
7748 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7749 Vector<float> rwork(m);
7750 if (TransA.ConjTrans())
7755 ctrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7756 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7757 &ferr, &berr, work.GetDataVoid(),
7758 rwork.GetData(), &info.GetInfoRef() );
7759 if (TransA.ConjTrans())
7767 template <
class Prop0,
class Allocator0,
7768 class Allocator1,
class Allocator2>
7770 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7771 const Matrix<complex<double>, Prop0, RowLoTriang,
7773 Vector<complex<double>, VectFull, Allocator1>& x,
7774 Vector<complex<double>, VectFull, Allocator2>& b,
7775 double& ferr,
double& berr,
7779 #ifdef SELDON_CHECK_DIMENSIONS
7780 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7786 char trans = TransA.RevChar();
char diag = DiagA.Char();
7787 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7788 Vector<double> rwork(m);
7789 if (TransA.ConjTrans())
7794 ztrrfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(), &m,
7795 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7796 &ferr, &berr, work.GetDataVoid(),
7797 rwork.GetData(), &info.GetInfoRef() );
7798 if (TransA.ConjTrans())
7809 template <
class Prop0,
class Allocator0,
7810 class Allocator1,
class Allocator2>
7811 void RefineSolutionLU(
const Matrix<
float, Prop0, RowUpTriangPacked,
7813 Vector<float, VectFull, Allocator1>& x,
7814 const Vector<float, VectFull, Allocator2>& b,
7815 float& ferr,
float& berr,
7819 #ifdef SELDON_CHECK_DIMENSIONS
7820 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7826 char trans(
'T');
char diag(
'N');
7827 Vector<float, VectFull, Allocator1> work(3*m);
7828 Vector<int> iwork(m);
7829 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7830 b.GetData(), &m, x.GetData(), &m,
7831 &ferr, &berr, work.GetData(),
7832 iwork.GetData(), &info.GetInfoRef() );
7835 template <
class Prop0,
class Allocator0,
7836 class Allocator1,
class Allocator2>
7837 void RefineSolutionLU(
const Matrix<
double, Prop0, RowUpTriangPacked,
7839 Vector<double, VectFull, Allocator1>& x,
7840 const Vector<double, VectFull, Allocator2>& b,
7841 double& ferr,
double& berr,
7845 #ifdef SELDON_CHECK_DIMENSIONS
7846 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7852 char trans(
'T');
char diag(
'N');
7853 Vector<double, VectFull, Allocator1> work(3*m);
7854 Vector<int> iwork(m);
7855 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7856 b.GetData(), &m, x.GetData(), &m,
7857 &ferr, &berr, work.GetData(),
7858 iwork.GetData(), &info.GetInfoRef() );
7862 template <
class Prop0,
class Allocator0,
7863 class Allocator1,
class Allocator2>
7865 RefineSolutionLU(
const Matrix<complex<float>, Prop0, RowUpTriangPacked,
7867 Vector<complex<float>, VectFull, Allocator1>& x,
7868 const Vector<complex<float>, VectFull, Allocator2>& b,
7869 float& ferr,
float& berr,
7873 #ifdef SELDON_CHECK_DIMENSIONS
7874 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7880 char trans(
'T');
char diag(
'N');
7881 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7882 Vector<float> rwork(m);
7883 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7884 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7885 &ferr, &berr, work.GetDataVoid(),
7886 rwork.GetData(), &info.GetInfoRef() );
7890 template <
class Prop0,
class Allocator0,
7891 class Allocator1,
class Allocator2>
7893 RefineSolutionLU(
const Matrix<complex<double>, Prop0, RowUpTriangPacked,
7895 Vector<complex<double>, VectFull, Allocator1>& x,
7896 const Vector<complex<double>, VectFull, Allocator2>& b,
7897 double& ferr,
double& berr,
7901 #ifdef SELDON_CHECK_DIMENSIONS
7902 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7908 char trans(
'T');
char diag(
'N');
7909 Vector<complex<double>, VectFull, Allocator1> work(2*m);
7910 Vector<double> rwork(m);
7911 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
7912 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
7913 &ferr, &berr, work.GetDataVoid(),
7914 rwork.GetData(), &info.GetInfoRef() );
7921 template <
class Prop0,
class Allocator0,
7922 class Allocator1,
class Allocator2>
7924 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7925 const Matrix<
float, Prop0, RowUpTriangPacked,
7927 Vector<float, VectFull, Allocator1>& x,
7928 const Vector<float, VectFull, Allocator2>& b,
7929 float& ferr,
float& berr,
7933 #ifdef SELDON_CHECK_DIMENSIONS
7934 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7940 char trans = TransA.RevChar();
char diag = DiagA.Char();
7941 Vector<float, VectFull, Allocator1> work(3*m);
7942 Vector<int> iwork(m);
7943 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7944 b.GetData(), &m, x.GetData(), &m,
7945 &ferr, &berr, work.GetData(),
7946 iwork.GetData(), &info.GetInfoRef() );
7949 template <
class Prop0,
class Allocator0,
7950 class Allocator1,
class Allocator2>
7952 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7953 const Matrix<
double, Prop0, RowUpTriangPacked,
7955 Vector<double, VectFull, Allocator1>& x,
7956 const Vector<double, VectFull, Allocator2>& b,
7957 double& ferr,
double& berr,
7961 #ifdef SELDON_CHECK_DIMENSIONS
7962 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7968 char trans = TransA.RevChar();
char diag = DiagA.Char();
7969 Vector<double, VectFull, Allocator1> work(3*m);
7970 Vector<int> iwork(m);
7971 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
7972 b.GetData(), &m, x.GetData(), &m,
7973 &ferr, &berr, work.GetData(),
7974 iwork.GetData(), &info.GetInfoRef() );
7978 template <
class Prop0,
class Allocator0,
7979 class Allocator1,
class Allocator2>
7981 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
7982 const Matrix<complex<float>, Prop0, RowUpTriangPacked,
7984 Vector<complex<float>, VectFull, Allocator1>& x,
7985 Vector<complex<float>, VectFull, Allocator2>& b,
7986 float& ferr,
float& berr,
7990 #ifdef SELDON_CHECK_DIMENSIONS
7991 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
7997 char trans = TransA.RevChar();
char diag = DiagA.Char();
7998 Vector<complex<float>, VectFull, Allocator1> work(2*m);
7999 Vector<float> rwork(m);
8000 if (TransA.ConjTrans())
8005 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
8006 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
8007 &ferr, &berr, work.GetDataVoid(),
8008 rwork.GetData(), &info.GetInfoRef() );
8009 if (TransA.ConjTrans())
8017 template <
class Prop0,
class Allocator0,
8018 class Allocator1,
class Allocator2>
8020 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
8021 const Matrix<complex<double>, Prop0, RowUpTriangPacked,
8023 Vector<complex<double>, VectFull, Allocator1>& x,
8024 Vector<complex<double>, VectFull, Allocator2>& b,
8025 double& ferr,
double& berr,
8029 #ifdef SELDON_CHECK_DIMENSIONS
8030 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8036 char trans = TransA.RevChar();
char diag = DiagA.Char();
8037 Vector<complex<double>, VectFull, Allocator1> work(2*m);
8038 Vector<double> rwork(m);
8039 if (TransA.ConjTrans())
8044 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
8045 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
8046 &ferr, &berr, work.GetDataVoid(),
8047 rwork.GetData(), &info.GetInfoRef() );
8048 if (TransA.ConjTrans())
8059 template <
class Prop0,
class Allocator0,
8060 class Allocator1,
class Allocator2>
8061 void RefineSolutionLU(
const Matrix<
float, Prop0, RowLoTriangPacked,
8063 Vector<float, VectFull, Allocator1>& x,
8064 const Vector<float, VectFull, Allocator2>& b,
8065 float& ferr,
float& berr,
8069 #ifdef SELDON_CHECK_DIMENSIONS
8070 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8076 char trans(
'T');
char diag(
'N');
8077 Vector<float, VectFull, Allocator1> work(3*m);
8078 Vector<int> iwork(m);
8079 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
8080 b.GetData(), &m, x.GetData(), &m,
8081 &ferr, &berr, work.GetData(),
8082 iwork.GetData(), &info.GetInfoRef() );
8085 template <
class Prop0,
class Allocator0,
8086 class Allocator1,
class Allocator2>
8087 void RefineSolutionLU(
const Matrix<
double, Prop0, RowLoTriangPacked,
8089 Vector<double, VectFull, Allocator1>& x,
8090 const Vector<double, VectFull, Allocator2>& b,
8091 double& ferr,
double& berr,
8095 #ifdef SELDON_CHECK_DIMENSIONS
8096 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8102 char trans(
'T');
char diag(
'N');
8103 Vector<double, VectFull, Allocator1> work(3*m);
8104 Vector<int> iwork(m);
8105 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
8106 b.GetData(), &m, x.GetData(), &m,
8107 &ferr, &berr, work.GetData(),
8108 iwork.GetData(), &info.GetInfoRef() );
8112 template <
class Prop0,
class Allocator0,
8113 class Allocator1,
class Allocator2>
8115 RefineSolutionLU(
const Matrix<complex<float>, Prop0, RowLoTriangPacked,
8117 Vector<complex<float>, VectFull, Allocator1>& x,
8118 const Vector<complex<float>, VectFull, Allocator2>& b,
8119 float& ferr,
float& berr,
8123 #ifdef SELDON_CHECK_DIMENSIONS
8124 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8130 char trans(
'T');
char diag(
'N');
8131 Vector<complex<float>, VectFull, Allocator1> work(2*m);
8132 Vector<float> rwork(m);
8133 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
8134 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
8135 &ferr, &berr, work.GetDataVoid(),
8136 rwork.GetData(), &info.GetInfoRef() );
8140 template <
class Prop0,
class Allocator0,
8141 class Allocator1,
class Allocator2>
8143 RefineSolutionLU(
const Matrix<complex<double>, Prop0, RowLoTriangPacked,
8145 Vector<complex<double>, VectFull, Allocator1>& x,
8146 const Vector<complex<double>, VectFull, Allocator2>& b,
8147 double& ferr,
double& berr,
8151 #ifdef SELDON_CHECK_DIMENSIONS
8152 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8158 char trans(
'T');
char diag(
'N');
8159 Vector<complex<double>, VectFull, Allocator1> work(2*m);
8160 Vector<double> rwork(m);
8161 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
8162 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
8163 &ferr, &berr, work.GetDataVoid(),
8164 rwork.GetData(), &info.GetInfoRef() );
8171 template <
class Prop0,
class Allocator0,
8172 class Allocator1,
class Allocator2>
8174 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
8175 const Matrix<
float, Prop0, RowLoTriangPacked,
8177 Vector<float, VectFull, Allocator1>& x,
8178 const Vector<float, VectFull, Allocator2>& b,
8179 float& ferr,
float& berr,
8183 #ifdef SELDON_CHECK_DIMENSIONS
8184 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8190 char trans = TransA.RevChar();
char diag = DiagA.Char();
8191 Vector<float, VectFull, Allocator1> work(3*m);
8192 Vector<int> iwork(m);
8193 stprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
8194 b.GetData(), &m, x.GetData(), &m,
8195 &ferr, &berr, work.GetData(),
8196 iwork.GetData(), &info.GetInfoRef() );
8199 template <
class Prop0,
class Allocator0,
8200 class Allocator1,
class Allocator2>
8202 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
8203 const Matrix<
double, Prop0, RowLoTriangPacked,
8205 Vector<double, VectFull, Allocator1>& x,
8206 const Vector<double, VectFull, Allocator2>& b,
8207 double& ferr,
double& berr,
8211 #ifdef SELDON_CHECK_DIMENSIONS
8212 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8218 char trans = TransA.RevChar();
char diag = DiagA.Char();
8219 Vector<double, VectFull, Allocator1> work(3*m);
8220 Vector<int> iwork(m);
8221 dtprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetData(),
8222 b.GetData(), &m, x.GetData(), &m,
8223 &ferr, &berr, work.GetData(),
8224 iwork.GetData(), &info.GetInfoRef() );
8228 template <
class Prop0,
class Allocator0,
8229 class Allocator1,
class Allocator2>
8231 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
8232 const Matrix<complex<float>, Prop0, RowLoTriangPacked,
8234 Vector<complex<float>, VectFull, Allocator1>& x,
8235 Vector<complex<float>, VectFull, Allocator2>& b,
8236 float& ferr,
float& berr,
8240 #ifdef SELDON_CHECK_DIMENSIONS
8241 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8247 char trans = TransA.RevChar();
char diag = DiagA.Char();
8248 Vector<complex<float>, VectFull, Allocator1> work(2*m);
8249 Vector<float> rwork(m);
8250 if (TransA.ConjTrans())
8255 ctprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
8256 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
8257 &ferr, &berr, work.GetDataVoid(),
8258 rwork.GetData(), &info.GetInfoRef() );
8259 if (TransA.ConjTrans())
8267 template <
class Prop0,
class Allocator0,
8268 class Allocator1,
class Allocator2>
8270 RefineSolutionLU(
const SeldonTranspose& TransA,
const SeldonDiag& DiagA,
8271 const Matrix<complex<double>, Prop0, RowLoTriangPacked,
8273 Vector<complex<double>, VectFull, Allocator1>& x,
8274 Vector<complex<double>, VectFull, Allocator2>& b,
8275 double& ferr,
double& berr,
8279 #ifdef SELDON_CHECK_DIMENSIONS
8280 CheckDim(A, x, b,
"RefineSolutionLU(A, Alu, X, Y)");
8286 char trans = TransA.RevChar();
char diag = DiagA.Char();
8287 Vector<complex<double>, VectFull, Allocator1> work(2*m);
8288 Vector<double> rwork(m);
8289 if (TransA.ConjTrans())
8294 ztprfs_(&uplo, &trans, &diag, &m, &nrhs, A.GetDataVoid(),
8295 b.GetDataVoid(), &m, x.GetDataVoid(), &m,
8296 &ferr, &berr, work.GetDataVoid(),
8297 rwork.GetData(), &info.GetInfoRef() );
8298 if (TransA.ConjTrans())
8318 template <
class Prop0,
class Allocator0>
8319 void GetInverse(Matrix<float, Prop0, ColMajor, Allocator0>& A,
8324 Vector<float, VectFull, Allocator0> work(m);
8325 GetLU(A, pivot, info);
8326 sgetri_(&m, A.GetData(), &m, pivot.GetData(), work.GetData(), &m,
8327 &info.GetInfoRef());
8329 #ifdef SELDON_LAPACK_CHECK_INFO
8330 if (info.GetInfo() != 0)
8331 throw LapackError(info.GetInfo(),
"GetInverse",
8332 "The matrix is inversible ? ");
8338 template <
class Prop0,
class Allocator0>
8339 void GetInverse(Matrix<double, Prop0, ColMajor, Allocator0>& A,
8344 Vector<double, VectFull, Allocator0> work(m);
8345 GetLU(A, pivot, info);
8346 dgetri_(&m, A.GetData(), &m, pivot.GetData(), work.GetData(), &m,
8347 &info.GetInfoRef());
8349 #ifdef SELDON_LAPACK_CHECK_INFO
8350 if (info.GetInfo() != 0)
8351 throw LapackError(info.GetInfo(),
"GetInverse",
8352 "The matrix is inversible ? ");
8358 template <
class Prop0,
class Allocator0>
8359 void GetInverse(Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A,
8364 Vector<complex<float>, VectFull, Allocator0> work(m);
8365 GetLU(A, pivot, info);
8366 cgetri_(&m, A.GetDataVoid(), &m, pivot.GetData(),
8367 work.GetDataVoid(), &m, &info.GetInfoRef());
8369 #ifdef SELDON_LAPACK_CHECK_INFO
8370 if (info.GetInfo() != 0)
8371 throw LapackError(info.GetInfo(),
"GetInverse",
8372 "The matrix is inversible ? ");
8378 template <
class Prop0,
class Allocator0>
8379 void GetInverse(Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A,
8384 Vector<complex<double>, VectFull, Allocator0> work(m);
8385 GetLU(A, pivot, info);
8386 zgetri_(&m, A.GetDataVoid(), &m, pivot.GetData(),
8387 work.GetDataVoid(), &m, &info.GetInfoRef());
8389 #ifdef SELDON_LAPACK_CHECK_INFO
8390 if (info.GetInfo() != 0)
8391 throw LapackError(info.GetInfo(),
"GetInverse",
8392 "The matrix is inversible ? ");
8401 template <
class Prop0,
class Allocator0>
8402 void GetInverse(Matrix<float, Prop0, RowMajor, Allocator0>& A,
8407 Vector<float, VectFull, Allocator0> work(m);
8408 GetLU(A, pivot, info);
8409 sgetri_(&m, A.GetData(), &m, pivot.GetData(), work.GetData(), &m,
8410 &info.GetInfoRef());
8412 #ifdef SELDON_LAPACK_CHECK_INFO
8413 if (info.GetInfo() != 0)
8414 throw LapackError(info.GetInfo(),
"GetInverse",
8415 "The matrix is inversible ? ");
8421 template <
class Prop0,
class Allocator0>
8422 void GetInverse(Matrix<double, Prop0, RowMajor, Allocator0>& A,
8427 Vector<double, VectFull, Allocator0> work(m);
8428 GetLU(A, pivot, info);
8429 dgetri_(&m, A.GetData(), &m, pivot.GetData(), work.GetData(), &m,
8430 &info.GetInfoRef());
8432 #ifdef SELDON_LAPACK_CHECK_INFO
8433 if (info.GetInfo() != 0)
8434 throw LapackError(info.GetInfo(),
"GetInverse",
8435 "The matrix is inversible ? ");
8441 template <
class Prop0,
class Allocator0>
8442 void GetInverse(Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A,
8447 Vector<complex<float>, VectFull, Allocator0> work(m);
8448 GetLU(A, pivot, info);
8449 cgetri_(&m, A.GetDataVoid(), &m, pivot.GetData(),
8450 work.GetDataVoid(), &m, &info.GetInfoRef());
8452 #ifdef SELDON_LAPACK_CHECK_INFO
8453 if (info.GetInfo() != 0)
8454 throw LapackError(info.GetInfo(),
"GetInverse",
8455 "The matrix is inversible ? ");
8461 template <
class Prop0,
class Allocator0>
8462 void GetInverse(Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A,
8467 Vector<complex<double>, VectFull, Allocator0> work(m);
8468 GetLU(A, pivot, info);
8469 zgetri_(&m, A.GetDataVoid(), &m, pivot.GetData(),
8470 work.GetDataVoid(), &m, &info.GetInfoRef());
8472 #ifdef SELDON_LAPACK_CHECK_INFO
8473 if (info.GetInfo() != 0)
8474 throw LapackError(info.GetInfo(),
"GetInverse",
8475 "The matrix is inversible ? ");
8484 template <
class Prop0,
class Allocator0>
8485 void GetInverse(Matrix<float, Prop0, ColSym, Allocator0>& A,
8491 Vector<float, VectFull, Allocator0> work(2*m);
8492 GetLU(A, pivot, info);
8493 ssytri_(&uplo, &m, A.GetData(), &m, pivot.GetData(), work.GetData(),
8494 &info.GetInfoRef());
8496 #ifdef SELDON_LAPACK_CHECK_INFO
8497 if (info.GetInfo() != 0)
8498 throw LapackError(info.GetInfo(),
"GetInverse",
8499 "The matrix is inversible ? ");
8505 template <
class Prop0,
class Allocator0>
8506 void GetInverse(Matrix<double, Prop0, ColSym, Allocator0>& A,
8512 Vector<double, VectFull, Allocator0> work(2*m);
8513 GetLU(A, pivot, info);
8514 dsytri_(&uplo, &m, A.GetData(), &m, pivot.GetData(), work.GetData(),
8515 &info.GetInfoRef());
8517 #ifdef SELDON_LAPACK_CHECK_INFO
8518 if (info.GetInfo() != 0)
8519 throw LapackError(info.GetInfo(),
"GetInverse",
8520 "The matrix is inversible ? ");
8526 template <
class Prop0,
class Allocator0>
8527 void GetInverse(Matrix<complex<float>, Prop0, ColSym, Allocator0>& A,
8533 Vector<complex<float>, VectFull, Allocator0> work(2*m);
8534 GetLU(A, pivot, info);
8535 csytri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8536 work.GetDataVoid(), &info.GetInfoRef());
8538 #ifdef SELDON_LAPACK_CHECK_INFO
8539 if (info.GetInfo() != 0)
8540 throw LapackError(info.GetInfo(),
"GetInverse",
8541 "The matrix is inversible ? ");
8547 template <
class Prop0,
class Allocator0>
8548 void GetInverse(Matrix<complex<double>, Prop0, ColSym, Allocator0>& A,
8554 Vector<complex<double>, VectFull, Allocator0> work(2*m);
8555 GetLU(A, pivot, info);
8556 zsytri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8557 work.GetDataVoid(), &info.GetInfoRef());
8559 #ifdef SELDON_LAPACK_CHECK_INFO
8560 if (info.GetInfo() != 0)
8561 throw LapackError(info.GetInfo(),
"GetInverse",
8562 "The matrix is inversible ? ");
8571 template <
class Prop0,
class Allocator0>
8572 void GetInverse(Matrix<float, Prop0, ColSymPacked, Allocator0>& A,
8578 Vector<float, VectFull, Allocator0> work(m);
8579 GetLU(A, pivot, info);
8580 ssptri_(&uplo, &m, A.GetData(), pivot.GetData(), work.GetData(),
8581 &info.GetInfoRef());
8583 #ifdef SELDON_LAPACK_CHECK_INFO
8584 if (info.GetInfo() != 0)
8585 throw LapackError(info.GetInfo(),
"GetInverse",
8586 "The matrix is inversible ? ");
8592 template <
class Prop0,
class Allocator0>
8593 void GetInverse(Matrix<double, Prop0, ColSymPacked, Allocator0>& A,
8599 Vector<double, VectFull, Allocator0> work(m);
8600 GetLU(A, pivot, info);
8601 dsptri_(&uplo, &m, A.GetData(), pivot.GetData(), work.GetData(),
8602 &info.GetInfoRef());
8604 #ifdef SELDON_LAPACK_CHECK_INFO
8605 if (info.GetInfo() != 0)
8606 throw LapackError(info.GetInfo(),
"GetInverse",
8607 "The matrix is inversible ? ");
8613 template <
class Prop0,
class Allocator0>
8614 void GetInverse(Matrix<complex<float>, Prop0, ColSymPacked, Allocator0>& A,
8620 Vector<complex<float>, VectFull, Allocator0> work(m);
8621 GetLU(A, pivot, info);
8622 csptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8623 work.GetDataVoid(), &info.GetInfoRef());
8625 #ifdef SELDON_LAPACK_CHECK_INFO
8626 if (info.GetInfo() != 0)
8627 throw LapackError(info.GetInfo(),
"GetInverse",
8628 "The matrix is inversible ? ");
8634 template <
class Prop0,
class Allocator0>
8635 void GetInverse(Matrix<complex<double>, Prop0, ColSymPacked, Allocator0>& A,
8641 Vector<complex<double>, VectFull, Allocator0> work(m);
8642 GetLU(A, pivot, info);
8643 zsptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8644 work.GetDataVoid(), &info.GetInfoRef());
8646 #ifdef SELDON_LAPACK_CHECK_INFO
8647 if (info.GetInfo() != 0)
8648 throw LapackError(info.GetInfo(),
"GetInverse",
8649 "The matrix is inversible ? ");
8658 template <
class Prop0,
class Allocator0>
8659 void GetInverse(Matrix<float, Prop0, RowSym, Allocator0>& A,
8665 Vector<float, VectFull, Allocator0> work(2*m);
8666 GetLU(A, pivot, info);
8667 ssytri_(&uplo, &m, A.GetData(), &m, pivot.GetData(), work.GetData(),
8668 &info.GetInfoRef());
8670 #ifdef SELDON_LAPACK_CHECK_INFO
8671 if (info.GetInfo() != 0)
8672 throw LapackError(info.GetInfo(),
"GetInverse",
8673 "The matrix is inversible ? ");
8679 template <
class Prop0,
class Allocator0>
8680 void GetInverse(Matrix<double, Prop0, RowSym, Allocator0>& A,
8686 Vector<double, VectFull, Allocator0> work(2*m);
8687 GetLU(A, pivot, info);
8688 dsytri_(&uplo, &m, A.GetData(), &m, pivot.GetData(), work.GetData(),
8689 &info.GetInfoRef());
8691 #ifdef SELDON_LAPACK_CHECK_INFO
8692 if (info.GetInfo() != 0)
8693 throw LapackError(info.GetInfo(),
"GetInverse",
8694 "The matrix is inversible ? ");
8700 template <
class Prop0,
class Allocator0>
8701 void GetInverse(Matrix<complex<float>, Prop0, RowSym, Allocator0>& A,
8707 Vector<complex<float>, VectFull, Allocator0> work(2*m);
8708 GetLU(A, pivot, info);
8709 csytri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8710 work.GetDataVoid(), &info.GetInfoRef());
8712 #ifdef SELDON_LAPACK_CHECK_INFO
8713 if (info.GetInfo() != 0)
8714 throw LapackError(info.GetInfo(),
"GetInverse",
8715 "The matrix is inversible ? ");
8721 template <
class Prop0,
class Allocator0>
8722 void GetInverse(Matrix<complex<double>, Prop0, RowSym, Allocator0>& A,
8728 Vector<complex<double>, VectFull, Allocator0> work(2*m);
8729 GetLU(A, pivot, info);
8730 zsytri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8731 work.GetDataVoid(), &info.GetInfoRef());
8733 #ifdef SELDON_LAPACK_CHECK_INFO
8734 if (info.GetInfo() != 0)
8735 throw LapackError(info.GetInfo(),
"GetInverse",
8736 "The matrix is inversible ? ");
8745 template <
class Prop0,
class Allocator0>
8746 void GetInverse(Matrix<float, Prop0, RowSymPacked, Allocator0>& A,
8752 Vector<float, VectFull, Allocator0> work(m);
8753 GetLU(A, pivot, info);
8754 ssptri_(&uplo, &m, A.GetData(), pivot.GetData(), work.GetData(),
8755 &info.GetInfoRef());
8757 #ifdef SELDON_LAPACK_CHECK_INFO
8758 if (info.GetInfo() != 0)
8759 throw LapackError(info.GetInfo(),
"GetInverse",
8760 "The matrix is inversible ? ");
8766 template <
class Prop0,
class Allocator0>
8767 void GetInverse(Matrix<double, Prop0, RowSymPacked, Allocator0>& A,
8773 Vector<double, VectFull, Allocator0> work(m);
8774 GetLU(A, pivot, info);
8775 dsptri_(&uplo, &m, A.GetData(), pivot.GetData(), work.GetData(),
8776 &info.GetInfoRef());
8778 #ifdef SELDON_LAPACK_CHECK_INFO
8779 if (info.GetInfo() != 0)
8780 throw LapackError(info.GetInfo(),
"GetInverse",
8781 "The matrix is inversible ? ");
8787 template <
class Prop0,
class Allocator0>
8788 void GetInverse(Matrix<complex<float>, Prop0, RowSymPacked, Allocator0>& A,
8794 Vector<complex<float>, VectFull, Allocator0> work(m);
8795 GetLU(A, pivot, info);
8796 csptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8797 work.GetDataVoid(), &info.GetInfoRef());
8799 #ifdef SELDON_LAPACK_CHECK_INFO
8800 if (info.GetInfo() != 0)
8801 throw LapackError(info.GetInfo(),
"GetInverse",
8802 "The matrix is inversible ? ");
8808 template <
class Prop0,
class Allocator0>
8809 void GetInverse(Matrix<complex<double>, Prop0, RowSymPacked, Allocator0>& A,
8815 Vector<complex<double>, VectFull, Allocator0> work(m);
8816 GetLU(A, pivot, info);
8817 zsptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8818 work.GetDataVoid(), &info.GetInfoRef());
8820 #ifdef SELDON_LAPACK_CHECK_INFO
8821 if (info.GetInfo() != 0)
8822 throw LapackError(info.GetInfo(),
"GetInverse",
8823 "The matrix is inversible ? ");
8832 template <
class Prop0,
class Allocator0>
8833 void GetInverse(Matrix<complex<float>, Prop0, ColHerm, Allocator0>& A,
8839 Vector<complex<float>, VectFull, Allocator0> work(m);
8840 GetLU(A, pivot, info);
8841 chetri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8842 work.GetDataVoid(), &info.GetInfoRef());
8844 #ifdef SELDON_LAPACK_CHECK_INFO
8845 if (info.GetInfo() != 0)
8846 throw LapackError(info.GetInfo(),
"GetInverse",
8847 "The matrix is inversible ? ");
8853 template <
class Prop0,
class Allocator0>
8854 void GetInverse(Matrix<complex<double>, Prop0, ColHerm, Allocator0>& A,
8860 Vector<complex<double>, VectFull, Allocator0> work(m);
8861 GetLU(A, pivot, info);
8862 zhetri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8863 work.GetDataVoid(), &info.GetInfoRef());
8865 #ifdef SELDON_LAPACK_CHECK_INFO
8866 if (info.GetInfo() != 0)
8867 throw LapackError(info.GetInfo(),
"GetInverse",
8868 "The matrix is inversible ? ");
8877 template <
class Prop0,
class Allocator0>
8878 void GetInverse(Matrix<complex<float>, Prop0, ColHermPacked,
8885 Vector<complex<float>, VectFull, Allocator0> work(m);
8886 GetLU(A, pivot, info);
8887 chptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8888 work.GetDataVoid(), &info.GetInfoRef());
8890 #ifdef SELDON_LAPACK_CHECK_INFO
8891 if (info.GetInfo() != 0)
8892 throw LapackError(info.GetInfo(),
"GetInverse",
8893 "The matrix is inversible ? ");
8899 template <
class Prop0,
class Allocator0>
8900 void GetInverse(Matrix<complex<double>, Prop0, ColHermPacked,
8907 Vector<complex<double>, VectFull, Allocator0> work(m);
8908 GetLU(A, pivot, info);
8909 zhptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8910 work.GetDataVoid(), &info.GetInfoRef());
8912 #ifdef SELDON_LAPACK_CHECK_INFO
8913 if (info.GetInfo() != 0)
8914 throw LapackError(info.GetInfo(),
"GetInverse",
8915 "The matrix is inversible ? ");
8924 template <
class Prop0,
class Allocator0>
8925 void GetInverse(Matrix<complex<float>, Prop0, RowHerm, Allocator0>& A,
8931 Vector<complex<float>, VectFull, Allocator0> work(m);
8932 GetLU(A, pivot, info);
8933 chetri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8934 work.GetDataVoid(), &info.GetInfoRef());
8936 #ifdef SELDON_LAPACK_CHECK_INFO
8937 if (info.GetInfo() != 0)
8938 throw LapackError(info.GetInfo(),
"GetInverse",
8939 "The matrix is inversible ? ");
8945 template <
class Prop0,
class Allocator0>
8946 void GetInverse(Matrix<complex<double>, Prop0, RowHerm, Allocator0>& A,
8952 Vector<complex<double>, VectFull, Allocator0> work(m);
8953 GetLU(A, pivot, info);
8954 zhetri_(&uplo, &m, A.GetDataVoid(), &m, pivot.GetData(),
8955 work.GetDataVoid(), &info.GetInfoRef());
8957 #ifdef SELDON_LAPACK_CHECK_INFO
8958 if (info.GetInfo() != 0)
8959 throw LapackError(info.GetInfo(),
"GetInverse",
8960 "The matrix is inversible ? ");
8969 template <
class Prop0,
class Allocator0>
8970 void GetInverse(Matrix<complex<float>, Prop0, RowHermPacked,
8977 Vector<complex<float>, VectFull, Allocator0> work(m);
8978 GetLU(A, pivot, info);
8979 chptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
8980 work.GetDataVoid(), &info.GetInfoRef());
8982 #ifdef SELDON_LAPACK_CHECK_INFO
8983 if (info.GetInfo() != 0)
8984 throw LapackError(info.GetInfo(),
"GetInverse",
8985 "The matrix is inversible ? ");
8991 template <
class Prop0,
class Allocator0>
8992 void GetInverse(Matrix<complex<double>, Prop0, RowHermPacked,
8999 Vector<complex<double>, VectFull, Allocator0> work(m);
9000 GetLU(A, pivot, info);
9001 zhptri_(&uplo, &m, A.GetDataVoid(), pivot.GetData(),
9002 work.GetDataVoid(), &info.GetInfoRef());
9004 #ifdef SELDON_LAPACK_CHECK_INFO
9005 if (info.GetInfo() != 0)
9006 throw LapackError(info.GetInfo(),
"GetInverse",
9007 "The matrix is inversible ? ");
9016 template <
class Prop0,
class Allocator0>
9017 void GetInverse(Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
9021 char uplo(
'U');
char diag(
'N');
9022 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9023 &info.GetInfoRef());
9025 #ifdef SELDON_LAPACK_CHECK_INFO
9026 if (info.GetInfo() != 0)
9027 throw LapackError(info.GetInfo(),
"GetInverse",
9028 "The matrix is inversible ? ");
9034 template <
class Prop0,
class Allocator0>
9035 void GetInverse(Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
9039 char uplo(
'U');
char diag(
'N');
9040 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9041 &info.GetInfoRef());
9043 #ifdef SELDON_LAPACK_CHECK_INFO
9044 if (info.GetInfo() != 0)
9045 throw LapackError(info.GetInfo(),
"GetInverse",
9046 "The matrix is inversible ? ");
9052 template <
class Prop0,
class Allocator0>
9053 void GetInverse(Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,
9057 char uplo(
'U');
char diag(
'N');
9058 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9059 &info.GetInfoRef());
9061 #ifdef SELDON_LAPACK_CHECK_INFO
9062 if (info.GetInfo() != 0)
9063 throw LapackError(info.GetInfo(),
"GetInverse",
9064 "The matrix is inversible ? ");
9070 template <
class Prop0,
class Allocator0>
9071 void GetInverse(Matrix<complex<double>, Prop0, ColUpTriang, Allocator0>& A,
9075 char uplo(
'U');
char diag(
'N');
9076 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9077 &info.GetInfoRef());
9079 #ifdef SELDON_LAPACK_CHECK_INFO
9080 if (info.GetInfo() != 0)
9081 throw LapackError(info.GetInfo(),
"GetInverse",
9082 "The matrix is inversible ? ");
9091 template <
class Prop0,
class Allocator0>
9092 void GetInverse(
const SeldonDiag& DiagA,
9093 Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
9097 char uplo(
'U');
char diag = DiagA.Char();
9098 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9099 &info.GetInfoRef());
9101 #ifdef SELDON_LAPACK_CHECK_INFO
9102 if (info.GetInfo() != 0)
9103 throw LapackError(info.GetInfo(),
"GetInverse",
9104 "The matrix is inversible ? ");
9110 template <
class Prop0,
class Allocator0>
9111 void GetInverse(
const SeldonDiag& DiagA,
9112 Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
9116 char uplo(
'U');
char diag = DiagA.Char();
9117 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9118 &info.GetInfoRef());
9120 #ifdef SELDON_LAPACK_CHECK_INFO
9121 if (info.GetInfo() != 0)
9122 throw LapackError(info.GetInfo(),
"GetInverse",
9123 "The matrix is inversible ? ");
9129 template <
class Prop0,
class Allocator0>
9130 void GetInverse(
const SeldonDiag& DiagA,
9131 Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,
9135 char uplo(
'U');
char diag = DiagA.Char();
9136 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9137 &info.GetInfoRef());
9139 #ifdef SELDON_LAPACK_CHECK_INFO
9140 if (info.GetInfo() != 0)
9141 throw LapackError(info.GetInfo(),
"GetInverse",
9142 "The matrix is inversible ? ");
9148 template <
class Prop0,
class Allocator0>
9149 void GetInverse(
const SeldonDiag& DiagA,
9150 Matrix<complex<double>, Prop0, ColUpTriang, Allocator0>& A,
9154 char uplo(
'U');
char diag = DiagA.Char();
9155 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9156 &info.GetInfoRef());
9158 #ifdef SELDON_LAPACK_CHECK_INFO
9159 if (info.GetInfo() != 0)
9160 throw LapackError(info.GetInfo(),
"GetInverse",
9161 "The matrix is inversible ? ");
9170 template <
class Prop0,
class Allocator0>
9171 void GetInverse(Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
9175 char uplo(
'L');
char diag(
'N');
9176 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9177 &info.GetInfoRef());
9179 #ifdef SELDON_LAPACK_CHECK_INFO
9180 if (info.GetInfo() != 0)
9181 throw LapackError(info.GetInfo(),
"GetInverse",
9182 "The matrix is inversible ? ");
9188 template <
class Prop0,
class Allocator0>
9189 void GetInverse(Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
9193 char uplo(
'L');
char diag(
'N');
9194 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9195 &info.GetInfoRef());
9197 #ifdef SELDON_LAPACK_CHECK_INFO
9198 if (info.GetInfo() != 0)
9199 throw LapackError(info.GetInfo(),
"GetInverse",
9200 "The matrix is inversible ? ");
9206 template <
class Prop0,
class Allocator0>
9207 void GetInverse(Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,
9211 char uplo(
'L');
char diag(
'N');
9212 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9213 &info.GetInfoRef());
9215 #ifdef SELDON_LAPACK_CHECK_INFO
9216 if (info.GetInfo() != 0)
9217 throw LapackError(info.GetInfo(),
"GetInverse",
9218 "The matrix is inversible ? ");
9224 template <
class Prop0,
class Allocator0>
9225 void GetInverse(Matrix<complex<double>, Prop0, ColLoTriang, Allocator0>& A,
9229 char uplo(
'L');
char diag(
'N');
9230 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9231 &info.GetInfoRef());
9233 #ifdef SELDON_LAPACK_CHECK_INFO
9234 if (info.GetInfo() != 0)
9235 throw LapackError(info.GetInfo(),
"GetInverse",
9236 "The matrix is inversible ? ");
9245 template <
class Prop0,
class Allocator0>
9246 void GetInverse(
const SeldonDiag& DiagA,
9247 Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
9251 char uplo(
'L');
char diag = DiagA.Char();
9252 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9253 &info.GetInfoRef());
9255 #ifdef SELDON_LAPACK_CHECK_INFO
9256 if (info.GetInfo() != 0)
9257 throw LapackError(info.GetInfo(),
"GetInverse",
9258 "The matrix is inversible ? ");
9264 template <
class Prop0,
class Allocator0>
9265 void GetInverse(
const SeldonDiag& DiagA,
9266 Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
9270 char uplo(
'L');
char diag = DiagA.Char();
9271 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9272 &info.GetInfoRef());
9274 #ifdef SELDON_LAPACK_CHECK_INFO
9275 if (info.GetInfo() != 0)
9276 throw LapackError(info.GetInfo(),
"GetInverse",
9277 "The matrix is inversible ? ");
9283 template <
class Prop0,
class Allocator0>
9284 void GetInverse(
const SeldonDiag& DiagA,
9285 Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,
9289 char uplo(
'L');
char diag = DiagA.Char();
9290 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9291 &info.GetInfoRef());
9293 #ifdef SELDON_LAPACK_CHECK_INFO
9294 if (info.GetInfo() != 0)
9295 throw LapackError(info.GetInfo(),
"GetInverse",
9296 "The matrix is inversible ? ");
9302 template <
class Prop0,
class Allocator0>
9303 void GetInverse(
const SeldonDiag& DiagA,
9304 Matrix<complex<double>, Prop0, ColLoTriang, Allocator0>& A,
9308 char uplo(
'L');
char diag = DiagA.Char();
9309 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9310 &info.GetInfoRef());
9312 #ifdef SELDON_LAPACK_CHECK_INFO
9313 if (info.GetInfo() != 0)
9314 throw LapackError(info.GetInfo(),
"GetInverse",
9315 "The matrix is inversible ? ");
9324 template <
class Prop0,
class Allocator0>
9325 void GetInverse(Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
9329 char uplo(
'U');
char diag(
'N');
9330 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9332 #ifdef SELDON_LAPACK_CHECK_INFO
9333 if (info.GetInfo() != 0)
9334 throw LapackError(info.GetInfo(),
"GetInverse",
9335 "The matrix is inversible ? ");
9341 template <
class Prop0,
class Allocator0>
9342 void GetInverse(Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
9346 char uplo(
'U');
char diag(
'N');
9347 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9349 #ifdef SELDON_LAPACK_CHECK_INFO
9350 if (info.GetInfo() != 0)
9351 throw LapackError(info.GetInfo(),
"GetInverse",
9352 "The matrix is inversible ? ");
9358 template <
class Prop0,
class Allocator0>
9359 void GetInverse(Matrix<complex<float>, Prop0, ColUpTriangPacked,
9364 char uplo(
'U');
char diag(
'N');
9365 ctptri_(&uplo, &diag, &m, A.GetDataVoid(), &info.GetInfoRef());
9367 #ifdef SELDON_LAPACK_CHECK_INFO
9368 if (info.GetInfo() != 0)
9369 throw LapackError(info.GetInfo(),
"GetInverse",
9370 "The matrix is inversible ? ");
9376 template <
class Prop0,
class Allocator0>
9377 void GetInverse(Matrix<complex<double>, Prop0, ColUpTriangPacked,
9382 char uplo(
'U');
char diag(
'N');
9383 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
9384 &info.GetInfoRef());
9386 #ifdef SELDON_LAPACK_CHECK_INFO
9387 if (info.GetInfo() != 0)
9388 throw LapackError(info.GetInfo(),
"GetInverse",
9389 "The matrix is inversible ? ");
9398 template <
class Prop0,
class Allocator0>
9399 void GetInverse(
const SeldonDiag& DiagA,
9400 Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
9404 char uplo(
'U');
char diag = DiagA.Char();
9405 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9407 #ifdef SELDON_LAPACK_CHECK_INFO
9408 if (info.GetInfo() != 0)
9409 throw LapackError(info.GetInfo(),
"GetInverse",
9410 "The matrix is inversible ? ");
9416 template <
class Prop0,
class Allocator0>
9417 void GetInverse(
const SeldonDiag& DiagA,
9418 Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
9422 char uplo(
'U');
char diag = DiagA.Char();
9423 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9425 #ifdef SELDON_LAPACK_CHECK_INFO
9426 if (info.GetInfo() != 0)
9427 throw LapackError(info.GetInfo(),
"GetInverse",
9428 "The matrix is inversible ? ");
9434 template <
class Prop0,
class Allocator0>
9435 void GetInverse(
const SeldonDiag& DiagA,
9436 Matrix<complex<float>, Prop0, ColUpTriangPacked,
9441 char uplo(
'U');
char diag = DiagA.Char();
9442 ctptri_(&uplo, &diag, &m, A.GetDataVoid(), &info.GetInfoRef());
9444 #ifdef SELDON_LAPACK_CHECK_INFO
9445 if (info.GetInfo() != 0)
9446 throw LapackError(info.GetInfo(),
"GetInverse",
9447 "The matrix is inversible ? ");
9453 template <
class Prop0,
class Allocator0>
9454 void GetInverse(
const SeldonDiag& DiagA,
9455 Matrix<complex<double>, Prop0, ColUpTriangPacked,
9460 char uplo(
'U');
char diag = DiagA.Char();
9461 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
9462 &info.GetInfoRef());
9464 #ifdef SELDON_LAPACK_CHECK_INFO
9465 if (info.GetInfo() != 0)
9466 throw LapackError(info.GetInfo(),
"GetInverse",
9467 "The matrix is inversible ? ");
9476 template <
class Prop0,
class Allocator0>
9477 void GetInverse(Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
9481 char uplo(
'L');
char diag(
'N');
9482 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9484 #ifdef SELDON_LAPACK_CHECK_INFO
9485 if (info.GetInfo() != 0)
9486 throw LapackError(info.GetInfo(),
"GetInverse",
9487 "The matrix is inversible ? ");
9493 template <
class Prop0,
class Allocator0>
9494 void GetInverse(Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
9498 char uplo(
'L');
char diag(
'N');
9499 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9501 #ifdef SELDON_LAPACK_CHECK_INFO
9502 if (info.GetInfo() != 0)
9503 throw LapackError(info.GetInfo(),
"GetInverse",
9504 "The matrix is inversible ? ");
9510 template <
class Prop0,
class Allocator0>
9511 void GetInverse(Matrix<complex<float>, Prop0, ColLoTriangPacked,
9516 char uplo(
'L');
char diag(
'N');
9517 ctptri_(&uplo, &diag, &m, A.GetDataVoid(),
9518 &info.GetInfoRef());
9520 #ifdef SELDON_LAPACK_CHECK_INFO
9521 if (info.GetInfo() != 0)
9522 throw LapackError(info.GetInfo(),
"GetInverse",
9523 "The matrix is inversible ? ");
9529 template <
class Prop0,
class Allocator0>
9530 void GetInverse(Matrix<complex<double>, Prop0, ColLoTriangPacked,
9535 char uplo(
'L');
char diag(
'N');
9536 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
9537 &info.GetInfoRef());
9539 #ifdef SELDON_LAPACK_CHECK_INFO
9540 if (info.GetInfo() != 0)
9541 throw LapackError(info.GetInfo(),
"GetInverse",
9542 "The matrix is inversible ? ");
9551 template <
class Prop0,
class Allocator0>
9552 void GetInverse(
const SeldonDiag& DiagA,
9553 Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
9557 char uplo(
'L');
char diag = DiagA.Char();
9558 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9560 #ifdef SELDON_LAPACK_CHECK_INFO
9561 if (info.GetInfo() != 0)
9562 throw LapackError(info.GetInfo(),
"GetInverse",
9563 "The matrix is inversible ? ");
9569 template <
class Prop0,
class Allocator0>
9570 void GetInverse(
const SeldonDiag& DiagA,
9571 Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
9575 char uplo(
'L');
char diag = DiagA.Char();
9576 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9578 #ifdef SELDON_LAPACK_CHECK_INFO
9579 if (info.GetInfo() != 0)
9580 throw LapackError(info.GetInfo(),
"GetInverse",
9581 "The matrix is inversible ? ");
9587 template <
class Prop0,
class Allocator0>
9588 void GetInverse(
const SeldonDiag& DiagA,
9589 Matrix<complex<float>, Prop0, ColLoTriangPacked,
9594 char uplo(
'L');
char diag = DiagA.Char();
9595 ctptri_(&uplo, &diag, &m, A.GetDataVoid(),
9596 &info.GetInfoRef());
9598 #ifdef SELDON_LAPACK_CHECK_INFO
9599 if (info.GetInfo() != 0)
9600 throw LapackError(info.GetInfo(),
"GetInverse",
9601 "The matrix is inversible ? ");
9607 template <
class Prop0,
class Allocator0>
9608 void GetInverse(
const SeldonDiag& DiagA,
9609 Matrix<complex<double>, Prop0, ColLoTriangPacked,
9614 char uplo(
'L');
char diag = DiagA.Char();
9615 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
9616 &info.GetInfoRef());
9618 #ifdef SELDON_LAPACK_CHECK_INFO
9619 if (info.GetInfo() != 0)
9620 throw LapackError(info.GetInfo(),
"GetInverse",
9621 "The matrix is inversible ? ");
9630 template <
class Prop0,
class Allocator0>
9631 void GetInverse(Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
9635 char uplo(
'L');
char diag(
'N');
9636 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9637 &info.GetInfoRef());
9639 #ifdef SELDON_LAPACK_CHECK_INFO
9640 if (info.GetInfo() != 0)
9641 throw LapackError(info.GetInfo(),
"GetInverse",
9642 "The matrix is inversible ? ");
9648 template <
class Prop0,
class Allocator0>
9649 void GetInverse(Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
9653 char uplo(
'L');
char diag(
'N');
9654 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9655 &info.GetInfoRef());
9657 #ifdef SELDON_LAPACK_CHECK_INFO
9658 if (info.GetInfo() != 0)
9659 throw LapackError(info.GetInfo(),
"GetInverse",
9660 "The matrix is inversible ? ");
9666 template <
class Prop0,
class Allocator0>
9667 void GetInverse(Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
9671 char uplo(
'L');
char diag(
'N');
9672 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9673 &info.GetInfoRef());
9675 #ifdef SELDON_LAPACK_CHECK_INFO
9676 if (info.GetInfo() != 0)
9677 throw LapackError(info.GetInfo(),
"GetInverse",
9678 "The matrix is inversible ? ");
9684 template <
class Prop0,
class Allocator0>
9685 void GetInverse(Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,
9689 char uplo(
'L');
char diag(
'N');
9690 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9691 &info.GetInfoRef());
9693 #ifdef SELDON_LAPACK_CHECK_INFO
9694 if (info.GetInfo() != 0)
9695 throw LapackError(info.GetInfo(),
"GetInverse",
9696 "The matrix is inversible ? ");
9705 template <
class Prop0,
class Allocator0>
9706 void GetInverse(
const SeldonDiag& DiagA,
9707 Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
9711 char uplo(
'L');
char diag = DiagA.Char();
9712 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9713 &info.GetInfoRef());
9715 #ifdef SELDON_LAPACK_CHECK_INFO
9716 if (info.GetInfo() != 0)
9717 throw LapackError(info.GetInfo(),
"GetInverse",
9718 "The matrix is inversible ? ");
9724 template <
class Prop0,
class Allocator0>
9725 void GetInverse(
const SeldonDiag& DiagA,
9726 Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
9730 char uplo(
'L');
char diag = DiagA.Char();
9731 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9732 &info.GetInfoRef());
9734 #ifdef SELDON_LAPACK_CHECK_INFO
9735 if (info.GetInfo() != 0)
9736 throw LapackError(info.GetInfo(),
"GetInverse",
9737 "The matrix is inversible ? ");
9743 template <
class Prop0,
class Allocator0>
9744 void GetInverse(
const SeldonDiag& DiagA,
9745 Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
9749 char uplo(
'L');
char diag = DiagA.Char();
9750 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9751 &info.GetInfoRef());
9753 #ifdef SELDON_LAPACK_CHECK_INFO
9754 if (info.GetInfo() != 0)
9755 throw LapackError(info.GetInfo(),
"GetInverse",
9756 "The matrix is inversible ? ");
9762 template <
class Prop0,
class Allocator0>
9763 void GetInverse(
const SeldonDiag& DiagA,
9764 Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,
9768 char uplo(
'L');
char diag = DiagA.Char();
9769 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9770 &info.GetInfoRef());
9772 #ifdef SELDON_LAPACK_CHECK_INFO
9773 if (info.GetInfo() != 0)
9774 throw LapackError(info.GetInfo(),
"GetInverse",
9775 "The matrix is inversible ? ");
9784 template <
class Prop0,
class Allocator0>
9785 void GetInverse(Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
9789 char uplo(
'U');
char diag(
'N');
9790 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9791 &info.GetInfoRef());
9793 #ifdef SELDON_LAPACK_CHECK_INFO
9794 if (info.GetInfo() != 0)
9795 throw LapackError(info.GetInfo(),
"GetInverse",
9796 "The matrix is inversible ? ");
9802 template <
class Prop0,
class Allocator0>
9803 void GetInverse(Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
9807 char uplo(
'U');
char diag(
'N');
9808 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9809 &info.GetInfoRef());
9811 #ifdef SELDON_LAPACK_CHECK_INFO
9812 if (info.GetInfo() != 0)
9813 throw LapackError(info.GetInfo(),
"GetInverse",
9814 "The matrix is inversible ? ");
9820 template <
class Prop0,
class Allocator0>
9821 void GetInverse(Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
9825 char uplo(
'U');
char diag(
'N');
9826 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9827 &info.GetInfoRef());
9829 #ifdef SELDON_LAPACK_CHECK_INFO
9830 if (info.GetInfo() != 0)
9831 throw LapackError(info.GetInfo(),
"GetInverse",
9832 "The matrix is inversible ? ");
9838 template <
class Prop0,
class Allocator0>
9839 void GetInverse(Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,
9843 char uplo(
'U');
char diag(
'N');
9844 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9845 &info.GetInfoRef());
9847 #ifdef SELDON_LAPACK_CHECK_INFO
9848 if (info.GetInfo() != 0)
9849 throw LapackError(info.GetInfo(),
"GetInverse",
9850 "The matrix is inversible ? ");
9859 template <
class Prop0,
class Allocator0>
9860 void GetInverse(
const SeldonDiag& DiagA,
9861 Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
9865 char uplo(
'U');
char diag = DiagA.Char();
9866 strtri_(&uplo, &diag, &m, A.GetData(), &m,
9867 &info.GetInfoRef());
9869 #ifdef SELDON_LAPACK_CHECK_INFO
9870 if (info.GetInfo() != 0)
9871 throw LapackError(info.GetInfo(),
"GetInverse",
9872 "The matrix is inversible ? ");
9878 template <
class Prop0,
class Allocator0>
9879 void GetInverse(
const SeldonDiag& DiagA,
9880 Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
9884 char uplo(
'U');
char diag = DiagA.Char();
9885 dtrtri_(&uplo, &diag, &m, A.GetData(), &m,
9886 &info.GetInfoRef());
9888 #ifdef SELDON_LAPACK_CHECK_INFO
9889 if (info.GetInfo() != 0)
9890 throw LapackError(info.GetInfo(),
"GetInverse",
9891 "The matrix is inversible ? ");
9897 template <
class Prop0,
class Allocator0>
9898 void GetInverse(
const SeldonDiag& DiagA,
9899 Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
9903 char uplo(
'U');
char diag = DiagA.Char();
9904 ctrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9905 &info.GetInfoRef());
9907 #ifdef SELDON_LAPACK_CHECK_INFO
9908 if (info.GetInfo() != 0)
9909 throw LapackError(info.GetInfo(),
"GetInverse",
9910 "The matrix is inversible ? ");
9916 template <
class Prop0,
class Allocator0>
9917 void GetInverse(
const SeldonDiag& DiagA,
9918 Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,
9922 char uplo(
'U');
char diag = DiagA.Char();
9923 ztrtri_(&uplo, &diag, &m, A.GetDataVoid(), &m,
9924 &info.GetInfoRef());
9926 #ifdef SELDON_LAPACK_CHECK_INFO
9927 if (info.GetInfo() != 0)
9928 throw LapackError(info.GetInfo(),
"GetInverse",
9929 "The matrix is inversible ? ");
9938 template <
class Prop0,
class Allocator0>
9939 void GetInverse(Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
9943 char uplo(
'L');
char diag(
'N');
9944 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9946 #ifdef SELDON_LAPACK_CHECK_INFO
9947 if (info.GetInfo() != 0)
9948 throw LapackError(info.GetInfo(),
"GetInverse",
9949 "The matrix is inversible ? ");
9955 template <
class Prop0,
class Allocator0>
9956 void GetInverse(Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
9960 char uplo(
'L');
char diag(
'N');
9961 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
9963 #ifdef SELDON_LAPACK_CHECK_INFO
9964 if (info.GetInfo() != 0)
9965 throw LapackError(info.GetInfo(),
"GetInverse",
9966 "The matrix is inversible ? ");
9972 template <
class Prop0,
class Allocator0>
9973 void GetInverse(Matrix<complex<float>, Prop0, RowUpTriangPacked,
9978 char uplo(
'L');
char diag(
'N');
9979 ctptri_(&uplo, &diag, &m, A.GetDataVoid(), &info.GetInfoRef());
9981 #ifdef SELDON_LAPACK_CHECK_INFO
9982 if (info.GetInfo() != 0)
9983 throw LapackError(info.GetInfo(),
"GetInverse",
9984 "The matrix is inversible ? ");
9990 template <
class Prop0,
class Allocator0>
9991 void GetInverse(Matrix<complex<double>, Prop0, RowUpTriangPacked,
9996 char uplo(
'L');
char diag(
'N');
9997 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
9998 &info.GetInfoRef());
10000 #ifdef SELDON_LAPACK_CHECK_INFO
10001 if (info.GetInfo() != 0)
10002 throw LapackError(info.GetInfo(),
"GetInverse",
10003 "The matrix is inversible ? ");
10012 template <
class Prop0,
class Allocator0>
10013 void GetInverse(
const SeldonDiag& DiagA,
10014 Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
10018 char uplo(
'L');
char diag = DiagA.Char();
10019 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
10021 #ifdef SELDON_LAPACK_CHECK_INFO
10022 if (info.GetInfo() != 0)
10023 throw LapackError(info.GetInfo(),
"GetInverse",
10024 "The matrix is inversible ? ");
10030 template <
class Prop0,
class Allocator0>
10031 void GetInverse(
const SeldonDiag& DiagA,
10032 Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
10036 char uplo(
'L');
char diag = DiagA.Char();
10037 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
10039 #ifdef SELDON_LAPACK_CHECK_INFO
10040 if (info.GetInfo() != 0)
10041 throw LapackError(info.GetInfo(),
"GetInverse",
10042 "The matrix is inversible ? ");
10048 template <
class Prop0,
class Allocator0>
10049 void GetInverse(
const SeldonDiag& DiagA,
10050 Matrix<complex<float>, Prop0, RowUpTriangPacked,
10055 char uplo(
'L');
char diag = DiagA.Char();
10056 ctptri_(&uplo, &diag, &m, A.GetDataVoid(), &info.GetInfoRef());
10058 #ifdef SELDON_LAPACK_CHECK_INFO
10059 if (info.GetInfo() != 0)
10060 throw LapackError(info.GetInfo(),
"GetInverse",
10061 "The matrix is inversible ? ");
10067 template <
class Prop0,
class Allocator0>
10068 void GetInverse(
const SeldonDiag& DiagA,
10069 Matrix<complex<double>, Prop0, RowUpTriangPacked,
10074 char uplo(
'L');
char diag = DiagA.Char();
10075 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
10076 &info.GetInfoRef());
10078 #ifdef SELDON_LAPACK_CHECK_INFO
10079 if (info.GetInfo() != 0)
10080 throw LapackError(info.GetInfo(),
"GetInverse",
10081 "The matrix is inversible ? ");
10090 template <
class Prop0,
class Allocator0>
10091 void GetInverse(Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
10095 char uplo(
'U');
char diag(
'N');
10096 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
10098 #ifdef SELDON_LAPACK_CHECK_INFO
10099 if (info.GetInfo() != 0)
10100 throw LapackError(info.GetInfo(),
"GetInverse",
10101 "The matrix is inversible ? ");
10107 template <
class Prop0,
class Allocator0>
10108 void GetInverse(Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
10112 char uplo(
'U');
char diag(
'N');
10113 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
10115 #ifdef SELDON_LAPACK_CHECK_INFO
10116 if (info.GetInfo() != 0)
10117 throw LapackError(info.GetInfo(),
"GetInverse",
10118 "The matrix is inversible ? ");
10124 template <
class Prop0,
class Allocator0>
10125 void GetInverse(Matrix<complex<float>, Prop0, RowLoTriangPacked,
10130 char uplo(
'U');
char diag(
'N');
10131 ctptri_(&uplo, &diag, &m, A.GetDataVoid(),
10132 &info.GetInfoRef());
10134 #ifdef SELDON_LAPACK_CHECK_INFO
10135 if (info.GetInfo() != 0)
10136 throw LapackError(info.GetInfo(),
"GetInverse",
10137 "The matrix is inversible ? ");
10143 template <
class Prop0,
class Allocator0>
10144 void GetInverse(Matrix<complex<double>, Prop0, RowLoTriangPacked,
10149 char uplo(
'U');
char diag(
'N');
10150 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
10151 &info.GetInfoRef());
10153 #ifdef SELDON_LAPACK_CHECK_INFO
10154 if (info.GetInfo() != 0)
10155 throw LapackError(info.GetInfo(),
"GetInverse",
10156 "The matrix is inversible ? ");
10165 template <
class Prop0,
class Allocator0>
10166 void GetInverse(
const SeldonDiag& DiagA,
10167 Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
10171 char uplo(
'U');
char diag = DiagA.Char();
10172 stptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
10174 #ifdef SELDON_LAPACK_CHECK_INFO
10175 if (info.GetInfo() != 0)
10176 throw LapackError(info.GetInfo(),
"GetInverse",
10177 "The matrix is inversible ? ");
10183 template <
class Prop0,
class Allocator0>
10184 void GetInverse(
const SeldonDiag& DiagA,
10185 Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
10189 char uplo(
'U');
char diag = DiagA.Char();
10190 dtptri_(&uplo, &diag, &m, A.GetData(), &info.GetInfoRef());
10192 #ifdef SELDON_LAPACK_CHECK_INFO
10193 if (info.GetInfo() != 0)
10194 throw LapackError(info.GetInfo(),
"GetInverse",
10195 "The matrix is inversible ? ");
10201 template <
class Prop0,
class Allocator0>
10202 void GetInverse(
const SeldonDiag& DiagA,
10203 Matrix<complex<float>, Prop0, RowLoTriangPacked,
10208 char uplo(
'U');
char diag = DiagA.Char();
10209 ctptri_(&uplo, &diag, &m, A.GetDataVoid(),
10210 &info.GetInfoRef());
10212 #ifdef SELDON_LAPACK_CHECK_INFO
10213 if (info.GetInfo() != 0)
10214 throw LapackError(info.GetInfo(),
"GetInverse",
10215 "The matrix is inversible ? ");
10221 template <
class Prop0,
class Allocator0>
10222 void GetInverse(
const SeldonDiag& DiagA,
10223 Matrix<complex<double>, Prop0, RowLoTriangPacked,
10228 char uplo(
'U');
char diag = DiagA.Char();
10229 ztptri_(&uplo, &diag, &m, A.GetDataVoid(),
10230 &info.GetInfoRef());
10232 #ifdef SELDON_LAPACK_CHECK_INFO
10233 if (info.GetInfo() != 0)
10234 throw LapackError(info.GetInfo(),
"GetInverse",
10235 "The matrix is inversible ? ");
10253 template<
class Prop0,
class Allocator0,
10254 class Allocator1,
class Allocator2>
10255 void GetScalingFactors(
const Matrix<float, Prop0, ColMajor, Allocator0>& A,
10256 Vector<float, VectFull, Allocator1>& row_scale,
10257 Vector<float, VectFull, Allocator2>& col_scale,
10258 float& row_condition_number,
10259 float& col_condition_number,
float& amax,
10263 #ifdef SELDON_CHECK_DIMENSIONS
10264 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10265 +
string(
" rowcnd, colcnd, amax)"));
10268 int m = A.GetM(), n = A.GetN();
10269 int lda = A.GetLD();
10270 sgeequ_(&m, &n, A.GetData(), &lda, row_scale.GetData(),
10271 col_scale.GetData(), &row_condition_number, &col_condition_number,
10272 &amax, &info.GetInfoRef());
10276 template<
class Prop0,
class Allocator0,
10277 class Allocator1,
class Allocator2>
10278 void GetScalingFactors(
const Matrix<double, Prop0, ColMajor, Allocator0>& A,
10279 Vector<double, VectFull, Allocator1>& row_scale,
10280 Vector<double, VectFull, Allocator2>& col_scale,
10281 double& row_condition_number,
10282 double& col_condition_number,
double& amax,
10286 #ifdef SELDON_CHECK_DIMENSIONS
10287 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10288 +
string(
" rowcnd, colcnd, amax)"));
10291 int m = A.GetM(), n = A.GetN();
10292 int lda = A.GetLD();
10293 dgeequ_(&m, &n, A.GetData(), &lda, row_scale.GetData(),
10294 col_scale.GetData(), &row_condition_number, &col_condition_number,
10295 &amax, &info.GetInfoRef());
10299 template<
class Prop0,
class Allocator0,
10300 class Allocator1,
class Allocator2>
10301 void GetScalingFactors(
const Matrix<complex<float>, Prop0, ColMajor,
10303 Vector<float, VectFull, Allocator1>& row_scale,
10304 Vector<float, VectFull, Allocator2>& col_scale,
10305 float& row_condition_number,
10306 float& col_condition_number,
float& amax,
10310 #ifdef SELDON_CHECK_DIMENSIONS
10311 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10312 +
string(
"rowcnd, colcnd, amax)"));
10315 int m = A.GetM(), n = A.GetN();
10316 int lda = A.GetLD();
10317 cgeequ_(&m, &n, A.GetDataVoid(), &lda, row_scale.GetData(),
10318 col_scale.GetData(), &row_condition_number,
10319 &col_condition_number, &amax, &info.GetInfoRef());
10323 template<
class Prop0,
class Allocator0,
10324 class Allocator1,
class Allocator2>
10325 void GetScalingFactors(
const Matrix<complex<double>, Prop0, ColMajor,
10327 Vector<double, VectFull, Allocator1>& row_scale,
10328 Vector<double, VectFull, Allocator2>& col_scale,
10329 double& row_condition_number,
10330 double& col_condition_number,
double& amax,
10334 #ifdef SELDON_CHECK_DIMENSIONS
10335 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10336 +
string(
"rowcnd, colcnd, amax)"));
10339 int m = A.GetM(), n = A.GetN();
10340 int lda = A.GetLD();
10341 zgeequ_(&m, &n, A.GetDataVoid(), &lda, row_scale.GetData(),
10342 col_scale.GetData(), &row_condition_number,
10343 &col_condition_number, &amax, &info.GetInfoRef());
10350 template<
class Prop0,
class Allocator0,
10351 class Allocator1,
class Allocator2>
10352 void GetScalingFactors(
const Matrix<float, Prop0, RowMajor, Allocator0>& A,
10353 Vector<float, VectFull, Allocator1>& row_scale,
10354 Vector<float, VectFull, Allocator2>& col_scale,
10355 float& row_condition_number,
10356 float& col_condition_number,
float& amax,
10360 #ifdef SELDON_CHECK_DIMENSIONS
10361 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10362 +
string(
" rowcnd, colcnd, amax)"));
10365 int m = A.GetM(), n = A.GetN();
10366 int lda = A.GetLD();
10367 sgeequ_(&n, &m, A.GetData(), &lda, col_scale.GetData(),
10368 row_scale.GetData(), &col_condition_number, &row_condition_number,
10369 &amax, &info.GetInfoRef());
10373 template<
class Prop0,
class Allocator0,
10374 class Allocator1,
class Allocator2>
10375 void GetScalingFactors(
const Matrix<double, Prop0, RowMajor, Allocator0>& A,
10376 Vector<double, VectFull, Allocator1>& row_scale,
10377 Vector<double, VectFull, Allocator2>& col_scale,
10378 double& row_condition_number,
10379 double& col_condition_number,
double& amax,
10383 #ifdef SELDON_CHECK_DIMENSIONS
10384 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10385 +
string(
" rowcnd, colcnd, amax)"));
10388 int m = A.GetM(), n = A.GetN();
10389 int lda = A.GetLD();
10390 dgeequ_(&n, &m, A.GetData(), &lda, col_scale.GetData(),
10391 row_scale.GetData(), &col_condition_number, &row_condition_number,
10392 &amax, &info.GetInfoRef());
10396 template<
class Prop0,
class Allocator0,
10397 class Allocator1,
class Allocator2>
10398 void GetScalingFactors(
const Matrix<complex<float>, Prop0, RowMajor,
10400 Vector<float, VectFull, Allocator1>& row_scale,
10401 Vector<float, VectFull, Allocator2>& col_scale,
10402 float& row_condition_number,
10403 float& col_condition_number,
float& amax,
10407 #ifdef SELDON_CHECK_DIMENSIONS
10408 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y,")
10409 +
string(
" rowcnd, colcnd, amax)"));
10412 int m = A.GetM(), n = A.GetN();
10413 int lda = A.GetLD();
10414 cgeequ_(&n, &m, A.GetDataVoid(), &lda, col_scale.GetData(),
10415 row_scale.GetData(), &col_condition_number,
10416 &row_condition_number, &amax, &info.GetInfoRef());
10420 template<
class Prop0,
class Allocator0,
10421 class Allocator1,
class Allocator2>
10422 void GetScalingFactors(
const Matrix<complex<double>, Prop0, RowMajor,
10424 Vector<double, VectFull, Allocator1>& row_scale,
10425 Vector<double, VectFull, Allocator2>& col_scale,
10426 double& row_condition_number,
10427 double& col_condition_number,
double& amax,
10431 #ifdef SELDON_CHECK_DIMENSIONS
10432 CheckDim(A, col_scale, row_scale,
string(
"GetScalingFactors(A, X, Y, ")
10433 +
string(
"rowcnd, colcnd, amax)"));
10436 int m = A.GetM(), n = A.GetN();
10437 int lda = A.GetLD();
10438 zgeequ_(&n, &m, A.GetDataVoid(), &lda, col_scale.GetData(),
10439 row_scale.GetData(), &col_condition_number,
10440 &row_condition_number, &amax, &info.GetInfoRef());
10452 template<
class Prop,
class Allocator>
10453 void GetCholesky(Matrix<double, Prop, RowSymPacked, Allocator>& A,
10457 #ifdef SELDON_CHECK_BOUNDS
10459 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10463 dpptrf_(&uplo, &n, A.GetData(), &info.GetInfoRef());
10465 #ifdef SELDON_LAPACK_CHECK_INFO
10466 if (info.GetInfo() != 0)
10467 throw LapackError(info.GetInfo(),
"GetCholesky",
10468 "An error occured during the factorization.");
10474 template<
class Prop,
class Allocator>
10475 void GetCholesky(Matrix<double, Prop, ColSymPacked, Allocator>& A,
10479 #ifdef SELDON_CHECK_BOUNDS
10481 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10485 dpptrf_(&uplo, &n, A.GetData(), &info.GetInfoRef());
10487 #ifdef SELDON_LAPACK_CHECK_INFO
10488 if (info.GetInfo() != 0)
10489 throw LapackError(info.GetInfo(),
"GetCholesky",
10490 "An error occured during the factorization.");
10496 template<
class Prop,
class Allocator>
10497 void GetCholesky(Matrix<double, Prop, RowSym, Allocator>& A,
10501 #ifdef SELDON_CHECK_BOUNDS
10503 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10507 dpotrf_(&uplo, &n, A.GetData(), &n, &info.GetInfoRef());
10509 #ifdef SELDON_LAPACK_CHECK_INFO
10510 if (info.GetInfo() != 0)
10511 throw LapackError(info.GetInfo(),
"GetCholesky",
10512 "An error occured during the factorization.");
10518 template<
class Prop,
class Allocator>
10519 void GetCholesky(Matrix<double, Prop, ColSym, Allocator>& A,
10523 #ifdef SELDON_CHECK_BOUNDS
10525 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10529 dpotrf_(&uplo, &n, A.GetData(), &n, &info.GetInfoRef());
10531 #ifdef SELDON_LAPACK_CHECK_INFO
10532 if (info.GetInfo() != 0)
10533 throw LapackError(info.GetInfo(),
"GetCholesky",
10534 "An error occured during the factorization.");
10540 template<
class Prop,
class Allocator>
10541 void GetCholesky(Matrix<complex<double>, Prop, RowHermPacked, Allocator>& A,
10545 #ifdef SELDON_CHECK_BOUNDS
10547 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10551 zpptrf_(&uplo, &n, A.GetData(), &info.GetInfoRef());
10553 #ifdef SELDON_LAPACK_CHECK_INFO
10554 if (info.GetInfo() != 0)
10555 throw LapackError(info.GetInfo(),
"GetCholesky",
10556 "An error occured during the factorization.");
10562 template<
class Prop,
class Allocator>
10563 void GetCholesky(Matrix<complex<double>, Prop, ColHermPacked, Allocator>& A,
10567 #ifdef SELDON_CHECK_BOUNDS
10569 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10573 zpptrf_(&uplo, &n, A.GetData(), &info.GetInfoRef());
10575 #ifdef SELDON_LAPACK_CHECK_INFO
10576 if (info.GetInfo() != 0)
10577 throw LapackError(info.GetInfo(),
"GetCholesky",
10578 "An error occured during the factorization.");
10584 template<
class Prop,
class Allocator>
10585 void GetCholesky(Matrix<complex<double>, Prop, RowHerm, Allocator>& A,
10589 #ifdef SELDON_CHECK_BOUNDS
10591 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10595 zpotrf_(&uplo, &n, A.GetData(), &n, &info.GetInfoRef());
10597 #ifdef SELDON_LAPACK_CHECK_INFO
10598 if (info.GetInfo() != 0)
10599 throw LapackError(info.GetInfo(),
"GetCholesky",
10600 "An error occured during the factorization.");
10606 template<
class Prop,
class Allocator>
10607 void GetCholesky(Matrix<complex<double>, Prop, ColHerm, Allocator>& A,
10611 #ifdef SELDON_CHECK_BOUNDS
10613 throw WrongDim(
"GetCholesky",
"Provide a non-empty matrix");
10617 zpotrf_(&uplo, &n, A.GetData(), &n, &info.GetInfoRef());
10619 #ifdef SELDON_LAPACK_CHECK_INFO
10620 if (info.GetInfo() != 0)
10621 throw LapackError(info.GetInfo(),
"GetCholesky",
10622 "An error occured during the factorization.");
10636 template<
class Prop,
class Allocator,
class Allocator2>
10637 void SolveCholesky(
const SeldonTranspose& TransA,
10638 const Matrix<double, Prop, RowSymPacked, Allocator>& A,
10639 Vector<double, VectFull, Allocator2>& X,
10642 #ifdef SELDON_CHECK_BOUNDS
10643 if (X.GetM() != A.GetM())
10644 throw WrongDim(
"SolveCholesky",
10645 "The vector should have a dimension compatible "
10646 "with the matrix.");
10650 char uplo(
'L');
char trans(TransA.Char());
char diag(
'N');
10651 int n = A.GetM();
int nrhs = 1;
10652 dtptrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), X.GetData(),
10653 &n, &info.GetInfoRef());
10657 template<
class Prop,
class Allocator,
class Allocator2>
10658 void SolveCholesky(
const SeldonTranspose& TransA,
10659 const Matrix<double, Prop, ColSymPacked, Allocator>& A,
10660 Vector<double, VectFull, Allocator2>& X,
10663 #ifdef SELDON_CHECK_BOUNDS
10664 if (X.GetM() != A.GetM())
10665 throw WrongDim(
"SolveCholesky",
10666 "The vector should have a dimension compatible "
10667 "with the matrix.");
10671 char uplo(
'U');
char trans(TransA.RevChar());
char diag(
'N');
10672 int n = A.GetM();
int nrhs = 1;
10673 dtptrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), X.GetData(),
10674 &n, &info.GetInfoRef());
10678 template<
class Prop,
class Allocator,
class Allocator2>
10679 void SolveCholesky(
const SeldonTranspose& TransA,
10680 const Matrix<double, Prop, RowSym, Allocator>& A,
10681 Vector<double, VectFull, Allocator2>& X,
10684 #ifdef SELDON_CHECK_BOUNDS
10685 if (X.GetM() != A.GetM())
10686 throw WrongDim(
"SolveCholesky",
10687 "The vector should have a dimension compatible "
10688 "with the matrix.");
10692 char uplo(
'L');
char trans(TransA.Char());
char diag(
'N');
10693 int n = A.GetM();
int nrhs = 1;
10694 dtrtrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), &n,
10695 X.GetData(), &n, &info.GetInfoRef());
10699 template<
class Prop,
class Allocator,
class Allocator2>
10700 void SolveCholesky(
const SeldonTranspose& TransA,
10701 const Matrix<double, Prop, ColSym, Allocator>& A,
10702 Vector<double, VectFull, Allocator2>& X,
10705 #ifdef SELDON_CHECK_BOUNDS
10706 if (X.GetM() != A.GetM())
10707 throw WrongDim(
"SolveCholesky",
10708 "The vector should have a dimension compatible "
10709 "with the matrix.");
10713 char uplo(
'U');
char trans(TransA.RevChar());
char diag(
'N');
10714 int n = A.GetM();
int nrhs = 1;
10715 dtrtrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), &n,
10716 X.GetData(), &n, &info.GetInfoRef());
10720 template<
class Prop,
class Allocator,
class Allocator2>
10721 void SolveCholesky(
const SeldonTranspose& TransA,
10722 const Matrix<complex<double>, Prop, RowHermPacked, Allocator>& A,
10723 Vector<complex<double>, VectFull, Allocator2>& X,
10726 #ifdef SELDON_CHECK_BOUNDS
10727 if (X.GetM() != A.GetM())
10728 throw WrongDim(
"SolveCholesky",
10729 "The vector should have a dimension compatible "
10730 "with the matrix.");
10734 char uplo(
'L');
char trans(TransA.Char());
char diag(
'N');
10735 int n = A.GetM();
int nrhs = 1;
10737 ztptrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), X.GetData(),
10738 &n, &info.GetInfoRef());
10744 template<
class Prop,
class Allocator,
class Allocator2>
10745 void SolveCholesky(
const SeldonTranspose& TransA,
10746 const Matrix<complex<double>, Prop, ColHermPacked, Allocator>& A,
10747 Vector<complex<double>, VectFull, Allocator2>& X,
10750 #ifdef SELDON_CHECK_BOUNDS
10751 if (X.GetM() != A.GetM())
10752 throw WrongDim(
"SolveCholesky",
10753 "The vector should have a dimension compatible "
10754 "with the matrix.");
10758 char uplo(
'U');
char trans(TransA.RevChar());
char diag(
'N');
10759 int n = A.GetM();
int nrhs = 1;
10760 if (!TransA.ConjTrans())
10763 ztptrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), X.GetData(),
10764 &n, &info.GetInfoRef());
10766 if (!TransA.ConjTrans())
10771 template<
class Prop,
class Allocator,
class Allocator2>
10772 void SolveCholesky(
const SeldonTranspose& TransA,
10773 const Matrix<complex<double>, Prop, RowHerm, Allocator>& A,
10774 Vector<complex<double>, VectFull, Allocator2>& X,
10777 #ifdef SELDON_CHECK_BOUNDS
10778 if (X.GetM() != A.GetM())
10779 throw WrongDim(
"SolveCholesky",
10780 "The vector should have a dimension compatible "
10781 "with the matrix.");
10785 char uplo(
'L');
char trans(TransA.Char());
char diag(
'N');
10786 int n = A.GetM();
int nrhs = 1;
10788 ztrtrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), &n, X.GetData(),
10789 &n, &info.GetInfoRef());
10795 template<
class Prop,
class Allocator,
class Allocator2>
10796 void SolveCholesky(
const SeldonTranspose& TransA,
10797 const Matrix<complex<double>, Prop, ColHerm, Allocator>& A,
10798 Vector<complex<double>, VectFull, Allocator2>& X,
10801 #ifdef SELDON_CHECK_BOUNDS
10802 if (X.GetM() != A.GetM())
10803 throw WrongDim(
"SolveCholesky",
10804 "The vector should have a dimension compatible "
10805 "with the matrix.");
10809 char uplo(
'U');
char trans(TransA.RevChar());
char diag(
'N');
10810 int n = A.GetM();
int nrhs = 1;
10811 if (!TransA.ConjTrans())
10814 ztrtrs_(&uplo, &trans, &diag, &n, &nrhs, A.GetData(), &n, X.GetData(),
10815 &n, &info.GetInfoRef());
10817 if (!TransA.ConjTrans())
10830 template<
class Prop,
class Allocator,
class Allocator2>
10831 void MltCholesky(
const SeldonTranspose& TransA,
10832 const Matrix<double, Prop, RowSymPacked, Allocator>& A,
10833 Vector<double, VectFull, Allocator2>& X,
10836 #ifdef SELDON_CHECK_BOUNDS
10837 if (X.GetM() != A.GetM())
10838 throw WrongDim(
"MltCholesky",
10839 "The vector should have a dimension compatible "
10840 "with the matrix.");
10844 if (TransA.Trans())
10845 cblas_dtpmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
10846 A.GetM(), A.GetData(), X.GetData(), 1);
10848 cblas_dtpmv(CblasRowMajor, CblasUpper, CblasTrans, CblasNonUnit,
10849 A.GetM(), A.GetData(), X.GetData(), 1);
10853 template<
class Prop,
class Allocator,
class Allocator2>
10854 void MltCholesky(
const SeldonTranspose& TransA,
10855 const Matrix<double, Prop, ColSymPacked, Allocator>& A,
10856 Vector<double, VectFull, Allocator2>& X,
10859 #ifdef SELDON_CHECK_BOUNDS
10860 if (X.GetM() != A.GetM())
10861 throw WrongDim(
"MltCholesky",
10862 "The vector should have a dimension compatible "
10863 "with the matrix.");
10867 if (TransA.Trans())
10868 cblas_dtpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
10869 A.GetM(), A.GetData(), X.GetData(), 1);
10871 cblas_dtpmv(CblasColMajor, CblasUpper, CblasTrans, CblasNonUnit,
10872 A.GetM(), A.GetData(), X.GetData(), 1);
10876 template<
class Prop,
class Allocator,
class Allocator2>
10877 void MltCholesky(
const SeldonTranspose& TransA,
10878 const Matrix<double, Prop, RowSym, Allocator>& A,
10879 Vector<double, VectFull, Allocator2>& X,
10882 #ifdef SELDON_CHECK_BOUNDS
10883 if (X.GetM() != A.GetM())
10884 throw WrongDim(
"MltCholesky",
10885 "The vector should have a dimension compatible "
10886 "with the matrix.");
10890 if (TransA.Trans())
10891 cblas_dtrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
10892 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
10894 cblas_dtrmv(CblasRowMajor, CblasUpper, CblasTrans, CblasNonUnit,
10895 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
10899 template<
class Prop,
class Allocator,
class Allocator2>
10900 void MltCholesky(
const SeldonTranspose& TransA,
10901 const Matrix<double, Prop, ColSym, Allocator>& A,
10902 Vector<double, VectFull, Allocator2>& X,
10905 #ifdef SELDON_CHECK_BOUNDS
10906 if (X.GetM() != A.GetM())
10907 throw WrongDim(
"MltCholesky",
10908 "The vector should have a dimension compatible "
10909 "with the matrix.");
10913 if (TransA.Trans())
10914 cblas_dtrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
10915 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
10917 cblas_dtrmv(CblasColMajor, CblasUpper, CblasTrans, CblasNonUnit,
10918 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
10922 template<
class Prop,
class Allocator,
class Allocator2>
10923 void MltCholesky(
const SeldonTranspose& TransA,
10924 const Matrix<complex<double>,
10925 Prop, RowHermPacked, Allocator>& A,
10926 Vector<complex<double>, VectFull, Allocator2>& X,
10929 #ifdef SELDON_CHECK_BOUNDS
10930 if (X.GetM() != A.GetM())
10931 throw WrongDim(
"MltCholesky",
10932 "The vector should have a dimension compatible "
10933 "with the matrix.");
10937 if (TransA.ConjTrans())
10939 cblas_ztpmv(CblasColMajor, CblasLower, CblasTrans, CblasNonUnit,
10940 A.GetM(), A.GetData(), X.GetData(), 1);
10942 else if (TransA.Trans())
10945 cblas_ztpmv(CblasColMajor, CblasLower, CblasTrans, CblasNonUnit,
10946 A.GetM(), A.GetData(), X.GetData(), 1);
10953 cblas_ztpmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
10954 A.GetM(), A.GetData(), X.GetData(), 1);
10962 template<
class Prop,
class Allocator,
class Allocator2>
10963 void MltCholesky(
const SeldonTranspose& TransA,
10964 const Matrix<complex<double>,
10965 Prop, ColHermPacked, Allocator>& A,
10966 Vector<complex<double>, VectFull, Allocator2>& X,
10969 #ifdef SELDON_CHECK_BOUNDS
10970 if (X.GetM() != A.GetM())
10971 throw WrongDim(
"MltCholesky",
10972 "The vector should have a dimension compatible "
10973 "with the matrix.");
10977 if (TransA.ConjTrans())
10979 cblas_ztpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
10980 A.GetM(), A.GetData(), X.GetData(), 1);
10982 else if (TransA.Trans())
10985 cblas_ztpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
10986 A.GetM(), A.GetData(), X.GetData(), 1);
10992 cblas_ztpmv(CblasColMajor, CblasUpper, CblasTrans, CblasNonUnit,
10993 A.GetM(), A.GetData(), X.GetData(), 1);
11000 template<
class Prop,
class Allocator,
class Allocator2>
11001 void MltCholesky(
const SeldonTranspose& TransA,
11002 const Matrix<complex<double>,
11003 Prop, RowHerm, Allocator>& A,
11004 Vector<complex<double>, VectFull, Allocator2>& X,
11007 #ifdef SELDON_CHECK_BOUNDS
11008 if (X.GetM() != A.GetM())
11009 throw WrongDim(
"MltCholesky",
11010 "The vector should have a dimension compatible "
11011 "with the matrix.");
11015 if (TransA.ConjTrans())
11017 cblas_ztrmv(CblasColMajor, CblasLower, CblasTrans, CblasNonUnit,
11018 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
11020 else if (TransA.Trans())
11023 cblas_ztrmv(CblasColMajor, CblasLower, CblasTrans, CblasNonUnit,
11024 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
11031 cblas_ztrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
11032 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
11040 template<
class Prop,
class Allocator,
class Allocator2>
11041 void MltCholesky(
const SeldonTranspose& TransA,
11042 const Matrix<complex<double>,
11043 Prop, ColHerm, Allocator>& A,
11044 Vector<complex<double>, VectFull, Allocator2>& X,
11047 #ifdef SELDON_CHECK_BOUNDS
11048 if (X.GetM() != A.GetM())
11049 throw WrongDim(
"MltCholesky",
11050 "The vector should have a dimension compatible "
11051 "with the matrix.");
11055 if (TransA.ConjTrans())
11057 cblas_ztrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
11058 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
11060 else if (TransA.Trans())
11063 cblas_ztrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
11064 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
11070 cblas_ztrmv(CblasColMajor, CblasUpper, CblasTrans, CblasNonUnit,
11071 A.GetM(), A.GetData(), A.GetM(), X.GetData(), 1);
11084 template<
class T,
class Prop,
class Storage,
class Allocator,
11085 class Allocator1,
class Allocator2>
11087 Vector<int, VectFull, Allocator1>& P,
11088 Vector<T, VectFull, Allocator2>& b,
11098 #define SELDON_FILE_LAPACK_LINEAREQUATIONS_CXX