<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important">Pierre,</span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important">Our MatProductReplaceMats()
 is not well tested, which might be buggy. I simplified your code without calling <span style="background-color:rgb(255, 255, 255);display:inline !important">MatProductReplaceMats() and got correct results in the cases</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important">./ex1111
 -product_view ::ascii_matlab -convert false/true <span style="background-color:rgb(255, 255, 255);display:inline !important">-correct false</span><br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important">and</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important">./ex1111
 -product_view ::ascii_matlab -convert false/true -correct true<br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style=""><font color="#201f1e"><span style="font-size: 14.6667px;">My code is attached. I'll investigate <span style="background-color:rgb(255, 255, 255);display:inline !important">MatProductReplaceMats().</span></span></font></div>
<div style=""><font color="#201f1e"><span style="font-size: 14.6667px;">Hong</span></font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, "system-ui", Roboto, "Helvetica Neue", sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> petsc-dev <petsc-dev-bounces@mcs.anl.gov> on behalf of Barry Smith <bsmith@petsc.dev><br>
<b>Sent:</b> Thursday, July 14, 2022 4:38 PM<br>
<b>To:</b> Pierre Jolivet <pierre@joliv.et><br>
<b>Cc:</b> For users of the development version of PETSc <petsc-dev@mcs.anl.gov><br>
<b>Subject:</b> Re: [petsc-dev] MatProduct_AtB --with-scalar-type=complex</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText"><br>
  Can you confirm if MatTransposeMatMultSymbolic_SeqAIJ_SeqAIJ() ends up being called for you and what path it takes inside that routine (depends) on the algorithm it is using.
<br>
<br>
<br>
<br>
> On Jul 14, 2022, at 4:30 PM, Pierre Jolivet <pierre@joliv.et> wrote:<br>
> <br>
> Hello,<br>
> In the following example, the SeqAIJ implementation of MatProduct_AtB produce a different (and wrong) result, compared to the SeqDense implementation or MATLAB.<br>
> I want to compute B = A^H A (where ^H is the Hermitian transpose).<br>
> So I create a MatProduct with A and A.<br>
> Duplicate A into another Mat which I conjugate.<br>
> And I replace the first Mat of the product with this conjugate.<br>
> I expect to get the proper result, which I don’t.<br>
> Is the MatProduct_AtB implementation in the complex case not computing A^T B (where ^T is the transpose)?
<br>
> For reference, here is how to properly compute A^H A with current main: conj(A^H conj(A)) — so it requires an extra MatConjugate I’d like to avoid.<br>
> <br>
> Thanks,<br>
> Pierre<br>
> <br>
> <ex1111.c><br>
> <br>
> $ ./ex1111 -product_view ::ascii_matlab -A_view ::ascii_matlab -convert false              
<br>
> %Mat Object: 1 MPI process<br>
> %  type: seqdense<br>
> % Size = 2 2 <br>
> Mat_0xc4000001_0 = zeros(2,2);<br>
> Mat_0xc4000001_0 = [<br>
> 7.2003197397953400e-01 + 6.1793966542126100e-02i 3.9777780919128602e-01 + 7.3036588248200474e-02i
<br>
> 1.0022337819588500e-02 + 1.4463931936456476e-01i 1.0386628927366459e-01 + 2.5078039364333193e-01i
<br>
> ];<br>
> %Mat Object: 1 MPI process<br>
> %  type: seqdense<br>
> % Size = 2 2 <br>
> Mat_0xc4000001_1 = zeros(2,2);<br>
> Mat_0xc4000001_1 = [<br>
> 5.4328551781548817e-01 + 0.0000000000000000e+00i 3.2823965013353340e-01 + 1.5498666614872689e-02i
<br>
> 3.2823965013353340e-01 + -1.5498666614872689e-02i 2.3724054059134142e-01 + 0.0000000000000000e+00i
<br>
> ];<br>
> <br>
> $ ./ex1111 -product_view ::ascii_matlab -convert true                       <br>
> %Mat Object: 1 MPI process<br>
> %  type: seqaij<br>
> % Size = 2 2 <br>
> % Nonzeros = 4 <br>
> zzz = zeros(4,4);<br>
> zzz = [<br>
> 1 1  4.9380746380098023e-01 9.1886511660038694e-02<br>
> 1 2  2.4666779825931440e-01 9.4705502650537468e-02<br>
> 2 1  2.4666779825931440e-01 9.4705502650537468e-02<br>
> 2 2  1.0079024247365802e-01 1.1019992594899400e-01<br>
> ];<br>
> Mat_0xc4000001_0 = spconvert(zzz);<br>
> <br>
> $ ./ex1111 -product_view ::ascii_matlab -convert true -correct true<br>
> %Mat Object: 1 MPI process<br>
> %  type: seqaij<br>
> % Size = 2 2 <br>
> % Nonzeros = 4 <br>
> zzz = zeros(4,4);<br>
> zzz = [<br>
> 1 1  5.4328551781548828e-01 -0.0000000000000000e+00<br>
> 1 2  3.2823965013353340e-01 1.5498666614872696e-02<br>
> 2 1  3.2823965013353340e-01 -1.5498666614872696e-02<br>
> 2 2  2.3724054059134142e-01 -0.0000000000000000e+00<br>
> ];<br>
> Mat_0xc4000001_0 = spconvert(zzz);<br>
> <br>
> <Screenshot 2022-07-14 at 10.12.53 PM.png><br>
<br>
</div>
</span></font></div>
</body>
</html>