Unit complex

**********Complex arithmetic in Delphi************} {* (c) 1997 Bjoern Ischo & Stephen C. Ferguson *} {* *} {*Based upon COMPLEX.H header file by Louis Baker in*} {* Handbook of C tools for Scientists and Engineers *} {****************************************************} {Any comments and suggestions are welcome; please send then to: bischo6639@aol.com (Bjoern) OR itriazon@gte.net (Stephen) 24.Nov 97: first alpha, Bjoern added cmulti,cadd,csub

Classes

Functions

cadd - multiplication cmplx*real

function cmulti_CR(z_:tcomplex;r1:float):tcomplex
cadd_CR - addition

function cadd(xz,yz:tcomplex):tcomplex;
ccos - complex exponent

function ccos(z_:tcomplex):tcomplex;
cdin - drn

function cdrn(xz,yz:tcomplex):float;
cdiv - cdin

function cdin(xz,yz:tcomplex):float;
cdrn - norm

function cnorm(z_:tcomplex):float;
cexp - complex natural logarythm

function clog(z_:tcomplex):tcomplex;
cintdiv_CR -
cintdiv_RC - rather simple integer power for complex

function cintpower(z_:tcomplex;i1:integer):tcomplex;
cintpower - complex cosinus

function ccos(z_:tcomplex):tcomplex;
clog - complex div

function csub(xz,yz:tcomplex):tcomplex;
cmagnitude - multiplication of real part

function cmulti_real(z,z2:tcomplex):float;
cmplx -
cmulti - magnitude

function cmulti_imag(z,z2:tcomplex):float;
cmulti_CR - multiplication

function cmulti(xz,yz:tcomplex):tcomplex;
cmulti_imag - multiplication of real part

function cmagnitude(z:tcomplex):float;
cmulti_real - x->real y->imaginary

opcode for FCOS
cnorm - subtraction cmlpx-real

function csub_CR(z_:tcomplex;r1:float):tcomplex;
csin - complex sinus

function clog(z_:tcomplex):tcomplex;
csub - addition cmplx+real

function cadd_CR(z_:tcomplex;r1:float):tcomplex;
csub_CR - subtraction

function csub(xz,yz:tcomplex):tcomplex;
fastcos - opcode for FSIN
fastsin - when we need an instant cmplx number; FAST! stuff:

Gamma function for small values of the argument
GamSmall - additional thingys:

Types

float
tcomplex

Constants

expo
lim
rad

Variables


Functions


function cadd(xz,yz:tcomplex):tcomplex;

multiplication cmplx*real

function cmulti_CR(z_:tcomplex;r1:float):tcomplex


function cadd_CR(z_:tcomplex;r1:float):tcomplex;

addition

function cadd(xz,yz:tcomplex):tcomplex;


function ccos(z_:tcomplex):tcomplex;

complex exponent

function ccos(z_:tcomplex):tcomplex;


function cdin(xz,yz:tcomplex):float;

drn

function cdrn(xz,yz:tcomplex):float;


function cdiv(xz,yz:tcomplex):tcomplex;

cdin

function cdin(xz,yz:tcomplex):float;


function cdrn(xz,yz:tcomplex):float;

norm

function cnorm(z_:tcomplex):float;


function cexp(z_:tcomplex):tcomplex;

complex natural logarythm

function clog(z_:tcomplex):tcomplex;


function cintdiv_CR(z_:tcomplex;r1:float):tcomplex;


function cintdiv_RC(f1:float;z_:tcomplex):tcomplex;

rather simple integer power for complex

function cintpower(z_:tcomplex;i1:integer):tcomplex;


function cintpower(z_:tcomplex;i1:integer):tcomplex;

complex cosinus

function ccos(z_:tcomplex):tcomplex;


function clog(z_:tcomplex):tcomplex;

complex div

function csub(xz,yz:tcomplex):tcomplex;


function cmagnitude(z:tcomplex):float;

multiplication of real part

function cmulti_real(z,z2:tcomplex):float;


function cmplx(x,y:float):tcomplex;


function cmulti(xz,yz:tcomplex):tcomplex;

magnitude

function cmulti_imag(z,z2:tcomplex):float;


function cmulti_CR(z_:tcomplex;r1:float):tcomplex;

multiplication

function cmulti(xz,yz:tcomplex):tcomplex;


function cmulti_imag(z,z2:tcomplex):float;

multiplication of real part

function cmagnitude(z:tcomplex):float;


function cmulti_real(z,z2:tcomplex):float;

x->real y->imaginary

opcode for FCOS


function cnorm(z_:tcomplex):float;

subtraction cmlpx-real

function csub_CR(z_:tcomplex;r1:float):tcomplex;


function csin(z_:tcomplex):tcomplex;

complex sinus

function clog(z_:tcomplex):tcomplex;


function csub(xz,yz:tcomplex):tcomplex;

addition cmplx+real

function cadd_CR(z_:tcomplex;r1:float):tcomplex;


function csub_CR(z_:tcomplex;r1:float):tcomplex;

subtraction

function csub(xz,yz:tcomplex):tcomplex;


function fastcos(x : extended): extended;

opcode for FSIN

function fastsin(x : extended): extended;

when we need an instant cmplx number; FAST! stuff:

Gamma function for small values of the argument


function GamSmall(X1, Z : Float) : Float;

additional thingys:

Types


float = double
Compiler Directives - we want it fast!
tcomplex = record
x : float;
y : float;
end;
double should be fine for most calculations extended is more precise, but slower

Constants

expo = 2.7183

lim = 15

rad = 57.2958

some useful constants:

Variables