Okay I think I understand that nfloat() isn't helping but what about how to prevent evaluation of a function passed as a
parameter to another function. makelist(f(5.9b-9, e), e, 1, 100) does not take a long time. In fact it is pretty fast.
Something is different about makelist(). I think I remember reading that makelist was "designed for functions" in some
of the documents on the Wiki.
I have a bffind_root() function that I wrote and when I call it it takes so long that I have yet to see it complete.
bffind_root() is defined in pw.mac. It is just a simple binary search. I have tried all kind of quoting of the f()
like '(f(5.9,e)) but it does not work. Typing in f(5.9b-9,e) also never completes which makes sense.
I have changed bffind_root() to take the function name as an extra parameter and that works but I would prefer a better
way.
This is my power series.
f(x,e):=sum(
block([hbar : bfloat(6.6260693b-34/(2*%pi)), mu : 1b15, m : 9.109389754b-31],
if equal(_i ,0) then
(
a : 1,
acc : 1,
am2 : 0,
am4 : 0,
am6 : 0
)
elseif mod( _i , 2)=0 then
(
a : 2 * m / hbar^2 * (mu * am6 - am2 * e)/(_i * (_i - 1))
),
if mod(_i , 2)=1 then
(
_num : 0
)
else
(
am6 : am4,
am4 : am2,
am2 : a,
tmp : a*acc,
acc : acc * x^2,
_num : tmp
),
_num
), _i, 0, 300)$
bffind_root('f(5.9b-9, e), f, e, 4.047b-19,4.4947335b-19,30); this works fine because I modified bffind_root() to pass
the function name as the second parameter.
bffind_root('f(5.9b-9, e), e, 4.047b-19,4.4947335b-19,30); this takes forever.
find_root('f(5.9e-9, e), e, 4.047e-19,4.4947335e-19); this takes forever.
Thanks for advance for any help.
Rich