Allan Clark
2010-Feb-11 16:40 UTC
[R] Fwd: Recall function: "evaluation nested too deeply: infinite recursion / options(expressions=)?"
hello all i searched the archives and couldn't get a solution to the following question. i have the following function: F=function(z,v) { if (v==-.5) return(1) else return(2*v/z + 1/Recall(z,v-1)) } and while testing whether it works (ie F(z,v) is approx = besselK(z,1+v)/besselK(z,V). the recursion formula allows one to calculate besselK(z,1+v)/besselK(z,V) for large values of z ) i got the following error : "evaluation nested too deeply: infinite recursion / options(expressions=)?" i.e. zz=1 nn=1000 R=array(0,dim=nn) for (i in 1:nn) { print(i) R[i]=F(zz,-0.5+(i-1)) } the error occurs when i==713 but when one evaluates F(1,-.5+(713-1)) i get [1] 1423.001 note also that if v starts getting large, evaluation of F also gives the error. e.g. F(1, 713.5) any help? seems like looping works nicely here F2=function(z,v) { #check that the v is correct! ie -.5, .5, 3/2, 5/2, ..... if (v==-0.5) { return(1) }else { ntimes = v+1.5 R=array(0,dim=ntimes) R[1]=1 for (i in 2:ntimes) { R[i]= 2*v/z + 1/R[i-1] } return(R[ntimes]) } } Allan Clark =======Lecturer in Statistical Sciences Department University of Cape Town 7701 Rondebosch South Africa TEL (Office): +27-21-650-3228 FAX: +27-21-650-4773 http://web.uct.ac.za/depts/stats/aclark.htm Allan Clark =======Lecturer in Statistical Sciences Department University of Cape Town 7701 Rondebosch South Africa TEL (Office): +27-21-650-3228 FAX: +27-21-650-4773 http://web.uct.ac.za/depts/stats/aclark.htm [[alternative HTML version deleted]]
jim holtman
2010-Feb-11 18:01 UTC
[R] Fwd: Recall function: "evaluation nested too deeply: infinite recursion / options(expressions=)?"
You might be impacted by FAQ 7.31. Your statement if(v == -.5) might be suspect. You might want to use 'all.equal' On Thu, Feb 11, 2010 at 11:40 AM, Allan Clark <Allan.Clark at uct.ac.za> wrote:> hello all > > i searched the archives and couldn't get a solution to the following question. > > i have the following function: > > F=function(z,v) > { > ?if (v==-.5) return(1) else ?return(2*v/z + 1/Recall(z,v-1)) > } > > and while testing whether it works (ie F(z,v) is approx = ?besselK(z,1+v)/besselK(z,V). the recursion formula allows one to calculate besselK(z,1+v)/besselK(z,V) for large values of z ) i got the following error : "evaluation nested too deeply: infinite recursion / options(expressions=)?" > > i.e. > zz=1 > nn=1000 > > R=array(0,dim=nn) > for (i in 1:nn) > { > ?print(i) > ?R[i]=F(zz,-0.5+(i-1)) > } > the error occurs when i==713 > but when one evaluates F(1,-.5+(713-1)) i get [1] 1423.001 > note also that if v starts getting large, evaluation of F also gives the error. e.g. F(1, 713.5) > > any help? > > > seems like looping works nicely here > > F2=function(z,v) > { > ?#check that the v is correct! ie -.5, .5, 3/2, 5/2, ..... > > ?if (v==-0.5) > ?{ > ? ?return(1) > ?}else > ?{ > ? ?ntimes = v+1.5 > ? ?R=array(0,dim=ntimes) > > ? ?R[1]=1 > ? ?for (i in 2:ntimes) > ? ?{ > ? ? ?R[i]= 2*v/z + 1/R[i-1] > ? ?} > ? ?return(R[ntimes]) > ?} > } > > > > > > > Allan Clark > =======> Lecturer in Statistical Sciences Department > University of Cape Town > 7701 Rondebosch > South Africa > TEL (Office): +27-21-650-3228 > FAX: +27-21-650-4773 > http://web.uct.ac.za/depts/stats/aclark.htm > > > > Allan Clark > =======> Lecturer in Statistical Sciences Department > University of Cape Town > 7701 Rondebosch > South Africa > TEL (Office): +27-21-650-3228 > FAX: +27-21-650-4773 > http://web.uct.ac.za/depts/stats/aclark.htm > > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?