Polar Complex Number Subtraction
  Validation and Benchmark Tool: 
  
    PolSubBV140.zip
  
  Table of results: 
  
    CmplxPolSubBenchmark120.xls (Old, needs an update!)
  
Description
(The following description was written by Lars Gravengaard, April, 2006)
The objective is to build the fastest PolSub routines.
There are three overloaded functions differing in the input and output datatype.
function PolSub(const X, Y : TPolarComplexE) : TPolarComplexE; overload;
function PolSub(const X, Y : TPolarComplexD) : TPolarComplexD; overload;
function PolSub(const X, Y : TPolarComplexS) : TPolarComplexS; 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;