//Mechanically generate code. Do not edit.
namespace TooN {
//modify make_data.awk and run make internal/data_functions.hh
inline Operator<Internal::Data<1, double> > Data(double x1){
  Operator<Internal::Data<1, double> > d;
  d.vals[0] = x1;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<1, Precision> > Data(const Precision& x1){
  Operator<Internal::Data<1, Precision> > d;
  d.vals[0] = x1;
  return d;
}
inline Operator<Internal::Data<2, double> > Data(double x1, double x2){
  Operator<Internal::Data<2, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<2, Precision> > Data(const Precision& x1, const Precision& x2){
  Operator<Internal::Data<2, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  return d;
}
inline Operator<Internal::Data<3, double> > Data(double x1, double x2, double x3){
  Operator<Internal::Data<3, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<3, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3){
  Operator<Internal::Data<3, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  return d;
}
inline Operator<Internal::Data<4, double> > Data(double x1, double x2, double x3, double x4){
  Operator<Internal::Data<4, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<4, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4){
  Operator<Internal::Data<4, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  return d;
}
inline Operator<Internal::Data<5, double> > Data(double x1, double x2, double x3, double x4, double x5){
  Operator<Internal::Data<5, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<5, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5){
  Operator<Internal::Data<5, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  return d;
}
inline Operator<Internal::Data<6, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6){
  Operator<Internal::Data<6, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<6, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6){
  Operator<Internal::Data<6, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  return d;
}
inline Operator<Internal::Data<7, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7){
  Operator<Internal::Data<7, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<7, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7){
  Operator<Internal::Data<7, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  return d;
}
inline Operator<Internal::Data<8, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8){
  Operator<Internal::Data<8, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<8, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8){
  Operator<Internal::Data<8, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  return d;
}
inline Operator<Internal::Data<9, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9){
  Operator<Internal::Data<9, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<9, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9){
  Operator<Internal::Data<9, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  return d;
}
inline Operator<Internal::Data<10, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10){
  Operator<Internal::Data<10, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<10, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10){
  Operator<Internal::Data<10, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  return d;
}
inline Operator<Internal::Data<11, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11){
  Operator<Internal::Data<11, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<11, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11){
  Operator<Internal::Data<11, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  return d;
}
inline Operator<Internal::Data<12, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12){
  Operator<Internal::Data<12, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<12, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12){
  Operator<Internal::Data<12, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  return d;
}
inline Operator<Internal::Data<13, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13){
  Operator<Internal::Data<13, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<13, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13){
  Operator<Internal::Data<13, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  return d;
}
inline Operator<Internal::Data<14, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14){
  Operator<Internal::Data<14, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<14, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14){
  Operator<Internal::Data<14, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  return d;
}
inline Operator<Internal::Data<15, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15){
  Operator<Internal::Data<15, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<15, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15){
  Operator<Internal::Data<15, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  return d;
}
inline Operator<Internal::Data<16, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16){
  Operator<Internal::Data<16, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<16, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16){
  Operator<Internal::Data<16, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  return d;
}
inline Operator<Internal::Data<17, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17){
  Operator<Internal::Data<17, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<17, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17){
  Operator<Internal::Data<17, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  return d;
}
inline Operator<Internal::Data<18, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18){
  Operator<Internal::Data<18, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<18, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18){
  Operator<Internal::Data<18, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  return d;
}
inline Operator<Internal::Data<19, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19){
  Operator<Internal::Data<19, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<19, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19){
  Operator<Internal::Data<19, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  return d;
}
inline Operator<Internal::Data<20, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20){
  Operator<Internal::Data<20, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<20, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20){
  Operator<Internal::Data<20, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  return d;
}
inline Operator<Internal::Data<21, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21){
  Operator<Internal::Data<21, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<21, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21){
  Operator<Internal::Data<21, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  return d;
}
inline Operator<Internal::Data<22, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22){
  Operator<Internal::Data<22, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<22, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22){
  Operator<Internal::Data<22, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  return d;
}
inline Operator<Internal::Data<23, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23){
  Operator<Internal::Data<23, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<23, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23){
  Operator<Internal::Data<23, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  return d;
}
inline Operator<Internal::Data<24, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24){
  Operator<Internal::Data<24, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<24, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24){
  Operator<Internal::Data<24, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  return d;
}
inline Operator<Internal::Data<25, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25){
  Operator<Internal::Data<25, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<25, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25){
  Operator<Internal::Data<25, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  return d;
}
inline Operator<Internal::Data<26, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26){
  Operator<Internal::Data<26, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<26, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26){
  Operator<Internal::Data<26, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  return d;
}
inline Operator<Internal::Data<27, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27){
  Operator<Internal::Data<27, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<27, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27){
  Operator<Internal::Data<27, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  return d;
}
inline Operator<Internal::Data<28, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28){
  Operator<Internal::Data<28, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<28, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28){
  Operator<Internal::Data<28, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  return d;
}
inline Operator<Internal::Data<29, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29){
  Operator<Internal::Data<29, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<29, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29){
  Operator<Internal::Data<29, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  return d;
}
inline Operator<Internal::Data<30, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30){
  Operator<Internal::Data<30, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<30, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30){
  Operator<Internal::Data<30, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  return d;
}
inline Operator<Internal::Data<31, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31){
  Operator<Internal::Data<31, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<31, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31){
  Operator<Internal::Data<31, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  return d;
}
inline Operator<Internal::Data<32, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32){
  Operator<Internal::Data<32, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<32, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32){
  Operator<Internal::Data<32, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  return d;
}
inline Operator<Internal::Data<33, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33){
  Operator<Internal::Data<33, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<33, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33){
  Operator<Internal::Data<33, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  return d;
}
inline Operator<Internal::Data<34, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34){
  Operator<Internal::Data<34, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<34, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34){
  Operator<Internal::Data<34, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  return d;
}
inline Operator<Internal::Data<35, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35){
  Operator<Internal::Data<35, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<35, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35){
  Operator<Internal::Data<35, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  return d;
}
inline Operator<Internal::Data<36, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36){
  Operator<Internal::Data<36, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<36, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36){
  Operator<Internal::Data<36, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  return d;
}
inline Operator<Internal::Data<37, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37){
  Operator<Internal::Data<37, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<37, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37){
  Operator<Internal::Data<37, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  return d;
}
inline Operator<Internal::Data<38, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38){
  Operator<Internal::Data<38, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<38, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38){
  Operator<Internal::Data<38, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  return d;
}
inline Operator<Internal::Data<39, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39){
  Operator<Internal::Data<39, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<39, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39){
  Operator<Internal::Data<39, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  return d;
}
inline Operator<Internal::Data<40, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40){
  Operator<Internal::Data<40, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<40, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40){
  Operator<Internal::Data<40, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  return d;
}
inline Operator<Internal::Data<41, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41){
  Operator<Internal::Data<41, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<41, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41){
  Operator<Internal::Data<41, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  return d;
}
inline Operator<Internal::Data<42, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42){
  Operator<Internal::Data<42, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<42, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42){
  Operator<Internal::Data<42, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  return d;
}
inline Operator<Internal::Data<43, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43){
  Operator<Internal::Data<43, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<43, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43){
  Operator<Internal::Data<43, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  return d;
}
inline Operator<Internal::Data<44, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44){
  Operator<Internal::Data<44, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<44, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44){
  Operator<Internal::Data<44, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  return d;
}
inline Operator<Internal::Data<45, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45){
  Operator<Internal::Data<45, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<45, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45){
  Operator<Internal::Data<45, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  return d;
}
inline Operator<Internal::Data<46, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46){
  Operator<Internal::Data<46, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<46, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46){
  Operator<Internal::Data<46, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  return d;
}
inline Operator<Internal::Data<47, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47){
  Operator<Internal::Data<47, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<47, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47){
  Operator<Internal::Data<47, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  return d;
}
inline Operator<Internal::Data<48, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48){
  Operator<Internal::Data<48, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<48, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48){
  Operator<Internal::Data<48, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  return d;
}
inline Operator<Internal::Data<49, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49){
  Operator<Internal::Data<49, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<49, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49){
  Operator<Internal::Data<49, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  return d;
}
inline Operator<Internal::Data<50, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50){
  Operator<Internal::Data<50, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<50, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50){
  Operator<Internal::Data<50, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  return d;
}
inline Operator<Internal::Data<51, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51){
  Operator<Internal::Data<51, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<51, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51){
  Operator<Internal::Data<51, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  return d;
}
inline Operator<Internal::Data<52, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52){
  Operator<Internal::Data<52, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<52, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52){
  Operator<Internal::Data<52, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  return d;
}
inline Operator<Internal::Data<53, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53){
  Operator<Internal::Data<53, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<53, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53){
  Operator<Internal::Data<53, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  return d;
}
inline Operator<Internal::Data<54, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54){
  Operator<Internal::Data<54, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<54, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54){
  Operator<Internal::Data<54, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  return d;
}
inline Operator<Internal::Data<55, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55){
  Operator<Internal::Data<55, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<55, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55){
  Operator<Internal::Data<55, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  return d;
}
inline Operator<Internal::Data<56, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56){
  Operator<Internal::Data<56, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<56, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56){
  Operator<Internal::Data<56, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  return d;
}
inline Operator<Internal::Data<57, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57){
  Operator<Internal::Data<57, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<57, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57){
  Operator<Internal::Data<57, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  return d;
}
inline Operator<Internal::Data<58, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58){
  Operator<Internal::Data<58, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<58, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58){
  Operator<Internal::Data<58, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  return d;
}
inline Operator<Internal::Data<59, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59){
  Operator<Internal::Data<59, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<59, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59){
  Operator<Internal::Data<59, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  return d;
}
inline Operator<Internal::Data<60, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60){
  Operator<Internal::Data<60, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<60, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60){
  Operator<Internal::Data<60, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  return d;
}
inline Operator<Internal::Data<61, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61){
  Operator<Internal::Data<61, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<61, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61){
  Operator<Internal::Data<61, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  return d;
}
inline Operator<Internal::Data<62, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62){
  Operator<Internal::Data<62, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<62, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62){
  Operator<Internal::Data<62, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  return d;
}
inline Operator<Internal::Data<63, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63){
  Operator<Internal::Data<63, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<63, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63){
  Operator<Internal::Data<63, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  return d;
}
inline Operator<Internal::Data<64, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64){
  Operator<Internal::Data<64, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<64, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64){
  Operator<Internal::Data<64, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  return d;
}
inline Operator<Internal::Data<65, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65){
  Operator<Internal::Data<65, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<65, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65){
  Operator<Internal::Data<65, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  return d;
}
inline Operator<Internal::Data<66, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66){
  Operator<Internal::Data<66, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<66, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66){
  Operator<Internal::Data<66, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  return d;
}
inline Operator<Internal::Data<67, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67){
  Operator<Internal::Data<67, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<67, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67){
  Operator<Internal::Data<67, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  return d;
}
inline Operator<Internal::Data<68, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68){
  Operator<Internal::Data<68, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<68, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68){
  Operator<Internal::Data<68, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  return d;
}
inline Operator<Internal::Data<69, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69){
  Operator<Internal::Data<69, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<69, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69){
  Operator<Internal::Data<69, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  return d;
}
inline Operator<Internal::Data<70, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70){
  Operator<Internal::Data<70, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<70, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70){
  Operator<Internal::Data<70, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  return d;
}
inline Operator<Internal::Data<71, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71){
  Operator<Internal::Data<71, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<71, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71){
  Operator<Internal::Data<71, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  return d;
}
inline Operator<Internal::Data<72, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72){
  Operator<Internal::Data<72, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<72, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72){
  Operator<Internal::Data<72, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  return d;
}
inline Operator<Internal::Data<73, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73){
  Operator<Internal::Data<73, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<73, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73){
  Operator<Internal::Data<73, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  return d;
}
inline Operator<Internal::Data<74, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74){
  Operator<Internal::Data<74, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<74, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74){
  Operator<Internal::Data<74, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  return d;
}
inline Operator<Internal::Data<75, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75){
  Operator<Internal::Data<75, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<75, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75){
  Operator<Internal::Data<75, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  return d;
}
inline Operator<Internal::Data<76, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76){
  Operator<Internal::Data<76, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<76, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76){
  Operator<Internal::Data<76, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  return d;
}
inline Operator<Internal::Data<77, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77){
  Operator<Internal::Data<77, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<77, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77){
  Operator<Internal::Data<77, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  return d;
}
inline Operator<Internal::Data<78, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78){
  Operator<Internal::Data<78, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<78, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78){
  Operator<Internal::Data<78, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  return d;
}
inline Operator<Internal::Data<79, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79){
  Operator<Internal::Data<79, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<79, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79){
  Operator<Internal::Data<79, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  return d;
}
inline Operator<Internal::Data<80, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80){
  Operator<Internal::Data<80, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<80, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80){
  Operator<Internal::Data<80, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  return d;
}
inline Operator<Internal::Data<81, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81){
  Operator<Internal::Data<81, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<81, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81){
  Operator<Internal::Data<81, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  return d;
}
inline Operator<Internal::Data<82, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82){
  Operator<Internal::Data<82, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<82, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82){
  Operator<Internal::Data<82, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  return d;
}
inline Operator<Internal::Data<83, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83){
  Operator<Internal::Data<83, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<83, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83){
  Operator<Internal::Data<83, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  return d;
}
inline Operator<Internal::Data<84, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84){
  Operator<Internal::Data<84, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<84, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84){
  Operator<Internal::Data<84, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  return d;
}
inline Operator<Internal::Data<85, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85){
  Operator<Internal::Data<85, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<85, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85){
  Operator<Internal::Data<85, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  return d;
}
inline Operator<Internal::Data<86, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86){
  Operator<Internal::Data<86, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<86, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86){
  Operator<Internal::Data<86, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  return d;
}
inline Operator<Internal::Data<87, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87){
  Operator<Internal::Data<87, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<87, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87){
  Operator<Internal::Data<87, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  return d;
}
inline Operator<Internal::Data<88, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88){
  Operator<Internal::Data<88, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<88, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88){
  Operator<Internal::Data<88, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  return d;
}
inline Operator<Internal::Data<89, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89){
  Operator<Internal::Data<89, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<89, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89){
  Operator<Internal::Data<89, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  return d;
}
inline Operator<Internal::Data<90, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90){
  Operator<Internal::Data<90, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<90, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90){
  Operator<Internal::Data<90, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  return d;
}
inline Operator<Internal::Data<91, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91){
  Operator<Internal::Data<91, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<91, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91){
  Operator<Internal::Data<91, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  return d;
}
inline Operator<Internal::Data<92, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92){
  Operator<Internal::Data<92, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<92, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92){
  Operator<Internal::Data<92, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  return d;
}
inline Operator<Internal::Data<93, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93){
  Operator<Internal::Data<93, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<93, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93){
  Operator<Internal::Data<93, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  return d;
}
inline Operator<Internal::Data<94, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94){
  Operator<Internal::Data<94, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<94, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94){
  Operator<Internal::Data<94, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  return d;
}
inline Operator<Internal::Data<95, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94, double x95){
  Operator<Internal::Data<95, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<95, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94, const Precision& x95){
  Operator<Internal::Data<95, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  return d;
}
inline Operator<Internal::Data<96, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94, double x95, double x96){
  Operator<Internal::Data<96, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<96, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94, const Precision& x95, const Precision& x96){
  Operator<Internal::Data<96, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  return d;
}
inline Operator<Internal::Data<97, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94, double x95, double x96, double x97){
  Operator<Internal::Data<97, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<97, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94, const Precision& x95, const Precision& x96, const Precision& x97){
  Operator<Internal::Data<97, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  return d;
}
inline Operator<Internal::Data<98, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94, double x95, double x96, double x97, double x98){
  Operator<Internal::Data<98, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  d.vals[97] = x98;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<98, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94, const Precision& x95, const Precision& x96, const Precision& x97, const Precision& x98){
  Operator<Internal::Data<98, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  d.vals[97] = x98;
  return d;
}
inline Operator<Internal::Data<99, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94, double x95, double x96, double x97, double x98, double x99){
  Operator<Internal::Data<99, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  d.vals[97] = x98;
  d.vals[98] = x99;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<99, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94, const Precision& x95, const Precision& x96, const Precision& x97, const Precision& x98, const Precision& x99){
  Operator<Internal::Data<99, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  d.vals[97] = x98;
  d.vals[98] = x99;
  return d;
}
inline Operator<Internal::Data<100, double> > Data(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9, double x10, double x11, double x12, double x13, double x14, double x15, double x16, double x17, double x18, double x19, double x20, double x21, double x22, double x23, double x24, double x25, double x26, double x27, double x28, double x29, double x30, double x31, double x32, double x33, double x34, double x35, double x36, double x37, double x38, double x39, double x40, double x41, double x42, double x43, double x44, double x45, double x46, double x47, double x48, double x49, double x50, double x51, double x52, double x53, double x54, double x55, double x56, double x57, double x58, double x59, double x60, double x61, double x62, double x63, double x64, double x65, double x66, double x67, double x68, double x69, double x70, double x71, double x72, double x73, double x74, double x75, double x76, double x77, double x78, double x79, double x80, double x81, double x82, double x83, double x84, double x85, double x86, double x87, double x88, double x89, double x90, double x91, double x92, double x93, double x94, double x95, double x96, double x97, double x98, double x99, double x100){
  Operator<Internal::Data<100, double> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  d.vals[97] = x98;
  d.vals[98] = x99;
  d.vals[99] = x100;
  return d;
}
template<typename Precision> inline Operator<Internal::Data<100, Precision> > Data(const Precision& x1, const Precision& x2, const Precision& x3, const Precision& x4, const Precision& x5, const Precision& x6, const Precision& x7, const Precision& x8, const Precision& x9, const Precision& x10, const Precision& x11, const Precision& x12, const Precision& x13, const Precision& x14, const Precision& x15, const Precision& x16, const Precision& x17, const Precision& x18, const Precision& x19, const Precision& x20, const Precision& x21, const Precision& x22, const Precision& x23, const Precision& x24, const Precision& x25, const Precision& x26, const Precision& x27, const Precision& x28, const Precision& x29, const Precision& x30, const Precision& x31, const Precision& x32, const Precision& x33, const Precision& x34, const Precision& x35, const Precision& x36, const Precision& x37, const Precision& x38, const Precision& x39, const Precision& x40, const Precision& x41, const Precision& x42, const Precision& x43, const Precision& x44, const Precision& x45, const Precision& x46, const Precision& x47, const Precision& x48, const Precision& x49, const Precision& x50, const Precision& x51, const Precision& x52, const Precision& x53, const Precision& x54, const Precision& x55, const Precision& x56, const Precision& x57, const Precision& x58, const Precision& x59, const Precision& x60, const Precision& x61, const Precision& x62, const Precision& x63, const Precision& x64, const Precision& x65, const Precision& x66, const Precision& x67, const Precision& x68, const Precision& x69, const Precision& x70, const Precision& x71, const Precision& x72, const Precision& x73, const Precision& x74, const Precision& x75, const Precision& x76, const Precision& x77, const Precision& x78, const Precision& x79, const Precision& x80, const Precision& x81, const Precision& x82, const Precision& x83, const Precision& x84, const Precision& x85, const Precision& x86, const Precision& x87, const Precision& x88, const Precision& x89, const Precision& x90, const Precision& x91, const Precision& x92, const Precision& x93, const Precision& x94, const Precision& x95, const Precision& x96, const Precision& x97, const Precision& x98, const Precision& x99, const Precision& x100){
  Operator<Internal::Data<100, Precision> > d;
  d.vals[0] = x1;
  d.vals[1] = x2;
  d.vals[2] = x3;
  d.vals[3] = x4;
  d.vals[4] = x5;
  d.vals[5] = x6;
  d.vals[6] = x7;
  d.vals[7] = x8;
  d.vals[8] = x9;
  d.vals[9] = x10;
  d.vals[10] = x11;
  d.vals[11] = x12;
  d.vals[12] = x13;
  d.vals[13] = x14;
  d.vals[14] = x15;
  d.vals[15] = x16;
  d.vals[16] = x17;
  d.vals[17] = x18;
  d.vals[18] = x19;
  d.vals[19] = x20;
  d.vals[20] = x21;
  d.vals[21] = x22;
  d.vals[22] = x23;
  d.vals[23] = x24;
  d.vals[24] = x25;
  d.vals[25] = x26;
  d.vals[26] = x27;
  d.vals[27] = x28;
  d.vals[28] = x29;
  d.vals[29] = x30;
  d.vals[30] = x31;
  d.vals[31] = x32;
  d.vals[32] = x33;
  d.vals[33] = x34;
  d.vals[34] = x35;
  d.vals[35] = x36;
  d.vals[36] = x37;
  d.vals[37] = x38;
  d.vals[38] = x39;
  d.vals[39] = x40;
  d.vals[40] = x41;
  d.vals[41] = x42;
  d.vals[42] = x43;
  d.vals[43] = x44;
  d.vals[44] = x45;
  d.vals[45] = x46;
  d.vals[46] = x47;
  d.vals[47] = x48;
  d.vals[48] = x49;
  d.vals[49] = x50;
  d.vals[50] = x51;
  d.vals[51] = x52;
  d.vals[52] = x53;
  d.vals[53] = x54;
  d.vals[54] = x55;
  d.vals[55] = x56;
  d.vals[56] = x57;
  d.vals[57] = x58;
  d.vals[58] = x59;
  d.vals[59] = x60;
  d.vals[60] = x61;
  d.vals[61] = x62;
  d.vals[62] = x63;
  d.vals[63] = x64;
  d.vals[64] = x65;
  d.vals[65] = x66;
  d.vals[66] = x67;
  d.vals[67] = x68;
  d.vals[68] = x69;
  d.vals[69] = x70;
  d.vals[70] = x71;
  d.vals[71] = x72;
  d.vals[72] = x73;
  d.vals[73] = x74;
  d.vals[74] = x75;
  d.vals[75] = x76;
  d.vals[76] = x77;
  d.vals[77] = x78;
  d.vals[78] = x79;
  d.vals[79] = x80;
  d.vals[80] = x81;
  d.vals[81] = x82;
  d.vals[82] = x83;
  d.vals[83] = x84;
  d.vals[84] = x85;
  d.vals[85] = x86;
  d.vals[86] = x87;
  d.vals[87] = x88;
  d.vals[88] = x89;
  d.vals[89] = x90;
  d.vals[90] = x91;
  d.vals[91] = x92;
  d.vals[92] = x93;
  d.vals[93] = x94;
  d.vals[94] = x95;
  d.vals[95] = x96;
  d.vals[96] = x97;
  d.vals[97] = x98;
  d.vals[98] = x99;
  d.vals[99] = x100;
  return d;
}
}
