bool Complex::isLess(Complex comp2) { if(this->abs() < comp2.abs()) return true; else return false; }
int main() { Complex a(1,2); Complex *b = new Complex(3,-4); cout << "a="; a.print(); cout << "; abs=" << a.abs() << endl; cout << "b="; b->print(); cout << "; abs=" << b->abs() << endl; cout << "a+b="; cplx_plus(a, *b).print(); cout << endl; Complex(1,2).print(); cout << endl; cout << "a+b="; a.add(*b).print(); cout << endl; Complex(1,2).add(Complex(3,4).add(Complex(5,6))).print(); cout << endl; delete b; return 0; }
void Point::addForceContribution(const Point * & p, Vector<2> & force, Vector<2> & v2, Vector<3> & stress) { double thetaz = getDomain()->getModulus(); double factor = getDomain()->getPassionsRatio(); double cutOff = 2 * std::abs(this->getBurgersMagnitude()); Complex b(this->getBurgersVector()); Complex z(this->getLocation()); double sig11 = 0; double sig22 = 0; double sig12 = 0; double sig11z = 0; double sig22z = 0; double sig12z = 0; Complex zSource(p->getLocation()); Complex dz = z - zSource; double zd = dz.abs(); if(zd > cutOff) { Complex phi1 = -1. * Complex::i * factor * b / dz; Complex phi11 = Complex::i * factor * b / (dz * dz); Complex phi2 = Complex::i * factor * b.conjugate() / dz; Complex tmp1 = 2. * Complex(phi1 * phi1.conjugate()); Complex tmp2 = -2. * Complex(dz * phi11.conjugate() * phi2.conjugate()); sig11 += Complex(0.5 * (tmp1 + tmp2)).real(); sig22 += Complex(0.5 * (tmp1 - tmp2)).real(); sig12 += Complex(.5 * tmp2).imag(); Complex phi1z = Complex::i * factor * b / (dz * dz) * thetaz; Complex phi11z = -2. * Complex::i * factor * b / (dz * dz * dz) * thetaz; Complex phi2z = -1. * factor * b.conjugate() / (dz * dz) * thetaz; Complex tmp1z = 2. * (phi1z + phi1z.conjugate()); Complex tmp2z = -2. * (dz * phi11z.conjugate() + phi2z.conjugate()); sig11z += Complex(.5 * (tmp1z + tmp2z)).real(); sig22z += Complex(.5 * (tmp1z - tmp2z)).real(); sig12z += Complex(.5 * tmp2z).imag(); } double cos2i = ::cos(2. * this->getSlipPlane()->getAngle()); double sin2i = ::sin(2. * this->getSlipPlane()->getAngle()); double bi = std::abs(getSlipPlane()->getBurgersMagnitude()) * getBurgersSign() * ((sig22 - sig11) * .5 * sin2i + sig12 * cos2i); force += Vector<2>({bi, 0}); }
int MainWindow::when_goes_to_infinity(Complex z) { int iteration = 1; while ( z.abs() < infinity && iteration <= iterations ) { z = func(z); ++iteration; } // return (z.abs() >= infinity ? iteration : 0); return iteration - 1; }
bool operator <=(const Complex& left, const Complex& right){ return left.abs() <= right.abs();; }
bool operator >(const Complex& left, const Complex& right){ return left.abs() > right.abs(); }
int main() { /*Queue<int> positive, negative; int num; cout << "write a zero-terminated sequence of integers" << endl; cin >> num; while (num) { if (num>0) positive.push(num); else negative.push(num); cin >> num; } cout << "positive numbers:" << endl; while (!positive.isEmpty()) { num = positive.pop(); cout << num << ' '; } cout << "\nnegative numbers:" << endl; while (!negative.isEmpty()) { num = negative.pop(); cout << num << ' '; } cout << endl; Queue<float> fpositive, fnegative; float fnum; cout << "write a zero-terminated sequence of floats" << endl; cin >> fnum; while (fnum) { if (fnum>0) fpositive.push(fnum); else fnegative.push(fnum); cin >> fnum; } cout << "positive numbers:" << endl; while (!fpositive.isEmpty()) { fnum = fpositive.pop(); cout << fnum << ' '; } cout << "\nnegative numbers:" << endl; while (!fnegative.isEmpty()) { fnum = fnegative.pop(); cout << fnum << ' '; } cout << endl;*/ Queue<Complex> cpositive, cnegative; Complex cnum; cout << "write a zero-terminated sequence of complex numbers" << endl; cin >> cnum; while (cnum.abs()) { if (cnum.getRe()>0) cpositive.push(cnum); else cnegative.push(cnum); cin >> cnum; } //cpositive.push(Complex(1,1)); //cnegative.push(Complex(-1,1)); cout << "positive numbers:" << endl; while (!cpositive.isEmpty()) { cnum = cpositive.pop(); cout << cnum << ' '; } cout << "\nnegative numbers:" << endl; while (!cnegative.isEmpty()) { cnum = cnegative.pop(); cout << cnum << ' '; } cout << endl; return 0; }