#include "complex.h"                // Ex43
#include <cmath>                    // access: sqrt
using namespace std;
// private declarations
static int cplxObjCnt = 0;            // must be initialized
// interface declarations
void complexStats() { cout << cplxObjCnt << endl; }
complex::complex() { re = 0.; im = 0.; cplxObjCnt += 1; }
complex::complex( double r ) { re = r; im = 0.; cplxObjCnt += 1; }
complex::complex( double r, double i ) { re = r; im = i; cplxObjCnt += 1; }
double complex::abs() { return sqrt( re * re + im * im ); }
complex operator+( complex a, complex b ) { return complex( a.re + b.re, a.im + b.im ); }
ostream &operator<<( ostream &os, complex c ) { return os << c.re << "+" << c.im << "i"; }
