external(1)

NAME
external - Scilab Object, external function or routine

DESCRIPTION
External function or routine for use with specific commands.

An "external" is a function or routine which is used as an argument of some high-level primitives (such as ode, optim, schur...).

The calling sequence of the external (function or routine) is imposed by the high-level primitive which sets the arguments of the external.

For example the external function costfunc is an argument of the optim primitive. Its calling sequence must be: [f,g,ind]=costfunc(x,ind) and optim (the high-level optimization primitive) is invoked as follows:
optim(costfunc,...)
Here costfunc (the cost function to be minimized by the primitive optim) evaluates f=f(x) and g= gradient of f at x (ind is an integer which is not useful here).

If other values are needed by the external function these variables can be defined in the environment. Also, they can be put in a list. For example,the external function
[f,g,ind]=costfunc(x,ind,a,b,c)
is valid for optim if the external is list(costfunc,a,b,c) and the call to optim is then:
optim(list(costfunc,a1,b1,c1),....
An external can also be a Fortran routine : this is convenient to speed up the computations.

The name of the routine is given to the high-level primitive as a character string. The calling sequence of the routine is also imposed. Examples are given in the default directory (see e.g. routines fydot.f or foptim.f)

External Fortran routines can also be dynamically linked. The calling sequence should be as given by dyncall (see e.g. source code of fydot.f)

SEE ALSO
ode, optim, impl, dassl, intg, schur, gschur