Next: qureg.h
Up: Code for my Simulation
Previous: complex.h
Contents
#include <math.h>
#include "complex.h"
//Complex constructor, initializes to 0 + i0.
Complex::Complex(): real( 0 ), imaginary( 0 ) {}
//Argument constructor.
Complex::Complex( double r, double i ): real( r ), imaginary( i ) {}
//Complex destructor.
Complex::~Complex() {}
//Overloaded = operator.
Complex & Complex::operator=(const Complex &c) {
if (&c != this) {
real = c.Real();
imaginary = c.Imaginary();
return *this;
}
}
//Overloaded + operator.
Complex & Complex::operator+(const Complex &c) {
real += c.Real();
imaginary += c.Imaginary();
return *this;
}
//Overloaded * operator.
Complex & Complex::operator*(const Complex &c) {
real = real * c.Real() - imaginary * c.Imaginary();
imaginary = real * c.Imaginary() + imaginary * c.Real();
return *this;
}
//Overloaded == operator. Small error tolerances.
bool Complex::operator==(const Complex &c) const {
//This is to take care of round off errors.
if (fabs(c.Real() - real) > pow(10,-14)) {
return false;
}
if (fabs(c.Imaginary()- imaginary) > pow(10,-14)) {
return false;
}
return true;
}
//Sets private data members.
void Complex::Set(double new_real, double new_imaginary) {
real = new_real;
imaginary = new_imaginary;
return;
}
//Returns the real part of the complex number.
double Complex::Real() const {
return real;
}
//Returns the imaginary part of the complex number.
double Complex::Imaginary() const {
return imaginary;
}
Next: qureg.h
Up: Code for my Simulation
Previous: complex.h
Contents
Matthew Hayward - Quantum Computing and Shor's Algorithm GitHub Repository