1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA - Farid BELAHCENE
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 function r=intl(a,b,z0,r,f,ea,er)
11 //If f is a complex-valued function, intl(a,b,z0,r,f) computes
12 //the integral of f(z)dz along the complex plane curve defined by
13 //  z0 + r.exp(%i*t)
14 //for a<=t<=b .
15 //(part of the circle with center z0 and radius r with phase between a and b)
16 //!
17 //Author F.D. (and H.H.R.)
19 //First compile f if necessary:
21 rhs=argn(2)
22 if rhs<7 then er=%eps;end
23 if rhs<6 then ea=1.d-12;end
25 if type(f)==11 then comp(f),end;
26 //Define two functions for the real part and
27 //imaginary part of f(g(t))*g'(t) where g(t) is a
28 //parametrization of the circle.
29 deff('y=real1(t)',[
30     'z=r*exp(%i*((1-t)*a+t*b))'
31     'y=real(f(z+z0)*%i*(b-a)*z)'] )
33 deff('y=imag1(t)',[
34     'z=r*exp(%i*((1-t)*a+t*b))'
35     'y=imag(f(z+z0)*%i*(b-a)*z)'] )
37 r=intg(0,1,real1,ea,er)+%i*intg(0,1,imag1,ea,er)
38 endfunction