<div dir="ltr">Bernard<div><br></div><div>In Fortran, real(z) (where z is complex) does maintain precision. The problem is likely caused by your using &quot;-Ofast&quot;, &quot;-ffast-math&quot;, or an Intel compiler that uses the equivalent by default (so you have to explicitly switch it off). With such an optimization, e.g. abs(z) is implemented as sqrt(real(z)**2 + aimag(z)**2), which overflows the intermediate squares. Without -ffast-math, compilers use a more expensive implementation that does not overflow.</div><div><br></div><div>In your case, I&#39;d assume that the problem is no the call to real, but other complex or real functions. Can you show us a larger part of the code, and the compiler vendor, version, and options you are using?</div><div><br></div><div>The C functions CCTK_Cmplx* are deprecated. These days, C compilers implement complex numbers as defined by the standard, and you&#39;d use the respective C standard function instead.</div><div><br></div><div>-erik</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jul 19, 2015 at 2:16 PM, Bernard Kelly <span dir="ltr">&lt;<a href="mailto:physicsbeany@gmail.com" target="_blank">physicsbeany@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all.<br>
<br>
The Cactus documentation shows a set of C routines CCTK_CmplxXXXXXX<br>
that presumably preserve precision between CCTK_REAL and CCTK_COMPLEX<br>
types. Is there a &quot;right&quot; way to handle this in Cactus with Fortran<br>
(that isn&#39;t &quot;recode in C&quot;)?<br>
<br>
Context: I have some Fortran code in a Cactus thorn that works with<br>
real &amp; complex fields. I&#39;ve noticed that when the numbers are very<br>
large in magnitude, taking a simple real(z) drops precision --- a<br>
finite but large real part ends up as +/- Inf instead. I suspect it&#39;s<br>
dropping to single precision at some stage. Switching to &quot;dreal&quot;<br>
doesn&#39;t help, and avoiding the use of CCTK_COMPLEX altogether ---<br>
while possible --- leads to longer, less readable code.<br>
<br>
Thanks,<br>
<br>
Bernard<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@einsteintoolkit.org">Users@einsteintoolkit.org</a><br>
<a href="http://lists.einsteintoolkit.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.einsteintoolkit.org/mailman/listinfo/users</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Erik Schnetter &lt;<a href="mailto:schnetter@cct.lsu.edu" target="_blank">schnetter@cct.lsu.edu</a>&gt;<br><a href="http://www.perimeterinstitute.ca/personal/eschnetter/" target="_blank">http://www.perimeterinstitute.ca/personal/eschnetter/</a></div>
</div>