<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p>Hello Stefano</p>
<p><br>
</p>
<p>I believe this was an issue that was discussed in another thread opened by me (this one I think: <a href="https://lists.mcs.anl.gov/pipermail/petsc-users/2021-April/043629.html" class="OWAAutoLink" id="LPlnk77785" previewremoved="true">https://lists.mcs.anl.gov/pipermail/petsc-users/2021-April/043629.html</a>).</p>
<p><br>
</p>
<p>In any case thanks for fixing it, and glad to be of service!</p>
<p><br>
</p>
<p>- Peder</p>
<p><br>
</p>
<p><br>
</p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Fra:</b> Stefano Zampini <stefano.zampini@gmail.com><br>
<b>Sendt:</b> 2. juni 2021 21:43:43<br>
<b>Til:</b> Peder Jørgensgaard Olesen<br>
<b>Cc:</b> Jose E. Roman; petsc-users@mcs.anl.gov<br>
<b>Emne:</b> Re: [petsc-users] SLEPc: non-real singular vectors from SVD of real matrix</font>
<div> </div>
</div>
<div>Peder 
<div class=""><br class="">
</div>
<div class="">We have a fix for the hdf5 complex reader here if you want to give it a try
<a href="https://gitlab.com/petsc/petsc/-/merge_requests/4044" class="" id="LPlnk596682" previewremoved="true">
https://gitlab.com/petsc/petsc/-/merge_requests/4044</a>
<div id="LPBorder_GT_16226680419130.8196661997989212" style="margin-bottom: 20px; overflow: auto; width: 100%; text-indent: 0px;">
<table id="LPContainer_16226680419100.20662476251547224" role="presentation" cellspacing="0" style="width: 90%; background-color: rgb(255, 255, 255); position: relative; overflow: auto; padding-top: 20px; padding-bottom: 20px; margin-top: 20px; border-top: 1px dotted rgb(200, 200, 200); border-bottom: 1px dotted rgb(200, 200, 200);">
<tbody>
<tr valign="top" style="border-spacing: 0px;">
<td id="ImageCell_16226680419110.3384128783492677" colspan="1" style="width: 250px; position: relative; display: table-cell; padding-right: 20px;">
<div id="LPImageContainer_16226680419110.22837428385156633" style="background-color: rgb(255, 255, 255); height: 175px; position: relative; margin: auto; display: table; width: 175px;">
<a id="LPImageAnchor_16226680419120.5899707059668544" href="https://gitlab.com/petsc/petsc/-/merge_requests/4044" target="_blank" style="display: table-cell; text-align: center;"><img aria-label="Eksempelbillede med link er valgt. Dobbelttryk for at åbne linket." id="LPThumbnailImageID_16226680419120.5171439839127141" width="175" height="175" style="display: inline-block; max-width: 250px; max-height: 250px; height: 175px; width: 175px; border-width: 0px; vertical-align: bottom;" src="https://assets.gitlab-static.net/uploads/-/system/project/avatar/13882401/PETSc_RBG-logo.png"></a></div>
</td>
<td id="TextCell_16226680419120.2985418285368875" colspan="2" style="vertical-align: top; position: relative; padding: 0px; display: table-cell;">
<div id="LPRemovePreviewContainer_16226680419120.9652911718358617"></div>
<div id="LPTitle_16226680419120.5171455438605024" style="top: 0px; color: rgb(0, 120, 215); font-weight: 400; font-size: 21px; font-family: wf_segoe-ui_light, "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; line-height: 21px;">
<a id="LPUrlAnchor_16226680419130.7919128806170257" href="https://gitlab.com/petsc/petsc/-/merge_requests/4044" target="_blank" style="text-decoration: none;">fix MatLoad_Dense_HDF5 (!4044) · Merge requests · PETSc / petsc · GitLab</a></div>
<div id="LPMetadata_16226680419130.18686799754477024" style="margin: 10px 0px 16px; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 14px;">
gitlab.com</div>
<div id="LPDescription_16226680419130.10306578012982026" style="display: block; color: rgb(102, 102, 102); font-weight: 400; font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif; font-size: 14px; line-height: 20px; max-height: 100px; overflow: hidden;">
follow-up !3903 add src/mat/tests/ex84.c...</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br class="">
<div><br class="">
</div>
<div>Sorry it took so long and thank you for reporting the bug</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Apr 29, 2021, at 2:55 PM, Peder Jørgensgaard Olesen via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="" style="font-family:Helvetica; font-size:12px; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<div id="x_divtagdefaultwrapper" dir="ltr" class="" style="font-size: 12pt; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<div class="" style="margin-top:0px; margin-bottom:0px">Thank you for your advice, Jose.</div>
<div class="" style="margin-top:0px; margin-bottom:0px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0px">I tried<span class="Apple-converted-space"> </span><span class="" style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">using
 a single column of the data matrix as a </span>basis for left singular vector space, and a row for the right one - and lo and behold, all singular vectors become real.</div>
<div class="" style="margin-top:0px; margin-bottom:0px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0px">Somehow it did not occur to me that I was I was looking at was simply a complex phase on U and V which would cancel upon computing UΣV*. In other words, rather than an incorrect result it was a slightly inconvenient
 representation of a correct result.</div>
<div class="" style="margin-top:0px; margin-bottom:0px"><br class="">
</div>
<div class="" style="margin-top:0px; margin-bottom:0px">Best regards</div>
<div class="" style="margin-top:0px; margin-bottom:0px">Peder</div>
</div>
<hr tabindex="-1" class="" style="display:inline-block; width:861.40625px">
<div id="x_divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" class="" style="font-size:11pt"><b class="">Fra:</b><span class="Apple-converted-space"> </span>Jose E. Roman <<a href="mailto:jroman@dsic.upv.es" class="">jroman@dsic.upv.es</a>><br class="">
<b class="">Sendt:</b><span class="Apple-converted-space"> </span>29. april 2021 13:00:03<br class="">
<b class="">Til:</b><span class="Apple-converted-space"> </span>Peder Jørgensgaard Olesen<br class="">
<b class="">Cc:</b><span class="Apple-converted-space"> </span><a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a><br class="">
<b class="">Emne:</b><span class="Apple-converted-space"> </span>Re: [petsc-users] SLEPc: non-real singular vectors from SVD of real matrix</font>
<div class=""> </div>
</div>
</div>
<font size="2" class="" style="font-family:Helvetica; font-style:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none"><span class="" style="font-size:10pt">
<div class="PlainText">In complex scalars there is no way of knowing if the user-provided matrix is real or not. If there was an option of MatSetOption() we could use it.<br class="">
<br class="">
If you set a real initial vector with SVDSetInitialSpaces(), then most probably the computed singular vectors will be real. But still rounding errors could introduce a nonzero imaginary part.<br class="">
<br class="">
In any case, you could normalize the computed singular vectors, as is done for instance in FixSign() in this example<a href="https://slepc.upv.es/documentation/current/src/nep/tutorials/ex20.c.html" class="">https://slepc.upv.es/documentation/current/src/nep/tutorials/ex20.c.html</a><br class="">
<br class="">
Jose<br class="">
<br class="">
<br class="">
> El 29 abr 2021, a las 12:42, Peder Jørgensgaard Olesen via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> escribió:<br class="">
><span class="Apple-converted-space"> </span><br class="">
> Hello<br class="">
><span class="Apple-converted-space"> </span><br class="">
> I've noticed that doing a singular value decomposition of a real matrix appears to result in non-real singular vectors. This should not be the case - singular vectors of a real matrix must be real-valued.<br class="">
><span class="Apple-converted-space"> </span><br class="">
> In the example attached I read a matrix from a binary file (also attached), perform the SVD, and write singular vectors to an HDF5 file which I subsequently inspect using h5dump, revealing  non-zero imaginary parts of vector elements as highlighted below:<br class="">
> [pjool@svol mwes]$ h5dump -d U0_sample_svd -c "5,2" sample_svecs.h5<span class="Apple-converted-space"> </span><br class="">
> HDF5 "sample_svecs.h5" {<br class="">
> DATASET "U0_sample_svd" {<br class="">
>    DATATYPE  H5T_IEEE_F64LE<br class="">
>    DATASPACE  SIMPLE { ( 882, 2 ) / ( 882, 2 ) }<br class="">
>    SUBSET {<br class="">
>       START ( 0, 0 );<br class="">
>       STRIDE ( 1, 1 );<br class="">
>       COUNT ( 5, 2 );<br class="">
>       BLOCK ( 1, 1 );<br class="">
>       DATA {<br class="">
>       (0,0): 0.0226108, 0.0299595,<br class="">
>       (1,0): 0.035414, 0.0469237,<br class="">
>       (2,0): 0.0276317, 0.0366122,<br class="">
>       (3,0): 0.0145344, 0.0192581,<br class="">
>       (4,0): 0.0110376, 0.0146249<br class="">
>       }<br class="">
>    }<br class="">
>    ATTRIBUTE "complex" {<br class="">
>       DATATYPE  H5T_STD_I32LE<br class="">
>       DATASPACE  SCALAR<br class="">
>       DATA {<br class="">
>       (0): 1<br class="">
>       }<br class="">
>    }<br class="">
> }<br class="">
> }<br class="">
> I also extract the imaginary part of the input matrix and print its norm to ensure that the matrix is indeed real.<br class="">
><span class="Apple-converted-space"> </span><br class="">
> I'm running v3.14, but I don't believe that alone should cause the issue, since it what I'm trying to do appears like a rather common and basic task.<br class="">
><span class="Apple-converted-space"> </span><br class="">
> What might be the reason behind this behavior, and what can be done to resolve it?<br class="">
><span class="Apple-converted-space"> </span><br class="">
><span class="Apple-converted-space"> </span><br class="">
> Med venlig hilsen / Best Regards<br class="">
><span class="Apple-converted-space"> </span><br class="">
> Peder Jørgensgaard Olesen<br class="">
> PhD Student, Turbulence Research Lab<br class="">
> Dept. of Mechanical Engineering<br class="">
> Technical University of Denmark<br class="">
> Niels Koppels Allé<br class="">
> Bygning 403, Rum 105<br class="">
> DK-2800 Kgs. Lyngby<br class="">
> <read_bin.c><sample_data></div>
</span></font></div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</body>
</html>