#ifndef COMPLEX_H #define COMPLEX_H #include "dgtd-performance.hpp" using namespace std; #include #define Complex complex #define ZERO 1.0e-20 inline complex operator+(const complex &a, const float &b) { return a + (double)b; } inline complex operator+(const float &a, const complex &b) { return (double)a + b; } inline complex operator+(const complex &a, const double &b) { return a + (float)b; } inline complex operator+(const double &a, const complex &b) { return (float)a + b; } inline complex operator-(const complex &a, const float &b) { return a - (double)b; } inline complex operator-(const float &a, const complex &b) { return (double)a - b; } inline complex operator-(const complex &a, const double &b) { return a - (float)b; } inline complex operator-(const double &a, const complex &b) { return (float)a - b; } inline complex operator*(const complex &a, const float &b) { return a * (double)b; } inline complex operator*(const float &a, const complex &b) { return (double)a * b; } inline complex operator*(const complex &a, const double &b) { return a * (float)b; } inline complex operator*(const double &a, const complex &b) { return (float)a * b; } inline complex operator/(const complex &a, const float &b) { return a / (double)b; } inline complex operator/(const float &a, const complex &b) { return (double)a / b; } inline complex operator/(const complex &a, const double &b) { return a / (float)b; } inline complex operator/(const double &a, const complex &b) { return (float)a / b; } inline complex operator+(const complex &a, const complex &b) { return a + complex(b); } inline complex operator+(const complex &a, const complex &b) { return complex(a) + b; } inline complex operator-(const complex &a, const complex &b) { return a - complex(b); } inline complex operator-(const complex &a, const complex &b) { return complex(a) + b; } inline complex operator*(const complex &a, const complex &b) { return a * complex(b); } inline complex operator*(const complex &a, const complex &b) { return complex(a) * b; } inline complex operator/(const complex &a, const complex &b) { return a / complex(b); } inline complex operator/(const complex &a, const complex &b) { return complex(a) / b; } #endif