On Sat, Feb 18, 2012 at 5:34 PM, Jack Poulson <span dir="ltr"><<a href="mailto:jack.poulson@gmail.com">jack.poulson@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I think I mentioned this to several PETSc folks two years ago. It is a bad idea to return complex numbers from Fortran, as there is no portable solution as far as I know; some compilers need you to declare it as <br><br>complex zdotc_( <regular args> )<br>

<br>some as<br><br>void zdotc_( <regular args>, complex* z )<br><br>and I think I ran into problems with both on OSX (but don't quote me on it). I ended up settling on writing my own complex dotc and dotu routines.</blockquote>
<div><br></div><div>That is exactly it. Scipy has a patch for it</div><div><br></div><div>  <a href="http://projects.scipy.org/scipy/attachment/ticket/1321/scipy-r6856-isolve-veclib.patch">http://projects.scipy.org/scipy/attachment/ticket/1321/scipy-r6856-isolve-veclib.patch</a></div>
<div><br></div><div>So what are we going to do in PETSc folks? It sounds like we need a configure test for complex dot, and then</div><div>and then an #define wrapper for ones that return rather than taking an argument.</div>
<div><br></div><div>    MAtt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888"><br>Jack</font></span><div class="HOEnZb">
<div class="h5"><br><br><div class="gmail_quote">On Sat, Feb 18, 2012 at 5:28 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

We have a problem with complex dot product on OSX. Here is the easiest way to see it (I think):<div><br></div><div><div>knepley:/PETSc3/petsc/petsc-dev$ ./arch-complex-fftw-debug/lib/ex5-obj/ex5 -snes_monitor</div><div>./arch-complex-fftw-debug/lib/ex5-obj/ex5 -snes_monitor</div>


<div>  0 SNES Function norm 0.000000000000e+00 </div><div><br></div><div>With the debugger:</div><div><br></div><div><div>Breakpoint 1, VecNorm_Seq (xin=0x1022fc170, type=NORM_2, z=0x7fff5fbfea10) at bvec2.c:238</div><div>


238         ierr = VecGetArrayRead(xin,&xx);CHKERRQ(ierr);</div><div>(gdb) n</div><div>Current language:  auto; currently c++</div><div>239         *z = BLASdot_(&bn,xx,&one,xx,&one);</div><div>(gdb) p bn</div>


<div>$1 = 16</div></div><div><div>(gdb) p xx[0]@16</div><div>$2 = {{</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div>


<div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div></div><div><div>   _M_value = -0.10378182131158753 + 0 * I</div><div>  }, {</div><div>    _M_value = -0.10378182131158753 + 0 * I</div>


<div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = -0.10378182131158753 + 0 * I</div><div>  }, {</div><div>    _M_value = -0.10378182131158753 + 0 * I</div>


<div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }, {</div><div>    _M_value = 0 + 0 * I</div></div><div><div>


  }, {</div><div>    _M_value = 0 + 0 * I</div><div>  }}</div><div>(gdb) p one</div><div>$3 = 1</div></div><div><div>(gdb) n</div><div>240         *z = PetscSqrtReal(*z);</div><div>(gdb) p *z</div><div>$4 = 0</div><div>(gdb) p zdotc</div>


<div>$5 = {<text variable, no debug info>} 0x7fff863e71e2 <zdotc_></div></div><div><br></div><div>It appears that the dot product is producing nothing. Didn't we have a similar problem a little while ago?</div>


<div><br></div><div>   Matt</div><span><font color="#888888"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>

-- Norbert Wiener<br>

</font></span></div>
</blockquote></div><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>