53 "mmpp2_fit3 requires transcendental arithmetic");
54 using fitdetail::num_sqrt;
58 if (E1 == zero)
throw InputError(
"mmpp2_fit3: zero first moment");
59 const T SCV = (E2 - E1 * E1) / (E1 * E1);
61 T mu00, mu11, q01, q10;
62 if (G2 < g2tol || G2 == zero) {
63 mu00 = 2*(6*pw(E1,3)*SCV-E3)/E1/(6*pw(E1,3)*SCV+3*pw(E1,3)*pw(SCV,2)+3*pw(E1,3)-2*E3);
65 q01 = 9*pw(E1,5)*(SCV-1)*(pw(SCV,2)-2*SCV+1)/(6*pw(E1,3)*SCV-E3)/(6*pw(E1,3)*SCV+3*pw(E1,3)*pw(SCV,2)+
67 q10 = -3*(SCV-1)*pw(E1,2)/(6*pw(E1,3)*SCV-E3);
69 const T DISC = (pw(E3,2)-12*pw(E1,3)*SCV*E3+6*pw(E1,3)*G2*E3-6*G2*SCV*pw(E1,3)*E3+18*G2*pw(SCV,3)*pw(E1,6)-
70 18*pw(E1,6)*G2*pw(SCV,2)+9*pw(E1,6)*pw(G2,2)+36*pw(E1,6)*pw(SCV,2)+18*pw(E1,6)*G2*SCV-18*pw(E1,6)*
71 SCV*pw(G2,2)+9*pw(E1,6)*pw(SCV,2)*pw(G2,2)-18*pw(E1,6)*G2);
72 if (DISC < zero)
throw NumericError(
"mmpp2_fit3: negative moment discriminant");
73 const T SQ = num_sqrt(DISC);
74 mu00 = G2*(-4*E3*G2+4*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-
75 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3*G2-18*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
76 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2-18*pw(E1,3)*(-3*pw(E1,3)*
77 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
78 2*E3)*G2*pw(SCV,2)-12*pw(E1,3)*pw(G2,2)-12*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
79 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)*SCV+12*pw(E1,3)*
80 (-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-
81 3*pw(E1,3)+2*E3)*G2*SCV+12*pw(E1,3)*G2*pw(SCV,2)-9*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-
82 6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*SCV+3*pw(E1,3)*
83 (-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-
84 3*pw(E1,3)+2*E3)+12*pw(E1,3)*pw(G2,2)*SCV+9*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
85 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,2)+12*pw(E1,3)*G2+
86 12*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-
87 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)-3*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
88 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,3))/(12*pw(E1,3)*pw(G2,3)*
89 SCV+3*pw(E1,3)*pw(SCV,3)*G2-12*pw(E1,3)*pw(G2,3)+18*pw(E1,3)*pw(G2,2)*pw(SCV,2)-3*pw(E1,3)*
90 G2+27*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-
91 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2*pw(SCV,2)-9*pw(E1,3)*G2*pw(SCV,2)+18*pw(E1,3)*pw(G2,2)-12*
92 pw(E1,3)*pw(G2,2)*SCV+9*pw(E1,3)*G2*SCV-12*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
93 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,3)*SCV-9*pw(E1,3)*(-
94 3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-
95 3*pw(E1,3)+2*E3)*pw(SCV,3)*G2-24*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+
96 E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)*pw(SCV,2)-(-3*pw(E1,3)*
97 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
98 2*E3)*E3*pw(SCV,2)+4*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-
99 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3*pw(G2,2)+12*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*
100 pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,3)-(-3*pw(E1,3)*
101 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
102 2*E3)*E3+2*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*
103 pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3*SCV+9*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
104 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2+24*pw(E1,3)*(-3*pw(E1,3)*
105 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
106 2*E3)*pw(G2,2)*SCV-27*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*
107 pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2*SCV+6*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*
108 G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*SCV-12*
109 pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*
110 SCV-3*pw(E1,3)+2*E3)*pw(SCV,2)-24*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+
111 E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)+6*pw(E1,3)*(-3*pw(E1,3)*
112 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
113 2*E3)*pw(SCV,3)-4*E3*pw(G2,2))/E1;
114 mu11 = (-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/E1/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*
115 SCV-3*pw(E1,3)+2*E3);
116 q01 = -3*pw(E1,2)*(-6*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*
117 pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*SCV+12*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
118 SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2*SCV-6*G2*SCV*
119 pw(E1,2)-3*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-
120 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2+(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/
121 E1/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3+3*pw(E1,2)*G2+6*(-3*pw(E1,3)*G2+
122 3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
123 2*E3)*pw(SCV,2)-9*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*
124 pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,2)*G2+3*pw(E1,2)*G2*pw(SCV,2)-E3*(-3*pw(E1,3)*
125 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/E1/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
126 2*E3)*SCV-6*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-
127 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)*SCV+6*pw(E1,2)*pw(G2,2)*SCV+3*(-3*pw(E1,3)*G2+3*pw(E1,3)*
128 G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*
129 pw(G2,2)-G2*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/E1/(-3*pw(E1,3)*pw(SCV,2)-
130 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3-3*pw(E1,2)*pw(G2,2)+3*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-
131 6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,2)*
132 pw(G2,2)-3*pw(E1,2)*pw(SCV,2)*pw(G2,2)+G2*SCV*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
133 SCV+E3+SQ)/E1/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3)/(-45*(-3*pw(E1,3)*
134 G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*
135 pw(E1,3)+2*E3)*G2*pw(SCV,2)+18*pw(G2,2)*pw(E1,5)*SCV+18*pw(E1,5)*pw(G2,3)-27*pw(E1,5)*pw(G2,2)*
136 pw(SCV,2)+6*pw(E1,2)*pw(G2,2)*E3-27*pw(E1,5)*pw(G2,2)-18*pw(E1,5)*pw(G2,3)*SCV-18*pw(E1,5)*
137 G2*SCV+18*pw(E1,5)*G2*pw(SCV,2)+3*pw(E1,2)*G2*E3-3*pw(E1,2)*G2*E3*SCV+(-3*pw(E1,3)*G2+3*pw(E1,3)*
138 G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/E1/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(E3,2)+
139 3*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*
140 pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2*SCV*E3-36*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+
141 E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)*SCV+36*(-3*
142 pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*
143 SCV-3*pw(E1,3)+2*E3)*pw(G2,2)+36*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/
144 (-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,2)+45*(-3*pw(E1,3)*G2+3*pw(E1,3)*
145 G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*
146 G2*SCV-12*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-
147 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*SCV*E3-3*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+
148 SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2*E3+9*(-3*pw(E1,3)*G2+
149 3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+
150 2*E3)*G2*pw(SCV,3)+36*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*
151 pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,2)*pw(SCV,2)-6*(-3*pw(E1,3)*G2+3*pw(E1,3)*
152 G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,2)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*
153 pw(G2,2)*E3+18*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*
154 pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,3)*SCV-18*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-
155 6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(G2,3)-
156 9*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)*pw(E1,5)/(-3*pw(E1,3)*pw(SCV,2)-6*
157 pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2);
158 q10 = 3*(-3*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-
159 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,3)-3*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*
160 SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2*pw(SCV,2)+6*pw(E1,3)*pw(SCV,2)+
161 3*pw(E1,3)*G2*pw(SCV,2)+3*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/
162 (-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*pw(SCV,2)+6*pw(E1,3)*(-3*pw(E1,3)*G2+
163 3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*
164 E3)*G2*SCV-E3*SCV-6*pw(E1,3)*SCV+(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-
165 3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3*SCV-6*pw(E1,3)*G2*SCV-3*pw(E1,3)*(-
166 3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-
167 3*pw(E1,3)+2*E3)*SCV-(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-
168 6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*E3+3*pw(E1,3)*G2-3*pw(E1,3)*(-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-
169 6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-3*pw(E1,3)+2*E3)*G2+3*pw(E1,3)*
170 (-3*pw(E1,3)*G2+3*pw(E1,3)*G2*SCV-6*pw(E1,3)*SCV+E3+SQ)/(-3*pw(E1,3)*pw(SCV,2)-6*pw(E1,3)*SCV-
171 3*pw(E1,3)+2*E3)+E3)*pw(E1,2)*(-1+G2)/DISC;
177 m.
D0(0, 0) = -mu00 - q01;
180 m.
D0(1, 1) = -mu11 - q10;