/* * MathPlanner 3.2 - Mathematical design tool. * Copyright(C) 2003 Jarmo Nikkanen * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation. * * You should have received a copy of the GNU General Public License with this program. * */ #include "MathHeaders.h" mpl_complex mpl_real2complex(mpl_real r) { mpl_complex a; a.r=r; a.i=0; return(a); } mpl_complex mpl_opz(mpl_complex z) { mpl_complex a; mpl_real b; b=z.i*z.i+z.r*z.r; a.r=z.r/b; a.i=-z.i/b; return(a); } mpl_complex mpl_cnxroot(mpl_complex z,mpl_real n,mpl_real x) { mpl_complex a; mpl_real b=pow(mpl_cmodul(z),(1/n)); mpl_real c=(mpl_cargz(z)/n)+(x*(2*PI/n)); a.r=b*mpl_cos(c); a.i=b*mpl_sin(c); return(a); } mpl_complex mpl_cnroot(mpl_complex z,mpl_complex n) { mpl_complex a; a=mpl_cnpower(z,mpl_opz(n)); return(a); } mpl_complex mpl_cnpower(mpl_complex z,mpl_complex n) { mpl_real p; mpl_complex b; mpl_complex a; if (z.r==0 && z.i==0) return(z); a.r=log(mpl_cmodul(z)); a.i=mpl_cargz(z); b.r=a.r*n.r-a.i*n.i; b.i=a.r*n.i+a.i*n.r; p=pow(NEPER,b.r); a.r=p*mpl_cos(b.i); a.i=p*mpl_sin(b.i); return(a); } mpl_complex mpl_cneg(mpl_complex z) { mpl_complex a; a.r=-z.r; a.i=-z.i; return(a); } mpl_real mpl_cmodul(mpl_complex z) { return(sqrt(z.i*z.i+z.r*z.r)); } mpl_complex mpl_ckunjugant(mpl_complex z) { mpl_complex a; a.r=z.r; a.i=-z.i; return(a); } mpl_real mpl_cargz(mpl_complex z) { return(atan2(z.i,z.r)); } mpl_real mpl_cImz(mpl_complex z) { return(z.i); } mpl_real mpl_cRez(mpl_complex z) { return(z.r); } mpl_complex mpl_ce(mpl_complex z) { mpl_complex a; mpl_real p=pow(NEPER,z.r); a.r=p*mpl_cos(z.i); a.i=p*mpl_sin(z.i); return(a); } mpl_complex mpl_cang(mpl_real ang) { mpl_complex a; a.r=mpl_cos(ang); a.i=mpl_sin(ang); return(a); } mpl_complex mpl_cexp(mpl_complex z) { mpl_complex a; mpl_real p=pow(10.0,z.r); a.r=p*mpl_cos(z.i); a.i=p*mpl_sin(z.i); return(a); } mpl_complex mpl_cln(mpl_complex z) { mpl_complex a; a.r=log(mpl_cmodul(z)); a.i=mpl_cargz(z); return(a); } mpl_complex mpl_clog(mpl_complex z) { mpl_complex a; a.r=log10(mpl_cmodul(z)); a.i=mpl_cargz(z); return(a); }