#ifndef CTRIDIAG_H
#define CTRIDIAG_H
#include<complex>
#include"Cvec.h"
typedef std::complex<double> Creal;

class Ctridiag {
public:
	Cvec sup;
	Cvec sub;
	Cvec diag;

	//Ctridiag();
	Ctridiag(double& dx);
	Ctridiag(const int n, double& dx);
	Ctridiag(const Ctridiag& in, double& dx);
	Ctridiag(const int n, double& dx, double sub_in, double diag_in, double sup_in);
	Ctridiag(const int n, double& dx, Creal& sub_in, Creal& diag_in, Creal& sup_in);
	~Ctridiag();


	Cvec operator*(const Cvec& invec);
	Ctridiag operator*(const double& in);

	Ctridiag operator=(double& diag_in);
	Ctridiag operator=(Cvec& in); 

	Ctridiag operator+(const Ctridiag& in);
	Ctridiag operator-(const Ctridiag& in);

	Ctridiag operator/(double& in);

	Cvec solve(const Cvec& b) const; // zusätzlich friend operator/  als x = b/M
	friend Cvec operator/(const Cvec& bin, const Ctridiag& Min) {
		
		return Min.solve(bin);
	}

	void init(int n, double& dx);
	void print();
};

#endif
