Q: compiling causes problems in evaluating functions? -> solved



Thanks for you opening my eyes. I falsely relied on define_variable to set value and type accordingly.
Actually my code had been like this (except you hint on 2 * %pi):

(%i1) define_variable (pi_2,  ev(2.0 * %pi, numer ), float);
(%o1)                          6.283185307179586

(%i2) define_variable (NTEMP, (273.15),              float);
(%o2)                               273.15

(%i3) define_variable (A_N,   (1.0E+21),             float);
(%o3)                               1.0E+21

(%i4) define_variable (B_N,   (30),                  float);
(%o4)                                 30

(%i5) define_variable (T_C,   (264),                 float);
(%o5)                                 264

(%i6) eq4_7_(T, _p)      :=  (A_N / sqrt( pi_2 * B_N * B_N)) * exp(
  -0.5 * ((T - T_C) / B_N)^2 );

                                  A_N                      T - T_C 2
(%o6)     eq4_7_(T, _p) := ------------------ exp((- 0.5) (-------) )
                           sqrt(pi_2 B_N B_N)                B_N


(%i7) eq4_7_(xx, yy);
                                                                    2
                                  - 5.5555555555555556E-4 (xx - 264)
(%o7)    1.3298076013381089E+19 %e


(%i8) compile( eq4_7_ );

Compiling C:/DOKUME~1/GloecR/LOKALE~1/Temp/gazonk_3196_0.lsp.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=2, Space=3, Speed=2
Finished compiling C:/DOKUME~1/GloecR/LOKALE~1/Temp/gazonk_3196_0.lsp.
(%o8)                              [eq4_7_]

(%i9) eq4_7_(xx, yy);

(%o9) 1.3298076013381089E+19
                                                                              2
                        - 5.5555555555555556E-4 (xx - 5.6232888460629123E-312)
                      %e




Changing the variable definitions (somehow) like you suggested works:



(%i10) kill(B_N, T_C, eq4_7_);
(%o10)                               done

(%i11) define_variable (B_N,   (30.0),                float);
(%o11)                               30.0

(%i12) define_variable (T_C,   (264.0),               float);
(%o12)                               264.0

(%i13) eq4_7_(T, _p)      :=  (A_N / sqrt( pi_2 * B_N * B_N)) * exp(
  -0.5 * ((T - T_C) / B_N)^2 );

                                  A_N                      T - T_C 2
(%o13)    eq4_7_(T, _p) := ------------------ exp((- 0.5) (-------) )
                           sqrt(pi_2 B_N B_N)                B_N


(%i14) eq4_7_(xx, yy);
                                                                     2
                                 - 5.5555555555555556E-4 (xx - 264.0)
(%o14)  1.3298076013381089E+19 %e

(%i15) compile( eq4_7_ );

Compiling C:/DOKUME~1/GloecR/LOKALE~1/Temp/gazonk_3196_0.lsp.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=2, Space=3, Speed=2
Finished compiling C:/DOKUME~1/GloecR/LOKALE~1/Temp/gazonk_3196_0.lsp.
(%o15)                             [eq4_7_]

(%i16) eq4_7_(xx, yy);
                                                                     2
                                 - 5.5555555555555556E-4 (xx - 264.0)
(%o16)  1.3298076013381089E+19 %e




Thank you very much, 
Robert