[ET Trac] [Einstein Toolkit] #1377: Cacus could/should provide M_PI
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Thu Jun 6 03:13:56 CDT 2013
#1377: Cacus could/should provide M_PI
--------------------------+-------------------------------------------------
Reporter: sbrandt | Owner:
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: Cactus | Version: development version
Resolution: | Keywords: GRHydro M_PI
--------------------------+-------------------------------------------------
Comment (by hinder):
Confusingly, on another page in the "Mathematics" section of the GNU C
Library manual, it is more specific:
https://www.gnu.org/software/libc/manual/html_node/Trig-Functions.html:
> The math library normally defines M_PI to a double approximation of pi.
If strict ISO and/or POSIX compliance are requested this constant is not
defined, but you can easily define it yourself:
So M_PI is not a part of POSIX, and requiring POSIX would not solve this
problem. Apparently, M_PI was removed in C99; it was present in Unix98.
According to http://stackoverflow.com/questions/5007925/using-m-pi-
with-c89-standard, the only way to get M_PI is to use compiler-specific
non-standard methods. Given this, we have several options:
1. The user defines _GNU_SOURCE or _BSD_SOURCE in their compilation flags,
or in some other way arranges that M_PI is available.
2. The thorn writer sets these macros in the source file that needs M_PI,
or defines M_PI in their source files.
3. Cactus arranges that M_PI is available by using either of the above
methods or defining M_PI in the same way as the GNU C Library if it is not
defined already.
4. Cactus defines CCTK_PI in the same way as the GNU C Library.
I prefer 3, as it uses a standard name that many people expect. The only
case where this might cause a problem is if somebody is trying to import
some external code to a Cactus thorn, and this thorn expects that there is
no M_PI defined, and uses it itself. I think this is very unlikely.
On a related note, I have created a page https://docs.einsteintoolkit.org
/et-docs/Compiling_the_Einstein_Toolkit where we can start to collect
policies and knowledge about compilation flags and optionlists. Erik,
perhaps you could run through and correct/extend it?
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1377#comment:7>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list