@@ -31,7 +31,6 @@ See the \ref Matrix page for the documentation of the linear algebra package
3131#include " TMatrixDEigen.h"
3232#include " TMath.h"
3333
34-
3534// //////////////////////////////////////////////////////////////////////////////
3635// / Constructor for (nrows x ncols) matrix
3736
@@ -3077,22 +3076,68 @@ TMatrixT<Element> &TMatrixTAutoloadOps::ElementDiv(TMatrixT<Element> &target, co
30773076// / Elementary routine to calculate matrix multiplication A*B
30783077
30793078template <class Element >
3080- void TMatrixTAutoloadOps::AMultB (const Element *const ap, Int_t na, Int_t ncolsa, const Element *const bp, Int_t nb ,
3079+ void TMatrixTAutoloadOps::AMultB (const Element *const ap, Int_t na, Int_t ncolsa, const Element *const bp, Int_t /* nb */ ,
30813080 Int_t ncolsb, Element *cp)
30823081{
3083- const Element *arp0 = ap; // Pointer to A[i,0];
3084- while (arp0 < ap + na) {
3085- for (const Element *bcp = bp; bcp < bp + ncolsb;) { // Pointer to the j-th column of B, Start bcp = B[0,0]
3086- const Element *arp = arp0; // Pointer to the i-th row of A, reset to A[i,0]
3087- Element cij = 0 ;
3088- while (bcp < bp + nb) { // Scan the i-th row of A and
3089- cij += *arp++ * *bcp; // the j-th col of B
3090- bcp += ncolsb;
3082+ const Int_t M = na / ncolsa;
3083+ const Int_t N = ncolsa;
3084+ const Int_t P = ncolsb;
3085+
3086+ if (M <= 12 && N <= 12 && P <= 12 ) {
3087+ for (Int_t i = 0 ; i < M; ++i) {
3088+ for (Int_t j = 0 ; j < P; ++j) {
3089+ Element sum = Element (0 );
3090+ for (Int_t k = 0 ; k < N; ++k) {
3091+ sum += ap[i * N + k] * bp[k * P + j];
3092+ }
3093+ cp[i * P + j] = sum;
3094+ }
3095+ }
3096+ return ;
3097+ }
3098+ const Int_t BLOCK = (M >= 192 && N >= 192 && P >= 192 ) ? 48 : 32 ;
3099+ #ifdef _OPENMP
3100+ #pragma omp parallel for collapse(2) if (M * P > 10000)
3101+ #endif
3102+ for (Int_t i0 = 0 ; i0 < M; i0 += BLOCK) {
3103+ for (Int_t j0 = 0 ; j0 < P; j0 += BLOCK) {
3104+ const Int_t i1 = (i0 + BLOCK < M) ? i0 + BLOCK : M;
3105+ const Int_t j1 = (j0 + BLOCK < P) ? j0 + BLOCK : P;
3106+ for (Int_t i = i0; i < i1; ++i) {
3107+ Int_t j = j0;
3108+ for (; j <= j1 - 4 ; j += 4 ) {
3109+ cp[i * P + j + 0 ] = Element (0 );
3110+ cp[i * P + j + 1 ] = Element (0 );
3111+ cp[i * P + j + 2 ] = Element (0 );
3112+ cp[i * P + j + 3 ] = Element (0 );
3113+ }
3114+ for (; j < j1; ++j)
3115+ cp[i * P + j] = Element (0 );
3116+ }
3117+
3118+ // ────────────────────── Accumulate over k blocks ──────────────────────
3119+ for (Int_t k0 = 0 ; k0 < N; k0 += BLOCK) {
3120+ const Int_t k1 = (k0 + BLOCK < N) ? k0 + BLOCK : N;
3121+
3122+ for (Int_t i = i0; i < i1; ++i) {
3123+ for (Int_t k = k0; k < k1; ++k) {
3124+ const Element aik = ap[i * N + k];
3125+
3126+ Int_t j = j0;
3127+ // Main 4-wide accumulation
3128+ for (; j <= j1 - 4 ; j += 4 ) {
3129+ cp[i * P + j + 0 ] += aik * bp[k * P + j + 0 ];
3130+ cp[i * P + j + 1 ] += aik * bp[k * P + j + 1 ];
3131+ cp[i * P + j + 2 ] += aik * bp[k * P + j + 2 ];
3132+ cp[i * P + j + 3 ] += aik * bp[k * P + j + 3 ];
3133+ }
3134+ // Remainder
3135+ for (; j < j1; ++j)
3136+ cp[i * P + j] += aik * bp[k * P + j];
3137+ }
3138+ }
30913139 }
3092- *cp++ = cij;
3093- bcp -= nb - 1 ; // Set bcp to the (j+1)-th col
30943140 }
3095- arp0 += ncolsa; // Set ap to the (i+1)-th row
30963141 }
30973142}
30983143
@@ -3214,43 +3259,43 @@ template class TMatrixT<Float_t>;
32143259#include " TMatrixFfwd.h"
32153260#include " TMatrixFSymfwd.h"
32163261
3217- template TMatrixF TMatrixTAutoloadOps::operator +<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3218- template TMatrixF TMatrixTAutoloadOps::operator +<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3219- template TMatrixF TMatrixTAutoloadOps::operator +<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3220- template TMatrixF TMatrixTAutoloadOps::operator +<Float_t>(const TMatrixF &source, Float_t val);
3221- template TMatrixF TMatrixTAutoloadOps::operator +<Float_t>(Float_t val, const TMatrixF &source);
3222- template TMatrixF TMatrixTAutoloadOps::operator -<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3223- template TMatrixF TMatrixTAutoloadOps::operator -<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3224- template TMatrixF TMatrixTAutoloadOps::operator -<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3225- template TMatrixF TMatrixTAutoloadOps::operator -<Float_t>(const TMatrixF &source, Float_t val);
3226- template TMatrixF TMatrixTAutoloadOps::operator -<Float_t>(Float_t val, const TMatrixF &source);
3227- template TMatrixF TMatrixTAutoloadOps::operator *<Float_t>(Float_t val, const TMatrixF &source);
3228- template TMatrixF TMatrixTAutoloadOps::operator *<Float_t>(const TMatrixF &source, Float_t val);
3229- template TMatrixF TMatrixTAutoloadOps::operator *<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3230- template TMatrixF TMatrixTAutoloadOps::operator *<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3231- template TMatrixF TMatrixTAutoloadOps::operator *<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3232- template TMatrixF TMatrixTAutoloadOps::operator *<Float_t>(const TMatrixFSym &source1, const TMatrixFSym &source2);
3233- template TMatrixF TMatrixTAutoloadOps::operator &&<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3234- template TMatrixF TMatrixTAutoloadOps::operator &&<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3235- template TMatrixF TMatrixTAutoloadOps::operator &&<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3236- template TMatrixF TMatrixTAutoloadOps::operator ||<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3237- template TMatrixF TMatrixTAutoloadOps::operator ||<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3238- template TMatrixF TMatrixTAutoloadOps::operator ||<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3239- template TMatrixF TMatrixTAutoloadOps::operator ><Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3240- template TMatrixF TMatrixTAutoloadOps::operator ><Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3241- template TMatrixF TMatrixTAutoloadOps::operator ><Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3242- template TMatrixF TMatrixTAutoloadOps::operator >=<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3243- template TMatrixF TMatrixTAutoloadOps::operator >=<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3244- template TMatrixF TMatrixTAutoloadOps::operator >=<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3245- template TMatrixF TMatrixTAutoloadOps::operator <=<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3246- template TMatrixF TMatrixTAutoloadOps::operator <=<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3247- template TMatrixF TMatrixTAutoloadOps::operator <=<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3262+ template TMatrixF TMatrixTAutoloadOps::operator + <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3263+ template TMatrixF TMatrixTAutoloadOps::operator + <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3264+ template TMatrixF TMatrixTAutoloadOps::operator + <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3265+ template TMatrixF TMatrixTAutoloadOps::operator + <Float_t>(const TMatrixF &source, Float_t val);
3266+ template TMatrixF TMatrixTAutoloadOps::operator + <Float_t>(Float_t val, const TMatrixF &source);
3267+ template TMatrixF TMatrixTAutoloadOps::operator - <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3268+ template TMatrixF TMatrixTAutoloadOps::operator - <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3269+ template TMatrixF TMatrixTAutoloadOps::operator - <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3270+ template TMatrixF TMatrixTAutoloadOps::operator - <Float_t>(const TMatrixF &source, Float_t val);
3271+ template TMatrixF TMatrixTAutoloadOps::operator - <Float_t>(Float_t val, const TMatrixF &source);
3272+ template TMatrixF TMatrixTAutoloadOps::operator * <Float_t>(Float_t val, const TMatrixF &source);
3273+ template TMatrixF TMatrixTAutoloadOps::operator * <Float_t>(const TMatrixF &source, Float_t val);
3274+ template TMatrixF TMatrixTAutoloadOps::operator * <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3275+ template TMatrixF TMatrixTAutoloadOps::operator * <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3276+ template TMatrixF TMatrixTAutoloadOps::operator * <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3277+ template TMatrixF TMatrixTAutoloadOps::operator * <Float_t>(const TMatrixFSym &source1, const TMatrixFSym &source2);
3278+ template TMatrixF TMatrixTAutoloadOps::operator && <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3279+ template TMatrixF TMatrixTAutoloadOps::operator && <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3280+ template TMatrixF TMatrixTAutoloadOps::operator && <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3281+ template TMatrixF TMatrixTAutoloadOps::operator || <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3282+ template TMatrixF TMatrixTAutoloadOps::operator || <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3283+ template TMatrixF TMatrixTAutoloadOps::operator || <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3284+ template TMatrixF TMatrixTAutoloadOps::operator ><Float_t>(const TMatrixF & source1, const TMatrixF & source2);
3285+ template TMatrixF TMatrixTAutoloadOps::operator ><Float_t>(const TMatrixF & source1, const TMatrixFSym & source2);
3286+ template TMatrixF TMatrixTAutoloadOps::operator ><Float_t>(const TMatrixFSym & source1, const TMatrixF & source2);
3287+ template TMatrixF TMatrixTAutoloadOps::operator >= <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3288+ template TMatrixF TMatrixTAutoloadOps::operator >= <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3289+ template TMatrixF TMatrixTAutoloadOps::operator >= <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3290+ template TMatrixF TMatrixTAutoloadOps::operator <= <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3291+ template TMatrixF TMatrixTAutoloadOps::operator <= <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3292+ template TMatrixF TMatrixTAutoloadOps::operator <= <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
32483293template TMatrixF TMatrixTAutoloadOps::operator < <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
32493294template TMatrixF TMatrixTAutoloadOps::operator < <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
32503295template TMatrixF TMatrixTAutoloadOps::operator < <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3251- template TMatrixF TMatrixTAutoloadOps::operator !=<Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3252- template TMatrixF TMatrixTAutoloadOps::operator !=<Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3253- template TMatrixF TMatrixTAutoloadOps::operator !=<Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
3296+ template TMatrixF TMatrixTAutoloadOps::operator != <Float_t>(const TMatrixF &source1, const TMatrixF &source2);
3297+ template TMatrixF TMatrixTAutoloadOps::operator != <Float_t>(const TMatrixF &source1, const TMatrixFSym &source2);
3298+ template TMatrixF TMatrixTAutoloadOps::operator != <Float_t>(const TMatrixFSym &source1, const TMatrixF &source2);
32543299
32553300template TMatrixF &TMatrixTAutoloadOps::Add<Float_t>(TMatrixF &target, Float_t scalar, const TMatrixF &source);
32563301template TMatrixF &TMatrixTAutoloadOps::Add<Float_t>(TMatrixF &target, Float_t scalar, const TMatrixFSym &source);
@@ -3271,43 +3316,43 @@ template void TMatrixTAutoloadOps::AMultBt<Float_t>(const Float_t *const ap, Int
32713316
32723317template class TMatrixT <Double_t>;
32733318
3274- template TMatrixD TMatrixTAutoloadOps::operator +<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3275- template TMatrixD TMatrixTAutoloadOps::operator +<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3276- template TMatrixD TMatrixTAutoloadOps::operator +<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3277- template TMatrixD TMatrixTAutoloadOps::operator +<Double_t>(const TMatrixD &source, Double_t val);
3278- template TMatrixD TMatrixTAutoloadOps::operator +<Double_t>(Double_t val, const TMatrixD &source);
3279- template TMatrixD TMatrixTAutoloadOps::operator -<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3280- template TMatrixD TMatrixTAutoloadOps::operator -<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3281- template TMatrixD TMatrixTAutoloadOps::operator -<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3282- template TMatrixD TMatrixTAutoloadOps::operator -<Double_t>(const TMatrixD &source, Double_t val);
3283- template TMatrixD TMatrixTAutoloadOps::operator -<Double_t>(Double_t val, const TMatrixD &source);
3284- template TMatrixD TMatrixTAutoloadOps::operator *<Double_t>(Double_t val, const TMatrixD &source);
3285- template TMatrixD TMatrixTAutoloadOps::operator *<Double_t>(const TMatrixD &source, Double_t val);
3286- template TMatrixD TMatrixTAutoloadOps::operator *<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3287- template TMatrixD TMatrixTAutoloadOps::operator *<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3288- template TMatrixD TMatrixTAutoloadOps::operator *<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3289- template TMatrixD TMatrixTAutoloadOps::operator *<Double_t>(const TMatrixDSym &source1, const TMatrixDSym &source2);
3290- template TMatrixD TMatrixTAutoloadOps::operator &&<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3291- template TMatrixD TMatrixTAutoloadOps::operator &&<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3292- template TMatrixD TMatrixTAutoloadOps::operator &&<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3293- template TMatrixD TMatrixTAutoloadOps::operator ||<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3294- template TMatrixD TMatrixTAutoloadOps::operator ||<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3295- template TMatrixD TMatrixTAutoloadOps::operator ||<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3296- template TMatrixD TMatrixTAutoloadOps::operator ><Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3297- template TMatrixD TMatrixTAutoloadOps::operator ><Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3298- template TMatrixD TMatrixTAutoloadOps::operator ><Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3299- template TMatrixD TMatrixTAutoloadOps::operator >=<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3300- template TMatrixD TMatrixTAutoloadOps::operator >=<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3301- template TMatrixD TMatrixTAutoloadOps::operator >=<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3302- template TMatrixD TMatrixTAutoloadOps::operator <=<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3303- template TMatrixD TMatrixTAutoloadOps::operator <=<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3304- template TMatrixD TMatrixTAutoloadOps::operator <=<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3319+ template TMatrixD TMatrixTAutoloadOps::operator + <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3320+ template TMatrixD TMatrixTAutoloadOps::operator + <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3321+ template TMatrixD TMatrixTAutoloadOps::operator + <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3322+ template TMatrixD TMatrixTAutoloadOps::operator + <Double_t>(const TMatrixD &source, Double_t val);
3323+ template TMatrixD TMatrixTAutoloadOps::operator + <Double_t>(Double_t val, const TMatrixD &source);
3324+ template TMatrixD TMatrixTAutoloadOps::operator - <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3325+ template TMatrixD TMatrixTAutoloadOps::operator - <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3326+ template TMatrixD TMatrixTAutoloadOps::operator - <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3327+ template TMatrixD TMatrixTAutoloadOps::operator - <Double_t>(const TMatrixD &source, Double_t val);
3328+ template TMatrixD TMatrixTAutoloadOps::operator - <Double_t>(Double_t val, const TMatrixD &source);
3329+ template TMatrixD TMatrixTAutoloadOps::operator * <Double_t>(Double_t val, const TMatrixD &source);
3330+ template TMatrixD TMatrixTAutoloadOps::operator * <Double_t>(const TMatrixD &source, Double_t val);
3331+ template TMatrixD TMatrixTAutoloadOps::operator * <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3332+ template TMatrixD TMatrixTAutoloadOps::operator * <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3333+ template TMatrixD TMatrixTAutoloadOps::operator * <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3334+ template TMatrixD TMatrixTAutoloadOps::operator * <Double_t>(const TMatrixDSym &source1, const TMatrixDSym &source2);
3335+ template TMatrixD TMatrixTAutoloadOps::operator && <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3336+ template TMatrixD TMatrixTAutoloadOps::operator && <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3337+ template TMatrixD TMatrixTAutoloadOps::operator && <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3338+ template TMatrixD TMatrixTAutoloadOps::operator || <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3339+ template TMatrixD TMatrixTAutoloadOps::operator || <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3340+ template TMatrixD TMatrixTAutoloadOps::operator || <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3341+ template TMatrixD TMatrixTAutoloadOps::operator ><Double_t>(const TMatrixD & source1, const TMatrixD & source2);
3342+ template TMatrixD TMatrixTAutoloadOps::operator ><Double_t>(const TMatrixD & source1, const TMatrixDSym & source2);
3343+ template TMatrixD TMatrixTAutoloadOps::operator ><Double_t>(const TMatrixDSym & source1, const TMatrixD & source2);
3344+ template TMatrixD TMatrixTAutoloadOps::operator >= <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3345+ template TMatrixD TMatrixTAutoloadOps::operator >= <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3346+ template TMatrixD TMatrixTAutoloadOps::operator >= <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3347+ template TMatrixD TMatrixTAutoloadOps::operator <= <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3348+ template TMatrixD TMatrixTAutoloadOps::operator <= <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3349+ template TMatrixD TMatrixTAutoloadOps::operator <= <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
33053350template TMatrixD TMatrixTAutoloadOps::operator < <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
33063351template TMatrixD TMatrixTAutoloadOps::operator < <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
33073352template TMatrixD TMatrixTAutoloadOps::operator < <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3308- template TMatrixD TMatrixTAutoloadOps::operator !=<Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3309- template TMatrixD TMatrixTAutoloadOps::operator !=<Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3310- template TMatrixD TMatrixTAutoloadOps::operator !=<Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
3353+ template TMatrixD TMatrixTAutoloadOps::operator != <Double_t>(const TMatrixD &source1, const TMatrixD &source2);
3354+ template TMatrixD TMatrixTAutoloadOps::operator != <Double_t>(const TMatrixD &source1, const TMatrixDSym &source2);
3355+ template TMatrixD TMatrixTAutoloadOps::operator != <Double_t>(const TMatrixDSym &source1, const TMatrixD &source2);
33113356
33123357template TMatrixD &TMatrixTAutoloadOps::Add<Double_t>(TMatrixD &target, Double_t scalar, const TMatrixD &source);
33133358template TMatrixD &TMatrixTAutoloadOps::Add<Double_t>(TMatrixD &target, Double_t scalar, const TMatrixDSym &source);
0 commit comments