Rectangular Complex Number Addition

Validation and Benchmark Tool: ComplexRegtAddBV11.zip
Tables of results: CmplxRegtAddBenchmarks11.xls

Description

(The following description was written by Lars Gravengaard, April, 2006)

There are three overloaded functions differing in the input and output datatype.

function RegtAdd(const X, Y : TRegtangularComplexE) : TRegtangularComplexE; overload;
function RegtAdd(const X, Y : TRegtangularComplexD) : TRegtangularComplexD; overload;
function RegtAdd(const X, Y : TRegtangularComplexS) : TRegtangularComplexS; overload;

Type definition

TRegtangularComplexS = packed record
 RealPart, ImaginaryPart : Single;
end;

TRegtangularComplexD = packed record
 RealPart, ImaginaryPart : Double;
end;

TRegtangularComplexE = packed record
 RealPart : Extended;
 Pad1 : Cardinal; //4 byte
 Pad2 : SmallInt; //2 byte
 ImaginaryPart : Extended;
 Pad3 : Cardinal; //4 byte
 Pad4 : SmallInt; //2 byte
end;

TPolarComplexS = packed record
 Amplitude, Phase : Single;
end;

TPolarComplexD = packed record
 Amplitude, Phase : Double;
end;

TPolarComplexE = packed record
 Amplitude : Extended;
 Pad1 : Cardinal; //4 byte
 Pad2 : SmallInt; //2 byte
 Phase : Extended;
 Pad3 : Cardinal; //4 byte
 Pad4 : SmallInt; //2 byte
end;