/* $Id: fakecomplex.c,v 1.1 2004/04/24 20:38:30 geuzaine Exp $ */
#include "fakecomplex.h"
void cotofl(complex a, double b , double c)
{
b = a.r;
c = a.i;
}
complex fltoco(double a, double b)
{
complex s;
s.r = a;
s.i = b;
return(s);
}
complex Csum(complex a, complex b)
{
complex s;
s.r = a.r + b.r;
s.i = a.i + b.i;
return(s);
}
complex Csub(complex a, complex b)
{
complex s;
s.r = a.r - b.r;
s.i = a.i - b.i;
return(s);
}
complex Cprod(complex a, complex b)
{
complex s;
s.r = a.r * b.r - a.i * b.i;
s.i = a.r * b.i + a.i * b.r;
return(s);
}
complex Cdiv(complex a, complex b)
{
complex s;
double den;
den = b.r * b.r + b.i * b.i;
s.r = (a.r * b.r + a.i * b.i) / den;
s.i = (a.i * b.r - a.r * b.i) / den;
return(s);
}
complex Cconj(complex a)
{
complex s;
s.r = a.r;
s.i = -a.i;
return(s);
}
complex Cneg(complex a)
{
complex s;
s.r = -a.r;
s.i = -a.i;
return(s);
}
double Cmodu(complex a)
{
return(sqrt(a.r * a.r + a.i * a.i));
}
complex Cpow(complex a, double b)
{
complex s;
double mod, arg;
mod = a.r * a.r + a.i * a.i;
arg = atan2(a.i,a.r);
mod = pow(mod,0.5*b);
arg *= b;
s.r = mod * cos(arg);
s.i = mod * sin(arg);
return(s);
}
complex Cprodr(double a, complex b)
{
complex s;
s.r = a * b.r;
s.i = a * b.i;
return(s);
}
void Cisum(complex *a, complex b)
{
(*a).r += b.r;
(*a).i += b.i;
}
void Cisub(complex *a, complex b)
{
(*a).r -= b.r;
(*a).i -= b.i;
}
void Ciprod(complex *a, complex b)
{
complex aa,d;
aa.r=(*a).r;
aa.i=(*a).i;
d.r = aa.r * b.r - aa.i * b.i;
d.i = aa.r * b.i + aa.i * b.r;
(*a).r = d.r;
(*a).i = d.i;
}
syntax highlighted by Code2HTML, v. 0.9.1