123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- { %cpu=i386 }
- {$mode objfpc}
- {$modeswitch advancedrecords}
- {$FPUTYPE SSE2}
- unit uw38069;
- INTERFACE
- uses sysutils;
- type float = double; //#zentral definieren
- complex = record
- public
- re, im: float;
- class operator * (const a, b: complex): complex; inline;
- class operator * (const a: complex; const x:float): complex; inline;
- class operator * (const x: float; const a: complex): complex; inline;
- class operator := (const x: float): complex; inline;
- class operator = (const a,b: complex): boolean; inline;
- class operator - (const a: complex): complex; inline;
- end;
- procedure mul (const a,b: complex; var c: complex); inline; overload;
- procedure mul (const a: complex; const b: float; var c: complex); inline; overload;
- procedure mul (const a: float; const b: complex; var c: complex); inline; overload;
- IMPLEMENTATION
- procedure mul (const a,b: complex; var c: complex);
- begin
- c.re := a.re*b.re - a.im*b.im;
- c.im := a.re*b.im + a.im*b.re;
- end;
- procedure mul (const a: complex; const b: float; var c: complex);
- begin
- c.re := a.re*b;
- c.im := a.im*b;
- end;
- procedure mul (const a: float; const b: complex; var c: complex);
- begin
- mul (b,a,c);
- end;
- function pow (x,y: float): float;
- begin
- result := exp (y*ln(x));
- end;
- function ToComplex (a,b: float): complex;
- begin
- result.re := a;
- result.im := b;
- end;
- //Operatoren complex-complex
- class operator complex.* (const a,b: complex): complex;
- begin
- mul (a,b,result);
- end;
- class operator complex.* (const x: float; const a: complex): complex;
- begin
- mul (a,x,result);
- end;
- class operator complex.* (const a: complex; const x:float): complex;
- begin
- mul (a,x,result);
- end;
- class operator complex.:= (const x: float): complex;
- begin
- result.re := x;
- result.im := 0;
- end;
- class operator complex.= (const a,b: complex): boolean;
- begin
- result := (a.re=b.re) and (a.im=b.im);
- end;
- class operator complex.- (const a: complex): complex;
- begin
- result.re := -a.re;
- result.im := -a.im;
- end;
- begin
- end.
|