#include using namespace icl; template inline Array __solvePQ(T p, T q){ T rootTerm = p*p/4-q; Array a(2); if(rootTerm >= 0){ // real solution a[0]=(-p*0.5 + sqrt(rootTerm)); a[1]=(-p*0.5 - sqrt(rootTerm)); }else{ a.clear(); } return a; } template Array QuadraticModel::x(T y) const{ return __solvePQ( px(y), qx(y) ); } template Array QuadraticModel::y(T x) const{ return __solvePQ( py(x), qy(x) ); } template QuadraticModel::QuadraticModel(int dim): GeneralModel(dim){} template class QuadraticModel; template class QuadraticModel;