15 #ifndef __metacomplex_h
16 #define __metacomplex_h
24 #include "srational.h"
28 template<
class Real,
class Imag>
35 template<
class Re1,
class Im1,
class Re2,
class Im2>
36 class Add<MComplex<Re1,Im1>, MComplex<Re2,Im2> > {
37 typedef typename Add<Re1,Re2>::Result Re;
38 typedef typename Add<Im1,Im2>::Result Im;
40 typedef MComplex<Re,Im> Result;
43 template<
class Re1,
class Im1,
class Re2,
class Im2>
44 class Sub<MComplex<Re1,Im1>, MComplex<Re2,Im2> > {
45 typedef typename Sub<Re1,Re2>::Result Re;
46 typedef typename Sub<Im1,Im2>::Result Im;
48 typedef MComplex<Re,Im> Result;
51 template<
class Re1,
class Im1,
class Re2,
class Im2>
52 class Mult<MComplex<Re1,Im1>, MComplex<Re2,Im2> > {
53 typedef typename Mult<Re1,Re2>::Result PRR;
54 typedef typename Mult<Im1,Im2>::Result PII;
55 typedef typename Mult<Im1,Re2>::Result PIR;
56 typedef typename Mult<Re1,Im2>::Result PRI;
57 typedef typename Sub<PRR,PII>::Result Re;
58 typedef typename Add<PIR,PRI>::Result Im;
60 typedef MComplex<Re,Im> Result;