Q: compiling causes problems in evaluating functions? -> solved
- Subject: Q: compiling causes problems in evaluating functions? -> solved
- From: Robert Gloeckner
- Date: Mon, 23 Apr 2007 11:11:39 +0200
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