home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
509.lha
/
ATS_v2.0
/
my_complex.cp
< prev
next >
Wrap
Text File
|
1991-05-06
|
2KB
|
111 lines
#include <my_complex.h>
int complex_error( c_exception& x)
{
cout << "complex error\n";
}
complex asin(complex x)
{
return(complex(0.0,-1.0)*lnn(complex(0.0,1.0)*x+my_sqrt(complex(1.0,0.0)-
x*x)));
}
complex acos(complex x)
{
return(complex(0.0,-1.0)*lnn(x+complex(0.0,1.0)*my_sqrt(complex(1.0,0.0)-
x*x)));
}
complex atan(complex x)
{
return(complex(0.0,0.5)*lnn((complex(0.0,1.0)+x)/(complex(0.0,1.0)-x)));
}
complex lnn(complex x)
{
double dd,rr,ii,l,arg;
complex ret;
rr = real(x);
ii = imag(x);
dd = rr*rr+ii*ii;
l = log(sqrt(dd));
if (rr == 0.0)
{
if (ii > 0.0)
{
arg = asin(1.0);
}
else
{
arg = asin(-1.0);
}
}
else if (rr >= 0.0)
arg = atan(ii/rr);
else if (ii >= 0.0)
arg = PI + atan(ii/rr);
else
arg = -1.0*PI + atan(ii/rr);
ret = complex(l,arg);
return(ret);
}
complex tan(complex x)
{
return(sin(x)/cos(x));
}
complex tanh(complex x)
{
return(sinh(x)/cosh(x));
}
complex sec(complex x)
{
return(complex(1.0,0.0)/cos(x));
}
complex csc(complex x)
{
return(complex(1.0,0.0)/sin(x));
}
complex cot(complex x)
{
return(cos(x)/sin(x));
}
complex coth(complex x)
{
return(cosh(x)/sinh(x));
}
complex sech(complex x)
{
return(complex(1.0,0.0)/cosh(x));
}
complex csch(complex x)
{
return(complex(1.0,0.0)/sinh(x));
}
complex expt(complex x,complex y)
{
complex a,b;
if (real(y) == 0.0 && imag(y) == 0.0)
b = complex(1.0,0.0);
else
{
a = lnn(x)*y;
b = exp(a);
}
return(b);
}
complex my_sqrt(complex x)
{
return(expt(x,complex(0.5,0.0)));
}
complex asinh(complex x)
{
return(lnn(x+my_sqrt(complex(1.0,0.0)+ x*x)));
}
complex acosh(complex x)
{
return(lnn(x+my_sqrt(complex(-1.0,0.0)+
x*x)));
}
complex atanh(complex x)
{
return(complex(0.5,0.0)*lnn((complex(1.0,0.0)+x)/(complex(1.0,0.0)-x)));
}