21 #ifndef SELDON_FILE_BLAS_2_CXX
38 template <
class Prop0,
class Allocator0,
40 void Mlt(
const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
41 Vector<float, VectFull, Allocator1>& X)
44 #ifdef SELDON_CHECK_DIMENSIONS
48 cblas_strmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
49 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
53 template <
class Prop0,
class Allocator0,
55 void Mlt(
const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
56 Vector<double, VectFull, Allocator1>& X)
59 #ifdef SELDON_CHECK_DIMENSIONS
63 cblas_dtrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
64 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
68 template <
class Prop0,
class Allocator0,
71 Mlt(
const Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,
72 Vector<complex<float>, VectFull, Allocator1>& X)
75 #ifdef SELDON_CHECK_DIMENSIONS
79 cblas_ctrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
80 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
81 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
85 template <
class Prop0,
class Allocator0,
88 Mlt(
const Matrix<complex<double>, Prop0, ColUpTriang, Allocator0>& A,
89 Vector<complex<double>, VectFull, Allocator1>& X)
92 #ifdef SELDON_CHECK_DIMENSIONS
96 cblas_ztrmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
97 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
98 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
105 template <
class Prop0,
class Allocator0,
107 void Mlt(
const SeldonTranspose& TransA,
108 const SeldonDiag& DiagA,
109 const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
110 Vector<float, VectFull, Allocator1>& X)
113 #ifdef SELDON_CHECK_DIMENSIONS
114 CheckDim(A, X,
"Mlt(status, diag, M, X)");
117 cblas_strmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
118 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
122 template <
class Prop0,
class Allocator0,
124 void Mlt(
const SeldonTranspose& TransA,
125 const SeldonDiag& DiagA,
126 const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
127 Vector<double, VectFull, Allocator1>& X)
130 #ifdef SELDON_CHECK_DIMENSIONS
131 CheckDim(A, X,
"Mlt(status, diag, M, X)");
134 cblas_dtrmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
135 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
139 template <
class Prop0,
class Allocator0,
142 Mlt(
const SeldonTranspose& TransA,
143 const SeldonDiag& DiagA,
144 const Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,
145 Vector<complex<float>, VectFull, Allocator1>& X)
148 #ifdef SELDON_CHECK_DIMENSIONS
149 CheckDim(A, X,
"Mlt(status, diag, M, X)");
152 cblas_ctrmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
153 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
154 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
158 template <
class Prop0,
class Allocator0,
161 Mlt(
const SeldonTranspose& TransA,
162 const SeldonDiag& DiagA,
163 const Matrix<complex<double>, Prop0, ColUpTriang, Allocator0>& A,
164 Vector<complex<double>, VectFull, Allocator1>& X)
167 #ifdef SELDON_CHECK_DIMENSIONS
168 CheckDim(A, X,
"Mlt(status, diag, M, X)");
171 cblas_ztrmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
172 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
173 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
180 template <
class Prop0,
class Allocator0,
182 void Mlt(
const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
183 Vector<float, VectFull, Allocator1>& X)
186 #ifdef SELDON_CHECK_DIMENSIONS
190 cblas_strmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
191 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
195 template <
class Prop0,
class Allocator0,
197 void Mlt(
const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
198 Vector<double, VectFull, Allocator1>& X)
201 #ifdef SELDON_CHECK_DIMENSIONS
205 cblas_dtrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
206 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
210 template <
class Prop0,
class Allocator0,
213 Mlt(
const Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,
214 Vector<complex<float>, VectFull, Allocator1>& X)
217 #ifdef SELDON_CHECK_DIMENSIONS
221 cblas_ctrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
222 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
223 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
227 template <
class Prop0,
class Allocator0,
230 Mlt(
const Matrix<complex<double>, Prop0, ColLoTriang, Allocator0>& A,
231 Vector<complex<double>, VectFull, Allocator1>& X)
234 #ifdef SELDON_CHECK_DIMENSIONS
238 cblas_ztrmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
239 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
240 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
247 template <
class Prop0,
class Allocator0,
249 void Mlt(
const SeldonTranspose& TransA,
250 const SeldonDiag& DiagA,
251 const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
252 Vector<float, VectFull, Allocator1>& X)
255 #ifdef SELDON_CHECK_DIMENSIONS
256 CheckDim(A, X,
"Mlt(status, diag, M, X)");
259 cblas_strmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
260 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
264 template <
class Prop0,
class Allocator0,
266 void Mlt(
const SeldonTranspose& TransA,
267 const SeldonDiag& DiagA,
268 const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
269 Vector<double, VectFull, Allocator1>& X)
272 #ifdef SELDON_CHECK_DIMENSIONS
273 CheckDim(A, X,
"Mlt(status, diag, M, X)");
276 cblas_dtrmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
277 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
281 template <
class Prop0,
class Allocator0,
284 Mlt(
const SeldonTranspose& TransA,
285 const SeldonDiag& DiagA,
286 const Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,
287 Vector<complex<float>, VectFull, Allocator1>& X)
290 #ifdef SELDON_CHECK_DIMENSIONS
291 CheckDim(A, X,
"Mlt(status, diag, M, X)");
294 cblas_ctrmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
295 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
296 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
300 template <
class Prop0,
class Allocator0,
303 Mlt(
const SeldonTranspose& TransA,
304 const SeldonDiag& DiagA,
305 const Matrix<complex<double>, Prop0, ColLoTriang, Allocator0>& A,
306 Vector<complex<double>, VectFull, Allocator1>& X)
309 #ifdef SELDON_CHECK_DIMENSIONS
310 CheckDim(A, X,
"Mlt(status, diag, M, X)");
313 cblas_ztrmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
314 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
315 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
322 template <
class Prop0,
class Allocator0,
324 void Mlt(
const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
325 Vector<float, VectFull, Allocator1>& X)
328 #ifdef SELDON_CHECK_DIMENSIONS
332 cblas_strmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
333 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
337 template <
class Prop0,
class Allocator0,
339 void Mlt(
const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
340 Vector<double, VectFull, Allocator1>& X)
343 #ifdef SELDON_CHECK_DIMENSIONS
347 cblas_dtrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
348 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
352 template <
class Prop0,
class Allocator0,
355 Mlt(
const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
356 Vector<complex<float>, VectFull, Allocator1>& X)
359 #ifdef SELDON_CHECK_DIMENSIONS
363 cblas_ctrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
364 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
365 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
369 template <
class Prop0,
class Allocator0,
372 Mlt(
const Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,
373 Vector<complex<double>, VectFull, Allocator1>& X)
376 #ifdef SELDON_CHECK_DIMENSIONS
380 cblas_ztrmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
381 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
382 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
389 template <
class Prop0,
class Allocator0,
391 void Mlt(
const SeldonTranspose& TransA,
392 const SeldonDiag& DiagA,
393 const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
394 Vector<float, VectFull, Allocator1>& X)
397 #ifdef SELDON_CHECK_DIMENSIONS
398 CheckDim(A, X,
"Mlt(status, diag, M, X)");
401 cblas_strmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
402 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
406 template <
class Prop0,
class Allocator0,
408 void Mlt(
const SeldonTranspose& TransA,
409 const SeldonDiag& DiagA,
410 const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
411 Vector<double, VectFull, Allocator1>& X)
414 #ifdef SELDON_CHECK_DIMENSIONS
415 CheckDim(A, X,
"Mlt(status, diag, M, X)");
418 cblas_dtrmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
419 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
423 template <
class Prop0,
class Allocator0,
426 Mlt(
const SeldonTranspose& TransA,
427 const SeldonDiag& DiagA,
428 const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
429 Vector<complex<float>, VectFull, Allocator1>& X)
432 #ifdef SELDON_CHECK_DIMENSIONS
433 CheckDim(A, X,
"Mlt(status, diag, M, X)");
436 cblas_ctrmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
437 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
438 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
442 template <
class Prop0,
class Allocator0,
445 Mlt(
const SeldonTranspose& TransA,
446 const SeldonDiag& DiagA,
447 const Matrix<complex<double>, Prop0, RowUpTriang, Allocator0>& A,
448 Vector<complex<double>, VectFull, Allocator1>& X)
451 #ifdef SELDON_CHECK_DIMENSIONS
452 CheckDim(A, X,
"Mlt(status, diag, M, X)");
455 cblas_ztrmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
456 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
457 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
464 template <
class Prop0,
class Allocator0,
466 void Mlt(
const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
467 Vector<float, VectFull, Allocator1>& X)
470 #ifdef SELDON_CHECK_DIMENSIONS
474 cblas_strmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
475 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
479 template <
class Prop0,
class Allocator0,
481 void Mlt(
const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
482 Vector<double, VectFull, Allocator1>& X)
485 #ifdef SELDON_CHECK_DIMENSIONS
489 cblas_dtrmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
490 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
494 template <
class Prop0,
class Allocator0,
497 Mlt(
const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
498 Vector<complex<float>, VectFull, Allocator1>& X)
501 #ifdef SELDON_CHECK_DIMENSIONS
505 cblas_ctrmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
506 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
507 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
511 template <
class Prop0,
class Allocator0,
514 Mlt(
const Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,
515 Vector<complex<double>, VectFull, Allocator1>& X)
518 #ifdef SELDON_CHECK_DIMENSIONS
522 cblas_ztrmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
523 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
524 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
531 template <
class Prop0,
class Allocator0,
533 void Mlt(
const SeldonTranspose& TransA,
534 const SeldonDiag& DiagA,
535 const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
536 Vector<float, VectFull, Allocator1>& X)
539 #ifdef SELDON_CHECK_DIMENSIONS
540 CheckDim(A, X,
"Mlt(status, diag, M, X)");
543 cblas_strmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
544 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
548 template <
class Prop0,
class Allocator0,
550 void Mlt(
const SeldonTranspose& TransA,
551 const SeldonDiag& DiagA,
552 const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
553 Vector<double, VectFull, Allocator1>& X)
556 #ifdef SELDON_CHECK_DIMENSIONS
557 CheckDim(A, X,
"Mlt(status, diag, M, X)");
560 cblas_dtrmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
561 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
565 template <
class Prop0,
class Allocator0,
568 Mlt(
const SeldonTranspose& TransA,
569 const SeldonDiag& DiagA,
570 const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
571 Vector<complex<float>, VectFull, Allocator1>& X)
574 #ifdef SELDON_CHECK_DIMENSIONS
575 CheckDim(A, X,
"Mlt(status, diag, M, X)");
578 cblas_ctrmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
579 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
580 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
584 template <
class Prop0,
class Allocator0,
587 Mlt(
const SeldonTranspose& TransA,
588 const SeldonDiag& DiagA,
589 const Matrix<complex<double>, Prop0, RowLoTriang, Allocator0>& A,
590 Vector<complex<double>, VectFull, Allocator1>& X)
593 #ifdef SELDON_CHECK_DIMENSIONS
594 CheckDim(A, X,
"Mlt(status, diag, M, X)");
597 cblas_ztrmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
598 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
599 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
606 template <
class Prop0,
class Allocator0,
608 void Mlt(
const Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
609 Vector<float, VectFull, Allocator1>& X)
612 #ifdef SELDON_CHECK_DIMENSIONS
616 cblas_stpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
617 A.GetN(), A.GetData(), X.GetData(), 1);
621 template <
class Prop0,
class Allocator0,
623 void Mlt(
const Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
624 Vector<double, VectFull, Allocator1>& X)
627 #ifdef SELDON_CHECK_DIMENSIONS
631 cblas_dtpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
632 A.GetN(), A.GetData(), X.GetData(), 1);
636 template <
class Prop0,
class Allocator0,
639 Mlt(
const Matrix<complex<float>, Prop0, ColUpTriangPacked, Allocator0>& A,
640 Vector<complex<float>, VectFull, Allocator1>& X)
643 #ifdef SELDON_CHECK_DIMENSIONS
647 cblas_ctpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
648 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
649 reinterpret_cast<void*
>(X.GetData()), 1);
653 template <
class Prop0,
class Allocator0,
656 Mlt(
const Matrix<complex<double>, Prop0, ColUpTriangPacked, Allocator0>& A,
657 Vector<complex<double>, VectFull, Allocator1>& X)
660 #ifdef SELDON_CHECK_DIMENSIONS
664 cblas_ztpmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
665 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
666 reinterpret_cast<void*
>(X.GetData()), 1);
673 template <
class Prop0,
class Allocator0,
675 void Mlt(
const SeldonTranspose& TransA,
676 const SeldonDiag& DiagA,
677 const Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
678 Vector<float, VectFull, Allocator1>& X)
681 #ifdef SELDON_CHECK_DIMENSIONS
682 CheckDim(A, X,
"Mlt(status, diag, M, X)");
685 cblas_stpmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
686 A.GetN(), A.GetData(), X.GetData(), 1);
690 template <
class Prop0,
class Allocator0,
692 void Mlt(
const SeldonTranspose& TransA,
693 const SeldonDiag& DiagA,
694 const Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
695 Vector<double, VectFull, Allocator1>& X)
698 #ifdef SELDON_CHECK_DIMENSIONS
699 CheckDim(A, X,
"Mlt(status, diag, M, X)");
702 cblas_dtpmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
703 A.GetN(), A.GetData(), X.GetData(), 1);
707 template <
class Prop0,
class Allocator0,
710 Mlt(
const SeldonTranspose& TransA,
711 const SeldonDiag& DiagA,
712 const Matrix<complex<float>, Prop0, ColUpTriangPacked, Allocator0>& A,
713 Vector<complex<float>, VectFull, Allocator1>& X)
716 #ifdef SELDON_CHECK_DIMENSIONS
717 CheckDim(A, X,
"Mlt(status, diag, M, X)");
720 cblas_ctpmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
721 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
722 reinterpret_cast<void*
>(X.GetData()), 1);
726 template <
class Prop0,
class Allocator0,
729 Mlt(
const SeldonTranspose& TransA,
730 const SeldonDiag& DiagA,
731 const Matrix<complex<double>, Prop0, ColUpTriangPacked, Allocator0>& A,
732 Vector<complex<double>, VectFull, Allocator1>& X)
735 #ifdef SELDON_CHECK_DIMENSIONS
736 CheckDim(A, X,
"Mlt(status, diag, M, X)");
739 cblas_ztpmv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
740 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
741 reinterpret_cast<void*
>(X.GetData()), 1);
748 template <
class Prop0,
class Allocator0,
750 void Mlt(
const Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
751 Vector<float, VectFull, Allocator1>& X)
754 #ifdef SELDON_CHECK_DIMENSIONS
758 cblas_stpmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
759 A.GetN(), A.GetData(), X.GetData(), 1);
763 template <
class Prop0,
class Allocator0,
765 void Mlt(
const Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
766 Vector<double, VectFull, Allocator1>& X)
769 #ifdef SELDON_CHECK_DIMENSIONS
773 cblas_dtpmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
774 A.GetN(), A.GetData(), X.GetData(), 1);
778 template <
class Prop0,
class Allocator0,
781 Mlt(
const Matrix<complex<float>, Prop0, ColLoTriangPacked, Allocator0>& A,
782 Vector<complex<float>, VectFull, Allocator1>& X)
785 #ifdef SELDON_CHECK_DIMENSIONS
789 cblas_ctpmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
790 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
791 reinterpret_cast<void*
>(X.GetData()), 1);
795 template <
class Prop0,
class Allocator0,
798 Mlt(
const Matrix<complex<double>, Prop0, ColLoTriangPacked, Allocator0>& A,
799 Vector<complex<double>, VectFull, Allocator1>& X)
802 #ifdef SELDON_CHECK_DIMENSIONS
806 cblas_ztpmv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
807 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
808 reinterpret_cast<void*
>(X.GetData()), 1);
815 template <
class Prop0,
class Allocator0,
817 void Mlt(
const SeldonTranspose& TransA,
818 const SeldonDiag& DiagA,
819 const Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
820 Vector<float, VectFull, Allocator1>& X)
823 #ifdef SELDON_CHECK_DIMENSIONS
824 CheckDim(A, X,
"Mlt(status, diag, M, X)");
827 cblas_stpmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
828 A.GetN(), A.GetData(), X.GetData(), 1);
832 template <
class Prop0,
class Allocator0,
834 void Mlt(
const SeldonTranspose& TransA,
835 const SeldonDiag& DiagA,
836 const Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
837 Vector<double, VectFull, Allocator1>& X)
840 #ifdef SELDON_CHECK_DIMENSIONS
841 CheckDim(A, X,
"Mlt(status, diag, M, X)");
844 cblas_dtpmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
845 A.GetN(), A.GetData(), X.GetData(), 1);
849 template <
class Prop0,
class Allocator0,
852 Mlt(
const SeldonTranspose& TransA,
853 const SeldonDiag& DiagA,
854 const Matrix<complex<float>, Prop0, ColLoTriangPacked, Allocator0>& A,
855 Vector<complex<float>, VectFull, Allocator1>& X)
858 #ifdef SELDON_CHECK_DIMENSIONS
859 CheckDim(A, X,
"Mlt(status, diag, M, X)");
862 cblas_ctpmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
863 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
864 reinterpret_cast<void*
>(X.GetData()), 1);
868 template <
class Prop0,
class Allocator0,
871 Mlt(
const SeldonTranspose& TransA,
872 const SeldonDiag& DiagA,
873 const Matrix<complex<double>, Prop0, ColLoTriangPacked, Allocator0>& A,
874 Vector<complex<double>, VectFull, Allocator1>& X)
877 #ifdef SELDON_CHECK_DIMENSIONS
878 CheckDim(A, X,
"Mlt(status, diag, M, X)");
881 cblas_ztpmv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
882 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
883 reinterpret_cast<void*
>(X.GetData()), 1);
890 template <
class Prop0,
class Allocator0,
892 void Mlt(
const Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
893 Vector<float, VectFull, Allocator1>& X)
896 #ifdef SELDON_CHECK_DIMENSIONS
900 cblas_stpmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
901 A.GetN(), A.GetData(), X.GetData(), 1);
905 template <
class Prop0,
class Allocator0,
907 void Mlt(
const Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
908 Vector<double, VectFull, Allocator1>& X)
911 #ifdef SELDON_CHECK_DIMENSIONS
915 cblas_dtpmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
916 A.GetN(), A.GetData(), X.GetData(), 1);
920 template <
class Prop0,
class Allocator0,
923 Mlt(
const Matrix<complex<float>, Prop0, RowUpTriangPacked, Allocator0>& A,
924 Vector<complex<float>, VectFull, Allocator1>& X)
927 #ifdef SELDON_CHECK_DIMENSIONS
931 cblas_ctpmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
932 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
933 reinterpret_cast<void*
>(X.GetData()), 1);
937 template <
class Prop0,
class Allocator0,
940 Mlt(
const Matrix<complex<double>, Prop0, RowUpTriangPacked, Allocator0>& A,
941 Vector<complex<double>, VectFull, Allocator1>& X)
944 #ifdef SELDON_CHECK_DIMENSIONS
948 cblas_ztpmv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
949 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
950 reinterpret_cast<void*
>(X.GetData()), 1);
957 template <
class Prop0,
class Allocator0,
959 void Mlt(
const SeldonTranspose& TransA,
960 const SeldonDiag& DiagA,
961 const Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
962 Vector<float, VectFull, Allocator1>& X)
965 #ifdef SELDON_CHECK_DIMENSIONS
966 CheckDim(A, X,
"Mlt(status, diag, M, X)");
969 cblas_stpmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
970 A.GetN(), A.GetData(), X.GetData(), 1);
974 template <
class Prop0,
class Allocator0,
976 void Mlt(
const SeldonTranspose& TransA,
977 const SeldonDiag& DiagA,
978 const Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
979 Vector<double, VectFull, Allocator1>& X)
982 #ifdef SELDON_CHECK_DIMENSIONS
983 CheckDim(A, X,
"Mlt(status, diag, M, X)");
986 cblas_dtpmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
987 A.GetN(), A.GetData(), X.GetData(), 1);
991 template <
class Prop0,
class Allocator0,
994 Mlt(
const SeldonTranspose& TransA,
995 const SeldonDiag& DiagA,
996 const Matrix<complex<float>, Prop0, RowUpTriangPacked, Allocator0>& A,
997 Vector<complex<float>, VectFull, Allocator1>& X)
1000 #ifdef SELDON_CHECK_DIMENSIONS
1001 CheckDim(A, X,
"Mlt(status, diag, M, X)");
1004 cblas_ctpmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
1005 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
1006 reinterpret_cast<void*
>(X.GetData()), 1);
1010 template <
class Prop0,
class Allocator0,
1013 Mlt(
const SeldonTranspose& TransA,
1014 const SeldonDiag& DiagA,
1015 const Matrix<complex<double>, Prop0, RowUpTriangPacked, Allocator0>& A,
1016 Vector<complex<double>, VectFull, Allocator1>& X)
1019 #ifdef SELDON_CHECK_DIMENSIONS
1020 CheckDim(A, X,
"Mlt(status, diag, M, X)");
1023 cblas_ztpmv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
1024 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
1025 reinterpret_cast<void*
>(X.GetData()), 1);
1032 template <
class Prop0,
class Allocator0,
1034 void Mlt(
const Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
1035 Vector<float, VectFull, Allocator1>& X)
1038 #ifdef SELDON_CHECK_DIMENSIONS
1042 cblas_stpmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
1043 A.GetN(), A.GetData(), X.GetData(), 1);
1047 template <
class Prop0,
class Allocator0,
1049 void Mlt(
const Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
1050 Vector<double, VectFull, Allocator1>& X)
1053 #ifdef SELDON_CHECK_DIMENSIONS
1057 cblas_dtpmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
1058 A.GetN(), A.GetData(), X.GetData(), 1);
1062 template <
class Prop0,
class Allocator0,
1065 Mlt(
const Matrix<complex<float>, Prop0, RowLoTriangPacked, Allocator0>& A,
1066 Vector<complex<float>, VectFull, Allocator1>& X)
1069 #ifdef SELDON_CHECK_DIMENSIONS
1073 cblas_ctpmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
1074 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
1075 reinterpret_cast<void*
>(X.GetData()), 1);
1079 template <
class Prop0,
class Allocator0,
1082 Mlt(
const Matrix<complex<double>, Prop0, RowLoTriangPacked, Allocator0>& A,
1083 Vector<complex<double>, VectFull, Allocator1>& X)
1086 #ifdef SELDON_CHECK_DIMENSIONS
1090 cblas_ztpmv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
1091 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
1092 reinterpret_cast<void*
>(X.GetData()), 1);
1099 template <
class Prop0,
class Allocator0,
1101 void Mlt(
const SeldonTranspose& TransA,
1102 const SeldonDiag& DiagA,
1103 const Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
1104 Vector<float, VectFull, Allocator1>& X)
1107 #ifdef SELDON_CHECK_DIMENSIONS
1108 CheckDim(A, X,
"Mlt(status, diag, M, X)");
1111 cblas_stpmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
1112 A.GetN(), A.GetData(), X.GetData(), 1);
1116 template <
class Prop0,
class Allocator0,
1118 void Mlt(
const SeldonTranspose& TransA,
1119 const SeldonDiag& DiagA,
1120 const Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
1121 Vector<double, VectFull, Allocator1>& X)
1124 #ifdef SELDON_CHECK_DIMENSIONS
1125 CheckDim(A, X,
"Mlt(status, diag, M, X)");
1128 cblas_dtpmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
1129 A.GetN(), A.GetData(), X.GetData(), 1);
1133 template <
class Prop0,
class Allocator0,
1136 Mlt(
const SeldonTranspose& TransA,
1137 const SeldonDiag& DiagA,
1138 const Matrix<complex<float>, Prop0, RowLoTriangPacked, Allocator0>& A,
1139 Vector<complex<float>, VectFull, Allocator1>& X)
1142 #ifdef SELDON_CHECK_DIMENSIONS
1143 CheckDim(A, X,
"Mlt(status, diag, M, X)");
1146 cblas_ctpmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
1147 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
1148 reinterpret_cast<void*
>(X.GetData()), 1);
1152 template <
class Prop0,
class Allocator0,
1155 Mlt(
const SeldonTranspose& TransA,
1156 const SeldonDiag& DiagA,
1157 const Matrix<complex<double>, Prop0, RowLoTriangPacked, Allocator0>& A,
1158 Vector<complex<double>, VectFull, Allocator1>& X)
1161 #ifdef SELDON_CHECK_DIMENSIONS
1162 CheckDim(A, X,
"Mlt(status, diag, M, X)");
1165 cblas_ztpmv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
1166 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
1167 reinterpret_cast<void*
>(X.GetData()), 1);
1185 template <
class Prop0,
class Allocator0,
1186 class Allocator1,
class Allocator2>
1187 void MltAddVector(
const float& alpha,
1188 const Matrix<float, Prop0, ColMajor, Allocator0>& A,
1189 const Vector<float, VectFull, Allocator1>& X,
1191 Vector<float, VectFull, Allocator2>& Y)
1194 #ifdef SELDON_CHECK_DIMENSIONS
1195 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1198 cblas_sgemv(CblasColMajor, CblasNoTrans,
1199 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1200 X.GetData(), 1, beta, Y.GetData(), 1);
1204 template <
class Prop0,
class Allocator0,
1205 class Allocator1,
class Allocator2>
1206 void MltAddVector(
const double& alpha,
1207 const Matrix<double, Prop0, ColMajor, Allocator0>& A,
1208 const Vector<double, VectFull, Allocator1>& X,
1210 Vector<double, VectFull, Allocator2>& Y)
1213 #ifdef SELDON_CHECK_DIMENSIONS
1214 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1217 cblas_dgemv(CblasColMajor, CblasNoTrans,
1218 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1219 X.GetData(), 1, beta, Y.GetData(), 1);
1223 template <
class Prop0,
class Allocator0,
1224 class Allocator1,
class Allocator2>
1225 void MltAddVector(
const complex<float>& alpha,
1226 const Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A,
1227 const Vector<complex<float>, VectFull, Allocator1>& X,
1228 const complex<float>& beta,
1229 Vector<complex<float>, VectFull, Allocator2>& Y)
1232 #ifdef SELDON_CHECK_DIMENSIONS
1233 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1236 cblas_cgemv(CblasColMajor, CblasNoTrans,
1237 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1238 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1239 reinterpret_cast<const void*
>(X.GetData()), 1,
1240 reinterpret_cast<const void*
>(&beta),
1241 reinterpret_cast<void*
>(Y.GetData()), 1);
1245 template <
class Prop0,
class Allocator0,
1246 class Allocator1,
class Allocator2>
1247 void MltAddVector(
const complex<double>& alpha,
1248 const Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A,
1249 const Vector<complex<double>, VectFull, Allocator1>& X,
1250 const complex<double>& beta,
1251 Vector<complex<double>, VectFull, Allocator2>& Y)
1254 #ifdef SELDON_CHECK_DIMENSIONS
1255 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1258 cblas_zgemv(CblasColMajor, CblasNoTrans,
1259 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1260 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1261 reinterpret_cast<const void*
>(X.GetData()), 1,
1262 reinterpret_cast<const void*
>(&beta),
1263 reinterpret_cast<void*
>(Y.GetData()), 1);
1270 template <
class Prop0,
class Allocator0,
1271 class Allocator1,
class Allocator2>
1272 void MltAddVector(
const float& alpha,
1273 const SeldonTranspose& TransA,
1274 const Matrix<float, Prop0, ColMajor, Allocator0>& A,
1275 const Vector<float, VectFull, Allocator1>& X,
1277 Vector<float, VectFull, Allocator2>& Y)
1280 #ifdef SELDON_CHECK_DIMENSIONS
1281 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1284 cblas_sgemv(CblasColMajor, TransA.Cblas(),
1285 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1286 X.GetData(), 1, beta, Y.GetData(), 1);
1290 template <
class Prop0,
class Allocator0,
1291 class Allocator1,
class Allocator2>
1292 void MltAddVector(
const double& alpha,
1293 const SeldonTranspose& TransA,
1294 const Matrix<double, Prop0, ColMajor, Allocator0>& A,
1295 const Vector<double, VectFull, Allocator1>& X,
1297 Vector<double, VectFull, Allocator2>& Y)
1300 #ifdef SELDON_CHECK_DIMENSIONS
1301 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1304 cblas_dgemv(CblasColMajor, TransA.Cblas(),
1305 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1306 X.GetData(), 1, beta, Y.GetData(), 1);
1310 template <
class Prop0,
class Allocator0,
1311 class Allocator1,
class Allocator2>
1312 void MltAddVector(
const complex<float>& alpha,
1313 const SeldonTranspose& TransA,
1314 const Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A,
1315 const Vector<complex<float>, VectFull, Allocator1>& X,
1316 const complex<float>& beta,
1317 Vector<complex<float>, VectFull, Allocator2>& Y)
1320 #ifdef SELDON_CHECK_DIMENSIONS
1321 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1324 cblas_cgemv(CblasColMajor, TransA.Cblas(),
1325 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1326 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1327 reinterpret_cast<const void*
>(X.GetData()), 1,
1328 reinterpret_cast<const void*
>(&beta),
1329 reinterpret_cast<void*
>(Y.GetData()), 1);
1333 template <
class Prop0,
class Allocator0,
1334 class Allocator1,
class Allocator2>
1335 void MltAddVector(
const complex<double>& alpha,
1336 const SeldonTranspose& TransA,
1337 const Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A,
1338 const Vector<complex<double>, VectFull, Allocator1>& X,
1339 const complex<double>& beta,
1340 Vector<complex<double>, VectFull, Allocator2>& Y)
1343 #ifdef SELDON_CHECK_DIMENSIONS
1344 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1347 cblas_zgemv(CblasColMajor, TransA.Cblas(),
1348 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1349 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1350 reinterpret_cast<const void*
>(X.GetData()), 1,
1351 reinterpret_cast<const void*
>(&beta),
1352 reinterpret_cast<void*
>(Y.GetData()), 1);
1359 template <
class Prop0,
class Allocator0,
1360 class Allocator1,
class Allocator2>
1361 void MltAddVector(
const float& alpha,
1362 const Matrix<float, Prop0, RowMajor, Allocator0>& A,
1363 const Vector<float, VectFull, Allocator1>& X,
1365 Vector<float, VectFull, Allocator2>& Y)
1368 #ifdef SELDON_CHECK_DIMENSIONS
1369 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1372 cblas_sgemv(CblasRowMajor, CblasNoTrans,
1373 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1374 X.GetData(), 1, beta, Y.GetData(), 1);
1378 template <
class Prop0,
class Allocator0,
1379 class Allocator1,
class Allocator2>
1380 void MltAddVector(
const double& alpha,
1381 const Matrix<double, Prop0, RowMajor, Allocator0>& A,
1382 const Vector<double, VectFull, Allocator1>& X,
1384 Vector<double, VectFull, Allocator2>& Y)
1387 #ifdef SELDON_CHECK_DIMENSIONS
1388 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1391 cblas_dgemv(CblasRowMajor, CblasNoTrans,
1392 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1393 X.GetData(), 1, beta, Y.GetData(), 1);
1397 template <
class Prop0,
class Allocator0,
1398 class Allocator1,
class Allocator2>
1399 void MltAddVector(
const complex<float>& alpha,
1400 const Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A,
1401 const Vector<complex<float>, VectFull, Allocator1>& X,
1402 const complex<float>& beta,
1403 Vector<complex<float>, VectFull, Allocator2>& Y)
1406 #ifdef SELDON_CHECK_DIMENSIONS
1407 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1410 cblas_cgemv(CblasRowMajor, CblasNoTrans,
1411 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1412 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1413 reinterpret_cast<const void*
>(X.GetData()), 1,
1414 reinterpret_cast<const void*
>(&beta),
1415 reinterpret_cast<void*
>(Y.GetData()), 1);
1419 template <
class Prop0,
class Allocator0,
1420 class Allocator1,
class Allocator2>
1421 void MltAddVector(
const complex<double>& alpha,
1422 const Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A,
1423 const Vector<complex<double>, VectFull, Allocator1>& X,
1424 const complex<double>& beta,
1425 Vector<complex<double>, VectFull, Allocator2>& Y)
1428 #ifdef SELDON_CHECK_DIMENSIONS
1429 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1432 cblas_zgemv(CblasRowMajor, CblasNoTrans,
1433 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1434 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1435 reinterpret_cast<const void*
>(X.GetData()), 1,
1436 reinterpret_cast<const void*
>(&beta),
1437 reinterpret_cast<void*
>(Y.GetData()), 1);
1444 template <
class Prop0,
class Allocator0,
1445 class Allocator1,
class Allocator2>
1446 void MltAddVector(
const float& alpha,
1447 const SeldonTranspose& TransA,
1448 const Matrix<float, Prop0, RowMajor, Allocator0>& A,
1449 const Vector<float, VectFull, Allocator1>& X,
1451 Vector<float, VectFull, Allocator2>& Y)
1454 #ifdef SELDON_CHECK_DIMENSIONS
1455 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1458 cblas_sgemv(CblasRowMajor, TransA.Cblas(),
1459 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1460 X.GetData(), 1, beta, Y.GetData(), 1);
1464 template <
class Prop0,
class Allocator0,
1465 class Allocator1,
class Allocator2>
1466 void MltAddVector(
const double& alpha,
1467 const SeldonTranspose& TransA,
1468 const Matrix<double, Prop0, RowMajor, Allocator0>& A,
1469 const Vector<double, VectFull, Allocator1>& X,
1471 Vector<double, VectFull, Allocator2>& Y)
1474 #ifdef SELDON_CHECK_DIMENSIONS
1475 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1478 cblas_dgemv(CblasRowMajor, TransA.Cblas(),
1479 A.GetM(), A.GetN(), alpha, A.GetData(), A.GetLD(),
1480 X.GetData(), 1, beta, Y.GetData(), 1);
1484 template <
class Prop0,
class Allocator0,
1485 class Allocator1,
class Allocator2>
1486 void MltAddVector(
const complex<float>& alpha,
1487 const SeldonTranspose& TransA,
1488 const Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A,
1489 const Vector<complex<float>, VectFull, Allocator1>& X,
1490 const complex<float>& beta,
1491 Vector<complex<float>, VectFull, Allocator2>& Y)
1494 #ifdef SELDON_CHECK_DIMENSIONS
1495 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1498 cblas_cgemv(CblasRowMajor, TransA.Cblas(),
1499 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1500 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1501 reinterpret_cast<const void*
>(X.GetData()), 1,
1502 reinterpret_cast<const void*
>(&beta),
1503 reinterpret_cast<void*
>(Y.GetData()), 1);
1507 template <
class Prop0,
class Allocator0,
1508 class Allocator1,
class Allocator2>
1509 void MltAddVector(
const complex<double>& alpha,
1510 const SeldonTranspose& TransA,
1511 const Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A,
1512 const Vector<complex<double>, VectFull, Allocator1>& X,
1513 const complex<double>& beta,
1514 Vector<complex<double>, VectFull, Allocator2>& Y)
1517 #ifdef SELDON_CHECK_DIMENSIONS
1518 CheckDim(TransA, A, X, Y,
"MltAdd(alpha, status, M, X, beta, Y)");
1521 cblas_zgemv(CblasRowMajor, TransA.Cblas(),
1522 A.GetM(), A.GetN(),
reinterpret_cast<const void*
>(&alpha),
1523 reinterpret_cast<const void*
>(A.GetData()), A.GetLD(),
1524 reinterpret_cast<const void*
>(X.GetData()), 1,
1525 reinterpret_cast<const void*
>(&beta),
1526 reinterpret_cast<void*
>(Y.GetData()), 1);
1535 template <
class Prop0,
class Allocator0,
1536 class Allocator1,
class Allocator2>
1537 void MltAddVector(
const complex<float>& alpha,
1538 const Matrix<complex<float>, Prop0, ColHerm, Allocator0>& A,
1539 const Vector<complex<float>, VectFull, Allocator1>& X,
1540 const complex<float>& beta,
1541 Vector<complex<float>, VectFull, Allocator2>& Y)
1544 #ifdef SELDON_CHECK_DIMENSIONS
1545 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1548 cblas_chemv(CblasColMajor, CblasUpper,
1549 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1550 A.GetDataConstVoid(), A.GetM(),
1551 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1552 Y.GetDataVoid(), 1);
1556 template <
class Prop0,
class Allocator0,
1557 class Allocator1,
class Allocator2>
1558 void MltAddVector(
const complex<double>& alpha,
1559 const Matrix<complex<double>, Prop0, ColHerm, Allocator0>& A,
1560 const Vector<complex<double>, VectFull, Allocator1>& X,
1561 const complex<double>& beta,
1562 Vector<complex<double>, VectFull, Allocator2>& Y)
1565 #ifdef SELDON_CHECK_DIMENSIONS
1566 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1569 cblas_zhemv(CblasColMajor, CblasUpper,
1570 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1571 A.GetDataConstVoid(), A.GetM(),
1572 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1573 Y.GetDataVoid(), 1);
1580 template <
class Prop0,
class Allocator0,
1581 class Allocator1,
class Allocator2>
1582 void MltAdd(
const complex<float>& alpha,
1583 const SeldonUplo& Uplo,
1584 const Matrix<complex<float>, Prop0, ColHerm, Allocator0>& A,
1585 const Vector<complex<float>, VectFull, Allocator1>& X,
1586 const complex<float>& beta,
1587 Vector<complex<float>, VectFull, Allocator2>& Y)
1590 #ifdef SELDON_CHECK_DIMENSIONS
1591 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1594 cblas_chemv(CblasColMajor, Uplo.Cblas(),
1595 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1596 A.GetDataConstVoid(), A.GetM(),
1597 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1598 Y.GetDataVoid(), 1);
1602 template <
class Prop0,
class Allocator0,
1603 class Allocator1,
class Allocator2>
1604 void MltAdd(
const complex<double>& alpha,
1605 const SeldonUplo& Uplo,
1606 const Matrix<complex<double>, Prop0, ColHerm, Allocator0>& A,
1607 const Vector<complex<double>, VectFull, Allocator1>& X,
1608 const complex<double>& beta,
1609 Vector<complex<double>, VectFull, Allocator2>& Y)
1612 #ifdef SELDON_CHECK_DIMENSIONS
1613 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1616 cblas_zhemv(CblasColMajor, Uplo.Cblas(),
1617 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1618 A.GetDataConstVoid(), A.GetM(),
1619 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1620 Y.GetDataVoid(), 1);
1627 template <
class Prop0,
class Allocator0,
1628 class Allocator1,
class Allocator2>
1629 void MltAddVector(
const complex<float>& alpha,
1630 const Matrix<complex<float>, Prop0, RowHerm, Allocator0>& A,
1631 const Vector<complex<float>, VectFull, Allocator1>& X,
1632 const complex<float>& beta,
1633 Vector<complex<float>, VectFull, Allocator2>& Y)
1636 #ifdef SELDON_CHECK_DIMENSIONS
1637 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1640 cblas_chemv(CblasRowMajor, CblasUpper,
1641 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1642 A.GetDataConstVoid(), A.GetM(),
1643 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1644 Y.GetDataVoid(), 1);
1648 template <
class Prop0,
class Allocator0,
1649 class Allocator1,
class Allocator2>
1650 void MltAddVector(
const complex<double>& alpha,
1651 const Matrix<complex<double>, Prop0, RowHerm, Allocator0>& A,
1652 const Vector<complex<double>, VectFull, Allocator1>& X,
1653 const complex<double>& beta,
1654 Vector<complex<double>, VectFull, Allocator2>& Y)
1657 #ifdef SELDON_CHECK_DIMENSIONS
1658 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1661 cblas_zhemv(CblasRowMajor, CblasUpper,
1662 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1663 A.GetDataConstVoid(), A.GetM(),
1664 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1665 Y.GetDataVoid(), 1);
1672 template <
class Prop0,
class Allocator0,
1673 class Allocator1,
class Allocator2>
1674 void MltAdd(
const complex<float>& alpha,
1675 const SeldonUplo& Uplo,
1676 const Matrix<complex<float>, Prop0, RowHerm, Allocator0>& A,
1677 const Vector<complex<float>, VectFull, Allocator1>& X,
1678 const complex<float>& beta,
1679 Vector<complex<float>, VectFull, Allocator2>& Y)
1682 #ifdef SELDON_CHECK_DIMENSIONS
1683 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1686 cblas_chemv(CblasRowMajor, Uplo.Cblas(),
1687 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1688 A.GetDataConstVoid(), A.GetM(),
1689 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1690 Y.GetDataVoid(), 1);
1694 template <
class Prop0,
class Allocator0,
1695 class Allocator1,
class Allocator2>
1696 void MltAdd(
const complex<double>& alpha,
1697 const SeldonUplo& Uplo,
1698 const Matrix<complex<double>, Prop0, RowHerm, Allocator0>& A,
1699 const Vector<complex<double>, VectFull, Allocator1>& X,
1700 const complex<double>& beta,
1701 Vector<complex<double>, VectFull, Allocator2>& Y)
1704 #ifdef SELDON_CHECK_DIMENSIONS
1705 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1708 cblas_zhemv(CblasRowMajor, Uplo.Cblas(),
1709 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1710 A.GetDataConstVoid(), A.GetM(),
1711 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1712 Y.GetDataVoid(), 1);
1721 template <
class Prop0,
class Allocator0,
1722 class Allocator1,
class Allocator2>
1723 void MltAddVector(
const complex<float>& alpha,
1724 const Matrix<complex<float>, Prop0,
1725 ColHermPacked, Allocator0>& A,
1726 const Vector<complex<float>, VectFull, Allocator1>& X,
1727 const complex<float>& beta,
1728 Vector<complex<float>, VectFull, Allocator2>& Y)
1731 #ifdef SELDON_CHECK_DIMENSIONS
1732 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1735 cblas_chpmv(CblasColMajor, CblasUpper,
1736 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1737 A.GetDataConstVoid(),
1738 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1739 Y.GetDataVoid(), 1);
1743 template <
class Prop0,
class Allocator0,
1744 class Allocator1,
class Allocator2>
1745 void MltAddVector(
const complex<double>& alpha,
1746 const Matrix<complex<double>, Prop0,
1747 ColHermPacked, Allocator0>& A,
1748 const Vector<complex<double>, VectFull, Allocator1>& X,
1749 const complex<double>& beta,
1750 Vector<complex<double>, VectFull, Allocator2>& Y)
1753 #ifdef SELDON_CHECK_DIMENSIONS
1754 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1757 cblas_zhpmv(CblasColMajor, CblasUpper,
1758 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1759 A.GetDataConstVoid(),
1760 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1761 Y.GetDataVoid(), 1);
1768 template <
class Prop0,
class Allocator0,
1769 class Allocator1,
class Allocator2>
1770 void MltAdd(
const complex<float>& alpha,
1771 const SeldonUplo& Uplo,
1772 const Matrix<complex<float>, Prop0,
1773 ColHermPacked, Allocator0>& A,
1774 const Vector<complex<float>, VectFull, Allocator1>& X,
1775 const complex<float>& beta,
1776 Vector<complex<float>, VectFull, Allocator2>& Y)
1779 #ifdef SELDON_CHECK_DIMENSIONS
1780 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1783 cblas_chpmv(CblasColMajor, Uplo.Cblas(),
1784 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1785 A.GetDataConstVoid(),
1786 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1787 Y.GetDataVoid(), 1);
1791 template <
class Prop0,
class Allocator0,
1792 class Allocator1,
class Allocator2>
1793 void MltAdd(
const complex<double>& alpha,
1794 const SeldonUplo& Uplo,
1795 const Matrix<complex<double>, Prop0,
1796 ColHermPacked, Allocator0>& A,
1797 const Vector<complex<double>, VectFull, Allocator1>& X,
1798 const complex<double>& beta,
1799 Vector<complex<double>, VectFull, Allocator2>& Y)
1802 #ifdef SELDON_CHECK_DIMENSIONS
1803 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1806 cblas_zhpmv(CblasColMajor, Uplo.Cblas(),
1807 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1808 A.GetDataConstVoid(),
1809 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1810 Y.GetDataVoid(), 1);
1817 template <
class Prop0,
class Allocator0,
1818 class Allocator1,
class Allocator2>
1819 void MltAddVector(
const complex<float>& alpha,
1820 const Matrix<complex<float>, Prop0,
1821 RowHermPacked, Allocator0>& A,
1822 const Vector<complex<float>, VectFull, Allocator1>& X,
1823 const complex<float>& beta,
1824 Vector<complex<float>, VectFull, Allocator2>& Y)
1827 #ifdef SELDON_CHECK_DIMENSIONS
1828 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1831 cblas_chpmv(CblasRowMajor, CblasUpper,
1832 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1833 A.GetDataConstVoid(),
1834 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1835 Y.GetDataVoid(), 1);
1839 template <
class Prop0,
class Allocator0,
1840 class Allocator1,
class Allocator2>
1841 void MltAddVector(
const complex<double>& alpha,
1842 const Matrix<complex<double>, Prop0,
1843 RowHermPacked, Allocator0>& A,
1844 const Vector<complex<double>, VectFull, Allocator1>& X,
1845 const complex<double>& beta,
1846 Vector<complex<double>, VectFull, Allocator2>& Y)
1849 #ifdef SELDON_CHECK_DIMENSIONS
1850 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1853 cblas_zhpmv(CblasRowMajor, CblasUpper,
1854 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1855 A.GetDataConstVoid(),
1856 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1857 Y.GetDataVoid(), 1);
1864 template <
class Prop0,
class Allocator0,
1865 class Allocator1,
class Allocator2>
1866 void MltAdd(
const complex<float>& alpha,
1867 const SeldonUplo& Uplo,
1868 const Matrix<complex<float>, Prop0,
1869 RowHermPacked, Allocator0>& A,
1870 const Vector<complex<float>, VectFull, Allocator1>& X,
1871 const complex<float>& beta,
1872 Vector<complex<float>, VectFull, Allocator2>& Y)
1875 #ifdef SELDON_CHECK_DIMENSIONS
1876 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1879 cblas_chpmv(CblasRowMajor, Uplo.Cblas(),
1880 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1881 A.GetDataConstVoid(),
1882 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1883 Y.GetDataVoid(), 1);
1887 template <
class Prop0,
class Allocator0,
1888 class Allocator1,
class Allocator2>
1889 void MltAdd(
const complex<double>& alpha,
1890 const SeldonUplo& Uplo,
1891 const Matrix<complex<double>, Prop0,
1892 RowHermPacked, Allocator0>& A,
1893 const Vector<complex<double>, VectFull, Allocator1>& X,
1894 const complex<double>& beta,
1895 Vector<complex<double>, VectFull, Allocator2>& Y)
1898 #ifdef SELDON_CHECK_DIMENSIONS
1899 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1902 cblas_zhpmv(CblasRowMajor, Uplo.Cblas(),
1903 A.GetM(),
reinterpret_cast<const void*
>(&alpha),
1904 A.GetDataConstVoid(),
1905 X.GetDataConstVoid(), 1,
reinterpret_cast<const void*
>(&beta),
1906 Y.GetDataVoid(), 1);
1915 template <
class Prop0,
class Allocator0,
1916 class Allocator1,
class Allocator2>
1917 void MltAddVector(
const float& alpha,
1918 const Matrix<float, Prop0, ColSym, Allocator0>& A,
1919 const Vector<float, VectFull, Allocator1>& X,
1921 Vector<float, VectFull, Allocator2>& Y)
1924 #ifdef SELDON_CHECK_DIMENSIONS
1925 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1928 cblas_ssymv(CblasColMajor, CblasUpper,
1929 A.GetM(), alpha, A.GetData(), A.GetM(),
1930 X.GetData(), 1, beta, Y.GetData(), 1);
1934 template <
class Prop0,
class Allocator0,
1935 class Allocator1,
class Allocator2>
1936 void MltAddVector(
const double& alpha,
1937 const Matrix<double, Prop0, ColSym, Allocator0>& A,
1938 const Vector<double, VectFull, Allocator1>& X,
1940 Vector<double, VectFull, Allocator2>& Y)
1943 #ifdef SELDON_CHECK_DIMENSIONS
1944 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
1947 cblas_dsymv(CblasColMajor, CblasUpper,
1948 A.GetM(), alpha, A.GetData(), A.GetM(),
1949 X.GetData(), 1, beta, Y.GetData(), 1);
1956 template <
class Prop0,
class Allocator0,
1957 class Allocator1,
class Allocator2>
1958 void MltAdd(
const float& alpha,
1959 const SeldonUplo& Uplo,
1960 const Matrix<float, Prop0, ColSym, Allocator0>& A,
1961 const Vector<float, VectFull, Allocator1>& X,
1963 Vector<float, VectFull, Allocator2>& Y)
1966 #ifdef SELDON_CHECK_DIMENSIONS
1967 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1970 cblas_ssymv(CblasColMajor, Uplo.Cblas(),
1971 A.GetM(), alpha, A.GetData(), A.GetM(),
1972 X.GetData(), 1, beta, Y.GetData(), 1);
1976 template <
class Prop0,
class Allocator0,
1977 class Allocator1,
class Allocator2>
1978 void MltAdd(
const double& alpha,
1979 const SeldonUplo& Uplo,
1980 const Matrix<double, Prop0, ColSym, Allocator0>& A,
1981 const Vector<double, VectFull, Allocator1>& X,
1983 Vector<double, VectFull, Allocator2>& Y)
1986 #ifdef SELDON_CHECK_DIMENSIONS
1987 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
1990 cblas_dsymv(CblasColMajor, Uplo.Cblas(),
1991 A.GetM(), alpha, A.GetData(), A.GetM(),
1992 X.GetData(), 1, beta, Y.GetData(), 1);
1999 template <
class Prop0,
class Allocator0,
2000 class Allocator1,
class Allocator2>
2001 void MltAddVector(
const float& alpha,
2002 const Matrix<float, Prop0, RowSym, Allocator0>& A,
2003 const Vector<float, VectFull, Allocator1>& X,
2005 Vector<float, VectFull, Allocator2>& Y)
2008 #ifdef SELDON_CHECK_DIMENSIONS
2009 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
2012 cblas_ssymv(CblasRowMajor, CblasUpper,
2013 A.GetM(), alpha, A.GetData(), A.GetM(),
2014 X.GetData(), 1, beta, Y.GetData(), 1);
2018 template <
class Prop0,
class Allocator0,
2019 class Allocator1,
class Allocator2>
2020 void MltAddVector(
const double& alpha,
2021 const Matrix<double, Prop0, RowSym, Allocator0>& A,
2022 const Vector<double, VectFull, Allocator1>& X,
2024 Vector<double, VectFull, Allocator2>& Y)
2027 #ifdef SELDON_CHECK_DIMENSIONS
2028 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
2031 cblas_dsymv(CblasRowMajor, CblasUpper,
2032 A.GetM(), alpha, A.GetData(), A.GetM(),
2033 X.GetData(), 1, beta, Y.GetData(), 1);
2040 template <
class Prop0,
class Allocator0,
2041 class Allocator1,
class Allocator2>
2042 void MltAdd(
const float& alpha,
2043 const SeldonUplo& Uplo,
2044 const Matrix<float, Prop0, RowSym, Allocator0>& A,
2045 const Vector<float, VectFull, Allocator1>& X,
2047 Vector<float, VectFull, Allocator2>& Y)
2050 #ifdef SELDON_CHECK_DIMENSIONS
2051 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
2054 cblas_ssymv(CblasRowMajor, Uplo.Cblas(),
2055 A.GetM(), alpha, A.GetData(), A.GetM(),
2056 X.GetData(), 1, beta, Y.GetData(), 1);
2060 template <
class Prop0,
class Allocator0,
2061 class Allocator1,
class Allocator2>
2062 void MltAdd(
const double& alpha,
2063 const SeldonUplo& Uplo,
2064 const Matrix<double, Prop0, RowSym, Allocator0>& A,
2065 const Vector<double, VectFull, Allocator1>& X,
2067 Vector<double, VectFull, Allocator2>& Y)
2070 #ifdef SELDON_CHECK_DIMENSIONS
2071 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
2074 cblas_dsymv(CblasRowMajor, Uplo.Cblas(),
2075 A.GetM(), alpha, A.GetData(), A.GetM(),
2076 X.GetData(), 1, beta, Y.GetData(), 1);
2085 template <
class Prop0,
class Allocator0,
2086 class Allocator1,
class Allocator2>
2087 void MltAddVector(
const float& alpha,
2088 const Matrix<float, Prop0, ColSymPacked, Allocator0>& A,
2089 const Vector<float, VectFull, Allocator1>& X,
2091 Vector<float, VectFull, Allocator2>& Y)
2094 #ifdef SELDON_CHECK_DIMENSIONS
2095 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
2098 cblas_sspmv(CblasColMajor, CblasUpper,
2099 A.GetM(), alpha, A.GetData(),
2100 X.GetData(), 1, beta, Y.GetData(), 1);
2104 template <
class Prop0,
class Allocator0,
2105 class Allocator1,
class Allocator2>
2106 void MltAddVector(
const double& alpha,
2107 const Matrix<double, Prop0, ColSymPacked, Allocator0>& A,
2108 const Vector<double, VectFull, Allocator1>& X,
2110 Vector<double, VectFull, Allocator2>& Y)
2113 #ifdef SELDON_CHECK_DIMENSIONS
2114 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
2117 cblas_dspmv(CblasColMajor, CblasUpper,
2118 A.GetM(), alpha, A.GetData(),
2119 X.GetData(), 1, beta, Y.GetData(), 1);
2126 template <
class Prop0,
class Allocator0,
2127 class Allocator1,
class Allocator2>
2128 void MltAdd(
const float& alpha,
2129 const SeldonUplo& Uplo,
2130 const Matrix<float, Prop0, ColSymPacked, Allocator0>& A,
2131 const Vector<float, VectFull, Allocator1>& X,
2133 Vector<float, VectFull, Allocator2>& Y)
2136 #ifdef SELDON_CHECK_DIMENSIONS
2137 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
2140 cblas_sspmv(CblasColMajor, Uplo.Cblas(),
2141 A.GetM(), alpha, A.GetData(),
2142 X.GetData(), 1, beta, Y.GetData(), 1);
2146 template <
class Prop0,
class Allocator0,
2147 class Allocator1,
class Allocator2>
2148 void MltAdd(
const double& alpha,
2149 const SeldonUplo& Uplo,
2150 const Matrix<double, Prop0, ColSymPacked, Allocator0>& A,
2151 const Vector<double, VectFull, Allocator1>& X,
2153 Vector<double, VectFull, Allocator2>& Y)
2156 #ifdef SELDON_CHECK_DIMENSIONS
2157 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
2160 cblas_dspmv(CblasColMajor, Uplo.Cblas(),
2161 A.GetM(), alpha, A.GetData(),
2162 X.GetData(), 1, beta, Y.GetData(), 1);
2169 template <
class Prop0,
class Allocator0,
2170 class Allocator1,
class Allocator2>
2171 void MltAddVector(
const float& alpha,
2172 const Matrix<float, Prop0, RowSymPacked, Allocator0>& A,
2173 const Vector<float, VectFull, Allocator1>& X,
2175 Vector<float, VectFull, Allocator2>& Y)
2178 #ifdef SELDON_CHECK_DIMENSIONS
2179 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
2182 cblas_sspmv(CblasRowMajor, CblasUpper,
2183 A.GetM(), alpha, A.GetData(),
2184 X.GetData(), 1, beta, Y.GetData(), 1);
2188 template <
class Prop0,
class Allocator0,
2189 class Allocator1,
class Allocator2>
2190 void MltAddVector(
const double& alpha,
2191 const Matrix<double, Prop0, RowSymPacked, Allocator0>& A,
2192 const Vector<double, VectFull, Allocator1>& X,
2194 Vector<double, VectFull, Allocator2>& Y)
2197 #ifdef SELDON_CHECK_DIMENSIONS
2198 CheckDim(A, X, Y,
"MltAdd(alpha, M, X, beta, Y)");
2201 cblas_dspmv(CblasRowMajor, CblasUpper,
2202 A.GetM(), alpha, A.GetData(),
2203 X.GetData(), 1, beta, Y.GetData(), 1);
2210 template <
class Prop0,
class Allocator0,
2211 class Allocator1,
class Allocator2>
2212 void MltAdd(
const float& alpha,
2213 const SeldonUplo& Uplo,
2214 const Matrix<float, Prop0, RowSymPacked, Allocator0>& A,
2215 const Vector<float, VectFull, Allocator1>& X,
2217 Vector<float, VectFull, Allocator2>& Y)
2220 #ifdef SELDON_CHECK_DIMENSIONS
2221 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
2224 cblas_sspmv(CblasRowMajor, Uplo.Cblas(),
2225 A.GetM(), alpha, A.GetData(),
2226 X.GetData(), 1, beta, Y.GetData(), 1);
2230 template <
class Prop0,
class Allocator0,
2231 class Allocator1,
class Allocator2>
2232 void MltAdd(
const double& alpha,
2233 const SeldonUplo& Uplo,
2234 const Matrix<double, Prop0, RowSymPacked, Allocator0>& A,
2235 const Vector<double, VectFull, Allocator1>& X,
2237 Vector<double, VectFull, Allocator2>& Y)
2240 #ifdef SELDON_CHECK_DIMENSIONS
2241 CheckDim(A, X, Y,
"MltAdd(alpha, uplo, M, X, beta, Y)");
2244 cblas_dspmv(CblasRowMajor, Uplo.Cblas(),
2245 A.GetM(), alpha, A.GetData(),
2246 X.GetData(), 1, beta, Y.GetData(), 1);
2262 template <
class Prop0,
class Allocator0,
2263 class Allocator1,
class Allocator2>
2264 void Rank1Update(
const float& alpha,
2265 const Vector<float, VectFull, Allocator1>& X,
2266 const Vector<float, VectFull, Allocator2>& Y,
2267 Matrix<float, Prop0, ColMajor, Allocator0>& A)
2270 #ifdef SELDON_CHECK_DIMENSIONS
2272 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2275 cblas_sger(CblasColMajor, A.GetM(), A.GetN(), alpha, X.GetData(), 1,
2276 Y.GetData(), 1, A.GetData(), A.GetLD());
2280 template <
class Prop0,
class Allocator0,
2281 class Allocator1,
class Allocator2>
2282 void Rank1Update(
const double& alpha,
2283 const Vector<double, VectFull, Allocator1>& X,
2284 const Vector<double, VectFull, Allocator2>& Y,
2285 Matrix<double, Prop0, ColMajor, Allocator0>& A)
2288 #ifdef SELDON_CHECK_DIMENSIONS
2290 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2293 cblas_dger(CblasColMajor, A.GetM(), A.GetN(), alpha, X.GetData(), 1,
2294 Y.GetData(), 1, A.GetData(), A.GetLD());
2298 template <
class Prop0,
class Allocator0,
2299 class Allocator1,
class Allocator2>
2300 void Rank1Update(
const complex<float>& alpha,
2301 const Vector<complex<float>, VectFull, Allocator1>& X,
2302 const Vector<complex<float>, VectFull, Allocator2>& Y,
2303 Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A)
2306 #ifdef SELDON_CHECK_DIMENSIONS
2308 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2311 cblas_cgeru(CblasColMajor, A.GetM(), A.GetN(),
2312 reinterpret_cast<const void*
>(&alpha),
2313 reinterpret_cast<const void*
>(X.GetData()), 1,
2314 reinterpret_cast<const void*
>(Y.GetData()), 1,
2315 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2319 template <
class Prop0,
class Allocator0,
2320 class Allocator1,
class Allocator2>
2321 void Rank1Update(
const complex<double>& alpha,
2322 const Vector<complex<double>, VectFull, Allocator1>& X,
2323 const Vector<complex<double>, VectFull, Allocator2>& Y,
2324 Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A)
2327 #ifdef SELDON_CHECK_DIMENSIONS
2329 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2332 cblas_zgeru(CblasColMajor, A.GetM(), A.GetN(),
2333 reinterpret_cast<const void*
>(&alpha),
2334 reinterpret_cast<const void*
>(X.GetData()), 1,
2335 reinterpret_cast<const void*
>(Y.GetData()), 1,
2336 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2343 template <
class Prop0,
class Allocator0,
2344 class Allocator1,
class Allocator2>
2345 void Rank1Update(
const complex<float>& alpha,
2346 const Vector<complex<float>, VectFull, Allocator1>& X,
2347 const SeldonConjugate& ConjY,
2348 const Vector<complex<float>, VectFull, Allocator2>& Y,
2349 Matrix<complex<float>, Prop0, ColMajor, Allocator0>& A)
2352 #ifdef SELDON_CHECK_DIMENSIONS
2354 "Rank1Update(alpha, X, status, Y, M)",
"X.Y' + M");
2358 cblas_cgerc(CblasColMajor, A.GetM(), A.GetN(),
2359 reinterpret_cast<const void*
>(&alpha),
2360 reinterpret_cast<const void*
>(X.GetData()), 1,
2361 reinterpret_cast<const void*
>(Y.GetData()), 1,
2362 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2364 cblas_cgeru(CblasColMajor, A.GetM(), A.GetN(),
2365 reinterpret_cast<const void*
>(&alpha),
2366 reinterpret_cast<const void*
>(X.GetData()), 1,
2367 reinterpret_cast<const void*
>(Y.GetData()), 1,
2368 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2372 template <
class Prop0,
class Allocator0,
2373 class Allocator1,
class Allocator2>
2374 void Rank1Update(
const complex<double>& alpha,
2375 const Vector<complex<double>, VectFull, Allocator1>& X,
2376 const SeldonConjugate& ConjY,
2377 const Vector<complex<double>, VectFull, Allocator2>& Y,
2378 Matrix<complex<double>, Prop0, ColMajor, Allocator0>& A)
2381 #ifdef SELDON_CHECK_DIMENSIONS
2383 "Rank1Update(alpha, X, status, Y, M)",
"X.Y' + M");
2387 cblas_zgerc(CblasColMajor, A.GetM(), A.GetN(),
2388 reinterpret_cast<const void*
>(&alpha),
2389 reinterpret_cast<const void*
>(X.GetData()), 1,
2390 reinterpret_cast<const void*
>(Y.GetData()), 1,
2391 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2393 cblas_zgeru(CblasColMajor, A.GetM(), A.GetN(),
2394 reinterpret_cast<const void*
>(&alpha),
2395 reinterpret_cast<const void*
>(X.GetData()), 1,
2396 reinterpret_cast<const void*
>(Y.GetData()), 1,
2397 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2404 template <
class Prop0,
class Allocator0,
2405 class Allocator1,
class Allocator2>
2406 void Rank1Update(
const float& alpha,
2407 const Vector<float, VectFull, Allocator1>& X,
2408 const Vector<float, VectFull, Allocator2>& Y,
2409 Matrix<float, Prop0, RowMajor, Allocator0>& A)
2412 #ifdef SELDON_CHECK_DIMENSIONS
2414 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2417 cblas_sger(CblasRowMajor, A.GetM(), A.GetN(), alpha, X.GetData(), 1,
2418 Y.GetData(), 1, A.GetData(), A.GetLD());
2422 template <
class Prop0,
class Allocator0,
2423 class Allocator1,
class Allocator2>
2424 void Rank1Update(
const double& alpha,
2425 const Vector<double, VectFull, Allocator1>& X,
2426 const Vector<double, VectFull, Allocator2>& Y,
2427 Matrix<double, Prop0, RowMajor, Allocator0>& A)
2430 #ifdef SELDON_CHECK_DIMENSIONS
2432 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2435 cblas_dger(CblasRowMajor, A.GetM(), A.GetN(), alpha, X.GetData(), 1,
2436 Y.GetData(), 1, A.GetData(), A.GetLD());
2440 template <
class Prop0,
class Allocator0,
2441 class Allocator1,
class Allocator2>
2442 void Rank1Update(
const complex<float>& alpha,
2443 const Vector<complex<float>, VectFull, Allocator1>& X,
2444 const Vector<complex<float>, VectFull, Allocator2>& Y,
2445 Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A)
2448 #ifdef SELDON_CHECK_DIMENSIONS
2450 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2453 cblas_cgeru(CblasRowMajor, A.GetM(), A.GetN(),
2454 reinterpret_cast<const void*
>(&alpha),
2455 reinterpret_cast<const void*
>(X.GetData()), 1,
2456 reinterpret_cast<const void*
>(Y.GetData()), 1,
2457 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2461 template <
class Prop0,
class Allocator0,
2462 class Allocator1,
class Allocator2>
2463 void Rank1Update(
const complex<double>& alpha,
2464 const Vector<complex<double>, VectFull, Allocator1>& X,
2465 const Vector<complex<double>, VectFull, Allocator2>& Y,
2466 Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A)
2469 #ifdef SELDON_CHECK_DIMENSIONS
2471 "Rank1Update(alpha, X, Y, M)",
"X.Y' + M");
2474 cblas_zgeru(CblasRowMajor, A.GetM(), A.GetN(),
2475 reinterpret_cast<const void*
>(&alpha),
2476 reinterpret_cast<const void*
>(X.GetData()), 1,
2477 reinterpret_cast<const void*
>(Y.GetData()), 1,
2478 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2485 template <
class Prop0,
class Allocator0,
2486 class Allocator1,
class Allocator2>
2487 void Rank1Update(
const complex<float>& alpha,
2488 const Vector<complex<float>, VectFull, Allocator1>& X,
2489 const SeldonConjugate& ConjY,
2490 const Vector<complex<float>, VectFull, Allocator2>& Y,
2491 Matrix<complex<float>, Prop0, RowMajor, Allocator0>& A)
2494 #ifdef SELDON_CHECK_DIMENSIONS
2496 "Rank1Update(alpha, X, status, Y, M)",
"X.Y' + M");
2500 cblas_cgerc(CblasRowMajor, A.GetM(), A.GetN(),
2501 reinterpret_cast<const void*
>(&alpha),
2502 reinterpret_cast<const void*
>(X.GetData()), 1,
2503 reinterpret_cast<const void*
>(Y.GetData()), 1,
2504 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2506 cblas_cgeru(CblasRowMajor, A.GetM(), A.GetN(),
2507 reinterpret_cast<const void*
>(&alpha),
2508 reinterpret_cast<const void*
>(X.GetData()), 1,
2509 reinterpret_cast<const void*
>(Y.GetData()), 1,
2510 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2514 template <
class Prop0,
class Allocator0,
2515 class Allocator1,
class Allocator2>
2516 void Rank1Update(
const complex<double>& alpha,
2517 const Vector<complex<double>, VectFull, Allocator1>& X,
2518 const SeldonConjugate& ConjY,
2519 const Vector<complex<double>, VectFull, Allocator2>& Y,
2520 Matrix<complex<double>, Prop0, RowMajor, Allocator0>& A)
2523 #ifdef SELDON_CHECK_DIMENSIONS
2525 "Rank1Update(alpha, X, status, Y, M)",
"X.Y' + M");
2529 cblas_zgerc(CblasRowMajor, A.GetM(), A.GetN(),
2530 reinterpret_cast<const void*
>(&alpha),
2531 reinterpret_cast<const void*
>(X.GetData()), 1,
2532 reinterpret_cast<const void*
>(Y.GetData()), 1,
2533 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2535 cblas_zgeru(CblasRowMajor, A.GetM(), A.GetN(),
2536 reinterpret_cast<const void*
>(&alpha),
2537 reinterpret_cast<const void*
>(X.GetData()), 1,
2538 reinterpret_cast<const void*
>(Y.GetData()), 1,
2539 reinterpret_cast<void*
>(A.GetData()), A.GetLD());
2546 template <
class Allocator0,
2547 class Prop1,
class Allocator1>
2548 void Rank1Update(
const float& alpha,
2549 const Vector<float, VectFull, Allocator0>& X,
2550 Matrix<float, Prop1, ColSymPacked, Allocator1>& A)
2553 #ifdef SELDON_CHECK_DIMENSIONS
2554 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2557 cblas_sspr(CblasColMajor, CblasUpper, A.GetM(), alpha,
2558 X.GetData(), 1, A.GetData());
2562 template <
class Allocator0,
2563 class Prop1,
class Allocator1>
2564 void Rank1Update(
const double& alpha,
2565 const Vector<double, VectFull, Allocator0>& X,
2566 Matrix<double, Prop1, ColSymPacked, Allocator1>& A)
2569 #ifdef SELDON_CHECK_DIMENSIONS
2570 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2573 cblas_dspr(CblasColMajor, CblasUpper, A.GetM(), alpha,
2574 X.GetData(), 1, A.GetData());
2578 template <
class Allocator0,
2579 class Prop1,
class Allocator1>
2580 void Rank1Update(
const float& alpha,
2581 const Vector<float, VectFull, Allocator0>& X,
2582 Matrix<float, Prop1, ColSym, Allocator1>& A)
2585 #ifdef SELDON_CHECK_DIMENSIONS
2586 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2589 cblas_ssyr(CblasColMajor, CblasUpper, A.GetM(), alpha,
2590 X.GetData(), 1, A.GetData(), A.GetM());
2594 template <
class Allocator0,
2595 class Prop1,
class Allocator1>
2596 void Rank1Update(
const double& alpha,
2597 const Vector<double, VectFull, Allocator0>& X,
2598 Matrix<double, Prop1, ColSym, Allocator1>& A)
2601 #ifdef SELDON_CHECK_DIMENSIONS
2602 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2605 cblas_dsyr(CblasColMajor, CblasUpper, A.GetM(), alpha,
2606 X.GetData(), 1, A.GetData(), A.GetM());
2610 template <
class Allocator0,
2611 class Prop1,
class Allocator1>
2613 Rank1Update(
const float& alpha,
2614 const Vector<complex<float>, VectFull, Allocator0>& X,
2615 Matrix<complex<float>, Prop1, ColHermPacked, Allocator1>& A)
2618 #ifdef SELDON_CHECK_DIMENSIONS
2619 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2622 cblas_chpr(CblasColMajor, CblasUpper, A.GetM(), alpha,
2623 reinterpret_cast<const void*
>(X.GetData()), 1,
2624 reinterpret_cast<void*
>(A.GetData()));
2628 template <
class Allocator0,
2629 class Prop1,
class Allocator1>
2631 Rank1Update(
const double& alpha,
2632 const Vector<complex<double>, VectFull, Allocator0>& X,
2633 Matrix<complex<double>, Prop1, ColHermPacked, Allocator1>& A)
2636 #ifdef SELDON_CHECK_DIMENSIONS
2637 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2640 cblas_zhpr(CblasColMajor, CblasUpper, A.GetM(), alpha,
2641 reinterpret_cast<const void*
>(X.GetData()), 1,
2642 reinterpret_cast<void*
>(A.GetData()));
2646 template <
class Allocator0,
2647 class Prop1,
class Allocator1>
2649 Rank1Update(
const float& alpha,
2650 const Vector<complex<float>, VectFull, Allocator0>& X,
2651 Matrix<complex<float>, Prop1, ColHerm, Allocator1>& A)
2654 #ifdef SELDON_CHECK_DIMENSIONS
2655 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2658 cblas_cher(CblasColMajor, CblasUpper, A.GetM(), alpha,
2659 reinterpret_cast<const void*
>(X.GetData()), 1,
2660 reinterpret_cast<void*
>(A.GetData()), A.GetM());
2664 template <
class Allocator0,
2665 class Prop1,
class Allocator1>
2667 Rank1Update(
const double& alpha,
2668 const Vector<complex<double>, VectFull, Allocator0>& X,
2669 Matrix<complex<double>, Prop1, ColHerm, Allocator1>& A)
2672 #ifdef SELDON_CHECK_DIMENSIONS
2673 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2676 cblas_zher(CblasColMajor, CblasUpper, A.GetM(), alpha,
2677 reinterpret_cast<const void*
>(X.GetData()), 1,
2678 reinterpret_cast<void*
>(A.GetData()), A.GetM());
2685 template <
class Allocator0,
2686 class Prop1,
class Allocator1>
2687 void Rank1Update(
const float& alpha,
2688 const Vector<float, VectFull, Allocator0>& X,
2689 const SeldonUplo& Uplo,
2690 Matrix<float, Prop1, ColSymPacked, Allocator1>& A)
2693 #ifdef SELDON_CHECK_DIMENSIONS
2694 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2697 cblas_sspr(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2698 X.GetData(), 1, A.GetData());
2702 template <
class Allocator0,
2703 class Prop1,
class Allocator1>
2704 void Rank1Update(
const double& alpha,
2705 const Vector<double, VectFull, Allocator0>& X,
2706 const SeldonUplo& Uplo,
2707 Matrix<double, Prop1, ColSymPacked, Allocator1>& A)
2710 #ifdef SELDON_CHECK_DIMENSIONS
2711 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2714 cblas_dspr(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2715 X.GetData(), 1, A.GetData());
2719 template <
class Allocator0,
2720 class Prop1,
class Allocator1>
2721 void Rank1Update(
const float& alpha,
2722 const Vector<float, VectFull, Allocator0>& X,
2723 const SeldonUplo& Uplo,
2724 Matrix<float, Prop1, ColSym, Allocator1>& A)
2727 #ifdef SELDON_CHECK_DIMENSIONS
2728 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2731 cblas_ssyr(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2732 X.GetData(), 1, A.GetData(), A.GetM());
2736 template <
class Allocator0,
2737 class Prop1,
class Allocator1>
2738 void Rank1Update(
const double& alpha,
2739 const Vector<double, VectFull, Allocator0>& X,
2740 const SeldonUplo& Uplo,
2741 Matrix<double, Prop1, ColSym, Allocator1>& A)
2744 #ifdef SELDON_CHECK_DIMENSIONS
2745 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2748 cblas_dsyr(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2749 X.GetData(), 1, A.GetData(), A.GetM());
2753 template <
class Allocator0,
2754 class Prop1,
class Allocator1>
2756 Rank1Update(
const float& alpha,
2757 const Vector<complex<float>, VectFull, Allocator0>& X,
2758 const SeldonUplo& Uplo,
2759 Matrix<complex<float>, Prop1, ColHermPacked, Allocator1>& A)
2762 #ifdef SELDON_CHECK_DIMENSIONS
2763 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2766 cblas_chpr(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2767 reinterpret_cast<const void*
>(X.GetData()), 1,
2768 reinterpret_cast<void*
>(A.GetData()));
2772 template <
class Allocator0,
2773 class Prop1,
class Allocator1>
2775 Rank1Update(
const double& alpha,
2776 const Vector<complex<double>, VectFull, Allocator0>& X,
2777 const SeldonUplo& Uplo,
2778 Matrix<complex<double>, Prop1, ColHermPacked, Allocator1>& A)
2781 #ifdef SELDON_CHECK_DIMENSIONS
2782 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2785 cblas_zhpr(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2786 reinterpret_cast<const void*
>(X.GetData()), 1,
2787 reinterpret_cast<void*
>(A.GetData()));
2791 template <
class Allocator0,
2792 class Prop1,
class Allocator1>
2794 Rank1Update(
const float& alpha,
2795 const Vector<complex<float>, VectFull, Allocator0>& X,
2796 const SeldonUplo& Uplo,
2797 Matrix<complex<float>, Prop1, ColHerm, Allocator1>& A)
2800 #ifdef SELDON_CHECK_DIMENSIONS
2801 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2804 cblas_cher(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2805 reinterpret_cast<const void*
>(X.GetData()), 1,
2806 reinterpret_cast<void*
>(A.GetData()), A.GetM());
2810 template <
class Allocator0,
2811 class Prop1,
class Allocator1>
2813 Rank1Update(
const double& alpha,
2814 const Vector<complex<double>, VectFull, Allocator0>& X,
2815 const SeldonUplo& Uplo,
2816 Matrix<complex<double>, Prop1, ColHerm, Allocator1>& A)
2819 #ifdef SELDON_CHECK_DIMENSIONS
2820 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2823 cblas_zher(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
2824 reinterpret_cast<const void*
>(X.GetData()), 1,
2825 reinterpret_cast<void*
>(A.GetData()), A.GetM());
2832 template <
class Allocator0,
2833 class Prop1,
class Allocator1>
2834 void Rank1Update(
const float& alpha,
2835 const Vector<float, VectFull, Allocator0>& X,
2836 Matrix<float, Prop1, RowSymPacked, Allocator1>& A)
2839 #ifdef SELDON_CHECK_DIMENSIONS
2840 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2843 cblas_sspr(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2844 X.GetData(), 1, A.GetData());
2848 template <
class Allocator0,
2849 class Prop1,
class Allocator1>
2850 void Rank1Update(
const double& alpha,
2851 const Vector<double, VectFull, Allocator0>& X,
2852 Matrix<double, Prop1, RowSymPacked, Allocator1>& A)
2855 #ifdef SELDON_CHECK_DIMENSIONS
2856 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2859 cblas_dspr(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2860 X.GetData(), 1, A.GetData());
2864 template <
class Allocator0,
2865 class Prop1,
class Allocator1>
2866 void Rank1Update(
const float& alpha,
2867 const Vector<float, VectFull, Allocator0>& X,
2868 Matrix<float, Prop1, RowSym, Allocator1>& A)
2871 #ifdef SELDON_CHECK_DIMENSIONS
2872 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2875 cblas_ssyr(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2876 X.GetData(), 1, A.GetData(), A.GetM());
2880 template <
class Allocator0,
2881 class Prop1,
class Allocator1>
2882 void Rank1Update(
const double& alpha,
2883 const Vector<double, VectFull, Allocator0>& X,
2884 Matrix<double, Prop1, RowSym, Allocator1>& A)
2887 #ifdef SELDON_CHECK_DIMENSIONS
2888 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2891 cblas_dsyr(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2892 X.GetData(), 1, A.GetData(), A.GetM());
2896 template <
class Allocator0,
2897 class Prop1,
class Allocator1>
2899 Rank1Update(
const float& alpha,
2900 const Vector<complex<float>, VectFull, Allocator0>& X,
2901 Matrix<complex<float>, Prop1, RowHermPacked, Allocator1>& A)
2904 #ifdef SELDON_CHECK_DIMENSIONS
2905 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2908 cblas_chpr(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2909 reinterpret_cast<const void*
>(X.GetData()), 1,
2910 reinterpret_cast<void*
>(A.GetData()));
2914 template <
class Allocator0,
2915 class Prop1,
class Allocator1>
2917 Rank1Update(
const double& alpha,
2918 const Vector<complex<double>, VectFull, Allocator0>& X,
2919 Matrix<complex<double>, Prop1, RowHermPacked, Allocator1>& A)
2922 #ifdef SELDON_CHECK_DIMENSIONS
2923 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2926 cblas_zhpr(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2927 reinterpret_cast<const void*
>(X.GetData()), 1,
2928 reinterpret_cast<void*
>(A.GetData()));
2932 template <
class Allocator0,
2933 class Prop1,
class Allocator1>
2935 Rank1Update(
const float& alpha,
2936 const Vector<complex<float>, VectFull, Allocator0>& X,
2937 Matrix<complex<float>, Prop1, RowHerm, Allocator1>& A)
2940 #ifdef SELDON_CHECK_DIMENSIONS
2941 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2944 cblas_cher(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2945 reinterpret_cast<const void*
>(X.GetData()), 1,
2946 reinterpret_cast<void*
>(A.GetData()), A.GetM());
2950 template <
class Allocator0,
2951 class Prop1,
class Allocator1>
2953 Rank1Update(
const double& alpha,
2954 const Vector<complex<double>, VectFull, Allocator0>& X,
2955 Matrix<complex<double>, Prop1, RowHerm, Allocator1>& A)
2958 #ifdef SELDON_CHECK_DIMENSIONS
2959 CheckDim(A, X,
"Rank1Update(alpha, X, M)",
"X.X' + M");
2962 cblas_zher(CblasRowMajor, CblasUpper, A.GetM(), alpha,
2963 reinterpret_cast<const void*
>(X.GetData()), 1,
2964 reinterpret_cast<void*
>(A.GetData()), A.GetM());
2971 template <
class Allocator0,
2972 class Prop1,
class Allocator1>
2973 void Rank1Update(
const float& alpha,
2974 const Vector<float, VectFull, Allocator0>& X,
2975 const SeldonUplo& Uplo,
2976 Matrix<float, Prop1, RowSymPacked, Allocator1>& A)
2979 #ifdef SELDON_CHECK_DIMENSIONS
2980 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
2983 cblas_sspr(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
2984 X.GetData(), 1, A.GetData());
2988 template <
class Allocator0,
2989 class Prop1,
class Allocator1>
2990 void Rank1Update(
const double& alpha,
2991 const Vector<double, VectFull, Allocator0>& X,
2992 const SeldonUplo& Uplo,
2993 Matrix<double, Prop1, RowSymPacked, Allocator1>& A)
2996 #ifdef SELDON_CHECK_DIMENSIONS
2997 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3000 cblas_dspr(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3001 X.GetData(), 1, A.GetData());
3005 template <
class Allocator0,
3006 class Prop1,
class Allocator1>
3007 void Rank1Update(
const float& alpha,
3008 const Vector<float, VectFull, Allocator0>& X,
3009 const SeldonUplo& Uplo,
3010 Matrix<float, Prop1, RowSym, Allocator1>& A)
3013 #ifdef SELDON_CHECK_DIMENSIONS
3014 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3017 cblas_ssyr(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3018 X.GetData(), 1, A.GetData(), A.GetM());
3022 template <
class Allocator0,
3023 class Prop1,
class Allocator1>
3024 void Rank1Update(
const double& alpha,
3025 const Vector<double, VectFull, Allocator0>& X,
3026 const SeldonUplo& Uplo,
3027 Matrix<double, Prop1, RowSym, Allocator1>& A)
3030 #ifdef SELDON_CHECK_DIMENSIONS
3031 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3034 cblas_dsyr(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3035 X.GetData(), 1, A.GetData(), A.GetM());
3039 template <
class Allocator0,
3040 class Prop1,
class Allocator1>
3042 Rank1Update(
const float& alpha,
3043 const Vector<complex<float>, VectFull, Allocator0>& X,
3044 const SeldonUplo& Uplo,
3045 Matrix<complex<float>, Prop1, RowHermPacked, Allocator1>& A)
3048 #ifdef SELDON_CHECK_DIMENSIONS
3049 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3052 cblas_chpr(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3053 reinterpret_cast<const void*
>(X.GetData()), 1,
3054 reinterpret_cast<void*
>(A.GetData()));
3058 template <
class Allocator0,
3059 class Prop1,
class Allocator1>
3061 Rank1Update(
const double& alpha,
3062 const Vector<complex<double>, VectFull, Allocator0>& X,
3063 const SeldonUplo& Uplo,
3064 Matrix<complex<double>, Prop1, RowHermPacked, Allocator1>& A)
3067 #ifdef SELDON_CHECK_BOUNDS
3068 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3071 cblas_zhpr(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3072 reinterpret_cast<const void*
>(X.GetData()), 1,
3073 reinterpret_cast<void*
>(A.GetData()));
3077 template <
class Allocator0,
3078 class Prop1,
class Allocator1>
3080 Rank1Update(
const float& alpha,
3081 const Vector<complex<float>, VectFull, Allocator0>& X,
3082 const SeldonUplo& Uplo,
3083 Matrix<complex<float>, Prop1, RowHerm, Allocator1>& A)
3086 #ifdef SELDON_CHECK_DIMENSIONS
3087 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3090 cblas_cher(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3091 reinterpret_cast<const void*
>(X.GetData()), 1,
3092 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3096 template <
class Allocator0,
3097 class Prop1,
class Allocator1>
3099 Rank1Update(
const double& alpha,
3100 const Vector<complex<double>, VectFull, Allocator0>& X,
3101 const SeldonUplo& Uplo,
3102 Matrix<complex<double>, Prop1, RowHerm, Allocator1>& A)
3105 #ifdef SELDON_CHECK_BOUNDS
3106 CheckDim(A, X,
"Rank1Update(alpha, X, uplo, M)",
"X.X' + M");
3109 cblas_zher(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3110 reinterpret_cast<const void*
>(X.GetData()), 1,
3111 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3127 template <
class Allocator0,
3128 class Prop1,
class Allocator1,
3130 void Rank2Update(
const float& alpha,
3131 const Vector<float, VectFull, Allocator0>& X,
3132 const Vector<float, VectFull, Allocator2>& Y,
3133 Matrix<float, Prop1, ColSymPacked, Allocator1>& A)
3136 #ifdef SELDON_CHECK_BOUNDS
3137 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3138 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3141 cblas_sspr2(CblasColMajor, CblasUpper, A.GetM(), alpha,
3142 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3146 template <
class Allocator0,
3147 class Prop1,
class Allocator1,
3149 void Rank2Update(
const double& alpha,
3150 const Vector<double, VectFull, Allocator0>& X,
3151 const Vector<double, VectFull, Allocator2>& Y,
3152 Matrix<double, Prop1, ColSymPacked, Allocator1>& A)
3155 #ifdef SELDON_CHECK_DIMENSIONS
3156 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3157 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3160 cblas_dspr2(CblasColMajor, CblasUpper, A.GetM(), alpha,
3161 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3165 template <
class Allocator0,
3166 class Prop1,
class Allocator1,
3168 void Rank2Update(
const float& alpha,
3169 const Vector<float, VectFull, Allocator0>& X,
3170 const Vector<float, VectFull, Allocator2>& Y,
3171 Matrix<float, Prop1, ColSym, Allocator1>& A)
3174 #ifdef SELDON_CHECK_BOUNDS
3175 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3176 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3179 cblas_ssyr2(CblasColMajor, CblasUpper, A.GetM(), alpha,
3180 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3184 template <
class Allocator0,
3185 class Prop1,
class Allocator1,
3187 void Rank2Update(
const double& alpha,
3188 const Vector<double, VectFull, Allocator0>& X,
3189 const Vector<double, VectFull, Allocator2>& Y,
3190 Matrix<double, Prop1, ColSym, Allocator1>& A)
3193 #ifdef SELDON_CHECK_DIMENSIONS
3194 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3195 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3198 cblas_dsyr2(CblasColMajor, CblasUpper, A.GetM(), alpha,
3199 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3203 template <
class Allocator0,
3204 class Prop1,
class Allocator1,
3207 Rank2Update(
const complex<float>& alpha,
3208 const Vector<complex<float>, VectFull, Allocator0>& X,
3209 const Vector<complex<float>, VectFull, Allocator2>& Y,
3210 Matrix<complex<float>, Prop1, ColHermPacked, Allocator1>& A)
3213 #ifdef SELDON_CHECK_DIMENSIONS
3214 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3215 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3218 cblas_chpr2(CblasColMajor, CblasUpper, A.GetM(),
3219 reinterpret_cast<const void*
>(&alpha),
3220 reinterpret_cast<const void*
>(X.GetData()), 1,
3221 reinterpret_cast<const void*
>(Y.GetData()), 1,
3222 reinterpret_cast<void*
>(A.GetData()));
3226 template <
class Allocator0,
3227 class Prop1,
class Allocator1,
3230 Rank2Update(
const complex<double>& alpha,
3231 const Vector<complex<double>, VectFull, Allocator0>& X,
3232 const Vector<complex<double>, VectFull, Allocator2>& Y,
3233 Matrix<complex<double>, Prop1, ColHermPacked, Allocator1>& A)
3236 #ifdef SELDON_CHECK_DIMENSIONS
3237 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3238 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3241 cblas_zhpr2(CblasColMajor, CblasUpper, A.GetM(),
3242 reinterpret_cast<const void*
>(&alpha),
3243 reinterpret_cast<const void*
>(X.GetData()), 1,
3244 reinterpret_cast<const void*
>(Y.GetData()), 1,
3245 reinterpret_cast<void*
>(A.GetData()));
3249 template <
class Allocator0,
3250 class Prop1,
class Allocator1,
3253 Rank2Update(
const complex<float>& alpha,
3254 const Vector<complex<float>, VectFull, Allocator0>& X,
3255 const Vector<complex<float>, VectFull, Allocator2>& Y,
3256 Matrix<complex<float>, Prop1, ColHerm, Allocator1>& A)
3259 #ifdef SELDON_CHECK_DIMENSIONS
3260 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3261 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3264 cblas_cher2(CblasColMajor, CblasUpper, A.GetM(),
3265 reinterpret_cast<const void*
>(&alpha),
3266 reinterpret_cast<const void*
>(X.GetData()), 1,
3267 reinterpret_cast<const void*
>(Y.GetData()), 1,
3268 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3272 template <
class Allocator0,
3273 class Prop1,
class Allocator1,
3276 Rank2Update(
const complex<double>& alpha,
3277 const Vector<complex<double>, VectFull, Allocator0>& X,
3278 const Vector<complex<double>, VectFull, Allocator2>& Y,
3279 Matrix<complex<double>, Prop1, ColHerm, Allocator1>& A)
3282 #ifdef SELDON_CHECK_DIMENSIONS
3283 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3284 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3287 cblas_zher2(CblasColMajor, CblasUpper, A.GetM(),
3288 reinterpret_cast<const void*
>(&alpha),
3289 reinterpret_cast<const void*
>(X.GetData()), 1,
3290 reinterpret_cast<const void*
>(Y.GetData()), 1,
3291 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3298 template <
class Allocator0,
3299 class Prop1,
class Allocator1,
3301 void Rank2Update(
const float& alpha,
3302 const Vector<float, VectFull, Allocator0>& X,
3303 const Vector<float, VectFull, Allocator2>& Y,
3304 const SeldonUplo& Uplo,
3305 Matrix<float, Prop1, ColSymPacked, Allocator1>& A)
3308 #ifdef SELDON_CHECK_DIMENSIONS
3309 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3310 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3313 cblas_sspr2(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
3314 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3318 template <
class Allocator0,
3319 class Prop1,
class Allocator1,
3321 void Rank2Update(
const double& alpha,
3322 const Vector<double, VectFull, Allocator0>& X,
3323 const Vector<double, VectFull, Allocator2>& Y,
3324 const SeldonUplo& Uplo,
3325 Matrix<double, Prop1, ColSymPacked, Allocator1>& A)
3328 #ifdef SELDON_CHECK_DIMENSIONS
3329 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3330 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3333 cblas_dspr2(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
3334 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3338 template <
class Allocator0,
3339 class Prop1,
class Allocator1,
3341 void Rank2Update(
const float& alpha,
3342 const Vector<float, VectFull, Allocator0>& X,
3343 const Vector<float, VectFull, Allocator2>& Y,
3344 const SeldonUplo& Uplo,
3345 Matrix<float, Prop1, ColSym, Allocator1>& A)
3348 #ifdef SELDON_CHECK_DIMENSIONS
3349 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3350 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3353 cblas_ssyr2(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
3354 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3358 template <
class Allocator0,
3359 class Prop1,
class Allocator1,
3361 void Rank2Update(
const double& alpha,
3362 const Vector<double, VectFull, Allocator0>& X,
3363 const Vector<double, VectFull, Allocator2>& Y,
3364 const SeldonUplo& Uplo,
3365 Matrix<double, Prop1, ColSym, Allocator1>& A)
3368 #ifdef SELDON_CHECK_DIMENSIONS
3369 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3370 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3373 cblas_dsyr2(CblasColMajor, Uplo.Cblas(), A.GetM(), alpha,
3374 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3378 template <
class Allocator0,
3379 class Prop1,
class Allocator1,
3382 Rank2Update(
const complex<float>& alpha,
3383 const Vector<complex<float>, VectFull, Allocator0>& X,
3384 const Vector<complex<float>, VectFull, Allocator2>& Y,
3385 const SeldonUplo& Uplo,
3386 Matrix<complex<float>, Prop1, ColHermPacked, Allocator1>& A)
3389 #ifdef SELDON_CHECK_DIMENSIONS
3390 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3391 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3394 cblas_chpr2(CblasColMajor, Uplo.Cblas(), A.GetM(),
3395 reinterpret_cast<const void*
>(&alpha),
3396 reinterpret_cast<const void*
>(X.GetData()), 1,
3397 reinterpret_cast<const void*
>(Y.GetData()), 1,
3398 reinterpret_cast<void*
>(A.GetData()));
3402 template <
class Allocator0,
3403 class Prop1,
class Allocator1,
3406 Rank2Update(
const complex<double>& alpha,
3407 const Vector<complex<double>, VectFull, Allocator0>& X,
3408 const Vector<complex<double>, VectFull, Allocator2>& Y,
3409 const SeldonUplo& Uplo,
3410 Matrix<complex<double>, Prop1, ColHermPacked, Allocator1>& A)
3413 #ifdef SELDON_CHECK_DIMENSIONS
3414 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3415 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3418 cblas_zhpr2(CblasColMajor, Uplo.Cblas(), A.GetM(),
3419 reinterpret_cast<const void*
>(&alpha),
3420 reinterpret_cast<const void*
>(X.GetData()), 1,
3421 reinterpret_cast<const void*
>(Y.GetData()), 1,
3422 reinterpret_cast<void*
>(A.GetData()));
3426 template <
class Allocator0,
3427 class Prop1,
class Allocator1,
3430 Rank2Update(
const complex<float>& alpha,
3431 const Vector<complex<float>, VectFull, Allocator0>& X,
3432 const Vector<complex<float>, VectFull, Allocator2>& Y,
3433 const SeldonUplo& Uplo,
3434 Matrix<complex<float>, Prop1, ColHerm, Allocator1>& A)
3437 #ifdef SELDON_CHECK_DIMENSIONS
3438 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3439 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3442 cblas_cher2(CblasColMajor, Uplo.Cblas(), A.GetM(),
3443 reinterpret_cast<const void*
>(&alpha),
3444 reinterpret_cast<const void*
>(X.GetData()), 1,
3445 reinterpret_cast<const void*
>(Y.GetData()), 1,
3446 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3450 template <
class Allocator0,
3451 class Prop1,
class Allocator1,
3454 Rank2Update(
const complex<double>& alpha,
3455 const Vector<complex<double>, VectFull, Allocator0>& X,
3456 const Vector<complex<double>, VectFull, Allocator2>& Y,
3457 const SeldonUplo& Uplo,
3458 Matrix<complex<double>, Prop1, ColHerm, Allocator1>& A)
3461 #ifdef SELDON_CHECK_DIMENSIONS
3462 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3463 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3466 cblas_zher2(CblasColMajor, Uplo.Cblas(), A.GetM(),
3467 reinterpret_cast<const void*
>(&alpha),
3468 reinterpret_cast<const void*
>(X.GetData()), 1,
3469 reinterpret_cast<const void*
>(Y.GetData()), 1,
3470 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3477 template <
class Allocator0,
3478 class Prop1,
class Allocator1,
3480 void Rank2Update(
const float& alpha,
3481 const Vector<float, VectFull, Allocator0>& X,
3482 const Vector<float, VectFull, Allocator2>& Y,
3483 Matrix<float, Prop1, RowSymPacked, Allocator1>& A)
3486 #ifdef SELDON_CHECK_DIMENSIONS
3487 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3488 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3491 cblas_sspr2(CblasRowMajor, CblasUpper, A.GetM(), alpha,
3492 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3496 template <
class Allocator0,
3497 class Prop1,
class Allocator1,
3499 void Rank2Update(
const double& alpha,
3500 const Vector<double, VectFull, Allocator0>& X,
3501 const Vector<double, VectFull, Allocator2>& Y,
3502 Matrix<double, Prop1, RowSymPacked, Allocator1>& A)
3505 #ifdef SELDON_CHECK_DIMENSIONS
3506 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3507 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3510 cblas_dspr2(CblasRowMajor, CblasUpper, A.GetM(), alpha,
3511 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3515 template <
class Allocator0,
3516 class Prop1,
class Allocator1,
3518 void Rank2Update(
const float& alpha,
3519 const Vector<float, VectFull, Allocator0>& X,
3520 const Vector<float, VectFull, Allocator2>& Y,
3521 Matrix<float, Prop1, RowSym, Allocator1>& A)
3524 #ifdef SELDON_CHECK_DIMENSIONS
3525 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3526 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3529 cblas_ssyr2(CblasRowMajor, CblasUpper, A.GetM(), alpha,
3530 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3534 template <
class Allocator0,
3535 class Prop1,
class Allocator1,
3537 void Rank2Update(
const double& alpha,
3538 const Vector<double, VectFull, Allocator0>& X,
3539 const Vector<double, VectFull, Allocator2>& Y,
3540 Matrix<double, Prop1, RowSym, Allocator1>& A)
3543 #ifdef SELDON_CHECK_DIMENSIONS
3544 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3545 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3548 cblas_dsyr2(CblasRowMajor, CblasUpper, A.GetM(), alpha,
3549 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3553 template <
class Allocator0,
3554 class Prop1,
class Allocator1,
3557 Rank2Update(
const complex<float>& alpha,
3558 const Vector<complex<float>, VectFull, Allocator0>& X,
3559 const Vector<complex<float>, VectFull, Allocator2>& Y,
3560 Matrix<complex<float>, Prop1, RowHermPacked, Allocator1>& A)
3563 #ifdef SELDON_CHECK_DIMENSIONS
3564 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3565 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3568 cblas_chpr2(CblasRowMajor, CblasUpper, A.GetM(),
3569 reinterpret_cast<const void*
>(&alpha),
3570 reinterpret_cast<const void*
>(X.GetData()), 1,
3571 reinterpret_cast<const void*
>(Y.GetData()), 1,
3572 reinterpret_cast<void*
>(A.GetData()));
3576 template <
class Allocator0,
3577 class Prop1,
class Allocator1,
3580 Rank2Update(
const complex<double>& alpha,
3581 const Vector<complex<double>, VectFull, Allocator0>& X,
3582 const Vector<complex<double>, VectFull, Allocator2>& Y,
3583 Matrix<complex<double>, Prop1, RowHermPacked, Allocator1>& A)
3586 #ifdef SELDON_CHECK_DIMENSIONS
3587 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3588 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3591 cblas_zhpr2(CblasRowMajor, CblasUpper, A.GetM(),
3592 reinterpret_cast<const void*
>(&alpha),
3593 reinterpret_cast<const void*
>(X.GetData()), 1,
3594 reinterpret_cast<const void*
>(Y.GetData()), 1,
3595 reinterpret_cast<void*
>(A.GetData()));
3599 template <
class Allocator0,
3600 class Prop1,
class Allocator1,
3603 Rank2Update(
const complex<float>& alpha,
3604 const Vector<complex<float>, VectFull, Allocator0>& X,
3605 const Vector<complex<float>, VectFull, Allocator2>& Y,
3606 Matrix<complex<float>, Prop1, RowHerm, Allocator1>& A)
3609 #ifdef SELDON_CHECK_DIMENSIONS
3610 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3611 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3614 cblas_cher2(CblasRowMajor, CblasUpper, A.GetM(),
3615 reinterpret_cast<const void*
>(&alpha),
3616 reinterpret_cast<const void*
>(X.GetData()), 1,
3617 reinterpret_cast<const void*
>(Y.GetData()), 1,
3618 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3622 template <
class Allocator0,
3623 class Prop1,
class Allocator1,
3626 Rank2Update(
const complex<double>& alpha,
3627 const Vector<complex<double>, VectFull, Allocator0>& X,
3628 const Vector<complex<double>, VectFull, Allocator2>& Y,
3629 Matrix<complex<double>, Prop1, RowHerm, Allocator1>& A)
3632 #ifdef SELDON_CHECK_DIMENSIONS
3633 CheckDim(A, X,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3634 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, M)",
"X.Y' + Y.X' + M");
3637 cblas_zher2(CblasRowMajor, CblasUpper, A.GetM(),
3638 reinterpret_cast<const void*
>(&alpha),
3639 reinterpret_cast<const void*
>(X.GetData()), 1,
3640 reinterpret_cast<const void*
>(Y.GetData()), 1,
3641 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3648 template <
class Allocator0,
3649 class Prop1,
class Allocator1,
3651 void Rank2Update(
const float& alpha,
3652 const Vector<float, VectFull, Allocator0>& X,
3653 const Vector<float, VectFull, Allocator2>& Y,
3654 const SeldonUplo& Uplo,
3655 Matrix<float, Prop1, RowSymPacked, Allocator1>& A)
3658 #ifdef SELDON_CHECK_DIMENSIONS
3659 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3660 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3663 cblas_sspr2(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3664 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3668 template <
class Allocator0,
3669 class Prop1,
class Allocator1,
3671 void Rank2Update(
const double& alpha,
3672 const Vector<double, VectFull, Allocator0>& X,
3673 const Vector<double, VectFull, Allocator2>& Y,
3674 const SeldonUplo& Uplo,
3675 Matrix<double, Prop1, RowSymPacked, Allocator1>& A)
3678 #ifdef SELDON_CHECK_DIMENSIONS
3679 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3680 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3683 cblas_dspr2(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3684 X.GetData(), 1, Y.GetData(), 1, A.GetData());
3688 template <
class Allocator0,
3689 class Prop1,
class Allocator1,
3691 void Rank2Update(
const float& alpha,
3692 const Vector<float, VectFull, Allocator0>& X,
3693 const Vector<float, VectFull, Allocator2>& Y,
3694 const SeldonUplo& Uplo,
3695 Matrix<float, Prop1, RowSym, Allocator1>& A)
3698 #ifdef SELDON_CHECK_DIMENSIONS
3699 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3700 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3703 cblas_ssyr2(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3704 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3708 template <
class Allocator0,
3709 class Prop1,
class Allocator1,
3711 void Rank2Update(
const double& alpha,
3712 const Vector<double, VectFull, Allocator0>& X,
3713 const Vector<double, VectFull, Allocator2>& Y,
3714 const SeldonUplo& Uplo,
3715 Matrix<double, Prop1, RowSym, Allocator1>& A)
3718 #ifdef SELDON_CHECK_DIMENSIONS
3719 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3720 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3723 cblas_dsyr2(CblasRowMajor, Uplo.Cblas(), A.GetM(), alpha,
3724 X.GetData(), 1, Y.GetData(), 1, A.GetData(), A.GetM());
3728 template <
class Allocator0,
3729 class Prop1,
class Allocator1,
3732 Rank2Update(
const complex<float>& alpha,
3733 const Vector<complex<float>, VectFull, Allocator0>& X,
3734 const Vector<complex<float>, VectFull, Allocator2>& Y,
3735 const SeldonUplo& Uplo,
3736 Matrix<complex<float>, Prop1, RowHermPacked, Allocator1>& A)
3739 #ifdef SELDON_CHECK_DIMENSIONS
3740 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3741 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3744 cblas_chpr2(CblasRowMajor, Uplo.Cblas(), A.GetM(),
3745 reinterpret_cast<const void*
>(&alpha),
3746 reinterpret_cast<const void*
>(X.GetData()), 1,
3747 reinterpret_cast<const void*
>(Y.GetData()), 1,
3748 reinterpret_cast<void*
>(A.GetData()));
3752 template <
class Allocator0,
3753 class Prop1,
class Allocator1,
3756 Rank2Update(
const complex<double>& alpha,
3757 const Vector<complex<double>, VectFull, Allocator0>& X,
3758 const Vector<complex<double>, VectFull, Allocator2>& Y,
3759 const SeldonUplo& Uplo,
3760 Matrix<complex<double>, Prop1, RowHermPacked, Allocator1>& A)
3763 #ifdef SELDON_CHECK_DIMENSIONS
3764 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3765 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3768 cblas_zhpr2(CblasRowMajor, Uplo.Cblas(), A.GetM(),
3769 reinterpret_cast<const void*
>(&alpha),
3770 reinterpret_cast<const void*
>(X.GetData()), 1,
3771 reinterpret_cast<const void*
>(Y.GetData()), 1,
3772 reinterpret_cast<void*
>(A.GetData()));
3776 template <
class Allocator0,
3777 class Prop1,
class Allocator1,
3780 Rank2Update(
const complex<float>& alpha,
3781 const Vector<complex<float>, VectFull, Allocator0>& X,
3782 const Vector<complex<float>, VectFull, Allocator2>& Y,
3783 const SeldonUplo& Uplo,
3784 Matrix<complex<float>, Prop1, RowHerm, Allocator1>& A)
3787 #ifdef SELDON_CHECK_DIMENSIONS
3788 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3789 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3792 cblas_cher2(CblasRowMajor, Uplo.Cblas(), A.GetM(),
3793 reinterpret_cast<const void*
>(&alpha),
3794 reinterpret_cast<const void*
>(X.GetData()), 1,
3795 reinterpret_cast<const void*
>(Y.GetData()), 1,
3796 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3800 template <
class Allocator0,
3801 class Prop1,
class Allocator1,
3804 Rank2Update(
const complex<double>& alpha,
3805 const Vector<complex<double>, VectFull, Allocator0>& X,
3806 const Vector<complex<double>, VectFull, Allocator2>& Y,
3807 const SeldonUplo& Uplo,
3808 Matrix<complex<double>, Prop1, RowHerm, Allocator1>& A)
3811 #ifdef SELDON_CHECK_DIMENSIONS
3812 CheckDim(A, X,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3813 CheckDim(A, Y,
"Rank2Update(alpha, X, Y, uplo, M)",
"X.Y' + Y.X' + M");
3816 cblas_zher2(CblasRowMajor, Uplo.Cblas(), A.GetM(),
3817 reinterpret_cast<const void*
>(&alpha),
3818 reinterpret_cast<const void*
>(X.GetData()), 1,
3819 reinterpret_cast<const void*
>(Y.GetData()), 1,
3820 reinterpret_cast<void*
>(A.GetData()), A.GetM());
3836 template <
class Prop0,
class Allocator0,
3838 void Solve(
const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
3839 Vector<float, VectFull, Allocator1>& X)
3842 #ifdef SELDON_CHECK_DIMENSIONS
3846 cblas_strsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
3847 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
3851 template <
class Prop0,
class Allocator0,
3853 void Solve(
const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
3854 Vector<double, VectFull, Allocator1>& X)
3857 #ifdef SELDON_CHECK_DIMENSIONS
3861 cblas_dtrsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
3862 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
3866 template <
class Prop0,
class Allocator0,
3869 Solve(
const Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,
3870 Vector<complex<float>, VectFull, Allocator1>& X)
3873 #ifdef SELDON_CHECK_DIMENSIONS
3877 cblas_ctrsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
3878 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
3879 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
3883 template <
class Prop0,
class Allocator0,
3886 Solve(
const Matrix<complex<double>, Prop0,
3887 ColUpTriang, Allocator0>& A,
3888 Vector<complex<double>, VectFull, Allocator1>& X)
3891 #ifdef SELDON_CHECK_DIMENSIONS
3895 cblas_ztrsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
3896 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
3897 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
3904 template <
class Prop0,
class Allocator0,
3906 void Solve(
const SeldonTranspose& TransA,
3907 const SeldonDiag& DiagA,
3908 const Matrix<float, Prop0, ColUpTriang, Allocator0>& A,
3909 Vector<float, VectFull, Allocator1>& X)
3912 #ifdef SELDON_CHECK_DIMENSIONS
3913 CheckDim(A, X,
"Solve(status, diag, M, X)");
3916 cblas_strsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
3917 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
3921 template <
class Prop0,
class Allocator0,
3923 void Solve(
const SeldonTranspose& TransA,
3924 const SeldonDiag& DiagA,
3925 const Matrix<double, Prop0, ColUpTriang, Allocator0>& A,
3926 Vector<double, VectFull, Allocator1>& X)
3929 #ifdef SELDON_CHECK_DIMENSIONS
3930 CheckDim(A, X,
"Solve(status, diag, M, X)");
3933 cblas_dtrsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
3934 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
3938 template <
class Prop0,
class Allocator0,
3941 Solve(
const SeldonTranspose& TransA,
3942 const SeldonDiag& DiagA,
3943 const Matrix<complex<float>, Prop0, ColUpTriang, Allocator0>& A,
3944 Vector<complex<float>, VectFull, Allocator1>& X)
3947 #ifdef SELDON_CHECK_DIMENSIONS
3948 CheckDim(A, X,
"Solve(status, diag, M, X)");
3951 cblas_ctrsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
3952 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
3953 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
3957 template <
class Prop0,
class Allocator0,
3960 Solve(
const SeldonTranspose& TransA,
3961 const SeldonDiag& DiagA,
3962 const Matrix<complex<double>, Prop0,
3963 ColUpTriang, Allocator0>& A,
3964 Vector<complex<double>, VectFull, Allocator1>& X)
3967 #ifdef SELDON_CHECK_DIMENSIONS
3968 CheckDim(A, X,
"Solve(status, diag, M, X)");
3971 cblas_ztrsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
3972 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
3973 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
3980 template <
class Prop0,
class Allocator0,
3982 void Solve(
const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
3983 Vector<float, VectFull, Allocator1>& X)
3986 #ifdef SELDON_CHECK_DIMENSIONS
3990 cblas_strsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
3991 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
3995 template <
class Prop0,
class Allocator0,
3997 void Solve(
const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
3998 Vector<double, VectFull, Allocator1>& X)
4001 #ifdef SELDON_CHECK_DIMENSIONS
4005 cblas_dtrsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4006 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4010 template <
class Prop0,
class Allocator0,
4013 Solve(
const Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,
4014 Vector<complex<float>, VectFull, Allocator1>& X)
4017 #ifdef SELDON_CHECK_DIMENSIONS
4021 cblas_ctrsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4022 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4023 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4027 template <
class Prop0,
class Allocator0,
4030 Solve(
const Matrix<complex<double>, Prop0,
4031 ColLoTriang, Allocator0>& A,
4032 Vector<complex<double>, VectFull, Allocator1>& X)
4035 #ifdef SELDON_CHECK_DIMENSIONS
4039 cblas_ztrsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4040 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4041 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4048 template <
class Prop0,
class Allocator0,
4050 void Solve(
const SeldonTranspose& TransA,
4051 const SeldonDiag& DiagA,
4052 const Matrix<float, Prop0, ColLoTriang, Allocator0>& A,
4053 Vector<float, VectFull, Allocator1>& X)
4056 #ifdef SELDON_CHECK_DIMENSIONS
4057 CheckDim(A, X,
"Solve(status, uplo, M, X)");
4060 cblas_strsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4061 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4065 template <
class Prop0,
class Allocator0,
4067 void Solve(
const SeldonTranspose& TransA,
4068 const SeldonDiag& DiagA,
4069 const Matrix<double, Prop0, ColLoTriang, Allocator0>& A,
4070 Vector<double, VectFull, Allocator1>& X)
4073 #ifdef SELDON_CHECK_DIMENSIONS
4074 CheckDim(A, X,
"Solve(status, uplo, M, X)");
4077 cblas_dtrsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4078 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4082 template <
class Prop0,
class Allocator0,
4085 Solve(
const SeldonTranspose& TransA,
4086 const SeldonDiag& DiagA,
4087 const Matrix<complex<float>, Prop0, ColLoTriang, Allocator0>& A,
4088 Vector<complex<float>, VectFull, Allocator1>& X)
4091 #ifdef SELDON_CHECK_DIMENSIONS
4092 CheckDim(A, X,
"Solve(status, uplo, M, X)");
4095 cblas_ctrsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4096 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4097 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4101 template <
class Prop0,
class Allocator0,
4104 Solve(
const SeldonTranspose& TransA,
4105 const SeldonDiag& DiagA,
4106 const Matrix<complex<double>, Prop0,
4107 ColLoTriang, Allocator0>& A,
4108 Vector<complex<double>, VectFull, Allocator1>& X)
4111 #ifdef SELDON_CHECK_DIMENSIONS
4112 CheckDim(A, X,
"Solve(status, uplo, M, X)");
4115 cblas_ztrsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4116 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4117 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4124 template <
class Prop0,
class Allocator0,
4126 void Solve(
const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
4127 Vector<float, VectFull, Allocator1>& X)
4130 #ifdef SELDON_CHECK_DIMENSIONS
4134 cblas_strsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4135 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4139 template <
class Prop0,
class Allocator0,
4141 void Solve(
const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
4142 Vector<double, VectFull, Allocator1>& X)
4145 #ifdef SELDON_CHECK_DIMENSIONS
4149 cblas_dtrsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4150 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4154 template <
class Prop0,
class Allocator0,
4157 Solve(
const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
4158 Vector<complex<float>, VectFull, Allocator1>& X)
4161 #ifdef SELDON_CHECK_DIMENSIONS
4165 cblas_ctrsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4166 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4167 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4171 template <
class Prop0,
class Allocator0,
4174 Solve(
const Matrix<complex<double>, Prop0,
4175 RowUpTriang, Allocator0>& A,
4176 Vector<complex<double>, VectFull, Allocator1>& X)
4179 #ifdef SELDON_CHECK_DIMENSIONS
4183 cblas_ztrsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4184 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4185 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4192 template <
class Prop0,
class Allocator0,
4194 void Solve(
const SeldonTranspose& TransA,
4195 const SeldonDiag& DiagA,
4196 const Matrix<float, Prop0, RowUpTriang, Allocator0>& A,
4197 Vector<float, VectFull, Allocator1>& X)
4200 #ifdef SELDON_CHECK_DIMENSIONS
4201 CheckDim(A, X,
"Solve(status, diag, M, X)");
4204 cblas_strsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4205 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4209 template <
class Prop0,
class Allocator0,
4211 void Solve(
const SeldonTranspose& TransA,
4212 const SeldonDiag& DiagA,
4213 const Matrix<double, Prop0, RowUpTriang, Allocator0>& A,
4214 Vector<double, VectFull, Allocator1>& X)
4217 #ifdef SELDON_CHECK_DIMENSIONS
4218 CheckDim(A, X,
"Solve(status, diag, M, X)");
4221 cblas_dtrsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4222 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4226 template <
class Prop0,
class Allocator0,
4229 Solve(
const SeldonTranspose& TransA,
4230 const SeldonDiag& DiagA,
4231 const Matrix<complex<float>, Prop0, RowUpTriang, Allocator0>& A,
4232 Vector<complex<float>, VectFull, Allocator1>& X)
4235 #ifdef SELDON_CHECK_DIMENSIONS
4236 CheckDim(A, X,
"Solve(status, diag, M, X)");
4239 cblas_ctrsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4240 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4241 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4245 template <
class Prop0,
class Allocator0,
4248 Solve(
const SeldonTranspose& TransA,
4249 const SeldonDiag& DiagA,
4250 const Matrix<complex<double>, Prop0,
4251 RowUpTriang, Allocator0>& A,
4252 Vector<complex<double>, VectFull, Allocator1>& X)
4255 #ifdef SELDON_CHECK_DIMENSIONS
4256 CheckDim(A, X,
"Solve(status, diag, M, X)");
4259 cblas_ztrsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4260 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4261 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4268 template <
class Prop0,
class Allocator0,
4270 void Solve(
const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
4271 Vector<float, VectFull, Allocator1>& X)
4274 #ifdef SELDON_CHECK_DIMENSIONS
4278 cblas_strsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4279 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4283 template <
class Prop0,
class Allocator0,
4285 void Solve(
const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
4286 Vector<double, VectFull, Allocator1>& X)
4289 #ifdef SELDON_CHECK_DIMENSIONS
4293 cblas_dtrsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4294 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4298 template <
class Prop0,
class Allocator0,
4301 Solve(
const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
4302 Vector<complex<float>, VectFull, Allocator1>& X)
4305 #ifdef SELDON_CHECK_DIMENSIONS
4309 cblas_ctrsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4310 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4311 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4315 template <
class Prop0,
class Allocator0,
4318 Solve(
const Matrix<complex<double>, Prop0,
4319 RowLoTriang, Allocator0>& A,
4320 Vector<complex<double>, VectFull, Allocator1>& X)
4323 #ifdef SELDON_CHECK_DIMENSIONS
4327 cblas_ztrsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4328 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4329 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4336 template <
class Prop0,
class Allocator0,
4338 void Solve(
const SeldonTranspose& TransA,
4339 const SeldonDiag& DiagA,
4340 const Matrix<float, Prop0, RowLoTriang, Allocator0>& A,
4341 Vector<float, VectFull, Allocator1>& X)
4344 #ifdef SELDON_CHECK_DIMENSIONS
4345 CheckDim(A, X,
"Solve(status, diag, M, X)");
4348 cblas_strsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4349 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4353 template <
class Prop0,
class Allocator0,
4355 void Solve(
const SeldonTranspose& TransA,
4356 const SeldonDiag& DiagA,
4357 const Matrix<double, Prop0, RowLoTriang, Allocator0>& A,
4358 Vector<double, VectFull, Allocator1>& X)
4361 #ifdef SELDON_CHECK_DIMENSIONS
4362 CheckDim(A, X,
"Solve(status, diag, M, X)");
4365 cblas_dtrsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4366 A.GetN(), A.GetData(), A.GetM(), X.GetData(), 1);
4370 template <
class Prop0,
class Allocator0,
4373 Solve(
const SeldonTranspose& TransA,
4374 const SeldonDiag& DiagA,
4375 const Matrix<complex<float>, Prop0, RowLoTriang, Allocator0>& A,
4376 Vector<complex<float>, VectFull, Allocator1>& X)
4379 #ifdef SELDON_CHECK_DIMENSIONS
4380 CheckDim(A, X,
"Solve(status, diag, M, X)");
4383 cblas_ctrsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4384 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4385 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4389 template <
class Prop0,
class Allocator0,
4392 Solve(
const SeldonTranspose& TransA,
4393 const SeldonDiag& DiagA,
4394 const Matrix<complex<double>, Prop0,
4395 RowLoTriang, Allocator0>& A,
4396 Vector<complex<double>, VectFull, Allocator1>& X)
4399 #ifdef SELDON_CHECK_DIMENSIONS
4400 CheckDim(A, X,
"Solve(status, diag, M, X)");
4403 cblas_ztrsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4404 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4405 A.GetM(),
reinterpret_cast<void*
>(X.GetData()), 1);
4412 template <
class Prop0,
class Allocator0,
4414 void Solve(
const Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
4415 Vector<float, VectFull, Allocator1>& X)
4418 #ifdef SELDON_CHECK_DIMENSIONS
4422 cblas_stpsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4423 A.GetN(), A.GetData(), X.GetData(), 1);
4427 template <
class Prop0,
class Allocator0,
4429 void Solve(
const Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
4430 Vector<double, VectFull, Allocator1>& X)
4433 #ifdef SELDON_CHECK_DIMENSIONS
4437 cblas_dtpsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4438 A.GetN(), A.GetData(), X.GetData(), 1);
4442 template <
class Prop0,
class Allocator0,
4445 Solve(
const Matrix<complex<float>, Prop0, ColUpTriangPacked, Allocator0>& A,
4446 Vector<complex<float>, VectFull, Allocator1>& X)
4449 #ifdef SELDON_CHECK_DIMENSIONS
4453 cblas_ctpsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4454 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4455 reinterpret_cast<void*
>(X.GetData()), 1);
4459 template <
class Prop0,
class Allocator0,
4462 Solve(
const Matrix<complex<double>, Prop0,
4463 ColUpTriangPacked, Allocator0>& A,
4464 Vector<complex<double>, VectFull, Allocator1>& X)
4467 #ifdef SELDON_CHECK_DIMENSIONS
4471 cblas_ztpsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4472 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4473 reinterpret_cast<void*
>(X.GetData()), 1);
4480 template <
class Prop0,
class Allocator0,
4482 void Solve(
const SeldonTranspose& TransA,
4483 const SeldonDiag& DiagA,
4484 const Matrix<float, Prop0, ColUpTriangPacked, Allocator0>& A,
4485 Vector<float, VectFull, Allocator1>& X)
4488 #ifdef SELDON_CHECK_DIMENSIONS
4489 CheckDim(A, X,
"Solve(status, diag, M, X)");
4492 cblas_stpsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4493 A.GetN(), A.GetData(), X.GetData(), 1);
4497 template <
class Prop0,
class Allocator0,
4499 void Solve(
const SeldonTranspose& TransA,
4500 const SeldonDiag& DiagA,
4501 const Matrix<double, Prop0, ColUpTriangPacked, Allocator0>& A,
4502 Vector<double, VectFull, Allocator1>& X)
4505 #ifdef SELDON_CHECK_DIMENSIONS
4506 CheckDim(A, X,
"Solve(status, diag, M, X)");
4509 cblas_dtpsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4510 A.GetN(), A.GetData(), X.GetData(), 1);
4514 template <
class Prop0,
class Allocator0,
4517 Solve(
const SeldonTranspose& TransA,
4518 const SeldonDiag& DiagA,
4519 const Matrix<complex<float>, Prop0, ColUpTriangPacked, Allocator0>& A,
4520 Vector<complex<float>, VectFull, Allocator1>& X)
4523 #ifdef SELDON_CHECK_DIMENSIONS
4524 CheckDim(A, X,
"Solve(status, diag, M, X)");
4527 cblas_ctpsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4528 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4529 reinterpret_cast<void*
>(X.GetData()), 1);
4533 template <
class Prop0,
class Allocator0,
4536 Solve(
const SeldonTranspose& TransA,
4537 const SeldonDiag& DiagA,
4538 const Matrix<complex<double>, Prop0,
4539 ColUpTriangPacked, Allocator0>& A,
4540 Vector<complex<double>, VectFull, Allocator1>& X)
4543 #ifdef SELDON_CHECK_DIMENSIONS
4544 CheckDim(A, X,
"Solve(status, diag, M, X)");
4547 cblas_ztpsv(CblasColMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4548 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4549 reinterpret_cast<void*
>(X.GetData()), 1);
4556 template <
class Prop0,
class Allocator0,
4558 void Solve(
const Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
4559 Vector<float, VectFull, Allocator1>& X)
4562 #ifdef SELDON_CHECK_DIMENSIONS
4566 cblas_stpsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4567 A.GetN(), A.GetData(), X.GetData(), 1);
4571 template <
class Prop0,
class Allocator0,
4573 void Solve(
const Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
4574 Vector<double, VectFull, Allocator1>& X)
4577 #ifdef SELDON_CHECK_DIMENSIONS
4581 cblas_dtpsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4582 A.GetN(), A.GetData(), X.GetData(), 1);
4586 template <
class Prop0,
class Allocator0,
4589 Solve(
const Matrix<complex<float>, Prop0, ColLoTriangPacked, Allocator0>& A,
4590 Vector<complex<float>, VectFull, Allocator1>& X)
4593 #ifdef SELDON_CHECK_DIMENSIONS
4597 cblas_ctpsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4598 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4599 reinterpret_cast<void*
>(X.GetData()), 1);
4603 template <
class Prop0,
class Allocator0,
4606 Solve(
const Matrix<complex<double>, Prop0,
4607 ColLoTriangPacked, Allocator0>& A,
4608 Vector<complex<double>, VectFull, Allocator1>& X)
4611 #ifdef SELDON_CHECK_DIMENSIONS
4615 cblas_ztpsv(CblasColMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4616 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4617 reinterpret_cast<void*
>(X.GetData()), 1);
4624 template <
class Prop0,
class Allocator0,
4626 void Solve(
const SeldonTranspose& TransA,
4627 const SeldonDiag& DiagA,
4628 const Matrix<float, Prop0, ColLoTriangPacked, Allocator0>& A,
4629 Vector<float, VectFull, Allocator1>& X)
4632 #ifdef SELDON_CHECK_DIMENSIONS
4633 CheckDim(A, X,
"Solve(status, diag, M, X)");
4636 cblas_stpsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4637 A.GetN(), A.GetData(), X.GetData(), 1);
4641 template <
class Prop0,
class Allocator0,
4643 void Solve(
const SeldonTranspose& TransA,
4644 const SeldonDiag& DiagA,
4645 const Matrix<double, Prop0, ColLoTriangPacked, Allocator0>& A,
4646 Vector<double, VectFull, Allocator1>& X)
4649 #ifdef SELDON_CHECK_DIMENSIONS
4650 CheckDim(A, X,
"Solve(status, diag, M, X)");
4653 cblas_dtpsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4654 A.GetN(), A.GetData(), X.GetData(), 1);
4658 template <
class Prop0,
class Allocator0,
4661 Solve(
const SeldonTranspose& TransA,
4662 const SeldonDiag& DiagA,
4663 const Matrix<complex<float>, Prop0, ColLoTriangPacked, Allocator0>& A,
4664 Vector<complex<float>, VectFull, Allocator1>& X)
4667 #ifdef SELDON_CHECK_DIMENSIONS
4668 CheckDim(A, X,
"Solve(status, diag, M, X)");
4671 cblas_ctpsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4672 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4673 reinterpret_cast<void*
>(X.GetData()), 1);
4677 template <
class Prop0,
class Allocator0,
4680 Solve(
const SeldonTranspose& TransA,
4681 const SeldonDiag& DiagA,
4682 const Matrix<complex<double>, Prop0,
4683 ColLoTriangPacked, Allocator0>& A,
4684 Vector<complex<double>, VectFull, Allocator1>& X)
4687 #ifdef SELDON_CHECK_DIMENSIONS
4688 CheckDim(A, X,
"Solve(status, diag, M, X)");
4691 cblas_ztpsv(CblasColMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4692 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4693 reinterpret_cast<void*
>(X.GetData()), 1);
4700 template <
class Prop0,
class Allocator0,
4702 void Solve(
const Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
4703 Vector<float, VectFull, Allocator1>& X)
4706 #ifdef SELDON_CHECK_DIMENSIONS
4710 cblas_stpsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4711 A.GetN(), A.GetData(), X.GetData(), 1);
4715 template <
class Prop0,
class Allocator0,
4717 void Solve(
const Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
4718 Vector<double, VectFull, Allocator1>& X)
4721 #ifdef SELDON_CHECK_DIMENSIONS
4725 cblas_dtpsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4726 A.GetN(), A.GetData(), X.GetData(), 1);
4730 template <
class Prop0,
class Allocator0,
4733 Solve(
const Matrix<complex<float>, Prop0, RowUpTriangPacked, Allocator0>& A,
4734 Vector<complex<float>, VectFull, Allocator1>& X)
4737 #ifdef SELDON_CHECK_DIMENSIONS
4741 cblas_ctpsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4742 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4743 reinterpret_cast<void*
>(X.GetData()), 1);
4747 template <
class Prop0,
class Allocator0,
4750 Solve(
const Matrix<complex<double>, Prop0,
4751 RowUpTriangPacked, Allocator0>& A,
4752 Vector<complex<double>, VectFull, Allocator1>& X)
4755 #ifdef SELDON_CHECK_DIMENSIONS
4759 cblas_ztpsv(CblasRowMajor, CblasUpper, CblasNoTrans, CblasNonUnit,
4760 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4761 reinterpret_cast<void*
>(X.GetData()), 1);
4768 template <
class Prop0,
class Allocator0,
4770 void Solve(
const SeldonTranspose& TransA,
4771 const SeldonDiag& DiagA,
4772 const Matrix<float, Prop0, RowUpTriangPacked, Allocator0>& A,
4773 Vector<float, VectFull, Allocator1>& X)
4776 #ifdef SELDON_CHECK_DIMENSIONS
4777 CheckDim(A, X,
"Solve(status, diag, M, X)");
4780 cblas_stpsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4781 A.GetN(), A.GetData(), X.GetData(), 1);
4785 template <
class Prop0,
class Allocator0,
4787 void Solve(
const SeldonTranspose& TransA,
4788 const SeldonDiag& DiagA,
4789 const Matrix<double, Prop0, RowUpTriangPacked, Allocator0>& A,
4790 Vector<double, VectFull, Allocator1>& X)
4793 #ifdef SELDON_CHECK_DIMENSIONS
4794 CheckDim(A, X,
"Solve(status, diag, M, X)");
4797 cblas_dtpsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4798 A.GetN(), A.GetData(), X.GetData(), 1);
4802 template <
class Prop0,
class Allocator0,
4805 Solve(
const SeldonTranspose& TransA,
4806 const SeldonDiag& DiagA,
4807 const Matrix<complex<float>, Prop0, RowUpTriangPacked, Allocator0>& A,
4808 Vector<complex<float>, VectFull, Allocator1>& X)
4811 #ifdef SELDON_CHECK_DIMENSIONS
4812 CheckDim(A, X,
"Solve(status, diag, M, X)");
4815 cblas_ctpsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4816 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4817 reinterpret_cast<void*
>(X.GetData()), 1);
4821 template <
class Prop0,
class Allocator0,
4824 Solve(
const SeldonTranspose& TransA,
4825 const SeldonDiag& DiagA,
4826 const Matrix<complex<double>, Prop0,
4827 RowUpTriangPacked, Allocator0>& A,
4828 Vector<complex<double>, VectFull, Allocator1>& X)
4831 #ifdef SELDON_CHECK_DIMENSIONS
4832 CheckDim(A, X,
"Solve(status, diag, M, X)");
4835 cblas_ztpsv(CblasRowMajor, CblasUpper, TransA.Cblas(), DiagA.Cblas(),
4836 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4837 reinterpret_cast<void*
>(X.GetData()), 1);
4844 template <
class Prop0,
class Allocator0,
4846 void Solve(
const Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
4847 Vector<float, VectFull, Allocator1>& X)
4850 #ifdef SELDON_CHECK_DIMENSIONS
4854 cblas_stpsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4855 A.GetN(), A.GetData(), X.GetData(), 1);
4859 template <
class Prop0,
class Allocator0,
4861 void Solve(
const Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
4862 Vector<double, VectFull, Allocator1>& X)
4865 #ifdef SELDON_CHECK_DIMENSIONS
4869 cblas_dtpsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4870 A.GetN(), A.GetData(), X.GetData(), 1);
4874 template <
class Prop0,
class Allocator0,
4877 Solve(
const Matrix<complex<float>, Prop0, RowLoTriangPacked, Allocator0>& A,
4878 Vector<complex<float>, VectFull, Allocator1>& X)
4881 #ifdef SELDON_CHECK_DIMENSIONS
4885 cblas_ctpsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4886 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4887 reinterpret_cast<void*
>(X.GetData()), 1);
4891 template <
class Prop0,
class Allocator0,
4894 Solve(
const Matrix<complex<double>, Prop0,
4895 RowLoTriangPacked, Allocator0>& A,
4896 Vector<complex<double>, VectFull, Allocator1>& X)
4899 #ifdef SELDON_CHECK_DIMENSIONS
4903 cblas_ztpsv(CblasRowMajor, CblasLower, CblasNoTrans, CblasNonUnit,
4904 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4905 reinterpret_cast<void*
>(X.GetData()), 1);
4912 template <
class Prop0,
class Allocator0,
4914 void Solve(
const SeldonTranspose& TransA,
4915 const SeldonDiag& DiagA,
4916 const Matrix<float, Prop0, RowLoTriangPacked, Allocator0>& A,
4917 Vector<float, VectFull, Allocator1>& X)
4920 #ifdef SELDON_CHECK_DIMENSIONS
4921 CheckDim(A, X,
"Solve(status, diag, M, X)");
4924 cblas_stpsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4925 A.GetN(), A.GetData(), X.GetData(), 1);
4929 template <
class Prop0,
class Allocator0,
4931 void Solve(
const SeldonTranspose& TransA,
4932 const SeldonDiag& DiagA,
4933 const Matrix<double, Prop0, RowLoTriangPacked, Allocator0>& A,
4934 Vector<double, VectFull, Allocator1>& X)
4937 #ifdef SELDON_CHECK_DIMENSIONS
4938 CheckDim(A, X,
"Solve(status, diag, M, X)");
4941 cblas_dtpsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4942 A.GetN(), A.GetData(), X.GetData(), 1);
4946 template <
class Prop0,
class Allocator0,
4949 Solve(
const SeldonTranspose& TransA,
4950 const SeldonDiag& DiagA,
4951 const Matrix<complex<float>, Prop0, RowLoTriangPacked, Allocator0>& A,
4952 Vector<complex<float>, VectFull, Allocator1>& X)
4955 #ifdef SELDON_CHECK_DIMENSIONS
4956 CheckDim(A, X,
"Solve(status, diag, M, X)");
4959 cblas_ctpsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4960 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4961 reinterpret_cast<void*
>(X.GetData()), 1);
4965 template <
class Prop0,
class Allocator0,
4968 Solve(
const SeldonTranspose& TransA,
4969 const SeldonDiag& DiagA,
4970 const Matrix<complex<double>, Prop0,
4971 RowLoTriangPacked, Allocator0>& A,
4972 Vector<complex<double>, VectFull, Allocator1>& X)
4975 #ifdef SELDON_CHECK_DIMENSIONS
4976 CheckDim(A, X,
"Solve(status, diag, M, X)");
4979 cblas_ztpsv(CblasRowMajor, CblasLower, TransA.Cblas(), DiagA.Cblas(),
4980 A.GetN(),
reinterpret_cast<const void*
>(A.GetData()),
4981 reinterpret_cast<void*
>(X.GetData()), 1);
4991 #define SELDON_FILE_BLAS_2_CXX