[Scilab-users] About the complex inverse tangent function

Samuel Gougeon sgougeon at free.fr
Fri Aug 15 11:28:35 CEST 2014


Hello Pierre,

Le 15/08/2014 10:52, Pierre Vuillemin a écrit :
> Le jeudi 14 août 2014 à 19:46 +0200, Samuel Gougeon a écrit :
>> With Scilab 5.5.0 on Windows 7 x64:
>> -->z = 2*%i
>>   z  =
>>      2.i
>> -->disp([atan(z),%i/2*log((%i+z)/(%i-z))])
>>   
>>      1.5707963 + 0.5493061i    1.5707963 + 0.5493061i
> I am on a 64-bit linux environment (Debian Jessie, Scilab 5.5.0), the
> result would be OS-dependent?
It is possible. Some packages or/and some single functions -- including 
maths ones -- depend on the OS.
> The relation
>
> log(ab) = log(a) + log(b)
>
> only stands for the multi-valued logarithm function (or modulo pi). With
> the principal value of the log, defined as
>
> log(z) = ln(|z|) + i * arg(z)
>
> where -pi<arg(z)<=pi,
Is this interval conventionnaly standard for the principal value, rather 
than -pi <= arg(z) < pi ?
> this is not true as soon as -pi<arg(a)+arg(b)<=
> pi. In particular, it is not true on the branch cut (- inf, 0].
> For instance,
>
> log(-1) = j pi
>
> log(-1)+log(-1) = 2j pi != log(1) = 0
It is, modulo 2.pi : i.2.pi [2.pi] ~ i.0 = 0
> This is merely a problem of convention in the definitions, but this
> leads to differences in the value of the atan on its branch cuts.
Indeed. Both results that you get from atan and log on Linux are 
correct, and equivalent.
Results from win7 are equal and agree with the standard interval (-pi, pi].

Samuel




More information about the users mailing list