1 /*
2  *            Copyright 2009-2020 The VOTCA Development Team
3  *                       (http://www.votca.org)
4  *
5  *      Licensed under the Apache License, Version 2.0 (the "License")
6  *
7  * You may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *              http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "A_ol I_ol" BA_olI_ol,
14  * WITHOUT WARRANTIE_ol OR CONDITION_ol OF ANY KIND, either express or implied.
15  *  olee_ the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19 
20 // Local VOTCA includes
21 #include "votca/xtp/sphere_lebedev_rule.h"
22 #include "votca/xtp/grid_containers.h"
23 #include "votca/xtp/qmmolecule.h"
24 #include "votca/xtp/qmpackage.h"
25 
26 namespace votca {
27 namespace xtp {
28 
29 std::map<std::string, GridContainers::spherical_grid>
30     LebedevGrid::CalculateSphericalGrids(const QMMolecule &atoms,
31                                          const std::string &type) const {
32   std::vector<std::string> unique_atoms = atoms.FindUniqueElements();
Initialize(tools::Property & options)33   std::map<std::string, GridContainers::spherical_grid> result;
34   for (const std::string &atomname : unique_atoms) {
35     result[atomname] = CalculateUnitSphereGrid(atomname, type);
36   }
37   return result;
38 }
39 
40 GridContainers::spherical_grid LebedevGrid::CalculateUnitSphereGrid(
41     const std::string &element, const std::string &type) const {
42   Index order = Type2MaxOrder(element, type);
43   return CalculateUnitSphereGrid(order);
44 }
45 
46 GridContainers::spherical_grid LebedevGrid::CalculateUnitSphereGrid(
47     Index order) const {
48   const double fourpi = 4 * tools::conv::Pi;
49   GridContainers::spherical_grid result;
50   result.phi = Eigen::VectorXd::Zero(order);
51   result.theta = Eigen::VectorXd::Zero(order);
52   result.weight = Eigen::VectorXd::Zero(order);
53   Eigen::Matrix4Xd xyzw = ld_by_order(order);
54   for (Index i = 0; i < order; i++) {
55     Eigen::Vector3d xyz = xyzw.col(i).head<3>();
56     Eigen::Vector2d spherical = this->Cartesian2SphericalAngle(xyz);
57     result.phi[i] = spherical[0];
Evaluate()58     result.theta[i] = spherical[1];
59     result.weight[i] = fourpi * xyzw.col(i)[3];
60   }
61   return result;
62 }
63 
64 Index LebedevGrid::Type2MaxOrder(const std::map<std::string, Index> &map,
65                                  const std::string &element) const {
66   if (map.count(element)) {
67     return map.at(element);
68   } else {
69     throw std::runtime_error("Element type " + element +
70                              " for LebedevGrid not found");
71   }
72   return -1;
73 }
74 
75 Index LebedevGrid::Type2MaxOrder(const std::string &element,
76                                  const std::string &type) const {
77 
78   if (type == "medium") {
79     return Type2MaxOrder(MediumOrder, element);
80   } else if (type == "coarse") {
81     return Type2MaxOrder(CoarseOrder, element);
82   } else if (type == "xcoarse") {
83     return Type2MaxOrder(XcoarseOrder, element);
84   } else if (type == "fine") {
85     return Type2MaxOrder(FineOrder, element);
86   } else if (type == "xfine") {
87     return Type2MaxOrder(XfineOrder, element);
88   }
89   throw std::runtime_error("Grid type " + type + " is not implemented");
90   return -1;
91 }
92 
93 //****************************************************************************80
94 
95 Index LebedevGrid::available_table(Index rule) const
96 
97 //****************************************************************************80
98 //
99 //  Purpose:
100 //
101 //    AVAILABLE_TABLE returns the availability of a Lebedev rule.
102 //
103 //  Modified:
104 //
105 //    12 September 2010
106 //
107 //  Author:
108 //
109 //    John Burkardt
110 //
111 //  Reference:
112 //
113 //    Vyacheslav Lebedev, Dmitri Laikov,
114 //    A quadrature formula for the sphere of the 131st
115 //    algebraic order of accuracy,
116 //    Russian Academy of Sciences Doklady Mathematics,
117 //    Volume 59, Number 3, 1999, pages 477-481.
118 //
119 //  Parameters:
120 //
121 //    Input, Index RULE, the index of the rule, between 1 and 65.
122 //
123 //    Output, Index AVAILABLE_TABLE, the availability of the rule.
124 //    * -1, there is no such rule;
125 //    *  0, there is such a rule, but it is not available in this library.
126 //    *  1, the rule is available in this library.
Report(const BFGSTRM & bfgstrm,const Forces & forces,Logger & pLog)127 //
128 {
129   Index rule_max = 65;
130   Index table[65] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
131                      0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
132                      1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,
133                      0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1};
134   Index value;
135 
136   if (rule < 1) {
137     value = -1;
138   } else if (rule_max < rule) {
139     value = -1;
140   } else {
141     value = table[rule - 1];
142   }
143 
144   return value;
145 }
146 //****************************************************************************80
147 
148 Index LebedevGrid::gen_oh(Index code, double a, double b, double v, double *x,
149                           double *y, double *z, double *w) const
150 
151 //****************************************************************************80
152 //
153 //  Purpose:
154 //
155 //    GEN_OH generates points under OH symmetry.
156 //
157 //  Discussion:
158 //
159 //    Given a point on a sphere, specified by A and B, this routine generates
160 //    all the equivalent points under OH symmetry, making grid points with
161 //    weight V.
162 //
163 //    The variable NUM is increased by the number of different points
164 //    generated.
165 //
WriteTrajectory(const std::string & filename,QMMolecule & atoms,const BFGSTRM & bfgstrm)166 //    Depending on CODE, there are from 6 to 48 different but equivalent
167 //    points that are generated:
168 //
169 //      CODE=1:   (0,0,1) etc            (  6 points)
170 //      CODE=2:   (0,A,A) etc, A=1/sqrt(2)         ( 12 points)
171 //      CODE=3:   (A,A,A) etc, A=1/sqrt(3)         (  8 points)
172 //      CODE=4:   (A,A,B) etc, B=sqrt(1-2 A^2)     ( 24 points)
173 //      CODE=5:   (A,B,0) etc, B=sqrt(1-A^2), A input   ( 24 points)
174 //      CODE=6:   (A,B,C) etc, C=sqrt(1-A^2-B^2), A, B input ( 48 points)
175 //
176 //  Modified:
177 //
178 //    11 September 2010
179 //
180 //  Author:
181 //
182 //    Dmitri Laikov
183 //
184 //  Reference:
185 //
186 //    Vyacheslav Lebedev, Dmitri Laikov,
187 //    A quadrature formula for the sphere of the 131st
188 //    algebraic order of accuracy,
189 //    Russian Academy of Sciences Doklady Mathematics,
190 //    Volume 59, Number 3, 1999, pages 477-481.
191 //
192 //  Parameters:
193 //
194 //    Input, Index CODE, selects the symmetry group.
195 //
196 //    Input/output, Index &NUM, the number of points.  This is incremented
197 //    upon output by the number of points generated on this call.
198 //
199 //    Input, double A, B, information that may be needed to
200 //    generate the coordinates of the points (for code = 5 or 6 only).
201 //
202 //    Input, double V, the weight to be assigned the points.
203 //
204 //    Output, double X[*], Y[*], Z[*], W[*], the coordinates
205 //    and weights of the symmetric points generated on this call.
206 //
207 //    Output, Index GEN_OH, the number of points generated on this call.
208 //
209 {
210   double c;
211   Index num;
212 
213   if (code == 1) {
214     a = 1.0;
215     x[0] = a;
216     y[0] = 0.0;
217     z[0] = 0.0;
218     w[0] = v;
219     x[1] = -a;
220     y[1] = 0.0;
221     z[1] = 0.0;
222     w[1] = v;
223     x[2] = 0.0;
224     y[2] = a;
225     z[2] = 0.0;
226     w[2] = v;
227     x[3] = 0.0;
228     y[3] = -a;
229     z[3] = 0.0;
230     w[3] = v;
231     x[4] = 0.0;
232     y[4] = 0.0;
233     z[4] = a;
234     w[4] = v;
235     x[5] = 0.0;
236     y[5] = 0.0;
237     z[5] = -a;
238     w[5] = v;
239     num = 6;
240   } else if (code == 2) {
241     a = sqrt(0.5);
242     x[0] = 0;
243     y[0] = a;
244     z[0] = a;
245     w[0] = v;
246     x[1] = 0;
247     y[1] = -a;
248     z[1] = a;
249     w[1] = v;
250     x[2] = 0;
251     y[2] = a;
252     z[2] = -a;
253     w[2] = v;
254     x[3] = 0;
255     y[3] = -a;
256     z[3] = -a;
257     w[3] = v;
258     x[4] = a;
259     y[4] = 0;
260     z[4] = a;
261     w[4] = v;
262     x[5] = -a;
263     y[5] = 0;
264     z[5] = a;
265     w[5] = v;
266     x[6] = a;
267     y[6] = 0;
268     z[6] = -a;
269     w[6] = v;
270     x[7] = -a;
271     y[7] = 0;
272     z[7] = -a;
273     w[7] = v;
274     x[8] = a;
275     y[8] = a;
276     z[8] = 0;
277     w[8] = v;
278     x[9] = -a;
279     y[9] = a;
280     z[9] = 0;
281     w[9] = v;
282     x[10] = a;
283     y[10] = -a;
284     z[10] = 0;
285     w[10] = v;
286     x[11] = -a;
287     y[11] = -a;
288     z[11] = 0;
289     w[11] = v;
290     num = 12;
291   } else if (code == 3) {
292     a = sqrt(1.0 / 3.0);
293     x[0] = a;
294     y[0] = a;
295     z[0] = a;
296     w[0] = v;
297     x[1] = -a;
298     y[1] = a;
299     z[1] = a;
300     w[1] = v;
301     x[2] = a;
302     y[2] = -a;
303     z[2] = a;
304     w[2] = v;
305     x[3] = -a;
306     y[3] = -a;
307     z[3] = a;
308     w[3] = v;
309     x[4] = a;
310     y[4] = a;
311     z[4] = -a;
312     w[4] = v;
313     x[5] = -a;
314     y[5] = a;
315     z[5] = -a;
316     w[5] = v;
317     x[6] = a;
318     y[6] = -a;
319     z[6] = -a;
320     w[6] = v;
321     x[7] = -a;
322     y[7] = -a;
323     z[7] = -a;
324     w[7] = v;
325     num = 8;
326   } else if (code == 4) {
327     b = sqrt(1.0 - 2.0 * a * a);
328     x[0] = a;
329     y[0] = a;
330     z[0] = b;
331     w[0] = v;
332     x[1] = -a;
333     y[1] = a;
334     z[1] = b;
335     w[1] = v;
336     x[2] = a;
337     y[2] = -a;
338     z[2] = b;
339     w[2] = v;
340     x[3] = -a;
341     y[3] = -a;
342     z[3] = b;
343     w[3] = v;
344     x[4] = a;
345     y[4] = a;
346     z[4] = -b;
347     w[4] = v;
348     x[5] = -a;
349     y[5] = a;
350     z[5] = -b;
351     w[5] = v;
352     x[6] = a;
353     y[6] = -a;
354     z[6] = -b;
355     w[6] = v;
356     x[7] = -a;
357     y[7] = -a;
358     z[7] = -b;
359     w[7] = v;
360     x[8] = a;
361     y[8] = b;
362     z[8] = a;
363     w[8] = v;
364     x[9] = -a;
365     y[9] = b;
366     z[9] = a;
367     w[9] = v;
368     x[10] = a;
369     y[10] = -b;
370     z[10] = a;
371     w[10] = v;
372     x[11] = -a;
373     y[11] = -b;
374     z[11] = a;
375     w[11] = v;
376     x[12] = a;
377     y[12] = b;
378     z[12] = -a;
379     w[12] = v;
380     x[13] = -a;
381     y[13] = b;
382     z[13] = -a;
383     w[13] = v;
384     x[14] = a;
385     y[14] = -b;
386     z[14] = -a;
387     w[14] = v;
388     x[15] = -a;
389     y[15] = -b;
390     z[15] = -a;
391     w[15] = v;
392     x[16] = b;
393     y[16] = a;
394     z[16] = a;
395     w[16] = v;
396     x[17] = -b;
397     y[17] = a;
398     z[17] = a;
399     w[17] = v;
400     x[18] = b;
401     y[18] = -a;
402     z[18] = a;
403     w[18] = v;
404     x[19] = -b;
405     y[19] = -a;
406     z[19] = a;
407     w[19] = v;
408     x[20] = b;
409     y[20] = a;
410     z[20] = -a;
411     w[20] = v;
412     x[21] = -b;
413     y[21] = a;
414     z[21] = -a;
415     w[21] = v;
416     x[22] = b;
417     y[22] = -a;
418     z[22] = -a;
419     w[22] = v;
420     x[23] = -b;
421     y[23] = -a;
422     z[23] = -a;
423     w[23] = v;
424     num = 24;
425   } else if (code == 5) {
426     b = sqrt(1.0 - a * a);
427     x[0] = a;
428     y[0] = b;
429     z[0] = 0;
430     w[0] = v;
431     x[1] = -a;
432     y[1] = b;
433     z[1] = 0;
434     w[1] = v;
435     x[2] = a;
436     y[2] = -b;
437     z[2] = 0;
438     w[2] = v;
439     x[3] = -a;
440     y[3] = -b;
441     z[3] = 0;
442     w[3] = v;
443     x[4] = b;
444     y[4] = a;
445     z[4] = 0;
446     w[4] = v;
447     x[5] = -b;
448     y[5] = a;
449     z[5] = 0;
450     w[5] = v;
451     x[6] = b;
452     y[6] = -a;
453     z[6] = 0;
454     w[6] = v;
455     x[7] = -b;
456     y[7] = -a;
457     z[7] = 0;
458     w[7] = v;
459     x[8] = a;
460     y[8] = 0;
461     z[8] = b;
462     w[8] = v;
463     x[9] = -a;
464     y[9] = 0;
465     z[9] = b;
466     w[9] = v;
467     x[10] = a;
468     y[10] = 0;
469     z[10] = -b;
470     w[10] = v;
471     x[11] = -a;
472     y[11] = 0;
473     z[11] = -b;
474     w[11] = v;
475     x[12] = b;
476     y[12] = 0;
477     z[12] = a;
478     w[12] = v;
479     x[13] = -b;
480     y[13] = 0;
481     z[13] = a;
482     w[13] = v;
483     x[14] = b;
484     y[14] = 0;
485     z[14] = -a;
486     w[14] = v;
487     x[15] = -b;
488     y[15] = 0;
489     z[15] = -a;
490     w[15] = v;
491     x[16] = 0;
492     y[16] = a;
493     z[16] = b;
494     w[16] = v;
495     x[17] = 0;
496     y[17] = -a;
497     z[17] = b;
498     w[17] = v;
499     x[18] = 0;
500     y[18] = a;
501     z[18] = -b;
502     w[18] = v;
503     x[19] = 0;
504     y[19] = -a;
505     z[19] = -b;
506     w[19] = v;
507     x[20] = 0;
508     y[20] = b;
509     z[20] = a;
510     w[20] = v;
511     x[21] = 0;
512     y[21] = -b;
513     z[21] = a;
514     w[21] = v;
515     x[22] = 0;
516     y[22] = b;
517     z[22] = -a;
518     w[22] = v;
519     x[23] = 0;
520     y[23] = -b;
521     z[23] = -a;
522     w[23] = v;
523     num = 24;
524   } else if (code == 6) {
525     c = sqrt(1.0 - a * a - b * b);
526     x[0] = a;
527     y[0] = b;
528     z[0] = c;
529     w[0] = v;
530     x[1] = -a;
531     y[1] = b;
532     z[1] = c;
533     w[1] = v;
534     x[2] = a;
535     y[2] = -b;
536     z[2] = c;
537     w[2] = v;
538     x[3] = -a;
539     y[3] = -b;
540     z[3] = c;
541     w[3] = v;
542     x[4] = a;
543     y[4] = b;
544     z[4] = -c;
545     w[4] = v;
546     x[5] = -a;
547     y[5] = b;
548     z[5] = -c;
549     w[5] = v;
550     x[6] = a;
551     y[6] = -b;
552     z[6] = -c;
553     w[6] = v;
554     x[7] = -a;
555     y[7] = -b;
556     z[7] = -c;
557     w[7] = v;
558     x[8] = a;
559     y[8] = c;
560     z[8] = b;
561     w[8] = v;
562     x[9] = -a;
563     y[9] = c;
564     z[9] = b;
565     w[9] = v;
566     x[10] = a;
567     y[10] = -c;
568     z[10] = b;
569     w[10] = v;
570     x[11] = -a;
571     y[11] = -c;
572     z[11] = b;
573     w[11] = v;
574     x[12] = a;
575     y[12] = c;
576     z[12] = -b;
577     w[12] = v;
578     x[13] = -a;
579     y[13] = c;
580     z[13] = -b;
581     w[13] = v;
582     x[14] = a;
583     y[14] = -c;
584     z[14] = -b;
585     w[14] = v;
586     x[15] = -a;
587     y[15] = -c;
588     z[15] = -b;
589     w[15] = v;
590     x[16] = b;
591     y[16] = a;
592     z[16] = c;
593     w[16] = v;
594     x[17] = -b;
595     y[17] = a;
596     z[17] = c;
597     w[17] = v;
598     x[18] = b;
599     y[18] = -a;
600     z[18] = c;
601     w[18] = v;
602     x[19] = -b;
603     y[19] = -a;
604     z[19] = c;
605     w[19] = v;
606     x[20] = b;
607     y[20] = a;
608     z[20] = -c;
609     w[20] = v;
610     x[21] = -b;
611     y[21] = a;
612     z[21] = -c;
613     w[21] = v;
614     x[22] = b;
615     y[22] = -a;
616     z[22] = -c;
617     w[22] = v;
618     x[23] = -b;
619     y[23] = -a;
620     z[23] = -c;
621     w[23] = v;
622     x[24] = b;
623     y[24] = c;
624     z[24] = a;
625     w[24] = v;
626     x[25] = -b;
627     y[25] = c;
628     z[25] = a;
629     w[25] = v;
630     x[26] = b;
631     y[26] = -c;
632     z[26] = a;
633     w[26] = v;
634     x[27] = -b;
635     y[27] = -c;
636     z[27] = a;
637     w[27] = v;
638     x[28] = b;
639     y[28] = c;
640     z[28] = -a;
641     w[28] = v;
642     x[29] = -b;
643     y[29] = c;
644     z[29] = -a;
645     w[29] = v;
646     x[30] = b;
647     y[30] = -c;
648     z[30] = -a;
649     w[30] = v;
650     x[31] = -b;
651     y[31] = -c;
652     z[31] = -a;
653     w[31] = v;
654     x[32] = c;
655     y[32] = a;
656     z[32] = b;
657     w[32] = v;
658     x[33] = -c;
659     y[33] = a;
660     z[33] = b;
661     w[33] = v;
662     x[34] = c;
663     y[34] = -a;
664     z[34] = b;
665     w[34] = v;
666     x[35] = -c;
667     y[35] = -a;
668     z[35] = b;
669     w[35] = v;
670     x[36] = c;
671     y[36] = a;
672     z[36] = -b;
673     w[36] = v;
674     x[37] = -c;
675     y[37] = a;
676     z[37] = -b;
677     w[37] = v;
678     x[38] = c;
679     y[38] = -a;
680     z[38] = -b;
681     w[38] = v;
682     x[39] = -c;
683     y[39] = -a;
684     z[39] = -b;
685     w[39] = v;
686     x[40] = c;
687     y[40] = b;
688     z[40] = a;
689     w[40] = v;
690     x[41] = -c;
691     y[41] = b;
692     z[41] = a;
693     w[41] = v;
694     x[42] = c;
695     y[42] = -b;
696     z[42] = a;
697     w[42] = v;
698     x[43] = -c;
699     y[43] = -b;
700     z[43] = a;
701     w[43] = v;
702     x[44] = c;
703     y[44] = b;
704     z[44] = -a;
705     w[44] = v;
706     x[45] = -c;
707     y[45] = b;
708     z[45] = -a;
709     w[45] = v;
710     x[46] = c;
711     y[46] = -b;
712     z[46] = -a;
713     w[46] = v;
714     x[47] = -c;
715     y[47] = -b;
716     z[47] = -a;
717     w[47] = v;
718     num = 48;
719   } else {
720     throw std::runtime_error(
721         "GEN_OH - Fatal error!\n Illegal value of code.\n");
722   }
723   return num;
724 }
725 //****************************************************************************80
726 
727 Eigen::Matrix4Xd LebedevGrid::ld_by_order(Index order) const
728 //  Purpose:
729 //
730 //    LD_BY_ORDER returns a Lebedev angular grid given its order.
731 //
732 //  Discussion:
733 //
734 //    Only a certain set of such rules are available through this function.
735 //  Author:
736 //
737 //    Dmitri Laikov
738 //
739 //  Reference:
740 //
741 //    Vyacheslav Lebedev, Dmitri Laikov,
742 //    A quadrature formula for the sphere of the 131st
743 //    algebraic order of accuracy,
744 //    Russian Academy of Sciences Doklady Mathematics,
745 //    Volume 59, Number 3, 1999, pages 477-481.
746 //
747 {
748   Eigen::VectorXd x = Eigen::VectorXd::Zero(order);
749   Eigen::VectorXd y = Eigen::VectorXd::Zero(order);
750   Eigen::VectorXd z = Eigen::VectorXd::Zero(order);
751   Eigen::VectorXd w = Eigen::VectorXd::Zero(order);
752   switch (order) {
753     case 6:
754       ld0006(x.data(), y.data(), z.data(), w.data());
755       break;
756     case 14:
757       ld0014(x.data(), y.data(), z.data(), w.data());
758       break;
759     case 26:
760       ld0026(x.data(), y.data(), z.data(), w.data());
761       break;
762     case 38:
763       ld0038(x.data(), y.data(), z.data(), w.data());
764       break;
765     case 50:
766       ld0050(x.data(), y.data(), z.data(), w.data());
767       break;
768     case 74:
769       ld0074(x.data(), y.data(), z.data(), w.data());
770       break;
771     case 86:
772       ld0086(x.data(), y.data(), z.data(), w.data());
773       break;
774     case 110:
775       ld0110(x.data(), y.data(), z.data(), w.data());
776       break;
777     case 146:
778       ld0146(x.data(), y.data(), z.data(), w.data());
779       break;
780     case 170:
781       ld0170(x.data(), y.data(), z.data(), w.data());
782       break;
783     case 194:
784       ld0194(x.data(), y.data(), z.data(), w.data());
785       break;
786     case 230:
787       ld0230(x.data(), y.data(), z.data(), w.data());
788       break;
789     case 266:
790       ld0266(x.data(), y.data(), z.data(), w.data());
791       break;
792     case 302:
793       ld0302(x.data(), y.data(), z.data(), w.data());
794       break;
795     case 350:
796       ld0350(x.data(), y.data(), z.data(), w.data());
797       break;
798     case 434:
799       ld0434(x.data(), y.data(), z.data(), w.data());
800       break;
801     case 590:
802       ld0590(x.data(), y.data(), z.data(), w.data());
803       break;
804     case 770:
805       ld0770(x.data(), y.data(), z.data(), w.data());
806       break;
807     case 974:
808       ld0974(x.data(), y.data(), z.data(), w.data());
809       break;
810     case 1202:
811       ld1202(x.data(), y.data(), z.data(), w.data());
812       break;
813     case 1454:
814       ld1454(x.data(), y.data(), z.data(), w.data());
815       break;
816     case 1730:
817       ld1730(x.data(), y.data(), z.data(), w.data());
818       break;
819     case 2030:
820       ld2030(x.data(), y.data(), z.data(), w.data());
821       break;
822     case 2354:
823       ld2354(x.data(), y.data(), z.data(), w.data());
824       break;
825     case 2702:
826       ld2702(x.data(), y.data(), z.data(), w.data());
827       break;
828     case 3074:
829       ld3074(x.data(), y.data(), z.data(), w.data());
830       break;
831     case 3470:
832       ld3470(x.data(), y.data(), z.data(), w.data());
833       break;
834     case 3890:
835       ld3890(x.data(), y.data(), z.data(), w.data());
836       break;
837     case 4334:
838       ld4334(x.data(), y.data(), z.data(), w.data());
839       break;
840     case 4802:
841       ld4802(x.data(), y.data(), z.data(), w.data());
842       break;
843     case 5294:
844       ld5294(x.data(), y.data(), z.data(), w.data());
845       break;
846     case 5810:
847       ld5810(x.data(), y.data(), z.data(), w.data());
848       break;
849     default:
850       throw std::runtime_error(
851           "LD_BY_ORDER - Fatal error! Unexpected value of ORDER.");
852       break;
853   }
854   Eigen::Matrix4Xd result = Eigen::Matrix4Xd::Zero(4, order);
855   result.row(0) = x;
856   result.row(1) = y;
857   result.row(2) = z;
858   result.row(3) = w;
859   return result;
860 }
861 
862 //****************************************************************************80
863 
864 void LebedevGrid::ld0006(double *x, double *y, double *z, double *w) const
865 
866 //****************************************************************************80
867 //
868 //  Purpose:
869 //
870 //    LD0006 computes the 6 point Lebedev angular grid.
871 //
872 //  Modified:
873 //
874 //    11 September 2010
875 //
876 //  Author:
877 //
878 //    Dmitri Laikov
879 //
880 //  Reference:
881 //
882 //    Vyacheslav Lebedev, Dmitri Laikov,
883 //    A quadrature formula for the sphere of the 131st
884 //    algebraic order of accuracy,
885 //    Russian Academy of Sciences Doklady Mathematics,
886 //    Volume 59, Number 3, 1999, pages 477-481.
887 //
888 //  Parameters:
889 //
890 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
891 //    and weights of the points.
892 //
893 {
894   double a = 0.0;
895   double b = 0.0;
896   Index n;
897   double v;
898 
899   n = 0;
900   v = 0.1666666666666667;
901   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
902 
903   return;
904 }
905 //****************************************************************************80
906 
907 void LebedevGrid::ld0014(double *x, double *y, double *z, double *w) const
908 
909 //****************************************************************************80
910 //
911 //  Purpose:
912 //
913 //    LD0014 computes the 14 point Lebedev angular grid.
914 //
915 //  Modified:
916 //
917 //    12 September 2010
918 //
919 //  Author:
920 //
921 //    Dmitri Laikov
922 //
923 //  Reference:
924 //
925 //    Vyacheslav Lebedev, Dmitri Laikov,
926 //    A quadrature formula for the sphere of the 131st
927 //    algebraic order of accuracy,
928 //    Russian Academy of Sciences Doklady Mathematics,
929 //    Volume 59, Number 3, 1999, pages 477-481.
930 //
931 //  Parameters:
932 //
933 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
934 //    and weights of the points.
935 //
936 {
937   double a = 0.0;
938   double b = 0.0;
939   Index n;
940   double v;
941 
942   n = 0;
943   v = 0.6666666666666667e-1;
944   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
945   v = 0.7500000000000000e-1;
946   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
947   n = n - 1;
948 
949   return;
950 }
951 //****************************************************************************80
952 
953 void LebedevGrid::ld0026(double *x, double *y, double *z, double *w) const
954 
955 //****************************************************************************80
956 //
957 //  Purpose:
958 //
959 //    LD0026 computes the 26 point Lebedev angular grid.
960 //
961 //  Modified:
962 //
963 //    12 September 2010
964 //
965 //  Author:
966 //
967 //    Dmitri Laikov
968 //
969 //  Reference:
970 //
971 //    Vyacheslav Lebedev, Dmitri Laikov,
972 //    A quadrature formula for the sphere of the 131st
973 //    algebraic order of accuracy,
974 //    Russian Academy of Sciences Doklady Mathematics,
975 //    Volume 59, Number 3, 1999, pages 477-481.
976 //
977 //  Parameters:
978 //
979 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
980 //    and weights of the points.
981 //
982 {
983   double a = 0.0;
984   double b = 0.0;
985   Index n;
986   double v;
987 
988   n = 0;
989   v = 0.4761904761904762e-1;
990   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
991   v = 0.3809523809523810e-1;
992   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
993   v = 0.3214285714285714e-1;
994   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
995   n = n - 1;
996 
997   return;
998 }
999 //****************************************************************************80
1000 
1001 void LebedevGrid::ld0038(double *x, double *y, double *z, double *w) const
1002 
1003 //****************************************************************************80
1004 //
1005 //  Purpose:
1006 //
1007 //    LD0038 computes the 38 point Lebedev angular grid.
1008 //
1009 //  Modified:
1010 //
1011 //    12 September 2010
1012 //
1013 //  Author:
1014 //
1015 //    Dmitri Laikov
1016 //
1017 //  Reference:
1018 //
1019 //    Vyacheslav Lebedev, Dmitri Laikov,
1020 //    A quadrature formula for the sphere of the 131st
1021 //    algebraic order of accuracy,
1022 //    Russian Academy of Sciences Doklady Mathematics,
1023 //    Volume 59, Number 3, 1999, pages 477-481.
1024 //
1025 //  Parameters:
1026 //
1027 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1028 //    and weights of the points.
1029 //
1030 {
1031   double a = 0.0;
1032   double b = 0.0;
1033   Index n;
1034   double v;
1035 
1036   n = 0;
1037   v = 0.9523809523809524e-2;
1038   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1039   v = 0.3214285714285714e-1;
1040   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1041   a = 0.4597008433809831;
1042   v = 0.2857142857142857e-1;
1043   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1044   n = n - 1;
1045 
1046   return;
1047 }
1048 //****************************************************************************80
1049 
1050 void LebedevGrid::ld0050(double *x, double *y, double *z, double *w) const
1051 
1052 //****************************************************************************80
1053 //
1054 //  Purpose:
1055 //
1056 //    LD0050 computes the 50 point Lebedev angular grid.
1057 //
1058 //  Modified:
1059 //
1060 //    12 September 2010
1061 //
1062 //  Author:
1063 //
1064 //    Dmitri Laikov
1065 //
1066 //  Reference:
1067 //
1068 //    Vyacheslav Lebedev, Dmitri Laikov,
1069 //    A quadrature formula for the sphere of the 131st
1070 //    algebraic order of accuracy,
1071 //    Russian Academy of Sciences Doklady Mathematics,
1072 //    Volume 59, Number 3, 1999, pages 477-481.
1073 //
1074 //  Parameters:
1075 //
1076 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1077 //    and weights of the points.
1078 //
1079 {
1080   double a = 0.0;
1081   double b = 0.0;
1082   Index n;
1083   double v;
1084 
1085   n = 0;
1086   v = 0.1269841269841270e-1;
1087   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1088   v = 0.2257495590828924e-1;
1089   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1090   v = 0.2109375000000000e-1;
1091   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1092   a = 0.3015113445777636;
1093   v = 0.2017333553791887e-1;
1094   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1095   n = n - 1;
1096 
1097   return;
1098 }
1099 //****************************************************************************80
1100 
1101 void LebedevGrid::ld0074(double *x, double *y, double *z, double *w) const
1102 
1103 //****************************************************************************80
1104 //
1105 //  Purpose:
1106 //
1107 //    LD0074 computes the 74 point Lebedev angular grid.
1108 //
1109 //  Modified:
1110 //
1111 //    12 September 2010
1112 //
1113 //  Author:
1114 //
1115 //    Dmitri Laikov
1116 //
1117 //  Reference:
1118 //
1119 //    Vyacheslav Lebedev, Dmitri Laikov,
1120 //    A quadrature formula for the sphere of the 131st
1121 //    algebraic order of accuracy,
1122 //    Russian Academy of Sciences Doklady Mathematics,
1123 //    Volume 59, Number 3, 1999, pages 477-481.
1124 //
1125 //  Parameters:
1126 //
1127 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1128 //    and weights of the points.
1129 //
1130 {
1131   double a = 0.0;
1132   double b = 0.0;
1133   Index n;
1134   double v;
1135 
1136   n = 0;
1137   v = 0.5130671797338464e-3;
1138   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1139   v = 0.1660406956574204e-1;
1140   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1141   v = -0.2958603896103896e-1;
1142   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1143   a = 0.4803844614152614;
1144   v = 0.2657620708215946e-1;
1145   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1146   a = 0.3207726489807764;
1147   v = 0.1652217099371571e-1;
1148   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1149   n = n - 1;
1150 
1151   return;
1152 }
1153 //****************************************************************************80
1154 
1155 void LebedevGrid::ld0086(double *x, double *y, double *z, double *w) const
1156 
1157 //****************************************************************************80
1158 //
1159 //  Purpose:
1160 //
1161 //    LD0086 computes the 86 point Lebedev angular grid.
1162 //
1163 //  Modified:
1164 //
1165 //    12 September 2010
1166 //
1167 //  Author:
1168 //
1169 //    Dmitri Laikov
1170 //
1171 //  Reference:
1172 //
1173 //    Vyacheslav Lebedev, Dmitri Laikov,
1174 //    A quadrature formula for the sphere of the 131st
1175 //    algebraic order of accuracy,
1176 //    Russian Academy of Sciences Doklady Mathematics,
1177 //    Volume 59, Number 3, 1999, pages 477-481.
1178 //
1179 //  Parameters:
1180 //
1181 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1182 //    and weights of the points.
1183 //
1184 {
1185   double a = 0.0;
1186   double b = 0.0;
1187   Index n;
1188   double v;
1189 
1190   n = 0;
1191   v = 0.1154401154401154e-1;
1192   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1193   v = 0.1194390908585628e-1;
1194   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1195   a = 0.3696028464541502;
1196   v = 0.1111055571060340e-1;
1197   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1198   a = 0.6943540066026664;
1199   v = 0.1187650129453714e-1;
1200   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1201   a = 0.3742430390903412;
1202   v = 0.1181230374690448e-1;
1203   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1204   n = n - 1;
1205 
1206   return;
1207 }
1208 //****************************************************************************80
1209 
1210 void LebedevGrid::ld0110(double *x, double *y, double *z, double *w) const
1211 
1212 //****************************************************************************80
1213 //
1214 //  Purpose:
1215 //
1216 //    LD0110 computes the 110 point Lebedev angular grid.
1217 //
1218 //  Modified:
1219 //
1220 //    12 September 2010
1221 //
1222 //  Author:
1223 //
1224 //    Dmitri Laikov
1225 //
1226 //  Reference:
1227 //
1228 //    Vyacheslav Lebedev, Dmitri Laikov,
1229 //    A quadrature formula for the sphere of the 131st
1230 //    algebraic order of accuracy,
1231 //    Russian Academy of Sciences Doklady Mathematics,
1232 //    Volume 59, Number 3, 1999, pages 477-481.
1233 //
1234 //  Parameters:
1235 //
1236 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1237 //    and weights of the points.
1238 //
1239 {
1240   double a = 0.0;
1241   double b = 0.0;
1242   Index n;
1243   double v;
1244 
1245   n = 0;
1246   v = 0.3828270494937162e-2;
1247   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1248   v = 0.9793737512487512e-2;
1249   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1250   a = 0.1851156353447362;
1251   v = 0.8211737283191111e-2;
1252   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1253   a = 0.6904210483822922;
1254   v = 0.9942814891178103e-2;
1255   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1256   a = 0.3956894730559419;
1257   v = 0.9595471336070963e-2;
1258   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1259   a = 0.4783690288121502;
1260   v = 0.9694996361663028e-2;
1261   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1262   n = n - 1;
1263 
1264   return;
1265 }
1266 //****************************************************************************80
1267 
1268 void LebedevGrid::ld0146(double *x, double *y, double *z, double *w) const
1269 
1270 //****************************************************************************80
1271 //
1272 //  Purpose:
1273 //
1274 //    LD0146 computes the 146 point Lebedev angular grid.
1275 //
1276 //  Modified:
1277 //
1278 //    12 September 2010
1279 //
1280 //  Author:
1281 //
1282 //    Dmitri Laikov
1283 //
1284 //  Reference:
1285 //
1286 //    Vyacheslav Lebedev, Dmitri Laikov,
1287 //    A quadrature formula for the sphere of the 131st
1288 //    algebraic order of accuracy,
1289 //    Russian Academy of Sciences Doklady Mathematics,
1290 //    Volume 59, Number 3, 1999, pages 477-481.
1291 //
1292 //  Parameters:
1293 //
1294 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1295 //    and weights of the points.
1296 //
1297 {
1298   double a = 0.0;
1299   double b = 0.0;
1300   Index n;
1301   double v;
1302 
1303   n = 0;
1304   v = 0.5996313688621381e-3;
1305   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1306   v = 0.7372999718620756e-2;
1307   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1308   v = 0.7210515360144488e-2;
1309   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1310   a = 0.6764410400114264;
1311   v = 0.7116355493117555e-2;
1312   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1313   a = 0.4174961227965453;
1314   v = 0.6753829486314477e-2;
1315   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1316   a = 0.1574676672039082;
1317   v = 0.7574394159054034e-2;
1318   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1319   a = 0.1403553811713183;
1320   b = 0.4493328323269557;
1321   v = 0.6991087353303262e-2;
1322   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1323   n = n - 1;
1324 
1325   return;
1326 }
1327 //****************************************************************************80
1328 
1329 void LebedevGrid::ld0170(double *x, double *y, double *z, double *w) const
1330 
1331 //****************************************************************************80
1332 //
1333 //  Purpose:
1334 //
1335 //    LD0170 computes the 170 point Lebedev angular grid.
1336 //
1337 //  Modified:
1338 //
1339 //    12 September 2010
1340 //
1341 //  Author:
1342 //
1343 //    Dmitri Laikov
1344 //
1345 //  Reference:
1346 //
1347 //    Vyacheslav Lebedev, Dmitri Laikov,
1348 //    A quadrature formula for the sphere of the 131st
1349 //    algebraic order of accuracy,
1350 //    Russian Academy of Sciences Doklady Mathematics,
1351 //    Volume 59, Number 3, 1999, pages 477-481.
1352 //
1353 //  Parameters:
1354 //
1355 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1356 //    and weights of the points.
1357 //
1358 {
1359   double a = 0.0;
1360   double b = 0.0;
1361   Index n;
1362   double v;
1363 
1364   n = 0;
1365   v = 0.5544842902037365e-2;
1366   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1367   v = 0.6071332770670752e-2;
1368   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1369   v = 0.6383674773515093e-2;
1370   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1371   a = 0.2551252621114134;
1372   v = 0.5183387587747790e-2;
1373   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1374   a = 0.6743601460362766;
1375   v = 0.6317929009813725e-2;
1376   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1377   a = 0.4318910696719410;
1378   v = 0.6201670006589077e-2;
1379   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1380   a = 0.2613931360335988;
1381   v = 0.5477143385137348e-2;
1382   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1383   a = 0.4990453161796037;
1384   b = 0.1446630744325115;
1385   v = 0.5968383987681156e-2;
1386   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1387   n = n - 1;
1388 
1389   return;
1390 }
1391 //****************************************************************************80
1392 
1393 void LebedevGrid::ld0194(double *x, double *y, double *z, double *w) const
1394 
1395 //****************************************************************************80
1396 //
1397 //  Purpose:
1398 //
1399 //    LD0194 computes the 194 point Lebedev angular grid.
1400 //
1401 //  Modified:
1402 //
1403 //    12 September 2010
1404 //
1405 //  Author:
1406 //
1407 //    Dmitri Laikov
1408 //
1409 //  Reference:
1410 //
1411 //    Vyacheslav Lebedev, Dmitri Laikov,
1412 //    A quadrature formula for the sphere of the 131st
1413 //    algebraic order of accuracy,
1414 //    Russian Academy of Sciences Doklady Mathematics,
1415 //    Volume 59, Number 3, 1999, pages 477-481.
1416 //
1417 //  Parameters:
1418 //
1419 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1420 //    and weights of the points.
1421 //
1422 {
1423   double a = 0.0;
1424   double b = 0.0;
1425   Index n;
1426   double v;
1427 
1428   n = 0;
1429   v = 0.1782340447244611e-2;
1430   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1431   v = 0.5716905949977102e-2;
1432   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1433   v = 0.5573383178848738e-2;
1434   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1435   a = 0.6712973442695226;
1436   v = 0.5608704082587997e-2;
1437   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1438   a = 0.2892465627575439;
1439   v = 0.5158237711805383e-2;
1440   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1441   a = 0.4446933178717437;
1442   v = 0.5518771467273614e-2;
1443   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1444   a = 0.1299335447650067;
1445   v = 0.4106777028169394e-2;
1446   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1447   a = 0.3457702197611283;
1448   v = 0.5051846064614808e-2;
1449   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1450   a = 0.1590417105383530;
1451   b = 0.8360360154824589;
1452   v = 0.5530248916233094e-2;
1453   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1454   n = n - 1;
1455 
1456   return;
1457 }
1458 //****************************************************************************80
1459 
1460 void LebedevGrid::ld0230(double *x, double *y, double *z, double *w) const
1461 
1462 //****************************************************************************80
1463 //
1464 //  Purpose:
1465 //
1466 //    LD0230 computes the 230 point Lebedev angular grid.
1467 //
1468 //  Modified:
1469 //
1470 //    12 September 2010
1471 //
1472 //  Author:
1473 //
1474 //    Dmitri Laikov
1475 //
1476 //  Reference:
1477 //
1478 //    Vyacheslav Lebedev, Dmitri Laikov,
1479 //    A quadrature formula for the sphere of the 131st
1480 //    algebraic order of accuracy,
1481 //    Russian Academy of Sciences Doklady Mathematics,
1482 //    Volume 59, Number 3, 1999, pages 477-481.
1483 //
1484 //  Parameters:
1485 //
1486 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1487 //    and weights of the points.
1488 //
1489 {
1490   double a = 0.0;
1491   double b = 0.0;
1492   Index n;
1493   double v;
1494 
1495   n = 0;
1496   v = -0.5522639919727325e-1;
1497   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1498   v = 0.4450274607445226e-2;
1499   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1500   a = 0.4492044687397611;
1501   v = 0.4496841067921404e-2;
1502   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1503   a = 0.2520419490210201;
1504   v = 0.5049153450478750e-2;
1505   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1506   a = 0.6981906658447242;
1507   v = 0.3976408018051883e-2;
1508   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1509   a = 0.6587405243460960;
1510   v = 0.4401400650381014e-2;
1511   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1512   a = 0.4038544050097660e-1;
1513   v = 0.1724544350544401e-1;
1514   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1515   a = 0.5823842309715585;
1516   v = 0.4231083095357343e-2;
1517   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1518   a = 0.3545877390518688;
1519   v = 0.5198069864064399e-2;
1520   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1521   a = 0.2272181808998187;
1522   b = 0.4864661535886647;
1523   v = 0.4695720972568883e-2;
1524   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1525   n = n - 1;
1526 
1527   return;
1528 }
1529 //****************************************************************************80
1530 
1531 void LebedevGrid::ld0266(double *x, double *y, double *z, double *w) const
1532 
1533 //****************************************************************************80
1534 //
1535 //  Purpose:
1536 //
1537 //    LD0266 computes the 266 point Lebedev angular grid.
1538 //
1539 //  Modified:
1540 //
1541 //    12 September 2010
1542 //
1543 //  Author:
1544 //
1545 //    Dmitri Laikov
1546 //
1547 //  Reference:
1548 //
1549 //    Vyacheslav Lebedev, Dmitri Laikov,
1550 //    A quadrature formula for the sphere of the 131st
1551 //    algebraic order of accuracy,
1552 //    Russian Academy of Sciences Doklady Mathematics,
1553 //    Volume 59, Number 3, 1999, pages 477-481.
1554 //
1555 //  Parameters:
1556 //
1557 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1558 //    and weights of the points.
1559 //
1560 {
1561   double a = 0.0;
1562   double b = 0.0;
1563   Index n;
1564   double v;
1565 
1566   n = 0;
1567   v = -0.1313769127326952e-2;
1568   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1569   v = -0.2522728704859336e-2;
1570   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1571   v = 0.4186853881700583e-2;
1572   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1573   a = 0.7039373391585475;
1574   v = 0.5315167977810885e-2;
1575   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1576   a = 0.1012526248572414;
1577   v = 0.4047142377086219e-2;
1578   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1579   a = 0.4647448726420539;
1580   v = 0.4112482394406990e-2;
1581   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1582   a = 0.3277420654971629;
1583   v = 0.3595584899758782e-2;
1584   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1585   a = 0.6620338663699974;
1586   v = 0.4256131351428158e-2;
1587   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1588   a = 0.8506508083520399;
1589   v = 0.4229582700647240e-2;
1590   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1591   a = 0.3233484542692899;
1592   b = 0.1153112011009701;
1593   v = 0.4080914225780505e-2;
1594   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1595   a = 0.2314790158712601;
1596   b = 0.5244939240922365;
1597   v = 0.4071467593830964e-2;
1598   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1599   n = n - 1;
1600 
1601   return;
1602 }
1603 //****************************************************************************80
1604 
1605 void LebedevGrid::ld0302(double *x, double *y, double *z, double *w) const
1606 
1607 //****************************************************************************80
1608 //
1609 //  Purpose:
1610 //
1611 //    LD0302 computes the 302 point Lebedev angular grid.
1612 //
1613 //  Modified:
1614 //
1615 //    12 September 2010
1616 //
1617 //  Author:
1618 //
1619 //    Dmitri Laikov
1620 //
1621 //  Reference:
1622 //
1623 //    Vyacheslav Lebedev, Dmitri Laikov,
1624 //    A quadrature formula for the sphere of the 131st
1625 //    algebraic order of accuracy,
1626 //    Russian Academy of Sciences Doklady Mathematics,
1627 //    Volume 59, Number 3, 1999, pages 477-481.
1628 //
1629 //  Parameters:
1630 //
1631 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1632 //    and weights of the points.
1633 //
1634 {
1635   double a = 0.0;
1636   double b = 0.0;
1637   Index n;
1638   double v;
1639 
1640   n = 0;
1641   v = 0.8545911725128148e-3;
1642   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1643   v = 0.3599119285025571e-2;
1644   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1645   a = 0.3515640345570105;
1646   v = 0.3449788424305883e-2;
1647   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1648   a = 0.6566329410219612;
1649   v = 0.3604822601419882e-2;
1650   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1651   a = 0.4729054132581005;
1652   v = 0.3576729661743367e-2;
1653   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1654   a = 0.9618308522614784e-1;
1655   v = 0.2352101413689164e-2;
1656   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1657   a = 0.2219645236294178;
1658   v = 0.3108953122413675e-2;
1659   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1660   a = 0.7011766416089545;
1661   v = 0.3650045807677255e-2;
1662   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1663   a = 0.2644152887060663;
1664   v = 0.2982344963171804e-2;
1665   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1666   a = 0.5718955891878961;
1667   v = 0.3600820932216460e-2;
1668   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1669   a = 0.2510034751770465;
1670   b = 0.8000727494073952;
1671   v = 0.3571540554273387e-2;
1672   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1673   a = 0.1233548532583327;
1674   b = 0.4127724083168531;
1675   v = 0.3392312205006170e-2;
1676   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1677   n = n - 1;
1678 
1679   return;
1680 }
1681 //****************************************************************************80
1682 
1683 void LebedevGrid::ld0350(double *x, double *y, double *z, double *w) const
1684 
1685 //****************************************************************************80
1686 //
1687 //  Purpose:
1688 //
1689 //    LD0350 computes the 350 point Lebedev angular grid.
1690 //
1691 //  Modified:
1692 //
1693 //    12 September 2010
1694 //
1695 //  Author:
1696 //
1697 //    Dmitri Laikov
1698 //
1699 //  Reference:
1700 //
1701 //    Vyacheslav Lebedev, Dmitri Laikov,
1702 //    A quadrature formula for the sphere of the 131st
1703 //    algebraic order of accuracy,
1704 //    Russian Academy of Sciences Doklady Mathematics,
1705 //    Volume 59, Number 3, 1999, pages 477-481.
1706 //
1707 //  Parameters:
1708 //
1709 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1710 //    and weights of the points.
1711 //
1712 {
1713   double a = 0.0;
1714   double b = 0.0;
1715   Index n;
1716   double v;
1717 
1718   n = 0;
1719   v = 0.3006796749453936e-2;
1720   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1721   v = 0.3050627745650771e-2;
1722   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1723   a = 0.7068965463912316;
1724   v = 0.1621104600288991e-2;
1725   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1726   a = 0.4794682625712025;
1727   v = 0.3005701484901752e-2;
1728   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1729   a = 0.1927533154878019;
1730   v = 0.2990992529653774e-2;
1731   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1732   a = 0.6930357961327123;
1733   v = 0.2982170644107595e-2;
1734   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1735   a = 0.3608302115520091;
1736   v = 0.2721564237310992e-2;
1737   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1738   a = 0.6498486161496169;
1739   v = 0.3033513795811141e-2;
1740   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1741   a = 0.1932945013230339;
1742   v = 0.3007949555218533e-2;
1743   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1744   a = 0.3800494919899303;
1745   v = 0.2881964603055307e-2;
1746   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1747   a = 0.2899558825499574;
1748   b = 0.7934537856582316;
1749   v = 0.2958357626535696e-2;
1750   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1751   a = 0.9684121455103957e-1;
1752   b = 0.8280801506686862;
1753   v = 0.3036020026407088e-2;
1754   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1755   a = 0.1833434647041659;
1756   b = 0.9074658265305127;
1757   v = 0.2832187403926303e-2;
1758   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1759   n = n - 1;
1760 
1761   return;
1762 }
1763 //****************************************************************************80
1764 
1765 void LebedevGrid::ld0434(double *x, double *y, double *z, double *w) const
1766 
1767 //****************************************************************************80
1768 //
1769 //  Purpose:
1770 //
1771 //    LD0434 computes the 434 point Lebedev angular grid.
1772 //
1773 //  Modified:
1774 //
1775 //    12 September 2010
1776 //
1777 //  Author:
1778 //
1779 //    Dmitri Laikov
1780 //
1781 //  Reference:
1782 //
1783 //    Vyacheslav Lebedev, Dmitri Laikov,
1784 //    A quadrature formula for the sphere of the 131st
1785 //    algebraic order of accuracy,
1786 //    Russian Academy of Sciences Doklady Mathematics,
1787 //    Volume 59, Number 3, 1999, pages 477-481.
1788 //
1789 //  Parameters:
1790 //
1791 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1792 //    and weights of the points.
1793 //
1794 {
1795   double a = 0.0;
1796   double b = 0.0;
1797   Index n;
1798   double v;
1799 
1800   n = 0;
1801   v = 0.5265897968224436e-3;
1802   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1803   v = 0.2548219972002607e-2;
1804   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
1805   v = 0.2512317418927307e-2;
1806   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1807   a = 0.6909346307509111;
1808   v = 0.2530403801186355e-2;
1809   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1810   a = 0.1774836054609158;
1811   v = 0.2014279020918528e-2;
1812   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1813   a = 0.4914342637784746;
1814   v = 0.2501725168402936e-2;
1815   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1816   a = 0.6456664707424256;
1817   v = 0.2513267174597564e-2;
1818   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1819   a = 0.2861289010307638;
1820   v = 0.2302694782227416e-2;
1821   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1822   a = 0.7568084367178018e-1;
1823   v = 0.1462495621594614e-2;
1824   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1825   a = 0.3927259763368002;
1826   v = 0.2445373437312980e-2;
1827   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1828   a = 0.8818132877794288;
1829   v = 0.2417442375638981e-2;
1830   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1831   a = 0.9776428111182649;
1832   v = 0.1910951282179532e-2;
1833   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1834   a = 0.2054823696403044;
1835   b = 0.8689460322872412;
1836   v = 0.2416930044324775e-2;
1837   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1838   a = 0.5905157048925271;
1839   b = 0.7999278543857286;
1840   v = 0.2512236854563495e-2;
1841   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1842   a = 0.5550152361076807;
1843   b = 0.7717462626915901;
1844   v = 0.2496644054553086e-2;
1845   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1846   a = 0.9371809858553722;
1847   b = 0.3344363145343455;
1848   v = 0.2236607760437849e-2;
1849   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1850   n = n - 1;
1851 
1852   return;
1853 }
1854 //****************************************************************************80
1855 
1856 void LebedevGrid::ld0590(double *x, double *y, double *z, double *w) const
1857 
1858 //****************************************************************************80
1859 //
1860 //  Purpose:
1861 //
1862 //    LD0590 computes the 590 point Lebedev angular grid.
1863 //
1864 //  Modified:
1865 //
1866 //    12 September 2010
1867 //
1868 //  Author:
1869 //
1870 //    Dmitri Laikov
1871 //
1872 //  Reference:
1873 //
1874 //    Vyacheslav Lebedev, Dmitri Laikov,
1875 //    A quadrature formula for the sphere of the 131st
1876 //    algebraic order of accuracy,
1877 //    Russian Academy of Sciences Doklady Mathematics,
1878 //    Volume 59, Number 3, 1999, pages 477-481.
1879 //
1880 //  Parameters:
1881 //
1882 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1883 //    and weights of the points.
1884 //
1885 {
1886   double a = 0.0;
1887   double b = 0.0;
1888   Index n;
1889   double v;
1890 
1891   n = 0;
1892   v = 0.3095121295306187e-3;
1893   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
1894   v = 0.1852379698597489e-2;
1895   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
1896   a = 0.7040954938227469;
1897   v = 0.1871790639277744e-2;
1898   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1899   a = 0.6807744066455243;
1900   v = 0.1858812585438317e-2;
1901   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1902   a = 0.6372546939258752;
1903   v = 0.1852028828296213e-2;
1904   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1905   a = 0.5044419707800358;
1906   v = 0.1846715956151242e-2;
1907   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1908   a = 0.4215761784010967;
1909   v = 0.1818471778162769e-2;
1910   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1911   a = 0.3317920736472123;
1912   v = 0.1749564657281154e-2;
1913   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1914   a = 0.2384736701421887;
1915   v = 0.1617210647254411e-2;
1916   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1917   a = 0.1459036449157763;
1918   v = 0.1384737234851692e-2;
1919   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1920   a = 0.6095034115507196e-1;
1921   v = 0.9764331165051050e-3;
1922   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
1923   a = 0.6116843442009876;
1924   v = 0.1857161196774078e-2;
1925   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1926   a = 0.3964755348199858;
1927   v = 0.1705153996395864e-2;
1928   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1929   a = 0.1724782009907724;
1930   v = 0.1300321685886048e-2;
1931   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
1932   a = 0.5610263808622060;
1933   b = 0.3518280927733519;
1934   v = 0.1842866472905286e-2;
1935   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1936   a = 0.4742392842551980;
1937   b = 0.2634716655937950;
1938   v = 0.1802658934377451e-2;
1939   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1940   a = 0.5984126497885380;
1941   b = 0.1816640840360209;
1942   v = 0.1849830560443660e-2;
1943   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1944   a = 0.3791035407695563;
1945   b = 0.1720795225656878;
1946   v = 0.1713904507106709e-2;
1947   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1948   a = 0.2778673190586244;
1949   b = 0.8213021581932511e-1;
1950   v = 0.1555213603396808e-2;
1951   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1952   a = 0.5033564271075117;
1953   b = 0.8999205842074875e-1;
1954   v = 0.1802239128008525e-2;
1955   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
1956   n = n - 1;
1957 
1958   return;
1959 }
1960 //****************************************************************************80
1961 
1962 void LebedevGrid::ld0770(double *x, double *y, double *z, double *w) const
1963 
1964 //****************************************************************************80
1965 //
1966 //  Purpose:
1967 //
1968 //    LD0770 computes the 770 point Lebedev angular grid.
1969 //
1970 //  Modified:
1971 //
1972 //    12 September 2010
1973 //
1974 //  Author:
1975 //
1976 //    Dmitri Laikov
1977 //
1978 //  Reference:
1979 //
1980 //    Vyacheslav Lebedev, Dmitri Laikov,
1981 //    A quadrature formula for the sphere of the 131st
1982 //    algebraic order of accuracy,
1983 //    Russian Academy of Sciences Doklady Mathematics,
1984 //    Volume 59, Number 3, 1999, pages 477-481.
1985 //
1986 //  Parameters:
1987 //
1988 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
1989 //    and weights of the points.
1990 //
1991 {
1992   double a = 0.0;
1993   double b = 0.0;
1994   Index n;
1995   double v;
1996 
1997   n = 0;
1998   v = 0.2192942088181184e-3;
1999   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
2000   v = 0.1436433617319080e-2;
2001   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
2002   v = 0.1421940344335877e-2;
2003   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
2004   a = 0.5087204410502360e-1;
2005   v = 0.6798123511050502e-3;
2006   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2007   a = 0.1228198790178831;
2008   v = 0.9913184235294912e-3;
2009   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2010   a = 0.2026890814408786;
2011   v = 0.1180207833238949e-2;
2012   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2013   a = 0.2847745156464294;
2014   v = 0.1296599602080921e-2;
2015   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2016   a = 0.3656719078978026;
2017   v = 0.1365871427428316e-2;
2018   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2019   a = 0.4428264886713469;
2020   v = 0.1402988604775325e-2;
2021   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2022   a = 0.5140619627249735;
2023   v = 0.1418645563595609e-2;
2024   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2025   a = 0.6306401219166803;
2026   v = 0.1421376741851662e-2;
2027   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2028   a = 0.6716883332022612;
2029   v = 0.1423996475490962e-2;
2030   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2031   a = 0.6979792685336881;
2032   v = 0.1431554042178567e-2;
2033   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2034   a = 0.1446865674195309;
2035   v = 0.9254401499865368e-3;
2036   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2037   a = 0.3390263475411216;
2038   v = 0.1250239995053509e-2;
2039   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2040   a = 0.5335804651263506;
2041   v = 0.1394365843329230e-2;
2042   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2043   a = 0.6944024393349413e-1;
2044   b = 0.2355187894242326;
2045   v = 0.1127089094671749e-2;
2046   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2047   a = 0.2269004109529460;
2048   b = 0.4102182474045730;
2049   v = 0.1345753760910670e-2;
2050   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2051   a = 0.8025574607775339e-1;
2052   b = 0.6214302417481605;
2053   v = 0.1424957283316783e-2;
2054   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2055   a = 0.1467999527896572;
2056   b = 0.3245284345717394;
2057   v = 0.1261523341237750e-2;
2058   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2059   a = 0.1571507769824727;
2060   b = 0.5224482189696630;
2061   v = 0.1392547106052696e-2;
2062   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2063   a = 0.2365702993157246;
2064   b = 0.6017546634089558;
2065   v = 0.1418761677877656e-2;
2066   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2067   a = 0.7714815866765732e-1;
2068   b = 0.4346575516141163;
2069   v = 0.1338366684479554e-2;
2070   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2071   a = 0.3062936666210730;
2072   b = 0.4908826589037616;
2073   v = 0.1393700862676131e-2;
2074   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2075   a = 0.3822477379524787;
2076   b = 0.5648768149099500;
2077   v = 0.1415914757466932e-2;
2078   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2079   n = n - 1;
2080 
2081   return;
2082 }
2083 //****************************************************************************80
2084 
2085 void LebedevGrid::ld0974(double *x, double *y, double *z, double *w) const
2086 
2087 //****************************************************************************80
2088 //
2089 //  Purpose:
2090 //
2091 //    LD0974 computes the 974 point Lebedev angular grid.
2092 //
2093 //  Modified:
2094 //
2095 //    12 September 2010
2096 //
2097 //  Author:
2098 //
2099 //    Dmitri Laikov
2100 //
2101 //  Reference:
2102 //
2103 //    Vyacheslav Lebedev, Dmitri Laikov,
2104 //    A quadrature formula for the sphere of the 131st
2105 //    algebraic order of accuracy,
2106 //    Russian Academy of Sciences Doklady Mathematics,
2107 //    Volume 59, Number 3, 1999, pages 477-481.
2108 //
2109 //  Parameters:
2110 //
2111 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
2112 //    and weights of the points.
2113 //
2114 {
2115   double a = 0.0;
2116   double b = 0.0;
2117   Index n;
2118   double v;
2119 
2120   n = 0;
2121   v = 0.1438294190527431e-3;
2122   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
2123   v = 0.1125772288287004e-2;
2124   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
2125   a = 0.4292963545341347e-1;
2126   v = 0.4948029341949241e-3;
2127   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2128   a = 0.1051426854086404;
2129   v = 0.7357990109125470e-3;
2130   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2131   a = 0.1750024867623087;
2132   v = 0.8889132771304384e-3;
2133   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2134   a = 0.2477653379650257;
2135   v = 0.9888347838921435e-3;
2136   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2137   a = 0.3206567123955957;
2138   v = 0.1053299681709471e-2;
2139   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2140   a = 0.3916520749849983;
2141   v = 0.1092778807014578e-2;
2142   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2143   a = 0.4590825874187624;
2144   v = 0.1114389394063227e-2;
2145   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2146   a = 0.5214563888415861;
2147   v = 0.1123724788051555e-2;
2148   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2149   a = 0.6253170244654199;
2150   v = 0.1125239325243814e-2;
2151   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2152   a = 0.6637926744523170;
2153   v = 0.1126153271815905e-2;
2154   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2155   a = 0.6910410398498301;
2156   v = 0.1130286931123841e-2;
2157   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2158   a = 0.7052907007457760;
2159   v = 0.1134986534363955e-2;
2160   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2161   a = 0.1236686762657990;
2162   v = 0.6823367927109931e-3;
2163   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2164   a = 0.2940777114468387;
2165   v = 0.9454158160447096e-3;
2166   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2167   a = 0.4697753849207649;
2168   v = 0.1074429975385679e-2;
2169   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2170   a = 0.6334563241139567;
2171   v = 0.1129300086569132e-2;
2172   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2173   a = 0.5974048614181342e-1;
2174   b = 0.2029128752777523;
2175   v = 0.8436884500901954e-3;
2176   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2177   a = 0.1375760408473636;
2178   b = 0.4602621942484054;
2179   v = 0.1075255720448885e-2;
2180   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2181   a = 0.3391016526336286;
2182   b = 0.5030673999662036;
2183   v = 0.1108577236864462e-2;
2184   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2185   a = 0.1271675191439820;
2186   b = 0.2817606422442134;
2187   v = 0.9566475323783357e-3;
2188   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2189   a = 0.2693120740413512;
2190   b = 0.4331561291720157;
2191   v = 0.1080663250717391e-2;
2192   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2193   a = 0.1419786452601918;
2194   b = 0.6256167358580814;
2195   v = 0.1126797131196295e-2;
2196   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2197   a = 0.6709284600738255e-1;
2198   b = 0.3798395216859157;
2199   v = 0.1022568715358061e-2;
2200   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2201   a = 0.7057738183256172e-1;
2202   b = 0.5517505421423520;
2203   v = 0.1108960267713108e-2;
2204   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2205   a = 0.2783888477882155;
2206   b = 0.6029619156159187;
2207   v = 0.1122790653435766e-2;
2208   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2209   a = 0.1979578938917407;
2210   b = 0.3589606329589096;
2211   v = 0.1032401847117460e-2;
2212   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2213   a = 0.2087307061103274;
2214   b = 0.5348666438135476;
2215   v = 0.1107249382283854e-2;
2216   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2217   a = 0.4055122137872836;
2218   b = 0.5674997546074373;
2219   v = 0.1121780048519972e-2;
2220   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2221   n = n - 1;
2222 
2223   return;
2224 }
2225 //****************************************************************************80
2226 
2227 void LebedevGrid::ld1202(double *x, double *y, double *z, double *w) const
2228 
2229 //****************************************************************************80
2230 //
2231 //  Purpose:
2232 //
2233 //    LD1202 computes the 1202 point Lebedev angular grid.
2234 //
2235 //  Modified:
2236 //
2237 //    12 September 2010
2238 //
2239 //  Author:
2240 //
2241 //    Dmitri Laikov
2242 //
2243 //  Reference:
2244 //
2245 //    Vyacheslav Lebedev, Dmitri Laikov,
2246 //    A quadrature formula for the sphere of the 131st
2247 //    algebraic order of accuracy,
2248 //    Russian Academy of Sciences Doklady Mathematics,
2249 //    Volume 59, Number 3, 1999, pages 477-481.
2250 //
2251 //  Parameters:
2252 //
2253 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
2254 //    and weights of the points.
2255 //
2256 {
2257   double a = 0.0;
2258   double b = 0.0;
2259   Index n;
2260   double v;
2261 
2262   n = 0;
2263   v = 0.1105189233267572e-3;
2264   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
2265   v = 0.9205232738090741e-3;
2266   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
2267   v = 0.9133159786443561e-3;
2268   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
2269   a = 0.3712636449657089e-1;
2270   v = 0.3690421898017899e-3;
2271   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2272   a = 0.9140060412262223e-1;
2273   v = 0.5603990928680660e-3;
2274   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2275   a = 0.1531077852469906;
2276   v = 0.6865297629282609e-3;
2277   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2278   a = 0.2180928891660612;
2279   v = 0.7720338551145630e-3;
2280   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2281   a = 0.2839874532200175;
2282   v = 0.8301545958894795e-3;
2283   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2284   a = 0.3491177600963764;
2285   v = 0.8686692550179628e-3;
2286   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2287   a = 0.4121431461444309;
2288   v = 0.8927076285846890e-3;
2289   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2290   a = 0.4718993627149127;
2291   v = 0.9060820238568219e-3;
2292   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2293   a = 0.5273145452842337;
2294   v = 0.9119777254940867e-3;
2295   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2296   a = 0.6209475332444019;
2297   v = 0.9128720138604181e-3;
2298   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2299   a = 0.6569722711857291;
2300   v = 0.9130714935691735e-3;
2301   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2302   a = 0.6841788309070143;
2303   v = 0.9152873784554116e-3;
2304   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2305   a = 0.7012604330123631;
2306   v = 0.9187436274321654e-3;
2307   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2308   a = 0.1072382215478166;
2309   v = 0.5176977312965694e-3;
2310   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2311   a = 0.2582068959496968;
2312   v = 0.7331143682101417e-3;
2313   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2314   a = 0.4172752955306717;
2315   v = 0.8463232836379928e-3;
2316   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2317   a = 0.5700366911792503;
2318   v = 0.9031122694253992e-3;
2319   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2320   a = 0.9827986018263947;
2321   b = 0.1771774022615325;
2322   v = 0.6485778453163257e-3;
2323   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2324   a = 0.9624249230326228;
2325   b = 0.2475716463426288;
2326   v = 0.7435030910982369e-3;
2327   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2328   a = 0.9402007994128811;
2329   b = 0.3354616289066489;
2330   v = 0.7998527891839054e-3;
2331   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2332   a = 0.9320822040143202;
2333   b = 0.3173615246611977;
2334   v = 0.8101731497468018e-3;
2335   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2336   a = 0.9043674199393299;
2337   b = 0.4090268427085357;
2338   v = 0.8483389574594331e-3;
2339   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2340   a = 0.8912407560074747;
2341   b = 0.3854291150669224;
2342   v = 0.8556299257311812e-3;
2343   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2344   a = 0.8676435628462708;
2345   b = 0.4932221184851285;
2346   v = 0.8803208679738260e-3;
2347   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2348   a = 0.8581979986041619;
2349   b = 0.4785320675922435;
2350   v = 0.8811048182425720e-3;
2351   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2352   a = 0.8396753624049856;
2353   b = 0.4507422593157064;
2354   v = 0.8850282341265444e-3;
2355   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2356   a = 0.8165288564022188;
2357   b = 0.5632123020762100;
2358   v = 0.9021342299040653e-3;
2359   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2360   a = 0.8015469370783529;
2361   b = 0.5434303569693900;
2362   v = 0.9010091677105086e-3;
2363   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2364   a = 0.7773563069070351;
2365   b = 0.5123518486419871;
2366   v = 0.9022692938426915e-3;
2367   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2368   a = 0.7661621213900394;
2369   b = 0.6394279634749102;
2370   v = 0.9158016174693465e-3;
2371   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2372   a = 0.7553584143533510;
2373   b = 0.6269805509024392;
2374   v = 0.9131578003189435e-3;
2375   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2376   a = 0.7344305757559503;
2377   b = 0.6031161693096310;
2378   v = 0.9107813579482705e-3;
2379   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2380   a = 0.7043837184021765;
2381   b = 0.5693702498468441;
2382   v = 0.9105760258970126e-3;
2383   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2384   n = n - 1;
2385 
2386   return;
2387 }
2388 //****************************************************************************80
2389 
2390 void LebedevGrid::ld1454(double *x, double *y, double *z, double *w) const
2391 
2392 //****************************************************************************80
2393 //
2394 //  Purpose:
2395 //
2396 //    LD1454 computes the 1454 point Lebedev angular grid.
2397 //
2398 //  Modified:
2399 //
2400 //    12 September 2010
2401 //
2402 //  Author:
2403 //
2404 //    Dmitri Laikov
2405 //
2406 //  Reference:
2407 //
2408 //    Vyacheslav Lebedev, Dmitri Laikov,
2409 //    A quadrature formula for the sphere of the 131st
2410 //    algebraic order of accuracy,
2411 //    Russian Academy of Sciences Doklady Mathematics,
2412 //    Volume 59, Number 3, 1999, pages 477-481.
2413 //
2414 //  Parameters:
2415 //
2416 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
2417 //    and weights of the points.
2418 //
2419 {
2420   double a = 0.0;
2421   double b = 0.0;
2422   Index n;
2423   double v;
2424 
2425   n = 0;
2426   v = 0.7777160743261247e-4;
2427   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
2428   v = 0.7557646413004701e-3;
2429   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
2430   a = 0.3229290663413854e-1;
2431   v = 0.2841633806090617e-3;
2432   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2433   a = 0.8036733271462222e-1;
2434   v = 0.4374419127053555e-3;
2435   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2436   a = 0.1354289960531653;
2437   v = 0.5417174740872172e-3;
2438   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2439   a = 0.1938963861114426;
2440   v = 0.6148000891358593e-3;
2441   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2442   a = 0.2537343715011275;
2443   v = 0.6664394485800705e-3;
2444   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2445   a = 0.3135251434752570;
2446   v = 0.7025039356923220e-3;
2447   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2448   a = 0.3721558339375338;
2449   v = 0.7268511789249627e-3;
2450   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2451   a = 0.4286809575195696;
2452   v = 0.7422637534208629e-3;
2453   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2454   a = 0.4822510128282994;
2455   v = 0.7509545035841214e-3;
2456   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2457   a = 0.5320679333566263;
2458   v = 0.7548535057718401e-3;
2459   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2460   a = 0.6172998195394274;
2461   v = 0.7554088969774001e-3;
2462   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2463   a = 0.6510679849127481;
2464   v = 0.7553147174442808e-3;
2465   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2466   a = 0.6777315251687360;
2467   v = 0.7564767653292297e-3;
2468   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2469   a = 0.6963109410648741;
2470   v = 0.7587991808518730e-3;
2471   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2472   a = 0.7058935009831749;
2473   v = 0.7608261832033027e-3;
2474   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2475   a = 0.9955546194091857;
2476   v = 0.4021680447874916e-3;
2477   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2478   a = 0.9734115901794209;
2479   v = 0.5804871793945964e-3;
2480   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2481   a = 0.9275693732388626;
2482   v = 0.6792151955945159e-3;
2483   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2484   a = 0.8568022422795103;
2485   v = 0.7336741211286294e-3;
2486   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2487   a = 0.7623495553719372;
2488   v = 0.7581866300989608e-3;
2489   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2490   a = 0.5707522908892223;
2491   b = 0.4387028039889501;
2492   v = 0.7538257859800743e-3;
2493   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2494   a = 0.5196463388403083;
2495   b = 0.3858908414762617;
2496   v = 0.7483517247053123e-3;
2497   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2498   a = 0.4646337531215351;
2499   b = 0.3301937372343854;
2500   v = 0.7371763661112059e-3;
2501   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2502   a = 0.4063901697557691;
2503   b = 0.2725423573563777;
2504   v = 0.7183448895756934e-3;
2505   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2506   a = 0.3456329466643087;
2507   b = 0.2139510237495250;
2508   v = 0.6895815529822191e-3;
2509   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2510   a = 0.2831395121050332;
2511   b = 0.1555922309786647;
2512   v = 0.6480105801792886e-3;
2513   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2514   a = 0.2197682022925330;
2515   b = 0.9892878979686097e-1;
2516   v = 0.5897558896594636e-3;
2517   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2518   a = 0.1564696098650355;
2519   b = 0.4598642910675510e-1;
2520   v = 0.5095708849247346e-3;
2521   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2522   a = 0.6027356673721295;
2523   b = 0.3376625140173426;
2524   v = 0.7536906428909755e-3;
2525   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2526   a = 0.5496032320255096;
2527   b = 0.2822301309727988;
2528   v = 0.7472505965575118e-3;
2529   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2530   a = 0.4921707755234567;
2531   b = 0.2248632342592540;
2532   v = 0.7343017132279698e-3;
2533   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2534   a = 0.4309422998598483;
2535   b = 0.1666224723456479;
2536   v = 0.7130871582177445e-3;
2537   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2538   a = 0.3664108182313672;
2539   b = 0.1086964901822169;
2540   v = 0.6817022032112776e-3;
2541   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2542   a = 0.2990189057758436;
2543   b = 0.5251989784120085e-1;
2544   v = 0.6380941145604121e-3;
2545   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2546   a = 0.6268724013144998;
2547   b = 0.2297523657550023;
2548   v = 0.7550381377920310e-3;
2549   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2550   a = 0.5707324144834607;
2551   b = 0.1723080607093800;
2552   v = 0.7478646640144802e-3;
2553   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2554   a = 0.5096360901960365;
2555   b = 0.1140238465390513;
2556   v = 0.7335918720601220e-3;
2557   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2558   a = 0.4438729938312456;
2559   b = 0.5611522095882537e-1;
2560   v = 0.7110120527658118e-3;
2561   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2562   a = 0.6419978471082389;
2563   b = 0.1164174423140873;
2564   v = 0.7571363978689501e-3;
2565   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2566   a = 0.5817218061802611;
2567   b = 0.5797589531445219e-1;
2568   v = 0.7489908329079234e-3;
2569   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2570   n = n - 1;
2571 
2572   return;
2573 }
2574 //****************************************************************************80
2575 
2576 void LebedevGrid::ld1730(double *x, double *y, double *z, double *w) const
2577 
2578 //****************************************************************************80
2579 //
2580 //  Purpose:
2581 //
2582 //    LD1730 computes the 1730 point Lebedev angular grid.
2583 //
2584 //  Modified:
2585 //
2586 //    12 September 2010
2587 //
2588 //  Author:
2589 //
2590 //    Dmitri Laikov
2591 //
2592 //  Reference:
2593 //
2594 //    Vyacheslav Lebedev, Dmitri Laikov,
2595 //    A quadrature formula for the sphere of the 131st
2596 //    algebraic order of accuracy,
2597 //    Russian Academy of Sciences Doklady Mathematics,
2598 //    Volume 59, Number 3, 1999, pages 477-481.
2599 //
2600 //  Parameters:
2601 //
2602 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
2603 //    and weights of the points.
2604 //
2605 {
2606   double a = 0.0;
2607   double b = 0.0;
2608   Index n;
2609   double v;
2610 
2611   n = 0;
2612   v = 0.6309049437420976e-4;
2613   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
2614   v = 0.6398287705571748e-3;
2615   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
2616   v = 0.6357185073530720e-3;
2617   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
2618   a = 0.2860923126194662e-1;
2619   v = 0.2221207162188168e-3;
2620   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2621   a = 0.7142556767711522e-1;
2622   v = 0.3475784022286848e-3;
2623   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2624   a = 0.1209199540995559;
2625   v = 0.4350742443589804e-3;
2626   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2627   a = 0.1738673106594379;
2628   v = 0.4978569136522127e-3;
2629   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2630   a = 0.2284645438467734;
2631   v = 0.5435036221998053e-3;
2632   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2633   a = 0.2834807671701512;
2634   v = 0.5765913388219542e-3;
2635   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2636   a = 0.3379680145467339;
2637   v = 0.6001200359226003e-3;
2638   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2639   a = 0.3911355454819537;
2640   v = 0.6162178172717512e-3;
2641   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2642   a = 0.4422860353001403;
2643   v = 0.6265218152438485e-3;
2644   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2645   a = 0.4907781568726057;
2646   v = 0.6323987160974212e-3;
2647   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2648   a = 0.5360006153211468;
2649   v = 0.6350767851540569e-3;
2650   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2651   a = 0.6142105973596603;
2652   v = 0.6354362775297107e-3;
2653   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2654   a = 0.6459300387977504;
2655   v = 0.6352302462706235e-3;
2656   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2657   a = 0.6718056125089225;
2658   v = 0.6358117881417972e-3;
2659   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2660   a = 0.6910888533186254;
2661   v = 0.6373101590310117e-3;
2662   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2663   a = 0.7030467416823252;
2664   v = 0.6390428961368665e-3;
2665   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2666   a = 0.8354951166354646e-1;
2667   v = 0.3186913449946576e-3;
2668   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2669   a = 0.2050143009099486;
2670   v = 0.4678028558591711e-3;
2671   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2672   a = 0.3370208290706637;
2673   v = 0.5538829697598626e-3;
2674   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2675   a = 0.4689051484233963;
2676   v = 0.6044475907190476e-3;
2677   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2678   a = 0.5939400424557334;
2679   v = 0.6313575103509012e-3;
2680   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2681   a = 0.1394983311832261;
2682   b = 0.4097581162050343e-1;
2683   v = 0.4078626431855630e-3;
2684   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2685   a = 0.1967999180485014;
2686   b = 0.8851987391293348e-1;
2687   v = 0.4759933057812725e-3;
2688   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2689   a = 0.2546183732548967;
2690   b = 0.1397680182969819;
2691   v = 0.5268151186413440e-3;
2692   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2693   a = 0.3121281074713875;
2694   b = 0.1929452542226526;
2695   v = 0.5643048560507316e-3;
2696   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2697   a = 0.3685981078502492;
2698   b = 0.2467898337061562;
2699   v = 0.5914501076613073e-3;
2700   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2701   a = 0.4233760321547856;
2702   b = 0.3003104124785409;
2703   v = 0.6104561257874195e-3;
2704   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2705   a = 0.4758671236059246;
2706   b = 0.3526684328175033;
2707   v = 0.6230252860707806e-3;
2708   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2709   a = 0.5255178579796463;
2710   b = 0.4031134861145713;
2711   v = 0.6305618761760796e-3;
2712   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2713   a = 0.5718025633734589;
2714   b = 0.4509426448342351;
2715   v = 0.6343092767597889e-3;
2716   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2717   a = 0.2686927772723415;
2718   b = 0.4711322502423248e-1;
2719   v = 0.5176268945737826e-3;
2720   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2721   a = 0.3306006819904809;
2722   b = 0.9784487303942695e-1;
2723   v = 0.5564840313313692e-3;
2724   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2725   a = 0.3904906850594983;
2726   b = 0.1505395810025273;
2727   v = 0.5856426671038980e-3;
2728   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2729   a = 0.4479957951904390;
2730   b = 0.2039728156296050;
2731   v = 0.6066386925777091e-3;
2732   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2733   a = 0.5027076848919780;
2734   b = 0.2571529941121107;
2735   v = 0.6208824962234458e-3;
2736   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2737   a = 0.5542087392260217;
2738   b = 0.3092191375815670;
2739   v = 0.6296314297822907e-3;
2740   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2741   a = 0.6020850887375187;
2742   b = 0.3593807506130276;
2743   v = 0.6340423756791859e-3;
2744   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2745   a = 0.4019851409179594;
2746   b = 0.5063389934378671e-1;
2747   v = 0.5829627677107342e-3;
2748   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2749   a = 0.4635614567449800;
2750   b = 0.1032422269160612;
2751   v = 0.6048693376081110e-3;
2752   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2753   a = 0.5215860931591575;
2754   b = 0.1566322094006254;
2755   v = 0.6202362317732461e-3;
2756   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2757   a = 0.5758202499099271;
2758   b = 0.2098082827491099;
2759   v = 0.6299005328403779e-3;
2760   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2761   a = 0.6259893683876795;
2762   b = 0.2618824114553391;
2763   v = 0.6347722390609353e-3;
2764   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2765   a = 0.5313795124811891;
2766   b = 0.5263245019338556e-1;
2767   v = 0.6203778981238834e-3;
2768   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2769   a = 0.5893317955931995;
2770   b = 0.1061059730982005;
2771   v = 0.6308414671239979e-3;
2772   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2773   a = 0.6426246321215801;
2774   b = 0.1594171564034221;
2775   v = 0.6362706466959498e-3;
2776   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2777   a = 0.6511904367376113;
2778   b = 0.5354789536565540e-1;
2779   v = 0.6375414170333233e-3;
2780   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2781   n = n - 1;
2782 
2783   return;
2784 }
2785 //****************************************************************************80
2786 
2787 void LebedevGrid::ld2030(double *x, double *y, double *z, double *w) const
2788 
2789 //****************************************************************************80
2790 //
2791 //  Purpose:
2792 //
2793 //    LD2030 computes the 2030 point Lebedev angular grid.
2794 //
2795 //  Modified:
2796 //
2797 //    12 September 2010
2798 //
2799 //  Author:
2800 //
2801 //    Dmitri Laikov
2802 //
2803 //  Reference:
2804 //
2805 //    Vyacheslav Lebedev, Dmitri Laikov,
2806 //    A quadrature formula for the sphere of the 131st
2807 //    algebraic order of accuracy,
2808 //    Russian Academy of Sciences Doklady Mathematics,
2809 //    Volume 59, Number 3, 1999, pages 477-481.
2810 //
2811 //  Parameters:
2812 //
2813 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
2814 //    and weights of the points.
2815 //
2816 {
2817   double a = 0.0;
2818   double b = 0.0;
2819   Index n;
2820   double v;
2821 
2822   n = 0;
2823   v = 0.4656031899197431e-4;
2824   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
2825   v = 0.5421549195295507e-3;
2826   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
2827   a = 0.2540835336814348e-1;
2828   v = 0.1778522133346553e-3;
2829   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2830   a = 0.6399322800504915e-1;
2831   v = 0.2811325405682796e-3;
2832   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2833   a = 0.1088269469804125;
2834   v = 0.3548896312631459e-3;
2835   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2836   a = 0.1570670798818287;
2837   v = 0.4090310897173364e-3;
2838   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2839   a = 0.2071163932282514;
2840   v = 0.4493286134169965e-3;
2841   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2842   a = 0.2578914044450844;
2843   v = 0.4793728447962723e-3;
2844   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2845   a = 0.3085687558169623;
2846   v = 0.5015415319164265e-3;
2847   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2848   a = 0.3584719706267024;
2849   v = 0.5175127372677937e-3;
2850   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2851   a = 0.4070135594428709;
2852   v = 0.5285522262081019e-3;
2853   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2854   a = 0.4536618626222638;
2855   v = 0.5356832703713962e-3;
2856   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2857   a = 0.4979195686463577;
2858   v = 0.5397914736175170e-3;
2859   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2860   a = 0.5393075111126999;
2861   v = 0.5416899441599930e-3;
2862   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2863   a = 0.6115617676843916;
2864   v = 0.5419308476889938e-3;
2865   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2866   a = 0.6414308435160159;
2867   v = 0.5416936902030596e-3;
2868   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2869   a = 0.6664099412721607;
2870   v = 0.5419544338703164e-3;
2871   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2872   a = 0.6859161771214913;
2873   v = 0.5428983656630975e-3;
2874   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2875   a = 0.6993625593503890;
2876   v = 0.5442286500098193e-3;
2877   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2878   a = 0.7062393387719380;
2879   v = 0.5452250345057301e-3;
2880   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
2881   a = 0.7479028168349763e-1;
2882   v = 0.2568002497728530e-3;
2883   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2884   a = 0.1848951153969366;
2885   v = 0.3827211700292145e-3;
2886   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2887   a = 0.3059529066581305;
2888   v = 0.4579491561917824e-3;
2889   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2890   a = 0.4285556101021362;
2891   v = 0.5042003969083574e-3;
2892   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2893   a = 0.5468758653496526;
2894   v = 0.5312708889976025e-3;
2895   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2896   a = 0.6565821978343439;
2897   v = 0.5438401790747117e-3;
2898   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
2899   a = 0.1253901572367117;
2900   b = 0.3681917226439641e-1;
2901   v = 0.3316041873197344e-3;
2902   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2903   a = 0.1775721510383941;
2904   b = 0.7982487607213301e-1;
2905   v = 0.3899113567153771e-3;
2906   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2907   a = 0.2305693358216114;
2908   b = 0.1264640966592335;
2909   v = 0.4343343327201309e-3;
2910   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2911   a = 0.2836502845992063;
2912   b = 0.1751585683418957;
2913   v = 0.4679415262318919e-3;
2914   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2915   a = 0.3361794746232590;
2916   b = 0.2247995907632670;
2917   v = 0.4930847981631031e-3;
2918   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2919   a = 0.3875979172264824;
2920   b = 0.2745299257422246;
2921   v = 0.5115031867540091e-3;
2922   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2923   a = 0.4374019316999074;
2924   b = 0.3236373482441118;
2925   v = 0.5245217148457367e-3;
2926   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2927   a = 0.4851275843340022;
2928   b = 0.3714967859436741;
2929   v = 0.5332041499895321e-3;
2930   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2931   a = 0.5303391803806868;
2932   b = 0.4175353646321745;
2933   v = 0.5384583126021542e-3;
2934   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2935   a = 0.5726197380596287;
2936   b = 0.4612084406355461;
2937   v = 0.5411067210798852e-3;
2938   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2939   a = 0.2431520732564863;
2940   b = 0.4258040133043952e-1;
2941   v = 0.4259797391468714e-3;
2942   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2943   a = 0.3002096800895869;
2944   b = 0.8869424306722721e-1;
2945   v = 0.4604931368460021e-3;
2946   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2947   a = 0.3558554457457432;
2948   b = 0.1368811706510655;
2949   v = 0.4871814878255202e-3;
2950   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2951   a = 0.4097782537048887;
2952   b = 0.1860739985015033;
2953   v = 0.5072242910074885e-3;
2954   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2955   a = 0.4616337666067458;
2956   b = 0.2354235077395853;
2957   v = 0.5217069845235350e-3;
2958   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2959   a = 0.5110707008417874;
2960   b = 0.2842074921347011;
2961   v = 0.5315785966280310e-3;
2962   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2963   a = 0.5577415286163795;
2964   b = 0.3317784414984102;
2965   v = 0.5376833708758905e-3;
2966   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2967   a = 0.6013060431366950;
2968   b = 0.3775299002040700;
2969   v = 0.5408032092069521e-3;
2970   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2971   a = 0.3661596767261781;
2972   b = 0.4599367887164592e-1;
2973   v = 0.4842744917904866e-3;
2974   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2975   a = 0.4237633153506581;
2976   b = 0.9404893773654421e-1;
2977   v = 0.5048926076188130e-3;
2978   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2979   a = 0.4786328454658452;
2980   b = 0.1431377109091971;
2981   v = 0.5202607980478373e-3;
2982   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2983   a = 0.5305702076789774;
2984   b = 0.1924186388843570;
2985   v = 0.5309932388325743e-3;
2986   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2987   a = 0.5793436224231788;
2988   b = 0.2411590944775190;
2989   v = 0.5377419770895208e-3;
2990   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2991   a = 0.6247069017094747;
2992   b = 0.2886871491583605;
2993   v = 0.5411696331677717e-3;
2994   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2995   a = 0.4874315552535204;
2996   b = 0.4804978774953206e-1;
2997   v = 0.5197996293282420e-3;
2998   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
2999   a = 0.5427337322059053;
3000   b = 0.9716857199366665e-1;
3001   v = 0.5311120836622945e-3;
3002   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3003   a = 0.5943493747246700;
3004   b = 0.1465205839795055;
3005   v = 0.5384309319956951e-3;
3006   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3007   a = 0.6421314033564943;
3008   b = 0.1953579449803574;
3009   v = 0.5421859504051886e-3;
3010   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3011   a = 0.6020628374713980;
3012   b = 0.4916375015738108e-1;
3013   v = 0.5390948355046314e-3;
3014   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3015   a = 0.6529222529856881;
3016   b = 0.9861621540127005e-1;
3017   v = 0.5433312705027845e-3;
3018   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3019   n = n - 1;
3020 
3021   return;
3022 }
3023 //****************************************************************************80
3024 
3025 void LebedevGrid::ld2354(double *x, double *y, double *z, double *w) const
3026 
3027 //****************************************************************************80
3028 //
3029 //  Purpose:
3030 //
3031 //    LD2354 computes the 2354 point Lebedev angular grid.
3032 //
3033 //  Modified:
3034 //
3035 //    12 September 2010
3036 //
3037 //  Author:
3038 //
3039 //    Dmitri Laikov
3040 //
3041 //  Reference:
3042 //
3043 //    Vyacheslav Lebedev, Dmitri Laikov,
3044 //    A quadrature formula for the sphere of the 131st
3045 //    algebraic order of accuracy,
3046 //    Russian Academy of Sciences Doklady Mathematics,
3047 //    Volume 59, Number 3, 1999, pages 477-481.
3048 //
3049 //  Parameters:
3050 //
3051 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
3052 //    and weights of the points.
3053 //
3054 {
3055   double a = 0.0;
3056   double b = 0.0;
3057   Index n;
3058   double v;
3059 
3060   n = 0;
3061   v = 0.3922616270665292e-4;
3062   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
3063   v = 0.4703831750854424e-3;
3064   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
3065   v = 0.4678202801282136e-3;
3066   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
3067   a = 0.2290024646530589e-1;
3068   v = 0.1437832228979900e-3;
3069   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3070   a = 0.5779086652271284e-1;
3071   v = 0.2303572493577644e-3;
3072   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3073   a = 0.9863103576375984e-1;
3074   v = 0.2933110752447454e-3;
3075   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3076   a = 0.1428155792982185;
3077   v = 0.3402905998359838e-3;
3078   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3079   a = 0.1888978116601463;
3080   v = 0.3759138466870372e-3;
3081   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3082   a = 0.2359091682970210;
3083   v = 0.4030638447899798e-3;
3084   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3085   a = 0.2831228833706171;
3086   v = 0.4236591432242211e-3;
3087   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3088   a = 0.3299495857966693;
3089   v = 0.4390522656946746e-3;
3090   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3091   a = 0.3758840802660796;
3092   v = 0.4502523466626247e-3;
3093   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3094   a = 0.4204751831009480;
3095   v = 0.4580577727783541e-3;
3096   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3097   a = 0.4633068518751051;
3098   v = 0.4631391616615899e-3;
3099   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3100   a = 0.5039849474507313;
3101   v = 0.4660928953698676e-3;
3102   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3103   a = 0.5421265793440747;
3104   v = 0.4674751807936953e-3;
3105   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3106   a = 0.6092660230557310;
3107   v = 0.4676414903932920e-3;
3108   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3109   a = 0.6374654204984869;
3110   v = 0.4674086492347870e-3;
3111   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3112   a = 0.6615136472609892;
3113   v = 0.4674928539483207e-3;
3114   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3115   a = 0.6809487285958127;
3116   v = 0.4680748979686447e-3;
3117   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3118   a = 0.6952980021665196;
3119   v = 0.4690449806389040e-3;
3120   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3121   a = 0.7041245497695400;
3122   v = 0.4699877075860818e-3;
3123   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3124   a = 0.6744033088306065e-1;
3125   v = 0.2099942281069176e-3;
3126   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3127   a = 0.1678684485334166;
3128   v = 0.3172269150712804e-3;
3129   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3130   a = 0.2793559049539613;
3131   v = 0.3832051358546523e-3;
3132   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3133   a = 0.3935264218057639;
3134   v = 0.4252193818146985e-3;
3135   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3136   a = 0.5052629268232558;
3137   v = 0.4513807963755000e-3;
3138   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3139   a = 0.6107905315437531;
3140   v = 0.4657797469114178e-3;
3141   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3142   a = 0.1135081039843524;
3143   b = 0.3331954884662588e-1;
3144   v = 0.2733362800522836e-3;
3145   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3146   a = 0.1612866626099378;
3147   b = 0.7247167465436538e-1;
3148   v = 0.3235485368463559e-3;
3149   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3150   a = 0.2100786550168205;
3151   b = 0.1151539110849745;
3152   v = 0.3624908726013453e-3;
3153   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3154   a = 0.2592282009459942;
3155   b = 0.1599491097143677;
3156   v = 0.3925540070712828e-3;
3157   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3158   a = 0.3081740561320203;
3159   b = 0.2058699956028027;
3160   v = 0.4156129781116235e-3;
3161   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3162   a = 0.3564289781578164;
3163   b = 0.2521624953502911;
3164   v = 0.4330644984623263e-3;
3165   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3166   a = 0.4035587288240703;
3167   b = 0.2982090785797674;
3168   v = 0.4459677725921312e-3;
3169   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3170   a = 0.4491671196373903;
3171   b = 0.3434762087235733;
3172   v = 0.4551593004456795e-3;
3173   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3174   a = 0.4928854782917489;
3175   b = 0.3874831357203437;
3176   v = 0.4613341462749918e-3;
3177   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3178   a = 0.5343646791958988;
3179   b = 0.4297814821746926;
3180   v = 0.4651019618269806e-3;
3181   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3182   a = 0.5732683216530990;
3183   b = 0.4699402260943537;
3184   v = 0.4670249536100625e-3;
3185   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3186   a = 0.2214131583218986;
3187   b = 0.3873602040643895e-1;
3188   v = 0.3549555576441708e-3;
3189   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3190   a = 0.2741796504750071;
3191   b = 0.8089496256902013e-1;
3192   v = 0.3856108245249010e-3;
3193   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3194   a = 0.3259797439149485;
3195   b = 0.1251732177620872;
3196   v = 0.4098622845756882e-3;
3197   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3198   a = 0.3765441148826891;
3199   b = 0.1706260286403185;
3200   v = 0.4286328604268950e-3;
3201   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3202   a = 0.4255773574530558;
3203   b = 0.2165115147300408;
3204   v = 0.4427802198993945e-3;
3205   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3206   a = 0.4727795117058430;
3207   b = 0.2622089812225259;
3208   v = 0.4530473511488561e-3;
3209   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3210   a = 0.5178546895819012;
3211   b = 0.3071721431296201;
3212   v = 0.4600805475703138e-3;
3213   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3214   a = 0.5605141192097460;
3215   b = 0.3508998998801138;
3216   v = 0.4644599059958017e-3;
3217   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3218   a = 0.6004763319352512;
3219   b = 0.3929160876166931;
3220   v = 0.4667274455712508e-3;
3221   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3222   a = 0.3352842634946949;
3223   b = 0.4202563457288019e-1;
3224   v = 0.4069360518020356e-3;
3225   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3226   a = 0.3891971629814670;
3227   b = 0.8614309758870850e-1;
3228   v = 0.4260442819919195e-3;
3229   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3230   a = 0.4409875565542281;
3231   b = 0.1314500879380001;
3232   v = 0.4408678508029063e-3;
3233   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3234   a = 0.4904893058592484;
3235   b = 0.1772189657383859;
3236   v = 0.4518748115548597e-3;
3237   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3238   a = 0.5375056138769549;
3239   b = 0.2228277110050294;
3240   v = 0.4595564875375116e-3;
3241   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3242   a = 0.5818255708669969;
3243   b = 0.2677179935014386;
3244   v = 0.4643988774315846e-3;
3245   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3246   a = 0.6232334858144959;
3247   b = 0.3113675035544165;
3248   v = 0.4668827491646946e-3;
3249   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3250   a = 0.4489485354492058;
3251   b = 0.4409162378368174e-1;
3252   v = 0.4400541823741973e-3;
3253   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3254   a = 0.5015136875933150;
3255   b = 0.8939009917748489e-1;
3256   v = 0.4514512890193797e-3;
3257   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3258   a = 0.5511300550512623;
3259   b = 0.1351806029383365;
3260   v = 0.4596198627347549e-3;
3261   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3262   a = 0.5976720409858000;
3263   b = 0.1808370355053196;
3264   v = 0.4648659016801781e-3;
3265   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3266   a = 0.6409956378989354;
3267   b = 0.2257852192301602;
3268   v = 0.4675502017157673e-3;
3269   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3270   a = 0.5581222330827514;
3271   b = 0.4532173421637160e-1;
3272   v = 0.4598494476455523e-3;
3273   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3274   a = 0.6074705984161695;
3275   b = 0.9117488031840314e-1;
3276   v = 0.4654916955152048e-3;
3277   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3278   a = 0.6532272537379033;
3279   b = 0.1369294213140155;
3280   v = 0.4684709779505137e-3;
3281   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3282   a = 0.6594761494500487;
3283   b = 0.4589901487275583e-1;
3284   v = 0.4691445539106986e-3;
3285   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3286   n = n - 1;
3287 
3288   return;
3289 }
3290 //****************************************************************************80
3291 
3292 void LebedevGrid::ld2702(double *x, double *y, double *z, double *w) const
3293 
3294 //****************************************************************************80
3295 //
3296 //  Purpose:
3297 //
3298 //    LD2702 computes the 2702 point Lebedev angular grid.
3299 //
3300 //  Modified:
3301 //
3302 //    12 September 2010
3303 //
3304 //  Author:
3305 //
3306 //    Dmitri Laikov
3307 //
3308 //  Reference:
3309 //
3310 //    Vyacheslav Lebedev, Dmitri Laikov,
3311 //    A quadrature formula for the sphere of the 131st
3312 //    algebraic order of accuracy,
3313 //    Russian Academy of Sciences Doklady Mathematics,
3314 //    Volume 59, Number 3, 1999, pages 477-481.
3315 //
3316 //  Parameters:
3317 //
3318 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
3319 //    and weights of the points.
3320 //
3321 {
3322   double a = 0.0;
3323   double b = 0.0;
3324   Index n;
3325   double v;
3326 
3327   n = 0;
3328   v = 0.2998675149888161e-4;
3329   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
3330   v = 0.4077860529495355e-3;
3331   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
3332   a = 0.2065562538818703e-1;
3333   v = 0.1185349192520667e-3;
3334   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3335   a = 0.5250918173022379e-1;
3336   v = 0.1913408643425751e-3;
3337   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3338   a = 0.8993480082038376e-1;
3339   v = 0.2452886577209897e-3;
3340   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3341   a = 0.1306023924436019;
3342   v = 0.2862408183288702e-3;
3343   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3344   a = 0.1732060388531418;
3345   v = 0.3178032258257357e-3;
3346   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3347   a = 0.2168727084820249;
3348   v = 0.3422945667633690e-3;
3349   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3350   a = 0.2609528309173586;
3351   v = 0.3612790520235922e-3;
3352   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3353   a = 0.3049252927938952;
3354   v = 0.3758638229818521e-3;
3355   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3356   a = 0.3483484138084404;
3357   v = 0.3868711798859953e-3;
3358   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3359   a = 0.3908321549106406;
3360   v = 0.3949429933189938e-3;
3361   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3362   a = 0.4320210071894814;
3363   v = 0.4006068107541156e-3;
3364   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3365   a = 0.4715824795890053;
3366   v = 0.4043192149672723e-3;
3367   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3368   a = 0.5091984794078453;
3369   v = 0.4064947495808078e-3;
3370   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3371   a = 0.5445580145650803;
3372   v = 0.4075245619813152e-3;
3373   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3374   a = 0.6072575796841768;
3375   v = 0.4076423540893566e-3;
3376   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3377   a = 0.6339484505755803;
3378   v = 0.4074280862251555e-3;
3379   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3380   a = 0.6570718257486958;
3381   v = 0.4074163756012244e-3;
3382   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3383   a = 0.6762557330090709;
3384   v = 0.4077647795071246e-3;
3385   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3386   a = 0.6911161696923790;
3387   v = 0.4084517552782530e-3;
3388   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3389   a = 0.7012841911659961;
3390   v = 0.4092468459224052e-3;
3391   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3392   a = 0.7064559272410020;
3393   v = 0.4097872687240906e-3;
3394   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3395   a = 0.6123554989894765e-1;
3396   v = 0.1738986811745028e-3;
3397   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3398   a = 0.1533070348312393;
3399   v = 0.2659616045280191e-3;
3400   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3401   a = 0.2563902605244206;
3402   v = 0.3240596008171533e-3;
3403   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3404   a = 0.3629346991663361;
3405   v = 0.3621195964432943e-3;
3406   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3407   a = 0.4683949968987538;
3408   v = 0.3868838330760539e-3;
3409   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3410   a = 0.5694479240657952;
3411   v = 0.4018911532693111e-3;
3412   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3413   a = 0.6634465430993955;
3414   v = 0.4089929432983252e-3;
3415   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3416   a = 0.1033958573552305;
3417   b = 0.3034544009063584e-1;
3418   v = 0.2279907527706409e-3;
3419   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3420   a = 0.1473521412414395;
3421   b = 0.6618803044247135e-1;
3422   v = 0.2715205490578897e-3;
3423   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3424   a = 0.1924552158705967;
3425   b = 0.1054431128987715;
3426   v = 0.3057917896703976e-3;
3427   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3428   a = 0.2381094362890328;
3429   b = 0.1468263551238858;
3430   v = 0.3326913052452555e-3;
3431   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3432   a = 0.2838121707936760;
3433   b = 0.1894486108187886;
3434   v = 0.3537334711890037e-3;
3435   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3436   a = 0.3291323133373415;
3437   b = 0.2326374238761579;
3438   v = 0.3700567500783129e-3;
3439   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3440   a = 0.3736896978741460;
3441   b = 0.2758485808485768;
3442   v = 0.3825245372589122e-3;
3443   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3444   a = 0.4171406040760013;
3445   b = 0.3186179331996921;
3446   v = 0.3918125171518296e-3;
3447   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3448   a = 0.4591677985256915;
3449   b = 0.3605329796303794;
3450   v = 0.3984720419937579e-3;
3451   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3452   a = 0.4994733831718418;
3453   b = 0.4012147253586509;
3454   v = 0.4029746003338211e-3;
3455   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3456   a = 0.5377731830445096;
3457   b = 0.4403050025570692;
3458   v = 0.4057428632156627e-3;
3459   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3460   a = 0.5737917830001331;
3461   b = 0.4774565904277483;
3462   v = 0.4071719274114857e-3;
3463   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3464   a = 0.2027323586271389;
3465   b = 0.3544122504976147e-1;
3466   v = 0.2990236950664119e-3;
3467   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3468   a = 0.2516942375187273;
3469   b = 0.7418304388646328e-1;
3470   v = 0.3262951734212878e-3;
3471   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3472   a = 0.3000227995257181;
3473   b = 0.1150502745727186;
3474   v = 0.3482634608242413e-3;
3475   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3476   a = 0.3474806691046342;
3477   b = 0.1571963371209364;
3478   v = 0.3656596681700892e-3;
3479   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3480   a = 0.3938103180359209;
3481   b = 0.1999631877247100;
3482   v = 0.3791740467794218e-3;
3483   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3484   a = 0.4387519590455703;
3485   b = 0.2428073457846535;
3486   v = 0.3894034450156905e-3;
3487   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3488   a = 0.4820503960077787;
3489   b = 0.2852575132906155;
3490   v = 0.3968600245508371e-3;
3491   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3492   a = 0.5234573778475101;
3493   b = 0.3268884208674639;
3494   v = 0.4019931351420050e-3;
3495   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3496   a = 0.5627318647235282;
3497   b = 0.3673033321675939;
3498   v = 0.4052108801278599e-3;
3499   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3500   a = 0.5996390607156954;
3501   b = 0.4061211551830290;
3502   v = 0.4068978613940934e-3;
3503   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3504   a = 0.3084780753791947;
3505   b = 0.3860125523100059e-1;
3506   v = 0.3454275351319704e-3;
3507   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3508   a = 0.3589988275920223;
3509   b = 0.7928938987104867e-1;
3510   v = 0.3629963537007920e-3;
3511   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3512   a = 0.4078628415881973;
3513   b = 0.1212614643030087;
3514   v = 0.3770187233889873e-3;
3515   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3516   a = 0.4549287258889735;
3517   b = 0.1638770827382693;
3518   v = 0.3878608613694378e-3;
3519   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3520   a = 0.5000278512957279;
3521   b = 0.2065965798260176;
3522   v = 0.3959065270221274e-3;
3523   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3524   a = 0.5429785044928199;
3525   b = 0.2489436378852235;
3526   v = 0.4015286975463570e-3;
3527   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3528   a = 0.5835939850491711;
3529   b = 0.2904811368946891;
3530   v = 0.4050866785614717e-3;
3531   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3532   a = 0.6216870353444856;
3533   b = 0.3307941957666609;
3534   v = 0.4069320185051913e-3;
3535   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3536   a = 0.4151104662709091;
3537   b = 0.4064829146052554e-1;
3538   v = 0.3760120964062763e-3;
3539   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3540   a = 0.4649804275009218;
3541   b = 0.8258424547294755e-1;
3542   v = 0.3870969564418064e-3;
3543   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3544   a = 0.5124695757009662;
3545   b = 0.1251841962027289;
3546   v = 0.3955287790534055e-3;
3547   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3548   a = 0.5574711100606224;
3549   b = 0.1679107505976331;
3550   v = 0.4015361911302668e-3;
3551   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3552   a = 0.5998597333287227;
3553   b = 0.2102805057358715;
3554   v = 0.4053836986719548e-3;
3555   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3556   a = 0.6395007148516600;
3557   b = 0.2518418087774107;
3558   v = 0.4073578673299117e-3;
3559   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3560   a = 0.5188456224746252;
3561   b = 0.4194321676077518e-1;
3562   v = 0.3954628379231406e-3;
3563   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3564   a = 0.5664190707942778;
3565   b = 0.8457661551921499e-1;
3566   v = 0.4017645508847530e-3;
3567   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3568   a = 0.6110464353283153;
3569   b = 0.1273652932519396;
3570   v = 0.4059030348651293e-3;
3571   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3572   a = 0.6526430302051563;
3573   b = 0.1698173239076354;
3574   v = 0.4080565809484880e-3;
3575   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3576   a = 0.6167551880377548;
3577   b = 0.4266398851548864e-1;
3578   v = 0.4063018753664651e-3;
3579   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3580   a = 0.6607195418355383;
3581   b = 0.8551925814238349e-1;
3582   v = 0.4087191292799671e-3;
3583   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3584   n = n - 1;
3585 
3586   return;
3587 }
3588 //****************************************************************************80
3589 
3590 void LebedevGrid::ld3074(double *x, double *y, double *z, double *w) const
3591 
3592 //****************************************************************************80
3593 //
3594 //  Purpose:
3595 //
3596 //    LD3074 computes the 3074 point Lebedev angular grid.
3597 //
3598 //  Modified:
3599 //
3600 //    12 September 2010
3601 //
3602 //  Author:
3603 //
3604 //    Dmitri Laikov
3605 //
3606 //  Reference:
3607 //
3608 //    Vyacheslav Lebedev, Dmitri Laikov,
3609 //    A quadrature formula for the sphere of the 131st
3610 //    algebraic order of accuracy,
3611 //    Russian Academy of Sciences Doklady Mathematics,
3612 //    Volume 59, Number 3, 1999, pages 477-481.
3613 //
3614 //  Parameters:
3615 //
3616 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
3617 //    and weights of the points.
3618 //
3619 {
3620   double a = 0.0;
3621   double b = 0.0;
3622   Index n;
3623   double v;
3624 
3625   n = 0;
3626   v = 0.2599095953754734e-4;
3627   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
3628   v = 0.3603134089687541e-3;
3629   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
3630   v = 0.3586067974412447e-3;
3631   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
3632   a = 0.1886108518723392e-1;
3633   v = 0.9831528474385880e-4;
3634   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3635   a = 0.4800217244625303e-1;
3636   v = 0.1605023107954450e-3;
3637   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3638   a = 0.8244922058397242e-1;
3639   v = 0.2072200131464099e-3;
3640   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3641   a = 0.1200408362484023;
3642   v = 0.2431297618814187e-3;
3643   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3644   a = 0.1595773530809965;
3645   v = 0.2711819064496707e-3;
3646   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3647   a = 0.2002635973434064;
3648   v = 0.2932762038321116e-3;
3649   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3650   a = 0.2415127590139982;
3651   v = 0.3107032514197368e-3;
3652   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3653   a = 0.2828584158458477;
3654   v = 0.3243808058921213e-3;
3655   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3656   a = 0.3239091015338138;
3657   v = 0.3349899091374030e-3;
3658   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3659   a = 0.3643225097962194;
3660   v = 0.3430580688505218e-3;
3661   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3662   a = 0.4037897083691802;
3663   v = 0.3490124109290343e-3;
3664   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3665   a = 0.4420247515194127;
3666   v = 0.3532148948561955e-3;
3667   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3668   a = 0.4787572538464938;
3669   v = 0.3559862669062833e-3;
3670   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3671   a = 0.5137265251275234;
3672   v = 0.3576224317551411e-3;
3673   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3674   a = 0.5466764056654611;
3675   v = 0.3584050533086076e-3;
3676   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3677   a = 0.6054859420813535;
3678   v = 0.3584903581373224e-3;
3679   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3680   a = 0.6308106701764562;
3681   v = 0.3582991879040586e-3;
3682   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3683   a = 0.6530369230179584;
3684   v = 0.3582371187963125e-3;
3685   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3686   a = 0.6718609524611158;
3687   v = 0.3584353631122350e-3;
3688   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3689   a = 0.6869676499894013;
3690   v = 0.3589120166517785e-3;
3691   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3692   a = 0.6980467077240748;
3693   v = 0.3595445704531601e-3;
3694   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3695   a = 0.7048241721250522;
3696   v = 0.3600943557111074e-3;
3697   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3698   a = 0.5591105222058232e-1;
3699   v = 0.1456447096742039e-3;
3700   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3701   a = 0.1407384078513916;
3702   v = 0.2252370188283782e-3;
3703   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3704   a = 0.2364035438976309;
3705   v = 0.2766135443474897e-3;
3706   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3707   a = 0.3360602737818170;
3708   v = 0.3110729491500851e-3;
3709   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3710   a = 0.4356292630054665;
3711   v = 0.3342506712303391e-3;
3712   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3713   a = 0.5321569415256174;
3714   v = 0.3491981834026860e-3;
3715   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3716   a = 0.6232956305040554;
3717   v = 0.3576003604348932e-3;
3718   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
3719   a = 0.9469870086838469e-1;
3720   b = 0.2778748387309470e-1;
3721   v = 0.1921921305788564e-3;
3722   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3723   a = 0.1353170300568141;
3724   b = 0.6076569878628364e-1;
3725   v = 0.2301458216495632e-3;
3726   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3727   a = 0.1771679481726077;
3728   b = 0.9703072762711040e-1;
3729   v = 0.2604248549522893e-3;
3730   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3731   a = 0.2197066664231751;
3732   b = 0.1354112458524762;
3733   v = 0.2845275425870697e-3;
3734   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3735   a = 0.2624783557374927;
3736   b = 0.1750996479744100;
3737   v = 0.3036870897974840e-3;
3738   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3739   a = 0.3050969521214442;
3740   b = 0.2154896907449802;
3741   v = 0.3188414832298066e-3;
3742   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3743   a = 0.3472252637196021;
3744   b = 0.2560954625740152;
3745   v = 0.3307046414722089e-3;
3746   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3747   a = 0.3885610219026360;
3748   b = 0.2965070050624096;
3749   v = 0.3398330969031360e-3;
3750   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3751   a = 0.4288273776062765;
3752   b = 0.3363641488734497;
3753   v = 0.3466757899705373e-3;
3754   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3755   a = 0.4677662471302948;
3756   b = 0.3753400029836788;
3757   v = 0.3516095923230054e-3;
3758   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3759   a = 0.5051333589553359;
3760   b = 0.4131297522144286;
3761   v = 0.3549645184048486e-3;
3762   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3763   a = 0.5406942145810492;
3764   b = 0.4494423776081795;
3765   v = 0.3570415969441392e-3;
3766   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3767   a = 0.5742204122576457;
3768   b = 0.4839938958841502;
3769   v = 0.3581251798496118e-3;
3770   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3771   a = 0.1865407027225188;
3772   b = 0.3259144851070796e-1;
3773   v = 0.2543491329913348e-3;
3774   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3775   a = 0.2321186453689432;
3776   b = 0.6835679505297343e-1;
3777   v = 0.2786711051330776e-3;
3778   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3779   a = 0.2773159142523882;
3780   b = 0.1062284864451989;
3781   v = 0.2985552361083679e-3;
3782   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3783   a = 0.3219200192237254;
3784   b = 0.1454404409323047;
3785   v = 0.3145867929154039e-3;
3786   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3787   a = 0.3657032593944029;
3788   b = 0.1854018282582510;
3789   v = 0.3273290662067609e-3;
3790   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3791   a = 0.4084376778363622;
3792   b = 0.2256297412014750;
3793   v = 0.3372705511943501e-3;
3794   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3795   a = 0.4499004945751427;
3796   b = 0.2657104425000896;
3797   v = 0.3448274437851510e-3;
3798   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3799   a = 0.4898758141326335;
3800   b = 0.3052755487631557;
3801   v = 0.3503592783048583e-3;
3802   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3803   a = 0.5281547442266309;
3804   b = 0.3439863920645423;
3805   v = 0.3541854792663162e-3;
3806   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3807   a = 0.5645346989813992;
3808   b = 0.3815229456121914;
3809   v = 0.3565995517909428e-3;
3810   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3811   a = 0.5988181252159848;
3812   b = 0.4175752420966734;
3813   v = 0.3578802078302898e-3;
3814   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3815   a = 0.2850425424471603;
3816   b = 0.3562149509862536e-1;
3817   v = 0.2958644592860982e-3;
3818   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3819   a = 0.3324619433027876;
3820   b = 0.7330318886871096e-1;
3821   v = 0.3119548129116835e-3;
3822   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3823   a = 0.3785848333076282;
3824   b = 0.1123226296008472;
3825   v = 0.3250745225005984e-3;
3826   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3827   a = 0.4232891028562115;
3828   b = 0.1521084193337708;
3829   v = 0.3355153415935208e-3;
3830   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3831   a = 0.4664287050829722;
3832   b = 0.1921844459223610;
3833   v = 0.3435847568549328e-3;
3834   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3835   a = 0.5078458493735726;
3836   b = 0.2321360989678303;
3837   v = 0.3495786831622488e-3;
3838   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3839   a = 0.5473779816204180;
3840   b = 0.2715886486360520;
3841   v = 0.3537767805534621e-3;
3842   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3843   a = 0.5848617133811376;
3844   b = 0.3101924707571355;
3845   v = 0.3564459815421428e-3;
3846   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3847   a = 0.6201348281584888;
3848   b = 0.3476121052890973;
3849   v = 0.3578464061225468e-3;
3850   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3851   a = 0.3852191185387871;
3852   b = 0.3763224880035108e-1;
3853   v = 0.3239748762836212e-3;
3854   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3855   a = 0.4325025061073423;
3856   b = 0.7659581935637135e-1;
3857   v = 0.3345491784174287e-3;
3858   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3859   a = 0.4778486229734490;
3860   b = 0.1163381306083900;
3861   v = 0.3429126177301782e-3;
3862   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3863   a = 0.5211663693009000;
3864   b = 0.1563890598752899;
3865   v = 0.3492420343097421e-3;
3866   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3867   a = 0.5623469504853703;
3868   b = 0.1963320810149200;
3869   v = 0.3537399050235257e-3;
3870   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3871   a = 0.6012718188659246;
3872   b = 0.2357847407258738;
3873   v = 0.3566209152659172e-3;
3874   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3875   a = 0.6378179206390117;
3876   b = 0.2743846121244060;
3877   v = 0.3581084321919782e-3;
3878   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3879   a = 0.4836936460214534;
3880   b = 0.3895902610739024e-1;
3881   v = 0.3426522117591512e-3;
3882   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3883   a = 0.5293792562683797;
3884   b = 0.7871246819312640e-1;
3885   v = 0.3491848770121379e-3;
3886   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3887   a = 0.5726281253100033;
3888   b = 0.1187963808202981;
3889   v = 0.3539318235231476e-3;
3890   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3891   a = 0.6133658776169068;
3892   b = 0.1587914708061787;
3893   v = 0.3570231438458694e-3;
3894   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3895   a = 0.6515085491865307;
3896   b = 0.1983058575227646;
3897   v = 0.3586207335051714e-3;
3898   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3899   a = 0.5778692716064976;
3900   b = 0.3977209689791542e-1;
3901   v = 0.3541196205164025e-3;
3902   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3903   a = 0.6207904288086192;
3904   b = 0.7990157592981152e-1;
3905   v = 0.3574296911573953e-3;
3906   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3907   a = 0.6608688171046802;
3908   b = 0.1199671308754309;
3909   v = 0.3591993279818963e-3;
3910   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3911   a = 0.6656263089489130;
3912   b = 0.4015955957805969e-1;
3913   v = 0.3595855034661997e-3;
3914   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
3915   n = n - 1;
3916 
3917   return;
3918 }
3919 //****************************************************************************80
3920 
3921 void LebedevGrid::ld3470(double *x, double *y, double *z, double *w) const
3922 
3923 //****************************************************************************80
3924 //
3925 //  Purpose:
3926 //
3927 //    LD3470 computes the 3470 point Lebedev angular grid.
3928 //
3929 //  Modified:
3930 //
3931 //    12 September 2010
3932 //
3933 //  Author:
3934 //
3935 //    Dmitri Laikov
3936 //
3937 //  Reference:
3938 //
3939 //    Vyacheslav Lebedev, Dmitri Laikov,
3940 //    A quadrature formula for the sphere of the 131st
3941 //    algebraic order of accuracy,
3942 //    Russian Academy of Sciences Doklady Mathematics,
3943 //    Volume 59, Number 3, 1999, pages 477-481.
3944 //
3945 //  Parameters:
3946 //
3947 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
3948 //    and weights of the points.
3949 //
3950 {
3951   double a = 0.0;
3952   double b = 0.0;
3953   Index n;
3954   double v;
3955 
3956   n = 0;
3957   v = 0.2040382730826330e-4;
3958   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
3959   v = 0.3178149703889544e-3;
3960   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
3961   a = 0.1721420832906233e-1;
3962   v = 0.8288115128076110e-4;
3963   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3964   a = 0.4408875374981770e-1;
3965   v = 0.1360883192522954e-3;
3966   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3967   a = 0.7594680813878681e-1;
3968   v = 0.1766854454542662e-3;
3969   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3970   a = 0.1108335359204799;
3971   ;
3972   v = 0.2083153161230153e-3;
3973   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3974   a = 0.1476517054388567;
3975   v = 0.2333279544657158e-3;
3976   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3977   a = 0.1856731870860615;
3978   v = 0.2532809539930247e-3;
3979   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3980   a = 0.2243634099428821;
3981   v = 0.2692472184211158e-3;
3982   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3983   a = 0.2633006881662727;
3984   v = 0.2819949946811885e-3;
3985   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3986   a = 0.3021340904916283;
3987   v = 0.2920953593973030e-3;
3988   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3989   a = 0.3405594048030089;
3990   v = 0.2999889782948352e-3;
3991   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3992   a = 0.3783044434007372;
3993   v = 0.3060292120496902e-3;
3994   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3995   a = 0.4151194767407910;
3996   v = 0.3105109167522192e-3;
3997   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
3998   a = 0.4507705766443257;
3999   v = 0.3136902387550312e-3;
4000   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4001   a = 0.4850346056573187;
4002   v = 0.3157984652454632e-3;
4003   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4004   a = 0.5176950817792470;
4005   v = 0.3170516518425422e-3;
4006   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4007   a = 0.5485384240820989;
4008   v = 0.3176568425633755e-3;
4009   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4010   a = 0.6039117238943308;
4011   v = 0.3177198411207062e-3;
4012   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4013   a = 0.6279956655573113;
4014   v = 0.3175519492394733e-3;
4015   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4016   a = 0.6493636169568952;
4017   v = 0.3174654952634756e-3;
4018   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4019   a = 0.6677644117704504;
4020   v = 0.3175676415467654e-3;
4021   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4022   a = 0.6829368572115624;
4023   v = 0.3178923417835410e-3;
4024   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4025   a = 0.6946195818184121;
4026   v = 0.3183788287531909e-3;
4027   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4028   a = 0.7025711542057026;
4029   v = 0.3188755151918807e-3;
4030   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4031   a = 0.7066004767140119;
4032   v = 0.3191916889313849e-3;
4033   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4034   a = 0.5132537689946062e-1;
4035   v = 0.1231779611744508e-3;
4036   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4037   a = 0.1297994661331225;
4038   v = 0.1924661373839880e-3;
4039   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4040   a = 0.2188852049401307;
4041   v = 0.2380881867403424e-3;
4042   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4043   a = 0.3123174824903457;
4044   v = 0.2693100663037885e-3;
4045   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4046   a = 0.4064037620738195;
4047   v = 0.2908673382834366e-3;
4048   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4049   a = 0.4984958396944782;
4050   v = 0.3053914619381535e-3;
4051   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4052   a = 0.5864975046021365;
4053   v = 0.3143916684147777e-3;
4054   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4055   a = 0.6686711634580175;
4056   v = 0.3187042244055363e-3;
4057   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4058   a = 0.8715738780835950e-1;
4059   b = 0.2557175233367578e-1;
4060   v = 0.1635219535869790e-3;
4061   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4062   a = 0.1248383123134007;
4063   b = 0.5604823383376681e-1;
4064   v = 0.1968109917696070e-3;
4065   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4066   a = 0.1638062693383378;
4067   b = 0.8968568601900765e-1;
4068   v = 0.2236754342249974e-3;
4069   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4070   a = 0.2035586203373176;
4071   b = 0.1254086651976279;
4072   v = 0.2453186687017181e-3;
4073   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4074   a = 0.2436798975293774;
4075   b = 0.1624780150162012;
4076   v = 0.2627551791580541e-3;
4077   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4078   a = 0.2838207507773806;
4079   b = 0.2003422342683208;
4080   v = 0.2767654860152220e-3;
4081   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4082   a = 0.3236787502217692;
4083   b = 0.2385628026255263;
4084   v = 0.2879467027765895e-3;
4085   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4086   a = 0.3629849554840691;
4087   b = 0.2767731148783578;
4088   v = 0.2967639918918702e-3;
4089   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4090   a = 0.4014948081992087;
4091   b = 0.3146542308245309;
4092   v = 0.3035900684660351e-3;
4093   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4094   a = 0.4389818379260225;
4095   b = 0.3519196415895088;
4096   v = 0.3087338237298308e-3;
4097   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4098   a = 0.4752331143674377;
4099   b = 0.3883050984023654;
4100   v = 0.3124608838860167e-3;
4101   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4102   a = 0.5100457318374018;
4103   b = 0.4235613423908649;
4104   v = 0.3150084294226743e-3;
4105   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4106   a = 0.5432238388954868;
4107   b = 0.4574484717196220;
4108   v = 0.3165958398598402e-3;
4109   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4110   a = 0.5745758685072442;
4111   b = 0.4897311639255524;
4112   v = 0.3174320440957372e-3;
4113   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4114   a = 0.1723981437592809;
4115   b = 0.3010630597881105e-1;
4116   v = 0.2182188909812599e-3;
4117   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4118   a = 0.2149553257844597;
4119   b = 0.6326031554204694e-1;
4120   v = 0.2399727933921445e-3;
4121   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4122   a = 0.2573256081247422;
4123   b = 0.9848566980258631e-1;
4124   v = 0.2579796133514652e-3;
4125   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4126   a = 0.2993163751238106;
4127   b = 0.1350835952384266;
4128   v = 0.2727114052623535e-3;
4129   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4130   a = 0.3407238005148000;
4131   b = 0.1725184055442181;
4132   v = 0.2846327656281355e-3;
4133   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4134   a = 0.3813454978483264;
4135   b = 0.2103559279730725;
4136   v = 0.2941491102051334e-3;
4137   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4138   a = 0.4209848104423343;
4139   b = 0.2482278774554860;
4140   v = 0.3016049492136107e-3;
4141   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4142   a = 0.4594519699996300;
4143   b = 0.2858099509982883;
4144   v = 0.3072949726175648e-3;
4145   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4146   a = 0.4965640166185930;
4147   b = 0.3228075659915428;
4148   v = 0.3114768142886460e-3;
4149   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4150   a = 0.5321441655571562;
4151   b = 0.3589459907204151;
4152   v = 0.3143823673666223e-3;
4153   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4154   a = 0.5660208438582166;
4155   b = 0.3939630088864310;
4156   v = 0.3162269764661535e-3;
4157   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4158   a = 0.5980264315964364;
4159   b = 0.4276029922949089;
4160   v = 0.3172164663759821e-3;
4161   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4162   a = 0.2644215852350733;
4163   b = 0.3300939429072552e-1;
4164   v = 0.2554575398967435e-3;
4165   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4166   a = 0.3090113743443063;
4167   b = 0.6803887650078501e-1;
4168   v = 0.2701704069135677e-3;
4169   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4170   a = 0.3525871079197808;
4171   b = 0.1044326136206709;
4172   v = 0.2823693413468940e-3;
4173   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4174   a = 0.3950418005354029;
4175   b = 0.1416751597517679;
4176   v = 0.2922898463214289e-3;
4177   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4178   a = 0.4362475663430163;
4179   b = 0.1793408610504821;
4180   v = 0.3001829062162428e-3;
4181   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4182   a = 0.4760661812145854;
4183   b = 0.2170630750175722;
4184   v = 0.3062890864542953e-3;
4185   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4186   a = 0.5143551042512103;
4187   b = 0.2545145157815807;
4188   v = 0.3108328279264746e-3;
4189   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4190   a = 0.5509709026935597;
4191   b = 0.2913940101706601;
4192   v = 0.3140243146201245e-3;
4193   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4194   a = 0.5857711030329428;
4195   b = 0.3274169910910705;
4196   v = 0.3160638030977130e-3;
4197   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4198   a = 0.6186149917404392;
4199   b = 0.3623081329317265;
4200   v = 0.3171462882206275e-3;
4201   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4202   a = 0.3586894569557064;
4203   b = 0.3497354386450040e-1;
4204   v = 0.2812388416031796e-3;
4205   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4206   a = 0.4035266610019441;
4207   b = 0.7129736739757095e-1;
4208   v = 0.2912137500288045e-3;
4209   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4210   a = 0.4467775312332510;
4211   b = 0.1084758620193165;
4212   v = 0.2993241256502206e-3;
4213   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4214   a = 0.4883638346608543;
4215   b = 0.1460915689241772;
4216   v = 0.3057101738983822e-3;
4217   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4218   a = 0.5281908348434601;
4219   b = 0.1837790832369980;
4220   v = 0.3105319326251432e-3;
4221   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4222   a = 0.5661542687149311;
4223   b = 0.2212075390874021;
4224   v = 0.3139565514428167e-3;
4225   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4226   a = 0.6021450102031452;
4227   b = 0.2580682841160985;
4228   v = 0.3161543006806366e-3;
4229   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4230   a = 0.6360520783610050;
4231   b = 0.2940656362094121;
4232   v = 0.3172985960613294e-3;
4233   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4234   a = 0.4521611065087196;
4235   b = 0.3631055365867002e-1;
4236   v = 0.2989400336901431e-3;
4237   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4238   a = 0.4959365651560963;
4239   b = 0.7348318468484350e-1;
4240   v = 0.3054555883947677e-3;
4241   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4242   a = 0.5376815804038283;
4243   b = 0.1111087643812648;
4244   v = 0.3104764960807702e-3;
4245   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4246   a = 0.5773314480243768;
4247   b = 0.1488226085145408;
4248   v = 0.3141015825977616e-3;
4249   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4250   a = 0.6148113245575056;
4251   b = 0.1862892274135151;
4252   v = 0.3164520621159896e-3;
4253   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4254   a = 0.6500407462842380;
4255   b = 0.2231909701714456;
4256   v = 0.3176652305912204e-3;
4257   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4258   a = 0.5425151448707213;
4259   b = 0.3718201306118944e-1;
4260   v = 0.3105097161023939e-3;
4261   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4262   a = 0.5841860556907931;
4263   b = 0.7483616335067346e-1;
4264   v = 0.3143014117890550e-3;
4265   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4266   a = 0.6234632186851500;
4267   b = 0.1125990834266120;
4268   v = 0.3168172866287200e-3;
4269   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4270   a = 0.6602934551848843;
4271   b = 0.1501303813157619;
4272   v = 0.3181401865570968e-3;
4273   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4274   a = 0.6278573968375105;
4275   b = 0.3767559930245720e-1;
4276   v = 0.3170663659156037e-3;
4277   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4278   a = 0.6665611711264577;
4279   b = 0.7548443301360158e-1;
4280   v = 0.3185447944625510e-3;
4281   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4282   n = n - 1;
4283 
4284   return;
4285 }
4286 //****************************************************************************80
4287 
4288 void LebedevGrid::ld3890(double *x, double *y, double *z, double *w) const
4289 
4290 //****************************************************************************80
4291 //
4292 //  Purpose:
4293 //
4294 //    LD3890 computes the 3890 point Lebedev angular grid.
4295 //
4296 //  Modified:
4297 //
4298 //    12 September 2010
4299 //
4300 //  Author:
4301 //
4302 //    Dmitri Laikov
4303 //
4304 //  Reference:
4305 //
4306 //    Vyacheslav Lebedev, Dmitri Laikov,
4307 //    A quadrature formula for the sphere of the 131st
4308 //    algebraic order of accuracy,
4309 //    Russian Academy of Sciences Doklady Mathematics,
4310 //    Volume 59, Number 3, 1999, pages 477-481.
4311 //
4312 //  Parameters:
4313 //
4314 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
4315 //    and weights of the points.
4316 //
4317 {
4318   double a = 0.0;
4319   double b = 0.0;
4320   Index n;
4321   double v;
4322 
4323   n = 0;
4324   v = 0.1807395252196920e-4;
4325   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
4326   v = 0.2848008782238827e-3;
4327   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
4328   v = 0.2836065837530581e-3;
4329   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
4330   a = 0.1587876419858352e-1;
4331   v = 0.7013149266673816e-4;
4332   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4333   a = 0.4069193593751206e-1;
4334   v = 0.1162798021956766e-3;
4335   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4336   a = 0.7025888115257997e-1;
4337   v = 0.1518728583972105e-3;
4338   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4339   a = 0.1027495450028704;
4340   v = 0.1798796108216934e-3;
4341   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4342   a = 0.1371457730893426;
4343   v = 0.2022593385972785e-3;
4344   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4345   a = 0.1727758532671953;
4346   v = 0.2203093105575464e-3;
4347   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4348   a = 0.2091492038929037;
4349   v = 0.2349294234299855e-3;
4350   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4351   a = 0.2458813281751915;
4352   v = 0.2467682058747003e-3;
4353   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4354   a = 0.2826545859450066;
4355   v = 0.2563092683572224e-3;
4356   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4357   a = 0.3191957291799622;
4358   v = 0.2639253896763318e-3;
4359   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4360   a = 0.3552621469299578;
4361   v = 0.2699137479265108e-3;
4362   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4363   a = 0.3906329503406230;
4364   v = 0.2745196420166739e-3;
4365   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4366   a = 0.4251028614093031;
4367   v = 0.2779529197397593e-3;
4368   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4369   a = 0.4584777520111870;
4370   v = 0.2803996086684265e-3;
4371   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4372   a = 0.4905711358710193;
4373   v = 0.2820302356715842e-3;
4374   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4375   a = 0.5212011669847385;
4376   v = 0.2830056747491068e-3;
4377   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4378   a = 0.5501878488737995;
4379   v = 0.2834808950776839e-3;
4380   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4381   a = 0.6025037877479342;
4382   v = 0.2835282339078929e-3;
4383   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4384   a = 0.6254572689549016;
4385   v = 0.2833819267065800e-3;
4386   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4387   a = 0.6460107179528248;
4388   v = 0.2832858336906784e-3;
4389   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4390   a = 0.6639541138154251;
4391   v = 0.2833268235451244e-3;
4392   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4393   a = 0.6790688515667495;
4394   v = 0.2835432677029253e-3;
4395   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4396   a = 0.6911338580371512;
4397   v = 0.2839091722743049e-3;
4398   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4399   a = 0.6999385956126490;
4400   v = 0.2843308178875841e-3;
4401   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4402   a = 0.7053037748656896;
4403   v = 0.2846703550533846e-3;
4404   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4405   a = 0.4732224387180115e-1;
4406   v = 0.1051193406971900e-3;
4407   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4408   a = 0.1202100529326803;
4409   v = 0.1657871838796974e-3;
4410   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4411   a = 0.2034304820664855;
4412   v = 0.2064648113714232e-3;
4413   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4414   a = 0.2912285643573002;
4415   v = 0.2347942745819741e-3;
4416   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4417   a = 0.3802361792726768;
4418   v = 0.2547775326597726e-3;
4419   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4420   a = 0.4680598511056146;
4421   v = 0.2686876684847025e-3;
4422   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4423   a = 0.5528151052155599;
4424   v = 0.2778665755515867e-3;
4425   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4426   a = 0.6329386307803041;
4427   v = 0.2830996616782929e-3;
4428   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4429   a = 0.8056516651369069e-1;
4430   b = 0.2363454684003124e-1;
4431   v = 0.1403063340168372e-3;
4432   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4433   a = 0.1156476077139389;
4434   b = 0.5191291632545936e-1;
4435   v = 0.1696504125939477e-3;
4436   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4437   a = 0.1520473382760421;
4438   b = 0.8322715736994519e-1;
4439   v = 0.1935787242745390e-3;
4440   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4441   a = 0.1892986699745931;
4442   b = 0.1165855667993712;
4443   v = 0.2130614510521968e-3;
4444   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4445   a = 0.2270194446777792;
4446   b = 0.1513077167409504;
4447   v = 0.2289381265931048e-3;
4448   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4449   a = 0.2648908185093273;
4450   b = 0.1868882025807859;
4451   v = 0.2418630292816186e-3;
4452   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4453   a = 0.3026389259574136;
4454   b = 0.2229277629776224;
4455   v = 0.2523400495631193e-3;
4456   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4457   a = 0.3400220296151384;
4458   b = 0.2590951840746235;
4459   v = 0.2607623973449605e-3;
4460   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4461   a = 0.3768217953335510;
4462   b = 0.2951047291750847;
4463   v = 0.2674441032689209e-3;
4464   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4465   a = 0.4128372900921884;
4466   b = 0.3307019714169930;
4467   v = 0.2726432360343356e-3;
4468   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4469   a = 0.4478807131815630;
4470   b = 0.3656544101087634;
4471   v = 0.2765787685924545e-3;
4472   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4473   a = 0.4817742034089257;
4474   b = 0.3997448951939695;
4475   v = 0.2794428690642224e-3;
4476   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4477   a = 0.5143472814653344;
4478   b = 0.4327667110812024;
4479   v = 0.2814099002062895e-3;
4480   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4481   a = 0.5454346213905650;
4482   b = 0.4645196123532293;
4483   v = 0.2826429531578994e-3;
4484   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4485   a = 0.5748739313170252;
4486   b = 0.4948063555703345;
4487   v = 0.2832983542550884e-3;
4488   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4489   a = 0.1599598738286342;
4490   b = 0.2792357590048985e-1;
4491   v = 0.1886695565284976e-3;
4492   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4493   a = 0.1998097412500951;
4494   b = 0.5877141038139065e-1;
4495   v = 0.2081867882748234e-3;
4496   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4497   a = 0.2396228952566202;
4498   b = 0.9164573914691377e-1;
4499   v = 0.2245148680600796e-3;
4500   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4501   a = 0.2792228341097746;
4502   b = 0.1259049641962687;
4503   v = 0.2380370491511872e-3;
4504   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4505   a = 0.3184251107546741;
4506   b = 0.1610594823400863;
4507   v = 0.2491398041852455e-3;
4508   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4509   a = 0.3570481164426244;
4510   b = 0.1967151653460898;
4511   v = 0.2581632405881230e-3;
4512   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4513   a = 0.3949164710492144;
4514   b = 0.2325404606175168;
4515   v = 0.2653965506227417e-3;
4516   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4517   a = 0.4318617293970503;
4518   b = 0.2682461141151439;
4519   v = 0.2710857216747087e-3;
4520   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4521   a = 0.4677221009931678;
4522   b = 0.3035720116011973;
4523   v = 0.2754434093903659e-3;
4524   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4525   a = 0.5023417939270955;
4526   b = 0.3382781859197439;
4527   v = 0.2786579932519380e-3;
4528   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4529   a = 0.5355701836636128;
4530   b = 0.3721383065625942;
4531   v = 0.2809011080679474e-3;
4532   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4533   a = 0.5672608451328771;
4534   b = 0.4049346360466055;
4535   v = 0.2823336184560987e-3;
4536   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4537   a = 0.5972704202540162;
4538   b = 0.4364538098633802;
4539   v = 0.2831101175806309e-3;
4540   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4541   a = 0.2461687022333596;
4542   b = 0.3070423166833368e-1;
4543   v = 0.2221679970354546e-3;
4544   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4545   a = 0.2881774566286831;
4546   b = 0.6338034669281885e-1;
4547   v = 0.2356185734270703e-3;
4548   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4549   a = 0.3293963604116978;
4550   b = 0.9742862487067941e-1;
4551   v = 0.2469228344805590e-3;
4552   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4553   a = 0.3697303822241377;
4554   b = 0.1323799532282290;
4555   v = 0.2562726348642046e-3;
4556   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4557   a = 0.4090663023135127;
4558   b = 0.1678497018129336;
4559   v = 0.2638756726753028e-3;
4560   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4561   a = 0.4472819355411712;
4562   b = 0.2035095105326114;
4563   v = 0.2699311157390862e-3;
4564   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4565   a = 0.4842513377231437;
4566   b = 0.2390692566672091;
4567   v = 0.2746233268403837e-3;
4568   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4569   a = 0.5198477629962928;
4570   b = 0.2742649818076149;
4571   v = 0.2781225674454771e-3;
4572   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4573   a = 0.5539453011883145;
4574   b = 0.3088503806580094;
4575   v = 0.2805881254045684e-3;
4576   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4577   a = 0.5864196762401251;
4578   b = 0.3425904245906614;
4579   v = 0.2821719877004913e-3;
4580   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4581   a = 0.6171484466668390;
4582   b = 0.3752562294789468;
4583   v = 0.2830222502333124e-3;
4584   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4585   a = 0.3350337830565727;
4586   b = 0.3261589934634747e-1;
4587   v = 0.2457995956744870e-3;
4588   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4589   a = 0.3775773224758284;
4590   b = 0.6658438928081572e-1;
4591   v = 0.2551474407503706e-3;
4592   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4593   a = 0.4188155229848973;
4594   b = 0.1014565797157954;
4595   v = 0.2629065335195311e-3;
4596   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4597   a = 0.4586805892009344;
4598   b = 0.1368573320843822;
4599   v = 0.2691900449925075e-3;
4600   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4601   a = 0.4970895714224235;
4602   b = 0.1724614851951608;
4603   v = 0.2741275485754276e-3;
4604   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4605   a = 0.5339505133960747;
4606   b = 0.2079779381416412;
4607   v = 0.2778530970122595e-3;
4608   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4609   a = 0.5691665792531440;
4610   b = 0.2431385788322288;
4611   v = 0.2805010567646741e-3;
4612   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4613   a = 0.6026387682680377;
4614   b = 0.2776901883049853;
4615   v = 0.2822055834031040e-3;
4616   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4617   a = 0.6342676150163307;
4618   b = 0.3113881356386632;
4619   v = 0.2831016901243473e-3;
4620   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4621   a = 0.4237951119537067;
4622   b = 0.3394877848664351e-1;
4623   v = 0.2624474901131803e-3;
4624   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4625   a = 0.4656918683234929;
4626   b = 0.6880219556291447e-1;
4627   v = 0.2688034163039377e-3;
4628   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4629   a = 0.5058857069185980;
4630   b = 0.1041946859721635;
4631   v = 0.2738932751287636e-3;
4632   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4633   a = 0.5443204666713996;
4634   b = 0.1398039738736393;
4635   v = 0.2777944791242523e-3;
4636   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4637   a = 0.5809298813759742;
4638   b = 0.1753373381196155;
4639   v = 0.2806011661660987e-3;
4640   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4641   a = 0.6156416039447128;
4642   b = 0.2105215793514010;
4643   v = 0.2824181456597460e-3;
4644   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4645   a = 0.6483801351066604;
4646   b = 0.2450953312157051;
4647   v = 0.2833585216577828e-3;
4648   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4649   a = 0.5103616577251688;
4650   b = 0.3485560643800719e-1;
4651   v = 0.2738165236962878e-3;
4652   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4653   a = 0.5506738792580681;
4654   b = 0.7026308631512033e-1;
4655   v = 0.2778365208203180e-3;
4656   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4657   a = 0.5889573040995292;
4658   b = 0.1059035061296403;
4659   v = 0.2807852940418966e-3;
4660   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4661   a = 0.6251641589516930;
4662   b = 0.1414823925236026;
4663   v = 0.2827245949674705e-3;
4664   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4665   a = 0.6592414921570178;
4666   b = 0.1767207908214530;
4667   v = 0.2837342344829828e-3;
4668   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4669   a = 0.5930314017533384;
4670   b = 0.3542189339561672e-1;
4671   v = 0.2809233907610981e-3;
4672   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4673   a = 0.6309812253390175;
4674   b = 0.7109574040369549e-1;
4675   v = 0.2829930809742694e-3;
4676   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4677   a = 0.6666296011353230;
4678   b = 0.1067259792282730;
4679   v = 0.2841097874111479e-3;
4680   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4681   a = 0.6703715271049922;
4682   b = 0.3569455268820809e-1;
4683   v = 0.2843455206008783e-3;
4684   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4685   n = n - 1;
4686 
4687   return;
4688 }
4689 //****************************************************************************80
4690 
4691 void LebedevGrid::ld4334(double *x, double *y, double *z, double *w) const
4692 
4693 //****************************************************************************80
4694 //
4695 //  Purpose:
4696 //
4697 //    LD4334 computes the 4334 point Lebedev angular grid.
4698 //
4699 //  Modified:
4700 //
4701 //    12 September 2010
4702 //
4703 //  Author:
4704 //
4705 //    Dmitri Laikov
4706 //
4707 //  Reference:
4708 //
4709 //    Vyacheslav Lebedev, Dmitri Laikov,
4710 //    A quadrature formula for the sphere of the 131st
4711 //    algebraic order of accuracy,
4712 //    Russian Academy of Sciences Doklady Mathematics,
4713 //    Volume 59, Number 3, 1999, pages 477-481.
4714 //
4715 //  Parameters:
4716 //
4717 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
4718 //    and weights of the points.
4719 //
4720 {
4721   double a = 0.0;
4722   double b = 0.0;
4723   Index n;
4724   double v;
4725 
4726   n = 0;
4727   v = 0.1449063022537883e-4;
4728   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
4729   v = 0.2546377329828424e-3;
4730   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
4731   a = 0.1462896151831013e-1;
4732   v = 0.6018432961087496e-4;
4733   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4734   a = 0.3769840812493139e-1;
4735   v = 0.1002286583263673e-3;
4736   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4737   a = 0.6524701904096891e-1;
4738   v = 0.1315222931028093e-3;
4739   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4740   a = 0.9560543416134648e-1;
4741   v = 0.1564213746876724e-3;
4742   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4743   a = 0.1278335898929198;
4744   v = 0.1765118841507736e-3;
4745   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4746   a = 0.1613096104466031;
4747   v = 0.1928737099311080e-3;
4748   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4749   a = 0.1955806225745371;
4750   v = 0.2062658534263270e-3;
4751   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4752   a = 0.2302935218498028;
4753   v = 0.2172395445953787e-3;
4754   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4755   a = 0.2651584344113027;
4756   v = 0.2262076188876047e-3;
4757   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4758   a = 0.2999276825183209;
4759   v = 0.2334885699462397e-3;
4760   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4761   a = 0.3343828669718798;
4762   v = 0.2393355273179203e-3;
4763   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4764   a = 0.3683265013750518;
4765   v = 0.2439559200468863e-3;
4766   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4767   a = 0.4015763206518108;
4768   v = 0.2475251866060002e-3;
4769   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4770   a = 0.4339612026399770;
4771   v = 0.2501965558158773e-3;
4772   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4773   a = 0.4653180651114582;
4774   v = 0.2521081407925925e-3;
4775   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4776   a = 0.4954893331080803;
4777   v = 0.2533881002388081e-3;
4778   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4779   a = 0.5243207068924930;
4780   v = 0.2541582900848261e-3;
4781   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4782   a = 0.5516590479041704;
4783   v = 0.2545365737525860e-3;
4784   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4785   a = 0.6012371927804176;
4786   v = 0.2545726993066799e-3;
4787   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4788   a = 0.6231574466449819;
4789   v = 0.2544456197465555e-3;
4790   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4791   a = 0.6429416514181271;
4792   v = 0.2543481596881064e-3;
4793   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4794   a = 0.6604124272943595;
4795   v = 0.2543506451429194e-3;
4796   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4797   a = 0.6753851470408250;
4798   v = 0.2544905675493763e-3;
4799   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4800   a = 0.6876717970626160;
4801   v = 0.2547611407344429e-3;
4802   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4803   a = 0.6970895061319234;
4804   v = 0.2551060375448869e-3;
4805   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4806   a = 0.7034746912553310;
4807   v = 0.2554291933816039e-3;
4808   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4809   a = 0.7067017217542295;
4810   v = 0.2556255710686343e-3;
4811   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
4812   a = 0.4382223501131123e-1;
4813   v = 0.9041339695118195e-4;
4814   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4815   a = 0.1117474077400006;
4816   v = 0.1438426330079022e-3;
4817   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4818   a = 0.1897153252911440;
4819   v = 0.1802523089820518e-3;
4820   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4821   a = 0.2724023009910331;
4822   v = 0.2060052290565496e-3;
4823   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4824   a = 0.3567163308709902;
4825   v = 0.2245002248967466e-3;
4826   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4827   a = 0.4404784483028087;
4828   v = 0.2377059847731150e-3;
4829   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4830   a = 0.5219833154161411;
4831   v = 0.2468118955882525e-3;
4832   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4833   a = 0.5998179868977553;
4834   v = 0.2525410872966528e-3;
4835   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4836   a = 0.6727803154548222;
4837   v = 0.2553101409933397e-3;
4838   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
4839   a = 0.7476563943166086e-1;
4840   b = 0.2193168509461185e-1;
4841   v = 0.1212879733668632e-3;
4842   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4843   a = 0.1075341482001416;
4844   b = 0.4826419281533887e-1;
4845   v = 0.1472872881270931e-3;
4846   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4847   a = 0.1416344885203259;
4848   b = 0.7751191883575742e-1;
4849   v = 0.1686846601010828e-3;
4850   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4851   a = 0.1766325315388586;
4852   b = 0.1087558139247680;
4853   v = 0.1862698414660208e-3;
4854   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4855   a = 0.2121744174481514;
4856   b = 0.1413661374253096;
4857   v = 0.2007430956991861e-3;
4858   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4859   a = 0.2479669443408145;
4860   b = 0.1748768214258880;
4861   v = 0.2126568125394796e-3;
4862   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4863   a = 0.2837600452294113;
4864   b = 0.2089216406612073;
4865   v = 0.2224394603372113e-3;
4866   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4867   a = 0.3193344933193984;
4868   b = 0.2431987685545972;
4869   v = 0.2304264522673135e-3;
4870   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4871   a = 0.3544935442438745;
4872   b = 0.2774497054377770;
4873   v = 0.2368854288424087e-3;
4874   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4875   a = 0.3890571932288154;
4876   b = 0.3114460356156915;
4877   v = 0.2420352089461772e-3;
4878   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4879   a = 0.4228581214259090;
4880   b = 0.3449806851913012;
4881   v = 0.2460597113081295e-3;
4882   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4883   a = 0.4557387211304052;
4884   b = 0.3778618641248256;
4885   v = 0.2491181912257687e-3;
4886   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4887   a = 0.4875487950541643;
4888   b = 0.4099086391698978;
4889   v = 0.2513528194205857e-3;
4890   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4891   a = 0.5181436529962997;
4892   b = 0.4409474925853973;
4893   v = 0.2528943096693220e-3;
4894   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4895   a = 0.5473824095600661;
4896   b = 0.4708094517711291;
4897   v = 0.2538660368488136e-3;
4898   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4899   a = 0.5751263398976174;
4900   b = 0.4993275140354637;
4901   v = 0.2543868648299022e-3;
4902   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4903   a = 0.1489515746840028;
4904   b = 0.2599381993267017e-1;
4905   v = 0.1642595537825183e-3;
4906   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4907   a = 0.1863656444351767;
4908   b = 0.5479286532462190e-1;
4909   v = 0.1818246659849308e-3;
4910   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4911   a = 0.2238602880356348;
4912   b = 0.8556763251425254e-1;
4913   v = 0.1966565649492420e-3;
4914   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4915   a = 0.2612723375728160;
4916   b = 0.1177257802267011;
4917   v = 0.2090677905657991e-3;
4918   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4919   a = 0.2984332990206190;
4920   b = 0.1508168456192700;
4921   v = 0.2193820409510504e-3;
4922   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4923   a = 0.3351786584663333;
4924   b = 0.1844801892177727;
4925   v = 0.2278870827661928e-3;
4926   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4927   a = 0.3713505522209120;
4928   b = 0.2184145236087598;
4929   v = 0.2348283192282090e-3;
4930   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4931   a = 0.4067981098954663;
4932   b = 0.2523590641486229;
4933   v = 0.2404139755581477e-3;
4934   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4935   a = 0.4413769993687534;
4936   b = 0.2860812976901373;
4937   v = 0.2448227407760734e-3;
4938   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4939   a = 0.4749487182516394;
4940   b = 0.3193686757808996;
4941   v = 0.2482110455592573e-3;
4942   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4943   a = 0.5073798105075426;
4944   b = 0.3520226949547602;
4945   v = 0.2507192397774103e-3;
4946   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4947   a = 0.5385410448878654;
4948   b = 0.3838544395667890;
4949   v = 0.2524765968534880e-3;
4950   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4951   a = 0.5683065353670530;
4952   b = 0.4146810037640963;
4953   v = 0.2536052388539425e-3;
4954   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4955   a = 0.5965527620663510;
4956   b = 0.4443224094681121;
4957   v = 0.2542230588033068e-3;
4958   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4959   a = 0.2299227700856157;
4960   b = 0.2865757664057584e-1;
4961   v = 0.1944817013047896e-3;
4962   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4963   a = 0.2695752998553267;
4964   b = 0.5923421684485993e-1;
4965   v = 0.2067862362746635e-3;
4966   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4967   a = 0.3086178716611389;
4968   b = 0.9117817776057715e-1;
4969   v = 0.2172440734649114e-3;
4970   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4971   a = 0.3469649871659077;
4972   b = 0.1240593814082605;
4973   v = 0.2260125991723423e-3;
4974   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4975   a = 0.3845153566319655;
4976   b = 0.1575272058259175;
4977   v = 0.2332655008689523e-3;
4978   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4979   a = 0.4211600033403215;
4980   b = 0.1912845163525413;
4981   v = 0.2391699681532458e-3;
4982   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4983   a = 0.4567867834329882;
4984   b = 0.2250710177858171;
4985   v = 0.2438801528273928e-3;
4986   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4987   a = 0.4912829319232061;
4988   b = 0.2586521303440910;
4989   v = 0.2475370504260665e-3;
4990   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4991   a = 0.5245364793303812;
4992   b = 0.2918112242865407;
4993   v = 0.2502707235640574e-3;
4994   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4995   a = 0.5564369788915756;
4996   b = 0.3243439239067890;
4997   v = 0.2522031701054241e-3;
4998   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
4999   a = 0.5868757697775287;
5000   b = 0.3560536787835351;
5001   v = 0.2534511269978784e-3;
5002   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5003   a = 0.6157458853519617;
5004   b = 0.3867480821242581;
5005   v = 0.2541284914955151e-3;
5006   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5007   a = 0.3138461110672113;
5008   b = 0.3051374637507278e-1;
5009   v = 0.2161509250688394e-3;
5010   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5011   a = 0.3542495872050569;
5012   b = 0.6237111233730755e-1;
5013   v = 0.2248778513437852e-3;
5014   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5015   a = 0.3935751553120181;
5016   b = 0.9516223952401907e-1;
5017   v = 0.2322388803404617e-3;
5018   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5019   a = 0.4317634668111147;
5020   b = 0.1285467341508517;
5021   v = 0.2383265471001355e-3;
5022   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5023   a = 0.4687413842250821;
5024   b = 0.1622318931656033;
5025   v = 0.2432476675019525e-3;
5026   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5027   a = 0.5044274237060283;
5028   b = 0.1959581153836453;
5029   v = 0.2471122223750674e-3;
5030   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5031   a = 0.5387354077925727;
5032   b = 0.2294888081183837;
5033   v = 0.2500291752486870e-3;
5034   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5035   a = 0.5715768898356105;
5036   b = 0.2626031152713945;
5037   v = 0.2521055942764682e-3;
5038   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5039   a = 0.6028627200136111;
5040   b = 0.2950904075286713;
5041   v = 0.2534472785575503e-3;
5042   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5043   a = 0.6325039812653463;
5044   b = 0.3267458451113286;
5045   v = 0.2541599713080121e-3;
5046   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5047   a = 0.3981986708423407;
5048   b = 0.3183291458749821e-1;
5049   v = 0.2317380975862936e-3;
5050   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5051   a = 0.4382791182133300;
5052   b = 0.6459548193880908e-1;
5053   v = 0.2378550733719775e-3;
5054   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5055   a = 0.4769233057218166;
5056   b = 0.9795757037087952e-1;
5057   v = 0.2428884456739118e-3;
5058   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5059   a = 0.5140823911194238;
5060   b = 0.1316307235126655;
5061   v = 0.2469002655757292e-3;
5062   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5063   a = 0.5496977833862983;
5064   b = 0.1653556486358704;
5065   v = 0.2499657574265851e-3;
5066   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5067   a = 0.5837047306512727;
5068   b = 0.1988931724126510;
5069   v = 0.2521676168486082e-3;
5070   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5071   a = 0.6160349566926879;
5072   b = 0.2320174581438950;
5073   v = 0.2535935662645334e-3;
5074   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5075   a = 0.6466185353209440;
5076   b = 0.2645106562168662;
5077   v = 0.2543356743363214e-3;
5078   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5079   a = 0.4810835158795404;
5080   b = 0.3275917807743992e-1;
5081   v = 0.2427353285201535e-3;
5082   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5083   a = 0.5199925041324341;
5084   b = 0.6612546183967181e-1;
5085   v = 0.2468258039744386e-3;
5086   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5087   a = 0.5571717692207494;
5088   b = 0.9981498331474143e-1;
5089   v = 0.2500060956440310e-3;
5090   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5091   a = 0.5925789250836378;
5092   b = 0.1335687001410374;
5093   v = 0.2523238365420979e-3;
5094   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5095   a = 0.6261658523859670;
5096   b = 0.1671444402896463;
5097   v = 0.2538399260252846e-3;
5098   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5099   a = 0.6578811126669331;
5100   b = 0.2003106382156076;
5101   v = 0.2546255927268069e-3;
5102   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5103   a = 0.5609624612998100;
5104   b = 0.3337500940231335e-1;
5105   v = 0.2500583360048449e-3;
5106   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5107   a = 0.5979959659984670;
5108   b = 0.6708750335901803e-1;
5109   v = 0.2524777638260203e-3;
5110   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5111   a = 0.6330523711054002;
5112   b = 0.1008792126424850;
5113   v = 0.2540951193860656e-3;
5114   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5115   a = 0.6660960998103972;
5116   b = 0.1345050343171794;
5117   v = 0.2549524085027472e-3;
5118   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5119   a = 0.6365384364585819;
5120   b = 0.3372799460737052e-1;
5121   v = 0.2542569507009158e-3;
5122   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5123   a = 0.6710994302899275;
5124   b = 0.6755249309678028e-1;
5125   v = 0.2552114127580376e-3;
5126   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5127   n = n - 1;
5128 
5129   return;
5130 }
5131 //****************************************************************************80
5132 
5133 void LebedevGrid::ld4802(double *x, double *y, double *z, double *w) const
5134 
5135 //****************************************************************************80
5136 //
5137 //  Purpose:
5138 //
5139 //    LD4802 computes the 4802 point Lebedev angular grid.
5140 //
5141 //  Modified:
5142 //
5143 //    12 September 2010
5144 //
5145 //  Author:
5146 //
5147 //    Dmitri Laikov
5148 //
5149 //  Reference:
5150 //
5151 //    Vyacheslav Lebedev, Dmitri Laikov,
5152 //    A quadrature formula for the sphere of the 131st
5153 //    algebraic order of accuracy,
5154 //    Russian Academy of Sciences Doklady Mathematics,
5155 //    Volume 59, Number 3, 1999, pages 477-481.
5156 //
5157 //  Parameters:
5158 //
5159 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
5160 //    and weights of the points.
5161 //
5162 {
5163   double a = 0.0;
5164   double b = 0.0;
5165   Index n;
5166   double v;
5167 
5168   n = 0;
5169   v = 0.9687521879420705e-4;
5170   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
5171   v = 0.2307897895367918e-3;
5172   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
5173   v = 0.2297310852498558e-3;
5174   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
5175   a = 0.2335728608887064e-1;
5176   v = 0.7386265944001919e-4;
5177   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5178   a = 0.4352987836550653e-1;
5179   v = 0.8257977698542210e-4;
5180   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5181   a = 0.6439200521088801e-1;
5182   v = 0.9706044762057630e-4;
5183   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5184   a = 0.9003943631993181e-1;
5185   v = 0.1302393847117003e-3;
5186   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5187   a = 0.1196706615548473;
5188   v = 0.1541957004600968e-3;
5189   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5190   a = 0.1511715412838134;
5191   v = 0.1704459770092199e-3;
5192   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5193   a = 0.1835982828503801;
5194   v = 0.1827374890942906e-3;
5195   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5196   a = 0.2165081259155405;
5197   v = 0.1926360817436107e-3;
5198   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5199   a = 0.2496208720417563;
5200   v = 0.2008010239494833e-3;
5201   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5202   a = 0.2827200673567900;
5203   v = 0.2075635983209175e-3;
5204   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5205   a = 0.3156190823994346;
5206   v = 0.2131306638690909e-3;
5207   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5208   a = 0.3481476793749115;
5209   v = 0.2176562329937335e-3;
5210   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5211   a = 0.3801466086947226;
5212   v = 0.2212682262991018e-3;
5213   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5214   a = 0.4114652119634011;
5215   v = 0.2240799515668565e-3;
5216   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5217   a = 0.4419598786519751;
5218   v = 0.2261959816187525e-3;
5219   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5220   a = 0.4714925949329543;
5221   v = 0.2277156368808855e-3;
5222   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5223   a = 0.4999293972879466;
5224   v = 0.2287351772128336e-3;
5225   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5226   a = 0.5271387221431248;
5227   v = 0.2293490814084085e-3;
5228   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5229   a = 0.5529896780837761;
5230   v = 0.2296505312376273e-3;
5231   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5232   a = 0.6000856099481712;
5233   v = 0.2296793832318756e-3;
5234   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5235   a = 0.6210562192785175;
5236   v = 0.2295785443842974e-3;
5237   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5238   a = 0.6401165879934240;
5239   v = 0.2295017931529102e-3;
5240   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5241   a = 0.6571144029244334;
5242   v = 0.2295059638184868e-3;
5243   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5244   a = 0.6718910821718863;
5245   v = 0.2296232343237362e-3;
5246   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5247   a = 0.6842845591099010;
5248   v = 0.2298530178740771e-3;
5249   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5250   a = 0.6941353476269816;
5251   v = 0.2301579790280501e-3;
5252   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5253   a = 0.7012965242212991;
5254   v = 0.2304690404996513e-3;
5255   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5256   a = 0.7056471428242644;
5257   v = 0.2307027995907102e-3;
5258   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5259   a = 0.4595557643585895e-1;
5260   v = 0.9312274696671092e-4;
5261   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5262   a = 0.1049316742435023;
5263   v = 0.1199919385876926e-3;
5264   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5265   a = 0.1773548879549274;
5266   v = 0.1598039138877690e-3;
5267   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5268   a = 0.2559071411236127;
5269   v = 0.1822253763574900e-3;
5270   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5271   a = 0.3358156837985898;
5272   v = 0.1988579593655040e-3;
5273   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5274   a = 0.4155835743763893;
5275   v = 0.2112620102533307e-3;
5276   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5277   a = 0.4937894296167472;
5278   v = 0.2201594887699007e-3;
5279   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5280   a = 0.5691569694793316;
5281   v = 0.2261622590895036e-3;
5282   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5283   a = 0.6405840854894251;
5284   v = 0.2296458453435705e-3;
5285   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5286   a = 0.7345133894143348e-1;
5287   b = 0.2177844081486067e-1;
5288   v = 0.1006006990267000e-3;
5289   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5290   a = 0.1009859834044931;
5291   b = 0.4590362185775188e-1;
5292   v = 0.1227676689635876e-3;
5293   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5294   a = 0.1324289619748758;
5295   b = 0.7255063095690877e-1;
5296   v = 0.1467864280270117e-3;
5297   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5298   a = 0.1654272109607127;
5299   b = 0.1017825451960684;
5300   v = 0.1644178912101232e-3;
5301   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5302   a = 0.1990767186776461;
5303   b = 0.1325652320980364;
5304   v = 0.1777664890718961e-3;
5305   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5306   a = 0.2330125945523278;
5307   b = 0.1642765374496765;
5308   v = 0.1884825664516690e-3;
5309   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5310   a = 0.2670080611108287;
5311   b = 0.1965360374337889;
5312   v = 0.1973269246453848e-3;
5313   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5314   a = 0.3008753376294316;
5315   b = 0.2290726770542238;
5316   v = 0.2046767775855328e-3;
5317   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5318   a = 0.3344475596167860;
5319   b = 0.2616645495370823;
5320   v = 0.2107600125918040e-3;
5321   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5322   a = 0.3675709724070786;
5323   b = 0.2941150728843141;
5324   v = 0.2157416362266829e-3;
5325   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5326   a = 0.4001000887587812;
5327   b = 0.3262440400919066;
5328   v = 0.2197557816920721e-3;
5329   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5330   a = 0.4318956350436028;
5331   b = 0.3578835350611916;
5332   v = 0.2229192611835437e-3;
5333   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5334   a = 0.4628239056795531;
5335   b = 0.3888751854043678;
5336   v = 0.2253385110212775e-3;
5337   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5338   a = 0.4927563229773636;
5339   b = 0.4190678003222840;
5340   v = 0.2271137107548774e-3;
5341   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5342   a = 0.5215687136707969;
5343   b = 0.4483151836883852;
5344   v = 0.2283414092917525e-3;
5345   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5346   a = 0.5491402346984905;
5347   b = 0.4764740676087880;
5348   v = 0.2291161673130077e-3;
5349   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5350   a = 0.5753520160126075;
5351   b = 0.5034021310998277;
5352   v = 0.2295313908576598e-3;
5353   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5354   a = 0.1388326356417754;
5355   b = 0.2435436510372806e-1;
5356   v = 0.1438204721359031e-3;
5357   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5358   a = 0.1743686900537244;
5359   b = 0.5118897057342652e-1;
5360   v = 0.1607738025495257e-3;
5361   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5362   a = 0.2099737037950268;
5363   b = 0.8014695048539634e-1;
5364   v = 0.1741483853528379e-3;
5365   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5366   a = 0.2454492590908548;
5367   b = 0.1105117874155699;
5368   v = 0.1851918467519151e-3;
5369   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5370   a = 0.2807219257864278;
5371   b = 0.1417950531570966;
5372   v = 0.1944628638070613e-3;
5373   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5374   a = 0.3156842271975842;
5375   b = 0.1736604945719597;
5376   v = 0.2022495446275152e-3;
5377   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5378   a = 0.3502090945177752;
5379   b = 0.2058466324693981;
5380   v = 0.2087462382438514e-3;
5381   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5382   a = 0.3841684849519686;
5383   b = 0.2381284261195919;
5384   v = 0.2141074754818308e-3;
5385   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5386   a = 0.4174372367906016;
5387   b = 0.2703031270422569;
5388   v = 0.2184640913748162e-3;
5389   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5390   a = 0.4498926465011892;
5391   b = 0.3021845683091309;
5392   v = 0.2219309165220329e-3;
5393   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5394   a = 0.4814146229807701;
5395   b = 0.3335993355165720;
5396   v = 0.2246123118340624e-3;
5397   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5398   a = 0.5118863625734701;
5399   b = 0.3643833735518232;
5400   v = 0.2266062766915125e-3;
5401   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5402   a = 0.5411947455119144;
5403   b = 0.3943789541958179;
5404   v = 0.2280072952230796e-3;
5405   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5406   a = 0.5692301500357246;
5407   b = 0.4234320144403542;
5408   v = 0.2289082025202583e-3;
5409   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5410   a = 0.5958857204139576;
5411   b = 0.4513897947419260;
5412   v = 0.2294012695120025e-3;
5413   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5414   a = 0.2156270284785766;
5415   b = 0.2681225755444491e-1;
5416   v = 0.1722434488736947e-3;
5417   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5418   a = 0.2532385054909710;
5419   b = 0.5557495747805614e-1;
5420   v = 0.1830237421455091e-3;
5421   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5422   a = 0.2902564617771537;
5423   b = 0.8569368062950249e-1;
5424   v = 0.1923855349997633e-3;
5425   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5426   a = 0.3266979823143256;
5427   b = 0.1167367450324135;
5428   v = 0.2004067861936271e-3;
5429   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5430   a = 0.3625039627493614;
5431   b = 0.1483861994003304;
5432   v = 0.2071817297354263e-3;
5433   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5434   a = 0.3975838937548699;
5435   b = 0.1803821503011405;
5436   v = 0.2128250834102103e-3;
5437   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5438   a = 0.4318396099009774;
5439   b = 0.2124962965666424;
5440   v = 0.2174513719440102e-3;
5441   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5442   a = 0.4651706555732742;
5443   b = 0.2445221837805913;
5444   v = 0.2211661839150214e-3;
5445   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5446   a = 0.4974752649620969;
5447   b = 0.2762701224322987;
5448   v = 0.2240665257813102e-3;
5449   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5450   a = 0.5286517579627517;
5451   b = 0.3075627775211328;
5452   v = 0.2262439516632620e-3;
5453   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5454   a = 0.5586001195731895;
5455   b = 0.3382311089826877;
5456   v = 0.2277874557231869e-3;
5457   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5458   a = 0.5872229902021319;
5459   b = 0.3681108834741399;
5460   v = 0.2287854314454994e-3;
5461   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5462   a = 0.6144258616235123;
5463   b = 0.3970397446872839;
5464   v = 0.2293268499615575e-3;
5465   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5466   a = 0.2951676508064861;
5467   b = 0.2867499538750441e-1;
5468   v = 0.1912628201529828e-3;
5469   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5470   a = 0.3335085485472725;
5471   b = 0.5867879341903510e-1;
5472   v = 0.1992499672238701e-3;
5473   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5474   a = 0.3709561760636381;
5475   b = 0.8961099205022284e-1;
5476   v = 0.2061275533454027e-3;
5477   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5478   a = 0.4074722861667498;
5479   b = 0.1211627927626297;
5480   v = 0.2119318215968572e-3;
5481   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5482   a = 0.4429923648839117;
5483   b = 0.1530748903554898;
5484   v = 0.2167416581882652e-3;
5485   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5486   a = 0.4774428052721736;
5487   b = 0.1851176436721877;
5488   v = 0.2206430730516600e-3;
5489   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5490   a = 0.5107446539535904;
5491   b = 0.2170829107658179;
5492   v = 0.2237186938699523e-3;
5493   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5494   a = 0.5428151370542935;
5495   b = 0.2487786689026271;
5496   v = 0.2260480075032884e-3;
5497   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5498   a = 0.5735699292556964;
5499   b = 0.2800239952795016;
5500   v = 0.2277098884558542e-3;
5501   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5502   a = 0.6029253794562866;
5503   b = 0.3106445702878119;
5504   v = 0.2287845715109671e-3;
5505   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5506   a = 0.6307998987073145;
5507   b = 0.3404689500841194;
5508   v = 0.2293547268236294e-3;
5509   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5510   a = 0.3752652273692719;
5511   b = 0.2997145098184479e-1;
5512   v = 0.2056073839852528e-3;
5513   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5514   a = 0.4135383879344028;
5515   b = 0.6086725898678011e-1;
5516   v = 0.2114235865831876e-3;
5517   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5518   a = 0.4506113885153907;
5519   b = 0.9238849548435643e-1;
5520   v = 0.2163175629770551e-3;
5521   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5522   a = 0.4864401554606072;
5523   b = 0.1242786603851851;
5524   v = 0.2203392158111650e-3;
5525   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5526   a = 0.5209708076611709;
5527   b = 0.1563086731483386;
5528   v = 0.2235473176847839e-3;
5529   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5530   a = 0.5541422135830122;
5531   b = 0.1882696509388506;
5532   v = 0.2260024141501235e-3;
5533   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5534   a = 0.5858880915113817;
5535   b = 0.2199672979126059;
5536   v = 0.2277675929329182e-3;
5537   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5538   a = 0.6161399390603444;
5539   b = 0.2512165482924867;
5540   v = 0.2289102112284834e-3;
5541   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5542   a = 0.6448296482255090;
5543   b = 0.2818368701871888;
5544   v = 0.2295027954625118e-3;
5545   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5546   a = 0.4544796274917948;
5547   b = 0.3088970405060312e-1;
5548   v = 0.2161281589879992e-3;
5549   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5550   a = 0.4919389072146628;
5551   b = 0.6240947677636835e-1;
5552   v = 0.2201980477395102e-3;
5553   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5554   a = 0.5279313026985183;
5555   b = 0.9430706144280313e-1;
5556   v = 0.2234952066593166e-3;
5557   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5558   a = 0.5624169925571135;
5559   b = 0.1263547818770374;
5560   v = 0.2260540098520838e-3;
5561   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5562   a = 0.5953484627093287;
5563   b = 0.1583430788822594;
5564   v = 0.2279157981899988e-3;
5565   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5566   a = 0.6266730715339185;
5567   b = 0.1900748462555988;
5568   v = 0.2291296918565571e-3;
5569   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5570   a = 0.6563363204278871;
5571   b = 0.2213599519592567;
5572   v = 0.2297533752536649e-3;
5573   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5574   a = 0.5314574716585696;
5575   b = 0.3152508811515374e-1;
5576   v = 0.2234927356465995e-3;
5577   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5578   a = 0.5674614932298185;
5579   b = 0.6343865291465561e-1;
5580   v = 0.2261288012985219e-3;
5581   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5582   a = 0.6017706004970264;
5583   b = 0.9551503504223951e-1;
5584   v = 0.2280818160923688e-3;
5585   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5586   a = 0.6343471270264178;
5587   b = 0.1275440099801196;
5588   v = 0.2293773295180159e-3;
5589   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5590   a = 0.6651494599127802;
5591   b = 0.1593252037671960;
5592   v = 0.2300528767338634e-3;
5593   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5594   a = 0.6050184986005704;
5595   b = 0.3192538338496105e-1;
5596   v = 0.2281893855065666e-3;
5597   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5598   a = 0.6390163550880400;
5599   b = 0.6402824353962306e-1;
5600   v = 0.2295720444840727e-3;
5601   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5602   a = 0.6711199107088448;
5603   b = 0.9609805077002909e-1;
5604   v = 0.2303227649026753e-3;
5605   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5606   a = 0.6741354429572275;
5607   b = 0.3211853196273233e-1;
5608   v = 0.2304831913227114e-3;
5609   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5610   n = n - 1;
5611 
5612   return;
5613 }
5614 //****************************************************************************80
5615 
5616 void LebedevGrid::ld5294(double *x, double *y, double *z, double *w) const
5617 
5618 //****************************************************************************80
5619 //
5620 //  Purpose:
5621 //
5622 //    LD5294 computes the 5294 point Lebedev angular grid.
5623 //
5624 //  Modified:
5625 //
5626 //    12 September 2010
5627 //
5628 //  Author:
5629 //
5630 //    Dmitri Laikov
5631 //
5632 //  Reference:
5633 //
5634 //    Vyacheslav Lebedev, Dmitri Laikov,
5635 //    A quadrature formula for the sphere of the 131st
5636 //    algebraic order of accuracy,
5637 //    Russian Academy of Sciences Doklady Mathematics,
5638 //    Volume 59, Number 3, 1999, pages 477-481.
5639 //
5640 //  Parameters:
5641 //
5642 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
5643 //    and weights of the points.
5644 //
5645 {
5646   double a = 0.0;
5647   double b = 0.0;
5648   Index n;
5649   double v;
5650 
5651   n = 0;
5652   v = 0.9080510764308163e-4;
5653   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
5654   v = 0.2084824361987793e-3;
5655   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
5656   a = 0.2303261686261450e-1;
5657   v = 0.5011105657239616e-4;
5658   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5659   a = 0.3757208620162394e-1;
5660   v = 0.5942520409683854e-4;
5661   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5662   a = 0.5821912033821852e-1;
5663   v = 0.9564394826109721e-4;
5664   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5665   a = 0.8403127529194872e-1;
5666   v = 0.1185530657126338e-3;
5667   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5668   a = 0.1122927798060578;
5669   v = 0.1364510114230331e-3;
5670   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5671   a = 0.1420125319192987;
5672   v = 0.1505828825605415e-3;
5673   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5674   a = 0.1726396437341978;
5675   v = 0.1619298749867023e-3;
5676   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5677   a = 0.2038170058115696;
5678   v = 0.1712450504267789e-3;
5679   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5680   a = 0.2352849892876508;
5681   v = 0.1789891098164999e-3;
5682   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5683   a = 0.2668363354312461;
5684   v = 0.1854474955629795e-3;
5685   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5686   a = 0.2982941279900452;
5687   v = 0.1908148636673661e-3;
5688   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5689   a = 0.3295002922087076;
5690   v = 0.1952377405281833e-3;
5691   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5692   a = 0.3603094918363593;
5693   v = 0.1988349254282232e-3;
5694   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5695   a = 0.3905857895173920;
5696   v = 0.2017079807160050e-3;
5697   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5698   a = 0.4202005758160837;
5699   v = 0.2039473082709094e-3;
5700   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5701   a = 0.4490310061597227;
5702   v = 0.2056360279288953e-3;
5703   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5704   a = 0.4769586160311491;
5705   v = 0.2068525823066865e-3;
5706   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5707   a = 0.5038679887049750;
5708   v = 0.2076724877534488e-3;
5709   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5710   a = 0.5296454286519961;
5711   v = 0.2081694278237885e-3;
5712   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5713   a = 0.5541776207164850;
5714   v = 0.2084157631219326e-3;
5715   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5716   a = 0.5990467321921213;
5717   v = 0.2084381531128593e-3;
5718   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5719   a = 0.6191467096294587;
5720   v = 0.2083476277129307e-3;
5721   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5722   a = 0.6375251212901849;
5723   v = 0.2082686194459732e-3;
5724   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5725   a = 0.6540514381131168;
5726   v = 0.2082475686112415e-3;
5727   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5728   a = 0.6685899064391510;
5729   v = 0.2083139860289915e-3;
5730   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5731   a = 0.6810013009681648;
5732   v = 0.2084745561831237e-3;
5733   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5734   a = 0.6911469578730340;
5735   v = 0.2087091313375890e-3;
5736   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5737   a = 0.6988956915141736;
5738   v = 0.2089718413297697e-3;
5739   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5740   a = 0.7041335794868720;
5741   v = 0.2092003303479793e-3;
5742   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5743   a = 0.7067754398018567;
5744   v = 0.2093336148263241e-3;
5745   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
5746   a = 0.3840368707853623e-1;
5747   v = 0.7591708117365267e-4;
5748   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5749   a = 0.9835485954117399e-1;
5750   v = 0.1083383968169186e-3;
5751   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5752   a = 0.1665774947612998;
5753   v = 0.1403019395292510e-3;
5754   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5755   a = 0.2405702335362910;
5756   v = 0.1615970179286436e-3;
5757   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5758   a = 0.3165270770189046;
5759   v = 0.1771144187504911e-3;
5760   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5761   a = 0.3927386145645443;
5762   v = 0.1887760022988168e-3;
5763   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5764   a = 0.4678825918374656;
5765   v = 0.1973474670768214e-3;
5766   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5767   a = 0.5408022024266935;
5768   v = 0.2033787661234659e-3;
5769   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5770   a = 0.6104967445752438;
5771   v = 0.2072343626517331e-3;
5772   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5773   a = 0.6760910702685738;
5774   v = 0.2091177834226918e-3;
5775   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
5776   a = 0.6655644120217392e-1;
5777   b = 0.1936508874588424e-1;
5778   v = 0.9316684484675566e-4;
5779   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5780   a = 0.9446246161270182e-1;
5781   b = 0.4252442002115869e-1;
5782   v = 0.1116193688682976e-3;
5783   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5784   a = 0.1242651925452509;
5785   b = 0.6806529315354374e-1;
5786   v = 0.1298623551559414e-3;
5787   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5788   a = 0.1553438064846751;
5789   b = 0.9560957491205369e-1;
5790   v = 0.1450236832456426e-3;
5791   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5792   a = 0.1871137110542670;
5793   b = 0.1245931657452888;
5794   v = 0.1572719958149914e-3;
5795   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5796   a = 0.2192612628836257;
5797   b = 0.1545385828778978;
5798   v = 0.1673234785867195e-3;
5799   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5800   a = 0.2515682807206955;
5801   b = 0.1851004249723368;
5802   v = 0.1756860118725188e-3;
5803   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5804   a = 0.2838535866287290;
5805   b = 0.2160182608272384;
5806   v = 0.1826776290439367e-3;
5807   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5808   a = 0.3159578817528521;
5809   b = 0.2470799012277111;
5810   v = 0.1885116347992865e-3;
5811   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5812   a = 0.3477370882791392;
5813   b = 0.2781014208986402;
5814   v = 0.1933457860170574e-3;
5815   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5816   a = 0.3790576960890540;
5817   b = 0.3089172523515731;
5818   v = 0.1973060671902064e-3;
5819   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5820   a = 0.4097938317810200;
5821   b = 0.3393750055472244;
5822   v = 0.2004987099616311e-3;
5823   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5824   a = 0.4398256572859637;
5825   b = 0.3693322470987730;
5826   v = 0.2030170909281499e-3;
5827   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5828   a = 0.4690384114718480;
5829   b = 0.3986541005609877;
5830   v = 0.2049461460119080e-3;
5831   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5832   a = 0.4973216048301053;
5833   b = 0.4272112491408562;
5834   v = 0.2063653565200186e-3;
5835   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5836   a = 0.5245681526132446;
5837   b = 0.4548781735309936;
5838   v = 0.2073507927381027e-3;
5839   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5840   a = 0.5506733911803888;
5841   b = 0.4815315355023251;
5842   v = 0.2079764593256122e-3;
5843   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5844   a = 0.5755339829522475;
5845   b = 0.5070486445801855;
5846   v = 0.2083150534968778e-3;
5847   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5848   a = 0.1305472386056362;
5849   b = 0.2284970375722366e-1;
5850   v = 0.1262715121590664e-3;
5851   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5852   a = 0.1637327908216477;
5853   b = 0.4812254338288384e-1;
5854   v = 0.1414386128545972e-3;
5855   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5856   a = 0.1972734634149637;
5857   b = 0.7531734457511935e-1;
5858   v = 0.1538740401313898e-3;
5859   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5860   a = 0.2308694653110130;
5861   b = 0.1039043639882017;
5862   v = 0.1642434942331432e-3;
5863   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5864   a = 0.2643899218338160;
5865   b = 0.1334526587117626;
5866   v = 0.1729790609237496e-3;
5867   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5868   a = 0.2977171599622171;
5869   b = 0.1636414868936382;
5870   v = 0.1803505190260828e-3;
5871   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5872   a = 0.3307293903032310;
5873   b = 0.1942195406166568;
5874   v = 0.1865475350079657e-3;
5875   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5876   a = 0.3633069198219073;
5877   b = 0.2249752879943753;
5878   v = 0.1917182669679069e-3;
5879   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5880   a = 0.3953346955922727;
5881   b = 0.2557218821820032;
5882   v = 0.1959851709034382e-3;
5883   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5884   a = 0.4267018394184914;
5885   b = 0.2862897925213193;
5886   v = 0.1994529548117882e-3;
5887   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5888   a = 0.4573009622571704;
5889   b = 0.3165224536636518;
5890   v = 0.2022138911146548e-3;
5891   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5892   a = 0.4870279559856109;
5893   b = 0.3462730221636496;
5894   v = 0.2043518024208592e-3;
5895   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5896   a = 0.5157819581450322;
5897   b = 0.3754016870282835;
5898   v = 0.2059450313018110e-3;
5899   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5900   a = 0.5434651666465393;
5901   b = 0.4037733784993613;
5902   v = 0.2070685715318472e-3;
5903   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5904   a = 0.5699823887764627;
5905   b = 0.4312557784139123;
5906   v = 0.2077955310694373e-3;
5907   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5908   a = 0.5952403350947741;
5909   b = 0.4577175367122110;
5910   v = 0.2081980387824712e-3;
5911   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5912   a = 0.2025152599210369;
5913   b = 0.2520253617719557e-1;
5914   v = 0.1521318610377956e-3;
5915   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5916   a = 0.2381066653274425;
5917   b = 0.5223254506119000e-1;
5918   v = 0.1622772720185755e-3;
5919   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5920   a = 0.2732823383651612;
5921   b = 0.8060669688588620e-1;
5922   v = 0.1710498139420709e-3;
5923   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5924   a = 0.3080137692611118;
5925   b = 0.1099335754081255;
5926   v = 0.1785911149448736e-3;
5927   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5928   a = 0.3422405614587601;
5929   b = 0.1399120955959857;
5930   v = 0.1850125313687736e-3;
5931   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5932   a = 0.3758808773890420;
5933   b = 0.1702977801651705;
5934   v = 0.1904229703933298e-3;
5935   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5936   a = 0.4088458383438932;
5937   b = 0.2008799256601680;
5938   v = 0.1949259956121987e-3;
5939   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5940   a = 0.4410450550841152;
5941   b = 0.2314703052180836;
5942   v = 0.1986161545363960e-3;
5943   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5944   a = 0.4723879420561312;
5945   b = 0.2618972111375892;
5946   v = 0.2015790585641370e-3;
5947   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5948   a = 0.5027843561874343;
5949   b = 0.2920013195600270;
5950   v = 0.2038934198707418e-3;
5951   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5952   a = 0.5321453674452458;
5953   b = 0.3216322555190551;
5954   v = 0.2056334060538251e-3;
5955   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5956   a = 0.5603839113834030;
5957   b = 0.3506456615934198;
5958   v = 0.2068705959462289e-3;
5959   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5960   a = 0.5874150706875146;
5961   b = 0.3789007181306267;
5962   v = 0.2076753906106002e-3;
5963   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5964   a = 0.6131559381660038;
5965   b = 0.4062580170572782;
5966   v = 0.2081179391734803e-3;
5967   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5968   a = 0.2778497016394506;
5969   b = 0.2696271276876226e-1;
5970   v = 0.1700345216228943e-3;
5971   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5972   a = 0.3143733562261912;
5973   b = 0.5523469316960465e-1;
5974   v = 0.1774906779990410e-3;
5975   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5976   a = 0.3501485810261827;
5977   b = 0.8445193201626464e-1;
5978   v = 0.1839659377002642e-3;
5979   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5980   a = 0.3851430322303653;
5981   b = 0.1143263119336083;
5982   v = 0.1894987462975169e-3;
5983   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5984   a = 0.4193013979470415;
5985   b = 0.1446177898344475;
5986   v = 0.1941548809452595e-3;
5987   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5988   a = 0.4525585960458567;
5989   b = 0.1751165438438091;
5990   v = 0.1980078427252384e-3;
5991   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5992   a = 0.4848447779622947;
5993   b = 0.2056338306745660;
5994   v = 0.2011296284744488e-3;
5995   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
5996   a = 0.5160871208276894;
5997   b = 0.2359965487229226;
5998   v = 0.2035888456966776e-3;
5999   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6000   a = 0.5462112185696926;
6001   b = 0.2660430223139146;
6002   v = 0.2054516325352142e-3;
6003   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6004   a = 0.5751425068101757;
6005   b = 0.2956193664498032;
6006   v = 0.2067831033092635e-3;
6007   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6008   a = 0.6028073872853596;
6009   b = 0.3245763905312779;
6010   v = 0.2076485320284876e-3;
6011   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6012   a = 0.6291338275278409;
6013   b = 0.3527670026206972;
6014   v = 0.2081141439525255e-3;
6015   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6016   a = 0.3541797528439391;
6017   b = 0.2823853479435550e-1;
6018   v = 0.1834383015469222e-3;
6019   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6020   a = 0.3908234972074657;
6021   b = 0.5741296374713106e-1;
6022   v = 0.1889540591777677e-3;
6023   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6024   a = 0.4264408450107590;
6025   b = 0.8724646633650199e-1;
6026   v = 0.1936677023597375e-3;
6027   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6028   a = 0.4609949666553286;
6029   b = 0.1175034422915616;
6030   v = 0.1976176495066504e-3;
6031   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6032   a = 0.4944389496536006;
6033   b = 0.1479755652628428;
6034   v = 0.2008536004560983e-3;
6035   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6036   a = 0.5267194884346086;
6037   b = 0.1784740659484352;
6038   v = 0.2034280351712291e-3;
6039   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6040   a = 0.5577787810220990;
6041   b = 0.2088245700431244;
6042   v = 0.2053944466027758e-3;
6043   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6044   a = 0.5875563763536670;
6045   b = 0.2388628136570763;
6046   v = 0.2068077642882360e-3;
6047   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6048   a = 0.6159910016391269;
6049   b = 0.2684308928769185;
6050   v = 0.2077250949661599e-3;
6051   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6052   a = 0.6430219602956268;
6053   b = 0.2973740761960252;
6054   v = 0.2082062440705320e-3;
6055   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6056   a = 0.4300647036213646;
6057   b = 0.2916399920493977e-1;
6058   v = 0.1934374486546626e-3;
6059   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6060   a = 0.4661486308935531;
6061   b = 0.5898803024755659e-1;
6062   v = 0.1974107010484300e-3;
6063   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6064   a = 0.5009658555287261;
6065   b = 0.8924162698525409e-1;
6066   v = 0.2007129290388658e-3;
6067   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6068   a = 0.5344824270447704;
6069   b = 0.1197185199637321;
6070   v = 0.2033736947471293e-3;
6071   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6072   a = 0.5666575997416371;
6073   b = 0.1502300756161382;
6074   v = 0.2054287125902493e-3;
6075   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6076   a = 0.5974457471404752;
6077   b = 0.1806004191913564;
6078   v = 0.2069184936818894e-3;
6079   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6080   a = 0.6267984444116886;
6081   b = 0.2106621764786252;
6082   v = 0.2078883689808782e-3;
6083   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6084   a = 0.6546664713575417;
6085   b = 0.2402526932671914;
6086   v = 0.2083886366116359e-3;
6087   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6088   a = 0.5042711004437253;
6089   b = 0.2982529203607657e-1;
6090   v = 0.2006593275470817e-3;
6091   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6092   a = 0.5392127456774380;
6093   b = 0.6008728062339922e-1;
6094   v = 0.2033728426135397e-3;
6095   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6096   a = 0.5726819437668618;
6097   b = 0.9058227674571398e-1;
6098   v = 0.2055008781377608e-3;
6099   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6100   a = 0.6046469254207278;
6101   b = 0.1211219235803400;
6102   v = 0.2070651783518502e-3;
6103   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6104   a = 0.6350716157434952;
6105   b = 0.1515286404791580;
6106   v = 0.2080953335094320e-3;
6107   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6108   a = 0.6639177679185454;
6109   b = 0.1816314681255552;
6110   v = 0.2086284998988521e-3;
6111   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6112   a = 0.5757276040972253;
6113   b = 0.3026991752575440e-1;
6114   v = 0.2055549387644668e-3;
6115   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6116   a = 0.6090265823139755;
6117   b = 0.6078402297870770e-1;
6118   v = 0.2071871850267654e-3;
6119   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6120   a = 0.6406735344387661;
6121   b = 0.9135459984176636e-1;
6122   v = 0.2082856600431965e-3;
6123   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6124   a = 0.6706397927793709;
6125   b = 0.1218024155966590;
6126   v = 0.2088705858819358e-3;
6127   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6128   a = 0.6435019674426665;
6129   b = 0.3052608357660639e-1;
6130   v = 0.2083995867536322e-3;
6131   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6132   a = 0.6747218676375681;
6133   b = 0.6112185773983089e-1;
6134   v = 0.2090509712889637e-3;
6135   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6136   n = n - 1;
6137 
6138   return;
6139 }
6140 //****************************************************************************80
6141 
6142 void LebedevGrid::ld5810(double *x, double *y, double *z, double *w) const
6143 
6144 //****************************************************************************80
6145 //
6146 //  Purpose:
6147 //
6148 //    LD5810 computes the 5810 point Lebedev angular grid.
6149 //
6150 //  Modified:
6151 //
6152 //    12 September 2010
6153 //
6154 //  Author:
6155 //
6156 //    Dmitri Laikov
6157 //
6158 //  Reference:
6159 //
6160 //    Vyacheslav Lebedev, Dmitri Laikov,
6161 //    A quadrature formula for the sphere of the 131st
6162 //    algebraic order of accuracy,
6163 //    Russian Academy of Sciences Doklady Mathematics,
6164 //    Volume 59, Number 3, 1999, pages 477-481.
6165 //
6166 //  Parameters:
6167 //
6168 //    Output, double X[N], Y[N], Z[N], W[N], the coordinates
6169 //    and weights of the points.
6170 //
6171 {
6172   double a = 0.0;
6173   double b = 0.0;
6174   Index n;
6175   double v;
6176 
6177   n = 0;
6178   v = 0.9735347946175486e-5;
6179   n = n + gen_oh(1, a, b, v, x + n, y + n, z + n, w + n);
6180   v = 0.1907581241803167e-3;
6181   n = n + gen_oh(2, a, b, v, x + n, y + n, z + n, w + n);
6182   v = 0.1901059546737578e-3;
6183   n = n + gen_oh(3, a, b, v, x + n, y + n, z + n, w + n);
6184   a = 0.1182361662400277e-1;
6185   v = 0.3926424538919212e-4;
6186   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6187   a = 0.3062145009138958e-1;
6188   v = 0.6667905467294382e-4;
6189   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6190   a = 0.5329794036834243e-1;
6191   v = 0.8868891315019135e-4;
6192   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6193   a = 0.7848165532862220e-1;
6194   v = 0.1066306000958872e-3;
6195   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6196   a = 0.1054038157636201;
6197   v = 0.1214506743336128e-3;
6198   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6199   a = 0.1335577797766211;
6200   v = 0.1338054681640871e-3;
6201   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6202   a = 0.1625769955502252;
6203   v = 0.1441677023628504e-3;
6204   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6205   a = 0.1921787193412792;
6206   v = 0.1528880200826557e-3;
6207   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6208   a = 0.2221340534690548;
6209   v = 0.1602330623773609e-3;
6210   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6211   a = 0.2522504912791132;
6212   v = 0.1664102653445244e-3;
6213   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6214   a = 0.2823610860679697;
6215   v = 0.1715845854011323e-3;
6216   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6217   a = 0.3123173966267560;
6218   v = 0.1758901000133069e-3;
6219   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6220   a = 0.3419847036953789;
6221   v = 0.1794382485256736e-3;
6222   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6223   a = 0.3712386456999758;
6224   v = 0.1823238106757407e-3;
6225   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6226   a = 0.3999627649876828;
6227   v = 0.1846293252959976e-3;
6228   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6229   a = 0.4280466458648093;
6230   v = 0.1864284079323098e-3;
6231   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6232   a = 0.4553844360185711;
6233   v = 0.1877882694626914e-3;
6234   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6235   a = 0.4818736094437834;
6236   v = 0.1887716321852025e-3;
6237   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6238   a = 0.5074138709260629;
6239   v = 0.1894381638175673e-3;
6240   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6241   a = 0.5319061304570707;
6242   v = 0.1898454899533629e-3;
6243   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6244   a = 0.5552514978677286;
6245   v = 0.1900497929577815e-3;
6246   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6247   a = 0.5981009025246183;
6248   v = 0.1900671501924092e-3;
6249   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6250   a = 0.6173990192228116;
6251   v = 0.1899837555533510e-3;
6252   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6253   a = 0.6351365239411131;
6254   v = 0.1899014113156229e-3;
6255   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6256   a = 0.6512010228227200;
6257   v = 0.1898581257705106e-3;
6258   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6259   a = 0.6654758363948120;
6260   v = 0.1898804756095753e-3;
6261   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6262   a = 0.6778410414853370;
6263   v = 0.1899793610426402e-3;
6264   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6265   a = 0.6881760887484110;
6266   v = 0.1901464554844117e-3;
6267   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6268   a = 0.6963645267094598;
6269   v = 0.1903533246259542e-3;
6270   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6271   a = 0.7023010617153579;
6272   v = 0.1905556158463228e-3;
6273   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6274   a = 0.7059004636628753;
6275   v = 0.1907037155663528e-3;
6276   n = n + gen_oh(4, a, b, v, x + n, y + n, z + n, w + n);
6277   a = 0.3552470312472575e-1;
6278   v = 0.5992997844249967e-4;
6279   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6280   a = 0.9151176620841283e-1;
6281   v = 0.9749059382456978e-4;
6282   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6283   a = 0.1566197930068980;
6284   v = 0.1241680804599158e-3;
6285   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6286   a = 0.2265467599271907;
6287   v = 0.1437626154299360e-3;
6288   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6289   a = 0.2988242318581361;
6290   v = 0.1584200054793902e-3;
6291   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6292   a = 0.3717482419703886;
6293   v = 0.1694436550982744e-3;
6294   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6295   a = 0.4440094491758889;
6296   v = 0.1776617014018108e-3;
6297   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6298   a = 0.5145337096756642;
6299   v = 0.1836132434440077e-3;
6300   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6301   a = 0.5824053672860230;
6302   v = 0.1876494727075983e-3;
6303   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6304   a = 0.6468283961043370;
6305   v = 0.1899906535336482e-3;
6306   n = n + gen_oh(5, a, b, v, x + n, y + n, z + n, w + n);
6307   a = 0.6095964259104373e-1;
6308   b = 0.1787828275342931e-1;
6309   v = 0.8143252820767350e-4;
6310   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6311   a = 0.8811962270959388e-1;
6312   b = 0.3953888740792096e-1;
6313   v = 0.9998859890887728e-4;
6314   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6315   a = 0.1165936722428831;
6316   b = 0.6378121797722990e-1;
6317   v = 0.1156199403068359e-3;
6318   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6319   a = 0.1460232857031785;
6320   b = 0.8985890813745037e-1;
6321   v = 0.1287632092635513e-3;
6322   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6323   a = 0.1761197110181755;
6324   b = 0.1172606510576162;
6325   v = 0.1398378643365139e-3;
6326   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6327   a = 0.2066471190463718;
6328   b = 0.1456102876970995;
6329   v = 0.1491876468417391e-3;
6330   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6331   a = 0.2374076026328152;
6332   b = 0.1746153823011775;
6333   v = 0.1570855679175456e-3;
6334   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6335   a = 0.2682305474337051;
6336   b = 0.2040383070295584;
6337   v = 0.1637483948103775e-3;
6338   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6339   a = 0.2989653312142369;
6340   b = 0.2336788634003698;
6341   v = 0.1693500566632843e-3;
6342   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6343   a = 0.3294762752772209;
6344   b = 0.2633632752654219;
6345   v = 0.1740322769393633e-3;
6346   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6347   a = 0.3596390887276086;
6348   b = 0.2929369098051601;
6349   v = 0.1779126637278296e-3;
6350   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6351   a = 0.3893383046398812;
6352   b = 0.3222592785275512;
6353   v = 0.1810908108835412e-3;
6354   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6355   a = 0.4184653789358347;
6356   b = 0.3512004791195743;
6357   v = 0.1836529132600190e-3;
6358   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6359   a = 0.4469172319076166;
6360   b = 0.3796385677684537;
6361   v = 0.1856752841777379e-3;
6362   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6363   a = 0.4745950813276976;
6364   b = 0.4074575378263879;
6365   v = 0.1872270566606832e-3;
6366   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6367   a = 0.5014034601410262;
6368   b = 0.4345456906027828;
6369   v = 0.1883722645591307e-3;
6370   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6371   a = 0.5272493404551239;
6372   b = 0.4607942515205134;
6373   v = 0.1891714324525297e-3;
6374   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6375   a = 0.5520413051846366;
6376   b = 0.4860961284181720;
6377   v = 0.1896827480450146e-3;
6378   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6379   a = 0.5756887237503077;
6380   b = 0.5103447395342790;
6381   v = 0.1899628417059528e-3;
6382   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6383   a = 0.1225039430588352;
6384   b = 0.2136455922655793e-1;
6385   v = 0.1123301829001669e-3;
6386   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6387   a = 0.1539113217321372;
6388   b = 0.4520926166137188e-1;
6389   v = 0.1253698826711277e-3;
6390   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6391   a = 0.1856213098637712;
6392   b = 0.7086468177864818e-1;
6393   v = 0.1366266117678531e-3;
6394   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6395   a = 0.2174998728035131;
6396   b = 0.9785239488772918e-1;
6397   v = 0.1462736856106918e-3;
6398   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6399   a = 0.2494128336938330;
6400   b = 0.1258106396267210;
6401   v = 0.1545076466685412e-3;
6402   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6403   a = 0.2812321562143480;
6404   b = 0.1544529125047001;
6405   v = 0.1615096280814007e-3;
6406   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6407   a = 0.3128372276456111;
6408   b = 0.1835433512202753;
6409   v = 0.1674366639741759e-3;
6410   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6411   a = 0.3441145160177973;
6412   b = 0.2128813258619585;
6413   v = 0.1724225002437900e-3;
6414   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6415   a = 0.3749567714853510;
6416   b = 0.2422913734880829;
6417   v = 0.1765810822987288e-3;
6418   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6419   a = 0.4052621732015610;
6420   b = 0.2716163748391453;
6421   v = 0.1800104126010751e-3;
6422   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6423   a = 0.4349335453522385;
6424   b = 0.3007127671240280;
6425   v = 0.1827960437331284e-3;
6426   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6427   a = 0.4638776641524965;
6428   b = 0.3294470677216479;
6429   v = 0.1850140300716308e-3;
6430   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6431   a = 0.4920046410462687;
6432   b = 0.3576932543699155;
6433   v = 0.1867333507394938e-3;
6434   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6435   a = 0.5192273554861704;
6436   b = 0.3853307059757764;
6437   v = 0.1880178688638289e-3;
6438   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6439   a = 0.5454609081136522;
6440   b = 0.4122425044452694;
6441   v = 0.1889278925654758e-3;
6442   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6443   a = 0.5706220661424140;
6444   b = 0.4383139587781027;
6445   v = 0.1895213832507346e-3;
6446   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6447   a = 0.5946286755181518;
6448   b = 0.4634312536300553;
6449   v = 0.1898548277397420e-3;
6450   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6451   a = 0.1905370790924295;
6452   b = 0.2371311537781979e-1;
6453   v = 0.1349105935937341e-3;
6454   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6455   a = 0.2242518717748009;
6456   b = 0.4917878059254806e-1;
6457   v = 0.1444060068369326e-3;
6458   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6459   a = 0.2577190808025936;
6460   b = 0.7595498960495142e-1;
6461   v = 0.1526797390930008e-3;
6462   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6463   a = 0.2908724534927187;
6464   b = 0.1036991083191100;
6465   v = 0.1598208771406474e-3;
6466   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6467   a = 0.3236354020056219;
6468   b = 0.1321348584450234;
6469   v = 0.1659354368615331e-3;
6470   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6471   a = 0.3559267359304543;
6472   b = 0.1610316571314789;
6473   v = 0.1711279910946440e-3;
6474   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6475   a = 0.3876637123676956;
6476   b = 0.1901912080395707;
6477   v = 0.1754952725601440e-3;
6478   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6479   a = 0.4187636705218842;
6480   b = 0.2194384950137950;
6481   v = 0.1791247850802529e-3;
6482   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6483   a = 0.4491449019883107;
6484   b = 0.2486155334763858;
6485   v = 0.1820954300877716e-3;
6486   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6487   a = 0.4787270932425445;
6488   b = 0.2775768931812335;
6489   v = 0.1844788524548449e-3;
6490   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6491   a = 0.5074315153055574;
6492   b = 0.3061863786591120;
6493   v = 0.1863409481706220e-3;
6494   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6495   a = 0.5351810507738336;
6496   b = 0.3343144718152556;
6497   v = 0.1877433008795068e-3;
6498   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6499   a = 0.5619001025975381;
6500   b = 0.3618362729028427;
6501   v = 0.1887444543705232e-3;
6502   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6503   a = 0.5875144035268046;
6504   b = 0.3886297583620408;
6505   v = 0.1894009829375006e-3;
6506   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6507   a = 0.6119507308734495;
6508   b = 0.4145742277792031;
6509   v = 0.1897683345035198e-3;
6510   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6511   a = 0.2619733870119463;
6512   b = 0.2540047186389353e-1;
6513   v = 0.1517327037467653e-3;
6514   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6515   a = 0.2968149743237949;
6516   b = 0.5208107018543989e-1;
6517   v = 0.1587740557483543e-3;
6518   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6519   a = 0.3310451504860488;
6520   b = 0.7971828470885599e-1;
6521   v = 0.1649093382274097e-3;
6522   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6523   a = 0.3646215567376676;
6524   b = 0.1080465999177927;
6525   v = 0.1701915216193265e-3;
6526   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6527   a = 0.3974916785279360;
6528   b = 0.1368413849366629;
6529   v = 0.1746847753144065e-3;
6530   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6531   a = 0.4295967403772029;
6532   b = 0.1659073184763559;
6533   v = 0.1784555512007570e-3;
6534   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6535   a = 0.4608742854473447;
6536   b = 0.1950703730454614;
6537   v = 0.1815687562112174e-3;
6538   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6539   a = 0.4912598858949903;
6540   b = 0.2241721144376724;
6541   v = 0.1840864370663302e-3;
6542   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6543   a = 0.5206882758945558;
6544   b = 0.2530655255406489;
6545   v = 0.1860676785390006e-3;
6546   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6547   a = 0.5490940914019819;
6548   b = 0.2816118409731066;
6549   v = 0.1875690583743703e-3;
6550   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6551   a = 0.5764123302025542;
6552   b = 0.3096780504593238;
6553   v = 0.1886453236347225e-3;
6554   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6555   a = 0.6025786004213506;
6556   b = 0.3371348366394987;
6557   v = 0.1893501123329645e-3;
6558   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6559   a = 0.6275291964794956;
6560   b = 0.3638547827694396;
6561   v = 0.1897366184519868e-3;
6562   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6563   a = 0.3348189479861771;
6564   b = 0.2664841935537443e-1;
6565   v = 0.1643908815152736e-3;
6566   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6567   a = 0.3699515545855295;
6568   b = 0.5424000066843495e-1;
6569   v = 0.1696300350907768e-3;
6570   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6571   a = 0.4042003071474669;
6572   b = 0.8251992715430854e-1;
6573   v = 0.1741553103844483e-3;
6574   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6575   a = 0.4375320100182624;
6576   b = 0.1112695182483710;
6577   v = 0.1780015282386092e-3;
6578   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6579   a = 0.4699054490335947;
6580   b = 0.1402964116467816;
6581   v = 0.1812116787077125e-3;
6582   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6583   a = 0.5012739879431952;
6584   b = 0.1694275117584291;
6585   v = 0.1838323158085421e-3;
6586   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6587   a = 0.5315874883754966;
6588   b = 0.1985038235312689;
6589   v = 0.1859113119837737e-3;
6590   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6591   a = 0.5607937109622117;
6592   b = 0.2273765660020893;
6593   v = 0.1874969220221698e-3;
6594   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6595   a = 0.5888393223495521;
6596   b = 0.2559041492849764;
6597   v = 0.1886375612681076e-3;
6598   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6599   a = 0.6156705979160163;
6600   b = 0.2839497251976899;
6601   v = 0.1893819575809276e-3;
6602   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6603   a = 0.6412338809078123;
6604   b = 0.3113791060500690;
6605   v = 0.1897794748256767e-3;
6606   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6607   a = 0.4076051259257167;
6608   b = 0.2757792290858463e-1;
6609   v = 0.1738963926584846e-3;
6610   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6611   a = 0.4423788125791520;
6612   b = 0.5584136834984293e-1;
6613   v = 0.1777442359873466e-3;
6614   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6615   a = 0.4760480917328258;
6616   b = 0.8457772087727143e-1;
6617   v = 0.1810010815068719e-3;
6618   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6619   a = 0.5085838725946297;
6620   b = 0.1135975846359248;
6621   v = 0.1836920318248129e-3;
6622   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6623   a = 0.5399513637391218;
6624   b = 0.1427286904765053;
6625   v = 0.1858489473214328e-3;
6626   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6627   a = 0.5701118433636380;
6628   b = 0.1718112740057635;
6629   v = 0.1875079342496592e-3;
6630   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6631   a = 0.5990240530606021;
6632   b = 0.2006944855985351;
6633   v = 0.1887080239102310e-3;
6634   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6635   a = 0.6266452685139695;
6636   b = 0.2292335090598907;
6637   v = 0.1894905752176822e-3;
6638   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6639   a = 0.6529320971415942;
6640   b = 0.2572871512353714;
6641   v = 0.1898991061200695e-3;
6642   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6643   a = 0.4791583834610126;
6644   b = 0.2826094197735932e-1;
6645   v = 0.1809065016458791e-3;
6646   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6647   a = 0.5130373952796940;
6648   b = 0.5699871359683649e-1;
6649   v = 0.1836297121596799e-3;
6650   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6651   a = 0.5456252429628476;
6652   b = 0.8602712528554394e-1;
6653   v = 0.1858426916241869e-3;
6654   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6655   a = 0.5768956329682385;
6656   b = 0.1151748137221281;
6657   v = 0.1875654101134641e-3;
6658   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6659   a = 0.6068186944699046;
6660   b = 0.1442811654136362;
6661   v = 0.1888240751833503e-3;
6662   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6663   a = 0.6353622248024907;
6664   b = 0.1731930321657680;
6665   v = 0.1896497383866979e-3;
6666   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6667   a = 0.6624927035731797;
6668   b = 0.2017619958756061;
6669   v = 0.1900775530219121e-3;
6670   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6671   a = 0.5484933508028488;
6672   b = 0.2874219755907391e-1;
6673   v = 0.1858525041478814e-3;
6674   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6675   a = 0.5810207682142106;
6676   b = 0.5778312123713695e-1;
6677   v = 0.1876248690077947e-3;
6678   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6679   a = 0.6120955197181352;
6680   b = 0.8695262371439526e-1;
6681   v = 0.1889404439064607e-3;
6682   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6683   a = 0.6416944284294319;
6684   b = 0.1160893767057166;
6685   v = 0.1898168539265290e-3;
6686   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6687   a = 0.6697926391731260;
6688   b = 0.1450378826743251;
6689   v = 0.1902779940661772e-3;
6690   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6691   a = 0.6147594390585488;
6692   b = 0.2904957622341456e-1;
6693   v = 0.1890125641731815e-3;
6694   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6695   a = 0.6455390026356783;
6696   b = 0.5823809152617197e-1;
6697   v = 0.1899434637795751e-3;
6698   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6699   a = 0.6747258588365477;
6700   b = 0.8740384899884715e-1;
6701   v = 0.1904520856831751e-3;
6702   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6703   a = 0.6772135750395347;
6704   b = 0.2919946135808105e-1;
6705   v = 0.1905534498734563e-3;
6706   n = n + gen_oh(6, a, b, v, x + n, y + n, z + n, w + n);
6707   n = n - 1;
6708 
6709   return;
6710 }
6711 //****************************************************************************80
6712 
6713 Index LebedevGrid::order_table(Index rule) const
6714 
6715 //****************************************************************************80
6716 //
6717 //  Purpose:
6718 //
6719 //    ORDER_TABLE returns the order of a Lebedev rule.
6720 //
6721 //  Modified:
6722 //
6723 //    11 September 2010
6724 //
6725 //  Author:
6726 //
6727 //    John Burkardt
6728 //
6729 //  Reference:
6730 //
6731 //    Vyacheslav Lebedev, Dmitri Laikov,
6732 //    A quadrature formula for the sphere of the 131st
6733 //    algebraic order of accuracy,
6734 //    Russian Academy of Sciences Doklady Mathematics,
6735 //    Volume 59, Number 3, 1999, pages 477-481.
6736 //
6737 //  Parameters:
6738 //
6739 //    Input, Index RULE, the index of the rule, between 1 and 65.
6740 //
6741 //    Output, Index ORDER_TABLE, the order of the rule.
6742 //
6743 {
6744   Index rule_max = 65;
6745   Index table[65] = {6,    14,   26,   38,   50,   74,   86,   110,  146,  170,
6746                      194,  230,  266,  302,  350,  386,  434,  482,  530,  590,
6747                      650,  698,  770,  830,  890,  974,  1046, 1118, 1202, 1274,
6748                      1358, 1454, 1538, 1622, 1730, 1814, 1910, 2030, 2126, 2222,
6749                      2354, 2450, 2558, 2702, 2810, 2930, 3074, 3182, 3314, 3470,
6750                      3590, 3722, 3890, 4010, 4154, 4334, 4466, 4610, 4802, 4934,
6751                      5090, 5294, 5438, 5606, 5810};
6752   Index value;
6753 
6754   if (rule < 1) {
6755     throw std::runtime_error("ORDER_TABLE - Fatal error!\n RULE < 1.\n");
6756 
6757   } else if (rule_max < rule) {
6758     throw std::runtime_error("ORDER_TABLE - Fatal error!\n RULE_MAX < RULE.\n");
6759   }
6760 
6761   value = table[rule - 1];
6762 
6763   return value;
6764 }
6765 //****************************************************************************80
6766 
6767 Index LebedevGrid::precision_table(Index rule) const
6768 
6769 //****************************************************************************80
6770 //
6771 //  Purpose:
6772 //
6773 //    PRECISION_TABLE returns the precision of a Lebedev rule.
6774 //
6775 //  Modified:
6776 //
6777 //    11 September 2010
6778 //
6779 //  Author:
6780 //
6781 //    John Burkardt
6782 //
6783 //  Reference:
6784 //
6785 //    Vyacheslav Lebedev, Dmitri Laikov,
6786 //    A quadrature formula for the sphere of the 131st
6787 //    algebraic order of accuracy,
6788 //    Russian Academy of Sciences Doklady Mathematics,
6789 //    Volume 59, Number 3, 1999, pages 477-481.
6790 //
6791 //  Parameters:
6792 //
6793 //    Input, Index RULE, the index of the rule, between 1 and 65.
6794 //
6795 //    Output, Index PRECISION_TABLE, the precision of the rule.
6796 //
6797 {
6798   Index rule_max = 65;
6799   Index table[65] = {3,   5,   7,   9,   11,  13,  15,  17,  19,  21,  23,
6800                      25,  27,  29,  31,  33,  35,  37,  39,  41,  43,  45,
6801                      47,  49,  51,  53,  55,  57,  59,  61,  63,  65,  67,
6802                      69,  71,  73,  75,  77,  79,  81,  83,  85,  87,  89,
6803                      91,  93,  95,  97,  99,  101, 103, 105, 107, 109, 111,
6804                      113, 115, 117, 119, 121, 123, 125, 127, 129, 131};
6805   Index value;
6806 
6807   if (rule < 1) {
6808     throw std::runtime_error("PRECISION_TABLE - Fatal error!\n RULE < 1.\n");
6809   } else if (rule_max < rule) {
6810     throw std::runtime_error(
6811         "PRECISION_TABLE - Fatal error!\n RULE_MAX < RULE.\n");
6812   }
6813 
6814   value = table[rule - 1];
6815 
6816   return value;
6817 }
6818 
6819 Eigen::Vector2d LebedevGrid::Cartesian2SphericalAngle(
6820     const Eigen::Vector3d &r) const {
6821   // phi=Vector[0] theta=Vector[1]
6822   Eigen::Vector2d result;
6823   result[0] = std::acos(r(2));
6824   result[1] = std::atan2(r(1), r(0));
6825   return result;
6826 }
6827 
6828 void LebedevGrid::FillOrder2Index() {
6829   Order2Index[38] = 1;
6830   Order2Index[50] = 2;
6831   Order2Index[74] = 3;
6832   Order2Index[86] = 4;
6833   Order2Index[110] = 5;
6834   Order2Index[146] = 6;
6835   Order2Index[170] = 7;
6836   Order2Index[194] = 8;
6837   Order2Index[230] = 9;
6838   Order2Index[266] = 10;
6839   Order2Index[302] = 11;
6840   Order2Index[350] = 12;
6841   Order2Index[434] = 13;
6842   Order2Index[590] = 14;
6843   Order2Index[770] = 15;
6844   Order2Index[974] = 16;
6845   Order2Index[1202] = 17;
6846   Order2Index[1454] = 18;
6847   Order2Index[1730] = 19;
6848   Order2Index[2030] = 20;
6849   Order2Index[2354] = 21;
6850   Order2Index[2702] = 22;
6851   Order2Index[3074] = 23;
6852   Order2Index[3470] = 24;
6853   Order2Index[3890] = 25;
6854   Order2Index[4334] = 26;
6855   Order2Index[4802] = 27;
6856   Order2Index[5294] = 28;
6857   Order2Index[5810] = 29;
6858 }
6859 
6860 void LebedevGrid::FillIndex2Order() {
6861   Index2Order[1] = 38;
6862   Index2Order[2] = 50;
6863   Index2Order[3] = 74;
6864   Index2Order[4] = 86;
6865   Index2Order[5] = 110;
6866   Index2Order[6] = 146;
6867   Index2Order[7] = 170;
6868   Index2Order[8] = 194;
6869   Index2Order[9] = 230;
6870   Index2Order[10] = 266;
6871   Index2Order[11] = 302;
6872   Index2Order[12] = 350;
6873   Index2Order[13] = 434;
6874   Index2Order[14] = 590;
6875   Index2Order[15] = 770;
6876   Index2Order[16] = 974;
6877   Index2Order[17] = 1202;
6878   Index2Order[18] = 1454;
6879   Index2Order[19] = 1730;
6880   Index2Order[20] = 2030;
6881   Index2Order[21] = 2354;
6882   Index2Order[22] = 2702;
6883   Index2Order[23] = 3074;
6884   Index2Order[24] = 3470;
6885   Index2Order[25] = 3890;
6886   Index2Order[26] = 4334;
6887   Index2Order[27] = 4802;
6888   Index2Order[28] = 5294;
6889   Index2Order[29] = 5810;
6890 }
6891 
6892 void LebedevGrid::FillOrders() {
6893   FillMediumOrder();
6894   FillCoarseOrder();
6895   FillXcoarseOrder();
6896   FillFineOrder();
6897   FillXfineOrder();
6898 }
6899 
6900 void LebedevGrid::FillMediumOrder() {
6901   // order for H, He (not given in NWChem, assuming same as 1st row)
6902   MediumOrder["H"] = 434;
6903   MediumOrder["He"] = 434;
6904 
6905   // orders for 1st row elements taken from NWChem
6906   MediumOrder["Li"] = 434;
6907   MediumOrder["Be"] = 434;
6908   MediumOrder["B"] = 434;
6909   MediumOrder["C"] = 434;
6910   MediumOrder["N"] = 434;
6911   MediumOrder["O"] = 434;
6912   MediumOrder["F"] = 434;
6913   MediumOrder["Ne"] = 434;
6914 
6915   // orders for 2nd row elements taken from NWChem
6916   MediumOrder["Na"] = 434;
6917   MediumOrder["Mg"] = 434;
6918   MediumOrder["Al"] = 434;
6919   MediumOrder["Si"] = 434;
6920   MediumOrder["P"] = 434;
6921   MediumOrder["S"] = 434;
6922   MediumOrder["Cl"] = 434;
6923   MediumOrder["Ar"] = 434;
6924 
6925   // orders for 3rd row elements taken from NWChem
6926   MediumOrder["K"] = 590;
6927   MediumOrder["Ca"] = 590;
6928   MediumOrder["Sc"] = 590;
6929   MediumOrder["Ti"] = 590;
6930   MediumOrder["V"] = 590;
6931   MediumOrder["Cr"] = 590;
6932   MediumOrder["Mn"] = 590;
6933   MediumOrder["Fe"] = 590;
6934   MediumOrder["Co"] = 590;
6935   MediumOrder["Ni"] = 590;
6936   MediumOrder["Cu"] = 590;
6937   MediumOrder["Zn"] = 590;
6938   MediumOrder["Ga"] = 590;
6939   MediumOrder["Ge"] = 590;
6940   MediumOrder["As"] = 590;
6941   MediumOrder["Se"] = 590;
6942   MediumOrder["Br"] = 590;
6943   MediumOrder["Kr"] = 590;
6944 
6945   // 4th row (selection)
6946   MediumOrder["Ag"] = 590;
6947   MediumOrder["Rb"] = 590;
6948   MediumOrder["I"] = 590;
6949   MediumOrder["Xe"] = 590;
6950 }
6951 
6952 void LebedevGrid::FillFineOrder() {
6953   // order for H, He (not given in NWChem, assuming same as 1st row)
6954   FineOrder["H"] = 590;
6955   FineOrder["He"] = 590;
6956 
6957   // orders for 1st row elements taken from NWChem
6958   FineOrder["Li"] = 590;
6959   FineOrder["Be"] = 590;
6960   FineOrder["B"] = 590;
6961   FineOrder["C"] = 590;
6962   FineOrder["N"] = 590;
6963   FineOrder["O"] = 590;
6964   FineOrder["F"] = 590;
6965   FineOrder["Ne"] = 590;
6966 
6967   // orders for 2nd row elements taken from NWChem
6968   FineOrder["Na"] = 770;
6969   FineOrder["Mg"] = 770;
6970   FineOrder["Al"] = 770;
6971   FineOrder["Si"] = 770;
6972   FineOrder["P"] = 770;
6973   FineOrder["S"] = 770;
6974   FineOrder["Cl"] = 770;
6975   FineOrder["Ar"] = 770;
6976 
6977   // orders for 3rd row elements taken from NWChem
6978   FineOrder["K"] = 974;
6979   FineOrder["Ca"] = 974;
6980   FineOrder["Sc"] = 974;
6981   FineOrder["Ti"] = 974;
6982   FineOrder["V"] = 974;
6983   FineOrder["Cr"] = 974;
6984   FineOrder["Mn"] = 974;
6985   FineOrder["Fe"] = 974;
6986   FineOrder["Co"] = 974;
6987   FineOrder["Ni"] = 974;
6988   FineOrder["Cu"] = 974;
6989   FineOrder["Zn"] = 974;
6990   FineOrder["Ga"] = 974;
6991   FineOrder["Ge"] = 974;
6992   FineOrder["As"] = 974;
6993   FineOrder["Se"] = 974;
6994   FineOrder["Br"] = 974;
6995   FineOrder["Kr"] = 974;
6996 
6997   // 4th row
6998   FineOrder["Ag"] = 974;
6999   FineOrder["Rb"] = 974;
7000   FineOrder["I"] = 974;
7001   FineOrder["Xe"] = 974;
7002 }
7003 void LebedevGrid::FillXfineOrder() {
7004   // order for H, He (not given in NWChem, assuming same as 1st row)
7005   XfineOrder["H"] = 1202;
7006   XfineOrder["He"] = 1202;
7007 
7008   // orders for 1st row elements taken from NWChem
7009   XfineOrder["Li"] = 1202;
7010   XfineOrder["Be"] = 1202;
7011   XfineOrder["B"] = 1202;
7012   XfineOrder["C"] = 1202;
7013   XfineOrder["N"] = 1202;
7014   XfineOrder["O"] = 1202;
7015   XfineOrder["F"] = 1202;
7016   XfineOrder["Ne"] = 1202;
7017 
7018   // orders for 2nd row elements taken from NWChem
7019   XfineOrder["Na"] = 1454;
7020   XfineOrder["Mg"] = 1454;
7021   XfineOrder["Al"] = 1454;
7022   XfineOrder["Si"] = 1454;
7023   XfineOrder["P"] = 1454;
7024   XfineOrder["S"] = 1454;
7025   XfineOrder["Cl"] = 1454;
7026   XfineOrder["Ar"] = 1454;
7027 
7028   // orders for 3rd row elements taken from NWChem
7029   XfineOrder["K"] = 1454;
7030   XfineOrder["Ca"] = 1454;
7031   XfineOrder["Sc"] = 1454;
7032   XfineOrder["Ti"] = 1454;
7033   XfineOrder["V"] = 1454;
7034   XfineOrder["Cr"] = 1454;
7035   XfineOrder["Mn"] = 1454;
7036   XfineOrder["Fe"] = 1454;
7037   XfineOrder["Co"] = 1454;
7038   XfineOrder["Ni"] = 1454;
7039   XfineOrder["Cu"] = 1454;
7040   XfineOrder["Zn"] = 1454;
7041   XfineOrder["Ga"] = 1454;
7042   XfineOrder["Ge"] = 1454;
7043   XfineOrder["As"] = 1454;
7044   XfineOrder["Se"] = 1454;
7045   XfineOrder["Br"] = 1454;
7046   XfineOrder["Kr"] = 1454;
7047 
7048   // 4th row
7049   XfineOrder["Ag"] = 1454;
7050   XfineOrder["Rb"] = 1454;
7051   XfineOrder["I"] = 1454;
7052   XfineOrder["Xe"] = 1454;
7053 }
7054 
7055 void LebedevGrid::FillCoarseOrder() {
7056   // order for H, He (not given in NWChem, assuming same as 1st row)
7057   CoarseOrder["H"] = 302;
7058   CoarseOrder["He"] = 302;
7059 
7060   // orders for 1st row elements taken from NWChem
7061   CoarseOrder["Li"] = 302;
7062   CoarseOrder["Be"] = 302;
7063   CoarseOrder["B"] = 302;
7064   CoarseOrder["C"] = 302;
7065   CoarseOrder["N"] = 302;
7066   CoarseOrder["O"] = 302;
7067   CoarseOrder["F"] = 302;
7068   CoarseOrder["Ne"] = 302;
7069 
7070   // orders for 2nd row elements taken from NWChem
7071   CoarseOrder["Na"] = 302;
7072   CoarseOrder["Mg"] = 302;
7073   CoarseOrder["Al"] = 302;
7074   CoarseOrder["Si"] = 302;
7075   CoarseOrder["P"] = 302;
7076   CoarseOrder["S"] = 302;
7077   CoarseOrder["Cl"] = 302;
7078   CoarseOrder["Ar"] = 302;
7079 
7080   // orders for 3rd row elements taken from NWChem
7081   CoarseOrder["K"] = 302;
7082   CoarseOrder["Ca"] = 302;
7083   CoarseOrder["Sc"] = 302;
7084   CoarseOrder["Ti"] = 302;
7085   CoarseOrder["V"] = 302;
7086   CoarseOrder["Cr"] = 302;
7087   CoarseOrder["Mn"] = 302;
7088   CoarseOrder["Fe"] = 302;
7089   CoarseOrder["Co"] = 302;
7090   CoarseOrder["Ni"] = 302;
7091   CoarseOrder["Cu"] = 302;
7092   CoarseOrder["Zn"] = 302;
7093   CoarseOrder["Ga"] = 302;
7094   CoarseOrder["Ge"] = 302;
7095   CoarseOrder["As"] = 302;
7096   CoarseOrder["Se"] = 302;
7097   CoarseOrder["Br"] = 302;
7098   CoarseOrder["Kr"] = 302;
7099 
7100   // 4th row
7101   CoarseOrder["Ag"] = 302;
7102   CoarseOrder["Rb"] = 302;
7103   CoarseOrder["I"] = 302;
7104   CoarseOrder["Xe"] = 302;
7105 }
7106 
7107 void LebedevGrid::FillXcoarseOrder() {
7108   // order for H, He (not given in NWChem, assuming same as 1st row)
7109   XcoarseOrder["H"] = 194;
7110   XcoarseOrder["He"] = 194;
7111 
7112   // orders for 1st row elements taken from NWChem
7113   XcoarseOrder["Li"] = 194;
7114   XcoarseOrder["Be"] = 194;
7115   XcoarseOrder["B"] = 194;
7116   XcoarseOrder["C"] = 194;
7117   XcoarseOrder["N"] = 194;
7118   XcoarseOrder["O"] = 194;
7119   XcoarseOrder["F"] = 194;
7120   XcoarseOrder["Ne"] = 194;
7121 
7122   // orders for 2nd row elements taken from NWChem
7123   XcoarseOrder["Na"] = 194;
7124   XcoarseOrder["Mg"] = 194;
7125   XcoarseOrder["Al"] = 194;
7126   XcoarseOrder["Si"] = 194;
7127   XcoarseOrder["P"] = 194;
7128   XcoarseOrder["S"] = 194;
7129   XcoarseOrder["Cl"] = 194;
7130   XcoarseOrder["Ar"] = 194;
7131 
7132   // orders for 3rd row elements taken from NWChem
7133   XcoarseOrder["K"] = 194;
7134   XcoarseOrder["Ca"] = 194;
7135   XcoarseOrder["Sc"] = 194;
7136   XcoarseOrder["Ti"] = 194;
7137   XcoarseOrder["V"] = 194;
7138   XcoarseOrder["Cr"] = 194;
7139   XcoarseOrder["Mn"] = 194;
7140   XcoarseOrder["Fe"] = 194;
7141   XcoarseOrder["Co"] = 194;
7142   XcoarseOrder["Ni"] = 194;
7143   XcoarseOrder["Cu"] = 194;
7144   XcoarseOrder["Zn"] = 194;
7145   XcoarseOrder["Ga"] = 194;
7146   XcoarseOrder["Ge"] = 194;
7147   XcoarseOrder["As"] = 194;
7148   XcoarseOrder["Se"] = 194;
7149   XcoarseOrder["Br"] = 194;
7150   XcoarseOrder["Kr"] = 194;
7151 
7152   // 4th row
7153   XcoarseOrder["Ag"] = 194;
7154   XcoarseOrder["Rb"] = 194;
7155   XcoarseOrder["I"] = 194;
7156   XcoarseOrder["Xe"] = 194;
7157 }
7158 
7159 }  // namespace xtp
7160 }  // namespace votca
7161