/[GiNaC]/cint/genheader.pl
ViewVC logotype

Contents of /cint/genheader.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Sun Jan 30 20:53:05 2000 UTC (13 years, 3 months ago) by kreckel
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
FILE REMOVED
- Renamed flag NO_GINAC_NAMESPACE to NO_NAMESPACE_GINAC because of m4.
- Made configure check for cint and makecint and call makecint to dump out
  cint/Makefile.cint, which will later be called by cint/Makefile.  See
  configure option --with-cint.
- Added some documentation about GiNaC-cint (e.g. a manpage).
- All dummies in subdir cint/ are created by cint/dummies.pl now, removed
  older stuff.

1 #!/usr/bin/perl -w
2
3 # Generate a header file which is additionally included in cint
4 # to work around the broken overloading resolution of cint for
5 # C library functions
6 # e.g. if a function declared as ex sin(ex const & x) and called
7 # with sin(y) where y is a symbol, cint favours a conversion from
8 # symbol to void * to double over symbol to ex and thus calls the
9 # C math library function double sin(double x) (sigh!)
10
11 $header='cint_workaround.h';
12
13 # types which need help to be converted to ex
14 @types=('symbol','function','constant','idx','lorentzidx','coloridx');
15 @moretypes=('numeric','int','double');
16 @extype=('ex');
17
18 # functions with one parameter
19 @functions1p=('sin','cos','tan','asin','acos','atan','exp','log','sqrt',
20 'sinh','cosh','tanh','abs');
21
22 # functions with two parameters
23 @functions2p=('pow','atan2');
24
25 open OUT,">$header";
26
27 foreach $f (@functions1p) {
28 print OUT "// fixes for $f(x)\n";
29 foreach $t (@types) {
30 print OUT "inline ex $f($t const & x) { return $f(ex(x)); }\n";
31 }
32 print OUT "\n";
33 }
34
35 sub inlines2 {
36 my ($types1ref,$types2ref)=@_;
37 foreach $t1 (@$types1ref) {
38 foreach $t2 (@$types2ref) {
39 print OUT "inline ex $f($t1 const & x,$t2 const & y) {\n";
40 print OUT " return $f(ex(x),ex(y));\n";
41 print OUT "}\n";
42 }
43 }
44 }
45
46 foreach $f (@functions2p) {
47 print OUT "// fixes for $f(x,y)\n";
48 inlines2(\@types,\@types);
49 inlines2(\@types,\@moretypes);
50 inlines2(\@moretypes,\@types);
51 inlines2(\@extype,\@moretypes);
52 inlines2(\@moretypes,\@extype);
53 print OUT "\n";
54 }
55
56 close OUT;
57
58

Christian Bauer">Christian Bauer
ViewVC Help
Powered by ViewVC 1.1.15