Functions defined in the edit field:
Functions of one or up to 10 variables may be defined by the user
by entering a definition of the form
<function_name>(X1,X2,...):=function_of_X1,X2...
in the current edit field.
Examples: sinh(X):=(exp(X)-exp(-X))/2
norm(X,Y):=sqrt(X*X+Y*Y)
Fisher(r):=0.5*log((1+r)/(1-r))
Roots of equation X^2+P*X+Q=0:
Root1(P,Q):=-P/2+S(P,Q) S(P,Q):=sqrt(P*P/4-Q)
Root2(P,Q):=-P/2-S(P,Q)
The Least Common Denominator: lcd(u,v):=u*v/gcd(u,v)
Any function defined in such a way may be used as any standard function.
Examples:
sinh(1)=1.1752011936
norm(12,norm(3,4))=13
Root1(1,-6)=2 Root2(1,-6)=-3
lcd(144,240)=720
Recursive functions:
By means of the if()then()else() structure recursive definitions for
functions may given as follows:
factorial(N):=if(N=1)then(1)else(N*factorial(N-1))
Serial expansion of the exponential function:
expn(X,N):=if(N=0)then(1)else(expn(X,N-1)+term(X,N))
term(X,N):=if(N=1)then(X)else(term(X,N-1)*X/N)
Examples:
factorial(7)=5040
expn(1,20)=2.7182818285
........................................................................
Since recursive computations take much space and time,
it is more efficient to use the 'for' statement for definitions
above:
factorial(N):=for(I=1)to(N)product(I)
expn(X,N):=for(I=0)to(N)sum(X^I/factorial(I))
Another way to speed up recursive computation is to employ a
`remember' option (see next page).
................................................................................
A recursive function can also be defined as follows:
factorial(N)|=if(N=1)then(1)else(N*factorial(N-1))
See a '|' instead ':' in the definition! Then each numerical value
once obtained in recursion process is saved temporarily in a table
and instead of a recursion step a table-lookup is used in subsequent
evaluations. Computation of function values is then much faster.
Recursive computing requires much stack memory and may lead to
a stack overflow. The stack size given for the Survo Editor is
currently 10'000'000 bytes. The system parameter check_stack
(in SURVO.APU) determines the maximum size allowed in editorial
arithmetics. The default setting is check_stack=5000000 and it
can be changed temporarily by the SYSTEM command.
E = More information on editorial computing