<div dir="ltr">OK, making things easier and flexible, I only did<div><div style="font-size:12.8px">1) Move test to <span style="font-size:12.8px">MatGetFactor()</span><span style="font-size:12.8px"> </span><span style="font-size:12.8px"> </span></div><div style="font-size:12.8px"><span style="font-size:12.8px"><br></span></div><div style="font-size:12.8px"><span style="font-size:12.8px">2) Test:</span></div><div style="font-size:12.8px"><span style="font-size:12.8px">   complex build && </span><span style="font-size:12.8px">ftype==</span><span style="font-size:12.8px">CHOLESKY||ICC</span><span style="font-size:12.8px">:</span></div><div style="font-size:12.8px"><span style="font-size:12.8px">  if (mat->hermitian) </span><span style="font-size:12.8px">throw an "not supported" error</span></div></div><div style="font-size:12.8px"><span style="font-size:12.8px"><br></span></div><div style="font-size:12.8px"><span style="font-size:12.8px">MatIsSymmetric() is either expensive or not supported, and users may apply Cholesky or ICC to almost symmetric matrix, so I will not change existing way for real build.</span></div><div style="font-size:12.8px"><span style="font-size:12.8px"><br></span></div><div style="font-size:12.8px"><span style="font-size:12.8px">Hong</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 29, 2017 at 1:48 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> writes:<br>
<br>
>   1) The test is definitely in the wrong place. If we are testing and erroring if using Cholesky and mat is not marked as symmetric or hermitian the test should be in MatGetFactor() not in a particular implementation.<br>
><br>
>  2) It is a tough call if we should do this check or not.  There are good arguments in both directions.<br>
><br>
>    One thing we could do is if the matrix is not marked as symmetric/hermitian is we could just check at that point (but expensive) or we could just check in debug mode.<br>
><br>
>  But I think we should require the user to set the flag (note for SBAIJ the flag for symmetric (or hermitian? which one) should be automatically set at creation).<br>
<br>
</span>So what's the approach if the user wants to do Cholesky on the nearby<br>
symmetric matrix defined by the upper triangular part?  Now they'll need<br>
to create that matrix explicitly?  It's certainly relevant for a<br>
nearly-symmetric matrix, either due to a weak transport process or<br>
implementation of boundary conditions.<br>
<br>
</blockquote></div><br></div>